Beispiel #1
0
        /* type-specifier:
         *    void
         *    char
         *    short
         *    int
         *    long
         *    float
         *    double
         *    signed
         *    unsigned
         *    _Bool                          -- C99
         *    _Complex                       -- C99
         *    _Imaginary                     -- C99
         *    struct-or-union-specifier
         *    enum-specifier
         *    typedef-name.
         *
         * GNU extensions.
         * simple-type-specifier:
         *    __complex__
         *    __vector__   */

        void TypeSpecifier(DataType t)
        {
            if (t is UnknownType)
            {
                fmt.Write("<type-error>");
                return;
            }
            else if (t is EquivalenceClass)
            {
                fmt.Write(t.Name);
                return;
            }
            else if (t is PrimitiveType)
            {
                //case tree_code.VOID_TYPE:
                //case tree_code.BOOLEAN_TYPE:
                //case tree_code.CHAR_TYPE:
                //case tree_code.INTEGER_TYPE:
                //case tree_code.REAL_TYPE:
                //if (TYPE_NAME(t) != null)
                //    t = TYPE_NAME(t);
                //else
                //    t = c_common_type_for_mode(TYPE_MODE(t), TREE_UNSIGNED(t));
                WritePrimitiveTypeName((PrimitiveType)t);
                //if (declaration && !string.IsNullOrEmpty(declaredName))
                //    fmt.Write(' ');
                return;
            }
            else if (t is VoidType)
            {
                WriteVoidType((VoidType)t);
                return;
            }
            else if (t is UnionType)
            {
                fmt.WriteKeyword("union");
            }
            else if (t is StructureType)
            {
                fmt.WriteKeyword("struct");
            }
            else if (t is EnumType)
            {
                fmt.WriteKeyword("enum");
            }
            fmt.Write(" ");
            if (string.IsNullOrEmpty(t.Name))
            {
                fmt.Write("<anonymous>");
            }
            else
            {
                fmt.Write(t.Name);
            }
        }
Beispiel #2
0
 public void VisitOutArgument(OutArgument outArg)
 {
     writer.WriteKeyword("out");
     writer.Write(" ");
     WriteExpression(outArg.Expression);
 }
Beispiel #3
0
 public override void WriteKeyword(string keyword)
 {
     WritePrefix();
     w.WriteKeyword(keyword);
 }
Beispiel #4
0
        public void VisitPointer(Pointer ptr)
        {
            switch (ptr.Size)
            {
            case 2:
                fmt.WriteKeyword("dw");
                fmt.Write("\t");
                fmt.Write(string.Format("0x{0:X4}", rdr.ReadByte()));
                fmt.WriteLine();
                return;

            case 4:
                fmt.WriteKeyword("dd");
                fmt.Write("\t");
                fmt.Write(string.Format("0x{0:X8}", rdr.ReadUInt32()));
                fmt.WriteLine();
                return;

            case 8:
                fmt.WriteKeyword("dq");
                fmt.Write("\t");
                fmt.Write(string.Format("0x{0:X16}", rdr.ReadUInt64()));
                fmt.WriteLine();
                return;
            }
        }