MemberDeclarationSyntax GenXidType(@xidtype x) { if (x.name == null) { return(null); // FIXME } string xName = typeMap.NewTypeToCs(x.name, "Id"); /* * * AttributeList( * SingletonSeparatedList<AttributeSyntax>( * Attribute( * IdentifierName("StructLayout"), * AttributeArgumentList( * SeparatedList(new[] { * AttributeArgument( * MemberAccessExpression(SyntaxKind.SimpleMemberAccessExpression, * IdentifierName("LayoutKind"), * IdentifierName("Explicit"))) * }))))))*/ FieldDeclarationSyntax valueDec = FieldDeclaration(SingletonList( AttributeList(SeparatedList(new[] { Attribute( IdentifierName("FieldOffset"), AttributeArgumentList( SingletonSeparatedList( AttributeArgument( LiteralExpression(SyntaxKind.NumericLiteralExpression, Literal(0)))))) }))), TokenList(Token(SyntaxKind.PrivateKeyword)), VariableDeclaration(PredefinedType(Token(SyntaxKind.UIntKeyword)), SeparatedList(new[] { VariableDeclarator("Value") }))); cwt.WriteLine("[StructLayout (LayoutKind.Explicit, Pack=1, CharSet=CharSet.Ansi)]"); cwt.WriteLine("public struct " + xName); cwt.WriteLine("{"); cwt.WriteLine("[FieldOffset (0)]"); cwt.WriteLine("private uint Value;"); cwt.WriteLine(); cwt.WriteLine("public " + xName + " (uint value)"); cwt.WriteLine("{"); cwt.WriteLine("this.Value = value;"); cwt.WriteLine("}"); cwt.WriteLine(); cwt.WriteLine("public static implicit operator uint (" + xName + " x)"); cwt.WriteLine("{"); cwt.WriteLine("return x.Value;"); cwt.WriteLine("}"); cwt.WriteLine(); cwt.WriteLine("public static implicit operator Id (" + xName + " x)"); cwt.WriteLine("{"); cwt.WriteLine("return new Id (x);"); cwt.WriteLine("}"); cwt.WriteLine(); //TODO: generalize if (xName == "AtomId") { cwt.WriteLine("public static implicit operator " + xName + " (AtomType xt)"); cwt.WriteLine("{"); cwt.WriteLine("return new " + xName + " ((uint) xt);"); cwt.WriteLine("}"); cwt.WriteLine(); } cwt.WriteLine("public static explicit operator " + xName + " (Id x)"); cwt.WriteLine("{"); cwt.WriteLine("return new " + xName + " (x);"); cwt.WriteLine("}"); cwt.WriteLine("}"); cwt.WriteLine(); }
static void GenXidType(@xidtype x) { if (x.name == null) { return; } /* * field f = new field (); * f.type = "CARD32"; * f.name = "Id"; * * field[] xItems = new field[1]; * xItems[0] = f; * * GenClass (NewTypeToCs (x.name), xItems); */ string xName = NewTypeToCs(x.name, "Id"); cwt.WriteLine("[StructLayout (LayoutKind.Explicit, Pack=1, CharSet=CharSet.Ansi)]"); cwt.WriteLine("public struct " + xName); idMap.Add(xName, "uint"); cwt.WriteLine("{"); cwt.WriteLine("[FieldOffset (0)]"); cwt.WriteLine("private uint Value;"); cwt.WriteLine(); cwt.WriteLine("public " + xName + " (uint value)"); cwt.WriteLine("{"); cwt.WriteLine("this.Value = value;"); cwt.WriteLine("}"); cwt.WriteLine(); cwt.WriteLine("public static implicit operator uint (" + xName + " x)"); cwt.WriteLine("{"); cwt.WriteLine("return x.Value;"); cwt.WriteLine("}"); cwt.WriteLine(); cwt.WriteLine("public static implicit operator Id (" + xName + " x)"); cwt.WriteLine("{"); cwt.WriteLine("return new Id (x);"); cwt.WriteLine("}"); cwt.WriteLine(); //TODO: generalize if (xName == "AtomId") { cwt.WriteLine("public static implicit operator " + xName + " (" + "Atom" + "Type" + " xt)"); cwt.WriteLine("{"); cwt.WriteLine("return new " + xName + " ((uint)xt);"); cwt.WriteLine("}"); cwt.WriteLine(); } /* * cwt.WriteLine ("public static explicit operator " + xName + " (uint xid)"); * cwt.WriteLine ("{"); * cwt.WriteLine ("return new " + xName + " (xid);"); * cwt.WriteLine ("}"); */ cwt.WriteLine("public static explicit operator " + xName + " (Id x)"); cwt.WriteLine("{"); cwt.WriteLine("return new " + xName + " (x);"); cwt.WriteLine("}"); cwt.WriteLine("}"); cwt.WriteLine(); }
static void GenXidType (@xidtype x) { if (x.name == null) return; /* field f = new field (); f.type = "CARD32"; f.name = "Id"; field[] xItems = new field[1]; xItems[0] = f; GenClass (NewTypeToCs (x.name), xItems); */ string xName = NewTypeToCs (x.name, "Id"); cwt.WriteLine ("[StructLayout (LayoutKind.Explicit, Pack=1, CharSet=CharSet.Ansi)]"); cwt.WriteLine ("public struct " + xName); idMap.Add (xName, "uint"); cwt.WriteLine ("{"); cwt.WriteLine ("[FieldOffset (0)]"); cwt.WriteLine ("private uint Value;"); cwt.WriteLine (); cwt.WriteLine ("public " + xName + " (uint value)"); cwt.WriteLine ("{"); cwt.WriteLine ("this.Value = value;"); cwt.WriteLine ("}"); cwt.WriteLine (); cwt.WriteLine ("public static implicit operator uint (" + xName + " x)"); cwt.WriteLine ("{"); cwt.WriteLine ("return x.Value;"); cwt.WriteLine ("}"); cwt.WriteLine (); cwt.WriteLine ("public static implicit operator Id (" + xName + " x)"); cwt.WriteLine ("{"); cwt.WriteLine ("return new Id (x);"); cwt.WriteLine ("}"); cwt.WriteLine (); //TODO: generalize if (xName == "AtomId") { cwt.WriteLine ("public static implicit operator " + xName + " (" + "Atom" + "Type" + " xt)"); cwt.WriteLine ("{"); cwt.WriteLine ("return new " + xName + " ((uint)xt);"); cwt.WriteLine ("}"); cwt.WriteLine (); } /* cwt.WriteLine ("public static explicit operator " + xName + " (uint xid)"); cwt.WriteLine ("{"); cwt.WriteLine ("return new " + xName + " (xid);"); cwt.WriteLine ("}"); */ cwt.WriteLine ("public static explicit operator " + xName + " (Id x)"); cwt.WriteLine ("{"); cwt.WriteLine ("return new " + xName + " (x);"); cwt.WriteLine ("}"); cwt.WriteLine ("}"); cwt.WriteLine (); }