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; }