Mercurial > projects > ddmd
diff dmd/FuncDeclaration.d @ 93:df6d0f967680
implemented a whole bunch of methods to make phobos 2.035 compile
and some additional ones I came across
author | Trass3r |
---|---|
date | Mon, 30 Aug 2010 22:50:30 +0200 |
parents | 21a53563c840 |
children | 3a0b150c9841 5c859d5fbe27 |
line wrap: on
line diff
--- a/dmd/FuncDeclaration.d Mon Aug 30 23:43:38 2010 +0400 +++ b/dmd/FuncDeclaration.d Mon Aug 30 22:50:30 2010 +0200 @@ -17,6 +17,7 @@ import dmd.ExpInitializer; import dmd.BE; import dmd.Id; +import dmd.StorageClassDeclaration; import dmd.StringExp; import dmd.DsymbolExp; import dmd.HaltExp; @@ -1650,15 +1651,62 @@ { assert(false); } - - override void toCBuffer(OutBuffer buf, HdrGenState* hgs) + + override void toCBuffer(OutBuffer buf, HdrGenState* hgs) { - assert(false); +// writef("FuncDeclaration.toCBuffer() '%s'\n", toChars()); + + StorageClassDeclaration.stcToCBuffer(buf, storage_class); + type.toCBuffer(buf, ident, hgs); + bodyToCBuffer(buf, hgs); } - void bodyToCBuffer(OutBuffer buf, HdrGenState* hgs) + void bodyToCBuffer(OutBuffer buf, HdrGenState* hgs) { - assert(false); + if (fbody && + (!hgs.hdrgen || hgs.tpltMember || canInline(1,1)) + ) + { + buf.writenl(); + + // in{} + if (frequire) + { + buf.writestring("in"); + buf.writenl(); + frequire.toCBuffer(buf, hgs); + } + + // out{} + if (fensure) + { + buf.writestring("out"); + if (outId) + { + buf.writebyte('('); + buf.writestring(outId.toChars()); + buf.writebyte(')'); + } + buf.writenl(); + fensure.toCBuffer(buf, hgs); + } + + if (frequire || fensure) + { + buf.writestring("body"); + buf.writenl(); + } + + buf.writebyte('{'); + buf.writenl(); + fbody.toCBuffer(buf, hgs); + buf.writebyte('}'); + buf.writenl(); + } + else + { buf.writeByte(';'); + buf.writenl(); + } } /****************************************************