Mercurial > projects > dil
diff trunk/src/dil/TypeSystem.d @ 522:812f497b20dc
Added module dil.TypesEnum.
Added struct TypeMetaInfo and metaInfoTable array.
Added type member to class Expression.
author | Aziz K?ksal <aziz.koeksal@gmail.com> |
---|---|
date | Sun, 16 Dec 2007 19:14:21 +0100 |
parents | 112c17300069 |
children | a3f66502ea64 |
line wrap: on
line diff
--- a/trunk/src/dil/TypeSystem.d Sat Dec 15 22:51:27 2007 +0100 +++ b/trunk/src/dil/TypeSystem.d Sun Dec 16 19:14:21 2007 +0100 @@ -5,10 +5,20 @@ module dil.TypeSystem; import dil.Symbol; +import dil.TypesEnum; abstract class Type : Symbol { Type next; + TYP typ; + + this(){} + + this(Type next, TYP typ) + { + this.next = next; + this.typ = typ; + } } class TypeBasic : Type @@ -26,6 +36,11 @@ } +class TypeSArray : Type +{ + +} + class TypePointer : Type { @@ -35,3 +50,58 @@ { } + +struct TypeMetaInfo +{ + char mangle; /// Mangle character of the type. + size_t size; /// Byte size of the type. +} + +static const TypeMetaInfo metaInfoTable[] = [ + {'?', -1}, // Error + + {'a', 1}, // Char + {'u', 2}, // Wchar + {'w', 4}, // Dchar + {'b', 1}, // Bool + {'g', 1}, // Byte + {'h', 1}, // Ubyte + {'s', 2}, // Short + {'t', 2}, // Ushort + {'i', 4}, // Int + {'k', 4}, // Uint + {'l', 8}, // Long + {'m', 8}, // Ulong + {'?', 16}, // Cent + {'?', 16}, // Ucent + {'f', 4}, // Float + {'d', 8}, // Double + {'e', 12}, // Real + {'o', 4}, // Ifloat + {'p', 8}, // Idouble + {'j', 12}, // Ireal + {'q', 8}, // Cfloat + {'r', 16}, // Cdouble + {'c', 24}, // Creal + {'v', 1}, // void + + {'n', -1}, // None + + {'A', 8}, // Dynamic array + {'G', 8}, // Static array + {'H', 8}, // Associative array + + {'E', -1}, // Enum + {'S', -1}, // Struct + {'C', -1}, // Class + {'T', -1}, // Typedef + {'F', -1}, // Function + {'D', -1}, // Delegate + {'P', -1}, // Pointer + {'R', -1}, // Reference + {'I', -1}, // Identifier + {'?', -1}, // Template instance + {'B', -1}, // Tuple + {'x', -1}, // Const, D2 + {'y', -1}, // Invariant, D2 +];