From 2c484adbab9255498953739cb4d9751353cc804d Mon Sep 17 00:00:00 2001 From: Emiel Bruijntjes Date: Sat, 8 Mar 2014 13:51:08 +0100 Subject: various fixes to make the function call example compilable --- include/array.h | 6 ++++++ include/classbase.h | 2 +- include/value.h | 29 ++++++++++++++++++++++++++--- 3 files changed, 33 insertions(+), 4 deletions(-) (limited to 'include') diff --git a/include/array.h b/include/array.h index 3b92826..dcd5e5f 100644 --- a/include/array.h +++ b/include/array.h @@ -58,6 +58,12 @@ public: template Array(const std::map &value) : Value(value) {} + /** + * Constructor from an initializer list + * @param value + */ + Array(const std::initializer_list &value) : Value(value) {} + /** * Destructor */ diff --git a/include/classbase.h b/include/classbase.h index 05ab2f4..25d081f 100644 --- a/include/classbase.h +++ b/include/classbase.h @@ -240,7 +240,7 @@ private: * @param count * @return int */ - static int countElements(zval *object, long *count TSRMLS_DC); + static int countElements(struct _zval *object, long *count); /** * Retrieve pointer to our own object handlers diff --git a/include/value.h b/include/value.h index 5800c6a..72bd895 100644 --- a/include/value.h +++ b/include/value.h @@ -72,8 +72,25 @@ public: template Value(const std::vector &input) : Value(Type::Array) { + // index + int i = 0; + + // set all elements + for (auto &elem : input) setRaw(i++, elem); + } + + /** + * Constructor from an initializer list + * @param value + */ + template + Value(const std::initializer_list &value) : Value(Type::Array) + { + // index + int i = 0; + // set all elements - for (size_t i=0; i