Mercurial > projects > ldc
diff gen/nested.h @ 1207:83d3b25c2213
Isolate all knowledge of what a function's nested context looks like in a
single place. No functional change.
author | Frits van Bommel <fvbommel wxs.nl> |
---|---|
date | Sun, 12 Apr 2009 13:08:24 +0200 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gen/nested.h Sun Apr 12 13:08:24 2009 +0200 @@ -0,0 +1,25 @@ +#ifndef LDC_GEN_NESTED_H +#define LDC_GEN_NESTED_H + +#include "declaration.h" +#include "mtype.h" +#include "gen/dvalue.h" + +/////////////////////////////////////////////////////////// +// Nested variable and context helpers +/////////////////////////////////////////////////////////// + +/// Creates the context value for a nested function. +void DtoCreateNestedContext(FuncDeclaration* fd); + +/// Allocate space for variable accessed from nested function. +void DtoNestedInit(VarDeclaration* vd); + +/// Gets the context value for a call to a nested function or newing a nested +/// class with arbitrary nesting. +llvm::Value* DtoNestedContext(Loc loc, Dsymbol* sym); + +/// Gets the DValue of a nested variable with arbitrary nesting. +DValue* DtoNestedVariable(Loc loc, Type* astype, VarDeclaration* vd); + +#endif