summaryrefslogtreecommitdiff
path: root/src/member.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/member.h')
-rw-r--r--src/member.h76
1 files changed, 76 insertions, 0 deletions
diff --git a/src/member.h b/src/member.h
new file mode 100644
index 0000000..a1bce52
--- /dev/null
+++ b/src/member.h
@@ -0,0 +1,76 @@
+/**
+ * Member.h
+ *
+ * Base class for properties of a class
+ *
+ * @author Emiel Bruijntjes <emiel.bruijntjes@copernica.com>
+ * @copyright 2013 Copernica BV
+ *
+ * @todo remove this file completely
+ */
+
+/**
+ * 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
+ */
+ void initialize(struct _zend_class_entry *entry)
+ {
+ if (_flags == Const) constant(entry);
+ else declare(entry);
+ }
+
+protected:
+ /**
+ * Internal method to declare the property as constant
+ * @param zend_class_entry
+ */
+ virtual void constant(struct _zend_class_entry *entry) = 0;
+
+ /**
+ * Internal method to declare the property
+ * @param zend_class_entry
+ */
+ virtual void declare(struct _zend_class_entry *entry) = 0;
+
+protected:
+ /**
+ * The member name
+ * @var std::string
+ */
+ std::string _name;
+
+ /**
+ * The member flags
+ * @var int
+ */
+ int _flags;
+};
+
+/**
+ * End of namespace
+ */
+}
+