From 35fd3ccbeb4def71b4d8a59dfbb5c31201b099b9 Mon Sep 17 00:00:00 2001 From: Emiel Bruijntjes Date: Sun, 6 Apr 2014 21:53:24 +0200 Subject: renamed src directory to zend directory, disabled TSRM debug code --- zend/stringmember.h | 83 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 zend/stringmember.h (limited to 'zend/stringmember.h') diff --git a/zend/stringmember.h b/zend/stringmember.h new file mode 100644 index 0000000..e58cd3d --- /dev/null +++ b/zend/stringmember.h @@ -0,0 +1,83 @@ +/** + * StringMember.h + * + * Implementation for a property that is initially set to a strnig value + * + * @author Emiel Bruijntjes + * @copyright 2013 Copernica BV + */ + +/** + * Set up namespace + */ +namespace Php { + +/** + * Class definition + */ +class StringMember : public Member +{ +private: + /** + * The value + * @var string + */ + std::string _value; + +public: + /** + * Constructor + * @param name + * @param value + * @param size + * @param flags + */ + StringMember(const char *name, const char *value, size_t size, int flags) : Member(name, flags), _value(value, size) {} + + /** + * Constructor + * @param name + * @param value + * @param flags + */ + StringMember(const char *name, const char *value, int flags) : StringMember(name, value, strlen(value), flags) {} + + /** + * Constructor + * @param name + * @param value + * @param flags + */ + StringMember(const char *name, const std::string &value, int flags) : Member(name, flags), _value(value) {} + + /** + * Destructor + */ + virtual ~StringMember() {} + + /** + * Virtual method to declare class constant + * @param entry Class entry + * @param tsrm_ls + */ + virtual void constant(struct _zend_class_entry *entry TSRMLS_DC) override + { + zend_declare_class_constant_stringl(entry, _name.c_str(), _name.size(), _value.c_str(), _value.size() TSRMLS_CC); + } + + /** + * Virtual method to declare the property + * @param entry Class entry + */ + virtual void declare(struct _zend_class_entry *entry TSRMLS_DC) override + { + // cast to char* is necessary for php 5.3 + zend_declare_property_stringl(entry, (char *)_name.c_str(), _name.size(), (char *)_value.c_str(), _value.size(), _flags TSRMLS_CC); + } +}; + +/** + * End of namespace + */ +} + -- cgit v1.2.3