public StructContext StructFromLean(Struct _struct)
        {
            var name = MangleJavaTypeName(_struct.Name);
            var javaType = typeRegistry.FindType(defaultNamespace, name);

            return new StructContext(name, javaType.Package, javaType.SimpleName, 0);
        }
        public StructContext StructFromTrip(Struct _struct)
        {
            var name = MangleCSharpTypeName(_struct.Name);
            var csharpType = typeRegistry.FindType(defaultNamespace, name);

            return new StructContext(name, csharpType.TypeNamespace, csharpType.TypeName, 0);
        }
 public void Visit(Struct _struct)
 {
     sb.Append("Struct ").Append(_struct.Name).AppendLine(" {");
     int count = _struct.Fields.Count;
     foreach (var field in _struct.Fields)
     {
         sb.Append("  "); // ident
         Visit(field);
         if (count > 1)
         {
             sb.AppendLine(";");
         }
         count--;
     }
     sb.AppendLine().AppendLine("}");
 }
        public void Visit(Struct _struct)
        {
            var structContext = contextGenerator.StructFromLean(_struct);

            foreach (var field in _struct.Fields)
            {
                structContext.AddField(contextGenerator.FieldFromLean(field));
            }

            Render(structContext, "struct");
        }
 public void Visit(Struct _struct)
 {
     throw new NotImplementedException();
 }
        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.NTNAME_TENUM)
                {
                    var enumId = definitionChildNode.ChildNodes[0].Token.Text;
                    var enumFields = new List<IntegerEnumField>();
                    int nextDefaultEnumValue = 0; // trip enumerations start at zero by default
                    foreach (var enumFieldNode in definitionChildNode.ChildNodes[1].ChildNodes)
                    {
                        var enumFeildId = enumFieldNode.ChildNodes[0].Token.Text;
                        IntegerEnumField enumField = null;
                        if (enumFieldNode.ChildNodes.Count > 1 && 
                            enumFieldNode.ChildNodes[1].ChildNodes != null && 
                            enumFieldNode.ChildNodes[1].ChildNodes.Count > 0) // has enum value
                        {
                            var valueText = enumFieldNode.ChildNodes[1].ChildNodes[0].Token.Text;
                            int enumValue = int.Parse(valueText);
                            enumField = new IntegerEnumField(enumFeildId, enumValue, nextDefaultEnumValue);
                            nextDefaultEnumValue = ++enumValue;
                        }
                        else
                        {
                            enumField = new IntegerEnumField(enumFeildId, null, nextDefaultEnumValue);
                            ++nextDefaultEnumValue;
                        }
                        enumFields.Add(enumField);
                    }
                    var integerEnum = new IntegerEnum(enumId, enumFields);
                    definitions.Add(integerEnum);
                }
                else if (definitionChildNode.Term.Name == IdlGrammar.NTNAME_TSTRUCT)
                {
                    var name = definitionChildNode.ChildNodes[0].Token.Text;
                    var tripFields = BuildTripFields(definitionChildNode.ChildNodes[1], name);

                    var tripStruct = new Struct(name, tripFields);
                    definitions.Add(tripStruct);
                }
                else if (definitionChildNode.Term.Name == IdlGrammar.NTNAME_TSERVICE)
                {
                    var name = definitionChildNode.ChildNodes[0].Token.Text;
                    List<TripMethod> methods = new List<TripMethod>();

                    var firstChild = definitionChildNode.ChildNodes[1];
                    if (firstChild.Term.Name == IdlGrammar.NTNAME_FUNCTIONS)
                    {
                        methods = BuildTripMethods(definitionChildNode.ChildNodes[1]);
                    }
                    var service = new Service(name, methods);
                    definitions.Add(service);
                }
            }


            return definitions;
        }