summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorJasperVanEck <jaspergkurtz@gmail.com>2013-12-02 11:24:39 +0100
committerJasperVanEck <jaspergkurtz@gmail.com>2013-12-02 11:24:39 +0100
commitafa7694bcdb14e7a1d4b1acaf63a8f8eac2b9c05 (patch)
tree8f154746d5da09161b0c23e07ae69491ff457572 /include
parentf4d0f6e5d97cca40ec62446bd038f78428e76adc (diff)
Implemented operator(), with support of upto 10 parameters
Diffstat (limited to 'include')
-rw-r--r--include/value.h30
1 files changed, 30 insertions, 0 deletions
diff --git a/include/value.h b/include/value.h
index bb7f354..6ea866d 100644
--- a/include/value.h
+++ b/include/value.h
@@ -38,6 +38,15 @@ template <class Type> class HashMember;
*/
class Value
{
+private:
+ /**
+ * Call function with a number of parameters
+ * @param argc Number of parameters
+ * @param argv The parameters
+ * @return Value
+ */
+ Value exec(int argc, zval ***params);
+
public:
/**
* Empty constructor (value = NULL)
@@ -290,6 +299,7 @@ public:
bool isFloat() const { return type() == floatType; }
bool isObject() const { return type() == objectType; }
bool isArray() const { return type() == arrayType; }
+ bool isCallable() const { return type() == callableType; }
/**
* Retrieve the value as number
@@ -527,6 +537,26 @@ public:
*/
HashMember<std::string> operator[](const char *key);
+ /**
+ * Call the function in PHP
+ * We have ten variants of this function, depending on the number of parameters
+ * This call operator is only useful when the variable represents a callable
+ * @param name Name of the function
+ * @return Value
+ */
+ Value operator()();
+ Value operator()(Value p0);
+ Value operator()(Value p0, Value p1);
+ Value operator()(Value p0, Value p1, Value p2);
+ Value operator()(Value p0, Value p1, Value p2, Value p3);
+ Value operator()(Value p0, Value p1, Value p2, Value p3, Value p4);
+ Value operator()(Value p0, Value p1, Value p2, Value p3, Value p4, Value p5);
+ Value operator()(Value p0, Value p1, Value p2, Value p3, Value p4, Value p5, Value p6);
+ Value operator()(Value p0, Value p1, Value p2, Value p3, Value p4, Value p5, Value p6, Value p7);
+ Value operator()(Value p0, Value p1, Value p2, Value p3, Value p4, Value p5, Value p6, Value p7, Value p8);
+ Value operator()(Value p0, Value p1, Value p2, Value p3, Value p4, Value p5, Value p6, Value p7, Value p8, Value p9);
+
+
protected:
/**
* The wrapped zval