[fidlgen_cpp] Privatize internal types & methods
This makes a lot of types and methods that are only used when
constructing the IR for the C++ fidlgen backends private.
Change-Id: I49d486b192bfa0cbff19408955025ea7e1e42c04
Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/514783
Fuchsia-Auto-Submit: Ian McKellar <ianloic@google.com>
Commit-Queue: Auto-Submit <auto-submit@fuchsia-infra.iam.gserviceaccount.com>
Reviewed-by: Yifei Teng <yifeit@google.com>
diff --git a/tools/fidl/lib/fidlgen_cpp/bits.go b/tools/fidl/lib/fidlgen_cpp/bits.go
index 989e905..b60f20a 100644
--- a/tools/fidl/lib/fidlgen_cpp/bits.go
+++ b/tools/fidl/lib/fidlgen_cpp/bits.go
@@ -11,10 +11,10 @@
type Bits struct {
Attributes
fidlgen.Strictness
- NameVariants
- Type NameVariants
+ nameVariants
+ Type nameVariants
Mask string
- MaskName NameVariants
+ MaskName nameVariants
Members []BitsMember
}
@@ -23,6 +23,7 @@
}
var _ Kinded = (*Bits)(nil)
+var _ namespaced = (*Bits)(nil)
type BitsMember struct {
Attributes
@@ -35,10 +36,10 @@
r := Bits{
Attributes: Attributes{val.Attributes},
Strictness: val.Strictness,
- NameVariants: name,
- Type: c.compileType(val.Type).NameVariants,
+ nameVariants: name,
+ Type: c.compileType(val.Type).nameVariants,
Mask: val.Mask,
- MaskName: name.AppendName("Mask"),
+ MaskName: name.appendName("Mask"),
}
for _, v := range val.Members {
r.Members = append(r.Members, BitsMember{
diff --git a/tools/fidl/lib/fidlgen_cpp/const.go b/tools/fidl/lib/fidlgen_cpp/const.go
index 0738a16..6fc34cf 100644
--- a/tools/fidl/lib/fidlgen_cpp/const.go
+++ b/tools/fidl/lib/fidlgen_cpp/const.go
@@ -61,8 +61,8 @@
return ConstantValue{Natural: lit, Wire: lit}
case fidlgen.BinaryOperator:
return ConstantValue{
- Natural: fmt.Sprintf("static_cast<%s>(%s)", t.NameVariants.Natural, val.Value),
- Wire: fmt.Sprintf("static_cast<%s>(%s)", t.NameVariants.Wire, val.Value),
+ Natural: fmt.Sprintf("static_cast<%s>(%s)", t.nameVariants.Natural, val.Value),
+ Wire: fmt.Sprintf("static_cast<%s>(%s)", t.nameVariants.Wire, val.Value),
}
// return ConstantValue{Natural: naturalVal, Wire: wireVal}
default:
@@ -72,7 +72,7 @@
type Const struct {
Attributes
- NameVariants
+ nameVariants
Extern bool
Decorator string
Type Type
@@ -84,18 +84,19 @@
}
var _ Kinded = (*Const)(nil)
+var _ namespaced = (*Const)(nil)
func (c *compiler) compileConst(val fidlgen.Const) Const {
n := c.compileNameVariants(val.Name)
v := Const{
Attributes: Attributes{val.Attributes},
- NameVariants: n,
+ nameVariants: n,
}
if val.Type.Kind == fidlgen.StringType {
v.Extern = true
v.Decorator = "const"
v.Type = Type{
- NameVariants: PrimitiveNameVariants("char*"),
+ nameVariants: primitiveNameVariants("char*"),
}
v.Value = c.compileConstant(val.Value, nil, val.Type)
} else {
diff --git a/tools/fidl/lib/fidlgen_cpp/enum.go b/tools/fidl/lib/fidlgen_cpp/enum.go
index 5faa403..475a808 100644
--- a/tools/fidl/lib/fidlgen_cpp/enum.go
+++ b/tools/fidl/lib/fidlgen_cpp/enum.go
@@ -11,9 +11,9 @@
type Enum struct {
Attributes
fidlgen.Strictness
- NameVariants
+ nameVariants
Enum fidlgen.Enum
- Type NameVariants
+ Type nameVariants
Members []EnumMember
}
@@ -22,6 +22,7 @@
}
var _ Kinded = (*Enum)(nil)
+var _ namespaced = (*Enum)(nil)
func (e Enum) UnknownValueForTmpl() interface{} {
return e.Enum.UnknownValueForTmpl()
@@ -39,7 +40,7 @@
r := Enum{
Attributes: Attributes{val.Attributes},
Strictness: val.Strictness,
- NameVariants: name,
+ nameVariants: name,
Enum: val,
Type: NameVariantsForPrimitive(val.Type),
}
diff --git a/tools/fidl/lib/fidlgen_cpp/ir.go b/tools/fidl/lib/fidlgen_cpp/ir.go
index 4647e87..019cec3 100644
--- a/tools/fidl/lib/fidlgen_cpp/ir.go
+++ b/tools/fidl/lib/fidlgen_cpp/ir.go
@@ -95,7 +95,7 @@
var TypeKinds = namespacedEnum(typeKinds{}).(typeKinds)
type Type struct {
- NameVariants
+ nameVariants
WirePointer bool
@@ -231,11 +231,11 @@
// Result holds information about error results on methods.
type Result struct {
ValueMembers []Parameter
- ResultDecl NameVariants
- ErrorDecl NameVariants
- ValueDecl Name
- ValueStructDecl NameVariants
- ValueTupleDecl Name
+ ResultDecl nameVariants
+ ErrorDecl nameVariants
+ ValueDecl name
+ ValueStructDecl nameVariants
+ ValueTupleDecl name
}
func (r Result) ValueArity() int {
@@ -257,9 +257,9 @@
}
// NameVariantsForPrimitive returns the C++ name of a FIDL primitive type.
-func NameVariantsForPrimitive(val fidlgen.PrimitiveSubtype) NameVariants {
+func NameVariantsForPrimitive(val fidlgen.PrimitiveSubtype) nameVariants {
if t, ok := primitiveTypes[val]; ok {
- return PrimitiveNameVariants(t)
+ return primitiveNameVariants(t)
}
panic(fmt.Sprintf("unknown primitive type: %v", val))
}
@@ -291,8 +291,6 @@
return formatLibrary(library, "/", keepPartIfReserved)
}
-type libraryNamespaceFunc func(fidlgen.LibraryIdentifier) Namespace
-
func codingTableName(ident fidlgen.EncodedCompoundIdentifier) string {
ci := fidlgen.ParseCompoundIdentifier(ident)
return formatLibrary(ci.Library, "_", keepPartIfReserved) + "_" + string(ci.Name) + string(ci.Member)
@@ -319,7 +317,7 @@
return false
}
-func (c *compiler) compileNameVariants(eci fidlgen.EncodedCompoundIdentifier) NameVariants {
+func (c *compiler) compileNameVariants(eci fidlgen.EncodedCompoundIdentifier) nameVariants {
ci := fidlgen.ParseCompoundIdentifier(eci)
if ci.Member != fidlgen.Identifier("") {
panic(fmt.Sprintf("unexpected compound identifier with member: %v", eci))
@@ -332,22 +330,22 @@
declType := declInfo.Type
switch declType {
case fidlgen.ConstDeclType, fidlgen.BitsDeclType, fidlgen.EnumDeclType, fidlgen.StructDeclType, fidlgen.TableDeclType, fidlgen.UnionDeclType:
- return NameVariants{
- Natural: naturalNamespace(ci.Library).Member(name),
- Wire: wireNamespace(ci.Library).Member(name),
- Unified: unifiedNamespace(ci.Library).Member(name),
+ return nameVariants{
+ Natural: naturalNamespace(ci.Library).member(name),
+ Wire: wireNamespace(ci.Library).member(name),
+ Unified: unifiedNamespace(ci.Library).member(name),
}
case fidlgen.ProtocolDeclType, fidlgen.ServiceDeclType:
// TODO(yifeit): Protocols and services should not have DeclName.
// Not all bindings generate these types.
- return NameVariants{
- Natural: naturalNamespace(ci.Library).Member(name),
- Wire: unifiedNamespace(ci.Library).Member(name),
+ return nameVariants{
+ Natural: naturalNamespace(ci.Library).member(name),
+ Wire: unifiedNamespace(ci.Library).member(name),
// Intentionally using the natural namespace, since we would like the unified bindings
// to transparently accept natural types, which may certainly contain protocol endpoints.
// TODO(fxbug.dev/72980): Switch to ClientEnd/ServerEnd and underscore namespace when
// corresponding endpoint types can easily convert into each other.
- Unified: naturalNamespace(ci.Library).Member(name),
+ Unified: naturalNamespace(ci.Library).member(name),
}
}
panic("Unknown decl type: " + string(declType))
@@ -372,10 +370,10 @@
// the name _transformation_ would be identical between natural and unified,
// here and below. We reserve the flexibility to specify different names
// in the future.
- r.NameVariants = NameVariants{
- Natural: MakeName("std::array").ArrayTemplate(t.Natural, *val.ElementCount),
- Unified: MakeName("std::array").ArrayTemplate(t.Unified, *val.ElementCount),
- Wire: MakeName("fidl::Array").ArrayTemplate(t.Wire, *val.ElementCount),
+ r.nameVariants = nameVariants{
+ Natural: makeName("std::array").arrayTemplate(t.Natural, *val.ElementCount),
+ Unified: makeName("std::array").arrayTemplate(t.Unified, *val.ElementCount),
+ Wire: makeName("fidl::Array").arrayTemplate(t.Wire, *val.ElementCount),
}
r.WirePointer = t.WirePointer
r.WireFamily = FamilyKinds.Reference
@@ -387,13 +385,13 @@
case fidlgen.VectorType:
t := c.compileType(*val.ElementType)
if val.Nullable {
- r.NameVariants.Natural = MakeName("fidl::VectorPtr").Template(t.Natural)
- r.NameVariants.Unified = MakeName("fidl::VectorPtr").Template(t.Unified)
+ r.nameVariants.Natural = makeName("fidl::VectorPtr").template(t.Natural)
+ r.nameVariants.Unified = makeName("fidl::VectorPtr").template(t.Unified)
} else {
- r.NameVariants.Natural = MakeName("std::vector").Template(t.Natural)
- r.NameVariants.Unified = MakeName("std::vector").Template(t.Unified)
+ r.nameVariants.Natural = makeName("std::vector").template(t.Natural)
+ r.nameVariants.Unified = makeName("std::vector").template(t.Unified)
}
- r.NameVariants.Wire = MakeName("fidl::VectorView").Template(t.Wire)
+ r.nameVariants.Wire = makeName("fidl::VectorView").template(t.Wire)
r.WireFamily = FamilyKinds.Vector
r.WirePointer = t.WirePointer
r.NeedsDtor = true
@@ -402,35 +400,35 @@
r.ElementType = &t
case fidlgen.StringType:
if val.Nullable {
- r.Natural = MakeName("fidl::StringPtr")
+ r.Natural = makeName("fidl::StringPtr")
} else {
- r.Natural = MakeName("std::string")
+ r.Natural = makeName("std::string")
}
r.Unified = r.Natural
- r.Wire = MakeName("fidl::StringView")
+ r.Wire = makeName("fidl::StringView")
r.WireFamily = FamilyKinds.String
r.NeedsDtor = true
r.Kind = TypeKinds.String
case fidlgen.HandleType:
c.handleTypes[val.HandleSubtype] = struct{}{}
- r.NameVariants = NameVariantsForHandle(val.HandleSubtype)
+ r.nameVariants = nameVariantsForHandle(val.HandleSubtype)
r.WireFamily = FamilyKinds.Reference
r.NeedsDtor = true
r.Kind = TypeKinds.Handle
r.IsResource = true
case fidlgen.RequestType:
p := c.compileNameVariants(val.RequestSubtype)
- r.NameVariants = NameVariants{
- Natural: MakeName("fidl::InterfaceRequest").Template(p.Natural),
- Unified: MakeName("fidl::InterfaceRequest").Template(p.Unified),
- Wire: MakeName("fidl::ServerEnd").Template(p.Wire),
+ r.nameVariants = nameVariants{
+ Natural: makeName("fidl::InterfaceRequest").template(p.Natural),
+ Unified: makeName("fidl::InterfaceRequest").template(p.Unified),
+ Wire: makeName("fidl::ServerEnd").template(p.Wire),
}
r.WireFamily = FamilyKinds.Reference
r.NeedsDtor = true
r.Kind = TypeKinds.Request
r.IsResource = true
case fidlgen.PrimitiveType:
- r.NameVariants = NameVariantsForPrimitive(val.PrimitiveSubtype)
+ r.nameVariants = NameVariantsForPrimitive(val.PrimitiveSubtype)
r.WireFamily = FamilyKinds.TrivialCopy
r.Kind = TypeKinds.Primitive
case fidlgen.IdentifierType:
@@ -441,10 +439,10 @@
}
declType := declInfo.Type
if declType == fidlgen.ProtocolDeclType {
- r.NameVariants = NameVariants{
- Natural: MakeName("fidl::InterfaceHandle").Template(name.Natural),
- Unified: MakeName("fidl::InterfaceHandle").Template(name.Unified),
- Wire: MakeName("fidl::ClientEnd").Template(name.Wire),
+ r.nameVariants = nameVariants{
+ Natural: makeName("fidl::InterfaceHandle").template(name.Natural),
+ Unified: makeName("fidl::InterfaceHandle").template(name.Unified),
+ Wire: makeName("fidl::ClientEnd").template(name.Wire),
}
r.WireFamily = FamilyKinds.Reference
r.NeedsDtor = true
@@ -483,16 +481,16 @@
}
if val.Nullable {
- r.NameVariants.Natural = MakeName("std::unique_ptr").Template(name.Natural)
- r.NameVariants.Unified = MakeName("std::unique_ptr").Template(name.Unified)
+ r.nameVariants.Natural = makeName("std::unique_ptr").template(name.Natural)
+ r.nameVariants.Unified = makeName("std::unique_ptr").template(name.Unified)
if declType == fidlgen.UnionDeclType {
- r.NameVariants.Wire = name.Wire
+ r.nameVariants.Wire = name.Wire
} else {
- r.NameVariants.Wire = MakeName("fidl::ObjectView").Template(name.Wire)
+ r.nameVariants.Wire = makeName("fidl::ObjectView").template(name.Wire)
}
r.NeedsDtor = true
} else {
- r.NameVariants = name
+ r.nameVariants = name
r.NeedsDtor = true
}
}
diff --git a/tools/fidl/lib/fidlgen_cpp/names.go b/tools/fidl/lib/fidlgen_cpp/names.go
index e9df4b0..b6585d0 100644
--- a/tools/fidl/lib/fidlgen_cpp/names.go
+++ b/tools/fidl/lib/fidlgen_cpp/names.go
@@ -11,9 +11,9 @@
"go.fuchsia.dev/fuchsia/tools/fidl/lib/fidlgen"
)
-var zxNs Namespace = NewNamespace("zx")
-var fidlNs Namespace = NewNamespace("fidl")
-var internalNs Namespace = fidlNs.Append("internal")
+var zxNs namespace = newNamespace("zx")
+var fidlNs namespace = newNamespace("fidl")
+var internalNs namespace = fidlNs.append("internal")
// variant controls how we refer to domain object declarations.
type variant string
@@ -28,19 +28,19 @@
var currentVariant = noVariant
// Namespace represents a C++ namespace.
-type Namespace []string
+type namespace []string
-func NewNamespace(ns string) Namespace {
- return Namespace(strings.Split(ns, "::"))
+func newNamespace(ns string) namespace {
+ return namespace(strings.Split(ns, "::"))
}
-// Namespace is implemented to satisfy the Namespaced interface.
-func (ns Namespace) Namespace() Namespace {
+// Namespace is implemented to satisfy the namespaced interface.
+func (ns namespace) Namespace() namespace {
return ns
}
// String returns the fully qualified namespace including leading ::.
-func (ns Namespace) String() string {
+func (ns namespace) String() string {
if len(ns) == 0 {
return ""
}
@@ -48,40 +48,30 @@
}
// NoLeading returns the fully qualified namespace without the leading ::.
-func (ns Namespace) NoLeading() string {
+func (ns namespace) NoLeading() string {
return strings.Join(ns, "::")
}
-// Append returns a new namespace with an additional component.
-func (ns Namespace) Append(part string) Namespace {
+// append returns a new namespace with an additional component.
+func (ns namespace) append(part string) namespace {
newNs := make([]string, len(ns)+1)
copy(newNs, ns)
newNs[len(ns)] = part
- return Namespace(newNs)
+ return namespace(newNs)
}
-// DropLastComponent returns a new namespace with the final component removed.
-func (ns Namespace) DropLastComponent() Namespace {
- if len(ns) == 0 {
- panic("Can't drop the end of an empty namespace")
- }
- new := make([]string, len(ns)-1)
- copy(new, ns)
- return Namespace(new)
+// member creates a named declaration within the namespace
+func (ns namespace) member(n string) name {
+ return name{name: stringNamePart(n), ns: ns}
}
-// Member creates a named declaration within the namespace
-func (ns Namespace) Member(name string) Name {
- return Name{name: stringNamePart(name), ns: ns}
-}
-
-// NameVariants is the name of a type or a template used in the various C++ bindings.
+// nameVariants is the name of a type or a template used in the various C++ bindings.
//
// Names are more general than FIDL declarations. All declarations have a corresponding
// type name, but some types are not declared in the generated code (e.g. zx::vmo),
// or are non-nominal (e.g. std::vector<FooBarDecl>).
-type NameVariants struct {
- Natural Name
+type nameVariants struct {
+ Natural name
// Unified is like Natural, except it consists of type aliases, declared in
// the unified bindings, to natural types. For example, the Natural name
@@ -102,24 +92,24 @@
//
// In case of client and server protocol endpoints, there is no alias,
// and Unified is the same as Natural.
- Unified Name
+ Unified name
- Wire Name
+ Wire name
}
-// CommonNameVariants returns a NameVariants with the same Name for both Wire and Natural variants.
-func CommonNameVariants(decl Name) NameVariants {
- return NameVariants{
+// commonNameVariants returns a nameVariants with the same Name for both Wire and Natural variants.
+func commonNameVariants(decl name) nameVariants {
+ return nameVariants{
Natural: decl,
Unified: decl,
Wire: decl,
}
}
-func (dn NameVariants) String() string {
+func (dn nameVariants) String() string {
switch currentVariant {
case noVariant:
- fidlgen.TemplateFatalf("Called NameVariants.String() on %s/%s when currentVariant isn't set.\n",
+ fidlgen.TemplateFatalf("Called nameVariants.String() on %s/%s when currentVariant isn't set.\n",
dn.Natural, dn.Wire)
case naturalVariant:
return dn.Natural.String()
@@ -131,10 +121,10 @@
panic("not reached")
}
-func (dn NameVariants) Name() string {
+func (dn nameVariants) Name() string {
switch currentVariant {
case noVariant:
- fidlgen.TemplateFatalf("Called NameVariants.Name() on %s/%s when currentVariant isn't set.\n",
+ fidlgen.TemplateFatalf("Called nameVariants.Name() on %s/%s when currentVariant isn't set.\n",
dn.Natural, dn.Wire)
case naturalVariant:
return dn.Natural.Name()
@@ -146,10 +136,10 @@
panic("not reached")
}
-func (dn NameVariants) Self() string {
+func (dn nameVariants) Self() string {
switch currentVariant {
case noVariant:
- fidlgen.TemplateFatalf("Called NameVariants.Self() on %s/%s when currentVariant isn't set.\n", dn.Natural, dn.Wire)
+ fidlgen.TemplateFatalf("Called nameVariants.Self() on %s/%s when currentVariant isn't set.\n", dn.Natural, dn.Wire)
case naturalVariant:
return dn.Natural.Self()
case unifiedVariant:
@@ -160,10 +150,10 @@
panic("not reached")
}
-func (dn NameVariants) NoLeading() string {
+func (dn nameVariants) NoLeading() string {
switch currentVariant {
case noVariant:
- fidlgen.TemplateFatalf("Called NameVariants.NoLeading() on %s/%s when currentVariant isn't set.\n", dn.Natural, dn.Wire)
+ fidlgen.TemplateFatalf("Called nameVariants.NoLeading() on %s/%s when currentVariant isn't set.\n", dn.Natural, dn.Wire)
case naturalVariant:
return dn.Natural.NoLeading()
case unifiedVariant:
@@ -174,10 +164,10 @@
panic("not reached")
}
-func (dn NameVariants) Namespace() Namespace {
+func (dn nameVariants) Namespace() namespace {
switch currentVariant {
case noVariant:
- fidlgen.TemplateFatalf("Called NameVariants.Namespace() on %s/%s when currentVariant isn't set.\n",
+ fidlgen.TemplateFatalf("Called nameVariants.Namespace() on %s/%s when currentVariant isn't set.\n",
dn.Natural, dn.Wire)
case naturalVariant:
return dn.Natural.Namespace()
@@ -189,49 +179,49 @@
panic("not reached")
}
-// AppendName returns a new NameVariants with an suffix appended to the name portions.
-func (dn NameVariants) AppendName(suffix string) NameVariants {
- return NameVariants{
- Natural: dn.Natural.AppendName(suffix),
- Unified: dn.Unified.AppendName(suffix),
- Wire: dn.Wire.AppendName(suffix),
+// appendName returns a new nameVariants with an suffix appended to the name portions.
+func (dn nameVariants) appendName(suffix string) nameVariants {
+ return nameVariants{
+ Natural: dn.Natural.appendName(suffix),
+ Unified: dn.Unified.appendName(suffix),
+ Wire: dn.Wire.appendName(suffix),
}
}
-// PrependName returns a new NameVariants with an prefix prepended to the name portions.
-func (dn NameVariants) PrependName(prefix string) NameVariants {
- return NameVariants{
- Natural: dn.Natural.PrependName(prefix),
- Unified: dn.Unified.PrependName(prefix),
- Wire: dn.Wire.PrependName(prefix),
+// prependName returns a new nameVariants with an prefix prepended to the name portions.
+func (dn nameVariants) prependName(prefix string) nameVariants {
+ return nameVariants{
+ Natural: dn.Natural.prependName(prefix),
+ Unified: dn.Unified.prependName(prefix),
+ Wire: dn.Wire.prependName(prefix),
}
}
-// AppendNamespace returns a new NameVariants with additional C++ namespace components appended.
-func (dn NameVariants) AppendNamespace(c string) NameVariants {
- return NameVariants{
- Natural: dn.Natural.AppendNamespace(c),
- Unified: dn.Unified.AppendNamespace(c),
- Wire: dn.Wire.AppendNamespace(c),
+// appendNamespace returns a new nameVariants with additional C++ namespace components appended.
+func (dn nameVariants) appendNamespace(c string) nameVariants {
+ return nameVariants{
+ Natural: dn.Natural.appendNamespace(c),
+ Unified: dn.Unified.appendNamespace(c),
+ Wire: dn.Wire.appendNamespace(c),
}
}
-// Nest returns a new name for a class nested inside the existing name.
-func (dn NameVariants) Nest(c string) NameVariants {
- return NameVariants{
- Natural: dn.Natural.Nest(c),
- Wire: dn.Wire.Nest(c),
+// nest returns a new name for a class nested inside the existing name.
+func (dn nameVariants) nest(c string) nameVariants {
+ return nameVariants{
+ Natural: dn.Natural.nest(c),
+ Wire: dn.Wire.nest(c),
}
}
-// NameVariantsForHandle returns the C++ name for a handle type
-func NameVariantsForHandle(t fidlgen.HandleSubtype) NameVariants {
- return CommonNameVariants(zxNs.Member(string(t)))
+// nameVariantsForHandle returns the C++ name for a handle type
+func nameVariantsForHandle(t fidlgen.HandleSubtype) nameVariants {
+ return commonNameVariants(zxNs.member(string(t)))
}
-// PrimitiveNameVariants returns a NameVariants for a primitive type, common across all bindings.
-func PrimitiveNameVariants(primitive string) NameVariants {
- return CommonNameVariants(MakeName(primitive))
+// primitiveNameVariants returns a nameVariants for a primitive type, common across all bindings.
+func primitiveNameVariants(primitive string) nameVariants {
+ return commonNameVariants(makeName(primitive))
}
// namePart represents part of non-namespace part of a name.
@@ -251,14 +241,14 @@
// For a template name like "Foo::Bar<Baz>" this would be "Bar".
Self() string
- // Nest returns a new name for a class nested inside the existing name.
- Nest(name string) namePart
+ // nest returns a new name for a class nested inside the existing name.
+ nest(name string) namePart
// Template returns a new name with this name being an template applied to the |args|.
- Template(args string) namePart
- // PrependName returns a new name with a prefix prepended.
- PrependName(prefix string) namePart
- // AppendName returns a new name with a suffix appended.
- AppendName(suffix string) namePart
+ template(args string) namePart
+ // prependName returns a new name with a prefix prepended.
+ prependName(prefix string) namePart
+ // appendName returns a new name with a suffix appended.
+ appendName(suffix string) namePart
}
type stringNamePart string
@@ -273,19 +263,19 @@
return string(n)
}
-func (n stringNamePart) Nest(name string) namePart {
+func (n stringNamePart) nest(name string) namePart {
return newNestedNamePart(n, stringNamePart(name))
}
-func (n stringNamePart) Template(args string) namePart {
+func (n stringNamePart) template(args string) namePart {
return newTemplateNamePart(n, args)
}
-func (n stringNamePart) PrependName(prefix string) namePart {
+func (n stringNamePart) prependName(prefix string) namePart {
return stringNamePart(prefix + string(n))
}
-func (n stringNamePart) AppendName(suffix string) namePart {
+func (n stringNamePart) appendName(suffix string) namePart {
return stringNamePart(string(n) + suffix)
}
@@ -308,85 +298,85 @@
return n.right.Self()
}
-func (n nestedNamePart) Nest(name string) namePart {
- return nestedNamePart{n.left, n.right.Nest(name)}
+func (n nestedNamePart) nest(name string) namePart {
+ return nestedNamePart{n.left, n.right.nest(name)}
}
-func (n nestedNamePart) Template(args string) namePart {
+func (n nestedNamePart) template(args string) namePart {
return newTemplateNamePart(n, args)
}
-func (n nestedNamePart) PrependName(prefix string) namePart {
- return nestedNamePart{n.left, n.right.PrependName(prefix)}
+func (n nestedNamePart) prependName(prefix string) namePart {
+ return nestedNamePart{n.left, n.right.prependName(prefix)}
}
-func (n nestedNamePart) AppendName(suffix string) namePart {
- return nestedNamePart{n.left, n.right.AppendName(suffix)}
+func (n nestedNamePart) appendName(suffix string) namePart {
+ return nestedNamePart{n.left, n.right.appendName(suffix)}
}
type templateNamePart struct {
- template namePart
- args string
+ tmpl namePart
+ args string
}
var _ namePart = (*templateNamePart)(nil)
-func newTemplateNamePart(template namePart, args string) namePart {
- return templateNamePart{template, args}
+func newTemplateNamePart(tmpl namePart, args string) namePart {
+ return templateNamePart{tmpl, args}
}
func (n templateNamePart) String() string {
- return fmt.Sprintf("%s<%s>", n.template, n.args)
+ return fmt.Sprintf("%s<%s>", n.tmpl, n.args)
}
func (n templateNamePart) Self() string {
- return n.template.Self()
+ return n.tmpl.Self()
}
-func (n templateNamePart) Nest(name string) namePart {
+func (n templateNamePart) nest(name string) namePart {
return nestedNamePart{n, stringNamePart(name)}
}
-func (n templateNamePart) Template(args string) namePart {
+func (n templateNamePart) template(args string) namePart {
panic(fmt.Sprintf("Can't make a template of a template: %s", n))
}
-func (n templateNamePart) PrependName(prefix string) namePart {
+func (n templateNamePart) prependName(prefix string) namePart {
panic(fmt.Sprintf("Can't prepend to the name of a template: %s", n))
}
-func (n templateNamePart) AppendName(suffix string) namePart {
+func (n templateNamePart) appendName(suffix string) namePart {
panic(fmt.Sprintf("Can't append to the name of a template: %s", n))
}
-// Name holds a C++ qualified identifier.
+// name holds a C++ qualified identifier.
// See: https://en.cppreference.com/w/cpp/language/identifiers#Qualified_identifiers
// It consists of a Namespace and a namePart.
// TODO(ianloic): move this to the top of the file since it's the most important type.
-type Name struct {
+type name struct {
name namePart
- ns Namespace
+ ns namespace
}
// MakeName takes a string with a :: separated name and makes a Name treating the last component
// as the local name and the preceding components as the namespace.
// This should only be used with string literals for creating well-known, simple names.
-func MakeName(name string) Name {
- i := strings.LastIndex(name, "::")
+func makeName(n string) name {
+ i := strings.LastIndex(n, "::")
if i == -1 {
- return Name{name: stringNamePart(name)}
+ return name{name: stringNamePart(n)}
}
if i == 0 {
- panic(fmt.Sprintf("Don't call MakeName with leading double-colons: %v", name))
+ panic(fmt.Sprintf("Don't call MakeName with leading double-colons: %v", n))
}
- return Name{
- name: stringNamePart(name[i+2:]),
- ns: NewNamespace(name[0:i]),
+ return name{
+ name: stringNamePart(n[i+2:]),
+ ns: newNamespace(n[0:i]),
}
}
// String returns the full name with a leading :: if the name has a namespace.
-func (n Name) String() string {
+func (n name) String() string {
ns := n.ns.String()
if len(ns) > 0 {
ns = ns + "::"
@@ -395,19 +385,19 @@
}
// Name returns the portion of the name that comes after the namespace.
-func (n Name) Name() string {
+func (n name) Name() string {
return n.name.String()
}
// Self returns how the type refers to itself, like in constructor & destructor names.
// For a nested name like "Foo::Bar::Baz" this would be "Baz".
// For a template name like "Foo::Bar<Baz>" this would be "Bar".
-func (n Name) Self() string {
+func (n name) Self() string {
return n.name.Self()
}
// TODO(ianloic): probably make this the default
-func (n Name) NoLeading() string {
+func (n name) NoLeading() string {
ns := n.ns.NoLeading()
if len(ns) > 0 {
ns = ns + "::"
@@ -415,47 +405,47 @@
return ns + n.name.String()
}
-// Namespace returns the namespace portion of the name.
-func (n Name) Namespace() Namespace {
+// namespace returns the namespace portion of the name.
+func (n name) Namespace() namespace {
return n.ns
}
-// Nest returns a new name for a class nested inside the existing name.
-func (n Name) Nest(name string) Name {
- return Name{name: n.name.Nest(name), ns: n.ns}
+// nest returns a new name for a class nested inside the existing name.
+func (n name) nest(nested string) name {
+ return name{name: n.name.nest(nested), ns: n.ns}
}
// Template returns a new name with this name being an template applied to the |arg|.
-func (n Name) Template(arg Name) Name {
- return Name{name: n.name.Template(arg.String()), ns: n.ns}
+func (n name) template(arg name) name {
+ return name{name: n.name.template(arg.String()), ns: n.ns}
}
-// ArrayTemplate returns a new name with this name being an template applied to the |arg| with a |count|.
-func (n Name) ArrayTemplate(arg Name, count int) Name {
- return Name{name: n.name.Template(fmt.Sprintf("%s, %d", arg.String(), count)), ns: n.ns}
+// arrayTemplate returns a new name with this name being an template applied to the |arg| with a |count|.
+func (n name) arrayTemplate(arg name, count int) name {
+ return name{name: n.name.template(fmt.Sprintf("%s, %d", arg.String(), count)), ns: n.ns}
}
-// PrependName returns a new name with a prefix prepended to the last part of the name.
-func (n Name) PrependName(prefix string) Name {
- return Name{name: n.name.PrependName(prefix), ns: n.ns}
+// prependName returns a new name with a prefix prepended to the last part of the name.
+func (n name) prependName(prefix string) name {
+ return name{name: n.name.prependName(prefix), ns: n.ns}
}
-// AppendName returns a new name with a suffix appended to the last part of the name.
-func (n Name) AppendName(suffix string) Name {
- return Name{name: n.name.AppendName(suffix), ns: n.ns}
+// appendName returns a new name with a suffix appended to the last part of the name.
+func (n name) appendName(suffix string) name {
+ return name{name: n.name.appendName(suffix), ns: n.ns}
}
-// AppendNamespace returns a new name with an additional namespace component added.
-func (n Name) AppendNamespace(part string) Name {
- return Name{name: n.name, ns: n.ns.Append(part)}
+// appendNamespace returns a new name with an additional namespace component added.
+func (n name) appendNamespace(part string) name {
+ return name{name: n.name, ns: n.ns.append(part)}
}
-// MakeTupleName returns a Name for a std::tuple of the supplied names.
-func MakeTupleName(members []Name) Name {
- t := MakeName("std::tuple")
+// makeTupleName returns a Name for a std::tuple of the supplied names.
+func makeTupleName(members []name) name {
+ t := makeName("std::tuple")
a := []string{}
for _, m := range members {
a = append(a, m.String())
}
- return Name{name: t.name.Template(strings.Join(a, ", ")), ns: t.ns}
+ return name{name: t.name.template(strings.Join(a, ", ")), ns: t.ns}
}
diff --git a/tools/fidl/lib/fidlgen_cpp/names_test.go b/tools/fidl/lib/fidlgen_cpp/names_test.go
index 0334a24..a3574f6 100644
--- a/tools/fidl/lib/fidlgen_cpp/names_test.go
+++ b/tools/fidl/lib/fidlgen_cpp/names_test.go
@@ -9,25 +9,25 @@
)
func TestName(t *testing.T) {
- ns := Namespace([]string{"foo", "bar"})
- v := ns.Member("Baz")
+ ns := namespace([]string{"foo", "bar"})
+ v := ns.member("Baz")
assertEqual(t, v.String(), "::foo::bar::Baz")
- p := v.PrependName("Prefix")
+ p := v.prependName("Prefix")
assertEqual(t, p.String(), "::foo::bar::PrefixBaz")
- s := v.AppendName("Suffix")
+ s := v.appendName("Suffix")
assertEqual(t, s.String(), "::foo::bar::BazSuffix")
- n := v.Nest("Quux")
+ n := v.nest("Quux")
assertEqual(t, n.String(), "::foo::bar::Baz::Quux")
assertEqual(t, n.Self(), "Quux")
- tmpl := v.Template(Namespace([]string{"hello"}).Member("World"))
+ tmpl := v.template(namespace([]string{"hello"}).member("World"))
assertEqual(t, tmpl.String(), "::foo::bar::Baz<::hello::World>")
assertEqual(t, tmpl.Self(), "Baz")
- tmpl_nest := tmpl.Nest("Inner")
+ tmpl_nest := tmpl.nest("Inner")
assertEqual(t, tmpl_nest.String(), "::foo::bar::Baz<::hello::World>::Inner")
}
diff --git a/tools/fidl/lib/fidlgen_cpp/namespace.go b/tools/fidl/lib/fidlgen_cpp/namespace.go
index 386d73e..ab92948 100644
--- a/tools/fidl/lib/fidlgen_cpp/namespace.go
+++ b/tools/fidl/lib/fidlgen_cpp/namespace.go
@@ -10,25 +10,25 @@
"go.fuchsia.dev/fuchsia/tools/fidl/lib/fidlgen"
)
-// Namespaced is implemented by types that have a C++ namespace.
-type Namespaced interface {
- Namespace() Namespace
+// namespaced is implemented by types that have a C++ namespace.
+type namespaced interface {
+ Namespace() namespace
}
// During template processing this holds the current namespace.
-var currentNamespace Namespace
+var currentNamespace namespace
//
// Predefined namespaces
//
-func wireNamespace(library fidlgen.LibraryIdentifier) Namespace {
- return unifiedNamespace(library).Append("wire")
+func wireNamespace(library fidlgen.LibraryIdentifier) namespace {
+ return unifiedNamespace(library).append("wire")
}
-func naturalNamespace(library fidlgen.LibraryIdentifier) Namespace {
+func naturalNamespace(library fidlgen.LibraryIdentifier) namespace {
parts := libraryParts(library, changePartIfReserved)
- return Namespace(parts)
+ return namespace(parts)
}
func formatLibrary(library fidlgen.LibraryIdentifier, sep string, identifierTransform identifierTransform) string {
@@ -36,6 +36,6 @@
return changeIfReserved(fidlgen.Identifier(name))
}
-func unifiedNamespace(library fidlgen.LibraryIdentifier) Namespace {
- return Namespace([]string{formatLibrary(library, "_", keepPartIfReserved)})
+func unifiedNamespace(library fidlgen.LibraryIdentifier) namespace {
+ return namespace([]string{formatLibrary(library, "_", keepPartIfReserved)})
}
diff --git a/tools/fidl/lib/fidlgen_cpp/protocol.go b/tools/fidl/lib/fidlgen_cpp/protocol.go
index 596ce88..ac6d360 100644
--- a/tools/fidl/lib/fidlgen_cpp/protocol.go
+++ b/tools/fidl/lib/fidlgen_cpp/protocol.go
@@ -23,50 +23,50 @@
// ProtocolMarker is a pure-virtual interface corresponding to methods in
// the protocol. Notably, HLCPP shares the same interface type between
// the server and client bindings API.
- ProtocolMarker Name
+ ProtocolMarker name
// InterfaceAliasForStub is the type alias generated within the
// "Stub" class, that refers to the pure-virtual interface corresponding to
// the protocol.
- InterfaceAliasForStub Name
+ InterfaceAliasForStub name
// Proxy implements the interface by encoding and making method calls.
- Proxy Name
+ Proxy name
// Stub calls into the interface after decoding an incoming message.
// It also implements the EventSender interface.
- Stub Name
+ Stub name
// EventSender is a pure-virtual interface for sending events.
- EventSender Name
+ EventSender name
// SyncInterface is a pure-virtual interface for making synchronous calls.
- SyncInterface Name
+ SyncInterface name
// SyncProxy implements the SyncInterface.
- SyncProxy Name
+ SyncProxy name
- RequestEncoder Name
- RequestDecoder Name
- ResponseEncoder Name
- ResponseDecoder Name
+ RequestEncoder name
+ RequestDecoder name
+ ResponseEncoder name
+ ResponseDecoder name
}
-func compileHlMessagingDetails(protocol NameVariants) hlMessagingDetails {
+func compileHlMessagingDetails(protocol nameVariants) hlMessagingDetails {
p := protocol.Natural
- stub := p.AppendName("_Stub")
+ stub := p.appendName("_Stub")
return hlMessagingDetails{
ProtocolMarker: p,
- InterfaceAliasForStub: stub.Nest(p.AppendName("_clazz").Name()),
- Proxy: p.AppendName("_Proxy"),
+ InterfaceAliasForStub: stub.nest(p.appendName("_clazz").Name()),
+ Proxy: p.appendName("_Proxy"),
Stub: stub,
- EventSender: p.AppendName("_EventSender"),
- SyncInterface: p.AppendName("_Sync"),
- SyncProxy: p.AppendName("_SyncProxy"),
- RequestEncoder: p.AppendName("_RequestEncoder"),
- RequestDecoder: p.AppendName("_RequestDecoder"),
- ResponseEncoder: p.AppendName("_ResponseEncoder"),
- ResponseDecoder: p.AppendName("_ResponseDecoder"),
+ EventSender: p.appendName("_EventSender"),
+ SyncInterface: p.appendName("_Sync"),
+ SyncProxy: p.appendName("_SyncProxy"),
+ RequestEncoder: p.appendName("_RequestEncoder"),
+ RequestDecoder: p.appendName("_RequestDecoder"),
+ ResponseEncoder: p.appendName("_ResponseEncoder"),
+ ResponseDecoder: p.appendName("_ResponseDecoder"),
}
}
@@ -88,77 +88,77 @@
// TODO(fxbug.dev/60240): Start implementing unified bindings messaging layer
// based on this skeleton.
type unifiedMessagingDetails struct {
- ClientImpl Name
- EventHandlers Name
- Interface Name
- EventSender Name
- RequestEncoder Name
- RequestDecoder Name
- ResponseEncoder Name
- ResponseDecoder Name
+ ClientImpl name
+ EventHandlers name
+ Interface name
+ EventSender name
+ RequestEncoder name
+ RequestDecoder name
+ ResponseEncoder name
+ ResponseDecoder name
}
// These correspond to templated classes forward-declared in
// //zircon/system/ulib/fidl/include/lib/fidl/llcpp/wire_messaging.h
var (
// Protocol related
- WireSyncClient = fidlNs.Member("WireSyncClient")
- WireClient = fidlNs.Member("WireClient")
- WireEventHandlerInterface = internalNs.Member("WireEventHandlerInterface")
- WireSyncEventHandler = fidlNs.Member("WireSyncEventHandler")
- WireAsyncEventHandler = fidlNs.Member("WireAsyncEventHandler")
- WireInterface = fidlNs.Member("WireInterface")
- WireRawChannelInterface = fidlNs.Member("WireRawChannelInterface")
- WireEventSender = fidlNs.Member("WireEventSender")
- WireWeakEventSender = internalNs.Member("WireWeakEventSender")
- WireClientImpl = internalNs.Member("WireClientImpl")
- WireCaller = internalNs.Member("WireCaller")
- WireDispatcher = internalNs.Member("WireDispatcher")
+ WireSyncClient = fidlNs.member("WireSyncClient")
+ WireClient = fidlNs.member("WireClient")
+ WireEventHandlerInterface = internalNs.member("WireEventHandlerInterface")
+ WireSyncEventHandler = fidlNs.member("WireSyncEventHandler")
+ WireAsyncEventHandler = fidlNs.member("WireAsyncEventHandler")
+ WireInterface = fidlNs.member("WireInterface")
+ WireRawChannelInterface = fidlNs.member("WireRawChannelInterface")
+ WireEventSender = fidlNs.member("WireEventSender")
+ WireWeakEventSender = internalNs.member("WireWeakEventSender")
+ WireClientImpl = internalNs.member("WireClientImpl")
+ WireCaller = internalNs.member("WireCaller")
+ WireDispatcher = internalNs.member("WireDispatcher")
// MethodRelated
- WireRequest = fidlNs.Member("WireRequest")
- WireResponse = fidlNs.Member("WireResponse")
- WireResult = fidlNs.Member("WireResult")
- WireUnownedResult = fidlNs.Member("WireUnownedResult")
- WireResponseContext = fidlNs.Member("WireResponseContext")
+ WireRequest = fidlNs.member("WireRequest")
+ WireResponse = fidlNs.member("WireResponse")
+ WireResult = fidlNs.member("WireResult")
+ WireUnownedResult = fidlNs.member("WireUnownedResult")
+ WireResponseContext = fidlNs.member("WireResponseContext")
)
type wireTypeNames struct {
// WireProtocolMarker is a class only used for containing other definitions
// related to this protocol.
// TODO(fxbug.dev/72798): Golang template should use this instead of the
- // NameVariants embedded in Protocol.
- WireProtocolMarker Name
- WireSyncClient Name
- WireClient Name
- WireEventHandlerInterface Name
- WireSyncEventHandler Name
- WireAsyncEventHandler Name
- WireInterface Name
- WireRawChannelInterface Name
- WireEventSender Name
- WireWeakEventSender Name
- WireClientImpl Name
- WireCaller Name
- WireDispatcher Name
+ // nameVariants embedded in Protocol.
+ WireProtocolMarker name
+ WireSyncClient name
+ WireClient name
+ WireEventHandlerInterface name
+ WireSyncEventHandler name
+ WireAsyncEventHandler name
+ WireInterface name
+ WireRawChannelInterface name
+ WireEventSender name
+ WireWeakEventSender name
+ WireClientImpl name
+ WireCaller name
+ WireDispatcher name
}
-func newWireTypeNames(protocolVariants NameVariants) wireTypeNames {
+func newWireTypeNames(protocolVariants nameVariants) wireTypeNames {
p := protocolVariants.Wire
return wireTypeNames{
WireProtocolMarker: p,
- WireSyncClient: WireSyncClient.Template(p),
- WireClient: WireClient.Template(p),
- WireEventHandlerInterface: WireEventHandlerInterface.Template(p),
- WireSyncEventHandler: WireSyncEventHandler.Template(p),
- WireAsyncEventHandler: WireAsyncEventHandler.Template(p),
- WireInterface: WireInterface.Template(p),
- WireRawChannelInterface: WireRawChannelInterface.Template(p),
- WireEventSender: WireEventSender.Template(p),
- WireWeakEventSender: WireWeakEventSender.Template(p),
- WireClientImpl: WireClientImpl.Template(p),
- WireCaller: WireCaller.Template(p),
- WireDispatcher: WireDispatcher.Template(p),
+ WireSyncClient: WireSyncClient.template(p),
+ WireClient: WireClient.template(p),
+ WireEventHandlerInterface: WireEventHandlerInterface.template(p),
+ WireSyncEventHandler: WireSyncEventHandler.template(p),
+ WireAsyncEventHandler: WireAsyncEventHandler.template(p),
+ WireInterface: WireInterface.template(p),
+ WireRawChannelInterface: WireRawChannelInterface.template(p),
+ WireEventSender: WireEventSender.template(p),
+ WireWeakEventSender: WireWeakEventSender.template(p),
+ WireClientImpl: WireClientImpl.template(p),
+ WireCaller: WireCaller.template(p),
+ WireDispatcher: WireDispatcher.template(p),
}
}
@@ -169,7 +169,7 @@
// TODO(fxbug.dev/72798): This should be replaced by ProtocolMarker in hlMessagingDetails
// and wireMessagingDetails. In particular, the unified bindings do not declare
// protocol marker classes.
- NameVariants
+ nameVariants
// [Discoverable] protocols are exported to the outgoing namespace under this
// name. This is deprecated by FTP-041 unified services.
@@ -184,7 +184,7 @@
SyncEventAllocation allocation
Methods []Method
FuzzingName string
- TestBase NameVariants
+ TestBase nameVariants
}
// Protocol should be created using newProtocol.
@@ -209,7 +209,7 @@
Events []*Method
// Generated struct holding variant-agnostic details about protocol.
- ProtocolDetails Name
+ ProtocolDetails name
}
func (Protocol) Kind() declKind {
@@ -217,6 +217,7 @@
}
var _ Kinded = (*Protocol)(nil)
+var _ namespaced = (*Protocol)(nil)
func (p Protocol) Name() string {
return p.Wire.Name() // TODO: not the wire name, maybe?
@@ -253,7 +254,7 @@
TwoWayMethods: filterBy(kinds{twoWayMethod}),
ClientMethods: filterBy(kinds{oneWayMethod, twoWayMethod}),
Events: filterBy(kinds{eventMethod}),
- ProtocolDetails: MakeName("fidl::internal::ProtocolDetails").Template(inner.Wire),
+ ProtocolDetails: makeName("fidl::internal::ProtocolDetails").template(inner.Wire),
}
}
@@ -272,8 +273,8 @@
type messageInner struct {
fidlgen.TypeShape
- HlCodingTable Name
- WireCodingTable Name
+ HlCodingTable name
+ WireCodingTable name
}
// message contains lower level wire-format information about a request/response
@@ -323,33 +324,33 @@
}
type wireMethod struct {
- WireCompleter Name
- WireCompleterBase Name
- WireRequest Name
- WireResponse Name
- WireResponseContext Name
- WireResult Name
- WireUnownedResult Name
+ WireCompleter name
+ WireCompleterBase name
+ WireRequest name
+ WireResponse name
+ WireResponseContext name
+ WireResult name
+ WireUnownedResult name
}
-func newWireMethod(name string, wireTypes wireTypeNames, protocolMarker Name, methodMarker Name) wireMethod {
- i := wireTypes.WireInterface.Nest(name)
+func newWireMethod(name string, wireTypes wireTypeNames, protocolMarker name, methodMarker name) wireMethod {
+ i := wireTypes.WireInterface.nest(name)
return wireMethod{
- WireCompleter: i.AppendName("Completer"),
- WireCompleterBase: i.AppendName("CompleterBase"),
- WireRequest: WireRequest.Template(methodMarker),
- WireResponse: WireResponse.Template(methodMarker),
- WireResponseContext: WireResponseContext.Template(methodMarker),
- WireResult: WireResult.Template(methodMarker),
- WireUnownedResult: WireUnownedResult.Template(methodMarker),
+ WireCompleter: i.appendName("Completer"),
+ WireCompleterBase: i.appendName("CompleterBase"),
+ WireRequest: WireRequest.template(methodMarker),
+ WireResponse: WireResponse.template(methodMarker),
+ WireResponseContext: WireResponseContext.template(methodMarker),
+ WireResult: WireResult.template(methodMarker),
+ WireUnownedResult: WireUnownedResult.template(methodMarker),
}
}
// methodInner contains information about a Method that should be filled out by
// the compiler.
type methodInner struct {
- protocolName NameVariants
- Marker NameVariants
+ protocolName nameVariants
+ Marker nameVariants
wireMethod
baseCodingTableName string
requestTypeShape fidlgen.TypeShape
@@ -370,7 +371,7 @@
type Method struct {
methodInner
NameInLowerSnakeCase string
- OrdinalName NameVariants
+ OrdinalName nameVariants
Request message
Response message
CallbackType string
@@ -411,16 +412,16 @@
}
func newMethod(inner methodInner, hl hlMessagingDetails, wire wireTypeNames) Method {
- hlCodingTableBase := hl.ProtocolMarker.Namespace().Append("_internal").Member(inner.baseCodingTableName)
- wireCodingTableBase := wire.WireProtocolMarker.Namespace().Member(inner.baseCodingTableName)
+ hlCodingTableBase := hl.ProtocolMarker.Namespace().append("_internal").member(inner.baseCodingTableName)
+ wireCodingTableBase := wire.WireProtocolMarker.Namespace().member(inner.baseCodingTableName)
- hlRequestCodingTable := hlCodingTableBase.AppendName("RequestTable")
- wireRequestCodingTable := wireCodingTableBase.AppendName("RequestTable")
- hlResponseCodingTable := hlCodingTableBase.AppendName("ResponseTable")
- wireResponseCodingTable := wireCodingTableBase.AppendName("ResponseTable")
+ hlRequestCodingTable := hlCodingTableBase.appendName("RequestTable")
+ wireRequestCodingTable := wireCodingTableBase.appendName("RequestTable")
+ hlResponseCodingTable := hlCodingTableBase.appendName("ResponseTable")
+ wireResponseCodingTable := wireCodingTableBase.appendName("ResponseTable")
if !inner.HasRequest {
- hlResponseCodingTable = hlCodingTableBase.AppendName("EventTable")
- wireResponseCodingTable = wireCodingTableBase.AppendName("EventTable")
+ hlResponseCodingTable = hlCodingTableBase.appendName("EventTable")
+ wireResponseCodingTable = wireCodingTableBase.appendName("EventTable")
}
callbackType := ""
@@ -432,9 +433,9 @@
m := Method{
methodInner: inner,
NameInLowerSnakeCase: fidlgen.ToSnakeCase(inner.Name),
- OrdinalName: NameVariants{
- Natural: inner.protocolName.Natural.Namespace().Append("internal").Member(ordinalName),
- Wire: inner.protocolName.Wire.Namespace().Member(ordinalName),
+ OrdinalName: nameVariants{
+ Natural: inner.protocolName.Natural.Namespace().append("internal").member(ordinalName),
+ Wire: inner.protocolName.Wire.Namespace().member(ordinalName),
},
Request: newMessage(messageInner{
TypeShape: inner.requestTypeShape,
@@ -518,7 +519,7 @@
result = c.resultForUnion[v.Response[0].Type.Identifier]
}
- methodMarker := protocolName.Nest(name)
+ methodMarker := protocolName.nest(name)
method := newMethod(methodInner{
protocolName: protocolName,
@@ -552,7 +553,7 @@
fuzzingName := strings.ReplaceAll(strings.ReplaceAll(string(p.Name), ".", "_"), "/", "_")
r := newProtocol(protocolInner{
Attributes: Attributes{p.Attributes},
- NameVariants: protocolName,
+ nameVariants: protocolName,
hlMessaging: hlMessaging,
wireTypeNames: wireTypeNames,
DiscoverableName: p.GetServiceName(),
@@ -561,7 +562,7 @@
clientContext, allEventsStrict(methods))),
Methods: methods,
FuzzingName: fuzzingName,
- TestBase: protocolName.AppendName("_TestBase").AppendNamespace("testing"),
+ TestBase: protocolName.appendName("_TestBase").appendNamespace("testing"),
})
for i := 0; i < len(methods); i++ {
methods[i].Protocol = &r
diff --git a/tools/fidl/lib/fidlgen_cpp/service.go b/tools/fidl/lib/fidlgen_cpp/service.go
index d49cd902..8773abf 100644
--- a/tools/fidl/lib/fidlgen_cpp/service.go
+++ b/tools/fidl/lib/fidlgen_cpp/service.go
@@ -15,7 +15,7 @@
type Service struct {
Attributes
- NameVariants
+ nameVariants
ServiceName string
Members []ServiceMember
}
@@ -25,10 +25,11 @@
}
var _ Kinded = (*Service)(nil)
+var _ namespaced = (*Service)(nil)
type ServiceMember struct {
Attributes
- ProtocolType NameVariants
+ ProtocolType nameVariants
Name string
MethodName string
}
@@ -36,7 +37,7 @@
func (c *compiler) compileService(val fidlgen.Service) Service {
s := Service{
Attributes: Attributes{val.Attributes},
- NameVariants: c.compileNameVariants(val.Name),
+ nameVariants: c.compileNameVariants(val.Name),
ServiceName: val.GetServiceName(),
}
diff --git a/tools/fidl/lib/fidlgen_cpp/struct.go b/tools/fidl/lib/fidlgen_cpp/struct.go
index 6a3e955..f63f67b 100644
--- a/tools/fidl/lib/fidlgen_cpp/struct.go
+++ b/tools/fidl/lib/fidlgen_cpp/struct.go
@@ -14,7 +14,7 @@
type Struct struct {
Attributes
fidlgen.Resourceness
- NameVariants
+ nameVariants
CodingTableType string
Members []StructMember
InlineSize int
@@ -37,6 +37,7 @@
}
var _ Kinded = (*Struct)(nil)
+var _ namespaced = (*Struct)(nil)
type StructMember struct {
Attributes
@@ -79,12 +80,12 @@
}
func (c *compiler) compileStruct(val fidlgen.Struct) Struct {
- name := c.compileNameVariants(val.Name)
+ n := c.compileNameVariants(val.Name)
codingTableType := c.compileCodingTableType(val.Name)
r := Struct{
Attributes: Attributes{val.Attributes},
Resourceness: val.Resourceness,
- NameVariants: name,
+ nameVariants: n,
CodingTableType: codingTableType,
Members: []StructMember{},
InlineSize: val.TypeShapeV1.InlineSize,
@@ -103,15 +104,15 @@
result := c.resultForStruct[val.Name]
if result != nil {
- memberTypeNames := []Name{}
+ memberTypeNames := []name{}
for _, m := range r.Members {
memberTypeNames = append(memberTypeNames, m.Type.Natural)
result.ValueMembers = append(result.ValueMembers, m.AsParameter())
}
- result.ValueTupleDecl = MakeTupleName(memberTypeNames)
+ result.ValueTupleDecl = makeTupleName(memberTypeNames)
if len(r.Members) == 0 {
- result.ValueDecl = MakeName("void")
+ result.ValueDecl = makeName("void")
} else if len(r.Members) == 1 {
result.ValueDecl = r.Members[0].Type.Natural
} else {
diff --git a/tools/fidl/lib/fidlgen_cpp/table.go b/tools/fidl/lib/fidlgen_cpp/table.go
index 1b30b9f..785d083 100644
--- a/tools/fidl/lib/fidlgen_cpp/table.go
+++ b/tools/fidl/lib/fidlgen_cpp/table.go
@@ -15,7 +15,7 @@
type Table struct {
Attributes
fidlgen.Resourceness
- NameVariants
+ nameVariants
CodingTableType string
Members []TableMember
InlineSize int
@@ -34,6 +34,7 @@
}
var _ Kinded = (*Table)(nil)
+var _ namespaced = (*Table)(nil)
type TableMember struct {
Attributes
@@ -86,7 +87,7 @@
r := Table{
Attributes: Attributes{val.Attributes},
Resourceness: val.Resourceness,
- NameVariants: name,
+ nameVariants: name,
CodingTableType: codingTableType,
Members: nil,
InlineSize: val.TypeShapeV1.InlineSize,
diff --git a/tools/fidl/lib/fidlgen_cpp/template_funcs.go b/tools/fidl/lib/fidlgen_cpp/template_funcs.go
index 8e8a3a1..282ecec 100644
--- a/tools/fidl/lib/fidlgen_cpp/template_funcs.go
+++ b/tools/fidl/lib/fidlgen_cpp/template_funcs.go
@@ -19,7 +19,7 @@
newNamespace := []string{}
switch v := arg.(type) {
- case Namespaced:
+ case namespaced:
newNamespace = []string(v.Namespace())
case string:
newNamespace = strings.Split(v, "::")
@@ -53,7 +53,7 @@
}
// Update the current namespace variable
- currentNamespace = Namespace(newNamespace)
+ currentNamespace = namespace(newNamespace)
return strings.Join(lines, "\n")
}
@@ -65,7 +65,7 @@
// namespace is generated.
// This allows templates to maintain a consistent C++ namespace as they enter
// and leave #ifdef __Fuchsia__ blocks.
-var namespaceStack = []Namespace{}
+var namespaceStack = []namespace{}
func ifdefFuchsia() string {
namespaceStack = append(namespaceStack, currentNamespace)
@@ -109,7 +109,7 @@
"EndOfFile": endOfFile,
// UseNatural sets the template engine to default to the "natural" domain object
- // namespace, when printing NameVariants.
+ // namespace, when printing nameVariants.
//
// Example of Natural type name: "fuchsia::library::MyType".
"UseNatural": func() string {
@@ -118,7 +118,7 @@
},
// UseUnified sets the template engine to default to the "unified" domain object
- // namespace, when printing NameVariants.
+ // namespace, when printing nameVariants.
//
// Example of Unified type name: "fuchsia_library::MyType".
"UseUnified": func() string {
@@ -127,7 +127,7 @@
},
// UseWire sets the template engine to default to the "wire" domain object
- // namespace, when printing NameVariants.
+ // namespace, when printing nameVariants.
//
// Example of Wire type name: "fuchsia_library::wire::MyType".
"UseWire": func() string {
diff --git a/tools/fidl/lib/fidlgen_cpp/typed_channel_migration.go b/tools/fidl/lib/fidlgen_cpp/typed_channel_migration.go
index f83f6e8..234a3b6 100644
--- a/tools/fidl/lib/fidlgen_cpp/typed_channel_migration.go
+++ b/tools/fidl/lib/fidlgen_cpp/typed_channel_migration.go
@@ -9,9 +9,9 @@
// WireNoTypedChannels returns the LLCPP declaration when the relevant
// API would like to opt out of typed channels.
// TODO(fxbug.dev/65212): Uses of this method should be be replaced by WireDecl.
-func (t *Type) WireNoTypedChannels() Name {
+func (t *Type) WireNoTypedChannels() name {
if t.Kind == TypeKinds.Protocol || t.Kind == TypeKinds.Request {
- return MakeName("zx::channel")
+ return makeName("zx::channel")
}
return t.Wire
}
@@ -40,7 +40,7 @@
func (p Protocol) ShouldEmitTypedChannelCascadingInheritance() bool {
// Note: using the "natural" domain object name, so the migration
// to the wire namespace would not interfere with this check.
- if !rawChannelInterfaceAllowed[p.NameVariants.Wire.String()] {
+ if !rawChannelInterfaceAllowed[p.nameVariants.Wire.String()] {
return false
}
for _, m := range p.Methods {
diff --git a/tools/fidl/lib/fidlgen_cpp/union.go b/tools/fidl/lib/fidlgen_cpp/union.go
index e8016f3..f39742c 100644
--- a/tools/fidl/lib/fidlgen_cpp/union.go
+++ b/tools/fidl/lib/fidlgen_cpp/union.go
@@ -14,13 +14,13 @@
Attributes
fidlgen.Strictness
fidlgen.Resourceness
- NameVariants
+ nameVariants
CodingTableType string
- TagEnum NameVariants
- TagUnknown NameVariants
- TagInvalid NameVariants
- WireOrdinalEnum Name
- WireInvalidOrdinal Name
+ TagEnum nameVariants
+ TagUnknown nameVariants
+ TagInvalid nameVariants
+ WireOrdinalEnum name
+ WireInvalidOrdinal name
Members []UnionMember
InlineSize int
MaxHandles int
@@ -34,6 +34,7 @@
}
var _ Kinded = (*Union)(nil)
+var _ namespaced = (*Union)(nil)
type UnionMember struct {
Attributes
@@ -41,8 +42,8 @@
Type Type
Name string
StorageName string
- TagName NameVariants
- WireOrdinalName Name
+ TagName nameVariants
+ WireOrdinalName name
Offset int
HandleInformation *HandleInformation
}
@@ -57,19 +58,19 @@
func (c *compiler) compileUnion(val fidlgen.Union) Union {
name := c.compileNameVariants(val.Name)
codingTableType := c.compileCodingTableType(val.Name)
- tagEnum := name.Nest("Tag")
- wireOrdinalEnum := name.Wire.Nest("Ordinal")
+ tagEnum := name.nest("Tag")
+ wireOrdinalEnum := name.Wire.nest("Ordinal")
u := Union{
Attributes: Attributes{val.Attributes},
Strictness: val.Strictness,
Resourceness: val.Resourceness,
- NameVariants: name,
+ nameVariants: name,
CodingTableType: codingTableType,
TagEnum: tagEnum,
- TagUnknown: tagEnum.Nest("kUnknown"),
- TagInvalid: tagEnum.Nest("Invalid"),
+ TagUnknown: tagEnum.nest("kUnknown"),
+ TagInvalid: tagEnum.nest("Invalid"),
WireOrdinalEnum: wireOrdinalEnum,
- WireInvalidOrdinal: wireOrdinalEnum.Nest("Invalid"),
+ WireInvalidOrdinal: wireOrdinalEnum.nest("Invalid"),
InlineSize: val.TypeShapeV1.InlineSize,
MaxHandles: val.TypeShapeV1.MaxHandles,
MaxOutOfLine: val.TypeShapeV1.MaxOutOfLine,
@@ -88,8 +89,8 @@
Type: c.compileType(mem.Type),
Name: n,
StorageName: changeIfReserved(mem.Name + "_"),
- TagName: u.TagEnum.Nest(t),
- WireOrdinalName: u.WireOrdinalEnum.Nest(t),
+ TagName: u.TagEnum.nest(t),
+ WireOrdinalName: u.WireOrdinalEnum.nest(t),
Offset: mem.Offset,
HandleInformation: c.fieldHandleInformation(&mem.Type),
})
@@ -97,9 +98,9 @@
if val.MethodResult != nil {
result := Result{
- ResultDecl: u.NameVariants,
- ValueStructDecl: u.Members[0].Type.NameVariants,
- ErrorDecl: u.Members[1].Type.NameVariants,
+ ResultDecl: u.nameVariants,
+ ValueStructDecl: u.Members[0].Type.nameVariants,
+ ErrorDecl: u.Members[1].Type.nameVariants,
}
c.resultForStruct[val.MethodResult.ValueType.Identifier] = &result
c.resultForUnion[val.Name] = &result