• Home
  • Raw
  • Download

Lines Matching refs:g

80 	Init(g *Generator)
343 GenerateAlias(g *Generator, filename string, pkg GoPackageName)
359 func (ms *messageSymbol) GenerateAlias(g *Generator, filename string, pkg GoPackageName) {
360 g.P("// ", ms.sym, " from public import ", filename)
361 g.P("type ", ms.sym, " = ", pkg, ".", ms.sym)
363 g.P("type ", name, " = ", pkg, ".", name)
372 func (es enumSymbol) GenerateAlias(g *Generator, filename string, pkg GoPackageName) {
374 g.P("// ", s, " from public import ", filename)
375 g.P("type ", s, " = ", pkg, ".", s)
376 g.P("var ", s, "_name = ", pkg, ".", s, "_name")
377 g.P("var ", s, "_value = ", pkg, ".", s, "_value")
386 func (cs constOrVarSymbol) GenerateAlias(g *Generator, filename string, pkg GoPackageName) {
391 g.P(cs.typ, " ", cs.sym, " = ", v)
442 g := new(Generator)
443 g.Buffer = new(bytes.Buffer)
444 g.Request = new(plugin.CodeGeneratorRequest)
445 g.Response = new(plugin.CodeGeneratorResponse)
446 return g
450 func (g *Generator) Error(err error, msgs ...string) {
457 func (g *Generator) Fail(msgs ...string) {
466 func (g *Generator) CommandLineParameters(parameter string) {
467 g.Param = make(map[string]string)
470 g.Param[p] = ""
472 g.Param[p[0:i]] = p[i+1:]
476 g.ImportMap = make(map[string]string)
478 for k, v := range g.Param {
481 g.ImportPrefix = v
483 g.PackageImportPath = v
487 g.pathType = pathTypeImport
489 g.pathType = pathTypeSourceRelative
491 g.Fail(fmt.Sprintf(`Unknown path type %q: want "import" or "source_relative".`, v))
497 g.annotateCode = true
501 g.ImportMap[k[1:]] = v
524 func (g *Generator) DefaultPackageName(obj Object) string {
526 if importPath == g.outputImportPath {
529 return string(g.GoPackageName(importPath)) + "."
533 func (g *Generator) GoPackageName(importPath GoImportPath) GoPackageName {
534 if name, ok := g.packageNames[importPath]; ok {
538 for i, orig := 1, name; g.usedPackageNames[name] || isGoPredeclaredIdentifier[string(name)]; i++ {
541 g.packageNames[importPath] = name
542 g.usedPackageNames[name] = true
548 func (g *Generator) AddImport(importPath GoImportPath) GoPackageName {
549 g.addedImports[importPath] = true
550 return g.GoPackageName(importPath)
655 func (g *Generator) defaultGoPackage() GoPackageName {
656 p := g.PackageImportPath
666 func (g *Generator) SetPackageNames() {
667 g.outputImportPath = g.genFiles[0].importPath
670 for _, f := range g.genFiles {
675 for _, f := range g.genFiles {
686 } else if p := g.defaultGoPackage(); p != "" {
702 for _, f := range g.genFiles[1:] {
703 if a, b := g.genFiles[0].importPath, f.importPath; a != b {
704 g.Fail(fmt.Sprintf("inconsistent package import paths: %v, %v", a, b))
706 if a, b := g.genFiles[0].packageName, f.packageName; a != b {
707 g.Fail(fmt.Sprintf("inconsistent package names: %v, %v", a, b))
713 g.Pkg = map[string]string{
723 func (g *Generator) WrapTypes() {
724 g.allFiles = make([]*FileDescriptor, 0, len(g.Request.ProtoFile))
725 g.allFilesByName = make(map[string]*FileDescriptor, len(g.allFiles))
727 for _, n := range g.Request.FileToGenerate {
730 for _, f := range g.Request.ProtoFile {
737 if substitution, ok := g.ImportMap[f.GetName()]; ok {
742 } else if genFileNames[f.GetName()] && g.PackageImportPath != "" {
747 fd.importPath = GoImportPath(g.PackageImportPath)
761 g.buildNestedDescriptors(fd.desc)
763 g.buildNestedEnums(fd.desc, fd.enum)
766 g.allFiles = append(g.allFiles, fd)
767 g.allFilesByName[f.GetName()] = fd
769 for _, fd := range g.allFiles {
770 fd.imp = wrapImported(fd, g)
773 g.genFiles = make([]*FileDescriptor, 0, len(g.Request.FileToGenerate))
774 for _, fileName := range g.Request.FileToGenerate {
775 fd := g.allFilesByName[fileName]
777 g.Fail("could not find file named", fileName)
779 g.genFiles = append(g.genFiles, fd)
784 func (g *Generator) buildNestedDescriptors(descs []*Descriptor) {
793 g.Fail("internal error: nesting failure for", desc.GetName())
799 func (g *Generator) buildNestedEnums(descs []*Descriptor, enums []*EnumDescriptor) {
808 g.Fail("internal error: enum nesting failure for", desc.GetName())
912 func wrapImported(file *FileDescriptor, g *Generator) (sl []*ImportedDescriptor) {
914 df := g.fileByName(file.Dependency[index])
948 func (g *Generator) BuildTypeNameMap() {
949 g.typeNameToObject = make(map[string]Object)
950 for _, f := range g.allFiles {
960 g.typeNameToObject[name] = enum
964 g.typeNameToObject[name] = desc
971 func (g *Generator) ObjectNamed(typeName string) Object {
972 o, ok := g.typeNameToObject[typeName]
974 g.Fail("can't find object with type", typeName)
993 func (g *Generator) printAtom(v interface{}) {
996 g.WriteString(v)
998 g.WriteString(*v)
1000 fmt.Fprint(g, v)
1002 fmt.Fprint(g, *v)
1004 fmt.Fprint(g, v)
1006 fmt.Fprint(g, *v)
1008 fmt.Fprint(g, *v)
1010 fmt.Fprint(g, v)
1012 fmt.Fprint(g, *v)
1014 g.WriteString(string(v))
1016 g.WriteString(strconv.Quote(string(v)))
1018 g.Fail(fmt.Sprintf("unknown type in printer: %T", v))
1026 func (g *Generator) P(str ...interface{}) {
1027 if !g.writeOutput {
1030 g.WriteString(g.indent)
1034 begin := int32(g.Len())
1036 g.printAtom(v)
1038 if g.annotateCode {
1039 end := int32(g.Len())
1044 g.Fail("could not parse proto AST path: ", err.Error())
1048 g.annotations = append(g.annotations, &descriptor.GeneratedCodeInfo_Annotation{
1056 g.printAtom(v)
1059 g.WriteByte('\n')
1064 func (g *Generator) addInitf(stmt string, a ...interface{}) {
1065 g.init = append(g.init, fmt.Sprintf(stmt, a...))
1069 func (g *Generator) In() { g.indent += "\t" }
1072 func (g *Generator) Out() {
1073 if len(g.indent) > 0 {
1074 g.indent = g.indent[1:]
1079 func (g *Generator) GenerateAllFiles() {
1082 p.Init(g)
1087 genFileMap := make(map[*FileDescriptor]bool, len(g.genFiles))
1088 for _, file := range g.genFiles {
1091 for _, file := range g.allFiles {
1092 g.Reset()
1093 g.annotations = nil
1094 g.writeOutput = genFileMap[file]
1095 g.generate(file)
1096 if !g.writeOutput {
1099 fname := file.goFileName(g.pathType)
1100 g.Response.File = append(g.Response.File, &plugin.CodeGeneratorResponse_File{
1102 Content: proto.String(g.String()),
1104 if g.annotateCode {
1107 g.Response.File = append(g.Response.File, &plugin.CodeGeneratorResponse_File{
1108 Name: proto.String(file.goFileName(g.pathType) + ".meta"),
1109 …Content: proto.String(proto.CompactTextString(&descriptor.GeneratedCodeInfo{Annotation: g.annotati…
1116 func (g *Generator) runPlugins(file *FileDescriptor) {
1124 func (g *Generator) generate(file *FileDescriptor) {
1125 g.file = file
1126 g.usedPackages = make(map[GoImportPath]bool)
1127 g.packageNames = make(map[GoImportPath]GoPackageName)
1128 g.usedPackageNames = make(map[GoPackageName]bool)
1129 g.addedImports = make(map[GoImportPath]bool)
1131 g.usedPackageNames[name] = true
1134 g.P("// This is a compile-time assertion to ensure that this generated file")
1135 g.P("// is compatible with the proto package it is being compiled against.")
1136 g.P("// A compilation error at this line likely means your copy of the")
1137 g.P("// proto package needs to be updated.")
1138g.P("const _ = ", g.Pkg["proto"], ".ProtoPackageIsVersion", generatedCodeVersion, " // please upgr…
1139 g.P()
1141 for _, td := range g.file.imp {
1142 g.generateImported(td)
1144 for _, enum := range g.file.enum {
1145 g.generateEnum(enum)
1147 for _, desc := range g.file.desc {
1152 g.generateMessage(desc)
1154 for _, ext := range g.file.ext {
1155 g.generateExtension(ext)
1157 g.generateInitFunction()
1158 g.generateFileDescriptor(file)
1161 g.runPlugins(file)
1164 rem := g.Buffer
1165 remAnno := g.annotations
1166 g.Buffer = new(bytes.Buffer)
1167 g.annotations = nil
1168 g.generateHeader()
1169 g.generateImports()
1170 if !g.writeOutput {
1175 *anno.Begin += int32(g.Len())
1176 *anno.End += int32(g.Len())
1177 g.annotations = append(g.annotations, anno)
1179 g.Write(rem.Bytes())
1183 original := g.Bytes()
1184 if g.annotateCode {
1198 g.Fail("bad Go source code was generated:", err.Error(), "\n"+src.String())
1201 g.Reset()
1202 …err = (&printer.Config{Mode: printer.TabIndent | printer.UseSpaces, Tabwidth: 8}).Fprint(g, fset, …
1204 g.Fail("generated Go source code could not be reformatted:", err.Error())
1206 if g.annotateCode {
1207 m, err := remap.Compute(original, g.Bytes())
1209g.Fail("formatted generated Go source code could not be mapped back to the original code:", err.Er…
1211 for _, anno := range g.annotations {
1214g.Fail("span in formatted generated Go source code could not be mapped back to the original code")
1223 func (g *Generator) generateHeader() {
1224 g.P("// Code generated by protoc-gen-go. DO NOT EDIT.")
1225 if g.file.GetOptions().GetDeprecated() {
1226 g.P("// ", g.file.Name, " is a deprecated file.")
1228 g.P("// source: ", g.file.Name)
1230 g.P()
1231 g.PrintComments(strconv.Itoa(packagePath))
1232 g.P()
1233 g.P("package ", g.file.packageName)
1234 g.P()
1245 func (g *Generator) PrintComments(path string) bool {
1246 if !g.writeOutput {
1249 if c, ok := g.makeComments(path); ok {
1250 g.P(c)
1257 func (g *Generator) makeComments(path string) (string, bool) {
1258 loc, ok := g.file.comments[path]
1271 func (g *Generator) fileByName(filename string) *FileDescriptor {
1272 return g.allFilesByName[filename]
1276 func (g *Generator) weak(i int32) bool {
1277 for _, j := range g.file.WeakDependency {
1286 func (g *Generator) generateImports() {
1288 for i, s := range g.file.Dependency {
1289 fd := g.fileByName(s)
1292 if importPath == g.file.importPath {
1296 if g.weak(int32(i)) {
1306 packageName := g.GoPackageName(importPath)
1307 if _, ok := g.usedPackages[importPath]; !ok {
1312 for importPath := range g.addedImports {
1313 imports[importPath] = g.GoPackageName(importPath)
1318 g.P("import (")
1319 g.P(g.Pkg["fmt"] + ` "fmt"`)
1320 g.P(g.Pkg["math"] + ` "math"`)
1321 g.P(g.Pkg["proto"]+" ", GoImportPath(g.ImportPrefix)+"github.com/golang/protobuf/proto")
1323 g.P(packageName, " ", GoImportPath(g.ImportPrefix)+importPath)
1325 g.P(")")
1326 g.P()
1329 p.GenerateImports(g.file)
1330 g.P()
1332 g.P("// Reference imports to suppress errors if they are not otherwise used.")
1333 g.P("var _ = ", g.Pkg["proto"], ".Marshal")
1334 g.P("var _ = ", g.Pkg["fmt"], ".Errorf")
1335 g.P("var _ = ", g.Pkg["math"], ".Inf")
1336 g.P()
1339 func (g *Generator) generateImported(id *ImportedDescriptor) {
1342 if df.importPath == g.file.importPath {
1347 g.Fail(fmt.Sprintf("%s: public imports require at least go1.9", filename))
1349 g.usedPackages[df.importPath] = true
1352 sym.GenerateAlias(g, filename, g.GoPackageName(df.importPath))
1355 g.P()
1359 func (g *Generator) generateEnum(enum *EnumDescriptor) {
1370 g.PrintComments(enum.path)
1371 g.P("type ", Annotate(enum.file, enum.path, ccTypeName), " int32", deprecatedEnum)
1372 g.file.addExport(enum, enumSymbol{ccTypeName, enum.proto3()})
1373 g.P("const (")
1376 g.PrintComments(etorPath)
1384 g.P(Annotate(enum.file, etorPath, name), " ", ccTypeName, " = ", e.Number, " ", deprecatedValue)
1385 g.file.addExport(enum, constOrVarSymbol{name, "const", ccTypeName})
1387 g.P(")")
1388 g.P()
1389 g.P("var ", ccTypeName, "_name = map[int32]string{")
1396 g.P(duplicate, e.Number, ": ", strconv.Quote(*e.Name), ",")
1399 g.P("}")
1400 g.P()
1401 g.P("var ", ccTypeName, "_value = map[string]int32{")
1403 g.P(strconv.Quote(*e.Name), ": ", e.Number, ",")
1405 g.P("}")
1406 g.P()
1409 g.P("func (x ", ccTypeName, ") Enum() *", ccTypeName, " {")
1410 g.P("p := new(", ccTypeName, ")")
1411 g.P("*p = x")
1412 g.P("return p")
1413 g.P("}")
1414 g.P()
1417 g.P("func (x ", ccTypeName, ") String() string {")
1418 g.P("return ", g.Pkg["proto"], ".EnumName(", ccTypeName, "_name, int32(x))")
1419 g.P("}")
1420 g.P()
1423 g.P("func (x *", ccTypeName, ") UnmarshalJSON(data []byte) error {")
1424g.P("value, err := ", g.Pkg["proto"], ".UnmarshalJSONEnum(", ccTypeName, `_value, data, "`, ccType…
1425 g.P("if err != nil {")
1426 g.P("return err")
1427 g.P("}")
1428 g.P("*x = ", ccTypeName, "(value)")
1429 g.P("return nil")
1430 g.P("}")
1431 g.P()
1440 g.P("func (", ccTypeName, ") EnumDescriptor() ([]byte, []int) {")
1441 g.P("return ", g.file.VarName(), ", []int{", strings.Join(indexes, ", "), "}")
1442 g.P("}")
1443 g.P()
1445 g.P("func (", ccTypeName, `) XXX_WellKnownType() string { return "`, enum.GetName(), `" }`)
1446 g.P()
1449 g.generateEnumRegistration(enum)
1465 func (g *Generator) goTag(message *Descriptor, field *descriptor.FieldDescriptorProto, wiretype str…
1491 obj := g.ObjectNamed(field.GetTypeName())
1503 g.Fail("unknown enum type", CamelCaseSlice(obj.TypeName()))
1525 obj := g.ObjectNamed(field.GetTypeName())
1596 func (g *Generator) TypeName(obj Object) string {
1597 return g.DefaultPackageName(obj) + CamelCaseSlice(obj.TypeName())
1601 func (g *Generator) GoType(message *Descriptor, field *descriptor.FieldDescriptorProto) (typ string…
1625 desc := g.ObjectNamed(field.GetTypeName())
1626 typ, wire = "*"+g.TypeName(desc), "group"
1628 desc := g.ObjectNamed(field.GetTypeName())
1629 typ, wire = "*"+g.TypeName(desc), "bytes"
1633 desc := g.ObjectNamed(field.GetTypeName())
1634 typ, wire = g.TypeName(desc), "varint"
1644 g.Fail("unknown type for", field.GetName())
1658 func (g *Generator) RecordTypeUse(t string) {
1659 if _, ok := g.typeNameToObject[t]; !ok {
1662 importPath := g.ObjectNamed(t).GoImportPath()
1663 if importPath == g.outputImportPath {
1667 g.AddImport(importPath)
1668 g.usedPackages[importPath] = true
1709 func (g *Generator) getterDefault(field *descriptor.FieldDescriptorProto, goMessageType string) str…
1714 defaultConstant := g.defaultConstantName(goMessageType, field.GetName())
1728 obj := g.ObjectNamed(field.GetTypeName())
1744 return g.DefaultPackageName(obj) + enum.prefix() + first
1752 func (g *Generator) defaultConstantName(goMessageType, protoFieldName string) string {
1806 func (f *simpleField) decl(g *Generator, mc *msgCtx) {
1807g.P(f.comment, Annotate(mc.message.file, f.fullPath, f.goName), "\t", f.goType, "\t`", f.tags, "`"…
1811 func (f *simpleField) getter(g *Generator, mc *msgCtx) {
1819 g.P(f.deprecated)
1821g.P("func (m *", mc.goName, ") ", Annotate(mc.message.file, f.fullPath, f.getterName), "() "+tname…
1823 g.P("if m != nil {")
1824 g.P("return m." + f.goName)
1825 g.P("}")
1826 g.P("return nil")
1827 g.P("}")
1828 g.P()
1832 g.P("if m != nil {")
1834 g.P("if m != nil && m." + f.goName + " != nil {")
1836 g.P("return " + star + "m." + f.goName)
1837 g.P("}")
1838 g.P("return ", f.getterDef)
1839 g.P("}")
1840 g.P()
1844 func (f *simpleField) setter(g *Generator, mc *msgCtx) {
1877 func (f *oneofSubField) typedNil(g *Generator) {
1878 g.P("(*", f.oneofTypeName, ")(nil),")
1905 func (f *oneofField) decl(g *Generator, mc *msgCtx) {
1910 g.P(comment, Annotate(mc.message.file, f.fullPath, f.goName), " ", f.goType, " `", f.tags, "`")
1915 func (f *oneofField) getter(g *Generator, mc *msgCtx) {
1917 g.P("type ", f.goType, " interface {")
1918 g.P(f.goType, "()")
1919 g.P("}")
1920 g.P()
1923 g.P("type ", Annotate(mc.message.file, sf.fullPath, sf.oneofTypeName), " struct {")
1924 g.P(Annotate(mc.message.file, sf.fullPath, sf.goName), " ", sf.goType, " `", sf.tags, "`")
1925 g.P("}")
1926 g.P()
1929 g.P("func (*", sf.oneofTypeName, ") ", f.goType, "() {}")
1930 g.P()
1933g.P("func (m *", mc.goName, ") ", Annotate(mc.message.file, f.fullPath, f.getterName), "() ", f.go…
1934 g.P("if m != nil { return m.", f.goName, " }")
1935 g.P("return nil")
1936 g.P("}")
1937 g.P()
1941 g.P(sf.deprecated)
1943g.P("func (m *", mc.goName, ") ", Annotate(mc.message.file, sf.fullPath, sf.getterName), "() "+sf.…
1944 g.P("if x, ok := m.", f.getterName, "().(*", sf.oneofTypeName, "); ok {")
1945 g.P("return x.", sf.goName)
1946 g.P("}")
1947 g.P("return ", sf.getterDef)
1948 g.P("}")
1949 g.P()
1954 func (f *oneofField) setter(g *Generator, mc *msgCtx) {
1960 decl(g *Generator, mc *msgCtx) // print declaration within the struct
1961 getter(g *Generator, mc *msgCtx) // print getter
1962 setter(g *Generator, mc *msgCtx) // print setter if applicable
1976 func (g *Generator) generateDefaultConstants(mc *msgCtx, topLevelFields []topLevelField) {
1993 fieldname := g.defaultConstantName(mc.goName, df.getProtoName())
2030 obj := g.ObjectNamed(df.getProtoTypeName())
2042 def = g.DefaultPackageName(obj) + enum.prefix() + def
2044 g.P(kind, fieldname, " ", typename, " = ", def)
2045 g.file.addExport(mc.message, constOrVarSymbol{fieldname, kind, ""})
2047 g.P()
2051 func (g *Generator) generateInternalStructFields(mc *msgCtx, topLevelFields []topLevelField) {
2052 g.P("XXX_NoUnkeyedLiteral\tstruct{} `json:\"-\"`") // prevent unkeyed struct literals
2058 g.P(g.Pkg["proto"], ".XXX_InternalExtensions `", messageset, "json:\"-\"`")
2060 g.P("XXX_unrecognized\t[]byte `json:\"-\"`")
2061 g.P("XXX_sizecache\tint32 `json:\"-\"`")
2066 func (g *Generator) generateOneofFuncs(mc *msgCtx, topLevelFields []topLevelField) {
2078 g.P("// XXX_OneofWrappers is for the internal use of the proto package.")
2079 g.P("func (*", mc.goName, ") XXX_OneofWrappers() []interface{} {")
2080 g.P("return []interface{}{")
2083 sf.typedNil(g)
2086 g.P("}")
2087 g.P("}")
2088 g.P()
2092 func (g *Generator) generateMessageStruct(mc *msgCtx, topLevelFields []topLevelField) {
2093 comments := g.PrintComments(mc.message.path)
2100 g.P("//")
2102 g.P(deprecationComment)
2105 g.P("type ", Annotate(mc.message.file, mc.message.path, mc.goName), " struct {")
2107 pf.decl(g, mc)
2109 g.generateInternalStructFields(mc, topLevelFields)
2110 g.P("}")
2114 func (g *Generator) generateGetters(mc *msgCtx, topLevelFields []topLevelField) {
2116 pf.getter(g, mc)
2121 func (g *Generator) generateSetters(mc *msgCtx, topLevelFields []topLevelField) {
2123 pf.setter(g, mc)
2128 func (g *Generator) generateCommonMethods(mc *msgCtx) {
2130 g.P("func (m *", mc.goName, ") Reset() { *m = ", mc.goName, "{} }")
2131g.P("func (m *", mc.goName, ") String() string { return ", g.Pkg["proto"], ".CompactTextString(m) …
2132 g.P("func (*", mc.goName, ") ProtoMessage() {}")
2137 g.P("func (*", mc.goName, ") Descriptor() ([]byte, []int) {")
2138 g.P("return ", g.file.VarName(), ", []int{", strings.Join(indexes, ", "), "}")
2139 g.P("}")
2140 g.P()
2144 g.P("func (*", mc.goName, `) XXX_WellKnownType() string { return "`, mc.message.GetName(), `" }`)
2145 g.P()
2150 g.P()
2151 g.P("var extRange_", mc.goName, " = []", g.Pkg["proto"], ".ExtensionRange{")
2154 g.P("{Start: ", r.Start, ", End: ", end, "},")
2156 g.P("}")
2157 g.P("func (*", mc.goName, ") ExtensionRangeArray() []", g.Pkg["proto"], ".ExtensionRange {")
2158 g.P("return extRange_", mc.goName)
2159 g.P("}")
2160 g.P()
2170 g.P("func (m *", mc.goName, ") XXX_Unmarshal(b []byte) error {")
2171 g.P("return xxx_messageInfo_", mc.goName, ".Unmarshal(m, b)")
2172 g.P("}")
2174 g.P("func (m *", mc.goName, ") XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {")
2175 g.P("return xxx_messageInfo_", mc.goName, ".Marshal(b, m, deterministic)")
2176 g.P("}")
2178 g.P("func (m *", mc.goName, ") XXX_Merge(src ", g.Pkg["proto"], ".Message) {")
2179 g.P("xxx_messageInfo_", mc.goName, ".Merge(m, src)")
2180 g.P("}")
2182g.P("func (m *", mc.goName, ") XXX_Size() int {") // avoid name clash with "Size" field in some me…
2183 g.P("return xxx_messageInfo_", mc.goName, ".Size(m)")
2184 g.P("}")
2186 g.P("func (m *", mc.goName, ") XXX_DiscardUnknown() {")
2187 g.P("xxx_messageInfo_", mc.goName, ".DiscardUnknown(m)")
2188 g.P("}")
2190 g.P("var xxx_messageInfo_", mc.goName, " ", g.Pkg["proto"], ".InternalMessageInfo")
2191 g.P()
2195 func (g *Generator) generateMessage(message *Descriptor) {
2241 typename, wiretype := g.GoType(message, field)
2243 …tag := fmt.Sprintf("protobuf:%s json:%q", g.goTag(message, field, wiretype), jsonName+",omitempty")
2254 c, ok := g.makeComments(oneofFullPath)
2280 desc := g.ObjectNamed(field.GetTypeName())
2284 keyType, keyWire := g.GoType(d, keyField)
2285 valType, valWire := g.GoType(d, valField)
2286 keyTag, valTag := g.goTag(d, keyField, keyWire), g.goTag(d, valField, valWire)
2295 g.RecordTypeUse(valField.GetTypeName())
2297 g.RecordTypeUse(valField.GetTypeName())
2314 dvalue := g.getterDefault(field, goTypeName)
2341 tag := "protobuf:" + g.goTag(message, field, wiretype)
2360 g.RecordTypeUse(field.GetTypeName())
2365 c, ok := g.makeComments(fieldFullPath)
2388 g.RecordTypeUse(field.GetTypeName())
2396 g.generateMessageStruct(mc, topLevelFields)
2397 g.P()
2398 g.generateCommonMethods(mc)
2399 g.P()
2400 g.generateDefaultConstants(mc, topLevelFields)
2401 g.P()
2402 g.generateGetters(mc, topLevelFields)
2403 g.P()
2404 g.generateSetters(mc, topLevelFields)
2405 g.P()
2406 g.generateOneofFuncs(mc, topLevelFields)
2407 g.P()
2425 g.file.addExport(message, ms)
2428 g.generateExtension(ext)
2432 if g.file.Package != nil {
2433 fullName = *g.file.Package + "." + fullName
2436 g.addInitf("%s.RegisterType((*%s)(nil), %q)", g.Pkg["proto"], goTypeName, fullName)
2440 g.addInitf("%s.RegisterMapType((%s)(nil), %q)", g.Pkg["proto"], mapFieldTypes[k], fullName)
2522 func (g *Generator) generateExtension(ext *ExtensionDescriptor) {
2525 extObj := g.ObjectNamed(*ext.Extendee)
2534 extendedType := "*" + g.TypeName(extObj) // always use the original
2536 fieldType, wireType := g.GoType(ext.parent, field)
2537 tag := g.goTag(extDesc, field, wireType)
2538 g.RecordTypeUse(*ext.Extendee)
2541 g.RecordTypeUse(*n)
2561 if g.file.Package != nil {
2562 extName = *g.file.Package + "." + extName
2565 g.P("var ", ccTypeName, " = &", g.Pkg["proto"], ".ExtensionDesc{")
2566 g.P("ExtendedType: (", extendedType, ")(nil),")
2567 g.P("ExtensionType: (", fieldType, ")(nil),")
2568 g.P("Field: ", field.Number, ",")
2569 g.P(`Name: "`, extName, `",`)
2570 g.P("Tag: ", tag, ",")
2571 g.P(`Filename: "`, g.file.GetName(), `",`)
2573 g.P("}")
2574 g.P()
2576 g.addInitf("%s.RegisterExtension(%s)", g.Pkg["proto"], ext.DescName())
2578 g.file.addExport(ext, constOrVarSymbol{ccTypeName, "var", ""})
2581 func (g *Generator) generateInitFunction() {
2582 if len(g.init) == 0 {
2585 g.P("func init() {")
2586 for _, l := range g.init {
2587 g.P(l)
2589 g.P("}")
2590 g.init = nil
2593 func (g *Generator) generateFileDescriptor(file *FileDescriptor) {
2601 g.Fail(err.Error())
2611 g.P()
2612 g.P("func init() { ", g.Pkg["proto"], ".RegisterFile(", strconv.Quote(*file.Name), ", ", v, ") }")
2613 g.P("var ", v, " = []byte{")
2614 g.P("// ", len(b), " bytes of a gzipped FileDescriptorProto")
2625 g.P(s)
2629 g.P("}")
2632 func (g *Generator) generateEnumRegistration(enum *EnumDescriptor) {
2642g.addInitf("%s.RegisterEnum(%q, %[3]s_name, %[3]s_value)", g.Pkg["proto"], pkg+ccTypeName, ccTypeN…