summaryrefslogtreecommitdiff
path: root/include/array.h
diff options
context:
space:
mode:
authorEmiel Bruijntjes <emiel.bruijntjes@copernica.com>2013-12-07 13:12:25 -0800
committerEmiel Bruijntjes <emiel.bruijntjes@copernica.com>2013-12-07 13:12:25 -0800
commit80c8a16fb145f7ed4867d31fad3c22318a1ce708 (patch)
treef7605cdb86d653efaac761363ed596dd6b2e0459 /include/array.h
parent964d6274b0eba38df43d77b87c44bd728d2f0fb5 (diff)
replaces tabs in source code with regular spaces, added example for working with global variables
Diffstat (limited to 'include/array.h')
-rw-r--r--include/array.h83
1 files changed, 83 insertions, 0 deletions
diff --git a/include/array.h b/include/array.h
new file mode 100644
index 0000000..6956fee
--- /dev/null
+++ b/include/array.h
@@ -0,0 +1,83 @@
+/**
+ * Array.h
+ *
+ * An array is an extension to the Value class. It extends the Value class
+ * to initialize the variable as an array, instead of a null pointer
+ *
+ * @author Emiel Bruijntjes <emiel.bruijntjes@copernica.com>
+ * @copyright 2013 Copernica BV
+ */
+
+/**
+ * Set up namespace
+ */
+namespace Php {
+
+/**
+ * Class definition
+ */
+class Array : public Value
+{
+public:
+ /**
+ * Constructor
+ */
+ Array() : Value() { setType(arrayType); }
+
+ /**
+ * Copy constructor
+ * @param array
+ */
+ Array(const Array &array) : Value(array) {}
+
+ /**
+ * Move constructor
+ * @param array
+ */
+ Array(Array &&that) : Value(std::move(that)) {}
+
+ /**
+ * Copy constructor from a value object
+ * @param value
+ */
+ Array(const Value &value) : Value(value) { setType(arrayType); }
+
+ /**
+ * Destructor
+ */
+ virtual ~Array() {}
+
+ /**
+ * Change the internal type of the variable
+ * @param Type
+ */
+ virtual Value &setType(Type type) override
+ {
+ // only possible for arrays
+ if (type != arrayType) return *this;
+
+ // call base
+ return Value::setType(type);
+ }
+
+protected:
+ /**
+ * Validate the object
+ * @return Value
+ */
+ virtual Value &validate() override
+ {
+ // make sure the value object is an array
+ setType(arrayType);
+
+ // call base
+ return Value::validate();
+ }
+
+};
+
+/**
+ * End of namespace
+ */
+}
+