github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library@v0.2.0/GetOpt/GetOpt.go (about) 1 // Package GetOpt 2 // Dafny module GetOpt compiled into Go 3 4 package GetOpt 5 6 import ( 7 os "os" 8 9 m_BoundedInts "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/BoundedInts" 10 m_DivInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternals" 11 m_DivInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternalsNonlinear" 12 m_DivMod "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivMod" 13 m_FileIO "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FileIO" 14 m_Functions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Functions" 15 m_GeneralInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GeneralInternals" 16 m_HexStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/HexStrings" 17 m_Logarithm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Logarithm" 18 m__Math "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Math_" 19 m_ModInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternals" 20 m_ModInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternalsNonlinear" 21 m_Mul "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Mul" 22 m_MulInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternals" 23 m_MulInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternalsNonlinear" 24 m_Power "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Power" 25 m_Relations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Relations" 26 m_Seq "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq" 27 m_Seq_MergeSort "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq_MergeSort" 28 m_Sorting "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Sorting" 29 m_StandardLibrary "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary" 30 m_StandardLibraryInterop "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibraryInterop" 31 m_StandardLibrary_Sequence "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_Sequence" 32 m_StandardLibrary_String "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_String" 33 m_StandardLibrary_UInt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_UInt" 34 m_Streams "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Streams" 35 m_UnicodeStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UnicodeStrings" 36 m__Unicode "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Unicode_" 37 m_Utf16EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf16EncodingForm" 38 m_Utf8EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf8EncodingForm" 39 m_Wrappers "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Wrappers" 40 m__System "github.com/dafny-lang/DafnyRuntimeGo/v4/System_" 41 _dafny "github.com/dafny-lang/DafnyRuntimeGo/v4/dafny" 42 ) 43 44 var _ = os.Args 45 var _ _dafny.Dummy__ 46 var _ m__System.Dummy__ 47 var _ m_Wrappers.Dummy__ 48 var _ m_Relations.Dummy__ 49 var _ m_Seq_MergeSort.Dummy__ 50 var _ m__Math.Dummy__ 51 var _ m_Seq.Dummy__ 52 var _ m_BoundedInts.Dummy__ 53 var _ m__Unicode.Dummy__ 54 var _ m_Functions.Dummy__ 55 var _ m_Utf8EncodingForm.Dummy__ 56 var _ m_Utf16EncodingForm.Dummy__ 57 var _ m_UnicodeStrings.Dummy__ 58 var _ m_FileIO.Dummy__ 59 var _ m_GeneralInternals.Dummy__ 60 var _ m_MulInternalsNonlinear.Dummy__ 61 var _ m_MulInternals.Dummy__ 62 var _ m_Mul.Dummy__ 63 var _ m_ModInternalsNonlinear.Dummy__ 64 var _ m_DivInternalsNonlinear.Dummy__ 65 var _ m_ModInternals.Dummy__ 66 var _ m_DivInternals.Dummy__ 67 var _ m_DivMod.Dummy__ 68 var _ m_Power.Dummy__ 69 var _ m_Logarithm.Dummy__ 70 var _ m_StandardLibraryInterop.Dummy__ 71 var _ m_StandardLibrary_UInt.Dummy__ 72 var _ m_StandardLibrary_Sequence.Dummy__ 73 var _ m_StandardLibrary_String.Dummy__ 74 var _ m_StandardLibrary.Dummy__ 75 var _ m_Streams.Dummy__ 76 var _ m_Sorting.Dummy__ 77 var _ m_HexStrings.Dummy__ 78 79 type Dummy__ struct{} 80 81 // Definition of class Default__ 82 type Default__ struct { 83 dummy byte 84 } 85 86 func New_Default___() *Default__ { 87 _this := Default__{} 88 89 return &_this 90 } 91 92 type CompanionStruct_Default___ struct { 93 } 94 95 var Companion_Default___ = CompanionStruct_Default___{} 96 97 func (_this *Default__) Equals(other *Default__) bool { 98 return _this == other 99 } 100 101 func (_this *Default__) EqualsGeneric(x interface{}) bool { 102 other, ok := x.(*Default__) 103 return ok && _this.Equals(other) 104 } 105 106 func (*Default__) String() string { 107 return "GetOpt.Default__" 108 } 109 func (_this *Default__) ParentTraits_() []*_dafny.TraitID { 110 return [](*_dafny.TraitID){} 111 } 112 113 var _ _dafny.TraitOffspring = &Default__{} 114 115 func (_static *CompanionStruct_Default___) Example(args _dafny.Sequence) m_Wrappers.Result { 116 var output m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(false) 117 _ = output 118 var _0_MyOptions _dafny.Sequence 119 _ = _0_MyOptions 120 _0_MyOptions = _dafny.SeqOf(Companion_Param_.Create_Flag_(_dafny.SeqOfString("foo"), _dafny.SeqOfString("Does foo things"), Companion_Default___.NullChar(), false, false, Companion_Visibility_.Create_Normal_(), _dafny.SeqOfChars(), _dafny.SeqOf()), Companion_Param_.Create_Opt_(_dafny.SeqOfString("two"), _dafny.SeqOfString("Does bar things to thingy"), _dafny.SeqOfString("thingy"), _dafny.Char('t'), Companion_Unused_.Create_UnusedOk_(), false, Companion_Visibility_.Create_Normal_(), _dafny.SeqOfChars(), _dafny.SeqOf(), Companion_Tri_.Create_No_()), Companion_Param_.Create_Command_(Companion_Options_.Create_Options_(_dafny.SeqOfString("command"), _dafny.SeqOfString("Does command stuff"), _dafny.SeqOf(Companion_Param_.Create_Opt_(_dafny.SeqOfString("two"), _dafny.SeqOfString("Does bar things to thingy"), _dafny.SeqOfString("thingy"), _dafny.Char('t'), Companion_Unused_.Create_UnusedOk_(), false, Companion_Visibility_.Create_Normal_(), _dafny.SeqOfChars(), _dafny.SeqOf(), Companion_Tri_.Create_No_()), Companion_Param_.Create_Flag_(_dafny.SeqOfString("foo"), _dafny.SeqOfString("Does foo things"), Companion_Default___.NullChar(), false, false, Companion_Visibility_.Create_Normal_(), _dafny.SeqOfChars(), _dafny.SeqOf()))))) 121 var _1_opts Options 122 _ = _1_opts 123 _1_opts = Companion_Options_.Create_Options_(_dafny.SeqOfString("myProg"), _dafny.SeqOfString("does prog stuff"), _0_MyOptions) 124 var _2_valueOrError0 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(Companion_Parsed_.Default()) 125 _ = _2_valueOrError0 126 _2_valueOrError0 = Companion_Default___.GetOptions(_1_opts, args) 127 if (_2_valueOrError0).IsFailure() { 128 output = (_2_valueOrError0).PropagateFailure() 129 return output 130 } 131 var _3_x Parsed 132 _ = _3_x 133 _3_x = (_2_valueOrError0).Extract().(Parsed) 134 var _4_h m_Wrappers.Option 135 _ = _4_h 136 _4_h = Companion_Default___.NeedsHelp(_1_opts, _3_x, _dafny.SeqOfString("")) 137 if (_4_h).Is_Some() { 138 _dafny.Print(((_4_h).Dtor_value().(_dafny.Sequence)).SetString()) 139 output = m_Wrappers.Companion_Result_.Create_Success_(true) 140 return output 141 } 142 output = m_Wrappers.Companion_Result_.Create_Success_(true) 143 return output 144 return output 145 } 146 func (_static *CompanionStruct_Default___) Filter(f func(interface{}) bool, xs _dafny.Sequence) _dafny.Sequence { 147 var _0___accumulator _dafny.Sequence = _dafny.SeqOf() 148 _ = _0___accumulator 149 goto TAIL_CALL_START 150 TAIL_CALL_START: 151 if (_dafny.IntOfUint32((xs).Cardinality())).Sign() == 0 { 152 return _dafny.Companion_Sequence_.Concatenate(_0___accumulator, _dafny.SeqOf()) 153 } else { 154 _0___accumulator = _dafny.Companion_Sequence_.Concatenate(_0___accumulator, (func() _dafny.Sequence { 155 if (f)((xs).Select(0).(interface{})) { 156 return _dafny.SeqOf((xs).Select(0).(interface{})) 157 } 158 return _dafny.SeqOf() 159 })()) 160 var _in0 func(interface{}) bool = f 161 _ = _in0 162 var _in1 _dafny.Sequence = (xs).Drop(1) 163 _ = _in1 164 f = _in0 165 xs = _in1 166 goto TAIL_CALL_START 167 } 168 } 169 func (_static *CompanionStruct_Default___) IsHelp(args Parsed) bool { 170 return ((_dafny.IntOfUint32(((args).Dtor_params()).Cardinality())).Sign() != 0) && (_dafny.Companion_Sequence_.Equal((((args).Dtor_params()).Select(0).(OneArg)).Dtor_name(), Companion_Default___.HELP__STR())) 171 } 172 func (_static *CompanionStruct_Default___) NeedsHelp(opts Options, args Parsed, prefix _dafny.Sequence) m_Wrappers.Option { 173 goto TAIL_CALL_START 174 TAIL_CALL_START: 175 if Companion_Default___.IsHelp(args) { 176 return m_Wrappers.Companion_Option_.Create_Some_(Companion_Default___.GetHelp(opts, prefix)) 177 } else if ((args).Dtor_subcommand()).Is_Some() { 178 var _0_valueOrError0 m_Wrappers.Option = Companion_Default___.GetSubOptions((opts).Dtor_params(), (((args).Dtor_subcommand()).Dtor_value().(Parsed)).Dtor_command(), _dafny.Zero) 179 _ = _0_valueOrError0 180 if (_0_valueOrError0).IsFailure() { 181 return (_0_valueOrError0).PropagateFailure() 182 } else { 183 var _1_pos _dafny.Int = (_0_valueOrError0).Extract().(_dafny.Int) 184 _ = _1_pos 185 var _in0 Options = (((opts).Dtor_params()).Select((_1_pos).Uint32()).(Param)).Dtor_options() 186 _ = _in0 187 var _in1 Parsed = ((args).Dtor_subcommand()).Dtor_value().(Parsed) 188 _ = _in1 189 var _in2 _dafny.Sequence = _dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(prefix, (args).Dtor_command()), _dafny.SeqOfString(" ")) 190 _ = _in2 191 opts = _in0 192 args = _in1 193 prefix = _in2 194 goto TAIL_CALL_START 195 } 196 } else { 197 return m_Wrappers.Companion_Option_.Create_None_() 198 } 199 } 200 func (_static *CompanionStruct_Default___) GetHelp(opts Options, prefix _dafny.Sequence) _dafny.Sequence { 201 var _0_newOpts _dafny.Sequence = _dafny.Companion_Sequence_.Concatenate((opts).Dtor_params(), _dafny.SeqOf(Companion_Default___.HELP__PARAM())) 202 _ = _0_newOpts 203 var _1_longLen _dafny.Int = Companion_Default___.GetLongLen(_0_newOpts, _dafny.IntOfInt64(6)) 204 _ = _1_longLen 205 var _2_commandLen _dafny.Int = Companion_Default___.GetCommandLen(_0_newOpts, _dafny.Zero) 206 _ = _2_commandLen 207 if (_2_commandLen).Sign() == 0 { 208 return _dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("USAGE : "), prefix), (opts).Dtor_name()), _dafny.SeqOfString(" [args...]\n")), (opts).Dtor_help()), _dafny.SeqOfString("\n")), Companion_Default___.GetHelp2(_0_newOpts, _1_longLen)) 209 } else { 210 return _dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("USAGE : "), (opts).Dtor_name()), _dafny.SeqOfString(" [args...] command [args...]\n")), (opts).Dtor_help()), _dafny.SeqOfString("\n")), _dafny.SeqOfString("\nAvailable Commands:\n")), Companion_Default___.GetCmdHelp(_0_newOpts, _2_commandLen)), _dafny.SeqOfString("\nAvailable Options:\n")), Companion_Default___.GetHelp2(_0_newOpts, _1_longLen)) 211 } 212 } 213 func (_static *CompanionStruct_Default___) OptValue(args _dafny.Sequence, arg _dafny.Sequence) m_Wrappers.Option { 214 goto TAIL_CALL_START 215 TAIL_CALL_START: 216 if (_dafny.IntOfUint32((args).Cardinality())).Sign() == 0 { 217 return m_Wrappers.Companion_Option_.Create_None_() 218 } else if _dafny.Companion_Sequence_.Equal(((args).Select(0).(OneArg)).Dtor_name(), arg) { 219 return ((args).Select(0).(OneArg)).Dtor_value() 220 } else { 221 var _in0 _dafny.Sequence = (args).Drop(1) 222 _ = _in0 223 var _in1 _dafny.Sequence = arg 224 _ = _in1 225 args = _in0 226 arg = _in1 227 goto TAIL_CALL_START 228 } 229 } 230 func (_static *CompanionStruct_Default___) FlagCount(args _dafny.Sequence, arg _dafny.Sequence) _dafny.Int { 231 var _0___accumulator _dafny.Int = _dafny.Zero 232 _ = _0___accumulator 233 goto TAIL_CALL_START 234 TAIL_CALL_START: 235 if (_dafny.IntOfUint32((args).Cardinality())).Sign() == 0 { 236 return (_dafny.Zero).Plus(_0___accumulator) 237 } else if _dafny.Companion_Sequence_.Equal(((args).Select(0).(OneArg)).Dtor_name(), arg) { 238 _0___accumulator = (_0___accumulator).Plus(_dafny.One) 239 var _in0 _dafny.Sequence = (args).Drop(1) 240 _ = _in0 241 var _in1 _dafny.Sequence = arg 242 _ = _in1 243 args = _in0 244 arg = _in1 245 goto TAIL_CALL_START 246 } else { 247 var _in2 _dafny.Sequence = (args).Drop(1) 248 _ = _in2 249 var _in3 _dafny.Sequence = arg 250 _ = _in3 251 args = _in2 252 arg = _in3 253 goto TAIL_CALL_START 254 } 255 } 256 func (_static *CompanionStruct_Default___) OptMapLast(args _dafny.Sequence, theMap _dafny.Map) _dafny.Map { 257 goto TAIL_CALL_START 258 TAIL_CALL_START: 259 if (_dafny.IntOfUint32((args).Cardinality())).Sign() == 0 { 260 return theMap 261 } else if (((args).Select(0).(OneArg)).Dtor_value()).Is_Some() { 262 var _in0 _dafny.Sequence = (args).Drop(1) 263 _ = _in0 264 var _in1 _dafny.Map = (theMap).Update(((args).Select(0).(OneArg)).Dtor_name(), (((args).Select(0).(OneArg)).Dtor_value()).Dtor_value().(_dafny.Sequence)) 265 _ = _in1 266 args = _in0 267 theMap = _in1 268 goto TAIL_CALL_START 269 } else { 270 var _in2 _dafny.Sequence = (args).Drop(1) 271 _ = _in2 272 var _in3 _dafny.Map = theMap 273 _ = _in3 274 args = _in2 275 theMap = _in3 276 goto TAIL_CALL_START 277 } 278 } 279 func (_static *CompanionStruct_Default___) FlagsSet(args _dafny.Sequence, theSet _dafny.Set) _dafny.Set { 280 goto TAIL_CALL_START 281 TAIL_CALL_START: 282 if (_dafny.IntOfUint32((args).Cardinality())).Sign() == 0 { 283 return theSet 284 } else if (((args).Select(0).(OneArg)).Dtor_value()).Is_Some() { 285 var _in0 _dafny.Sequence = (args).Drop(1) 286 _ = _in0 287 var _in1 _dafny.Set = theSet 288 _ = _in1 289 args = _in0 290 theSet = _in1 291 goto TAIL_CALL_START 292 } else { 293 var _in2 _dafny.Sequence = (args).Drop(1) 294 _ = _in2 295 var _in3 _dafny.Set = (theSet).Union(_dafny.SetOf(((args).Select(0).(OneArg)).Dtor_name())) 296 _ = _in3 297 args = _in2 298 theSet = _in3 299 goto TAIL_CALL_START 300 } 301 } 302 func (_static *CompanionStruct_Default___) OptMapList(args _dafny.Sequence, theMap _dafny.Map) _dafny.Map { 303 goto TAIL_CALL_START 304 TAIL_CALL_START: 305 if (_dafny.IntOfUint32((args).Cardinality())).Sign() == 0 { 306 return theMap 307 } else if (((args).Select(0).(OneArg)).Dtor_value()).Is_Some() { 308 if (theMap).Contains(((args).Select(0).(OneArg)).Dtor_name()) { 309 var _in0 _dafny.Sequence = (args).Drop(1) 310 _ = _in0 311 var _in1 _dafny.Map = (theMap).Update(((args).Select(0).(OneArg)).Dtor_name(), _dafny.Companion_Sequence_.Concatenate((theMap).Get(((args).Select(0).(OneArg)).Dtor_name()).(_dafny.Sequence), _dafny.SeqOf((((args).Select(0).(OneArg)).Dtor_value()).Dtor_value().(_dafny.Sequence)))) 312 _ = _in1 313 args = _in0 314 theMap = _in1 315 goto TAIL_CALL_START 316 } else { 317 var _in2 _dafny.Sequence = (args).Drop(1) 318 _ = _in2 319 var _in3 _dafny.Map = (theMap).Update(((args).Select(0).(OneArg)).Dtor_name(), _dafny.SeqOf((((args).Select(0).(OneArg)).Dtor_value()).Dtor_value().(_dafny.Sequence))) 320 _ = _in3 321 args = _in2 322 theMap = _in3 323 goto TAIL_CALL_START 324 } 325 } else { 326 var _in4 _dafny.Sequence = (args).Drop(1) 327 _ = _in4 328 var _in5 _dafny.Map = theMap 329 _ = _in5 330 args = _in4 331 theMap = _in5 332 goto TAIL_CALL_START 333 } 334 } 335 func (_static *CompanionStruct_Default___) FlagMapCount(args _dafny.Sequence, theMap _dafny.Map) _dafny.Map { 336 goto TAIL_CALL_START 337 TAIL_CALL_START: 338 if (_dafny.IntOfUint32((args).Cardinality())).Sign() == 0 { 339 return theMap 340 } else if (((args).Select(0).(OneArg)).Dtor_value()).Is_Some() { 341 var _in0 _dafny.Sequence = (args).Drop(1) 342 _ = _in0 343 var _in1 _dafny.Map = theMap 344 _ = _in1 345 args = _in0 346 theMap = _in1 347 goto TAIL_CALL_START 348 } else if (theMap).Contains(((args).Select(0).(OneArg)).Dtor_name()) { 349 var _in2 _dafny.Sequence = (args).Drop(1) 350 _ = _in2 351 var _in3 _dafny.Map = (theMap).Update(((args).Select(0).(OneArg)).Dtor_name(), ((theMap).Get(((args).Select(0).(OneArg)).Dtor_name()).(_dafny.Int)).Plus(_dafny.One)) 352 _ = _in3 353 args = _in2 354 theMap = _in3 355 goto TAIL_CALL_START 356 } else { 357 var _in4 _dafny.Sequence = (args).Drop(1) 358 _ = _in4 359 var _in5 _dafny.Map = (theMap).Update(((args).Select(0).(OneArg)).Dtor_name(), _dafny.One) 360 _ = _in5 361 args = _in4 362 theMap = _in5 363 goto TAIL_CALL_START 364 } 365 } 366 func (_static *CompanionStruct_Default___) FlagSetCheck(args _dafny.Sequence, theSet _dafny.Set) m_Wrappers.Result { 367 goto TAIL_CALL_START 368 TAIL_CALL_START: 369 if (_dafny.IntOfUint32((args).Cardinality())).Sign() == 0 { 370 return m_Wrappers.Companion_Result_.Create_Success_(theSet) 371 } else if (((args).Select(0).(OneArg)).Dtor_value()).Is_Some() { 372 if (theSet).Contains(((args).Select(0).(OneArg)).Dtor_name()) { 373 return m_Wrappers.Companion_Result_.Create_Failure_(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Duplicate arg : "), ((args).Select(0).(OneArg)).Dtor_name())) 374 } else { 375 var _in0 _dafny.Sequence = (args).Drop(1) 376 _ = _in0 377 var _in1 _dafny.Set = (theSet).Union(_dafny.SetOf(((args).Select(0).(OneArg)).Dtor_name())) 378 _ = _in1 379 args = _in0 380 theSet = _in1 381 goto TAIL_CALL_START 382 } 383 } else { 384 var _in2 _dafny.Sequence = (args).Drop(1) 385 _ = _in2 386 var _in3 _dafny.Set = theSet 387 _ = _in3 388 args = _in2 389 theSet = _in3 390 goto TAIL_CALL_START 391 } 392 } 393 func (_static *CompanionStruct_Default___) OptMapCheck(args _dafny.Sequence, theMap _dafny.Map) m_Wrappers.Result { 394 goto TAIL_CALL_START 395 TAIL_CALL_START: 396 if (_dafny.IntOfUint32((args).Cardinality())).Sign() == 0 { 397 return m_Wrappers.Companion_Result_.Create_Success_(theMap) 398 } else if (((args).Select(0).(OneArg)).Dtor_value()).Is_Some() { 399 if (theMap).Contains(((args).Select(0).(OneArg)).Dtor_name()) { 400 return m_Wrappers.Companion_Result_.Create_Failure_(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Duplicate arg : "), ((args).Select(0).(OneArg)).Dtor_name())) 401 } else { 402 var _in0 _dafny.Sequence = (args).Drop(1) 403 _ = _in0 404 var _in1 _dafny.Map = (theMap).Update(((args).Select(0).(OneArg)).Dtor_name(), (((args).Select(0).(OneArg)).Dtor_value()).Dtor_value().(_dafny.Sequence)) 405 _ = _in1 406 args = _in0 407 theMap = _in1 408 goto TAIL_CALL_START 409 } 410 } else { 411 var _in2 _dafny.Sequence = (args).Drop(1) 412 _ = _in2 413 var _in3 _dafny.Map = theMap 414 _ = _in3 415 args = _in2 416 theMap = _in3 417 goto TAIL_CALL_START 418 } 419 } 420 func (_static *CompanionStruct_Default___) GetHelpHelp(opt Param) _dafny.Sequence { 421 if (opt).Is_Command() { 422 return _dafny.SeqOfString("") 423 } else if (opt).Is_Flag() { 424 return (opt).Dtor_help() 425 } else { 426 return _dafny.Companion_Sequence_.Concatenate((opt).Dtor_help(), (func() _dafny.Sequence { 427 if (opt).Required() { 428 return _dafny.SeqOfString(" (required)") 429 } 430 return (func() _dafny.Sequence { 431 if (opt).HasDefault() { 432 return _dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString(" (default : "), ((opt).Dtor_unused()).Dtor_val()), _dafny.SeqOfString(")")) 433 } 434 return _dafny.SeqOfString("") 435 })() 436 })()) 437 } 438 } 439 func (_static *CompanionStruct_Default___) OneHelp(opt Param, longLen _dafny.Int) _dafny.Sequence { 440 if ((opt).Is_Command()) || (!((opt).ShowHelp())) { 441 return _dafny.SeqOfString("") 442 } else { 443 return _dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(Companion_Default___.GetShortHelp(opt), _dafny.SeqOfString(" ")), Companion_Default___.GetLongHelp(opt, longLen)), _dafny.SeqOfString(" ")), Companion_Default___.GetHelpHelp(opt)), _dafny.SeqOfString("\n")) 444 } 445 } 446 func (_static *CompanionStruct_Default___) GetCommandHelp(opt Param, commandLen _dafny.Int) _dafny.Sequence { 447 var _0_name _dafny.Sequence = (func() _dafny.Sequence { 448 if (_dafny.IntOfUint32((((opt).Dtor_options()).Dtor_name()).Cardinality())).Cmp(commandLen) < 0 { 449 return _dafny.Companion_Sequence_.Concatenate(((opt).Dtor_options()).Dtor_name(), _dafny.SeqCreate(((commandLen).Minus(_dafny.IntOfUint32((((opt).Dtor_options()).Dtor_name()).Cardinality()))).Uint32(), func(coer22 func(_dafny.Int) _dafny.Char) func(_dafny.Int) interface{} { 450 return func(arg26 _dafny.Int) interface{} { 451 return coer22(arg26) 452 } 453 }(func(_1_i _dafny.Int) _dafny.Char { 454 return _dafny.Char(' ') 455 })).SetString()) 456 } 457 return ((opt).Dtor_options()).Dtor_name() 458 })() 459 _ = _0_name 460 return _dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_0_name, _dafny.SeqOfString(" ")), ((opt).Dtor_options()).Dtor_help()), _dafny.SeqOfString("\n")) 461 } 462 func (_static *CompanionStruct_Default___) GetShortHelp(opt Param) _dafny.Sequence { 463 if ((opt).Is_Opt()) || ((opt).Is_Flag()) { 464 if ((opt).Dtor_short()) != (Companion_Default___.NullChar()) /* dircomp */ { 465 return _dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("-"), _dafny.SeqOfChars((opt).Dtor_short())) 466 } else { 467 return _dafny.SeqOfString(" ") 468 } 469 } else { 470 return _dafny.SeqOfString("") 471 } 472 } 473 func (_static *CompanionStruct_Default___) GetLongHelp(opt Param, longLen _dafny.Int) _dafny.Sequence { 474 if ((opt).Is_Opt()) || ((opt).Is_Flag()) { 475 var _0_tmp _dafny.Sequence = _dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("--"), (opt).Dtor_name()), (func() _dafny.Sequence { 476 if (opt).Is_Opt() { 477 return _dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("="), (opt).Dtor_argName()) 478 } 479 return _dafny.SeqOfString("") 480 })()) 481 _ = _0_tmp 482 if (_dafny.IntOfUint32((_0_tmp).Cardinality())).Cmp(longLen) < 0 { 483 return _dafny.Companion_Sequence_.Concatenate(_0_tmp, _dafny.SeqCreate(((longLen).Minus(_dafny.IntOfUint32((_0_tmp).Cardinality()))).Uint32(), func(coer23 func(_dafny.Int) _dafny.Char) func(_dafny.Int) interface{} { 484 return func(arg27 _dafny.Int) interface{} { 485 return coer23(arg27) 486 } 487 }(func(_1_i _dafny.Int) _dafny.Char { 488 return _dafny.Char(' ') 489 })).SetString()) 490 } else { 491 return _0_tmp 492 } 493 } else { 494 return _dafny.SeqOfString("") 495 } 496 } 497 func (_static *CompanionStruct_Default___) GetHelp2(opts _dafny.Sequence, longLen _dafny.Int) _dafny.Sequence { 498 var _0___accumulator _dafny.Sequence = _dafny.SeqOfChars() 499 _ = _0___accumulator 500 goto TAIL_CALL_START 501 TAIL_CALL_START: 502 if (_dafny.IntOfUint32((opts).Cardinality())).Sign() == 0 { 503 return _dafny.Companion_Sequence_.Concatenate(_0___accumulator, _dafny.SeqOfString("")) 504 } else { 505 var _1_x _dafny.Sequence = Companion_Default___.OneHelp((opts).Select(0).(Param), longLen) 506 _ = _1_x 507 _0___accumulator = _dafny.Companion_Sequence_.Concatenate(_0___accumulator, _1_x) 508 var _in0 _dafny.Sequence = (opts).Drop(1) 509 _ = _in0 510 var _in1 _dafny.Int = longLen 511 _ = _in1 512 opts = _in0 513 longLen = _in1 514 goto TAIL_CALL_START 515 } 516 } 517 func (_static *CompanionStruct_Default___) GetCmdHelp(opts _dafny.Sequence, commandLen _dafny.Int) _dafny.Sequence { 518 var _0___accumulator _dafny.Sequence = _dafny.SeqOfChars() 519 _ = _0___accumulator 520 goto TAIL_CALL_START 521 TAIL_CALL_START: 522 if (_dafny.IntOfUint32((opts).Cardinality())).Sign() == 0 { 523 return _dafny.Companion_Sequence_.Concatenate(_0___accumulator, _dafny.SeqOfString("")) 524 } else { 525 var _1_x _dafny.Sequence = (func() _dafny.Sequence { 526 if ((opts).Select(0).(Param)).Is_Command() { 527 return Companion_Default___.GetCommandHelp((opts).Select(0).(Param), commandLen) 528 } 529 return _dafny.SeqOfString("") 530 })() 531 _ = _1_x 532 _0___accumulator = _dafny.Companion_Sequence_.Concatenate(_0___accumulator, _1_x) 533 var _in0 _dafny.Sequence = (opts).Drop(1) 534 _ = _in0 535 var _in1 _dafny.Int = commandLen 536 _ = _in1 537 opts = _in0 538 commandLen = _in1 539 goto TAIL_CALL_START 540 } 541 } 542 func (_static *CompanionStruct_Default___) GetLongLen(opts _dafny.Sequence, max _dafny.Int) _dafny.Int { 543 goto TAIL_CALL_START 544 TAIL_CALL_START: 545 if (_dafny.IntOfUint32((opts).Cardinality())).Sign() == 0 { 546 return max 547 } else { 548 var _0_x _dafny.Int = _dafny.IntOfUint32((Companion_Default___.GetLongHelp((opts).Select(0).(Param), _dafny.Zero)).Cardinality()) 549 _ = _0_x 550 var _1_newMax _dafny.Int = (func() _dafny.Int { 551 if (_0_x).Cmp(max) > 0 { 552 return _0_x 553 } 554 return max 555 })() 556 _ = _1_newMax 557 var _in0 _dafny.Sequence = (opts).Drop(1) 558 _ = _in0 559 var _in1 _dafny.Int = _1_newMax 560 _ = _in1 561 opts = _in0 562 max = _in1 563 goto TAIL_CALL_START 564 } 565 } 566 func (_static *CompanionStruct_Default___) GetCommandLen(opts _dafny.Sequence, max _dafny.Int) _dafny.Int { 567 goto TAIL_CALL_START 568 TAIL_CALL_START: 569 if (_dafny.IntOfUint32((opts).Cardinality())).Sign() == 0 { 570 return max 571 } else { 572 var _0_x _dafny.Int = (func() _dafny.Int { 573 if ((opts).Select(0).(Param)).Is_Command() { 574 return _dafny.IntOfUint32(((((opts).Select(0).(Param)).Dtor_options()).Dtor_name()).Cardinality()) 575 } 576 return _dafny.Zero 577 })() 578 _ = _0_x 579 var _1_newMax _dafny.Int = (func() _dafny.Int { 580 if (_0_x).Cmp(max) > 0 { 581 return _0_x 582 } 583 return max 584 })() 585 _ = _1_newMax 586 var _in0 _dafny.Sequence = (opts).Drop(1) 587 _ = _in0 588 var _in1 _dafny.Int = _1_newMax 589 _ = _in1 590 opts = _in0 591 max = _in1 592 goto TAIL_CALL_START 593 } 594 } 595 func (_static *CompanionStruct_Default___) AddShortAlias(aliases _dafny.Sequence, shortMap _dafny.Map, name _dafny.Sequence) m_Wrappers.Result { 596 goto TAIL_CALL_START 597 TAIL_CALL_START: 598 if (_dafny.IntOfUint32((aliases).Cardinality())).Sign() == 0 { 599 return m_Wrappers.Companion_Result_.Create_Success_(shortMap) 600 } else if (shortMap).Contains((aliases).Select(0).(_dafny.Char)) { 601 return m_Wrappers.Companion_Result_.Create_Failure_(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Short alias '"), (aliases).Subsequence(0, 1)), _dafny.SeqOfString("' for '")), name), _dafny.SeqOfString("' already in use as a short option."))) 602 } else { 603 var _in0 _dafny.Sequence = (aliases).Drop(1) 604 _ = _in0 605 var _in1 _dafny.Map = (shortMap).Update((aliases).Select(0).(_dafny.Char), name) 606 _ = _in1 607 var _in2 _dafny.Sequence = name 608 _ = _in2 609 aliases = _in0 610 shortMap = _in1 611 name = _in2 612 goto TAIL_CALL_START 613 } 614 } 615 func (_static *CompanionStruct_Default___) AddLongAlias(aliases _dafny.Sequence, longMap _dafny.Map, opt Param) m_Wrappers.Result { 616 goto TAIL_CALL_START 617 TAIL_CALL_START: 618 if (_dafny.IntOfUint32((aliases).Cardinality())).Sign() == 0 { 619 return m_Wrappers.Companion_Result_.Create_Success_(longMap) 620 } else if (longMap).Contains((aliases).Select(0).(_dafny.Sequence)) { 621 return m_Wrappers.Companion_Result_.Create_Failure_(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Long alias '"), (aliases).Select(0).(_dafny.Sequence)), _dafny.SeqOfString("' already in use as a long option."))) 622 } else { 623 var _in0 _dafny.Sequence = (aliases).Drop(1) 624 _ = _in0 625 var _in1 _dafny.Map = (longMap).Update((aliases).Select(0).(_dafny.Sequence), opt) 626 _ = _in1 627 var _in2 Param = opt 628 _ = _in2 629 aliases = _in0 630 longMap = _in1 631 opt = _in2 632 goto TAIL_CALL_START 633 } 634 } 635 func (_static *CompanionStruct_Default___) GetMaps(opts _dafny.Sequence, longMap _dafny.Map, shortMap _dafny.Map, commandMap _dafny.Map) m_Wrappers.Result { 636 goto TAIL_CALL_START 637 TAIL_CALL_START: 638 if (_dafny.IntOfUint32((opts).Cardinality())).Sign() == 0 { 639 return m_Wrappers.Companion_Result_.Create_Success_(_dafny.TupleOf(longMap, shortMap, commandMap)) 640 } else { 641 var _0_opt Param = (opts).Select(0).(Param) 642 _ = _0_opt 643 if (_0_opt).Is_Command() { 644 var _1_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need(!(commandMap).Contains(((_0_opt).Dtor_options()).Dtor_name()), _dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Duplicate command in options : "), ((_0_opt).Dtor_options()).Dtor_name())) 645 _ = _1_valueOrError0 646 if (_1_valueOrError0).IsFailure() { 647 return (_1_valueOrError0).PropagateFailure() 648 } else { 649 var _in0 _dafny.Sequence = (opts).Drop(1) 650 _ = _in0 651 var _in1 _dafny.Map = longMap 652 _ = _in1 653 var _in2 _dafny.Map = shortMap 654 _ = _in2 655 var _in3 _dafny.Map = (commandMap).Update(((_0_opt).Dtor_options()).Dtor_name(), (_0_opt).Dtor_options()) 656 _ = _in3 657 opts = _in0 658 longMap = _in1 659 shortMap = _in2 660 commandMap = _in3 661 goto TAIL_CALL_START 662 } 663 } else { 664 var _2_valueOrError1 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need(!(longMap).Contains((_0_opt).Dtor_name()), _dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Duplicate long name in options : "), (_0_opt).Dtor_name())) 665 _ = _2_valueOrError1 666 if (_2_valueOrError1).IsFailure() { 667 return (_2_valueOrError1).PropagateFailure() 668 } else { 669 var _3_newLongMap _dafny.Map = (longMap).Update((_0_opt).Dtor_name(), _0_opt) 670 _ = _3_newLongMap 671 var _4_valueOrError2 m_Wrappers.Result = Companion_Default___.AddShortAlias((_0_opt).ShortAlias(), shortMap, (_0_opt).Dtor_name()) 672 _ = _4_valueOrError2 673 if (_4_valueOrError2).IsFailure() { 674 return (_4_valueOrError2).PropagateFailure() 675 } else { 676 var _5_newShortMap _dafny.Map = (_4_valueOrError2).Extract().(_dafny.Map) 677 _ = _5_newShortMap 678 var _6_valueOrError3 m_Wrappers.Result = Companion_Default___.AddLongAlias((_0_opt).LongAlias(), _3_newLongMap, _0_opt) 679 _ = _6_valueOrError3 680 if (_6_valueOrError3).IsFailure() { 681 return (_6_valueOrError3).PropagateFailure() 682 } else { 683 var _7_newLongMap _dafny.Map = (_6_valueOrError3).Extract().(_dafny.Map) 684 _ = _7_newLongMap 685 if ((_0_opt).Dtor_short()) != (Companion_Default___.NullChar()) /* dircomp */ { 686 var _8_short _dafny.Char = (_0_opt).Dtor_short() 687 _ = _8_short 688 if (_5_newShortMap).Contains(_8_short) { 689 return m_Wrappers.Companion_Result_.Create_Failure_(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Duplicate short char in options : '"), _dafny.SeqOfChars(_8_short)), _dafny.SeqOfString("' for ")), (_0_opt).Dtor_name()), _dafny.SeqOfString(" and ")), (_5_newShortMap).Get(_8_short).(_dafny.Sequence))) 690 } else { 691 var _in4 _dafny.Sequence = (opts).Drop(1) 692 _ = _in4 693 var _in5 _dafny.Map = (_7_newLongMap).Update((_0_opt).Dtor_name(), _0_opt) 694 _ = _in5 695 var _in6 _dafny.Map = (_5_newShortMap).Update(_8_short, (_0_opt).Dtor_name()) 696 _ = _in6 697 var _in7 _dafny.Map = commandMap 698 _ = _in7 699 opts = _in4 700 longMap = _in5 701 shortMap = _in6 702 commandMap = _in7 703 goto TAIL_CALL_START 704 } 705 } else { 706 var _in8 _dafny.Sequence = (opts).Drop(1) 707 _ = _in8 708 var _in9 _dafny.Map = (_7_newLongMap).Update((_0_opt).Dtor_name(), _0_opt) 709 _ = _in9 710 var _in10 _dafny.Map = _5_newShortMap 711 _ = _in10 712 var _in11 _dafny.Map = commandMap 713 _ = _in11 714 opts = _in8 715 longMap = _in9 716 shortMap = _in10 717 commandMap = _in11 718 goto TAIL_CALL_START 719 } 720 } 721 } 722 } 723 } 724 } 725 } 726 func (_static *CompanionStruct_Default___) Print(x interface{}) m_Wrappers.Outcome { 727 var _hresult m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default() 728 _ = _hresult 729 _dafny.Print(x) 730 _dafny.Print((_dafny.SeqOfString("\n")).SetString()) 731 _hresult = m_Wrappers.Companion_Outcome_.Create_Pass_() 732 return _hresult 733 return _hresult 734 } 735 func (_static *CompanionStruct_Default___) ArgExists(args _dafny.Sequence, name _dafny.Sequence) bool { 736 goto TAIL_CALL_START 737 TAIL_CALL_START: 738 if (_dafny.IntOfUint32((args).Cardinality())).Sign() == 0 { 739 return false 740 } else if _dafny.Companion_Sequence_.Equal(((args).Select(0).(OneArg)).Dtor_name(), name) { 741 return true 742 } else { 743 var _in0 _dafny.Sequence = (args).Drop(1) 744 _ = _in0 745 var _in1 _dafny.Sequence = name 746 _ = _in1 747 args = _in0 748 name = _in1 749 goto TAIL_CALL_START 750 } 751 } 752 func (_static *CompanionStruct_Default___) PostProcess2(opts _dafny.Sequence, args _dafny.Sequence, newArgs _dafny.Sequence) m_Wrappers.Result { 753 goto TAIL_CALL_START 754 TAIL_CALL_START: 755 if (_dafny.IntOfUint32((opts).Cardinality())).Sign() == 0 { 756 return m_Wrappers.Companion_Result_.Create_Success_(newArgs) 757 } else if ((((opts).Select(0).(Param)).Is_Opt()) && (((opts).Select(0).(Param)).Required())) && (!(Companion_Default___.ArgExists(args, ((opts).Select(0).(Param)).Dtor_name()))) { 758 return m_Wrappers.Companion_Result_.Create_Failure_(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Option '"), ((opts).Select(0).(Param)).Dtor_name()), _dafny.SeqOfString("' is required, but was not used."))) 759 } else if ((((opts).Select(0).(Param)).Is_Opt()) && (((opts).Select(0).(Param)).HasDefault())) && (!(Companion_Default___.ArgExists(args, ((opts).Select(0).(Param)).Dtor_name()))) { 760 var _in0 _dafny.Sequence = (opts).Drop(1) 761 _ = _in0 762 var _in1 _dafny.Sequence = args 763 _ = _in1 764 var _in2 _dafny.Sequence = _dafny.Companion_Sequence_.Concatenate(newArgs, _dafny.SeqOf(Companion_OneArg_.Create_OneArg_(((opts).Select(0).(Param)).Dtor_name(), m_Wrappers.Companion_Option_.Create_Some_((((opts).Select(0).(Param)).Dtor_unused()).Dtor_val())))) 765 _ = _in2 766 opts = _in0 767 args = _in1 768 newArgs = _in2 769 goto TAIL_CALL_START 770 } else { 771 var _in3 _dafny.Sequence = (opts).Drop(1) 772 _ = _in3 773 var _in4 _dafny.Sequence = args 774 _ = _in4 775 var _in5 _dafny.Sequence = newArgs 776 _ = _in5 777 opts = _in3 778 args = _in4 779 newArgs = _in5 780 goto TAIL_CALL_START 781 } 782 } 783 func (_static *CompanionStruct_Default___) GetSubOptions(opts _dafny.Sequence, name _dafny.Sequence, pos _dafny.Int) m_Wrappers.Option { 784 goto TAIL_CALL_START 785 TAIL_CALL_START: 786 if (_dafny.IntOfUint32((opts).Cardinality())).Cmp(pos) == 0 { 787 return m_Wrappers.Companion_Option_.Create_None_() 788 } else if (((opts).Select((pos).Uint32()).(Param)).Is_Command()) && (_dafny.Companion_Sequence_.Equal((((opts).Select((pos).Uint32()).(Param)).Dtor_options()).Dtor_name(), name)) { 789 return m_Wrappers.Companion_Option_.Create_Some_(pos) 790 } else { 791 var _in0 _dafny.Sequence = opts 792 _ = _in0 793 var _in1 _dafny.Sequence = name 794 _ = _in1 795 var _in2 _dafny.Int = (pos).Plus(_dafny.One) 796 _ = _in2 797 opts = _in0 798 name = _in1 799 pos = _in2 800 goto TAIL_CALL_START 801 } 802 } 803 func (_static *CompanionStruct_Default___) PostProcess(opts Options, args Parsed) m_Wrappers.Result { 804 var _pat_let_tv0 = args 805 _ = _pat_let_tv0 806 var _pat_let_tv1 = args 807 _ = _pat_let_tv1 808 if Companion_Default___.IsHelp(args) { 809 return m_Wrappers.Companion_Result_.Create_Success_(args) 810 } else { 811 var _0_valueOrError0 m_Wrappers.Result = Companion_Default___.PostProcess2((opts).Dtor_params(), (args).Dtor_params(), _dafny.SeqOf()) 812 _ = _0_valueOrError0 813 if (_0_valueOrError0).IsFailure() { 814 return (_0_valueOrError0).PropagateFailure() 815 } else { 816 var _1_newParams _dafny.Sequence = (_0_valueOrError0).Extract().(_dafny.Sequence) 817 _ = _1_newParams 818 if ((args).Dtor_subcommand()).Is_Some() { 819 var _2_optPos m_Wrappers.Option = Companion_Default___.GetSubOptions((opts).Dtor_params(), (((args).Dtor_subcommand()).Dtor_value().(Parsed)).Dtor_command(), _dafny.Zero) 820 _ = _2_optPos 821 if (_2_optPos).Is_Some() { 822 var _3_valueOrError1 m_Wrappers.Result = Companion_Default___.PostProcess((((opts).Dtor_params()).Select(((_2_optPos).Dtor_value().(_dafny.Int)).Uint32()).(Param)).Dtor_options(), ((args).Dtor_subcommand()).Dtor_value().(Parsed)) 823 _ = _3_valueOrError1 824 if (_3_valueOrError1).IsFailure() { 825 return (_3_valueOrError1).PropagateFailure() 826 } else { 827 var _4_sub Parsed = (_3_valueOrError1).Extract().(Parsed) 828 _ = _4_sub 829 return m_Wrappers.Companion_Result_.Create_Success_(func(_pat_let1_0 Parsed) Parsed { 830 return func(_5_dt__update__tmp_h0 Parsed) Parsed { 831 return func(_pat_let2_0 m_Wrappers.Option) Parsed { 832 return func(_6_dt__update_hsubcommand_h0 m_Wrappers.Option) Parsed { 833 return func(_pat_let3_0 _dafny.Sequence) Parsed { 834 return func(_7_dt__update_hparams_h0 _dafny.Sequence) Parsed { 835 return Companion_Parsed_.Create_Parsed_((_5_dt__update__tmp_h0).Dtor_command(), _7_dt__update_hparams_h0, (_5_dt__update__tmp_h0).Dtor_files(), _6_dt__update_hsubcommand_h0) 836 }(_pat_let3_0) 837 }(_dafny.Companion_Sequence_.Concatenate((_pat_let_tv0).Dtor_params(), _1_newParams)) 838 }(_pat_let2_0) 839 }(m_Wrappers.Companion_Option_.Create_Some_(_4_sub)) 840 }(_pat_let1_0) 841 }(args)) 842 } 843 } else { 844 return m_Wrappers.Companion_Result_.Create_Failure_(_dafny.SeqOfString("Internal error in GetOpt::PostProcess")) 845 } 846 } else { 847 return m_Wrappers.Companion_Result_.Create_Success_(func(_pat_let4_0 Parsed) Parsed { 848 return func(_8_dt__update__tmp_h1 Parsed) Parsed { 849 return func(_pat_let5_0 _dafny.Sequence) Parsed { 850 return func(_9_dt__update_hparams_h1 _dafny.Sequence) Parsed { 851 return Companion_Parsed_.Create_Parsed_((_8_dt__update__tmp_h1).Dtor_command(), _9_dt__update_hparams_h1, (_8_dt__update__tmp_h1).Dtor_files(), (_8_dt__update__tmp_h1).Dtor_subcommand()) 852 }(_pat_let5_0) 853 }(_dafny.Companion_Sequence_.Concatenate((_pat_let_tv1).Dtor_params(), _1_newParams)) 854 }(_pat_let4_0) 855 }(args)) 856 } 857 } 858 } 859 } 860 func (_static *CompanionStruct_Default___) AllDigits(s _dafny.Sequence) bool { 861 goto TAIL_CALL_START 862 TAIL_CALL_START: 863 if (_dafny.IntOfUint32((s).Cardinality())).Sign() == 0 { 864 return true 865 } else if ((_dafny.Char('0')) <= ((s).Select(0).(_dafny.Char))) && (((s).Select(0).(_dafny.Char)) <= (_dafny.Char('9'))) { 866 var _in0 _dafny.Sequence = (s).Drop(1) 867 _ = _in0 868 s = _in0 869 goto TAIL_CALL_START 870 } else { 871 return false 872 } 873 } 874 func (_static *CompanionStruct_Default___) ValidPositional(s _dafny.Sequence) bool { 875 if (_dafny.IntOfUint32((s).Cardinality())).Sign() == 0 { 876 return true 877 } else if ((s).Select(0).(_dafny.Char)) != (_dafny.Char('-')) /* dircomp */ { 878 return true 879 } else { 880 return Companion_Default___.AllDigits((s).Drop(1)) 881 } 882 } 883 func (_static *CompanionStruct_Default___) TestPositionals(opts _dafny.Sequence, optional m_Wrappers.Option) m_Wrappers.Outcome { 884 goto TAIL_CALL_START 885 TAIL_CALL_START: 886 if (_dafny.IntOfUint32((opts).Cardinality())).Sign() == 0 { 887 return m_Wrappers.Companion_Outcome_.Create_Pass_() 888 } else if !(((opts).Select(0).(Param)).Is_Opt()) { 889 var _in0 _dafny.Sequence = (opts).Drop(1) 890 _ = _in0 891 var _in1 m_Wrappers.Option = optional 892 _ = _in1 893 opts = _in0 894 optional = _in1 895 goto TAIL_CALL_START 896 } else if (((opts).Select(0).(Param)).Dtor_positional()).Equals(Companion_Tri_.Create_No_()) { 897 var _in2 _dafny.Sequence = (opts).Drop(1) 898 _ = _in2 899 var _in3 m_Wrappers.Option = optional 900 _ = _in3 901 opts = _in2 902 optional = _in3 903 goto TAIL_CALL_START 904 } else if (((opts).Select(0).(Param)).Dtor_positional()).Equals(Companion_Tri_.Create_Maybe_()) { 905 var _in4 _dafny.Sequence = (opts).Drop(1) 906 _ = _in4 907 var _in5 m_Wrappers.Option = m_Wrappers.Companion_Option_.Create_Some_(((opts).Select(0).(Param)).Dtor_name()) 908 _ = _in5 909 opts = _in4 910 optional = _in5 911 goto TAIL_CALL_START 912 } else if (optional).Is_None() { 913 var _in6 _dafny.Sequence = (opts).Drop(1) 914 _ = _in6 915 var _in7 m_Wrappers.Option = optional 916 _ = _in7 917 opts = _in6 918 optional = _in7 919 goto TAIL_CALL_START 920 } else { 921 return m_Wrappers.Companion_Outcome_.Create_Fail_(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Required positional argument '"), ((opts).Select(0).(Param)).Dtor_name()), _dafny.SeqOfString("' follows optional positional argument '")), (optional).Dtor_value().(_dafny.Sequence)), _dafny.SeqOfString("'."))) 922 } 923 } 924 func (_static *CompanionStruct_Default___) GetPositionals(opts _dafny.Sequence, args _dafny.Sequence, params _dafny.Sequence) m_Wrappers.Result { 925 goto TAIL_CALL_START 926 TAIL_CALL_START: 927 if (_dafny.IntOfUint32((opts).Cardinality())).Sign() == 0 { 928 return m_Wrappers.Companion_Result_.Create_Success_(_dafny.TupleOf(args, params)) 929 } else if !(((opts).Select(0).(Param)).Is_Opt()) { 930 var _in0 _dafny.Sequence = (opts).Drop(1) 931 _ = _in0 932 var _in1 _dafny.Sequence = args 933 _ = _in1 934 var _in2 _dafny.Sequence = params 935 _ = _in2 936 opts = _in0 937 args = _in1 938 params = _in2 939 goto TAIL_CALL_START 940 } else if (((opts).Select(0).(Param)).Dtor_positional()).Equals(Companion_Tri_.Create_No_()) { 941 var _in3 _dafny.Sequence = (opts).Drop(1) 942 _ = _in3 943 var _in4 _dafny.Sequence = args 944 _ = _in4 945 var _in5 _dafny.Sequence = params 946 _ = _in5 947 opts = _in3 948 args = _in4 949 params = _in5 950 goto TAIL_CALL_START 951 } else if (((opts).Select(0).(Param)).Dtor_positional()).Equals(Companion_Tri_.Create_Yes_()) { 952 if (_dafny.IntOfUint32((args).Cardinality())).Sign() == 0 { 953 return m_Wrappers.Companion_Result_.Create_Failure_(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Positional arg '"), ((opts).Select(0).(Param)).Dtor_name()), _dafny.SeqOfString("' is required, but we've run out of arguments."))) 954 } else if Companion_Default___.ValidPositional((args).Select(0).(_dafny.Sequence)) { 955 var _in6 _dafny.Sequence = (opts).Drop(1) 956 _ = _in6 957 var _in7 _dafny.Sequence = (args).Drop(1) 958 _ = _in7 959 var _in8 _dafny.Sequence = _dafny.Companion_Sequence_.Concatenate(params, _dafny.SeqOf(Companion_OneArg_.Create_OneArg_(((opts).Select(0).(Param)).Dtor_name(), m_Wrappers.Companion_Option_.Create_Some_((args).Select(0).(_dafny.Sequence))))) 960 _ = _in8 961 opts = _in6 962 args = _in7 963 params = _in8 964 goto TAIL_CALL_START 965 } else { 966 return m_Wrappers.Companion_Result_.Create_Failure_(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Positional arg "), ((opts).Select(0).(Param)).Dtor_name()), _dafny.SeqOfString(" matched with invalid positional value '")), (args).Select(0).(_dafny.Sequence)), _dafny.SeqOfString("'."))) 967 } 968 } else { 969 if (_dafny.IntOfUint32((args).Cardinality())).Sign() == 0 { 970 return m_Wrappers.Companion_Result_.Create_Success_(_dafny.TupleOf(args, params)) 971 } else if Companion_Default___.ValidPositional((args).Select(0).(_dafny.Sequence)) { 972 var _in9 _dafny.Sequence = (opts).Drop(1) 973 _ = _in9 974 var _in10 _dafny.Sequence = (args).Drop(1) 975 _ = _in10 976 var _in11 _dafny.Sequence = _dafny.Companion_Sequence_.Concatenate(params, _dafny.SeqOf(Companion_OneArg_.Create_OneArg_(((opts).Select(0).(Param)).Dtor_name(), m_Wrappers.Companion_Option_.Create_Some_((args).Select(0).(_dafny.Sequence))))) 977 _ = _in11 978 opts = _in9 979 args = _in10 980 params = _in11 981 goto TAIL_CALL_START 982 } else { 983 return m_Wrappers.Companion_Result_.Create_Success_(_dafny.TupleOf(args, params)) 984 } 985 } 986 } 987 func (_static *CompanionStruct_Default___) GetOptions(opts Options, args _dafny.Sequence) m_Wrappers.Result { 988 var _0_newOpts _dafny.Sequence = _dafny.Companion_Sequence_.Concatenate((opts).Dtor_params(), _dafny.SeqOf(Companion_Default___.HELP__PARAM())) 989 _ = _0_newOpts 990 var _1_inherits _dafny.Sequence = Companion_Default___.Filter(func(coer24 func(Param) bool) func(interface{}) bool { 991 return func(arg28 interface{}) bool { 992 return coer24(arg28.(Param)) 993 } 994 }(func(_2_o Param) bool { 995 return (_2_o).Inherits() 996 }), _0_newOpts) 997 _ = _1_inherits 998 var _3_valueOrError0 m_Wrappers.Outcome = Companion_Default___.TestPositionals(_0_newOpts, m_Wrappers.Companion_Option_.Create_None_()) 999 _ = _3_valueOrError0 1000 if (_3_valueOrError0).IsFailure() { 1001 return (_3_valueOrError0).PropagateFailure() 1002 } else { 1003 var _4_valueOrError1 m_Wrappers.Result = Companion_Default___.GetPositionals(_0_newOpts, (args).Drop(1), _dafny.SeqOf()) 1004 _ = _4_valueOrError1 1005 if (_4_valueOrError1).IsFailure() { 1006 return (_4_valueOrError1).PropagateFailure() 1007 } else { 1008 var _let_tmp_rhs0 _dafny.Tuple = (_4_valueOrError1).Extract().(_dafny.Tuple) 1009 _ = _let_tmp_rhs0 1010 var _5_newArgs _dafny.Sequence = (*(_let_tmp_rhs0).IndexInt(0)).(_dafny.Sequence) 1011 _ = _5_newArgs 1012 var _6_params _dafny.Sequence = (*(_let_tmp_rhs0).IndexInt(1)).(_dafny.Sequence) 1013 _ = _6_params 1014 var _7_valueOrError2 m_Wrappers.Result = Companion_Default___.GetMaps(_0_newOpts, _dafny.NewMapBuilder().ToMap(), _dafny.NewMapBuilder().ToMap(), _dafny.NewMapBuilder().ToMap()) 1015 _ = _7_valueOrError2 1016 if (_7_valueOrError2).IsFailure() { 1017 return (_7_valueOrError2).PropagateFailure() 1018 } else { 1019 var _let_tmp_rhs1 _dafny.Tuple = (_7_valueOrError2).Extract().(_dafny.Tuple) 1020 _ = _let_tmp_rhs1 1021 var _8_longMap _dafny.Map = (*(_let_tmp_rhs1).IndexInt(0)).(_dafny.Map) 1022 _ = _8_longMap 1023 var _9_shortMap _dafny.Map = (*(_let_tmp_rhs1).IndexInt(1)).(_dafny.Map) 1024 _ = _9_shortMap 1025 var _10_commandMap _dafny.Map = (*(_let_tmp_rhs1).IndexInt(2)).(_dafny.Map) 1026 _ = _10_commandMap 1027 var _11_context Context = Companion_Context_.Create_Context_(_8_longMap, _9_shortMap, _1_inherits, _10_commandMap, (args).Select(0).(_dafny.Sequence)) 1028 _ = _11_context 1029 var _12_valueOrError3 m_Wrappers.Result = Companion_Default___.GetOptions2(_5_newArgs, _11_context, _6_params, _dafny.SeqOf()) 1030 _ = _12_valueOrError3 1031 if (_12_valueOrError3).IsFailure() { 1032 return (_12_valueOrError3).PropagateFailure() 1033 } else { 1034 var _13_result Parsed = (_12_valueOrError3).Extract().(Parsed) 1035 _ = _13_result 1036 return Companion_Default___.PostProcess(opts, _13_result) 1037 } 1038 } 1039 } 1040 } 1041 } 1042 func (_static *CompanionStruct_Default___) IndexOf(xs _dafny.Sequence, v interface{}) _dafny.Int { 1043 var _0___accumulator _dafny.Int = _dafny.Zero 1044 _ = _0___accumulator 1045 goto TAIL_CALL_START 1046 TAIL_CALL_START: 1047 if _dafny.AreEqual((xs).Select(0).(interface{}), v) { 1048 return (_dafny.Zero).Plus(_0___accumulator) 1049 } else { 1050 _0___accumulator = (_0___accumulator).Plus(_dafny.One) 1051 var _in0 _dafny.Sequence = (xs).Drop(1) 1052 _ = _in0 1053 var _in1 interface{} = v 1054 _ = _in1 1055 xs = _in0 1056 v = _in1 1057 goto TAIL_CALL_START 1058 } 1059 } 1060 func (_static *CompanionStruct_Default___) SplitOnce(s _dafny.Sequence, delim interface{}) _dafny.Tuple { 1061 var _0_i _dafny.Int = Companion_Default___.IndexOf(s, delim) 1062 _ = _0_i 1063 return _dafny.TupleOf((s).Take((_0_i).Uint32()), (s).Drop(((_0_i).Plus(_dafny.One)).Uint32())) 1064 } 1065 func (_static *CompanionStruct_Default___) GetOptions2(args _dafny.Sequence, context Context, parms _dafny.Sequence, files _dafny.Sequence) m_Wrappers.Result { 1066 if (_dafny.IntOfUint32((args).Cardinality())).Sign() == 0 { 1067 return m_Wrappers.Companion_Result_.Create_Success_(Companion_Parsed_.Create_Parsed_((context).Dtor_command(), parms, files, m_Wrappers.Companion_Option_.Create_None_())) 1068 } else if ((context).Dtor_commands()).Contains((args).Select(0).(_dafny.Sequence)) { 1069 var _0_inherits _dafny.Sequence = Companion_Default___.Filter(func(coer25 func(Param) bool) func(interface{}) bool { 1070 return func(arg29 interface{}) bool { 1071 return coer25(arg29.(Param)) 1072 } 1073 }(func(_1_o Param) bool { 1074 return (_1_o).Inherits() 1075 }), (((context).Dtor_commands()).Get((args).Select(0).(_dafny.Sequence)).(Options)).Dtor_params()) 1076 _ = _0_inherits 1077 var _2_newOpts _dafny.Sequence = _dafny.Companion_Sequence_.Concatenate((((context).Dtor_commands()).Get((args).Select(0).(_dafny.Sequence)).(Options)).Dtor_params(), (context).Dtor_inherits()) 1078 _ = _2_newOpts 1079 var _3_valueOrError0 m_Wrappers.Outcome = Companion_Default___.TestPositionals(_2_newOpts, m_Wrappers.Companion_Option_.Create_None_()) 1080 _ = _3_valueOrError0 1081 if (_3_valueOrError0).IsFailure() { 1082 return (_3_valueOrError0).PropagateFailure() 1083 } else { 1084 var _4_valueOrError1 m_Wrappers.Result = Companion_Default___.GetPositionals(_2_newOpts, (args).Drop(1), _dafny.SeqOf()) 1085 _ = _4_valueOrError1 1086 if (_4_valueOrError1).IsFailure() { 1087 return (_4_valueOrError1).PropagateFailure() 1088 } else { 1089 var _let_tmp_rhs0 _dafny.Tuple = (_4_valueOrError1).Extract().(_dafny.Tuple) 1090 _ = _let_tmp_rhs0 1091 var _5_newArgs _dafny.Sequence = (*(_let_tmp_rhs0).IndexInt(0)).(_dafny.Sequence) 1092 _ = _5_newArgs 1093 var _6_params _dafny.Sequence = (*(_let_tmp_rhs0).IndexInt(1)).(_dafny.Sequence) 1094 _ = _6_params 1095 var _7_valueOrError2 m_Wrappers.Result = Companion_Default___.GetMaps(_2_newOpts, _dafny.NewMapBuilder().ToMap(), _dafny.NewMapBuilder().ToMap(), _dafny.NewMapBuilder().ToMap()) 1096 _ = _7_valueOrError2 1097 if (_7_valueOrError2).IsFailure() { 1098 return (_7_valueOrError2).PropagateFailure() 1099 } else { 1100 var _let_tmp_rhs1 _dafny.Tuple = (_7_valueOrError2).Extract().(_dafny.Tuple) 1101 _ = _let_tmp_rhs1 1102 var _8_longMap _dafny.Map = (*(_let_tmp_rhs1).IndexInt(0)).(_dafny.Map) 1103 _ = _8_longMap 1104 var _9_shortMap _dafny.Map = (*(_let_tmp_rhs1).IndexInt(1)).(_dafny.Map) 1105 _ = _9_shortMap 1106 var _10_commandSet _dafny.Map = (*(_let_tmp_rhs1).IndexInt(2)).(_dafny.Map) 1107 _ = _10_commandSet 1108 var _11_newContext Context = Companion_Context_.Create_Context_(_8_longMap, _9_shortMap, _dafny.Companion_Sequence_.Concatenate((context).Dtor_inherits(), _0_inherits), _10_commandSet, (args).Select(0).(_dafny.Sequence)) 1109 _ = _11_newContext 1110 var _12_lostArgs _dafny.Int = (_dafny.IntOfUint32((args).Cardinality())).Minus(_dafny.IntOfUint32((_5_newArgs).Cardinality())) 1111 _ = _12_lostArgs 1112 var _13_valueOrError3 m_Wrappers.Result = Companion_Default___.GetOptions2((args).Drop((_12_lostArgs).Uint32()), _11_newContext, _6_params, _dafny.SeqOf()) 1113 _ = _13_valueOrError3 1114 if (_13_valueOrError3).IsFailure() { 1115 return (_13_valueOrError3).PropagateFailure() 1116 } else { 1117 var _14_result Parsed = (_13_valueOrError3).Extract().(Parsed) 1118 _ = _14_result 1119 return m_Wrappers.Companion_Result_.Create_Success_(Companion_Parsed_.Create_Parsed_((context).Dtor_command(), parms, files, m_Wrappers.Companion_Option_.Create_Some_(_14_result))) 1120 } 1121 } 1122 } 1123 } 1124 } else if _dafny.Companion_Sequence_.Equal((args).Select(0).(_dafny.Sequence), _dafny.SeqOfString("--")) { 1125 return m_Wrappers.Companion_Result_.Create_Success_(Companion_Parsed_.Create_Parsed_((context).Dtor_command(), parms, _dafny.Companion_Sequence_.Concatenate(files, (args).Drop(1)), m_Wrappers.Companion_Option_.Create_None_())) 1126 } else if _dafny.Companion_Sequence_.IsProperPrefixOf(_dafny.SeqOfString("--"), (args).Select(0).(_dafny.Sequence)) { 1127 var _15_longOpt _dafny.Sequence = ((args).Select(0).(_dafny.Sequence)).Drop(2) 1128 _ = _15_longOpt 1129 if _dafny.Companion_Sequence_.Contains(_15_longOpt, _dafny.Char('=')) { 1130 var _let_tmp_rhs2 _dafny.Tuple = Companion_Default___.SplitOnce(_15_longOpt, _dafny.Char('=')) 1131 _ = _let_tmp_rhs2 1132 var _16_opt _dafny.Sequence = (*(_let_tmp_rhs2).IndexInt(0)).(_dafny.Sequence) 1133 _ = _16_opt 1134 var _17_arg _dafny.Sequence = (*(_let_tmp_rhs2).IndexInt(1)).(_dafny.Sequence) 1135 _ = _17_arg 1136 if ((context).Dtor_longMap()).Contains(_16_opt) { 1137 if (((context).Dtor_longMap()).Get(_16_opt).(Param)).NeedsArg() { 1138 return Companion_Default___.GetOptions2((args).Drop(1), context, _dafny.Companion_Sequence_.Concatenate(parms, (((context).Dtor_longMap()).Get(_16_opt).(Param)).MakeArg(m_Wrappers.Companion_Option_.Create_Some_(_17_arg))), files) 1139 } else { 1140 return m_Wrappers.Companion_Result_.Create_Failure_(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Option "), _16_opt), _dafny.SeqOfString(" does not take an argument, but it got one."))) 1141 } 1142 } else { 1143 return m_Wrappers.Companion_Result_.Create_Failure_(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Option "), _16_opt), _dafny.SeqOfString(" not recognized."))) 1144 } 1145 } else if ((context).Dtor_longMap()).Contains(_15_longOpt) { 1146 var _18_opt Param = ((context).Dtor_longMap()).Get(_15_longOpt).(Param) 1147 _ = _18_opt 1148 if (_18_opt).NeedsArg() { 1149 if (_dafny.IntOfUint32((args).Cardinality())).Cmp(_dafny.IntOfInt64(2)) < 0 { 1150 return m_Wrappers.Companion_Result_.Create_Failure_(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Option "), _15_longOpt), _dafny.SeqOfString(" requires an argument, but didn't get one."))) 1151 } else { 1152 return Companion_Default___.GetOptions2((args).Drop(2), context, _dafny.Companion_Sequence_.Concatenate(parms, (_18_opt).MakeArg(m_Wrappers.Companion_Option_.Create_Some_((args).Select(1).(_dafny.Sequence)))), files) 1153 } 1154 } else if (((_18_opt).Is_Flag()) && ((_18_opt).Dtor_solo())) && ((((_dafny.IntOfUint32((args).Cardinality())).Cmp(_dafny.One) != 0) || ((_dafny.IntOfUint32((parms).Cardinality())).Sign() != 0)) || ((_dafny.IntOfUint32((files).Cardinality())).Sign() != 0)) { 1155 return m_Wrappers.Companion_Result_.Create_Failure_(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Option '"), _15_longOpt), _dafny.SeqOfString("' used with other stuff, but must only be used alone."))) 1156 } else { 1157 return Companion_Default___.GetOptions2((args).Drop(1), context, _dafny.Companion_Sequence_.Concatenate(parms, (_18_opt).MakeArg(m_Wrappers.Companion_Option_.Create_None_())), files) 1158 } 1159 } else { 1160 return m_Wrappers.Companion_Result_.Create_Failure_(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Option "), _15_longOpt), _dafny.SeqOfString(" not recognized."))) 1161 } 1162 } else if _dafny.Companion_Sequence_.Equal(_dafny.SeqOfString("-"), (args).Select(0).(_dafny.Sequence)) { 1163 return Companion_Default___.GetOptions2((args).Drop(1), context, parms, _dafny.Companion_Sequence_.Concatenate(files, _dafny.SeqOf((args).Select(0).(_dafny.Sequence)))) 1164 } else if _dafny.Companion_Sequence_.IsProperPrefixOf(_dafny.SeqOfString("-"), (args).Select(0).(_dafny.Sequence)) { 1165 var _19_valueOrError4 m_Wrappers.Result = Companion_Default___.GetShort(((args).Select(0).(_dafny.Sequence)).Drop(1), (context).Dtor_longMap(), (context).Dtor_shortMap(), _dafny.SeqOf()) 1166 _ = _19_valueOrError4 1167 if (_19_valueOrError4).IsFailure() { 1168 return (_19_valueOrError4).PropagateFailure() 1169 } else { 1170 var _let_tmp_rhs3 _dafny.Tuple = (_19_valueOrError4).Extract().(_dafny.Tuple) 1171 _ = _let_tmp_rhs3 1172 var _20_newParms _dafny.Sequence = (*(_let_tmp_rhs3).IndexInt(0)).(_dafny.Sequence) 1173 _ = _20_newParms 1174 var _21_nextParm m_Wrappers.Option = (*(_let_tmp_rhs3).IndexInt(1)).(m_Wrappers.Option) 1175 _ = _21_nextParm 1176 if (_21_nextParm).Is_None() { 1177 return Companion_Default___.GetOptions2((args).Drop(1), context, _dafny.Companion_Sequence_.Concatenate(parms, _20_newParms), files) 1178 } else if (_dafny.IntOfUint32((args).Cardinality())).Cmp(_dafny.One) == 0 { 1179 return m_Wrappers.Companion_Result_.Create_Failure_(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Short option "), _dafny.SeqOfChars((_21_nextParm).Dtor_value().(_dafny.Char))), _dafny.SeqOfString(" requires argument but didn't get one."))) 1180 } else { 1181 var _22_longOpt _dafny.Sequence = ((context).Dtor_shortMap()).Get((_21_nextParm).Dtor_value().(_dafny.Char)).(_dafny.Sequence) 1182 _ = _22_longOpt 1183 var _23_opt Param = ((context).Dtor_longMap()).Get(_22_longOpt).(Param) 1184 _ = _23_opt 1185 return Companion_Default___.GetOptions2((args).Drop(2), context, _dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(parms, _20_newParms), (_23_opt).MakeArg(m_Wrappers.Companion_Option_.Create_Some_((args).Select(1).(_dafny.Sequence)))), files) 1186 } 1187 } 1188 } else if (((context).Dtor_commands()).Cardinality()).Sign() == 0 { 1189 return Companion_Default___.GetOptions2((args).Drop(1), context, parms, _dafny.Companion_Sequence_.Concatenate(files, _dafny.SeqOf((args).Select(0).(_dafny.Sequence)))) 1190 } else { 1191 return m_Wrappers.Companion_Result_.Create_Failure_(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Unrecognized command "), (args).Select(0).(_dafny.Sequence)), _dafny.SeqOfString(" for ")), (context).Dtor_command()), _dafny.SeqOfString("\nRun '")), (context).Dtor_command()), _dafny.SeqOfString(" --help' for usage."))) 1192 } 1193 } 1194 func (_static *CompanionStruct_Default___) GetShort(arg _dafny.Sequence, longMap _dafny.Map, shortMap _dafny.Map, parms _dafny.Sequence) m_Wrappers.Result { 1195 goto TAIL_CALL_START 1196 TAIL_CALL_START: 1197 if (_dafny.IntOfUint32((arg).Cardinality())).Sign() == 0 { 1198 return m_Wrappers.Companion_Result_.Create_Success_(_dafny.TupleOf(parms, m_Wrappers.Companion_Option_.Create_None_())) 1199 } else { 1200 var _0_ch _dafny.Char = (arg).Select(0).(_dafny.Char) 1201 _ = _0_ch 1202 if (shortMap).Contains(_0_ch) { 1203 var _1_opt _dafny.Sequence = (shortMap).Get(_0_ch).(_dafny.Sequence) 1204 _ = _1_opt 1205 if ((longMap).Get(_1_opt).(Param)).NeedsArg() { 1206 if (_dafny.IntOfUint32((arg).Cardinality())).Cmp(_dafny.One) == 0 { 1207 return m_Wrappers.Companion_Result_.Create_Success_(_dafny.TupleOf(parms, m_Wrappers.Companion_Option_.Create_Some_(_0_ch))) 1208 } else { 1209 return m_Wrappers.Companion_Result_.Create_Success_(_dafny.TupleOf(_dafny.Companion_Sequence_.Concatenate(parms, ((longMap).Get(_1_opt).(Param)).MakeArg(m_Wrappers.Companion_Option_.Create_Some_((arg).Drop(1)))), m_Wrappers.Companion_Option_.Create_None_())) 1210 } 1211 } else { 1212 var _in0 _dafny.Sequence = (arg).Drop(1) 1213 _ = _in0 1214 var _in1 _dafny.Map = longMap 1215 _ = _in1 1216 var _in2 _dafny.Map = shortMap 1217 _ = _in2 1218 var _in3 _dafny.Sequence = _dafny.Companion_Sequence_.Concatenate(parms, ((longMap).Get(_1_opt).(Param)).MakeArg(m_Wrappers.Companion_Option_.Create_None_())) 1219 _ = _in3 1220 arg = _in0 1221 longMap = _in1 1222 shortMap = _in2 1223 parms = _in3 1224 goto TAIL_CALL_START 1225 } 1226 } else { 1227 return m_Wrappers.Companion_Result_.Create_Failure_(_dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Short option '"), _dafny.SeqOfChars(_0_ch)), _dafny.SeqOfString("' not recognized."))) 1228 } 1229 } 1230 } 1231 func (_static *CompanionStruct_Default___) NullChar() _dafny.Char { 1232 return _dafny.Char((_dafny.Zero).Int32()) 1233 } 1234 func (_static *CompanionStruct_Default___) HELP__STR() _dafny.Sequence { 1235 return _dafny.SeqOfString("help") 1236 } 1237 func (_static *CompanionStruct_Default___) HELP__PARAM() Param { 1238 return Companion_Param_.Create_Flag_(Companion_Default___.HELP__STR(), _dafny.SeqOfString("This help text."), Companion_Default___.NullChar(), true, true, Companion_Visibility_.Create_Normal_(), _dafny.SeqOfChars(), _dafny.SeqOf()) 1239 } 1240 1241 // End of class Default__ 1242 1243 // Definition of datatype Tri 1244 type Tri struct { 1245 Data_Tri_ 1246 } 1247 1248 func (_this Tri) Get_() Data_Tri_ { 1249 return _this.Data_Tri_ 1250 } 1251 1252 type Data_Tri_ interface { 1253 isTri() 1254 } 1255 1256 type CompanionStruct_Tri_ struct { 1257 } 1258 1259 var Companion_Tri_ = CompanionStruct_Tri_{} 1260 1261 type Tri_Yes struct { 1262 } 1263 1264 func (Tri_Yes) isTri() {} 1265 1266 func (CompanionStruct_Tri_) Create_Yes_() Tri { 1267 return Tri{Tri_Yes{}} 1268 } 1269 1270 func (_this Tri) Is_Yes() bool { 1271 _, ok := _this.Get_().(Tri_Yes) 1272 return ok 1273 } 1274 1275 type Tri_No struct { 1276 } 1277 1278 func (Tri_No) isTri() {} 1279 1280 func (CompanionStruct_Tri_) Create_No_() Tri { 1281 return Tri{Tri_No{}} 1282 } 1283 1284 func (_this Tri) Is_No() bool { 1285 _, ok := _this.Get_().(Tri_No) 1286 return ok 1287 } 1288 1289 type Tri_Maybe struct { 1290 } 1291 1292 func (Tri_Maybe) isTri() {} 1293 1294 func (CompanionStruct_Tri_) Create_Maybe_() Tri { 1295 return Tri{Tri_Maybe{}} 1296 } 1297 1298 func (_this Tri) Is_Maybe() bool { 1299 _, ok := _this.Get_().(Tri_Maybe) 1300 return ok 1301 } 1302 1303 func (CompanionStruct_Tri_) Default() Tri { 1304 return Companion_Tri_.Create_Yes_() 1305 } 1306 1307 func (_ CompanionStruct_Tri_) AllSingletonConstructors() _dafny.Iterator { 1308 i := -1 1309 return func() (interface{}, bool) { 1310 i++ 1311 switch i { 1312 case 0: 1313 return Companion_Tri_.Create_Yes_(), true 1314 case 1: 1315 return Companion_Tri_.Create_No_(), true 1316 case 2: 1317 return Companion_Tri_.Create_Maybe_(), true 1318 default: 1319 return Tri{}, false 1320 } 1321 } 1322 } 1323 1324 func (_this Tri) String() string { 1325 switch _this.Get_().(type) { 1326 case nil: 1327 return "null" 1328 case Tri_Yes: 1329 { 1330 return "GetOpt.Tri.Yes" 1331 } 1332 case Tri_No: 1333 { 1334 return "GetOpt.Tri.No" 1335 } 1336 case Tri_Maybe: 1337 { 1338 return "GetOpt.Tri.Maybe" 1339 } 1340 default: 1341 { 1342 return "<unexpected>" 1343 } 1344 } 1345 } 1346 1347 func (_this Tri) Equals(other Tri) bool { 1348 switch _this.Get_().(type) { 1349 case Tri_Yes: 1350 { 1351 _, ok := other.Get_().(Tri_Yes) 1352 return ok 1353 } 1354 case Tri_No: 1355 { 1356 _, ok := other.Get_().(Tri_No) 1357 return ok 1358 } 1359 case Tri_Maybe: 1360 { 1361 _, ok := other.Get_().(Tri_Maybe) 1362 return ok 1363 } 1364 default: 1365 { 1366 return false // unexpected 1367 } 1368 } 1369 } 1370 1371 func (_this Tri) EqualsGeneric(other interface{}) bool { 1372 typed, ok := other.(Tri) 1373 return ok && _this.Equals(typed) 1374 } 1375 1376 func Type_Tri_() _dafny.TypeDescriptor { 1377 return type_Tri_{} 1378 } 1379 1380 type type_Tri_ struct { 1381 } 1382 1383 func (_this type_Tri_) Default() interface{} { 1384 return Companion_Tri_.Default() 1385 } 1386 1387 func (_this type_Tri_) String() string { 1388 return "GetOpt.Tri" 1389 } 1390 func (_this Tri) ParentTraits_() []*_dafny.TraitID { 1391 return [](*_dafny.TraitID){} 1392 } 1393 1394 var _ _dafny.TraitOffspring = Tri{} 1395 1396 // End of datatype Tri 1397 1398 // Definition of datatype Visibility 1399 type Visibility struct { 1400 Data_Visibility_ 1401 } 1402 1403 func (_this Visibility) Get_() Data_Visibility_ { 1404 return _this.Data_Visibility_ 1405 } 1406 1407 type Data_Visibility_ interface { 1408 isVisibility() 1409 } 1410 1411 type CompanionStruct_Visibility_ struct { 1412 } 1413 1414 var Companion_Visibility_ = CompanionStruct_Visibility_{} 1415 1416 type Visibility_Normal struct { 1417 } 1418 1419 func (Visibility_Normal) isVisibility() {} 1420 1421 func (CompanionStruct_Visibility_) Create_Normal_() Visibility { 1422 return Visibility{Visibility_Normal{}} 1423 } 1424 1425 func (_this Visibility) Is_Normal() bool { 1426 _, ok := _this.Get_().(Visibility_Normal) 1427 return ok 1428 } 1429 1430 type Visibility_Hidden struct { 1431 } 1432 1433 func (Visibility_Hidden) isVisibility() {} 1434 1435 func (CompanionStruct_Visibility_) Create_Hidden_() Visibility { 1436 return Visibility{Visibility_Hidden{}} 1437 } 1438 1439 func (_this Visibility) Is_Hidden() bool { 1440 _, ok := _this.Get_().(Visibility_Hidden) 1441 return ok 1442 } 1443 1444 type Visibility_Deprecated struct { 1445 } 1446 1447 func (Visibility_Deprecated) isVisibility() {} 1448 1449 func (CompanionStruct_Visibility_) Create_Deprecated_() Visibility { 1450 return Visibility{Visibility_Deprecated{}} 1451 } 1452 1453 func (_this Visibility) Is_Deprecated() bool { 1454 _, ok := _this.Get_().(Visibility_Deprecated) 1455 return ok 1456 } 1457 1458 func (CompanionStruct_Visibility_) Default() Visibility { 1459 return Companion_Visibility_.Create_Normal_() 1460 } 1461 1462 func (_ CompanionStruct_Visibility_) AllSingletonConstructors() _dafny.Iterator { 1463 i := -1 1464 return func() (interface{}, bool) { 1465 i++ 1466 switch i { 1467 case 0: 1468 return Companion_Visibility_.Create_Normal_(), true 1469 case 1: 1470 return Companion_Visibility_.Create_Hidden_(), true 1471 case 2: 1472 return Companion_Visibility_.Create_Deprecated_(), true 1473 default: 1474 return Visibility{}, false 1475 } 1476 } 1477 } 1478 1479 func (_this Visibility) String() string { 1480 switch _this.Get_().(type) { 1481 case nil: 1482 return "null" 1483 case Visibility_Normal: 1484 { 1485 return "GetOpt.Visibility.Normal" 1486 } 1487 case Visibility_Hidden: 1488 { 1489 return "GetOpt.Visibility.Hidden" 1490 } 1491 case Visibility_Deprecated: 1492 { 1493 return "GetOpt.Visibility.Deprecated" 1494 } 1495 default: 1496 { 1497 return "<unexpected>" 1498 } 1499 } 1500 } 1501 1502 func (_this Visibility) Equals(other Visibility) bool { 1503 switch _this.Get_().(type) { 1504 case Visibility_Normal: 1505 { 1506 _, ok := other.Get_().(Visibility_Normal) 1507 return ok 1508 } 1509 case Visibility_Hidden: 1510 { 1511 _, ok := other.Get_().(Visibility_Hidden) 1512 return ok 1513 } 1514 case Visibility_Deprecated: 1515 { 1516 _, ok := other.Get_().(Visibility_Deprecated) 1517 return ok 1518 } 1519 default: 1520 { 1521 return false // unexpected 1522 } 1523 } 1524 } 1525 1526 func (_this Visibility) EqualsGeneric(other interface{}) bool { 1527 typed, ok := other.(Visibility) 1528 return ok && _this.Equals(typed) 1529 } 1530 1531 func Type_Visibility_() _dafny.TypeDescriptor { 1532 return type_Visibility_{} 1533 } 1534 1535 type type_Visibility_ struct { 1536 } 1537 1538 func (_this type_Visibility_) Default() interface{} { 1539 return Companion_Visibility_.Default() 1540 } 1541 1542 func (_this type_Visibility_) String() string { 1543 return "GetOpt.Visibility" 1544 } 1545 func (_this Visibility) ParentTraits_() []*_dafny.TraitID { 1546 return [](*_dafny.TraitID){} 1547 } 1548 1549 var _ _dafny.TraitOffspring = Visibility{} 1550 1551 // End of datatype Visibility 1552 1553 // Definition of datatype Options 1554 type Options struct { 1555 Data_Options_ 1556 } 1557 1558 func (_this Options) Get_() Data_Options_ { 1559 return _this.Data_Options_ 1560 } 1561 1562 type Data_Options_ interface { 1563 isOptions() 1564 } 1565 1566 type CompanionStruct_Options_ struct { 1567 } 1568 1569 var Companion_Options_ = CompanionStruct_Options_{} 1570 1571 type Options_Options struct { 1572 Name _dafny.Sequence 1573 Help _dafny.Sequence 1574 Params _dafny.Sequence 1575 } 1576 1577 func (Options_Options) isOptions() {} 1578 1579 func (CompanionStruct_Options_) Create_Options_(Name _dafny.Sequence, Help _dafny.Sequence, Params _dafny.Sequence) Options { 1580 return Options{Options_Options{Name, Help, Params}} 1581 } 1582 1583 func (_this Options) Is_Options() bool { 1584 _, ok := _this.Get_().(Options_Options) 1585 return ok 1586 } 1587 1588 func (CompanionStruct_Options_) Default() Options { 1589 return Companion_Options_.Create_Options_(_dafny.EmptySeq.SetString(), _dafny.EmptySeq.SetString(), _dafny.EmptySeq) 1590 } 1591 1592 func (_this Options) Dtor_name() _dafny.Sequence { 1593 return _this.Get_().(Options_Options).Name 1594 } 1595 1596 func (_this Options) Dtor_help() _dafny.Sequence { 1597 return _this.Get_().(Options_Options).Help 1598 } 1599 1600 func (_this Options) Dtor_params() _dafny.Sequence { 1601 return _this.Get_().(Options_Options).Params 1602 } 1603 1604 func (_this Options) String() string { 1605 switch data := _this.Get_().(type) { 1606 case nil: 1607 return "null" 1608 case Options_Options: 1609 { 1610 return "GetOpt.Options.Options" + "(" + _dafny.String(data.Name) + ", " + _dafny.String(data.Help) + ", " + _dafny.String(data.Params) + ")" 1611 } 1612 default: 1613 { 1614 return "<unexpected>" 1615 } 1616 } 1617 } 1618 1619 func (_this Options) Equals(other Options) bool { 1620 switch data1 := _this.Get_().(type) { 1621 case Options_Options: 1622 { 1623 data2, ok := other.Get_().(Options_Options) 1624 return ok && data1.Name.Equals(data2.Name) && data1.Help.Equals(data2.Help) && data1.Params.Equals(data2.Params) 1625 } 1626 default: 1627 { 1628 return false // unexpected 1629 } 1630 } 1631 } 1632 1633 func (_this Options) EqualsGeneric(other interface{}) bool { 1634 typed, ok := other.(Options) 1635 return ok && _this.Equals(typed) 1636 } 1637 1638 func Type_Options_() _dafny.TypeDescriptor { 1639 return type_Options_{} 1640 } 1641 1642 type type_Options_ struct { 1643 } 1644 1645 func (_this type_Options_) Default() interface{} { 1646 return Companion_Options_.Default() 1647 } 1648 1649 func (_this type_Options_) String() string { 1650 return "GetOpt.Options" 1651 } 1652 func (_this Options) ParentTraits_() []*_dafny.TraitID { 1653 return [](*_dafny.TraitID){} 1654 } 1655 1656 var _ _dafny.TraitOffspring = Options{} 1657 1658 // End of datatype Options 1659 1660 // Definition of datatype Unused 1661 type Unused struct { 1662 Data_Unused_ 1663 } 1664 1665 func (_this Unused) Get_() Data_Unused_ { 1666 return _this.Data_Unused_ 1667 } 1668 1669 type Data_Unused_ interface { 1670 isUnused() 1671 } 1672 1673 type CompanionStruct_Unused_ struct { 1674 } 1675 1676 var Companion_Unused_ = CompanionStruct_Unused_{} 1677 1678 type Unused_UnusedOk struct { 1679 } 1680 1681 func (Unused_UnusedOk) isUnused() {} 1682 1683 func (CompanionStruct_Unused_) Create_UnusedOk_() Unused { 1684 return Unused{Unused_UnusedOk{}} 1685 } 1686 1687 func (_this Unused) Is_UnusedOk() bool { 1688 _, ok := _this.Get_().(Unused_UnusedOk) 1689 return ok 1690 } 1691 1692 type Unused_Required struct { 1693 } 1694 1695 func (Unused_Required) isUnused() {} 1696 1697 func (CompanionStruct_Unused_) Create_Required_() Unused { 1698 return Unused{Unused_Required{}} 1699 } 1700 1701 func (_this Unused) Is_Required() bool { 1702 _, ok := _this.Get_().(Unused_Required) 1703 return ok 1704 } 1705 1706 type Unused_Default struct { 1707 Val _dafny.Sequence 1708 } 1709 1710 func (Unused_Default) isUnused() {} 1711 1712 func (CompanionStruct_Unused_) Create_Default_(Val _dafny.Sequence) Unused { 1713 return Unused{Unused_Default{Val}} 1714 } 1715 1716 func (_this Unused) Is_Default() bool { 1717 _, ok := _this.Get_().(Unused_Default) 1718 return ok 1719 } 1720 1721 func (CompanionStruct_Unused_) Default() Unused { 1722 return Companion_Unused_.Create_UnusedOk_() 1723 } 1724 1725 func (_this Unused) Dtor_val() _dafny.Sequence { 1726 return _this.Get_().(Unused_Default).Val 1727 } 1728 1729 func (_this Unused) String() string { 1730 switch data := _this.Get_().(type) { 1731 case nil: 1732 return "null" 1733 case Unused_UnusedOk: 1734 { 1735 return "GetOpt.Unused.UnusedOk" 1736 } 1737 case Unused_Required: 1738 { 1739 return "GetOpt.Unused.Required" 1740 } 1741 case Unused_Default: 1742 { 1743 return "GetOpt.Unused.Default" + "(" + _dafny.String(data.Val) + ")" 1744 } 1745 default: 1746 { 1747 return "<unexpected>" 1748 } 1749 } 1750 } 1751 1752 func (_this Unused) Equals(other Unused) bool { 1753 switch data1 := _this.Get_().(type) { 1754 case Unused_UnusedOk: 1755 { 1756 _, ok := other.Get_().(Unused_UnusedOk) 1757 return ok 1758 } 1759 case Unused_Required: 1760 { 1761 _, ok := other.Get_().(Unused_Required) 1762 return ok 1763 } 1764 case Unused_Default: 1765 { 1766 data2, ok := other.Get_().(Unused_Default) 1767 return ok && data1.Val.Equals(data2.Val) 1768 } 1769 default: 1770 { 1771 return false // unexpected 1772 } 1773 } 1774 } 1775 1776 func (_this Unused) EqualsGeneric(other interface{}) bool { 1777 typed, ok := other.(Unused) 1778 return ok && _this.Equals(typed) 1779 } 1780 1781 func Type_Unused_() _dafny.TypeDescriptor { 1782 return type_Unused_{} 1783 } 1784 1785 type type_Unused_ struct { 1786 } 1787 1788 func (_this type_Unused_) Default() interface{} { 1789 return Companion_Unused_.Default() 1790 } 1791 1792 func (_this type_Unused_) String() string { 1793 return "GetOpt.Unused" 1794 } 1795 func (_this Unused) ParentTraits_() []*_dafny.TraitID { 1796 return [](*_dafny.TraitID){} 1797 } 1798 1799 var _ _dafny.TraitOffspring = Unused{} 1800 1801 // End of datatype Unused 1802 1803 // Definition of datatype Param 1804 type Param struct { 1805 Data_Param_ 1806 } 1807 1808 func (_this Param) Get_() Data_Param_ { 1809 return _this.Data_Param_ 1810 } 1811 1812 type Data_Param_ interface { 1813 isParam() 1814 } 1815 1816 type CompanionStruct_Param_ struct { 1817 } 1818 1819 var Companion_Param_ = CompanionStruct_Param_{} 1820 1821 type Param_Opt struct { 1822 Name _dafny.Sequence 1823 Help _dafny.Sequence 1824 ArgName _dafny.Sequence 1825 Short _dafny.Char 1826 Unused Unused 1827 Inherit bool 1828 Vis Visibility 1829 ShortAlias _dafny.Sequence 1830 LongAlias _dafny.Sequence 1831 Positional Tri 1832 } 1833 1834 func (Param_Opt) isParam() {} 1835 1836 func (CompanionStruct_Param_) Create_Opt_(Name _dafny.Sequence, Help _dafny.Sequence, ArgName _dafny.Sequence, Short _dafny.Char, Unused Unused, Inherit bool, Vis Visibility, ShortAlias _dafny.Sequence, LongAlias _dafny.Sequence, Positional Tri) Param { 1837 return Param{Param_Opt{Name, Help, ArgName, Short, Unused, Inherit, Vis, ShortAlias, LongAlias, Positional}} 1838 } 1839 1840 func (_this Param) Is_Opt() bool { 1841 _, ok := _this.Get_().(Param_Opt) 1842 return ok 1843 } 1844 1845 type Param_Flag struct { 1846 Name _dafny.Sequence 1847 Help _dafny.Sequence 1848 Short _dafny.Char 1849 Solo bool 1850 Inherit bool 1851 Vis Visibility 1852 ShortAlias _dafny.Sequence 1853 LongAlias _dafny.Sequence 1854 } 1855 1856 func (Param_Flag) isParam() {} 1857 1858 func (CompanionStruct_Param_) Create_Flag_(Name _dafny.Sequence, Help _dafny.Sequence, Short _dafny.Char, Solo bool, Inherit bool, Vis Visibility, ShortAlias _dafny.Sequence, LongAlias _dafny.Sequence) Param { 1859 return Param{Param_Flag{Name, Help, Short, Solo, Inherit, Vis, ShortAlias, LongAlias}} 1860 } 1861 1862 func (_this Param) Is_Flag() bool { 1863 _, ok := _this.Get_().(Param_Flag) 1864 return ok 1865 } 1866 1867 type Param_Command struct { 1868 Options Options 1869 } 1870 1871 func (Param_Command) isParam() {} 1872 1873 func (CompanionStruct_Param_) Create_Command_(Options Options) Param { 1874 return Param{Param_Command{Options}} 1875 } 1876 1877 func (_this Param) Is_Command() bool { 1878 _, ok := _this.Get_().(Param_Command) 1879 return ok 1880 } 1881 1882 func (CompanionStruct_Param_) Default() Param { 1883 return Companion_Param_.Create_Opt_(_dafny.EmptySeq.SetString(), _dafny.EmptySeq.SetString(), _dafny.EmptySeq.SetString(), _dafny.Char('D'), Companion_Unused_.Default(), false, Companion_Visibility_.Default(), _dafny.EmptySeq.SetString(), _dafny.EmptySeq, Companion_Tri_.Default()) 1884 } 1885 1886 func (_this Param) Dtor_name() _dafny.Sequence { 1887 switch data := _this.Get_().(type) { 1888 case Param_Opt: 1889 return data.Name 1890 default: 1891 return data.(Param_Flag).Name 1892 } 1893 } 1894 1895 func (_this Param) Dtor_help() _dafny.Sequence { 1896 switch data := _this.Get_().(type) { 1897 case Param_Opt: 1898 return data.Help 1899 default: 1900 return data.(Param_Flag).Help 1901 } 1902 } 1903 1904 func (_this Param) Dtor_argName() _dafny.Sequence { 1905 return _this.Get_().(Param_Opt).ArgName 1906 } 1907 1908 func (_this Param) Dtor_short() _dafny.Char { 1909 switch data := _this.Get_().(type) { 1910 case Param_Opt: 1911 return data.Short 1912 default: 1913 return data.(Param_Flag).Short 1914 } 1915 } 1916 1917 func (_this Param) Dtor_unused() Unused { 1918 return _this.Get_().(Param_Opt).Unused 1919 } 1920 1921 func (_this Param) Dtor_inherit() bool { 1922 switch data := _this.Get_().(type) { 1923 case Param_Opt: 1924 return data.Inherit 1925 default: 1926 return data.(Param_Flag).Inherit 1927 } 1928 } 1929 1930 func (_this Param) Dtor_vis() Visibility { 1931 switch data := _this.Get_().(type) { 1932 case Param_Opt: 1933 return data.Vis 1934 default: 1935 return data.(Param_Flag).Vis 1936 } 1937 } 1938 1939 func (_this Param) Dtor_shortAlias() _dafny.Sequence { 1940 switch data := _this.Get_().(type) { 1941 case Param_Opt: 1942 return data.ShortAlias 1943 default: 1944 return data.(Param_Flag).ShortAlias 1945 } 1946 } 1947 1948 func (_this Param) Dtor_longAlias() _dafny.Sequence { 1949 switch data := _this.Get_().(type) { 1950 case Param_Opt: 1951 return data.LongAlias 1952 default: 1953 return data.(Param_Flag).LongAlias 1954 } 1955 } 1956 1957 func (_this Param) Dtor_positional() Tri { 1958 return _this.Get_().(Param_Opt).Positional 1959 } 1960 1961 func (_this Param) Dtor_solo() bool { 1962 return _this.Get_().(Param_Flag).Solo 1963 } 1964 1965 func (_this Param) Dtor_options() Options { 1966 return _this.Get_().(Param_Command).Options 1967 } 1968 1969 func (_this Param) String() string { 1970 switch data := _this.Get_().(type) { 1971 case nil: 1972 return "null" 1973 case Param_Opt: 1974 { 1975 return "GetOpt.Param.Opt" + "(" + _dafny.String(data.Name) + ", " + _dafny.String(data.Help) + ", " + _dafny.String(data.ArgName) + ", " + _dafny.String(data.Short) + ", " + _dafny.String(data.Unused) + ", " + _dafny.String(data.Inherit) + ", " + _dafny.String(data.Vis) + ", " + _dafny.String(data.ShortAlias) + ", " + _dafny.String(data.LongAlias) + ", " + _dafny.String(data.Positional) + ")" 1976 } 1977 case Param_Flag: 1978 { 1979 return "GetOpt.Param.Flag" + "(" + _dafny.String(data.Name) + ", " + _dafny.String(data.Help) + ", " + _dafny.String(data.Short) + ", " + _dafny.String(data.Solo) + ", " + _dafny.String(data.Inherit) + ", " + _dafny.String(data.Vis) + ", " + _dafny.String(data.ShortAlias) + ", " + _dafny.String(data.LongAlias) + ")" 1980 } 1981 case Param_Command: 1982 { 1983 return "GetOpt.Param.Command" + "(" + _dafny.String(data.Options) + ")" 1984 } 1985 default: 1986 { 1987 return "<unexpected>" 1988 } 1989 } 1990 } 1991 1992 func (_this Param) Equals(other Param) bool { 1993 switch data1 := _this.Get_().(type) { 1994 case Param_Opt: 1995 { 1996 data2, ok := other.Get_().(Param_Opt) 1997 return ok && data1.Name.Equals(data2.Name) && data1.Help.Equals(data2.Help) && data1.ArgName.Equals(data2.ArgName) && data1.Short == data2.Short && data1.Unused.Equals(data2.Unused) && data1.Inherit == data2.Inherit && data1.Vis.Equals(data2.Vis) && data1.ShortAlias.Equals(data2.ShortAlias) && data1.LongAlias.Equals(data2.LongAlias) && data1.Positional.Equals(data2.Positional) 1998 } 1999 case Param_Flag: 2000 { 2001 data2, ok := other.Get_().(Param_Flag) 2002 return ok && data1.Name.Equals(data2.Name) && data1.Help.Equals(data2.Help) && data1.Short == data2.Short && data1.Solo == data2.Solo && data1.Inherit == data2.Inherit && data1.Vis.Equals(data2.Vis) && data1.ShortAlias.Equals(data2.ShortAlias) && data1.LongAlias.Equals(data2.LongAlias) 2003 } 2004 case Param_Command: 2005 { 2006 data2, ok := other.Get_().(Param_Command) 2007 return ok && data1.Options.Equals(data2.Options) 2008 } 2009 default: 2010 { 2011 return false // unexpected 2012 } 2013 } 2014 } 2015 2016 func (_this Param) EqualsGeneric(other interface{}) bool { 2017 typed, ok := other.(Param) 2018 return ok && _this.Equals(typed) 2019 } 2020 2021 func Type_Param_() _dafny.TypeDescriptor { 2022 return type_Param_{} 2023 } 2024 2025 type type_Param_ struct { 2026 } 2027 2028 func (_this type_Param_) Default() interface{} { 2029 return Companion_Param_.Default() 2030 } 2031 2032 func (_this type_Param_) String() string { 2033 return "GetOpt.Param" 2034 } 2035 func (_this Param) ParentTraits_() []*_dafny.TraitID { 2036 return [](*_dafny.TraitID){} 2037 } 2038 2039 var _ _dafny.TraitOffspring = Param{} 2040 2041 func (_this Param) NeedsArg() bool { 2042 { 2043 return (_this).Is_Opt() 2044 } 2045 } 2046 func (_this Param) Inherits() bool { 2047 { 2048 return (((_this).Is_Opt()) || ((_this).Is_Flag())) && ((_this).Dtor_inherit()) 2049 } 2050 } 2051 func (_this Param) ShowHelp() bool { 2052 { 2053 return ((_this).Is_Command()) || (((_this).Dtor_vis()).Equals(Companion_Visibility_.Create_Normal_())) 2054 } 2055 } 2056 func (_this Param) KeepResult() bool { 2057 { 2058 return ((_this).Is_Command()) || (!((_this).Dtor_vis()).Equals(Companion_Visibility_.Create_Deprecated_())) 2059 } 2060 } 2061 func (_this Param) Name() _dafny.Sequence { 2062 { 2063 if (_this).Is_Command() { 2064 return ((_this).Dtor_options()).Dtor_name() 2065 } else { 2066 return (_this).Dtor_name() 2067 } 2068 } 2069 } 2070 func (_this Param) MakeArg(value m_Wrappers.Option) _dafny.Sequence { 2071 { 2072 if (_this).KeepResult() { 2073 return _dafny.SeqOf(Companion_OneArg_.Create_OneArg_((_this).Name(), value)) 2074 } else { 2075 return _dafny.SeqOf() 2076 } 2077 } 2078 } 2079 func (_this Param) ShortAlias() _dafny.Sequence { 2080 { 2081 if (_this).Is_Command() { 2082 return _dafny.SeqOfChars() 2083 } else { 2084 return (_this).Dtor_shortAlias() 2085 } 2086 } 2087 } 2088 func (_this Param) LongAlias() _dafny.Sequence { 2089 { 2090 if (_this).Is_Command() { 2091 return _dafny.SeqOf() 2092 } else { 2093 return (_this).Dtor_longAlias() 2094 } 2095 } 2096 } 2097 func (_this Param) Required() bool { 2098 { 2099 return ((_this).Is_Opt()) && (((_this).Dtor_unused()).Is_Required()) 2100 } 2101 } 2102 func (_this Param) HasDefault() bool { 2103 { 2104 return ((_this).Is_Opt()) && (((_this).Dtor_unused()).Is_Default()) 2105 } 2106 } 2107 2108 // End of datatype Param 2109 2110 // Definition of datatype OneArg 2111 type OneArg struct { 2112 Data_OneArg_ 2113 } 2114 2115 func (_this OneArg) Get_() Data_OneArg_ { 2116 return _this.Data_OneArg_ 2117 } 2118 2119 type Data_OneArg_ interface { 2120 isOneArg() 2121 } 2122 2123 type CompanionStruct_OneArg_ struct { 2124 } 2125 2126 var Companion_OneArg_ = CompanionStruct_OneArg_{} 2127 2128 type OneArg_OneArg struct { 2129 Name _dafny.Sequence 2130 Value m_Wrappers.Option 2131 } 2132 2133 func (OneArg_OneArg) isOneArg() {} 2134 2135 func (CompanionStruct_OneArg_) Create_OneArg_(Name _dafny.Sequence, Value m_Wrappers.Option) OneArg { 2136 return OneArg{OneArg_OneArg{Name, Value}} 2137 } 2138 2139 func (_this OneArg) Is_OneArg() bool { 2140 _, ok := _this.Get_().(OneArg_OneArg) 2141 return ok 2142 } 2143 2144 func (CompanionStruct_OneArg_) Default() OneArg { 2145 return Companion_OneArg_.Create_OneArg_(_dafny.EmptySeq.SetString(), m_Wrappers.Companion_Option_.Default()) 2146 } 2147 2148 func (_this OneArg) Dtor_name() _dafny.Sequence { 2149 return _this.Get_().(OneArg_OneArg).Name 2150 } 2151 2152 func (_this OneArg) Dtor_value() m_Wrappers.Option { 2153 return _this.Get_().(OneArg_OneArg).Value 2154 } 2155 2156 func (_this OneArg) String() string { 2157 switch data := _this.Get_().(type) { 2158 case nil: 2159 return "null" 2160 case OneArg_OneArg: 2161 { 2162 return "GetOpt.OneArg.OneArg" + "(" + _dafny.String(data.Name) + ", " + _dafny.String(data.Value) + ")" 2163 } 2164 default: 2165 { 2166 return "<unexpected>" 2167 } 2168 } 2169 } 2170 2171 func (_this OneArg) Equals(other OneArg) bool { 2172 switch data1 := _this.Get_().(type) { 2173 case OneArg_OneArg: 2174 { 2175 data2, ok := other.Get_().(OneArg_OneArg) 2176 return ok && data1.Name.Equals(data2.Name) && data1.Value.Equals(data2.Value) 2177 } 2178 default: 2179 { 2180 return false // unexpected 2181 } 2182 } 2183 } 2184 2185 func (_this OneArg) EqualsGeneric(other interface{}) bool { 2186 typed, ok := other.(OneArg) 2187 return ok && _this.Equals(typed) 2188 } 2189 2190 func Type_OneArg_() _dafny.TypeDescriptor { 2191 return type_OneArg_{} 2192 } 2193 2194 type type_OneArg_ struct { 2195 } 2196 2197 func (_this type_OneArg_) Default() interface{} { 2198 return Companion_OneArg_.Default() 2199 } 2200 2201 func (_this type_OneArg_) String() string { 2202 return "GetOpt.OneArg" 2203 } 2204 func (_this OneArg) ParentTraits_() []*_dafny.TraitID { 2205 return [](*_dafny.TraitID){} 2206 } 2207 2208 var _ _dafny.TraitOffspring = OneArg{} 2209 2210 // End of datatype OneArg 2211 2212 // Definition of datatype Parsed 2213 type Parsed struct { 2214 Data_Parsed_ 2215 } 2216 2217 func (_this Parsed) Get_() Data_Parsed_ { 2218 return _this.Data_Parsed_ 2219 } 2220 2221 type Data_Parsed_ interface { 2222 isParsed() 2223 } 2224 2225 type CompanionStruct_Parsed_ struct { 2226 } 2227 2228 var Companion_Parsed_ = CompanionStruct_Parsed_{} 2229 2230 type Parsed_Parsed struct { 2231 Command _dafny.Sequence 2232 Params _dafny.Sequence 2233 Files _dafny.Sequence 2234 Subcommand m_Wrappers.Option 2235 } 2236 2237 func (Parsed_Parsed) isParsed() {} 2238 2239 func (CompanionStruct_Parsed_) Create_Parsed_(Command _dafny.Sequence, Params _dafny.Sequence, Files _dafny.Sequence, Subcommand m_Wrappers.Option) Parsed { 2240 return Parsed{Parsed_Parsed{Command, Params, Files, Subcommand}} 2241 } 2242 2243 func (_this Parsed) Is_Parsed() bool { 2244 _, ok := _this.Get_().(Parsed_Parsed) 2245 return ok 2246 } 2247 2248 func (CompanionStruct_Parsed_) Default() Parsed { 2249 return Companion_Parsed_.Create_Parsed_(_dafny.EmptySeq.SetString(), _dafny.EmptySeq, _dafny.EmptySeq, m_Wrappers.Companion_Option_.Default()) 2250 } 2251 2252 func (_this Parsed) Dtor_command() _dafny.Sequence { 2253 return _this.Get_().(Parsed_Parsed).Command 2254 } 2255 2256 func (_this Parsed) Dtor_params() _dafny.Sequence { 2257 return _this.Get_().(Parsed_Parsed).Params 2258 } 2259 2260 func (_this Parsed) Dtor_files() _dafny.Sequence { 2261 return _this.Get_().(Parsed_Parsed).Files 2262 } 2263 2264 func (_this Parsed) Dtor_subcommand() m_Wrappers.Option { 2265 return _this.Get_().(Parsed_Parsed).Subcommand 2266 } 2267 2268 func (_this Parsed) String() string { 2269 switch data := _this.Get_().(type) { 2270 case nil: 2271 return "null" 2272 case Parsed_Parsed: 2273 { 2274 return "GetOpt.Parsed.Parsed" + "(" + _dafny.String(data.Command) + ", " + _dafny.String(data.Params) + ", " + _dafny.String(data.Files) + ", " + _dafny.String(data.Subcommand) + ")" 2275 } 2276 default: 2277 { 2278 return "<unexpected>" 2279 } 2280 } 2281 } 2282 2283 func (_this Parsed) Equals(other Parsed) bool { 2284 switch data1 := _this.Get_().(type) { 2285 case Parsed_Parsed: 2286 { 2287 data2, ok := other.Get_().(Parsed_Parsed) 2288 return ok && data1.Command.Equals(data2.Command) && data1.Params.Equals(data2.Params) && data1.Files.Equals(data2.Files) && data1.Subcommand.Equals(data2.Subcommand) 2289 } 2290 default: 2291 { 2292 return false // unexpected 2293 } 2294 } 2295 } 2296 2297 func (_this Parsed) EqualsGeneric(other interface{}) bool { 2298 typed, ok := other.(Parsed) 2299 return ok && _this.Equals(typed) 2300 } 2301 2302 func Type_Parsed_() _dafny.TypeDescriptor { 2303 return type_Parsed_{} 2304 } 2305 2306 type type_Parsed_ struct { 2307 } 2308 2309 func (_this type_Parsed_) Default() interface{} { 2310 return Companion_Parsed_.Default() 2311 } 2312 2313 func (_this type_Parsed_) String() string { 2314 return "GetOpt.Parsed" 2315 } 2316 func (_this Parsed) ParentTraits_() []*_dafny.TraitID { 2317 return [](*_dafny.TraitID){} 2318 } 2319 2320 var _ _dafny.TraitOffspring = Parsed{} 2321 2322 // End of datatype Parsed 2323 2324 // Definition of class CommandMap 2325 type CommandMap struct { 2326 } 2327 2328 func New_CommandMap_() *CommandMap { 2329 _this := CommandMap{} 2330 2331 return &_this 2332 } 2333 2334 type CompanionStruct_CommandMap_ struct { 2335 } 2336 2337 var Companion_CommandMap_ = CompanionStruct_CommandMap_{} 2338 2339 func (*CommandMap) String() string { 2340 return "GetOpt.CommandMap" 2341 } 2342 2343 // End of class CommandMap 2344 2345 func Type_CommandMap_() _dafny.TypeDescriptor { 2346 return type_CommandMap_{} 2347 } 2348 2349 type type_CommandMap_ struct { 2350 } 2351 2352 func (_this type_CommandMap_) Default() interface{} { 2353 return _dafny.EmptyMap 2354 } 2355 2356 func (_this type_CommandMap_) String() string { 2357 return "GetOpt.CommandMap" 2358 } 2359 func (_this *CompanionStruct_CommandMap_) Is_(__source _dafny.Map) bool { 2360 var _0_x _dafny.Map = (__source) 2361 _ = _0_x 2362 return _dafny.Quantifier((_0_x).Keys().Elements(), true, func(_forall_var_0 _dafny.Sequence) bool { 2363 var _1_k _dafny.Sequence 2364 _1_k = interface{}(_forall_var_0).(_dafny.Sequence) 2365 return !((_0_x).Contains(_1_k)) || (_dafny.Companion_Sequence_.Equal(((_0_x).Get(_1_k).(Options)).Dtor_name(), _1_k)) 2366 }) 2367 } 2368 2369 // Definition of datatype Context 2370 type Context struct { 2371 Data_Context_ 2372 } 2373 2374 func (_this Context) Get_() Data_Context_ { 2375 return _this.Data_Context_ 2376 } 2377 2378 type Data_Context_ interface { 2379 isContext() 2380 } 2381 2382 type CompanionStruct_Context_ struct { 2383 } 2384 2385 var Companion_Context_ = CompanionStruct_Context_{} 2386 2387 type Context_Context struct { 2388 LongMap _dafny.Map 2389 ShortMap _dafny.Map 2390 Inherits _dafny.Sequence 2391 Commands _dafny.Map 2392 Command _dafny.Sequence 2393 } 2394 2395 func (Context_Context) isContext() {} 2396 2397 func (CompanionStruct_Context_) Create_Context_(LongMap _dafny.Map, ShortMap _dafny.Map, Inherits _dafny.Sequence, Commands _dafny.Map, Command _dafny.Sequence) Context { 2398 return Context{Context_Context{LongMap, ShortMap, Inherits, Commands, Command}} 2399 } 2400 2401 func (_this Context) Is_Context() bool { 2402 _, ok := _this.Get_().(Context_Context) 2403 return ok 2404 } 2405 2406 func (CompanionStruct_Context_) Default() Context { 2407 return Companion_Context_.Create_Context_(_dafny.EmptyMap, _dafny.EmptyMap, _dafny.EmptySeq, _dafny.EmptyMap, _dafny.EmptySeq.SetString()) 2408 } 2409 2410 func (_this Context) Dtor_longMap() _dafny.Map { 2411 return _this.Get_().(Context_Context).LongMap 2412 } 2413 2414 func (_this Context) Dtor_shortMap() _dafny.Map { 2415 return _this.Get_().(Context_Context).ShortMap 2416 } 2417 2418 func (_this Context) Dtor_inherits() _dafny.Sequence { 2419 return _this.Get_().(Context_Context).Inherits 2420 } 2421 2422 func (_this Context) Dtor_commands() _dafny.Map { 2423 return _this.Get_().(Context_Context).Commands 2424 } 2425 2426 func (_this Context) Dtor_command() _dafny.Sequence { 2427 return _this.Get_().(Context_Context).Command 2428 } 2429 2430 func (_this Context) String() string { 2431 switch data := _this.Get_().(type) { 2432 case nil: 2433 return "null" 2434 case Context_Context: 2435 { 2436 return "GetOpt.Context.Context" + "(" + _dafny.String(data.LongMap) + ", " + _dafny.String(data.ShortMap) + ", " + _dafny.String(data.Inherits) + ", " + _dafny.String(data.Commands) + ", " + _dafny.String(data.Command) + ")" 2437 } 2438 default: 2439 { 2440 return "<unexpected>" 2441 } 2442 } 2443 } 2444 2445 func (_this Context) Equals(other Context) bool { 2446 switch data1 := _this.Get_().(type) { 2447 case Context_Context: 2448 { 2449 data2, ok := other.Get_().(Context_Context) 2450 return ok && data1.LongMap.Equals(data2.LongMap) && data1.ShortMap.Equals(data2.ShortMap) && data1.Inherits.Equals(data2.Inherits) && data1.Commands.Equals(data2.Commands) && data1.Command.Equals(data2.Command) 2451 } 2452 default: 2453 { 2454 return false // unexpected 2455 } 2456 } 2457 } 2458 2459 func (_this Context) EqualsGeneric(other interface{}) bool { 2460 typed, ok := other.(Context) 2461 return ok && _this.Equals(typed) 2462 } 2463 2464 func Type_Context_() _dafny.TypeDescriptor { 2465 return type_Context_{} 2466 } 2467 2468 type type_Context_ struct { 2469 } 2470 2471 func (_this type_Context_) Default() interface{} { 2472 return Companion_Context_.Default() 2473 } 2474 2475 func (_this type_Context_) String() string { 2476 return "GetOpt.Context" 2477 } 2478 func (_this Context) ParentTraits_() []*_dafny.TraitID { 2479 return [](*_dafny.TraitID){} 2480 } 2481 2482 var _ _dafny.TraitOffspring = Context{} 2483 2484 // End of datatype Context