Qore Programming Language  0.8.11.1
Public Member Functions | Static Public Member Functions | Protected Member Functions | List of all members
QoreObject Class Reference

the implementation of Qore's object data type, reference counted, dynamically-allocated only More...

#include <QoreObject.h>

Inheritance diagram for QoreObject:
Inheritance graph
[legend]
Collaboration diagram for QoreObject:
Collaboration graph
[legend]

Public Member Functions

DLLEXPORT QoreObject (const QoreClass *oc, QoreProgram *p)
 creates an object as belonging to the given class, the QoreProgram object is referenced for the life of the object as well More...
 
DLLEXPORT QoreObject (const QoreClass *oc, QoreProgram *p, AbstractPrivateData *data)
 creates an object as belonging to the given class, the QoreProgram object is referenced for the life of the object as well, and the private data is stored with the class ID of the class More...
 
DLLLOCAL QoreObject (const QoreClass *oc, QoreProgram *p, QoreHashNode *d)
 creates the object with the initial data passed as "d", used by the copy constructor
 
DLLLOCAL void addPrivateDataToString (QoreString *str, ExceptionSink *xsink) const
 concatenates info about private data to a string More...
 
DLLEXPORT int64 bigIntEvalMethod (const char *name, const QoreListNode *args, ExceptionSink *xsink)
 evaluates the given method with the arguments passed and returns the return value as an int64 More...
 
DLLEXPORT int64 bigIntEvalMethod (const QoreMethod &method, const QoreListNode *args, ExceptionSink *xsink)
 evaluates the given method with the arguments passed and returns the return value as an int64 More...
 
DLLEXPORT bool boolEvalMethod (const char *name, const QoreListNode *args, ExceptionSink *xsink)
 evaluates the given method with the arguments passed and returns the return value as a bool More...
 
DLLEXPORT bool boolEvalMethod (const QoreMethod &method, const QoreListNode *args, ExceptionSink *xsink)
 evaluates the given method with the arguments passed and returns the return value as a bool More...
 
DLLEXPORT bool compareHard (const QoreObject *obj, ExceptionSink *xsink) const
 tests for equality ("deep compare" including all contained values) with possible type conversion of contained elements (hard compare) More...
 
DLLEXPORT bool compareSoft (const QoreObject *obj, ExceptionSink *xsink) const
 tests for equality ("deep compare" including all contained values) with possible type conversion of contained elements (soft compare) More...
 
