Esempio n. 1
0
 public void Visit(IntegerEnumField integerEnumField)
 {
     sb.Append("  ");
     sb.Append(integerEnumField.Name);
     sb.Append(" : ");
     sb.Append(integerEnumField.Value);
 }
 public virtual EnumFieldContext FieldFromIdl(IntegerEnumField field)
 {
     return(new EnumFieldContext(field.DocStringLines, _typeMangler.MangleConstantName(field.Name), field.Value));
 }
Esempio n. 3
0
 public void Visit(IntegerEnumField integerEnumField)
 {
     throw new NotImplementedException();
 }
Esempio n. 4
0
 public void Visit(IntegerEnumField integerEnumField)
 {
     throw new NotSupportedException();
 }
Esempio n. 5
0
 public virtual EnumFieldContext FieldFromIdl(IntegerEnumField field)
 {
     return(new EnumFieldContext(field.DocStringLines, field.Name, field.Value));
 }
 public EnumFieldContext FieldFromTrip(IntegerEnumField field)
 {
     return(new EnumFieldContext(field.DocStringLines, MangleCSharpConstantName(field.Name), field.Value));
 }
Esempio n. 7
0
        public static List <Definition> BuildDefinitions(ParseTreeNodeList definitionNodes)
        {
            var definitions = new List <Definition>();

            foreach (var definitionNode in definitionNodes)
            {
                var definitionChildNode = definitionNode.ChildNodes[0];

                if (definitionChildNode.Term.Name == IdlGrammar.CNAME_DOC_STRING)
                {
                    continue;
                }

                string[]           docStringLines = null;
                IList <Annotation> annotations    = null;
                var docStringNode = definitionChildNode.ChildNodes[0];
                if (docStringNode.ChildNodes.Count != 0)
                {
                    docStringLines = ParseDocStringLines(docStringNode.ChildNodes[0].Token.Text);
                }
                var annotationsNode = definitionChildNode.ChildNodes[1];
                if (annotationsNode.ChildNodes.Count != 0)
                {
                    annotations = BuildAnnotations(annotationsNode.ChildNodes);
                }

                if (definitionChildNode.Term.Name == IdlGrammar.NTNAME_TENUM)
                {
                    var enumId               = definitionChildNode.ChildNodes[2].Token.Text;
                    var enumFields           = new List <IntegerEnumField>();
                    int nextDefaultEnumValue = 0; // enumerations start at zero by default
                    foreach (var enumFieldNode in definitionChildNode.ChildNodes[3].ChildNodes)
                    {
                        string[] fieldDocStringLines = null;
                        var      fieldDocStringNode  = enumFieldNode.ChildNodes[0];
                        if (fieldDocStringNode.ChildNodes.Count != 0)
                        {
                            fieldDocStringLines = ParseDocStringLines(fieldDocStringNode.ChildNodes[0].Token.Text);
                        }
                        var enumFieldId = enumFieldNode.ChildNodes[1].Token.Text;
                        IntegerEnumField enumField;
                        if (enumFieldNode.ChildNodes.Count > 1 &&
                            enumFieldNode.ChildNodes[2].ChildNodes != null &&
                            enumFieldNode.ChildNodes[2].ChildNodes.Count > 0) // has enum value
                        {
                            var valueText = enumFieldNode.ChildNodes[2].ChildNodes[0].Token.Text;
                            int enumValue = int.Parse(valueText);
                            enumField = new IntegerEnumField(fieldDocStringLines, enumFieldId, enumValue,
                                                             nextDefaultEnumValue);
                            nextDefaultEnumValue = ++enumValue;
                        }
                        else
                        {
                            enumField = new IntegerEnumField(fieldDocStringLines, enumFieldId, null,
                                                             nextDefaultEnumValue);
                            ++nextDefaultEnumValue;
                        }
                        enumFields.Add(enumField);
                    }
                    var integerEnum = new IntegerEnum(docStringLines, enumId, enumFields, annotations);
                    definitions.Add(integerEnum);
                }
                else if (definitionChildNode.Term.Name == IdlGrammar.NTNAME_TSTRUCT)
                {
                    var name    = definitionChildNode.ChildNodes[2].Token.Text;
                    var fFields = BuildFields(definitionChildNode.ChildNodes[3], name);
                    var @struct = new Struct(docStringLines, name, fFields, annotations);
                    definitions.Add(@struct);
                }
                else if (definitionChildNode.Term.Name == IdlGrammar.NTNAME_TSERVICE)
                {
                    var name = definitionChildNode.ChildNodes[2].Token.Text;
                    IList <BaijiMethod> methods = new List <BaijiMethod>();

                    var functionsChild = definitionChildNode.ChildNodes[3];
                    if (functionsChild.Term.Name == IdlGrammar.NTNAME_FUNCTIONS)
                    {
                        methods = BuildMethods(functionsChild);
                    }

                    var service = new Service(docStringLines, name, methods, annotations);
                    definitions.Add(service);
                }
            }

            // Mark all locally referenced response struct types.
            var structs = definitions.OfType <Struct>().ToList();

            foreach (var service in definitions.OfType <Service>())
            {
                foreach (var method in service.Methods)
                {
                    var responseStruct = structs.FirstOrDefault(s => s.Name == method.ReturnType.Name);
                    if (responseStruct != null)
                    {
                        responseStruct.IsServiceResponse = true;
                    }
                }
            }

            return(definitions);
        }
Esempio n. 8
0
 public EnumFieldContext FieldFromLean(IntegerEnumField field)
 {
     return(new EnumFieldContext(field.DocStringLines, MangleJavaConstantName(field.Name), field.Value));
 }