Qore Programming Language 1.13.0
Loading...
Searching...
No Matches
QoreObject Class Reference

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

#include <QoreObject.h>

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

Public Member Methods

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 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 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 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 doDelete (ExceptionSink *xsink)
 runs the destructor on the object (if it hasn't already been deleted) More...
 
DLLLOCAL QoreValue evalBuiltinMethodWithPrivateData (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)
 
DLLEXPORT QoreValue evalMember (const char *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 QoreValue 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 More...
 
DLLEXPORT QoreValue evalMethod (const char *name, const QoreListNode *args, ExceptionSink *xsink)
 evaluates the given method with the arguments passed and returns the return value, caller owns any reference returned More...
 
DLLEXPORT QoreValue evalMethod (const QoreMethod &method, const QoreClass *class_ctx, const QoreListNode *args, ExceptionSink *xsink)
 evaluates the given method with the given class context and arguments passed and returns the return value, caller owns the AbstractQoreNode (reference) returned More...
 
DLLEXPORT QoreValue 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 More...
 
DLLEXPORT QoreValue evalMethod (const QoreString *name, const QoreListNode *args, ExceptionSink *xsink)
 evaluates the given method with the arguments passed and returns the return value, caller owns any reference returned More...
 
DLLEXPORT QoreValue evalMethodVariant (const QoreMethod &method, const QoreClass *class_ctx, const QoreExternalMethodVariant *variant, const QoreListNode *args, ExceptionSink *xsink)
 executes a normal object method variant More...
 
DLLEXPORT QoreValue evalMethodVariant (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...
 
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 QoreStringgetAsString (bool &del, int foff, ExceptionSink *xsink) const
 returns a QoreString giving the verbose string representation of the List (including all contained values) 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...
 
DLLEXPORT const QoreClassgetClass () const
 returns a pointer to the QoreClass of this object 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 ClassAccess getClassAccess (const QoreClass &cls) const
 returns the accessibility of the class in the object's hierachy or Inaccessible the object does not inherit the class at all More...
 
DLLEXPORT const char * getClassName () const
 returns the name of the class 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 QoreValue getMemberValueNoMethod (const char *key, AutoVLock *vl, ExceptionSink *xsink) const
 returns the pointer to the value of the member More...
 
DLLEXPORT QoreValue getMemberValueNoMethod (const QoreString *key, AutoVLock *vl, ExceptionSink *xsink) const
 returns the pointer to the value of the member More...
 
DLLEXPORT QoreProgramgetProgram () const
 returns the QoreProgram object associated with this object More...
 
DLLEXPORT QoreValue getReferencedMemberNoMethod (const char *key, const QoreClass *cls, ExceptionSink *xsink) const
 returns the value of the given member as accessed from the given class; caller owns any reference returned More...
 
DLLEXPORT QoreValue getReferencedMemberNoMethod (const char *mem, ExceptionSink *xsink) const
 returns the value of the given member with the reference count incremented, the caller owns any 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...
 
template<class T >
DLLLOCAL T * 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 More...
 
DLLEXPORT const QoreClassgetSurfaceClass () const
 returns a pointer to the QoreClass of this object or to the injection target class in case the class was injected More...
 
DLLEXPORT const char * getSurfaceClassName () const
 returns the name of the class or to the name of the injection target class in case the class was injected More...
 
virtual DLLEXPORT const char * getTypeName () const
 returns the type name as a c string
 
DLLEXPORT bool hasMember (const char *mem, ExceptionSink *xsink) const
 returns true if the object has the given member (note that the member may not have a value)
 
DLLLOCAL bool hasMemberNotification () const
 returns true if the class has a memberNotification method
 
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...
 
DLLLOCAL QoreObjectobjectRefSelf () const
 Returns the object with the reference count increased. More...
 
DLLLOCAL void obliterate (ExceptionSink *xsink)
 destroys all members and dereferences all private data structures More...
 
virtual DLLEXPORT AbstractQoreNoderealCopy () const
 performs a the same object with its reference count increased
 
DLLEXPORT void realDeref (ExceptionSink *xsink)
 decrements the standard reference count of the object for references that cannot be part of a recursive graph
 
DLLEXPORT void realRef ()
 increments the standard reference count of the object for references that cannot be part of a recursive graph
 
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 removeMember (const QoreString *key, ExceptionSink *xsink)
 removes a member from the object without explicitly calling destructors; the value is only dereferenced More...
 
DLLEXPORT int setMemberValue (const char *key, const QoreClass *cls, const QoreValue val, ExceptionSink *xsink)
 sets the value of the given member as accessed from the given class 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, QoreValue 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 QoreValue 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 More...
 
DLLEXPORT QoreValue 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 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 AbstractPrivateDatatryGetReferencedPrivateData (qore_classid_t key, ExceptionSink *xsink) const
 returns the private data corresponding to the class ID passed with an incremented reference count if it exists, caller owns the reference More...
 
template<class T >
DLLLOCAL T * tryGetReferencedPrivateData (qore_classid_t key, ExceptionSink *xsink) const
 returns the private data corresponding to the class ID passed with an incremented reference count if it exists, caller owns the reference More...
 
DLLEXPORT bool validInstanceOf (const QoreClass &qc) const
 returns true if this object is a valid instance of the classid passed 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 validInstanceOfStrict (const QoreClass &qc) const
 returns true if this object is a valid instance of the classid passed; does not check for injected compatibility More...
 
- Public Member Methods inherited from AbstractQoreNode
DLLEXPORT AbstractQoreNode (const AbstractQoreNode &v)
 copy constructor
 
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...
 
virtual DLLEXPORT void customDeref (ExceptionSink *xsink)
 
virtual DLLEXPORT void customRef () const
 special processing when the object's reference count transitions from 0-1 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...
 
virtual DLLEXPORT bool derefImpl (ExceptionSink *xsink)
 decrements the reference count More...
 
DLLEXPORT QoreValue eval (bool &needs_deref, ExceptionSink *xsink) const
 optionally evaluates the argument More...
 
DLLEXPORT QoreValue eval (ExceptionSink *xsink) const
 evaluates the object and returns a value (or 0) More...
 
virtual DLLEXPORT QoreValue evalImpl (bool &needs_deref, ExceptionSink *xsink) const =0
 optionally evaluates the argument More...
 
DLLEXPORT int64 getAsBigInt () const
 returns the 64-bit integer value of the object More...
 
virtual DLLLOCAL int64 getAsBigIntImpl () const
 default implementation, returns 0 More...
 
DLLEXPORT bool getAsBool () const
 returns the boolean value of the object More...
 
virtual DLLLOCAL bool getAsBoolImpl () const
 default implementation, returns false More...
 
DLLEXPORT double getAsFloat () const
 returns the float value of the object More...
 
virtual DLLLOCAL double getAsFloatImpl () const
 default implementation, returns 0.0 More...
 
DLLEXPORT int getAsInt () const
 returns the integer value of the object More...
 
virtual DLLLOCAL int getAsIntImpl () const
 default implementation, returns 0 More...
 
virtual DLLEXPORT QoreStringgetAsString (bool &del, int foff, ExceptionSink *xsink) const =0
 returns a QoreString giving the verbose string representation of the value (including all contained values for container types) More...
 
virtual DLLEXPORT int getAsString (QoreString &str, int foff, ExceptionSink *xsink) const =0
 concatenate the verbose string representation of the value (including all contained values for container types) to an existing QoreString 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...
 
virtual DLLEXPORT const char * getTypeName () const =0
 returns the type name as a c string More...
 
virtual DLLEXPORT bool is_equal_hard (const AbstractQoreNode *v, ExceptionSink *xsink) const =0
 tests for equality ("deep compare" including all contained values for container types) without type conversions (hard compare) More...
 
virtual DLLEXPORT bool is_equal_soft (const AbstractQoreNode *v, ExceptionSink *xsink) const =0
 tests for equality ("deep compare" including all contained values for container types) with possible type conversion (soft compare) 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...
 
DLLLOCAL AbstractQoreNodeoperator= (const AbstractQoreNode &)
 this function is not implemented; it is here as a private function in order to prohibit it from being used
 
virtual DLLLOCAL int parseInit (QoreValue &val, QoreParseContext &parse_context)
 for use by parse types to initialize them for execution during stage 1 parsing More...
 
virtual DLLEXPORT AbstractQoreNoderealCopy () const =0
 returns a copy of the object; the caller owns the reference count More...
 
DLLEXPORT void ref () const
 increments the reference count
 
DLLEXPORT AbstractQoreNoderefSelf () const
 returns "this" with an incremented reference count More...
 
- Public Member Methods inherited from QoreReferenceCounter
DLLEXPORT QoreReferenceCounter ()
 creates the reference counter object
 
DLLEXPORT QoreReferenceCounter (const QoreReferenceCounter &old)
 creates a new object with a reference count of 1 More...
 
DLLEXPORT ~QoreReferenceCounter ()
 destroys the reference counter object
 
DLLEXPORT bool is_unique () const
 returns true if the reference count is 1 More...
 
DLLEXPORT 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 Methods

static DLLEXPORT QoreValue evalStaticMethod (const QoreMethod &method, const QoreClass *class_ctx, const QoreListNode *args, ExceptionSink *xsink)
 executes a static method with the given class context to access private:internal methods More...
 
static DLLEXPORT QoreValue evalStaticMethod (const QoreMethod &method, const QoreListNode *args, ExceptionSink *xsink)
 executes a static method More...
 
static DLLEXPORT QoreValue evalStaticMethodVariant (const QoreMethod &method, const QoreClass *class_ctx, const QoreExternalMethodVariant *variant, const QoreListNode *args, ExceptionSink *xsink)
 executes a static method variant with the given class context to access private:internal methods More...
 
static DLLEXPORT QoreValue evalStaticMethodVariant (const QoreMethod &method, const QoreExternalMethodVariant *variant, const QoreListNode *args, ExceptionSink *xsink)
 executes a static method variant More...
 
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)
 

Private Member Methods

virtual DLLLOCAL ~QoreObject ()
 destructor
 
virtual DLLLOCAL void customDeref (ExceptionSink *xsink)
 custom dereference handler - with delete
 
virtual DLLLOCAL void customRef () const
 custom reference handler
 
virtual DLLEXPORT bool derefImpl (ExceptionSink *xsink)
 runs the destructor if necessary and dereferences all members More...
 
virtual DLLLOCAL QoreValue evalImpl (bool &needs_deref, ExceptionSink *xsink) const
 should never be called, does nothing More...
 
- Private Member Methods inherited from AbstractQoreNode
virtual DLLEXPORT ~AbstractQoreNode ()
 default destructor does nothing More...
 

Additional Inherited Members

- Private 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
 

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

◆ QoreObject() [1/2]

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)

◆ QoreObject() [2/2]

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

◆ addPrivateDataToString()

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

◆ compareHard()

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

◆ compareSoft()

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

◆ copyData()

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

◆ defaultSystemDestructor()

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

◆ deleteMemberValue() [1/2]

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

◆ deleteMemberValue() [2/2]

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

◆ derefImpl()

virtual DLLEXPORT bool QoreObject::derefImpl ( ExceptionSink xsink)
privatevirtual

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.

◆ doDelete()

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

◆ evalBuiltinMethodWithPrivateData()

DLLLOCAL QoreValue 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

◆ evalImpl()

virtual DLLLOCAL QoreValue QoreObject::evalImpl ( bool &  needs_deref,
ExceptionSink xsink 
) const
privatevirtual

should never be called, does nothing

in debugging builds calls to this function will abort

Implements AbstractQoreNode.

◆ evalMember() [1/2]

DLLEXPORT QoreValue QoreObject::evalMember ( const char *  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); must be in the default encoding (normally UTF-8)
xsinkif an error occurs, the Qore-language exception information will be added here
Since
Qore 0.9.5

◆ evalMember() [2/2]

DLLEXPORT QoreValue 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
Since
Qore 0.9.5 part of the public API

◆ evalMethod() [1/4]

DLLEXPORT QoreValue 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 any 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

◆ evalMethod() [2/4]

DLLEXPORT QoreValue QoreObject::evalMethod ( const QoreMethod method,
const QoreClass class_ctx,
const QoreListNode args,
ExceptionSink xsink 
)

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

Parameters
methodthe method to evaluate
class_ctxthe class context for the method evaluation for evaluating private:internal methods
argsthe arguments for the method (may be 0)
xsinkif an error occurs, the Qore-language exception information will be added here
Returns
the value returned by the method; the caller owns any reference returned
Since
Qore 0.9

◆ evalMethod() [3/4]

DLLEXPORT QoreValue 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

◆ evalMethod() [4/4]

DLLEXPORT QoreValue 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 any 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

Referenced by AbstractQoreThreadResource::cleanup(), OutputStreamWrapper::close(), InputStreamWrapper::peek(), InputStreamWrapper::read(), and OutputStreamWrapper::write().

◆ evalMethodVariant()

DLLEXPORT QoreValue QoreObject::evalMethodVariant ( const QoreMethod method,
const QoreClass class_ctx,
const QoreExternalMethodVariant variant,
const QoreListNode args,
ExceptionSink xsink 
)

executes a normal object method variant

Since
Qore 0.9

◆ evalStaticMethod() [1/2]

static DLLEXPORT QoreValue QoreObject::evalStaticMethod ( const QoreMethod method,
const QoreClass class_ctx,
const QoreListNode args,
ExceptionSink xsink 
)
static

executes a static method with the given class context to access private:internal methods

Since
Qore 0.9

◆ evalStaticMethod() [2/2]

static DLLEXPORT QoreValue QoreObject::evalStaticMethod ( const QoreMethod method,
const QoreListNode args,
ExceptionSink xsink 
)
static

executes a static method

Since
Qore 0.9

◆ evalStaticMethodVariant() [1/2]

static DLLEXPORT QoreValue QoreObject::evalStaticMethodVariant ( const QoreMethod method,
const QoreClass class_ctx,
const QoreExternalMethodVariant variant,
const QoreListNode args,
ExceptionSink xsink 
)
static

executes a static method variant with the given class context to access private:internal methods

Since
Qore 0.9

◆ evalStaticMethodVariant() [2/2]

static DLLEXPORT QoreValue QoreObject::evalStaticMethodVariant ( const QoreMethod method,
const QoreExternalMethodVariant variant,
const QoreListNode args,
ExceptionSink xsink 
)
static

executes a static method variant

Since
Qore 0.9

◆ externalDelete()

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

◆ getAndClearPrivateData()

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

◆ getAsBoolImpl()

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.

◆ getAsString() [1/2]

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.

◆ getAsString() [2/2]

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.

◆ getClass() [1/3]

DLLEXPORT const QoreClass * QoreObject::getClass ( ) const

returns a pointer to the QoreClass of this object

Returns
a pointer to the QoreClass of this object

◆ getClass() [2/3]

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

◆ getClass() [3/3]

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

◆ getClassAccess()

DLLEXPORT ClassAccess QoreObject::getClassAccess ( const QoreClass cls) const

returns the accessibility of the class in the object's hierachy or Inaccessible the object does not inherit the class at all

Parameters
clsthe class to check
Returns
the accessibility of the class in the object's hierachy or Inaccessible the object does not inherit the class at all
Since
Qore 0.9

◆ getClassName()

DLLEXPORT const char * QoreObject::getClassName ( ) const

returns the name of the class

Returns
the name of the class

Referenced by InputStreamWrapper::read().

◆ getMemberAsBigInt()

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

◆ getMemberList()

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

◆ getMemberValueNoMethod() [1/2]

DLLEXPORT QoreValue 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

◆ getMemberValueNoMethod() [2/2]

DLLEXPORT QoreValue 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

◆ getProgram()

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

Referenced by AbstractQoreThreadResource::getProgram().

◆ getReferencedMemberNoMethod() [1/2]

DLLEXPORT QoreValue QoreObject::getReferencedMemberNoMethod ( const char *  key,
const QoreClass cls,
ExceptionSink xsink 
) const

returns the value of the given member as accessed from the given class; caller owns any reference returned

Parameters
keythe name of the member, assumed to be in the default encoding (QCS_DEFAULT)
clsthe class context for private:internal members; may be nullptr
xsinkif an error occurs, the Qore-language exception information will be added here
Since
Qore 0.9

◆ getReferencedMemberNoMethod() [2/2]

DLLEXPORT QoreValue QoreObject::getReferencedMemberNoMethod ( const char *  mem,
ExceptionSink xsink 
) const

returns the value of the given member with the reference count incremented, the caller owns any 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 any reference returned

◆ getReferencedPrivateData() [1/2]

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

Referenced by getReferencedPrivateData().

◆ getReferencedPrivateData() [2/2]

template<class T >
DLLLOCAL T * QoreObject::getReferencedPrivateData ( qore_classid_t  key,
ExceptionSink xsink 
) const
inline

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
Since
Qore 1.12

References getReferencedPrivateData().

◆ getSurfaceClass()

DLLEXPORT const QoreClass * QoreObject::getSurfaceClass ( ) const

returns a pointer to the QoreClass of this object or to the injection target class in case the class was injected

Returns
a pointer to the QoreClass of this object or to the injection target class in case the class was injected

If the class was not injected, this this method returns the same value as getClass()

Since
Qore 1.0.3

◆ getSurfaceClassName()

DLLEXPORT const char * QoreObject::getSurfaceClassName ( ) const

returns the name of the class or to the name of the injection target class in case the class was injected

Returns
the name of the class or to the name of the injection target class in case the class was injected

If the class was not injected, this this method returns the same value as getClassName()

Since
Qore 1.0.3

◆ is_equal_hard()

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.

◆ is_equal_soft()

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.

◆ isSystemObject()

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)

