Dgen
- Added `generateSignature_Variable(Variable var)` which generates JUST a variable signature (with symbol mapping) - `emitExterns(File modOut, Module mod)` now also generates extern statements for global variables
This commit is contained in:
parent
e1fbdde91c
commit
e41c3a8d88
|
@ -1083,6 +1083,9 @@ public final class DCodeEmitter : CodeEmitter
|
|||
{
|
||||
gprintln(format("Emitting extern(...) statements for module %s...", mos.mod()));
|
||||
|
||||
// TODO: What about extern (At the T level)??!?! In wonder, those should be relaxed hey
|
||||
|
||||
|
||||
// Emit public functions
|
||||
foreach(Function func; mos.funcs())
|
||||
{
|
||||
|
@ -1093,8 +1096,13 @@ public final class DCodeEmitter : CodeEmitter
|
|||
}
|
||||
|
||||
// Emit public variables
|
||||
// TODO: Implement me
|
||||
|
||||
foreach(Variable var; mos.vars())
|
||||
{
|
||||
string externEmit = format("extern %s;", generateSignature_Variable(var));
|
||||
|
||||
gprintln(format("VarExternEmit: '%s'", externEmit));
|
||||
modOut.writeln(externEmit);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1210,6 +1218,24 @@ public final class DCodeEmitter : CodeEmitter
|
|||
}
|
||||
}
|
||||
|
||||
private string generateSignature_Variable(Variable var)
|
||||
{
|
||||
string signature;
|
||||
|
||||
// Extract the Variable's type
|
||||
Type varType = typeChecker.getType(var.context.container, var.getType());
|
||||
|
||||
// FIXME: Set proper scope type
|
||||
string renamedSymbol = mapper.map(var, ScopeType.GLOBAL);
|
||||
|
||||
// <type> <name>
|
||||
signature = typeTransform(varType)~" "~renamedSymbol;
|
||||
|
||||
// TODO: Add extern here?
|
||||
|
||||
return signature;
|
||||
}
|
||||
|
||||
private string generateSignature(Function func)
|
||||
{
|
||||
string signature;
|
||||
|
|
Loading…
Reference in New Issue