summaryrefslogtreecommitdiff
path: root/zend/member.h
diff options
context:
space:
mode:
authorEmiel Bruijntjes <emiel.bruijntjes@copernica.com>2014-04-06 21:53:24 +0200
committerEmiel Bruijntjes <emiel.bruijntjes@copernica.com>2014-04-06 21:53:24 +0200
commit35fd3ccbeb4def71b4d8a59dfbb5c31201b099b9 (patch)
tree915223360aed4743aa6127fde4836aa413a260e5 /zend/member.h
parentda4710512865e6816585ac4ab8edab2fa125e2d8 (diff)
renamed src directory to zend directory, disabled TSRM debug code
Diffstat (limited to 'zend/member.h')
-rw-r--r--zend/member.h77
1 files changed, 77 insertions, 0 deletions
diff --git a/zend/member.h b/zend/member.h
new file mode 100644
index 0000000..7aa01d8
--- /dev/null
+++ b/zend/member.h
@@ -0,0 +1,77 @@
+/**
+ * Member.h
+ *
+ * Base class for properties of a class
+ *
+ * @author Emiel Bruijntjes <emiel.bruijntjes@copernica.com>
+ * @copyright 2013, 2014 Copernica BV
+ */
+
+/**
+ * Namespace
+ */
+namespace Php {
+
+/**
+ * Class definition
+ */
+class Member
+{
+public:
+ /**
+ * Constructor
+ * @param name Name of the member
+ * @param flags Flag access to a class member (public, protected etc)
+ */
+ Member(const char *name, int flags) : _name(name), _flags(flags) {}
+
+ /**
+ * Destructor
+ */
+ virtual ~Member() {}
+
+ /**
+ * Initialize the member
+ * @param zend_class_entry
+ * @param tsrm_ls
+ */
+ void initialize(struct _zend_class_entry *entry TSRMLS_DC)
+ {
+ if (_flags == Const) constant(entry TSRMLS_CC);
+ else declare(entry TSRMLS_CC);
+ }
+
+protected:
+ /**
+ * Internal method to declare the property as constant
+ * @param zend_class_entry
+ * @param tsrm_ls
+ */
+ virtual void constant(struct _zend_class_entry *entry TSRMLS_DC) = 0;
+
+ /**
+ * Internal method to declare the property
+ * @param zend_class_entry
+ * @param tsrm_ls
+ */
+ virtual void declare(struct _zend_class_entry *entry TSRMLS_DC) = 0;
+
+protected:
+ /**
+ * The member name
+ * @var std::string
+ */
+ std::string _name;
+
+ /**
+ * The member flags
+ * @var int
+ */
+ int _flags;
+};
+
+/**
+ * End of namespace
+ */
+}
+