コード例 #1
0
        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();
        }
コード例 #2
0
ファイル: Generator.cs プロジェクト: ststeiger/XcbSharp
    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();
    }
コード例 #3
0
ファイル: Generator.cs プロジェクト: emtees/old-code
	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 ();
	}