diff options
Diffstat (limited to 'include/value.h')
-rw-r--r-- | include/value.h | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/include/value.h b/include/value.h index 9959a9c..ca3fb9d 100644 --- a/include/value.h +++ b/include/value.h @@ -1003,6 +1003,7 @@ public: * @return Value */ Value call(const char *name) const; + Value call(const char *name); /** * @@ -1025,6 +1026,20 @@ public: return exec(name, sizeof...(Args), params); } + template <typename ...Args> + Value call(const char *name, Args&&... args) + { + // store arguments + Value vargs[] = { static_cast<Value>(args)... }; + + // array of parameters + _zval_struct **params[sizeof...(Args)]; + for(unsigned i=0; i < sizeof...(Args); i++) {params[i] = &vargs[i]._val;} + + // call the function + return exec(name, sizeof...(Args), params); + } + /** * Retrieve the original implementation * @@ -1108,6 +1123,7 @@ private: * @return Value */ Value exec(const char *name, int argc, struct _zval_struct ***params) const; + Value exec(const char *name, int argc, struct _zval_struct ***params); /** * Refcount - the number of references to the value |