diff options
author | Emiel Bruijntjes <emiel.bruijntjes@copernica.com> | 2013-12-07 13:12:25 -0800 |
---|---|---|
committer | Emiel Bruijntjes <emiel.bruijntjes@copernica.com> | 2013-12-07 13:12:25 -0800 |
commit | 80c8a16fb145f7ed4867d31fad3c22318a1ce708 (patch) | |
tree | f7605cdb86d653efaac761363ed596dd6b2e0459 /include/array.h | |
parent | 964d6274b0eba38df43d77b87c44bd728d2f0fb5 (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.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 + */ +} + |