◆ isValid()

DLLEXPORT bool QoreObject::isValid ( ) const

returns true if the object is valid

Returns
true if the object is valid

◆ objectRefSelf()

DLLLOCAL QoreObject * QoreObject::objectRefSelf ( ) const
inline

Returns the object with the reference count increased.

Since
Qore 1.12

References AbstractQoreNode::ref().

◆ obliterate()

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

◆ removeMember() [1/2]

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

◆ removeMember() [2/2]

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

◆ setMemberValue()

DLLEXPORT int QoreObject::setMemberValue ( const char *  key,
const QoreClass cls,
const QoreValue  val,
ExceptionSink xsink 
)

sets the value of the given member as accessed from the given class

Parameters
keythe name of the member, assumed to be in the default encoding (QCS_DEFAULT)
clsthe class context for private:internal members; may be nullptr
valthe value to set
xsinkif an error occurs, the Qore-language exception information will be added here
Returns
0 = no errors, -1 = Qore-language exception raised
Since
Qore 0.9

◆ setPrivate()

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

◆ setValue()

DLLEXPORT void QoreObject::setValue ( const char *  key,
QoreValue  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

◆ size()

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

◆ takeMember() [1/2]

DLLEXPORT QoreValue 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

◆ takeMember() [2/2]

DLLEXPORT QoreValue 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

◆ tDeref()

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()

◆ 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()

◆ tryGetReferencedPrivateData() [1/2]

DLLEXPORT AbstractPrivateData * QoreObject::tryGetReferencedPrivateData ( qore_classid_t  key,
ExceptionSink xsink 
) const

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

Parameters
keythe class ID of the class to get the private data for
xsinkif an error occurs (the object has already been deleted), the Qore-language exception information will be added here
Since
Qore 0.8.13

Referenced by tryGetReferencedPrivateData().

◆ tryGetReferencedPrivateData() [2/2]

template<class T >
DLLLOCAL T * QoreObject::tryGetReferencedPrivateData ( qore_classid_t  key,
ExceptionSink xsink 
) const
inline

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

Parameters
keythe class ID of the class to get the private data for
xsinkif an error occurs (the object has already been deleted), the Qore-language exception information will be added here
Since
Qore 1.12

References tryGetReferencedPrivateData().

◆ validInstanceOf() [1/2]

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

◆ validInstanceOf() [2/2]

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

◆ validInstanceOfStrict()

DLLEXPORT bool QoreObject::validInstanceOfStrict ( const QoreClass qc) const

returns true if this object is a valid instance of the classid passed; does not check for injected compatibility

Parameters
qcthe class to check
Since
Qore 1.0.3

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