DLLEXPORT QoreHashNodecopyData (ExceptionSink *xsink) const
 retuns all member data of the object (or 0 if there's an exception), caller owns the QoreHashNode reference returned More...
 
DLLLOCAL void defaultSystemDestructor (qore_classid_t classID, ExceptionSink *xsink)
 runs the destructor for system objects More...
 
DLLEXPORT void deleteBlockerRef () const
 increment the reference count of the object, to be called only from within a delete blocker More...
 
DLLEXPORT void deleteMemberValue (const QoreString *key, ExceptionSink *xsink)
 removes a member from the object, if the member's value is an object it is deleted as well (destructor is called) More...
 
DLLEXPORT void deleteMemberValue (const char *key, ExceptionSink *xsink)
 removes a member from the object, if the member's value is an object it is deleted as well (destructor is called) More...
 
DLLEXPORT void doDelete (ExceptionSink *xsink)
 runs the destructor on the object (if it hasn't already been deleted) More...
 
DLLLOCAL AbstractQoreNodeevalBuiltinMethodWithPrivateData (const QoreMethod &method, const BuiltinNormalMethodVariantBase *meth, const QoreListNode *args, ExceptionSink *xsink)
 called to evaluate a builtin method when private data is available More...
 
DLLLOCAL void evalCopyMethodWithPrivateData (const QoreClass &thisclass, const BuiltinCopyVariantBase *meth, QoreObject *self, ExceptionSink *xsink)
 called on the old object (this) to acquire private data, copy method called with pointer to "self" (new copy)
 
DLLLOCAL bool evalDeleteBlocker (qore_classid_t classid_for_method, BuiltinDeleteBlocker *meth)
 evaluates the delete blocker function for the managed private data
 
DLLLOCAL AbstractQoreNodeevalMember (const QoreString *member, ExceptionSink *xsink)
 returns the value of the member with an incremented reference count, or executes the memberGate() method and returns the value More...
 
DLLEXPORT AbstractQoreNodeevalMethod (const QoreString *name, const QoreListNode *args, ExceptionSink *xsink)
 evaluates the given method with the arguments passed and returns the return value, caller owns the AbstractQoreNode (reference) returned More...
 
DLLEXPORT AbstractQoreNodeevalMethod (const char *name, const QoreListNode *args, ExceptionSink *xsink)
 evaluates the given method with the arguments passed and returns the return value, caller owns the AbstractQoreNode (reference) returned More...
 
DLLEXPORT AbstractQoreNodeevalMethod (const QoreMethod &method, const QoreListNode *args, ExceptionSink *xsink)
 evaluates the given method with the arguments passed and returns the return value, caller owns the AbstractQoreNode (reference) returned More...
 
DLLEXPORT AbstractQoreNodeevalMethodVariant (const QoreMethod &method, const QoreExternalMethodVariant *variant, const QoreListNode *args, ExceptionSink *xsink)
 executes a normal object method variant
 
DLLLOCAL void execMemberNotification (const char *member, ExceptionSink *xsink)
 executes the member notification on the object the given member
 
DLLEXPORT void externalDelete (qore_classid_t key, ExceptionSink *xsink)
 call this function when an object's private data is deleted externally More...
 
DLLEXPORT double floatEvalMethod (const char *name, const QoreListNode *args, ExceptionSink *xsink)
 evaluates the given method with the arguments passed and returns the return value as a double More...
 
DLLEXPORT double floatEvalMethod (const QoreMethod &method, const QoreListNode *args, ExceptionSink *xsink)
 evaluates the given method with the arguments passed and returns the return value as a float More...
 
DLLLOCAL AbstractPrivateDatagetAndClearPrivateData (qore_classid_t key, ExceptionSink *xsink)
 retrieves the private data pointer and clears it from the object's private data store, used when executing destructors More...
 
virtual DLLEXPORT bool getAsBoolImpl () const
 returns false unless perl-boolean-evaluation is enabled, in which case it returns false only when empty More...
 
virtual DLLEXPORT int getAsString (QoreString &str, int foff, ExceptionSink *xsink) const
 concatenate the verbose string representation of the list (including all contained values) to an existing QoreString More...
 
virtual DLLEXPORT QoreStringgetAsString (bool &del, int foff, ExceptionSink *xsink) const
 returns a QoreString giving the verbose string representation of the List (including all contained values) More...
 
DLLEXPORT const QoreClassgetClass (qore_classid_t cid) const
 returns a pointer to a QoreClass object if the class ID passed is a valid class in the hierarchy More...
 
DLLEXPORT const QoreClassgetClass (qore_classid_t cid, bool &priv) const
 returns a pointer to the QoreClass object representing the class ID passed if it exists in the class hierarchy and sets a flag indicating if it's privately inherited or not More...
 
DLLEXPORT const QoreClassgetClass () const
 returns a pointer to the QoreClass of this object More...
 
DLLEXPORT const char * getClassName () const
 returns the name of the class More...
 
DLLLOCAL AbstractQoreNode ** getExistingValuePtr (const QoreString *mem, AutoVLock *vl, ExceptionSink *xsink) const
 returns a pointer to a pointer to the value of the member only if it already exists, so it can be set externally More...
 
DLLLOCAL AbstractQoreNode ** getExistingValuePtr (const char *mem, AutoVLock *vl, ExceptionSink *xsink) const
 returns a pointer to a pointer to the value of the member only if it already exists More...
 
DLLEXPORT int64 getMemberAsBigInt (const char *mem, bool &found, ExceptionSink *xsink) const
 returns the value of the given member as an int64 More...
 
DLLEXPORT QoreListNodegetMemberList (ExceptionSink *xsink) const
 returns the list of members, caller owns the list returned More...
 
DLLEXPORT AbstractQoreNodegetMemberValueNoMethod (const QoreString *key, AutoVLock *vl, ExceptionSink *xsink) const
 returns the pointer to the value of the member More...
 
DLLEXPORT AbstractQoreNodegetMemberValueNoMethod (const char *key, AutoVLock *vl, ExceptionSink *xsink) const
 returns the pointer to the value of the member More...
 
DLLLOCAL AbstractQoreNode ** getMemberValuePtrForInitialization (const char *member)
 returns a pointer to an object member during initialization (no locking; interal use only)
 
DLLEXPORT QoreProgramgetProgram () const
 returns the QoreProgram object associated with this object More...
 
DLLEXPORT AbstractQoreNodegetReferencedMemberNoMethod (const char *mem, ExceptionSink *xsink) const
 returns the value of the given member with the reference count incremented, the caller owns the AbstractQoreNode (reference) returned More...
 
DLLEXPORT AbstractPrivateDatagetReferencedPrivateData (qore_classid_t key, ExceptionSink *xsink) const
 returns the private data corresponding to the class ID passed with an incremented reference count, caller owns the reference More...
 
DLLLOCAL QoreHashNodegetRuntimeMemberHash (ExceptionSink *xsink) const
 retuns member data of the object (or 0 if there's an exception), private members are excluded if called outside the class, caller owns the QoreHashNode reference returned More...
 
virtual DLLEXPORT const char * getTypeName () const
 returns the type name as a c string
 
DLLLOCAL bool hasMemberNotification () const
 returns true if the class has a memberNotification method
 
DLLEXPORT int intEvalMethod (const char *name, const QoreListNode *args, ExceptionSink *xsink)
 evaluates the given method with the arguments passed and returns the return value as an int More...
 
DLLEXPORT int intEvalMethod (const QoreMethod &method, const QoreListNode *args, ExceptionSink *xsink)
 evaluates the given method with the arguments passed and returns the return value as an int More...
 
virtual DLLEXPORT bool is_equal_hard (const AbstractQoreNode *v, ExceptionSink *xsink) const
 tests for equality ("deep compare" including all contained values) without type conversions (hard compare) More...
 
virtual DLLEXPORT bool is_equal_soft (const AbstractQoreNode *v, ExceptionSink *xsink) const
 tests for equality ("deep compare" including all contained values) with possible type conversion (soft compare) More...
 
DLLEXPORT bool isSystemObject () const
 returns true if the object is a system object (created with the system constructor) More...
 
DLLEXPORT bool isValid () const
 returns true if the object is valid More...
 
DLLEXPORT void mergeDataToHash (QoreHashNode *hash, ExceptionSink *xsink)
 copies all member data of the current object to the passed QoreHashNode More...
 
DLLLOCAL void obliterate (ExceptionSink *xsink)
 destroys all members and dereferences all private data structures More...
 
virtual DLLEXPORT AbstractQoreNoderealCopy () const
 performs a deep copy of the list and returns the new list
 
DLLEXPORT void removeMember (const QoreString *key, ExceptionSink *xsink)
 removes a member from the object without explicitly calling destructors; the value is only dereferenced More...
 
DLLEXPORT void removeMember (const char *key, ExceptionSink *xsink)
 removes a member from the object without explicitly calling destructors; the value is only dereferenced More...
 
DLLEXPORT void setPrivate (qore_classid_t key, AbstractPrivateData *pd)
 sets private data for the object against the class ID passed, used in C++ functions implementing Qore constructors More...
 
DLLEXPORT void setValue (const char *key, AbstractQoreNode *val, ExceptionSink *xsink)
 sets the value of the given member to the given value More...
 
DLLEXPORT int size (ExceptionSink *xsink) const
 returns the number of members of the object More...
 
DLLEXPORT AbstractQoreNodetakeMember (const QoreString *key, ExceptionSink *xsink)
 removes a member from the object without explicitly calling destructors and returns the value removed; the caller owns the reference returned More...
 
DLLEXPORT AbstractQoreNodetakeMember (const char *key, ExceptionSink *xsink)
 removes a member from the object without explicitly calling destructors and returns the value removed; the caller owns the reference returned More...
 
DLLEXPORT void tDeref ()
 decrements the existence reference count, when it reaches 0 the C++ object ("this") will be deleted More...
 
DLLEXPORT void tRef () const
 increments the existence reference count More...
 
DLLEXPORT bool validInstanceOf (qore_classid_t cid) const
 returns true if this object is a valid instance of the classid passed More...
 
DLLEXPORT bool validInstanceOf (const QoreClass &qc) const
 returns true if this object is a valid instance of the classid passed More...
 
- Public Member Functions inherited from AbstractQoreNode
DLLEXPORT AbstractQoreNode (qore_type_t t, bool n_value, bool n_needs_eval, bool n_there_can_be_only_one=false, bool n_custom_reference_handlers=false)
 constructor takes the type More...
 
DLLEXPORT AbstractQoreNode (const AbstractQoreNode &v)
 copy constructor
 
DLLEXPORT int64 bigIntEval (ExceptionSink *xsink) const
 evaluates the object and returns a 64-bit integer value More...
 
DLLEXPORT bool boolEval (ExceptionSink *xsink) const
 evaluates the object and returns a boolean value More...
 
DLLEXPORT void deref (ExceptionSink *xsink)
 decrements the reference count and calls derefImpl() if there_can_be_only_one is false, otherwise does nothing More...
 
DLLEXPORT AbstractQoreNodeeval (ExceptionSink *xsink) const
 evaluates the object and returns a value (or 0) More...
 
DLLEXPORT AbstractQoreNodeeval (bool &needs_deref, ExceptionSink *xsink) const
 optionally evaluates the argument More...
 
DLLEXPORT double floatEval (ExceptionSink *xsink) const
 evaluates the object and returns a floating-point value More...
 
DLLEXPORT int64 getAsBigInt () const
 returns the 64-bit integer value of the object More...
 
DLLEXPORT bool getAsBool () const
 returns the boolean value of the object More...
 
DLLEXPORT double getAsFloat () const
 returns the float value of the object More...
 
DLLEXPORT int getAsInt () const
 returns the integer value of the object More...
 
virtual DLLEXPORT class DateTimegetDateTimeRepresentation (bool &del) const
 returns the DateTime representation of this type (default implementation: returns ZeroDate, del = false) More...
 
virtual DLLEXPORT void getDateTimeRepresentation (DateTime &dt) const
 assigns the date representation of a value to the DateTime reference passed, default implementation does nothing More...
 
virtual DLLEXPORT QoreStringgetStringRepresentation (bool &del) const
 returns the value of the type converted to a string, default implementation: returns the empty string More...
 
virtual DLLEXPORT void getStringRepresentation (QoreString &str) const
 concatentates the value of the type to an existing QoreString reference, default implementation does nothing More...
 
DLLLOCAL qore_type_t getType () const
 returns the data type More...
 
DLLEXPORT int integerEval (ExceptionSink *xsink) const
 evaluates the object and returns an integer value More...
 
DLLLOCAL bool is_value () const
 returns true if the node represents a value More...
 
DLLLOCAL bool isReferenceCounted () const
 returns true if the object is reference-counted
 
DLLLOCAL bool needs_eval () const
 returns true if the object needs evaluation to return a value, false if not More...
 
virtual DLLEXPORT AbstractQoreNodeparseInit (LocalVar *oflag, int pflag, int &lvids, const QoreTypeInfo *&typeInfo)
 for use by parse types to initialize them for execution during stage 1 parsing More...
 
DLLEXPORT void ref () const
 increments the reference count
 
DLLEXPORT AbstractQoreNoderefSelf () const
 returns "this" with an incremented reference count More...
 
- Public Member Functions inherited from QoreReferenceCounter
DLLEXPORT QoreReferenceCounter ()
 creates the reference counter object
 
DLLEXPORT ~QoreReferenceCounter ()
 destroys the reference counter object
 
DLLLOCAL bool is_unique () const
 returns true if the reference count is 1 More...
 
DLLLOCAL int reference_count () const
 gets the reference count More...
 
DLLEXPORT bool ROdereference () const
 atomically decrements the reference count More...
 
DLLEXPORT void ROreference () const
 atomically increments the reference count
 

Static Public Member Functions

static DLLLOCAL qore_type_t getStaticTypeCode ()
 returns the type code (useful in templates)
 
static DLLLOCAL const char * getStaticTypeName ()
 returns the type name (useful in templates)
 

Protected Member Functions

virtual DLLLOCAL ~QoreObject ()
 destructor
 
virtual DLLLOCAL int64 bigIntEvalImpl (ExceptionSink *xsink) const
 should never be called, does nothing More...
 
virtual DLLLOCAL bool boolEvalImpl (ExceptionSink *xsink) const
 should never be called, does nothing More...
 
virtual DLLLOCAL void customDeref (ExceptionSink *xsink)
 custom dereference handler - with delete
 
virtual DLLLOCAL void customRef () const
 custom reference handler
 
DLLLOCAL void customRefIntern () const
 custom reference handler - unlocked
 
virtual DLLEXPORT bool derefImpl (ExceptionSink *xsink)
 runs the destructor if necessary and dereferences all members More...
 
virtual DLLLOCAL AbstractQoreNodeevalImpl (ExceptionSink *xsink) const
 should never be called, does nothing More...
 
virtual DLLLOCAL AbstractQoreNodeevalImpl (bool &needs_deref, ExceptionSink *xsink) const
 should never be called, does nothing More...
 
virtual DLLLOCAL double floatEvalImpl (ExceptionSink *xsink) const
 should never be called, does nothing More...
 
virtual DLLLOCAL int integerEvalImpl (ExceptionSink *xsink) const
 should never be called, does nothing More...
 
- Protected Member Functions inherited from AbstractQoreNode
virtual DLLEXPORT ~AbstractQoreNode ()
 default destructor does nothing More...
 

Additional Inherited Members

- Protected Attributes inherited from AbstractQoreNode
bool custom_reference_handlers: 1
 set to one for objects that need custom reference handlers
 
bool needs_eval_flag: 1
 if this is true then the type can be evaluated
 
bool there_can_be_only_one: 1
 if this is set to true, then reference counting is turned off for objects of this class
 
qore_type_t type: 11
 the type of the object More...
 
bool value: 1
 this is true for values, if false then either the type needs evaluation to produce a value or is a parse expression
 
- Protected Attributes inherited from QoreReferenceCounter
QoreThreadLock mRO
 pthread lock to ensure atomicity of updates for architectures where we don't have an atomic increment and decrement implementation
 

Detailed Description

the implementation of Qore's object data type, reference counted, dynamically-allocated only

objects in Qore are unique unless copied explicitly (similar to Java) Builtin classes (those classes implemented in C++ as opposed to user classes implemented in the Qore language) can have "private data", which is data that maintains the state of the object per that class. QoreObject objects store this data as well as any member data.

objects have two levels of reference counts - one is for the existence of the c++ object (tRefs below) the other is for the scope of the object (the parent QoreReferenceCounter) - when this reaches 0 the object will have its destructor run (if it hasn't already been deleted). Only when the tRef counter reaches 0, meaning that no more pointers are pointing to this object will the object actually be deleted.

See also
QoreClass

Constructor & Destructor Documentation

DLLEXPORT QoreObject::QoreObject ( const QoreClass oc,
QoreProgram p 
)

creates an object as belonging to the given class, the QoreProgram object is referenced for the life of the object as well

Parameters
octhe class of the object being created
pthe QoreProgram object where the object "lives", this QoreProgram object is referenced for the life of the object to ensure that it is not deleted while the object still exists (for example, if the object is exported to a parent QoreProgram object)
DLLEXPORT QoreObject::QoreObject ( const QoreClass oc,
QoreProgram p,
AbstractPrivateData data 
)

creates an object as belonging to the given class, the QoreProgram object is referenced for the life of the object as well, and the private data is stored with the class ID of the class

Parameters
octhe class of the object being created
pthe QoreProgram object where the object "lives", this QoreProgram object is referenced for the life of the object to ensure that it is not deleted while the object still exists (for example, if the object is exported to a parent QoreProgram object)
datathe private data corresponding to the class ID of the class passed

Member Function Documentation

DLLLOCAL void QoreObject::addPrivateDataToString ( QoreString str,
ExceptionSink xsink 
) const

concatenates info about private data to a string

Parameters
strthe string to concatenate to
xsinkif an error occurs, the Qore-language exception information will be added here
virtual DLLLOCAL int64 QoreObject::bigIntEvalImpl ( ExceptionSink xsink) const
protectedvirtual

should never be called, does nothing

in debugging builds calls to this function will abort

Reimplemented from AbstractQoreNode.

DLLEXPORT int64 QoreObject::bigIntEvalMethod ( const char *  name,
const QoreListNode args,
ExceptionSink xsink 
)

evaluates the given method with the arguments passed and returns the return value as an int64

Parameters
namethe name of the method to evaluate, must be in QCS_DEFAULT encoding
argsthe arguments for the method (may be 0)
xsinkif an error occurs, the Qore-language exception information will be added here
DLLEXPORT int64 QoreObject::bigIntEvalMethod ( const QoreMethod method,
const QoreListNode args,
ExceptionSink xsink 
)

evaluates the given method with the arguments passed and returns the return value as an int64

Parameters
methodthe method to evaluate
argsthe arguments for the method (may be 0)
xsinkif an error occurs, the Qore-language exception information will be added here
virtual DLLLOCAL bool QoreObject::boolEvalImpl ( ExceptionSink xsink) const
protectedvirtual

should never be called, does nothing

in debugging builds calls to this function will abort

Reimplemented from AbstractQoreNode.

DLLEXPORT bool QoreObject::boolEvalMethod ( const char *  name,
const QoreListNode args,
ExceptionSink xsink 
)

evaluates the given method with the arguments passed and returns the return value as a bool

Parameters
namethe name of the method to evaluate, must be in QCS_DEFAULT encoding
argsthe arguments for the method (may be 0)
xsinkif an error occurs, the Qore-language exception information will be added here
DLLEXPORT bool QoreObject::boolEvalMethod ( const QoreMethod method,
const QoreListNode args,
ExceptionSink xsink 
)

evaluates the given method with the arguments passed and returns the return value as a bool

Parameters
methodthe method to evaluate
argsthe arguments for the method (may be 0)
xsinkif an error occurs, the Qore-language exception information will be added here
DLLEXPORT bool QoreObject::compareHard ( const QoreObject obj,
ExceptionSink xsink 
) const

tests for equality ("deep compare" including all contained values) with possible type conversion of contained elements (hard compare)

Parameters
objthe object to compare
xsinkif an error occurs, the Qore-language exception information will be added here
DLLEXPORT bool QoreObject::compareSoft ( const QoreObject obj,
ExceptionSink xsink 
) const

tests for equality ("deep compare" including all contained values) with possible type conversion of contained elements (soft compare)

Parameters
objthe object to compare
xsinkif an error occurs, the Qore-language exception information will be added here
DLLEXPORT QoreHashNode* QoreObject::copyData ( ExceptionSink xsink) const

retuns all member data of the object (or 0 if there's an exception), caller owns the QoreHashNode reference returned

Parameters
xsinkif an error occurs, the Qore-language exception information will be added here
DLLLOCAL void QoreObject::defaultSystemDestructor ( qore_classid_t  classID,
ExceptionSink xsink 
)

runs the destructor for system objects

Parameters
classIDthe ID of the class
xsinkif an error occurs, the Qore-language exception information will be added here
DLLEXPORT void QoreObject::deleteBlockerRef ( ) const

increment the reference count of the object, to be called only from within a delete blocker

it is an error to call this function from anything other than a delete blocker

DLLEXPORT void QoreObject::deleteMemberValue ( const QoreString key,
ExceptionSink xsink 
)

removes a member from the object, if the member's value is an object it is deleted as well (destructor is called)

Parameters
keythe name of the member to delete
xsinkif an error occurs, the Qore-language exception information will be added here
DLLEXPORT void QoreObject::deleteMemberValue ( const char *  key,
ExceptionSink xsink 
)

removes a member from the object, if the member's value is an object it is deleted as well (destructor is called)

Parameters
keythe name of the member to delete, assumed to be in the default encoding (QCS_DEFAULT)
xsinkif an error occurs, the Qore-language exception information will be added here
virtual DLLEXPORT bool QoreObject::derefImpl ( ExceptionSink xsink)
protectedvirtual

runs the destructor if necessary and dereferences all members

Note that other objects could be deleted as well if they are members of this object, any exceptions thrown there will also be added to "xsink"

Parameters
xsinkif an error occurs, the Qore-language exception information will be added here

Reimplemented from AbstractQoreNode.

DLLEXPORT void QoreObject::doDelete ( ExceptionSink xsink)

runs the destructor on the object (if it hasn't already been deleted)

Parameters
xsinkif an error occurs, the Qore-language exception information will be added here
DLLLOCAL AbstractQoreNode* QoreObject::evalBuiltinMethodWithPrivateData ( const QoreMethod method,
const BuiltinNormalMethodVariantBase *  meth,
const QoreListNode args,
ExceptionSink xsink 
)

called to evaluate a builtin method when private data is available

Parameters
methoda constant reference to the QoreMethod object
meththe name of the method to evalute
argsthe arguments for the method
xsinkif an error occurs, the Qore-language exception information will be added here
virtual DLLLOCAL AbstractQoreNode* QoreObject::evalImpl ( ExceptionSink xsink) const
protectedvirtual

should never be called, does nothing

in debugging builds calls to this function will abort

Implements AbstractQoreNode.

virtual DLLLOCAL AbstractQoreNode* QoreObject::evalImpl ( bool &  needs_deref,
ExceptionSink xsink 
) const
protectedvirtual

should never be called, does nothing

in debugging builds calls to this function will abort

Implements AbstractQoreNode.

DLLLOCAL AbstractQoreNode* QoreObject::evalMember ( const QoreString member,
ExceptionSink xsink 
)

returns the value of the member with an incremented reference count, or executes the memberGate() method and returns the value

Parameters
memberthe name of the member to get the value for (or evaluate the memberGate() method against)
xsinkif an error occurs, the Qore-language exception information will be added here
DLLEXPORT AbstractQoreNode* QoreObject::evalMethod ( const QoreString name,
const QoreListNode args,
ExceptionSink xsink 
)

evaluates the given method with the arguments passed and returns the return value, caller owns the AbstractQoreNode (reference) returned

Parameters
namethe name of the method to evaluate
argsthe arguments for the method (may be 0)
xsinkif an error occurs, the Qore-language exception information will be added here
DLLEXPORT AbstractQoreNode* QoreObject::evalMethod ( const char *  name,
const QoreListNode args,
ExceptionSink xsink 
)

evaluates the given method with the arguments passed and returns the return value, caller owns the AbstractQoreNode (reference) returned

Parameters
namethe name of the method to evaluate, must be in QCS_DEFAULT encoding
argsthe arguments for the method (may be 0)
xsinkif an error occurs, the Qore-language exception information will be added here
DLLEXPORT AbstractQoreNode* QoreObject::evalMethod ( const QoreMethod method,
const QoreListNode args,
ExceptionSink xsink 
)

evaluates the given method with the arguments passed and returns the return value, caller owns the AbstractQoreNode (reference) returned

Parameters
methodthe method to evaluate
argsthe arguments for the method (may be 0)
xsinkif an error occurs, the Qore-language exception information will be added here
DLLEXPORT void QoreObject::externalDelete ( qore_classid_t  key,
ExceptionSink xsink 
)

call this function when an object's private data is deleted externally

this function will clear the private data and delete the object

Parameters
keythe class ID of the class that owns the private data
xsinkif an error occurs, the Qore-language exception information will be added here
virtual DLLLOCAL double QoreObject::floatEvalImpl ( ExceptionSink xsink) const
protectedvirtual

should never be called, does nothing

in debugging builds calls to this function will abort

Reimplemented from AbstractQoreNode.

DLLEXPORT double QoreObject::floatEvalMethod ( const char *  name,
const QoreListNode args,
ExceptionSink xsink 
)

evaluates the given method with the arguments passed and returns the return value as a double

Parameters
namethe name of the method to evaluate, must be in QCS_DEFAULT encoding
argsthe arguments for the method (may be 0)
xsinkif an error occurs, the Qore-language exception information will be added here
DLLEXPORT double QoreObject::floatEvalMethod ( const QoreMethod method,
const QoreListNode args,
ExceptionSink xsink 
)

evaluates the given method with the arguments passed and returns the return value as a float

Parameters
methodthe method to evaluate
argsthe arguments for the method (may be 0)
xsinkif an error occurs, the Qore-language exception information will be added here
DLLLOCAL AbstractPrivateData* QoreObject::getAndClearPrivateData ( qore_classid_t  key,
ExceptionSink xsink 
)

retrieves the private data pointer and clears it from the object's private data store, used when executing destructors

Parameters
keythe class key to use
xsinkif an error occurs, the Qore-language exception information will be added here
virtual DLLEXPORT bool QoreObject::getAsBoolImpl ( ) const
virtual

returns false unless perl-boolean-evaluation is enabled, in which case it returns false only when empty

Returns
false unless perl-boolean-evaluation is enabled, in which case it returns false only when empty

Reimplemented from AbstractQoreNode.

virtual DLLEXPORT int QoreObject::getAsString ( QoreString str,
int  foff,
ExceptionSink xsink 
) const
virtual

concatenate the verbose string representation of the list (including all contained values) to an existing QoreString

used for n and N printf formatting

Parameters
strthe string representation of the type will be concatenated to this QoreString reference
fofffor multi-line formatting offset, -1 = no line breaks
xsinkif an error occurs, the Qore-language exception information will be added here
Returns
-1 for exception raised, 0 = OK

Implements AbstractQoreNode.

virtual DLLEXPORT QoreString* QoreObject::getAsString ( bool &  del,
int  foff,
ExceptionSink xsink 
) const
virtual

returns a QoreString giving the verbose string representation of the List (including all contained values)

used for n and N printf formatting

Parameters
delif this is true when the function returns, then the returned QoreString pointer should be deleted, if false, then it must not be
fofffor multi-line formatting offset, -1 = no line breaks
xsinkif an error occurs, the Qore-language exception information will be added here NOTE: Use the QoreNodeAsStringHelper class (defined in QoreStringNode.h) instead of using this function directly
See also
QoreNodeAsStringHelper

Implements AbstractQoreNode.

DLLEXPORT const QoreClass* QoreObject::getClass ( qore_classid_t  cid) const

returns a pointer to a QoreClass object if the class ID passed is a valid class in the hierarchy

Parameters
cidthe class ID passed
Returns
a pointer to a QoreClass object if the class ID passed is a valid class in the hierarchy
DLLEXPORT const QoreClass* QoreObject::getClass ( qore_classid_t  cid,
bool &  priv 
) const

returns a pointer to the QoreClass object representing the class ID passed if it exists in the class hierarchy and sets a flag indicating if it's privately inherited or not

if the class ID is equal to the current class or is a base class of the current class, the appropriate QoreClass pointer will be returned.

Parameters
cidthe class ID of the QoreClass to find
priva flag indicating if the class is privately inherited or not
Returns
a pointer to the QoreClass object representing the class ID passed if it exists in the class hierarchy
DLLEXPORT const QoreClass* QoreObject::getClass ( ) const

returns a pointer to the QoreClass of this object

Returns
a pointer to the QoreClass of this object
DLLEXPORT const char* QoreObject::getClassName ( ) const

returns the name of the class

Returns
the name of the class
DLLLOCAL AbstractQoreNode** QoreObject::getExistingValuePtr ( const QoreString mem,
AutoVLock vl,
ExceptionSink xsink 
) const

returns a pointer to a pointer to the value of the member only if it already exists, so it can be set externally

if no exception occurs, the lock is held and added to the AutoVLock "vl", otherwise the lock is released an exception will be thrown if the character encoding conversion fails also if the object has a deleted status an exception will be thrown

Parameters
memthe name of the member
vlthe AutoVLock container for nested locking
xsinkif an error occurs, the Qore-language exception information will be added here
Returns
a pointer to the pointer for the value of the member or 0 if it didn't already exist
DLLLOCAL AbstractQoreNode** QoreObject::getExistingValuePtr ( const char *  mem,
AutoVLock vl,
ExceptionSink xsink 
) const

returns a pointer to a pointer to the value of the member only if it already exists

if no exception occurs, the lock is held and added to the AutoVLock "vl", otherwise the lock is released if the object has a deleted status an exception will be thrown

Parameters
memthe name of the member, assumed to be in the default encoding (QCS_DEFAULT)
vlthe AutoVLock container for nested locking
xsinkif an error occurs, the Qore-language exception information will be added here
Returns
a pointer to the pointer for the value of the member or 0 if it didn't already exist
DLLEXPORT int64 QoreObject::getMemberAsBigInt ( const char *  mem,
bool &  found,
ExceptionSink xsink 
) const

returns the value of the given member as an int64

Parameters
memthe name member to retrieve the value for
foundreturns true if the member was found, false if not
xsinkif an error occurs, the Qore-language exception information will be added here
Returns
the value of the given member as an int64
DLLEXPORT QoreListNode* QoreObject::getMemberList ( ExceptionSink xsink) const

returns the list of members, caller owns the list returned

Parameters
xsinkif an error occurs, the Qore-language exception information will be added here
DLLEXPORT AbstractQoreNode* QoreObject::getMemberValueNoMethod ( const QoreString key,
AutoVLock vl,
ExceptionSink xsink 
) const

returns the pointer to the value of the member

if the member exists, the lock is held and added to the AutoVLock "vl", otherwise the lock is released an exception will be thrown if the character encoding conversion fails also if the object has a deleted status an exception will be thrown NOTE: the value returned is not referenced by this function, but rather the object is locked

Parameters
keythe name of the member
vlthe AutoVLock container for nested locking
xsinkif an error occurs, the Qore-language exception information will be added here
DLLEXPORT AbstractQoreNode* QoreObject::getMemberValueNoMethod ( const char *  key,
AutoVLock vl,
ExceptionSink xsink 
) const

returns the pointer to the value of the member

NOTE: the value returned is not referenced by this function, but rather the object is locked

Parameters
keythe name of the member, assumed to be in the default encoding (QCS_DEFAULT)
vlthe AutoVLock container for nested locking
xsinkif an error occurs, the Qore-language exception information will be added here
DLLEXPORT QoreProgram* QoreObject::getProgram ( ) const

returns the QoreProgram object associated with this object

for system objects only (created with the system constructor) this will be 0

Returns
the QoreProgram object associated with this object
DLLEXPORT AbstractQoreNode* QoreObject::getReferencedMemberNoMethod ( const char *  mem,
ExceptionSink xsink 
) const

returns the value of the given member with the reference count incremented, the caller owns the AbstractQoreNode (reference) returned

Parameters
memthe name member to retrieve the value for
xsinkif an error occurs, the Qore-language exception information will be added here
Returns
the value of the given member with the reference count incremented, the caller owns the AbstractQoreNode (reference) returned
DLLEXPORT AbstractPrivateData* QoreObject::getReferencedPrivateData ( qore_classid_t  key,
ExceptionSink xsink 
) const

returns the private data corresponding to the class ID passed with an incremented reference count, caller owns the reference

Parameters
keythe class ID of the class to get the private data for
xsinkif an error occurs, the Qore-language exception information will be added here
DLLLOCAL QoreHashNode* QoreObject::getRuntimeMemberHash ( ExceptionSink xsink) const

retuns member data of the object (or 0 if there's an exception), private members are excluded if called outside the class, caller owns the QoreHashNode reference returned

Parameters
xsinkif an error occurs, the Qore-language exception information will be added here
Returns
member data of the object
virtual DLLLOCAL int QoreObject::integerEvalImpl ( ExceptionSink xsink) const
protectedvirtual

should never be called, does nothing

in debugging builds calls to this function will abort

Reimplemented from AbstractQoreNode.

DLLEXPORT int QoreObject::intEvalMethod ( const char *  name,
const QoreListNode args,
ExceptionSink xsink 
)

evaluates the given method with the arguments passed and returns the return value as an int

Parameters
namethe name of the method to evaluate, must be in QCS_DEFAULT encoding
argsthe arguments for the method (may be 0)
xsinkif an error occurs, the Qore-language exception information will be added here
DLLEXPORT int QoreObject::intEvalMethod ( const QoreMethod method,
const QoreListNode args,
ExceptionSink xsink 
)

evaluates the given method with the arguments passed and returns the return value as an int

Parameters
methodthe method to evaluate
argsthe arguments for the method (may be 0)
xsinkif an error occurs, the Qore-language exception information will be added here
virtual DLLEXPORT bool QoreObject::is_equal_hard ( const AbstractQoreNode v,
ExceptionSink xsink 
) const
virtual

tests for equality ("deep compare" including all contained values) without type conversions (hard compare)

Parameters
vthe value to compare
xsinkif an error occurs, the Qore-language exception information will be added here

Implements AbstractQoreNode.

virtual DLLEXPORT bool QoreObject::is_equal_soft ( const AbstractQoreNode v,
ExceptionSink xsink 
) const
virtual

tests for equality ("deep compare" including all contained values) with possible type conversion (soft compare)

Parameters
vthe value to compare
xsinkif an error occurs, the Qore-language exception information will be added here

Implements AbstractQoreNode.

DLLEXPORT bool QoreObject::isSystemObject ( ) const

returns true if the object is a system object (created with the system constructor)

Returns
true if the object is a system object (created with the system constructor)
DLLEXPORT bool QoreObject::isValid ( ) const

returns true if the object is valid

Returns
true if the object is valid
DLLEXPORT void QoreObject::mergeDataToHash ( QoreHashNode hash,
ExceptionSink xsink 
)

copies all member data of the current object to the passed QoreHashNode

Parameters
hashthe hash to copy all data from
xsinkif an error occurs, the Qore-language exception information will be added here
DLLLOCAL void QoreObject::obliterate ( ExceptionSink xsink)

destroys all members and dereferences all private data structures

Parameters
xsinkif an error occurs, the Qore-language exception information will be added here
DLLEXPORT void QoreObject::removeMember ( const QoreString key,
ExceptionSink xsink 
)

removes a member from the object without explicitly calling destructors; the value is only dereferenced

objects will be destructed if they go out of scope, however

Parameters
keythe name of the member to remove
xsinkif an error occurs, the Qore-language exception information will be added here
DLLEXPORT void QoreObject::removeMember ( const char *  key,
ExceptionSink xsink 
)

removes a member from the object without explicitly calling destructors; the value is only dereferenced

objects will be destructed if they go out of scope, however

Parameters
keythe name of the member to remove, assumed to be in the default encoding (QCS_DEFAULT)
xsinkif an error occurs, the Qore-language exception information will be added here
DLLEXPORT void QoreObject::setPrivate ( qore_classid_t  key,
AbstractPrivateData pd 
)

sets private data for the object against the class ID passed, used in C++ functions implementing Qore constructors

Parameters
keythe class ID of the class to set the private data for
pdthe private data for the given class ID
DLLEXPORT void QoreObject::setValue ( const char *  key,
AbstractQoreNode val,
ExceptionSink xsink 
)

sets the value of the given member to the given value

the value must be already referenced for the assignment to the object

Parameters
keythe name of the member
valthe value to set for the member (must be already referenced for the assignment, 0 is OK too)
xsinkif an error occurs, the Qore-language exception information will be added here
DLLEXPORT int QoreObject::size ( ExceptionSink xsink) const

returns the number of members of the object

Parameters
xsinkif an error occurs, the Qore-language exception information will be added here
DLLEXPORT AbstractQoreNode* QoreObject::takeMember ( const QoreString key,
ExceptionSink xsink 
)

removes a member from the object without explicitly calling destructors and returns the value removed; the caller owns the reference returned

if a Qore-language exception is raised, the return value is always 0

Parameters
keythe name of the member to remove
xsinkif an error occurs, the Qore-language exception information will be added here
Returns
the value removed from the object; caller owns the reference
DLLEXPORT AbstractQoreNode* QoreObject::takeMember ( const char *  key,
ExceptionSink xsink 
)

removes a member from the object without explicitly calling destructors and returns the value removed; the caller owns the reference returned

if a Qore-language exception is raised, the return value is always 0

Parameters
keythe name of the member to remove, assumed to be in the default encoding (QCS_DEFAULT)
xsinkif an error occurs, the Qore-language exception information will be added here
Returns
the value removed from the object; caller owns the reference
DLLEXPORT void QoreObject::tDeref ( )

decrements the existence reference count, when it reaches 0 the C++ object ("this") will be deleted

To increment the existence reference count, call QoreObject::tRef()

See also
QoreObject::tRef()
DLLEXPORT void QoreObject::tRef ( ) const

increments the existence reference count

Will not prolong the scope of the object (use QoreObject::ref() to prolong the scope of the object). To derecrement the count, call QoreObject::tDeref()

See also
QoreObject::tDeref()
QoreObject::ref()
DLLEXPORT bool QoreObject::validInstanceOf ( qore_classid_t  cid) const

returns true if this object is a valid instance of the classid passed

Parameters
cidthe class ID to check
Deprecated:
use validInstanceOf(const QoreClass&) instead
DLLEXPORT bool QoreObject::validInstanceOf ( const QoreClass qc) const

returns true if this object is a valid instance of the classid passed

Parameters
qcthe class to check

The documentation for this class was generated from the following file: