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