arg.go raw

   1  package knowledge
   2  
   3  var Args = map[string]int{
   4  	"(*sync.Pool).Put.x":                     0,
   5  	"(*text/template.Template).Parse.text":   0,
   6  	"(io.Seeker).Seek.offset":                0,
   7  	"(time.Time).Sub.u":                      0,
   8  	"append.elems":                           1,
   9  	"append.slice":                           0,
  10  	"bytes.Equal.a":                          0,
  11  	"bytes.Equal.b":                          1,
  12  	"encoding/ascii85.Encode.dst":            0,
  13  	"encoding/ascii85.Encode.src":            1,
  14  	"(*encoding/base32.Encoding).Encode.dst": 0,
  15  	"(*encoding/base32.Encoding).Encode.src": 1,
  16  	"(*encoding/base64.Encoding).Encode.dst": 0,
  17  	"(*encoding/base64.Encoding).Encode.src": 1,
  18  	"encoding/binary.Write.data":             2,
  19  	"encoding/hex.Encode.dst":                0,
  20  	"encoding/hex.Encode.src":                1,
  21  	"(*encoding/json.Decoder).Decode.v":      0,
  22  	"(*encoding/json.Encoder).Encode.v":      0,
  23  	"(*encoding/xml.Decoder).Decode.v":       0,
  24  	"(*encoding/xml.Encoder).Encode.v":       0,
  25  	"errors.New.text":                        0,
  26  	"fmt.Fprintf.format":                     1,
  27  	"fmt.Printf.format":                      0,
  28  	"fmt.Sprintf.a[0]":                       1,
  29  	"fmt.Sprintf.format":                     0,
  30  	"json.Marshal.v":                         0,
  31  	"json.Unmarshal.v":                       1,
  32  	"len.v":                                  0,
  33  	"make.size[0]":                           1,
  34  	"make.size[1]":                           2,
  35  	"make.t":                                 0,
  36  	"net/url.Parse.rawurl":                   0,
  37  	"os.OpenFile.flag":                       1,
  38  	"os/exec.Command.name":                   0,
  39  	"os/signal.Notify.c":                     0,
  40  	"regexp.Compile.expr":                    0,
  41  	"runtime.SetFinalizer.finalizer":         1,
  42  	"runtime.SetFinalizer.obj":               0,
  43  	"sort.Sort.data":                         0,
  44  	"strconv.AppendFloat.bitSize":            4,
  45  	"strconv.AppendFloat.fmt":                2,
  46  	"strconv.AppendInt.base":                 2,
  47  	"strconv.AppendUint.base":                2,
  48  	"strconv.FormatComplex.bitSize":          3,
  49  	"strconv.FormatComplex.fmt":              1,
  50  	"strconv.FormatFloat.bitSize":            3,
  51  	"strconv.FormatFloat.fmt":                1,
  52  	"strconv.FormatInt.base":                 1,
  53  	"strconv.FormatUint.base":                1,
  54  	"strconv.ParseComplex.bitSize":           1,
  55  	"strconv.ParseFloat.bitSize":             1,
  56  	"strconv.ParseInt.base":                  1,
  57  	"strconv.ParseInt.bitSize":               2,
  58  	"strconv.ParseUint.base":                 1,
  59  	"strconv.ParseUint.bitSize":              2,
  60  	"time.Parse.layout":                      0,
  61  	"time.Sleep.d":                           0,
  62  	"xml.Marshal.v":                          0,
  63  	"xml.Unmarshal.v":                        1,
  64  }
  65  
  66  // Arg turns the name of an argument into an argument index.
  67  // Indices are zero-based and method receivers do not count as arguments.
  68  //
  69  // Arg refers to a manually compiled mapping (see the Args variable.)
  70  // Modify the knowledge package to add new arguments.
  71  func Arg(name string) int {
  72  	n, ok := Args[name]
  73  	if !ok {
  74  		panic("unknown argument " + name)
  75  	}
  76  	return n
  77  }
  78