Mercurial > projects > ldc
diff gen/elem.h @ 1:c53b6e3fe49a trunk
[svn r5] Initial commit. Most things are very rough.
author | lindquist |
---|---|
date | Sat, 01 Sep 2007 21:43:27 +0200 |
parents | |
children | d3ee9efe20e2 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gen/elem.h Sat Sep 01 21:43:27 2007 +0200 @@ -0,0 +1,44 @@ +#ifndef LLVMDC_GEN_ELEM_H +#define LLVMDC_GEN_ELEM_H + +#include "llvm/Value.h" + +#include "root.h" +#include "declaration.h" +#include "aggregate.h" + +// represents a value. be it a constant literal, a variable etc. +// maintains all the information for doing load/store appropriately +struct elem : Object +{ + enum { + NONE, + VAR, + VAL, + FUNC, + CONST, + NUL, + REF, + SLICE + }; + +public: + elem(); + + llvm::Value* mem; + llvm::Value* val; + llvm::Value* arg; + int type; + bool inplace; + bool field; + + VarDeclaration* vardecl; + FuncDeclaration* funcdecl; + + llvm::Value* getValue(); + //llvm::Value* getMemory(); + + bool isNull() {return !(mem || val);} +}; + +#endif // LLVMDC_GEN_ELEM_H