aboutsummaryrefslogtreecommitdiffstats
path: root/c_compiler/include
diff options
context:
space:
mode:
authorYann Herklotz <ymherklotz@gmail.com>2017-03-26 16:08:07 +0100
committerYann Herklotz <ymherklotz@gmail.com>2017-03-26 16:08:07 +0100
commitdec9dc403e540ef4424debfdd866c73ca93adc83 (patch)
tree83df1a3139509594e11b984f15cc11b4626e1b5d /c_compiler/include
parent19896f53d80deadcf09d3a1256524cc6f2e4adb6 (diff)
downloadCompiler-dec9dc403e540ef4424debfdd866c73ca93adc83.tar.gz
Compiler-dec9dc403e540ef4424debfdd866c73ca93adc83.zip
arrays and pointers working
Diffstat (limited to 'c_compiler/include')
-rw-r--r--c_compiler/include/type.hpp32
1 files changed, 24 insertions, 8 deletions
diff --git a/c_compiler/include/type.hpp b/c_compiler/include/type.hpp
index d29a927..04bd7a8 100644
--- a/c_compiler/include/type.hpp
+++ b/c_compiler/include/type.hpp
@@ -26,7 +26,8 @@ public:
virtual void load(const int &reg, const int &position) const = 0;
virtual void store() const = 0;
virtual void store(const int &position) const = 0;
- virtual void store(const int &reg, const int &position) const = 0;
+ virtual void store(const int &reg, const int &position) const = 0;
+ virtual int getSize() const = 0;
virtual void setSigned(bool _signed);
virtual void setExtern(bool _extern);
@@ -56,7 +57,8 @@ public:
virtual void load(const int &reg, const int &position) const;
virtual void store() const;
virtual void store(const int &position) const;
- virtual void store(const int &reg, const int &position) const;
+ virtual void store(const int &reg, const int &position) const;
+ virtual int getSize() const;
};
class Pointer : public Type
@@ -80,6 +82,13 @@ public:
virtual void store() const;
virtual void store(const int &position) const;
virtual void store(const int &reg, const int &position) const;
+ virtual int getSize() const;
+
+ void pointerLoad() const;
+ void pointerLoad(const int &reg, const int &position) const;
+ void pointerStore() const;
+ void pointerStore(const int &position) const;
+ void pointerStore(const int &reg, const int &position) const;
};
class TypeContainer : public Type
@@ -108,7 +117,8 @@ public:
virtual void load(const int &reg, const int &position) const;
virtual void store() const;
virtual void store(const int &position) const;
- virtual void store(const int &reg, const int &position) const;
+ virtual void store(const int &reg, const int &position) const;
+ virtual int getSize() const;
virtual void setSigned(bool _signed);
virtual void setExtern(bool _extern);
@@ -129,7 +139,8 @@ public:
virtual void load(const int &reg, const int &position) const = 0;
virtual void store() const = 0;
virtual void store(const int &position) const = 0;
- virtual void store(const int &reg, const int &position) const = 0;
+ virtual void store(const int &reg, const int &position) const = 0;
+ virtual int getSize() const = 0;
virtual TypePtr type();
virtual TypePtr type(Type *type_ptr);
@@ -149,7 +160,8 @@ public:
virtual void load(const int &reg, const int &position) const;
virtual void store() const;
virtual void store(const int &position) const;
- virtual void store(const int &reg, const int &position) const;
+ virtual void store(const int &reg, const int &position) const;
+ virtual int getSize() const;
};
class Short : public Specifier
@@ -165,7 +177,8 @@ public:
virtual void load(const int &reg, const int &position) const;
virtual void store() const;
virtual void store(const int &position) const;
- virtual void store(const int &reg, const int &position) const;
+ virtual void store(const int &reg, const int &position) const;
+ virtual int getSize() const;
};
class Void : public Specifier
@@ -181,7 +194,8 @@ public:
virtual void load(const int &reg, const int &position) const;
virtual void store() const;
virtual void store(const int &position) const;
- virtual void store(const int &reg, const int &position) const;
+ virtual void store(const int &reg, const int &position) const;
+ virtual int getSize() const;
};
class Char : public Specifier
@@ -198,6 +212,7 @@ public:
virtual void store() const;
virtual void store(const int &position) const;
virtual void store(const int &reg, const int &position) const;
+ virtual int getSize() const;
};
class Float : public Specifier
@@ -213,7 +228,8 @@ public:
virtual void load(const int &reg, const int &position) const;
virtual void store() const;
virtual void store(const int &position) const;
- virtual void store(const int &reg, const int &position) const;
+ virtual void store(const int &reg, const int &position) const;
+ virtual int getSize() const;
};
#endif