summaryrefslogtreecommitdiff
path: root/include/value.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/value.h')
-rw-r--r--include/value.h16
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