Mercurial > projects > ddmd
view dmd/Id.d @ 114:e28b18c23469
added a module dmd.common for commonly used stuff
it currently holds code for consistency checking of predefined versions
also added a VisualD project file
author | Trass3r |
---|---|
date | Wed, 01 Sep 2010 18:21:58 +0200 |
parents | e6090d1aea7c |
children | 60bb0fe4563e |
line wrap: on
line source
module dmd.Id; import dmd.common; import dmd.Identifier; import dmd.Lexer; private string idgen(T...)(T ts) { string res = "struct Id\n{\n"; foreach(entry; ts) res ~= "\tstatic Identifier " ~ entry.ident ~ ";\n"; res ~= "\tstatic void initialize()\n\t{\n"; string tmp; foreach (entry; ts) { if (entry.name_ is null) tmp = entry.ident; else tmp = entry.name_; res ~= "\t\t" ~ entry.ident ~ ` = Lexer.idPool("` ~ tmp ~ "\");\n"; } res ~= "\t}\n}"; return res; } private struct ID { string ident; // name to use in DMD source string name_; // name in D executable } mixin(idgen( ID( "IUnknown" ), ID( "Object_", "Object" ), ID( "object" ), ID( "max" ), ID( "min" ), ID( "This", "this" ), ID( "ctor", "__ctor" ), ID( "dtor", "__dtor" ), ID( "cpctor", "__cpctor" ), ID( "_postblit", "__postblit" ), ID( "classInvariant", "__invariant" ), ID( "unitTest", "__unitTest" ), ID( "require", "__require" ), ID( "ensure", "__ensure" ), ID( "init_", "init" ), ID( "size" ), ID( "__sizeof", "sizeof" ), ID( "alignof_", "alignof" ), ID( "mangleof_", "mangleof" ), ID( "stringof_", "stringof" ), ID( "tupleof_", "tupleof" ), ID( "length" ), ID( "remove" ), ID( "ptr" ), ID( "funcptr" ), ID( "dollar", "__dollar" ), ID( "offset" ), ID( "offsetof" ), ID( "ModuleInfo" ), ID( "ClassInfo" ), ID( "classinfo_", "classinfo" ), ID( "typeinfo_", "typeinfo" ), ID( "outer" ), ID( "Exception" ), ID( "AssociativeArray" ), ID( "Throwable" ), ID( "withSym", "__withSym" ), ID( "result", "__result" ), ID( "returnLabel", "__returnLabel" ), ID( "delegate_", "delegate" ), ID( "line" ), ID( "empty", "" ), ID( "p" ), ID( "coverage", "__coverage" ), ID( "__vptr" ), ID( "__monitor" ), ID( "system" ), ID( "TypeInfo" ), ID( "TypeInfo_Class" ), ID( "TypeInfo_Interface" ), ID( "TypeInfo_Struct" ), ID( "TypeInfo_Enum" ), ID( "TypeInfo_Typedef" ), ID( "TypeInfo_Pointer" ), ID( "TypeInfo_Array" ), ID( "TypeInfo_StaticArray" ), ID( "TypeInfo_AssociativeArray" ), ID( "TypeInfo_Function" ), ID( "TypeInfo_Delegate" ), ID( "TypeInfo_Tuple" ), ID( "TypeInfo_Const" ), ID( "TypeInfo_Invariant" ), ID( "TypeInfo_Shared" ), ID( "elements" ), ID( "_arguments_typeinfo" ), ID( "_arguments" ), ID( "_argptr" ), ID( "_match" ), ID( "destroy" ), ID( "LINE", "__LINE__" ), ID( "FILE", "__FILE__" ), ID( "DATE", "__DATE__" ), ID( "TIME", "__TIME__" ), ID( "TIMESTAMP", "__TIMESTAMP__" ), ID( "VENDOR", "__VENDOR__" ), ID( "VERSIONX", "__VERSION__" ), ID( "EOFX", "__EOF__" ), ID( "nan" ), ID( "infinity" ), ID( "dig" ), ID( "epsilon" ), ID( "mant_dig" ), ID( "max_10_exp" ), ID( "max_exp" ), ID( "min_10_exp" ), ID( "min_exp" ), ID( "min_normal" ), ID( "re" ), ID( "im" ), ID( "C" ), ID( "D" ), ID( "Windows" ), ID( "Pascal" ), ID( "System" ), ID( "exit" ), ID( "success" ), ID( "failure" ), ID( "keys" ), ID( "values" ), ID( "rehash" ), ID( "sort" ), ID( "reverse" ), ID( "dup" ), ID( "idup" ), ID( "property" ), // For inline assembler ID( "___out", "out" ), ID( "___in", "in" ), ID( "__int", "int" ), ID( "__dollar", "$" ), ID( "__LOCAL_SIZE" ), // For operator overloads ID( "uadd", "opPos" ), ID( "neg", "opNeg" ), ID( "com", "opCom" ), ID( "add", "opAdd" ), ID( "add_r", "opAdd_r" ), ID( "sub", "opSub" ), ID( "sub_r", "opSub_r" ), ID( "mul", "opMul" ), ID( "mul_r", "opMul_r" ), ID( "div", "opDiv" ), ID( "div_r", "opDiv_r" ), ID( "mod", "opMod" ), ID( "mod_r", "opMod_r" ), ID( "eq", "opEquals" ), ID( "cmp", "opCmp" ), ID( "iand", "opAnd" ), ID( "iand_r", "opAnd_r" ), ID( "ior", "opOr" ), ID( "ior_r", "opOr_r" ), ID( "ixor", "opXor" ), ID( "ixor_r", "opXor_r" ), ID( "shl", "opShl" ), ID( "shl_r", "opShl_r" ), ID( "shr", "opShr" ), ID( "shr_r", "opShr_r" ), ID( "ushr", "opUShr" ), ID( "ushr_r", "opUShr_r" ), ID( "cat", "opCat" ), ID( "cat_r", "opCat_r" ), ID( "assign", "opAssign" ), ID( "addass", "opAddAssign" ), ID( "subass", "opSubAssign" ), ID( "mulass", "opMulAssign" ), ID( "divass", "opDivAssign" ), ID( "modass", "opModAssign" ), ID( "andass", "opAndAssign" ), ID( "orass", "opOrAssign" ), ID( "xorass", "opXorAssign" ), ID( "shlass", "opShlAssign" ), ID( "shrass", "opShrAssign" ), ID( "ushrass", "opUShrAssign" ), ID( "catass", "opCatAssign" ), ID( "postinc", "opPostInc" ), ID( "postdec", "opPostDec" ), ID( "index", "opIndex" ), ID( "indexass", "opIndexAssign" ), ID( "slice", "opSlice" ), ID( "sliceass", "opSliceAssign" ), ID( "call", "opCall" ), ID( "cast_", "opCast" ), ID( "match", "opMatch" ), ID( "next", "opNext" ), ID( "opIn" ), ID( "opIn_r" ), ID( "opStar" ), ID( "opDot" ), ID( "opImplicitCast" ), ID( "classNew", "new" ), ID( "classDelete", "delete" ), // For foreach ID( "apply", "opApply" ), ID( "applyReverse", "opApplyReverse" ), // #if 1 ID( "Fempty", "empty" ), ID( "Fhead", "front" ), ID( "Ftoe", "back" ), ID( "Fnext", "popFront" ), ID( "Fretreat", "popBack" ), /*#else ID( "Fempty", "empty" ), ID( "Fhead", "head" ), ID( "Ftoe", "toe" ), ID( "Fnext", "next" ), ID( "Fretreat", "retreat" ), #endif*/ ID( "adDup", "_adDupT" ), ID( "adReverse", "_adReverse" ), // For internal functions ID( "aaLen", "_aaLen" ), ID( "aaKeys", "_aaKeys" ), ID( "aaValues", "_aaValues" ), ID( "aaRehash", "_aaRehash" ), ID( "monitorenter", "_d_monitorenter" ), ID( "monitorexit", "_d_monitorexit" ), ID( "criticalenter", "_d_criticalenter" ), ID( "criticalexit", "_d_criticalexit" ), // For pragma's ID( "GNU_asm" ), ID( "lib" ), ID( "msg" ), ID( "startaddress" ), // For special functions ID( "tohash", "toHash" ), ID( "tostring", "toString" ), ID( "getmembers", "getMembers" ), // Special functions ID( "alloca" ), ID( "main" ), ID( "WinMain" ), ID( "DllMain" ), ID( "tls_get_addr", "___tls_get_addr" ), // Builtin functions ID( "std" ), ID( "math" ), ID( "sin" ), ID( "cos" ), ID( "tan" ), ID( "_sqrt", "sqrt" ), ID( "fabs" ), // Traits ID( "isAbstractClass" ), ID( "isArithmetic" ), ID( "isAssociativeArray" ), ID( "isFinalClass" ), ID( "isFloating" ), ID( "isIntegral" ), ID( "isScalar" ), ID( "isStaticArray" ), ID( "isUnsigned" ), ID( "isVirtualFunction" ), ID( "isAbstractFunction" ), ID( "isFinalFunction" ), ID( "hasMember" ), ID( "getMember" ), ID( "getVirtualFunctions" ), ID( "classInstanceSize" ), ID( "allMembers" ), ID( "derivedMembers" ), ID( "isSame" ), ID( "compiles" ) ));