summaryrefslogtreecommitdiff
path: root/include/hashparent.h
diff options
context:
space:
mode:
authorEmiel Bruijntjes <emiel.bruijntjes@copernica.com>2014-04-01 16:39:52 +0200
committerEmiel Bruijntjes <emiel.bruijntjes@copernica.com>2014-04-01 16:39:52 +0200
commit61ded13eaa25b332208cd659c5c844890db0cb57 (patch)
treec50f5319fc975faf80e3a7a41a9b8cdb36656bec /include/hashparent.h
parent777949f8751ded6e56140bb513c6b93e4d5c3f08 (diff)
much simpler implementation of hash member, i do not understand why i first used this complicated zval wrapping implementation, fixes problems reported in issue #56
Diffstat (limited to 'include/hashparent.h')
-rw-r--r--include/hashparent.h92
1 files changed, 92 insertions, 0 deletions
diff --git a/include/hashparent.h b/include/hashparent.h
new file mode 100644
index 0000000..4c2ee68
--- /dev/null
+++ b/include/hashparent.h
@@ -0,0 +1,92 @@
+/**
+ * HashParent.h
+ *
+ * Interface that is implemented by all objects that can be accessed with
+ * array-access variables ([]). When the value of a hash-member is changed,
+ * it will call one of the methods from this class to set the new property
+ *
+ * This is an internal class that you normally not need when writing
+ * extensions. It is used by the PHP-CPP library when you use constructs
+ * like value["x"]["y"] = 10;
+ *
+ * @author Emiel Bruijntjes <emiel.bruijntjes@copernica.com>
+ * @copyright 2014 Copernica BV
+ */
+
+/**
+ * Set up namespace
+ */
+namespace Php {
+
+/**
+ * Forwards
+ */
+class Value;
+
+/**
+ * Class definition
+ */
+class HashParent
+{
+protected:
+ /**
+ * Protected constructor - users should not instantiate HashParent
+ * objects themselved. Use a Value object instead.
+ */
+ HashParent() {}
+
+public:
+ /**
+ * Destructor
+ */
+ virtual ~HashParent() {}
+
+ /**
+ * Check if a certain key exists in the array/object
+ * @param key
+ * @return bool
+ */
+ virtual bool contains(const std::string &key) const = 0;
+
+ /**
+ * Check if a certain index exists in the array/object
+ * @param key
+ * @return bool
+ */
+ virtual bool contains(int index) const = 0;
+
+ /**
+ * Retrieve the value at a string index
+ * @param key
+ * @return Value
+ */
+ virtual Value get(const std::string &key) const = 0;
+
+ /**
+ * Retrieve the value at a numeric index
+ * @param index
+ * @return Value
+ */
+ virtual Value get(int index) const = 0;
+
+ /**
+ * Overwrite the value at a certain string index
+ * @param key
+ * @param value
+ */
+ virtual void set(const std::string &key, const Value &value) = 0;
+
+ /**
+ * Overwrite the value at a certain numeric index
+ * @param index
+ * @param value
+ */
+ virtual void set(int index, const Value &value) = 0;
+
+};
+
+/**
+ * End namespace
+ */
+}
+