Esempio n. 1
0
 public SerializedType VisitEnum(EnumeratorTypeSpec e)
 {
     if (e.Tag == null || !symbolTable.EnumsSeen.TryGetValue(e.Tag, out var _))
     {
         var en = new SerializedEnumType {
             Name = e.Tag ?? string.Format("enum_{0}", symbolTable.EnumsSeen.Count)
         };
         symbolTable.EnumsSeen.Add(en.Name, en);
         var enumEvaluator = new EnumEvaluator(new CConstantEvaluator(platform, symbolTable.Constants));
         var listMembers   = new List <SerializedEnumValue>();
         foreach (var item in e.Enums)
         {
             var ee = new SerializedEnumValue
             {
                 Name  = item.Name,
                 Value = enumEvaluator.GetValue(item.Value),
             };
             symbolTable.Constants.Add(ee.Name, ee.Value);
             listMembers.Add(ee);
         }
         en.Values = listMembers.ToArray();
         symbolTable.Types.Add(en);
         return(new SerializedEnumType {
             Name = en.Name
         });
     }
     else
     {
         return(new SerializedEnumType {
             Name = e.Tag
         });
     }
 }
Esempio n. 2
0
        public SerializedType VisitEnum(EnumeratorTypeSpec e)
        {
            SerializedEnumType en;

            if (e.Tag == null || !converter.EnumsSeen.TryGetValue(e.Tag, out en))
            {
                en = new SerializedEnumType {
                    Name = e.Tag != null
                        ? e.Tag
                        : string.Format("enum_{0}", converter.EnumsSeen.Count)
                };
                converter.EnumsSeen.Add(en.Name, en);
                var enumEvaluator = new EnumEvaluator(new CConstantEvaluator(converter.Constants));
                var listMembers   = new List <SerializedEnumValue>();
                foreach (var item in e.Enums)
                {
                    var ee = new SerializedEnumValue
                    {
                        Name  = item.Name,
                        Value = enumEvaluator.GetValue(item.Value),
                    };
                    converter.Constants.Add(ee.Name, ee.Value);
                    listMembers.Add(ee);
                }
                en.Values = listMembers.ToArray();
                converter.Types.Add(en);
                en = new SerializedEnumType {
                    Name = en.Name
                };
            }
            else
            {
                en = new SerializedEnumType {
                    Name = e.Tag
                };
            }
            return(en);
        }