| OLD | NEW | 
| (Empty) |  | 
 |   1 // Copyright 2016 The Chromium Authors. All rights reserved. | 
 |   2 // Use of this source code is governed by a BSD-style license that can be | 
 |   3 // found in the LICENSE file. | 
 |   4  | 
 |   5 package translator | 
 |   6  | 
 |   7 import ( | 
 |   8         "fmt" | 
 |   9         "log" | 
 |  10  | 
 |  11         "mojom/generated/mojom_types" | 
 |  12 ) | 
 |  13  | 
 |  14 func (t *translator) translateValue(mojomValue mojom_types.Value) (value string)
     { | 
 |  15         switch m := mojomValue.(type) { | 
 |  16         default: | 
 |  17                 log.Panicf("Not implemented yet: %s", mojomValue) | 
 |  18         case *mojom_types.ValueLiteralValue: | 
 |  19                 value = t.translateLiteralValue(m.Value) | 
 |  20         case *mojom_types.ValueEnumValueReference: | 
 |  21                 value = t.translateEnumValueReference(m.Value) | 
 |  22         case *mojom_types.ValueConstantReference: | 
 |  23                 value = t.translateConstantReference(m.Value) | 
 |  24         case *mojom_types.ValueBuiltinValue: | 
 |  25                 log.Panicln("There is no way to represent built-in mojom values 
    as literals in go.") | 
 |  26         } | 
 |  27  | 
 |  28         return value | 
 |  29 } | 
 |  30  | 
 |  31 func (t *translator) translateConstantReference(constRef mojom_types.ConstantRef
    erence) (value string) { | 
 |  32         declaredConstant := t.fileGraph.ResolvedConstants[constRef.ConstantKey] | 
 |  33         srcFileInfo := declaredConstant.DeclData.SourceFileInfo | 
 |  34         value = t.goConstName(constRef.ConstantKey) | 
 |  35  | 
 |  36         if srcFileInfo != nil && srcFileInfo.FileName != t.currentFileName { | 
 |  37                 pkgName := fileNameToPackageName(srcFileInfo.FileName) | 
 |  38                 t.importMojomFile(srcFileInfo.FileName) | 
 |  39                 value = fmt.Sprintf("%s.%s", pkgName, value) | 
 |  40         } | 
 |  41  | 
 |  42         return | 
 |  43 } | 
 |  44  | 
 |  45 func (t *translator) translateLiteralValue(literalValue mojom_types.LiteralValue
    ) (value string) { | 
 |  46         if s, ok := literalValue.(*mojom_types.LiteralValueStringValue); ok { | 
 |  47                 return fmt.Sprintf("%q", s.Value) | 
 |  48         } | 
 |  49         return fmt.Sprintf("%v", literalValue.Interface()) | 
 |  50 } | 
 |  51  | 
 |  52 func (t *translator) translateEnumValueReference(enumValueRef mojom_types.EnumVa
    lueReference) string { | 
 |  53         enumTypeRef := mojom_types.TypeReference{TypeKey: &enumValueRef.EnumType
    Key} | 
 |  54         enumName := t.translateTypeReference(enumTypeRef) | 
 |  55  | 
 |  56         e := t.GetUserDefinedType(enumValueRef.EnumTypeKey) | 
 |  57         enum, ok := e.Interface().(mojom_types.MojomEnum) | 
 |  58         if !ok { | 
 |  59                 log.Panicf("%s is not an enum.\n", userDefinedTypeShortName(e)) | 
 |  60         } | 
 |  61  | 
 |  62         enumValueName := formatName(*enum.Values[enumValueRef.EnumValueIndex].De
    clData.ShortName) | 
 |  63         return fmt.Sprintf("%s_%s", enumName, enumValueName) | 
 |  64 } | 
 |  65  | 
 |  66 func (t *translator) resolveConstRef(value mojom_types.Value) mojom_types.Value 
    { | 
 |  67         constRef, ok := value.(*mojom_types.ValueConstantReference) | 
 |  68         if !ok { | 
 |  69                 return value | 
 |  70         } | 
 |  71  | 
 |  72         declaredConstant := t.fileGraph.ResolvedConstants[constRef.Value.Constan
    tKey] | 
 |  73         return t.resolveConstRef(declaredConstant.Value) | 
 |  74 } | 
| OLD | NEW |