summaryrefslogtreecommitdiff
path: root/src/member.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/member.cpp')
-rw-r--r--src/member.cpp57
1 files changed, 32 insertions, 25 deletions
diff --git a/src/member.cpp b/src/member.cpp
index d4f5d2d..70dec9f 100644
--- a/src/member.cpp
+++ b/src/member.cpp
@@ -16,9 +16,9 @@ namespace Php {
/**
* Constructor
* @param name Name of the member
- * @param pub Is this a public property (otherwise it is protected)
+ * @param flags Flag access to a class member (bublic, protected etc)
*/
-Member::Member(const char *name, bool pub) : _name(name), _public(pub)
+Member::Member(const char *name, const FlagMemb &&flags) : _name(name), _accflag(flags)
{
// create a null member
_info = new NullMember();
@@ -27,10 +27,10 @@ Member::Member(const char *name, bool pub) : _name(name), _public(pub)
/**
* Constructor
* @param name Name of the member
- * @param pub Is this a public property (otherwise it is protected)
+ * @param flags Flag access to a class member (bublic, protected etc)
* @param value The value to add
*/
-Member::Member(const char *name, bool pub, std::nullptr_t value) : _name(name), _public(pub)
+Member::Member(const char *name, const FlagMemb &&flags, std::nullptr_t value) : _name(name), _accflag(flags)
{
// create a null member
_info = new NullMember();
@@ -39,10 +39,10 @@ Member::Member(const char *name, bool pub, std::nullptr_t value) : _name(name),
/**
* Constructor
* @param name Name of the member
- * @param pub Is this a public property (otherwise it is protected)
+ * @param flags Flag access to a class member (bublic, protected etc)
* @param value The value to add
*/
-Member::Member(const char *name, bool pub, int value) : _name(name), _public(pub)
+Member::Member(const char *name, const FlagMemb &&flags, int value) : _name(name), _accflag(flags)
{
// create a long member
_info = new LongMember(value);
@@ -51,10 +51,10 @@ Member::Member(const char *name, bool pub, int value) : _name(name), _public(pub
/**
* Constructor
* @param name Name of the member
- * @param pub Is this a public property (otherwise it is protected)
+ * @param flags Flag access to a class member (bublic, protected etc)
* @param value The value to add
*/
-Member::Member(const char *name, bool pub, long value) : _name(name), _public(pub)
+Member::Member(const char *name, const FlagMemb &&flags, long value) : _name(name), _accflag(flags)
{
// create a long member
_info = new LongMember(value);
@@ -63,10 +63,10 @@ Member::Member(const char *name, bool pub, long value) : _name(name), _public(pu
/**
* Constructor
* @param name Name of the member
- * @param pub Is this a public property (otherwise it is protected)
+ * @param flags Flag access to a class member (bublic, protected etc)
* @param value The value to add
*/
-Member::Member(const char *name, bool pub, bool value) : _name(name), _public(pub)
+Member::Member(const char *name, const FlagMemb &&flags, bool value) : _name(name), _accflag(flags)
{
// create a bool member
_info = new BoolMember(value);
@@ -75,10 +75,10 @@ Member::Member(const char *name, bool pub, bool value) : _name(name), _public(pu
/**
* Constructor
* @param name Name of the member
- * @param pub Is this a public property (otherwise it is protected)
+ * @param flags Flag access to a class member (bublic, protected etc)
* @param value The value to add
*/
-Member::Member(const char *name, bool pub, char value) : _name(name), _public(pub)
+Member::Member(const char *name, const FlagMemb &&flags, char value) : _name(name), _accflag(flags)
{
// create a new string member
_info = new StringMember(&value, 1);
@@ -87,10 +87,10 @@ Member::Member(const char *name, bool pub, char value) : _name(name), _public(pu
/**
* Constructor
* @param name Name of the member
- * @param pub Is this a public property (otherwise it is protected)
+ * @param flags Flag access to a class member (bublic, protected etc)
* @param value The value to add
*/
-Member::Member(const char *name, bool pub, const std::string &value) : _name(name), _public(pub)
+Member::Member(const char *name, const FlagMemb &&flags, const std::string &value) : _name(name), _accflag(flags)
{
// create a new string member
_info = new StringMember(value);
@@ -99,11 +99,11 @@ Member::Member(const char *name, bool pub, const std::string &value) : _name(nam
/**
* Constructor
* @param name Name of the member
- * @param pub Is this a public property (otherwise it is protected)
+ * @param flags Flag access to a class member (bublic, protected etc)
* @param value The value to add
* @param size String length
*/
-Member::Member(const char *name, bool pub, const char *value, int size) : _name(name), _public(pub)
+Member::Member(const char *name, const FlagMemb &&flags, const char *value, int size) : _name(name), _accflag(flags)
{
// create a new string member
if (size < 0) size = strlen(value);
@@ -113,10 +113,10 @@ Member::Member(const char *name, bool pub, const char *value, int size) : _name(
/**
* Constructor
* @param name Name of the member
- * @param pub Is this a public property (otherwise it is protected)
+ * @param flags Flag access to a class member (bublic, protected etc)
* @param value The value to add
*/
-Member::Member(const char *name, bool pub, double value) : _name(name), _public(pub)
+Member::Member(const char *name, const FlagMemb &&flags, double value) : _name(name), _accflag(flags)
{
// create a new double member
_info = new DoubleMember(value);
@@ -128,8 +128,12 @@ Member::Member(const char *name, bool pub, double value) : _name(name), _public(
* @param pub Is this a public method (otherwise it is protected)
* @param method The method to add
*/
-Member::Member(const char *name, bool pub, const _Method &method, const std::initializer_list<Argument> &arguments) : _name(name), _public(pub)
+Member::Member(const char *name, const FlagMemb &&flags, const _Method &method, const std::initializer_list<Argument> &arguments) : _name(name), _accflag(flags)
{
+ // If the flags specifies as Zend::AccMemb::CONSTANT.
+ // That is: if( flags == Flag(Zend::AccMemb::CONSTANT) ) ...
+ //XXX Flag(Zend::AccMemb::PUBLIC) -> Flag(Zend::AccMemb::STATIC)
+ if(!flags) _accflag = Flag(Zend::AccMemb::PUBLIC);
// create method member
_info = new MethodMember(name, method, arguments);
}
@@ -138,12 +142,12 @@ Member::Member(const char *name, bool pub, const _Method &method, const std::ini
* Copy constructor
* @param member The member to copy
*/
-Member::Member(const Member &member)
+Member::Member(const Member &member) : _accflag(member._accflag)
{
// copy info object, and name and public members
_info = member._info;
_name = member._name;
- _public = member._public;
+ //_accflag = member._accflag;
// update refcount in info object
_info->refcount(+1);
@@ -153,12 +157,12 @@ Member::Member(const Member &member)
* Move constructor
* @param member The member to move
*/
-Member::Member(Member &&member)
+Member::Member(Member &&member) : _accflag (std::move(member._accflag))
{
// move info object, and name and public properties
_info = member._info;
_name = std::move(member._name);
- _public = member._public;
+ //_accflag = std::move(member._accflag);
// reset info in other object
member._info = NULL;
@@ -201,7 +205,10 @@ bool Member::isMethod()
void Member::declare(struct _zend_class_entry *entry)
{
// let the info object handle stuff
- _info->declare(entry, _name.c_str(), _name.size(), _public ? ZEND_ACC_PUBLIC : ZEND_ACC_PROTECTED TSRMLS_CC);
+ if(!_accflag) // That is: if( flags == Flag(Zend::AccMemb::CONSTANT) )
+ _info->declareConst(entry, _name.c_str(), _name.size() TSRMLS_CC);
+ else
+ _info->declare(entry, _name.c_str(), _name.size(), _accflag TSRMLS_CC);
}
/**
@@ -213,7 +220,7 @@ void Member::declare(struct _zend_class_entry *entry)
void Member::fill(struct _zend_function_entry *entry, const char *classname)
{
// let the info object do this
- _info->fill(entry, classname, _public);
+ _info->fill(entry, classname, _accflag);
}
/**