public EnumerationDefinition MakeEnumerationDefinition(Enumeration enumeration, string name)
        {
            name = string.IsNullOrEmpty(enumeration.Name) ? name : enumeration.Name;
            var result = new EnumerationDefinition {
                Name = name
            };

            if (_context.IsKnownUnitName(name))
            {
                return(result);
            }
            _context.AddUnit(result);

            result.TypeName = TypeHelper.GetTypeName(enumeration.Type);
            result.Content  = enumeration.Comment?.BriefText;
            result.Items    = enumeration.Items
                              .Select(x =>
                                      new EnumerationItem
            {
                Name    = x.Name,
                Value   = ConvertValue(x.Value, enumeration.BuiltinType.Type).ToString(),
                Content = x.Comment?.BriefText
            })
                              .ToArray();
            return(result);
        }
예제 #2
0
 public void Write(EnumerationDefinition enumeration)
 {
     WriteSummary(enumeration);
     WriteLine($"public enum {enumeration.Name} : {enumeration.TypeName}");
     using (BeginBlock())
         foreach (var item in enumeration.Items)
         {
             WriteSummary(item);
             WriteLine($"@{item.Name} = {item.Value},");
         }
 }
예제 #3
0
        private static EnumerationDefinition GradeDefinition()
        {
            EnumerationDefinition grade = new EnumerationDefinition("Grade");

            grade.AddValue("A");
            grade.AddValue("B");
            grade.AddValue("C");
            grade.AddValue("D");
            grade.AddValue("E");
            grade.AddValue("F");
            return(grade);
        }
예제 #4
0
        private static void DumpEnumerations(CacheFile scriptCacheFile)
        {
            EnumerationDefinition previousEnumeration = null;
            var sb = new StringBuilder();

            foreach (var tuple in scriptCacheFile.Definitions
                     .OfType <EnumerationDefinition>()
                     .Select(e => (enumeration: e, path: e.ToPath()))
                     .OrderBy(t => t.path))
            {
                var(enumeration, path) = tuple;

                if (previousEnumeration != null)
                {
                    sb.AppendLine();
                }

                sb.AppendLine($"enum {path} // {enumeration.Size}");
                sb.AppendLine("{");
                foreach (var enumeral in enumeration.Enumerals)
                {
                    sb.Append("  ");
                    if (string.IsNullOrEmpty(enumeral.Name) == true)
                    {
                        sb.Append("_ /* blank name */");
                    }
                    else
                    {
                        sb.Append(enumeral.Name);
                    }

                    sb.AppendLine($" = {enumeral.Value},");
                }
                sb.AppendLine("}");

                previousEnumeration = enumeration;
            }

            File.WriteAllText("test_enumeration_dump.txt", sb.ToString(), Encoding.UTF8);
        }
예제 #5
0
 /// <summary>
 /// Generates an enumeration type
 /// </summary>
 /// <param name="emitter">The emitter to write to</param>
 /// <param name="typeName">The name of the type</param>
 /// <param name="def">The enumeration definition</param>
 private void _generateEnumeration(CSharpEmitter emitter, string typeName, string fieldName, EnumerationDefinition def)
 {
     typeName = _getDefinitionName(typeName, fieldName, def);
     using (var e = emitter.Enum(typeName))
     {
         for (int i = 0; i < def.Options.Length; i++)
         {
             var opt     = def.Options[i];
             var optName = _transformFieldName(opt.Name);
             e.EnumValue(optName, opt.Value, i == def.Options.Length - 1);
         }
     }
 }
예제 #6
0
 public void Deconstruct(out EnumerationDefinition enumeration, out EnumeralDefinition enumeral)
 {
     enumeration = this.Enumeration;
     enumeral    = this.Enumeral;
 }
예제 #7
0
 public EnumConst(EnumerationDefinition enumeration, EnumeralDefinition enumeral)
 {
     this.Enumeration = enumeration;
     this.Enumeral    = enumeral;
 }