Index: mojom/mojom_parser/mojom/computed_data.go |
diff --git a/mojom/mojom_parser/mojom/computed_data.go b/mojom/mojom_parser/mojom/computed_data.go |
index 9297df5547198fea6ca46de819f4c8a7b11ca7c1..40befafb21c37206ab6e182c811ffb4bcc080905 100644 |
--- a/mojom/mojom_parser/mojom/computed_data.go |
+++ b/mojom/mojom_parser/mojom/computed_data.go |
@@ -8,13 +8,47 @@ import ( |
"fmt" |
) |
-// ComputeEnumValueIntegers() should be invoked after Resolve() has completed |
-// successfully. It computes the |ComputedIntValue| field of all EnumValues. |
-func (d *MojomDescriptor) ComputeEnumValueIntegers() error { |
+// ComputeFinalData() should be invoked after Resolve() has completed |
+// successfully. It computes the field packing and version data that will |
+// be used by the code generators. |
+func (d *MojomDescriptor) ComputeFinalData() error { |
for _, userDefinedType := range d.TypesByKey { |
- switch userDefinedType := userDefinedType.(type) { |
- case *MojomEnum: |
- if err := d.computeEnumValueIntegersForEnum(userDefinedType); err != nil { |
+ if err := userDefinedType.ComputeFinalData(); err != nil { |
+ return err |
+ } |
+ } |
+ return nil |
+} |
+ |
+func (e *MojomEnum) ComputeFinalData() error { |
+ return e.ComputeEnumValueIntegers() |
+} |
+ |
+func (e *MojomStruct) ComputeFinalData() error { |
+ if err := e.ComputeVersionInfo(); err != nil { |
+ return err |
+ } |
+ if err := e.ComputeFieldOffsets(); err != nil { |
+ return err |
+ } |
+ return nil |
+} |
+ |
+func (i *MojomInterface) ComputeFinalData() error { |
+ for _, method := range i.MethodsByOrdinal { |
+ if method.Parameters != nil { |
+ if err := (*method.Parameters).ComputeVersionInfo(); err != nil { |
+ return err |
+ } |
+ if err := (*method.Parameters).ComputeFieldOffsets(); err != nil { |
+ return err |
+ } |
+ } |
+ if method.ResponseParameters != nil { |
+ if err := (*method.ResponseParameters).ComputeVersionInfo(); err != nil { |
+ return err |
+ } |
+ if err := (*method.ResponseParameters).ComputeFieldOffsets(); err != nil { |
return err |
} |
} |
@@ -22,15 +56,19 @@ func (d *MojomDescriptor) ComputeEnumValueIntegers() error { |
return nil |
} |
-// computeEnumValueIntegersForEnum() computes the |ComputedIntValue| field of all |
+func (u *MojomUnion) ComputeFinalData() error { |
+ return nil |
+} |
+ |
+// ComputeEnumValueIntegers() computes the |ComputedIntValue| field of all |
// the values in |enum|. |
-func (d *MojomDescriptor) computeEnumValueIntegersForEnum(enum *MojomEnum) error { |
+func (enum *MojomEnum) ComputeEnumValueIntegers() error { |
previousValue := int32(-1) |
for _, enumValue := range enum.Values { |
if enumValue.ValueRef() == nil { |
previousValue++ |
} else { |
- value, err := d.int32EnumValueFromValue(enum, enumValue.ValueRef()) |
+ value, err := int32EnumValueFromValue(enum, enumValue.ValueRef()) |
if err != nil { |
return err |
} |
@@ -63,7 +101,7 @@ func (d *MojomDescriptor) computeEnumValueIntegersForEnum(enum *MojomEnum) error |
// prior to the current attempt. In practice this means it is safe for an EnumValue |
// to be initialized in terms of an earlier EnumValue from the same Enum. Future enhancements |
// may allow more general patterns. |
-func (d *MojomDescriptor) int32EnumValueFromValue(enum *MojomEnum, valueRef ValueRef) (int32, error) { |
+func int32EnumValueFromValue(enum *MojomEnum, valueRef ValueRef) (int32, error) { |
var int32EnumValue int32 |
switch specifiedValue := valueRef.(type) { |
case LiteralValue: |
@@ -110,11 +148,3 @@ func (d *MojomDescriptor) int32EnumValueFromValue(enum *MojomEnum, valueRef Valu |
} |
return int32EnumValue, nil |
} |
- |
-// ComputeDataForGenerators() should be invoked after Resolve() has completed |
-// successfully. It computes the field packing and version data that will |
-// be used by the code generators. |
-func (d *MojomDescriptor) ComputeDataForGenerators() error { |
- // TODO(rudominer) Implement ComputeDataForGenerators(). |
- return nil |
-} |