diff options
Diffstat (limited to 'include/array.h')
-rw-r--r-- | include/array.h | 83 |
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 + */ +} + |