Changeset 121

Show
Ignore:
Timestamp:
12/27/06 17:32:16 (2 years ago)
Author:
Gregor
Message:

bcd.gen/bcd/gen/bcdgen.d: Support for #define aliases (eg #define foo 0\n#define bar foo)

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/bcd.gen/bcd/gen/bcdgen.d

    r120 r121  
    325325        std.file.remove("bcd/" ~ dNamespace ~ "/template_D.h"); 
    326326    } 
    327     std.file.remove("out.i"); 
     327    //std.file.remove("out.i"); 
    328328    //std.file.remove("out.xml"); 
    329329     
     
    21052105    bool inOurFile = false; 
    21062106     
     2107    bool[char[]] curDefines; 
     2108     
    21072109    while (!f.eof()) { 
    21082110        char[] ln = f.readLine(); 
     
    21322134                if (lns.length >= 3) { 
    21332135                    if (isNumeric(lns[2])) { 
     2136                        curDefines[lns[1]] = true; 
     2137                         
    21342138                        /* isNumeric can accept ending with 'L', but long is 
    21352139                         * (usually) int, so strip it */ 
     
    21462150                                " = " ~ lns[2] ~ ";\n"; 
    21472151                        } 
     2152                         
    21482153                    } else if (lns[2].length >= 2 && 
    21492154                               lns[2][0] == '"' && lns[2][$-1] == '"') { 
     2155                        curDefines[lns[1]] = true; 
     2156                         
    21502157                        // a constant string 
    21512158                        dhead ~= "const char[] " ~ safeName(lns[1]) ~ 
    21522159                            " = " ~ lns[2] ~ ";\n"; 
     2160                         
     2161                    } else if (lns[2] in curDefines) { 
     2162                        curDefines[lns[1]] = true; 
     2163                         
     2164                        // could be #define'ing to something already #defined 
     2165                        dhead ~= "alias " ~ safeName(lns[2]) ~ " " ~ safeName(lns[1]) ~ ";\n"; 
    21532166                    } 
    21542167                }