Qore Programming Language: include/qore/QoreObject.h (6585) Source File

Qore Programming Language 0.8.11

- Main Page
- Related Pages
- Modules
- Classes
- Files

- File List
- File Members

All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
QoreObject.h
1 /* -*- mode: c++; indent-tabs-mode: nil -*- */
2 /*
3 QoreObject.h
4
5 thread-safe object definition
6
7 references: how many variables are pointing at this object?
8
9 Qore Programming Language
10
11 Copyright 2003 - 2013 David Nichols
12
13 This library is free software; you can redistribute it and/or
14 modify it under the terms of the GNU Lesser General Public
15 License as published by the Free Software Foundation; either
16 version 2.1 of the License, or (at your option) any later version.
17
18 This library is distributed in the hope that it will be useful,
19 but WITHOUT ANY WARRANTY; without even the implied warranty of
20 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
21 Lesser General Public License for more details.
22
23 You should have received a copy of the GNU Lesser General Public
24 License along with this library; if not, write to the Free Software
25 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
26 */
27
28 #ifndef _QORE_QOREOBJECT_H
29
30 #define _QORE_QOREOBJECT_H
31
32 class AutoVLock;
33 class VRMutex;
34 class BuiltinCopy;
35 class BuiltinDeleteBlocker;
36 class BuiltinNormalMethodVariantBase;
37 class BuiltinCopyVariantBase;
38 class QoreExternalMethodVariant;
39 class QoreExternalStaticMethodVariant;
40 class QoreProgram;
41
43
56 class QoreObject : public AbstractQoreNode {
57 friend class qore_object_private;
58 friend class ObjectRSetHelper;
59 friend class ObjectRSet;
60
61 private:
63 class qore_object_private* priv;
64
66 DLLLOCAL QoreObject(const QoreObject&);
67
69 DLLLOCAL QoreObject& operator=(const QoreObject&);
70
71 protected:
73
77 DLLEXPORT virtual bool derefImpl(ExceptionSink* xsink);
78
80
82 DLLLOCAL virtual AbstractQoreNode* evalImpl(ExceptionSink* xsink) const;
83
85
87 DLLLOCAL virtual AbstractQoreNode* evalImpl(bool& needs_deref, ExceptionSink* xsink) const;
88
90
92 DLLLOCAL virtual int64 bigIntEvalImpl(ExceptionSink* xsink) const;
93
95
97 DLLLOCAL virtual int integerEvalImpl(ExceptionSink* xsink) const;
98
100
102 DLLLOCAL virtual bool boolEvalImpl(ExceptionSink* xsink) const;
103
105
107 DLLLOCAL virtual double floatEvalImpl(ExceptionSink* xsink) const;
108
110 DLLLOCAL void customRefIntern() const;
111
113 DLLLOCAL virtual void customRef() const;
114
116 DLLLOCAL virtual void customDeref(ExceptionSink* xsink);
117
119 DLLLOCAL virtual ~QoreObject();
120
121 public:
123
127 DLLEXPORT QoreObject(const QoreClass* oc, QoreProgram* p);
128
130
135 DLLEXPORT QoreObject(const QoreClass* oc, QoreProgram* p, AbstractPrivateData *data);
136
138
140 DLLEXPORT virtual bool getAsBoolImpl() const;
141
143
149 DLLEXPORT virtual int getAsString(QoreString &str, int foff, ExceptionSink* xsink) const;
150
152
159 DLLEXPORT virtual QoreString* getAsString(bool& del, int foff, ExceptionSink* xsink) const;
160
162 DLLEXPORT virtual AbstractQoreNode* realCopy() const;
163
165
169 DLLEXPORT virtual bool is_equal_soft(const AbstractQoreNode* v, ExceptionSink* xsink) const;
170
172
176 DLLEXPORT virtual bool is_equal_hard(const AbstractQoreNode* v, ExceptionSink* xsink) const;
177
179 DLLEXPORT virtual const char* getTypeName() const;
180
182 DLLLOCAL static const char* getStaticTypeName() {
183 return "object";
184 }
185
187 DLLLOCAL static qore_type_t getStaticTypeCode() {
188 return NT_OBJECT;
189 }
190
192
196 DLLEXPORT bool validInstanceOf(qore_classid_t cid) const;
197
199
201 DLLEXPORT bool validInstanceOf(const QoreClass& qc) const;
202
204
209 DLLEXPORT void setValue(const char* key, AbstractQoreNode* val, ExceptionSink* xsink);
210
212
215 DLLEXPORT QoreListNode* getMemberList(ExceptionSink* xsink) const;
216
218
222 DLLEXPORT void deleteMemberValue(const QoreString* key, ExceptionSink* xsink);
223
225
229 DLLEXPORT void deleteMemberValue(const char* key, ExceptionSink* xsink);
230
232
236 DLLEXPORT void removeMember(const QoreString* key, ExceptionSink* xsink);
237
239
243 DLLEXPORT void removeMember(const char* key, ExceptionSink* xsink);
244
246
251 DLLEXPORT AbstractQoreNode* takeMember(const QoreString* key, ExceptionSink* xsink);
252
254
259 DLLEXPORT AbstractQoreNode* takeMember(const char* key, ExceptionSink* xsink);
260
262
265 DLLEXPORT int size(ExceptionSink* xsink) const;
266
268
272 DLLEXPORT bool compareSoft(const QoreObject* obj, ExceptionSink* xsink) const;
273
275
279 DLLEXPORT bool compareHard(const QoreObject* obj, ExceptionSink* xsink) const;
280
282
287 DLLEXPORT AbstractQoreNode* getReferencedMemberNoMethod(const char* mem, ExceptionSink* xsink) const;
288
290
296 DLLEXPORT int64 getMemberAsBigInt(const char* mem, bool& found, ExceptionSink* xsink) const;
297
299
302 DLLEXPORT QoreHashNode* copyData(ExceptionSink* xsink) const;
303
305
309 DLLEXPORT void mergeDataToHash(QoreHashNode* hash, ExceptionSink* xsink);
310
312
316 DLLEXPORT void setPrivate(qore_classid_t key, AbstractPrivateData *pd);
317
319
323 DLLEXPORT AbstractPrivateData *getReferencedPrivateData(qore_classid_t key, ExceptionSink* xsink) const;
324
326
331 DLLEXPORT AbstractQoreNode* evalMethod(const QoreString* name, const QoreListNode* args, ExceptionSink* xsink);
332
334
339 DLLEXPORT AbstractQoreNode* evalMethod(const char* name, const QoreListNode* args, ExceptionSink* xsink);
340
342
347 DLLEXPORT int64 bigIntEvalMethod(const char* name, const QoreListNode* args, ExceptionSink* xsink);
348
350
355 DLLEXPORT int intEvalMethod(const char* name, const QoreListNode* args, ExceptionSink* xsink);
356
358
363 DLLEXPORT bool boolEvalMethod(const char* name, const QoreListNode* args, ExceptionSink* xsink);
364
366
371 DLLEXPORT double floatEvalMethod(const char* name, const QoreListNode* args, ExceptionSink* xsink);
372
374
379 DLLEXPORT AbstractQoreNode* evalMethod(const QoreMethod& method, const QoreListNode* args, ExceptionSink* xsink);
380
382
387 DLLEXPORT int64 bigIntEvalMethod(const QoreMethod& method, const QoreListNode* args, ExceptionSink* xsink);
388
390
395 DLLEXPORT int intEvalMethod(const QoreMethod& method, const QoreListNode* args, ExceptionSink* xsink);
396
398
403 DLLEXPORT bool boolEvalMethod(const QoreMethod& method, const QoreListNode* args, ExceptionSink* xsink);
404
406
411 DLLEXPORT double floatEvalMethod(const QoreMethod& method, const QoreListNode* args, ExceptionSink* xsink);
412
414
417 DLLEXPORT void doDelete(ExceptionSink* xsink);
418
420
424 DLLEXPORT const QoreClass* getClass(qore_classid_t cid) const;
425
427
434 DLLEXPORT const QoreClass* getClass(qore_classid_t cid, bool& priv) const;
435
437
440 DLLEXPORT const QoreClass* getClass() const;
441
443
446 DLLEXPORT const char* getClassName() const;
447
449
452 DLLEXPORT bool isValid() const;
453
455
458 DLLEXPORT QoreProgram* getProgram() const;
459
461
464 DLLEXPORT bool isSystemObject() const;
465
467
472 DLLEXPORT void tRef() const;
473
475
478 DLLEXPORT void tDeref();
479
481
489 DLLEXPORT AbstractQoreNode* getMemberValueNoMethod(const QoreString* key, AutoVLock* vl, ExceptionSink* xsink) const;
490
492
498 DLLEXPORT AbstractQoreNode* getMemberValueNoMethod(const char* key, AutoVLock* vl, ExceptionSink* xsink) const;
499
501
503 DLLEXPORT void deleteBlockerRef() const;
504
506
510 DLLEXPORT void externalDelete(qore_classid_t key, ExceptionSink* xsink);
511
513 DLLEXPORT AbstractQoreNode* evalMethodVariant(const QoreMethod& method, const QoreExternalMethodVariant* variant, const QoreListNode* args, ExceptionSink* xsink);
514
515 DLLLOCAL int getStatus() const;
516
518
522 DLLLOCAL AbstractQoreNode* evalMember(const QoreString* member, ExceptionSink* xsink);
523
525
529 DLLLOCAL QoreHashNode* getRuntimeMemberHash(ExceptionSink* xsink) const;
530
531 DLLLOCAL class KeyNode* getReferencedPrivateDataNode(qore_classid_t key);
532
534
538 DLLLOCAL AbstractPrivateData *getAndClearPrivateData(qore_classid_t key, ExceptionSink* xsink);
539
541
547 DLLLOCAL AbstractQoreNode* evalBuiltinMethodWithPrivateData(const QoreMethod& method, const BuiltinNormalMethodVariantBase* meth, const QoreListNode* args, ExceptionSink* xsink);
548 DLLLOCAL int64 bigIntEvalBuiltinMethodWithPrivateData(const QoreMethod& method, const BuiltinNormalMethodVariantBase* meth, const QoreListNode* args, ExceptionSink* xsink);
549 DLLLOCAL int intEvalBuiltinMethodWithPrivateData(const QoreMethod& method, const BuiltinNormalMethodVariantBase* meth, const QoreListNode* args, ExceptionSink* xsink);
550 DLLLOCAL bool boolEvalBuiltinMethodWithPrivateData(const QoreMethod& method, const BuiltinNormalMethodVariantBase* meth, const QoreListNode* args, ExceptionSink* xsink);
551 DLLLOCAL double floatEvalBuiltinMethodWithPrivateData(const QoreMethod& method, const BuiltinNormalMethodVariantBase* meth, const QoreListNode* args, ExceptionSink* xsink);
552
554 DLLLOCAL void evalCopyMethodWithPrivateData(const QoreClass &thisclass, const BuiltinCopyVariantBase* meth, QoreObject* self, ExceptionSink* xsink);
555
557
561 DLLLOCAL void addPrivateDataToString(QoreString* str, ExceptionSink* xsink) const;
562
564
567 DLLLOCAL void obliterate(ExceptionSink* xsink);
568
570
574 DLLLOCAL void defaultSystemDestructor(qore_classid_t classID, ExceptionSink* xsink);
575
577
585 DLLLOCAL AbstractQoreNode** getExistingValuePtr(const QoreString* mem, AutoVLock* vl, ExceptionSink* xsink) const;
586
588
595 DLLLOCAL AbstractQoreNode** getExistingValuePtr(const char* mem, AutoVLock* vl, ExceptionSink* xsink) const;
596
597 // returns a new hash consisting of just the members of value_list
598 DLLLOCAL QoreHashNode* getSlice(const QoreListNode* value_list, ExceptionSink* xsink) const;
599
601 DLLLOCAL QoreObject(const QoreClass* oc, QoreProgram* p, QoreHashNode* d);
602
604 DLLLOCAL bool evalDeleteBlocker(qore_classid_t classid_for_method, BuiltinDeleteBlocker* meth);
605
607 DLLLOCAL bool hasMemberNotification() const;
608
610 DLLLOCAL void execMemberNotification(const char* member, ExceptionSink* xsink);
611
613 DLLLOCAL AbstractQoreNode** getMemberValuePtrForInitialization(const char* member);
614 };
615
617 template <class T>
618 class PrivateDataRefHolder : public ReferenceHolder<T> {
619 public:
620 DLLLOCAL PrivateDataRefHolder(const QoreObject* o, qore_classid_t cid, ExceptionSink* xsink) : ReferenceHolder<T>(reinterpret_cast<T*>(o->getReferencedPrivateData(cid, xsink)), xsink) {
621 }
622 };
623
624 class QorePrivateObjectAccessHelper {
625 private:
626 // not implemented
627 DLLLOCAL QorePrivateObjectAccessHelper(const QorePrivateObjectAccessHelper&);
628 DLLLOCAL QorePrivateObjectAccessHelper& operator=(const QorePrivateObjectAccessHelper&);
629 DLLLOCAL void* operator new(size_t);
630
631 protected:
632 ExceptionSink* xsink;
633 void* ptr;
634
635 public:
636 DLLLOCAL QorePrivateObjectAccessHelper(ExceptionSink* xs) : xsink(xs), ptr(0) {
637 }
638
639 DLLLOCAL operator bool() const {
640 return (bool)ptr;
641 }
642 };
643
644 #endif
QoreObject::getRuntimeMemberHash
DLLLOCAL QoreHashNode * getRuntimeMemberHash(ExceptionSink *xsink) const
retuns member data of the object (or 0 if there's an exception), private members are excluded if call...
QoreObject::evalCopyMethodWithPrivateData
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" (n...
QoreObject::compareHard
DLLEXPORT bool compareHard(const QoreObject *obj, ExceptionSink *xsink) const
tests for equality ("deep compare" including all contained values) with possible type conversion of c...
AutoVLock
AutoVLock is a container for safely managing global variable and object lock handovers, required for functions accessing global variables and object data where locking is necessary.
Definition: AutoVLock.h:72
QoreObject::isSystemObject
DLLEXPORT bool isSystemObject() const
returns true if the object is a system object (created with the system constructor) ...
QoreObject::execMemberNotification
DLLLOCAL void execMemberNotification(const char *member, ExceptionSink *xsink)
executes the member notification on the object the given member
QoreHashNode
This is the hash or associative list container type in Qore, dynamically allocated only...
Definition: QoreHashNode.h:41
QoreObject::setValue
DLLEXPORT void setValue(const char *key, AbstractQoreNode *val, ExceptionSink *xsink)
sets the value of the given member to the given value
QoreObject::getMemberValuePtrForInitialization
DLLLOCAL AbstractQoreNode ** getMemberValuePtrForInitialization(const char *member)
returns a pointer to an object member during initialization (no locking; interal use only) ...
QoreObject::doDelete
DLLEXPORT void doDelete(ExceptionSink *xsink)
runs the destructor on the object (if it hasn't already been deleted)
QoreObject::boolEvalImpl
virtual DLLLOCAL bool boolEvalImpl(ExceptionSink *xsink) const
should never be called, does nothing
AbstractPrivateData
the base class for all data to be used as private data of Qore objects
Definition: AbstractPrivateData.h:36
QoreObject::mergeDataToHash
DLLEXPORT void mergeDataToHash(QoreHashNode *hash, ExceptionSink *xsink)
copies all member data of the current object to the passed QoreHashNode
QoreObject::getClassName
DLLEXPORT const char * getClassName() const
returns the name of the class
QoreObject::compareSoft
DLLEXPORT bool compareSoft(const QoreObject *obj, ExceptionSink *xsink) const
tests for equality ("deep compare" including all contained values) with possible type conversion of c...
QoreObject::externalDelete
DLLEXPORT void externalDelete(qore_classid_t key, ExceptionSink *xsink)
call this function when an object's private data is deleted externally
QoreObject::removeMember
DLLEXPORT void removeMember(const QoreString *key, ExceptionSink *xsink)
removes a member from the object without explicitly calling destructors; the value is only dereferenc...
QoreObject::getReferencedPrivateData
DLLEXPORT AbstractPrivateData * getReferencedPrivateData(qore_classid_t key, ExceptionSink *xsink) const
returns the private data corresponding to the class ID passed with an incremented reference count...
QoreObject::size
DLLEXPORT int size(ExceptionSink *xsink) const
returns the number of members of the object
QoreObject::takeMember
DLLEXPORT AbstractQoreNode * takeMember(const QoreString *key, ExceptionSink *xsink)
removes a member from the object without explicitly calling destructors and returns the value removed...
QoreObject::getAsBoolImpl
virtual DLLEXPORT bool getAsBoolImpl() const
returns false unless perl-boolean-evaluation is enabled, in which case it returns false only when emp...
AbstractQoreNode
The base class for all value and parse types in Qore expression trees.
Definition: AbstractQoreNode.h:47
NT_OBJECT
const qore_type_t NT_OBJECT
type value for QoreObject
Definition: node_types.h:44
QoreObject::~QoreObject
virtual DLLLOCAL ~QoreObject()
destructor
QoreObject::boolEvalMethod
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 ...
QoreObject::getClass
DLLEXPORT const QoreClass * getClass() const
returns a pointer to the QoreClass of this object
QoreObject::bigIntEvalMethod
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 ...
QoreObject::getMemberList
DLLEXPORT QoreListNode * getMemberList(ExceptionSink *xsink) const
returns the list of members, caller owns the list returned
QoreObject::realCopy
virtual DLLEXPORT AbstractQoreNode * realCopy() const
performs a deep copy of the list and returns the new list
QoreObject::evalImpl
virtual DLLLOCAL AbstractQoreNode * evalImpl(ExceptionSink *xsink) const
should never be called, does nothing
QoreObject::evalMethod
DLLEXPORT AbstractQoreNode * 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
QoreObject::evalMember
DLLLOCAL AbstractQoreNode * evalMember(const QoreString *member, ExceptionSink *xsink)
returns the value of the member with an incremented reference count, or executes the memberGate() met...
QoreObject::customDeref
virtual DLLLOCAL void customDeref(ExceptionSink *xsink)
custom dereference handler - with delete
QoreObject::getProgram
DLLEXPORT QoreProgram * getProgram() const
returns the QoreProgram object associated with this object
QoreObject::derefImpl
virtual DLLEXPORT bool derefImpl(ExceptionSink *xsink)
runs the destructor if necessary and dereferences all members
QoreObject::hasMemberNotification
DLLLOCAL bool hasMemberNotification() const
returns true if the class has a memberNotification method
QoreObject::copyData
DLLEXPORT QoreHashNode * copyData(ExceptionSink *xsink) const
retuns all member data of the object (or 0 if there's an exception), caller owns the QoreHashNode ref...
qore_type_t
signed short qore_type_t
used to identify unique Qore data and parse types (descendents of AbstractQoreNode) ...
Definition: common.h:59
QoreObject::is_equal_soft
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 (sof...
QoreString
Qore's string type supported by the QoreEncoding class.
Definition: QoreString.h:42
QoreObject::obliterate
DLLLOCAL void obliterate(ExceptionSink *xsink)
destroys all members and dereferences all private data structures
QoreObject::customRef
virtual DLLLOCAL void customRef() const
custom reference handler
QoreObject::getStaticTypeCode
static DLLLOCAL qore_type_t getStaticTypeCode()
returns the type code (useful in templates)
Definition: QoreObject.h:187
QoreObject::tDeref
DLLEXPORT void tDeref()
decrements the existence reference count, when it reaches 0 the C++ object ("this") will be deleted ...
QoreObject::getTypeName
virtual DLLEXPORT const char * getTypeName() const
returns the type name as a c string
QoreObject::floatEvalMethod
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 ...
QoreListNode
This is the list container type in Qore, dynamically allocated only, reference counted.
Definition: QoreListNode.h:44
QoreObject::is_equal_hard
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 com...
PrivateDataRefHolder
convenience class for holding AbstractPrivateData references
Definition: QoreObject.h:618
QoreObject::evalDeleteBlocker
DLLLOCAL bool evalDeleteBlocker(qore_classid_t classid_for_method, BuiltinDeleteBlocker *meth)
evaluates the delete blocker function for the managed private data
QoreObject::addPrivateDataToString
DLLLOCAL void addPrivateDataToString(QoreString *str, ExceptionSink *xsink) const
concatenates info about private data to a string
QoreClass
defines a Qore-language class
Definition: QoreClass.h:186
QoreObject::getReferencedMemberNoMethod
DLLEXPORT AbstractQoreNode * getReferencedMemberNoMethod(const char *mem, ExceptionSink *xsink) const
returns the value of the given member with the reference count incremented, the caller owns the Abstr...
QoreProgram
supports parsing and executing Qore-language code, reference counted, dynamically-allocated only ...
Definition: QoreProgram.h:95
QoreObject
the implementation of Qore's object data type, reference counted, dynamically-allocated only ...
Definition: QoreObject.h:56
QoreObject::getMemberValueNoMethod
DLLEXPORT AbstractQoreNode * getMemberValueNoMethod(const QoreString *key, AutoVLock *vl, ExceptionSink *xsink) const
returns the pointer to the value of the member
QoreObject::defaultSystemDestructor
DLLLOCAL void defaultSystemDestructor(qore_classid_t classID, ExceptionSink *xsink)
runs the destructor for system objects
qore_classid_t
unsigned qore_classid_t
used for the unique class ID for QoreClass objects
Definition: common.h:68
ExceptionSink
container for holding Qore-language exception information and also for registering a "thread_exit" ca...
Definition: ExceptionSink.h:35
QoreObject::integerEvalImpl
virtual DLLLOCAL int integerEvalImpl(ExceptionSink *xsink) const
should never be called, does nothing
QoreObject::floatEvalImpl
virtual DLLLOCAL double floatEvalImpl(ExceptionSink *xsink) const
should never be called, does nothing
QoreObject::getAsString
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 exis...
QoreObject::getAndClearPrivateData
DLLLOCAL AbstractPrivateData * 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
QoreObject::customRefIntern
DLLLOCAL void customRefIntern() const
custom reference handler - unlocked
QoreObject::getExistingValuePtr
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
QoreObject::evalMethodVariant
DLLEXPORT AbstractQoreNode * evalMethodVariant(const QoreMethod &method, const QoreExternalMethodVariant *variant, const QoreListNode *args, ExceptionSink *xsink)
executes a normal object method variant
QoreObject::bigIntEvalImpl
virtual DLLLOCAL int64 bigIntEvalImpl(ExceptionSink *xsink) const
should never be called, does nothing
QoreObject::deleteMemberValue
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 (destructo...
QoreObject::evalBuiltinMethodWithPrivateData
DLLLOCAL AbstractQoreNode * evalBuiltinMethodWithPrivateData(const QoreMethod &method, const BuiltinNormalMethodVariantBase *meth, const QoreListNode *args, ExceptionSink *xsink)
called to evaluate a builtin method when private data is available
QoreObject::deleteBlockerRef
DLLEXPORT void deleteBlockerRef() const
increment the reference count of the object, to be called only from within a delete blocker ...
QoreObject::getStaticTypeName
static DLLLOCAL const char * getStaticTypeName()
returns the type name (useful in templates)
Definition: QoreObject.h:182
QoreMethod
a method in a QoreClass
Definition: QoreClass.h:83
QoreObject::tRef
DLLEXPORT void tRef() const
increments the existence reference count
QoreObject::setPrivate
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...
QoreObject::isValid
DLLEXPORT bool isValid() const
returns true if the object is valid
ReferenceHolder
a templated class to manage a reference count of an object that can throw a Qore-language exception w...
Definition: ReferenceHolder.h:43
QoreObject::getMemberAsBigInt
DLLEXPORT int64 getMemberAsBigInt(const char *mem, bool &found, ExceptionSink *xsink) const
returns the value of the given member as an int64
QoreObject::validInstanceOf
DLLEXPORT bool validInstanceOf(qore_classid_t cid) const
returns true if this object is a valid instance of the classid passed
QoreObject::intEvalMethod
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 ...