Qore Programming Language  0.8.9
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
QoreClass.h
1 /* -*- mode: c++; indent-tabs-mode: nil -*- */
2 /*
3  QoreClass.h
4 
5  Qore Programming Language
6 
7  Copyright 2003 - 2013 David Nichols
8 
9  This library is free software; you can redistribute it and/or
10  modify it under the terms of the GNU Lesser General Public
11  License as published by the Free Software Foundation; either
12  version 2.1 of the License, or (at your option) any later version.
13 
14  This library is distributed in the hope that it will be useful,
15  but WITHOUT ANY WARRANTY; without even the implied warranty of
16  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17  Lesser General Public License for more details.
18 
19  You should have received a copy of the GNU Lesser General Public
20  License along with this library; if not, write to the Free Software
21  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
22 */
23 
24 #ifndef _QORE_QORECLASS_H
25 
26 #define _QORE_QORECLASS_H
27 
28 #include <stdarg.h>
29 #include <string>
30 
31 // all qore class IDs
32 DLLEXPORT extern qore_classid_t CID_AUTOGATE;
33 DLLEXPORT extern qore_classid_t CID_AUTOLOCK;
34 DLLEXPORT extern qore_classid_t CID_AUTOREADLOCK;
35 DLLEXPORT extern qore_classid_t CID_AUTOWRITELOCK;
36 DLLEXPORT extern qore_classid_t CID_CONDITION;
37 DLLEXPORT extern qore_classid_t CID_COUNTER;
38 DLLEXPORT extern qore_classid_t CID_DATASOURCE;
39 DLLEXPORT extern qore_classid_t CID_DATASOURCEPOOL;
40 DLLEXPORT extern qore_classid_t CID_FILE;
41 DLLEXPORT extern qore_classid_t CID_FTPCLIENT;
42 DLLEXPORT extern qore_classid_t CID_GATE;
43 DLLEXPORT extern qore_classid_t CID_GETOPT;
44 DLLEXPORT extern qore_classid_t CID_HTTPCLIENT;
45 DLLEXPORT extern qore_classid_t CID_MUTEX;
46 DLLEXPORT extern qore_classid_t CID_PROGRAM;
47 DLLEXPORT extern qore_classid_t CID_QUEUE;
48 DLLEXPORT extern qore_classid_t CID_RWLOCK;
49 DLLEXPORT extern qore_classid_t CID_SSLCERTIFICATE;
50 DLLEXPORT extern qore_classid_t CID_SSLPRIVATEKEY;
51 DLLEXPORT extern qore_classid_t CID_SEQUENCE;
52 DLLEXPORT extern qore_classid_t CID_SOCKET;
53 DLLEXPORT extern qore_classid_t CID_TERMIOS;
54 
55 DLLEXPORT extern QoreClass *QC_QUEUE;
56 DLLEXPORT extern QoreClass *QC_HTTPCLIENT;
57 
58 class BCList;
59 class BCSMList;
60 class BCAList;
61 class QoreObject;
62 class QoreClass;
63 class BCEAList;
64 class ParamList;
65 class QoreMemberInfo;
66 class BuiltinMethod;
67 class AbstractQoreFunctionVariant;
68 class AbstractFunctionSignature;
69 class UserMethod;
70 class BCANode;
71 class qore_method_private;
72 class MethodFunctionBase;
73 class QoreExternalMethodVariant;
74 class QoreExternalStaticMethodVariant;
75 class NamedScope;
76 class ConstantList;
77 class MethodVariantBase;
78 
80 
83 class QoreMethod {
84  friend class StaticMethodCallNode;
85  friend class QoreObject;
86  friend class qore_class_private;
87  friend class qore_method_private;
88  friend class BCList;
89 
90 private:
92  class qore_method_private *priv;
93 
95  DLLLOCAL QoreMethod(const QoreMethod&);
96 
98  DLLLOCAL QoreMethod& operator=(const QoreMethod&);
99 
100 public:
102 
105  DLLEXPORT bool isSynchronized() const;
106 
108 
111  DLLEXPORT bool newCallingConvention() const;
112 
114 
116  DLLEXPORT bool isUser() const;
117 
119 
121  DLLEXPORT bool isBuiltin() const;
122 
124 
126  DLLEXPORT bool isPrivate() const;
127 
129 
132  DLLEXPORT bool isStatic() const;
133 
135 
138  DLLEXPORT const char* getName() const;
139 
141 
144  DLLEXPORT const std::string& getNameStr() const;
145 
147  DLLEXPORT const QoreClass *getClass() const;
148 
150  DLLEXPORT const char *getClassName() const;
151 
153  DLLEXPORT bool existsVariant(const type_vec_t &paramTypeInfo) const;
154 
155  /* returns the return type information for the method if it is available and if
156  there is only one return type (there can be more return types if the method is
157  overloaded)
158  */
159  DLLEXPORT const QoreTypeInfo *getUniqueReturnTypeInfo() const;
160 
161  DLLLOCAL QoreMethod(const QoreClass *p_class, MethodFunctionBase *n_func, bool n_static = false);
162 
163  DLLLOCAL ~QoreMethod();
164  DLLLOCAL bool inMethod(const QoreObject *self) const;
165  DLLLOCAL QoreMethod *copy(const QoreClass *p_class) const;
166  DLLLOCAL void assign_class(const QoreClass *p_class);
167  DLLLOCAL MethodFunctionBase *getFunction() const;
168 
170 
172  DLLLOCAL bool parseIsPrivate() const;
173 
174  DLLLOCAL AbstractQoreNode *evalNormalVariant(QoreObject *self, const QoreExternalMethodVariant *ev, const QoreListNode *args, ExceptionSink *xsink) const;
175  DLLLOCAL int64 bigIntEvalNormalVariant(QoreObject *self, const QoreExternalMethodVariant *ev, const QoreListNode *args, ExceptionSink *xsink) const;
176  DLLLOCAL int intEvalNormalVariant(QoreObject *self, const QoreExternalMethodVariant *ev, const QoreListNode *args, ExceptionSink *xsink) const;
177  DLLLOCAL bool boolEvalNormalVariant(QoreObject *self, const QoreExternalMethodVariant *ev, const QoreListNode *args, ExceptionSink *xsink) const;
178  DLLLOCAL double floatEvalNormalVariant(QoreObject *self, const QoreExternalMethodVariant *ev, const QoreListNode *args, ExceptionSink *xsink) const;
179 };
180 
182 
186 class QoreClass {
187  friend class BCList;
188  friend class BCNode;
189  friend class BCSMList;
190  friend class qore_object_private;
191  friend class qore_class_private;
192  friend class QoreObject;
193  friend class BCANode;
194  friend class qore_method_private;
195  friend class QoreMethodIterator;
196  friend class QoreStaticMethodIterator;
197  friend class ConstructorMethodFunction;
198 
199 private:
201  DLLLOCAL QoreClass& operator=(const QoreClass&);
202 
204  class qore_class_private *priv;
205 
206  // private constructor only called when the class is copied
207  DLLLOCAL QoreClass(qore_classid_t id, const char *nme);
208 
209  DLLLOCAL void insertMethod(QoreMethod *o);
210  DLLLOCAL void insertStaticMethod(QoreMethod *o);
211  DLLLOCAL AbstractQoreNode *evalMethodGate(QoreObject *self, const char *nme, const QoreListNode *args, ExceptionSink *xsink) const;
212  DLLLOCAL const QoreMethod *parseResolveSelfMethodIntern(const char *nme);
213 
215 
224  DLLLOCAL AbstractQoreNode *evalMethod(QoreObject *self, const char *method_name, const QoreListNode *args, ExceptionSink *xsink) const;
225  DLLLOCAL int64 bigIntEvalMethod(QoreObject *self, const char *method_name, const QoreListNode *args, ExceptionSink *xsink) const;
226  DLLLOCAL int intEvalMethod(QoreObject *self, const char *method_name, const QoreListNode *args, ExceptionSink *xsink) const;
227  DLLLOCAL bool boolEvalMethod(QoreObject *self, const char *method_name, const QoreListNode *args, ExceptionSink *xsink) const;
228  DLLLOCAL double floatEvalMethod(QoreObject *self, const char *method_name, const QoreListNode *args, ExceptionSink *xsink) const;
229 
230  // This function must only be called from QoreObject
231  DLLLOCAL AbstractQoreNode *evalMemberGate(QoreObject *self, const QoreString *nme, ExceptionSink *xsink) const;
232  // This function must only be called from QoreObject
233  DLLLOCAL void execMemberNotification(QoreObject *self, const char *mem, ExceptionSink *xsink) const;
234  // This function must only be called from QoreObject and BCList
235  DLLLOCAL bool execDeleteBlocker(QoreObject *self, ExceptionSink *xsink) const;
236  // This function must only be called from QoreObject
237  DLLLOCAL void execDestructor(QoreObject *self, ExceptionSink *xsink) const;
238  // This function is only called from BCList
239  DLLEXPORT const QoreClass *getClassIntern(qore_classid_t cid, bool &priv) const;
240 
241 public:
243 
248  DLLEXPORT QoreClass(const char *n_name, int n_domain = QDOM_DEFAULT);
249 
251 
258  DLLEXPORT QoreClass(const char *n_name, int64 n_domain, const QoreTypeInfo *n_typeInfo);
259 
261 
263  DLLEXPORT QoreClass(const QoreClass &old);
264 
266  DLLEXPORT ~QoreClass();
267 
269 
290  DLLEXPORT void addMethod(const char *n_name, q_method_t meth, bool priv = false);
291 
293  DLLEXPORT void addMethodExtended(const char *n_name, q_method_t meth, bool priv = false, int64 n_flags = QC_NO_FLAGS, int64 n_domain = QDOM_DEFAULT, const QoreTypeInfo *returnTypeInfo = 0, unsigned num_params = 0, ...);
294 
296  DLLEXPORT void addMethodExtended(const char *n_name, q_method_int64_t meth, bool priv = false, int64 n_flags = QC_NO_FLAGS, int64 n_domain = QDOM_DEFAULT, const QoreTypeInfo *returnTypeInfo = 0, unsigned num_params = 0, ...);
297 
299  DLLEXPORT void addMethodExtendedList(const char *n_name, q_method_t meth, bool priv = false, int64 n_flags = QC_NO_FLAGS, int64 n_domain = QDOM_DEFAULT, const QoreTypeInfo *returnTypeInfo = 0, const type_vec_t &n_typeList = type_vec_t(), const arg_vec_t &defaultArgList = arg_vec_t());
300 
302  DLLEXPORT void addMethod2(const char *n_name, q_method2_t meth, bool priv = false);
303 
305  DLLEXPORT void addMethodExtended2(const char *n_name, q_method2_t meth, bool priv = false, int64 n_flags = QC_NO_FLAGS, int64 n_domain = QDOM_DEFAULT, const QoreTypeInfo *returnTypeInfo = 0, unsigned num_params = 0, ...);
306 
308  DLLEXPORT void addMethodExtendedList2(const char *n_name, q_method2_t meth, bool priv = false, int64 n_flags = QC_NO_FLAGS, int64 n_domain = QDOM_DEFAULT, const QoreTypeInfo *returnTypeInfo = 0, const type_vec_t &n_typeList = type_vec_t(), const arg_vec_t &defaultArgList = arg_vec_t());
309 
311 
321  DLLEXPORT void addMethodExtendedList3(const void *ptr, const char *n_name, q_method3_t meth, bool priv = false, int64 n_flags = QC_NO_FLAGS, int64 n_domain = QDOM_DEFAULT, const QoreTypeInfo *returnTypeInfo = 0, const type_vec_t &n_typeList = type_vec_t(), const arg_vec_t &defaultArgList = arg_vec_t());
322 
324  DLLEXPORT void addMethodExtended3(const char *n_name, q_method_t meth, bool priv = false, int64 n_flags = QC_NO_FLAGS, int64 n_domain = QDOM_DEFAULT, const QoreTypeInfo *returnTypeInfo = 0, unsigned num_params = 0, ...);
325 
327  DLLEXPORT void addMethodExtended3(const char *n_name, q_method_int64_t meth, bool priv = false, int64 n_flags = QC_NO_FLAGS, int64 n_domain = QDOM_DEFAULT, const QoreTypeInfo *returnTypeInfo = 0, unsigned num_params = 0, ...);
328 
330  DLLEXPORT void addMethodExtended3(const char *n_name, q_method_bool_t meth, bool priv = false, int64 n_flags = QC_NO_FLAGS, int64 n_domain = QDOM_DEFAULT, const QoreTypeInfo *returnTypeInfo = 0, unsigned num_params = 0, ...);
331 
333  DLLEXPORT void addMethodExtended3(const char *n_name, q_method_double_t meth, bool priv = false, int64 n_flags = QC_NO_FLAGS, int64 n_domain = QDOM_DEFAULT, const QoreTypeInfo *returnTypeInfo = 0, unsigned num_params = 0, ...);
334 
336  DLLEXPORT void addAbstractMethodVariantExtended3(const char *n_name, bool priv = false, int64 n_flags = QC_NO_FLAGS, const QoreTypeInfo *returnTypeInfo = 0, unsigned num_params = 0, ...);
337 
339 
344  DLLEXPORT void addStaticMethod(const char *n_name, q_func_t meth, bool priv = false);
345 
347  DLLEXPORT void addStaticMethodExtended(const char *n_name, q_func_t meth, bool priv = false, int64 n_flags = QC_NO_FLAGS, int64 n_domain = QDOM_DEFAULT, const QoreTypeInfo *returnTypeInfo = 0, unsigned num_params = 0, ...);
348 
350  DLLEXPORT void addStaticMethodExtendedList(const char *n_name, q_func_t meth, bool priv = false, int64 n_flags = QC_NO_FLAGS, int64 n_domain = QDOM_DEFAULT, const QoreTypeInfo *returnTypeInfo = 0, const type_vec_t &n_typeList = type_vec_t(), const arg_vec_t &defaultArgList = arg_vec_t());
351 
353  DLLEXPORT void addStaticMethod2(const char *n_name, q_static_method2_t meth, bool priv = false);
354 
356  DLLEXPORT void addStaticMethodExtended2(const char *n_name, q_static_method2_t meth, bool priv = false, int64 n_flags = QC_NO_FLAGS, int64 n_domain = QDOM_DEFAULT, const QoreTypeInfo *returnTypeInfo = 0, unsigned num_params = 0, ...);
357 
359  DLLEXPORT void addStaticMethodExtendedList2(const char *n_name, q_static_method2_t meth, bool priv = false, int64 n_flags = QC_NO_FLAGS, int64 n_domain = QDOM_DEFAULT, const QoreTypeInfo *returnTypeInfo = 0, const type_vec_t &n_typeList = type_vec_t(), const arg_vec_t &defaultArgList = arg_vec_t());
360 
362 
372  DLLEXPORT void addStaticMethodExtendedList3(const void *ptr, const char *n_name, q_static_method3_t meth, bool priv = false, int64 n_flags = QC_NO_FLAGS, int64 n_domain = QDOM_DEFAULT, const QoreTypeInfo *returnTypeInfo = 0, const type_vec_t &n_typeList = type_vec_t(), const arg_vec_t &defaultArgList = arg_vec_t());
373 
375  DLLEXPORT void addStaticMethodExtended3(const char *n_name, q_func_t meth, bool priv = false, int64 n_flags = QC_NO_FLAGS, int64 n_domain = QDOM_DEFAULT, const QoreTypeInfo *returnTypeInfo = 0, unsigned num_params = 0, ...);
376 
378  DLLEXPORT void addStaticMethodExtended3(const char *n_name, q_func_int64_t meth, bool priv = false, int64 n_flags = QC_NO_FLAGS, int64 n_domain = QDOM_DEFAULT, const QoreTypeInfo *returnTypeInfo = 0, unsigned num_params = 0, ...);
379 
381  DLLEXPORT void addStaticMethodExtended3(const char *n_name, q_func_bool_t meth, bool priv = false, int64 n_flags = QC_NO_FLAGS, int64 n_domain = QDOM_DEFAULT, const QoreTypeInfo *returnTypeInfo = 0, unsigned num_params = 0, ...);
382 
384  DLLEXPORT void addStaticMethodExtended3(const char *n_name, q_func_double_t meth, bool priv = false, int64 n_flags = QC_NO_FLAGS, int64 n_domain = QDOM_DEFAULT, const QoreTypeInfo *returnTypeInfo = 0, unsigned num_params = 0, ...);
385 
387 
398  DLLEXPORT void setDestructor(q_destructor_t m);
399 
401 
412  DLLEXPORT void setDestructor2(q_destructor2_t m);
413 
415 
427  DLLEXPORT void setDestructor3(const void *ptr, q_destructor3_t m);
428 
430 
433  DLLEXPORT void setConstructor(q_constructor_t m);
434 
436  DLLEXPORT void setConstructorExtended(q_constructor_t meth, bool priv = false, int64 n_flags = QC_NO_FLAGS, int64 n_domain = QDOM_DEFAULT, unsigned num_params = 0, ...);
437 
439  DLLEXPORT void setConstructorExtendedList(q_constructor_t meth, bool priv = false, int64 n_flags = QC_NO_FLAGS, int64 n_domain = QDOM_DEFAULT, const type_vec_t &n_typeList = type_vec_t(), const arg_vec_t &defaultArgList = arg_vec_t());
440 
442 
445  DLLEXPORT void setConstructor2(q_constructor2_t m);
446 
448  DLLEXPORT void setConstructorExtended2(q_constructor2_t meth, bool priv = false, int64 n_flags = QC_NO_FLAGS, int64 n_domain = QDOM_DEFAULT, unsigned num_params = 0, ...);
449 
451  DLLEXPORT void setConstructorExtendedList2(q_constructor2_t meth, bool priv = false, int64 n_flags = QC_NO_FLAGS, int64 n_domain = QDOM_DEFAULT, const type_vec_t &n_typeList = type_vec_t(), const arg_vec_t &defaultArgList = arg_vec_t());
452 
454 
462  DLLEXPORT void setConstructorExtendedList3(const void *ptr, q_constructor3_t meth, bool priv = false, int64 n_flags = QC_NO_FLAGS, int64 n_domain = QDOM_DEFAULT, const type_vec_t &n_typeList = type_vec_t(), const arg_vec_t &defaultArgList = arg_vec_t());
463 
465  DLLEXPORT void setConstructorExtended3(q_constructor_t meth, bool priv = false, int64 n_flags = QC_NO_FLAGS, int64 n_domain = QDOM_DEFAULT, unsigned num_params = 0, ...);
466 
468 
472 
474 
478 
480 
491  DLLEXPORT void setCopy(q_copy_t m);
492 
494 
505  DLLEXPORT void setCopy2(q_copy2_t m);
506 
508 
520  DLLEXPORT void setCopy3(const void *ptr, q_copy3_t m);
521 
523 
531  DLLEXPORT void setDeleteBlocker(q_delete_blocker_t m);
532 
534 
538  DLLEXPORT bool isPrivateMember(const char *str) const;
539 
541 
546  DLLEXPORT bool isPublicOrPrivateMember(const char *str, bool &priv) const;
547 
549 
554  DLLEXPORT QoreObject *execConstructor(const QoreListNode *args, ExceptionSink *xsink) const;
555 
557 
561  DLLEXPORT QoreObject *execSystemConstructor(int code = 0, ...) const;
562 
564 
568  DLLEXPORT QoreObject *execCopy(QoreObject *old, ExceptionSink *xsink) const;
569 
571 
576  DLLEXPORT const QoreMethod *findLocalMethod(const char *name) const;
577 
579 
584  DLLEXPORT const QoreMethod *findLocalStaticMethod(const char *name) const;
585 
587 
590  DLLEXPORT QoreListNode *getMethodList() const;
591 
593 
596  DLLEXPORT QoreListNode *getStaticMethodList() const;
597 
599 
607  DLLEXPORT QoreClass *getClass(qore_classid_t cid) const;
608 
610 
617  DLLEXPORT const QoreClass *getClass(qore_classid_t cid, bool &priv) const;
618 
620 
627  DLLEXPORT const QoreClass *getClass(const QoreClass& qc, bool &priv) const;
628 
630  DLLEXPORT int numMethods() const;
631 
633  DLLEXPORT int numStaticMethods() const;
634 
636  DLLEXPORT int numUserMethods() const;
637 
639  DLLEXPORT int numStaticUserMethods() const;
640 
642  DLLEXPORT bool hasCopy() const;
643 
645  DLLEXPORT qore_classid_t getID() const;
646 
648  DLLEXPORT bool isSystem() const;
649 
651  DLLEXPORT bool hasMemberGate() const;
652 
654  DLLEXPORT bool hasMethodGate() const;
655 
657  DLLEXPORT bool hasMemberNotification() const;
658 
660 
662  DLLEXPORT int getDomain() const;
663 
665 
667  DLLEXPORT int64 getDomain64() const;
668 
670  DLLEXPORT const char *getName() const;
671 
673  // used at run-time
674  DLLEXPORT const QoreMethod *findMethod(const char *nme) const;
675 
677  // used at run-time
678  DLLEXPORT const QoreMethod *findStaticMethod(const char *nme) const;
679 
681  DLLEXPORT const QoreMethod *findMethod(const char *nme, bool &priv) const;
682 
684  DLLEXPORT const QoreMethod *findStaticMethod(const char *nme, bool &priv) const;
685 
687 
691  DLLEXPORT void addBuiltinBaseClass(QoreClass *qc, QoreListNode *xargs = 0);
692 
694 
700  DLLEXPORT void addDefaultBuiltinBaseClass(QoreClass *qc, QoreListNode *xargs = 0);
701 
703 
709  DLLEXPORT void addBuiltinVirtualBaseClass(QoreClass *qc);
710 
712 
714  DLLEXPORT void setSynchronousClass();
715 
717 
720  DLLEXPORT const QoreMethod *getConstructor() const;
721 
723 
726  DLLEXPORT const QoreMethod *getSystemConstructor() const;
727 
729 
732  DLLEXPORT const QoreMethod *getDestructor() const;
733 
735 
738  DLLEXPORT const QoreMethod *getCopyMethod() const;
739 
741 
744  DLLEXPORT const QoreMethod *getMemberGateMethod() const;
745 
747 
750  DLLEXPORT const QoreMethod *getMethodGate() const;
751 
753 
756  DLLEXPORT const QoreMethod *getMemberNotificationMethod() const;
757 
759  DLLEXPORT const QoreTypeInfo *getTypeInfo() const;
760 
762  DLLEXPORT const QoreTypeInfo *getOrNothingTypeInfo() const;
763 
765  DLLEXPORT void addPublicMember(const char *mem, const QoreTypeInfo *n_typeInfo, AbstractQoreNode *initial_value = 0);
766 
768  DLLEXPORT void addPrivateMember(const char *mem, const QoreTypeInfo *n_typeInfo, AbstractQoreNode *initial_value = 0);
769 
771  DLLEXPORT void setUserData(const void *ptr);
772 
774  DLLEXPORT const void *getUserData() const;
775 
777  DLLEXPORT void recheckBuiltinMethodHierarchy();
778 
780 
782  DLLEXPORT const QoreExternalMethodVariant *findUserMethodVariant(const char *name, const QoreMethod *&method, const type_vec_t &argTypeList) const;
783 
785 
790  DLLEXPORT void addBuiltinConstant(const char *name, AbstractQoreNode *value, bool priv = false, const QoreTypeInfo *typeInfo = 0);
791 
793 
798  DLLEXPORT void addBuiltinStaticVar(const char *name, AbstractQoreNode *value, bool priv = false, const QoreTypeInfo *typeInfo = 0);
799 
801 
803  DLLEXPORT bool hasAbstract() const;
804 
806  DLLLOCAL QoreClass();
807 
808  // used when parsing, finds committed non-static methods within the entire class hierarchy (local class plus base classes)
809  DLLLOCAL const QoreMethod *parseFindCommittedMethod(const char *nme);
810 
811  // adds public constants to pending list
812  DLLLOCAL void parseAssimilatePublicConstants(ConstantList &cmap);
813  // adds private constants to pending list
814  DLLLOCAL void parseAssimilatePrivateConstants(ConstantList &cmap);
815  // adds a single public constant to pending list
816  DLLLOCAL void parseAddPublicConstant(const std::string &name, AbstractQoreNode *val);
817 
818  // returns 0 for success, -1 for error
819  DLLLOCAL int parseAddBaseClassArgumentList(BCAList *bcal);
820  // only called when parsing, sets the name of the class
821  DLLLOCAL void setName(const char *n);
822 
823  DLLLOCAL qore_classid_t getIDForMethod() const;
824  // get base class list to add virtual class indexes for private data
825  DLLLOCAL BCSMList *getBCSMList() const;
826  // returns true if the class has a delete_blocker function (somewhere in the hierarchy)
827  DLLLOCAL bool has_delete_blocker() const;
828  // looks in current and pending method lists, non-static methods only, no initialization
829  DLLLOCAL const QoreMethod *parseFindLocalMethod(const char *name) const;
830  // looks in current and pending method lists for the entire hierarchy (local class plus base classes), non-static methods only
831  DLLLOCAL const QoreMethod *parseFindMethodTree(const char *name);
832  // looks in current and pending method lists for the entire hierarchy (local class plus base classes), static methods only
833  DLLLOCAL const QoreMethod *parseFindStaticMethodTree(const char *name);
834  // returns true if the class passed is equal to or in the class' hierarchy - to be called only at parse time or under the program's parse lock
835  DLLLOCAL bool parseCheckHierarchy(const QoreClass *cls) const;
836  DLLLOCAL bool parseHasPublicMembersInHierarchy() const;
837  DLLLOCAL bool runtimeGetMemberInfo(const char *mem, const QoreTypeInfo *&memberTypeInfo, bool &priv) const;
838  DLLLOCAL bool runtimeHasPublicMembersInHierarchy() const;
839  DLLLOCAL int initMembers(QoreObject *o, ExceptionSink *xsink) const;
840  // returns true if the class has one or more parent classes
841  DLLLOCAL bool hasParentClass() const;
842  DLLLOCAL QoreObject *execConstructor(const AbstractQoreFunctionVariant *variant, const QoreListNode *args, ExceptionSink *xsink) const;
843  DLLLOCAL bool hasPrivateCopyMethod() const;
844  // returns the status including the pending variant (if any)
845  DLLLOCAL bool parseHasPrivateCopyMethod() const;
846  DLLLOCAL const QoreMethod *parseGetConstructor() const;
847  // returns true if the class implements a "methodGate" method, also in pending uncommitted methods
848  DLLLOCAL bool parseHasMethodGate() const;
849  // called when there is an empty public member declaration or a "no_public" declaration
850  DLLLOCAL void parseSetEmptyPublicMemberDeclaration();
851  // unsets the public member flag for builtin classes
852  DLLLOCAL void unsetPublicMemberFlag();
853 };
854 
857 private:
858  void *priv;
859 
860 public:
861  DLLEXPORT QoreMethodIterator(const QoreClass* qc);
862  DLLEXPORT ~QoreMethodIterator();
863  DLLEXPORT bool next();
864  DLLEXPORT const QoreMethod* getMethod() const;
865 };
866 
869 private:
870  void *priv;
871 
872 public:
873  DLLEXPORT QoreStaticMethodIterator(const QoreClass *qc);
874  DLLEXPORT ~QoreStaticMethodIterator();
875  DLLEXPORT bool next();
876  DLLEXPORT const QoreMethod *getMethod() const;
877 };
878 
879 #endif // _QORE_QORECLASS_H
DLLEXPORT const std::string & getNameStr() const
returns the method&#39;s name
DLLEXPORT void setUserData(const void *ptr)
sets a pointer to user-specific data in the class
DLLEXPORT const QoreTypeInfo * getOrNothingTypeInfo() const
returns the &quot;or nothing&quot; type information structure for this class
DLLEXPORT const QoreMethod * findLocalMethod(const char *name) const
looks for a non-static method in the current class without searching base classes ...
DLLEXPORT void addMethodExtended(const char *n_name, q_method_t meth, bool priv=false, int64 n_flags=QC_NO_FLAGS, int64 n_domain=QDOM_DEFAULT, const QoreTypeInfo *returnTypeInfo=0, unsigned num_params=0,...)
adds a builtin method with extended information; additional functional domain info, return and parameter type info
void(* q_copy3_t)(const QoreClass &thisclass, const void *ptr, QoreObject *self, QoreObject *old, AbstractPrivateData *private_data, ExceptionSink *xsink)
the type used for builtin QoreClass copy signatures with the new generic calling convention ...
Definition: common.h:411
DLLEXPORT void setCopy3(const void *ptr, q_copy3_t m)
sets the builtin copy method for the class using the new generic calling convention ...
DLLEXPORT void setDestructor(q_destructor_t m)
sets the builtin destructor method for the class
DLLEXPORT const QoreMethod * getMemberNotificationMethod() const
returns a const pointer to the QoreMethod object of the memberNotification method, if any is set
DLLEXPORT void addBuiltinVirtualBaseClass(QoreClass *qc)
sets &quot;virtual&quot; base class for a class, meaning that the base class data is appropriate for use in the...
DLLEXPORT void addMethodExtended2(const char *n_name, q_method2_t meth, bool priv=false, int64 n_flags=QC_NO_FLAGS, int64 n_domain=QDOM_DEFAULT, const QoreTypeInfo *returnTypeInfo=0, unsigned num_params=0,...)
adds a builtin method with the new calling convention and extended information; additional functional...
To be used to iterate through a class&#39; normal (non-static) methods.
Definition: QoreClass.h:856
DLLEXPORT const char * getClassName() const
returns the class name for the method
DLLEXPORT void addStaticMethodExtendedList(const char *n_name, q_func_t meth, bool priv=false, int64 n_flags=QC_NO_FLAGS, int64 n_domain=QDOM_DEFAULT, const QoreTypeInfo *returnTypeInfo=0, const type_vec_t &n_typeList=type_vec_t(), const arg_vec_t &defaultArgList=arg_vec_t())
adds a builtin static method with extended information; additional functional domain info...
DLLEXPORT void addMethodExtendedList2(const char *n_name, q_method2_t meth, bool priv=false, int64 n_flags=QC_NO_FLAGS, int64 n_domain=QDOM_DEFAULT, const QoreTypeInfo *returnTypeInfo=0, const type_vec_t &n_typeList=type_vec_t(), const arg_vec_t &defaultArgList=arg_vec_t())
adds a builtin method with the new calling convention and extended information; additional functional...
DLLEXPORT void addBuiltinBaseClass(QoreClass *qc, QoreListNode *xargs=0)
make a builtin class a child of another builtin class
DLLEXPORT qore_classid_t getID() const
returns the class ID of this class
bool(* q_delete_blocker_t)(QoreObject *self, AbstractPrivateData *private_data)
the typed used for QoreClass deleteBlocker signatures
Definition: common.h:419
DLLEXPORT QoreObject * execSystemConstructor(int code=0,...) const
creates a new &quot;system&quot; object for use as the value of a constant, executes the system constructor on ...
DLLEXPORT void setCopy(q_copy_t m)
sets the builtin copy method for the class
DLLEXPORT QoreListNode * getMethodList() const
returns a list strings of all non-static methods in the class, the caller owns the reference count re...
AbstractQoreNode *(* q_static_method3_t)(const QoreMethod &method, const type_vec_t &typeList, const void *ptr, const QoreListNode *args, ExceptionSink *xsink)
the type used for builtin static method signatures for static methods using the even newer generic ca...
Definition: common.h:309
DLLEXPORT bool isPublicOrPrivateMember(const char *str, bool &priv) const
returns true if the member is private or public
DLLEXPORT void setDeleteBlocker(q_delete_blocker_t m)
sets the deleteBlocker method for the class
DLLEXPORT void addStaticMethod2(const char *n_name, q_static_method2_t meth, bool priv=false)
adds a builtin static method with the new generic calling convention
DLLEXPORT void setConstructor2(q_constructor2_t m)
sets the builtin constructor method for the class using the new calling convention (or adds an overlo...
DLLEXPORT int numStaticMethods() const
returns the number of static methods in this class (user and builtin)
AbstractQoreNode *(* q_method3_t)(const QoreMethod &method, const type_vec_t &typeList, const void *ptr, QoreObject *self, AbstractPrivateData *private_data, const QoreListNode *args, ExceptionSink *xsink)
the type used for builtin QoreClass method signatures when called with the even newer generic calling...
Definition: common.h:291
DLLEXPORT int numMethods() const
returns the number of non-static methods in this class (user and builtin)
DLLEXPORT bool hasMemberGate() const
returns true if the class implements a &quot;memberGate&quot; method
The base class for all value and parse types in Qore expression trees.
Definition: AbstractQoreNode.h:47
DLLEXPORT const void * getUserData() const
retrieves the user-specific data pointer
int64(* q_func_int64_t)(const QoreListNode *args, ExceptionSink *xsink)
the type used for builtin function signatures returning an integer value
Definition: common.h:218
DLLEXPORT int getDomain() const
returns the functional domain of the class
DLLEXPORT const QoreMethod * getDestructor() const
returns a const pointer to the QoreMethod object of the constructor method, if any is set ...
DLLEXPORT bool isSystem() const
returns true if the class is a builtin class
DLLEXPORT const char * getName() const
returns the class name
std::vector< AbstractQoreNode * > arg_vec_t
vector of value information for default argument lists
Definition: common.h:203
DLLEXPORT bool hasAbstract() const
returns true if the class has at least one abstract method variant
AbstractQoreNode *(* q_method2_t)(const QoreMethod &method, QoreObject *self, AbstractPrivateData *private_data, const QoreListNode *args, ExceptionSink *xsink)
the type used for builtin QoreClass method signatures when called with the new generic calling conven...
Definition: common.h:279
DLLEXPORT void setConstructorExtendedList3(const void *ptr, q_constructor3_t meth, bool priv=false, int64 n_flags=QC_NO_FLAGS, int64 n_domain=QDOM_DEFAULT, const type_vec_t &n_typeList=type_vec_t(), const arg_vec_t &defaultArgList=arg_vec_t())
sets the constructor method using the new calling convention with extended information; can set a pri...
DLLEXPORT void addBuiltinStaticVar(const char *name, AbstractQoreNode *value, bool priv=false, const QoreTypeInfo *typeInfo=0)
adds a static variable to the class
DLLEXPORT QoreListNode * getStaticMethodList() const
returns a list strings of all static methods in the class, the caller owns the reference count return...
DLLEXPORT const QoreMethod * getCopyMethod() const
returns a const pointer to the QoreMethod object of the destructor method, if any is set ...
DLLEXPORT bool isUser() const
returns true if all variants of the method are user variants
void(* q_system_constructor2_t)(const QoreClass &thisclass, QoreObject *self, int code, va_list args)
the type used for builtin QoreClass system constructor method signatures using the new generic callin...
Definition: common.h:354
DLLEXPORT void addMethodExtendedList3(const void *ptr, const char *n_name, q_method3_t meth, bool priv=false, int64 n_flags=QC_NO_FLAGS, int64 n_domain=QDOM_DEFAULT, const QoreTypeInfo *returnTypeInfo=0, const type_vec_t &n_typeList=type_vec_t(), const arg_vec_t &defaultArgList=arg_vec_t())
adds a builtin method with the even newer calling convention and extended information; additional fun...
DLLEXPORT const QoreMethod * getMethodGate() const
returns a const pointer to the QoreMethod object of the methodGate method, if any is set ...
int64(* q_method_int64_t)(QoreObject *self, AbstractPrivateData *private_data, const QoreListNode *args, ExceptionSink *xsink)
the type used for builtin QoreClass method signatures, returns int64
Definition: common.h:242
DLLEXPORT void setConstructorExtended3(q_constructor_t meth, bool priv=false, int64 n_flags=QC_NO_FLAGS, int64 n_domain=QDOM_DEFAULT, unsigned num_params=0,...)
sets the constructor method with extended information; can set a private constructor, set additional functional domain info, and parameter type info (or adds an overloaded variant)
double(* q_method_double_t)(QoreObject *self, AbstractPrivateData *private_data, const QoreListNode *args, ExceptionSink *xsink)
the type used for builtin QoreClass method signatures when called with the even newer generic calling...
Definition: common.h:269
To be used to iterate through a class&#39; static methods.
Definition: QoreClass.h:868
DLLEXPORT QoreObject * execConstructor(const QoreListNode *args, ExceptionSink *xsink) const
creates a new object and executes the constructor on it and returns the new object ...
Qore&#39;s string type supported by the QoreEncoding class.
Definition: QoreString.h:42
AbstractQoreNode *(* q_func_t)(const QoreListNode *args, ExceptionSink *xsink)
the type used for builtin function signatures
Definition: common.h:215
DLLEXPORT bool hasMemberNotification() const
returns true if the class implements a &quot;memberNotification&quot; method
DLLEXPORT void addMethod2(const char *n_name, q_method2_t meth, bool priv=false)
adds a builtin method with the new generic calling convention
DLLEXPORT const QoreMethod * getSystemConstructor() const
returns a const pointer to the QoreMethod object of the constuctor method, if any is set ...
DLLEXPORT QoreClass * getClass(qore_classid_t cid) const
returns a pointer to the QoreClass object representing the class ID passed if it exists in the class ...
DLLEXPORT void addMethodExtendedList(const char *n_name, q_method_t meth, bool priv=false, int64 n_flags=QC_NO_FLAGS, int64 n_domain=QDOM_DEFAULT, const QoreTypeInfo *returnTypeInfo=0, const type_vec_t &n_typeList=type_vec_t(), const arg_vec_t &defaultArgList=arg_vec_t())
adds a builtin method with extended information; additional functional domain info, return and parameter type info from lists
This is the list container type in Qore, dynamically allocated only, reference counted.
Definition: QoreListNode.h:44
DLLEXPORT void addStaticMethodExtended(const char *n_name, q_func_t meth, bool priv=false, int64 n_flags=QC_NO_FLAGS, int64 n_domain=QDOM_DEFAULT, const QoreTypeInfo *returnTypeInfo=0, unsigned num_params=0,...)
adds a builtin static method with extended information; additional functional domain info...
DLLEXPORT void setConstructorExtendedList(q_constructor_t meth, bool priv=false, int64 n_flags=QC_NO_FLAGS, int64 n_domain=QDOM_DEFAULT, const type_vec_t &n_typeList=type_vec_t(), const arg_vec_t &defaultArgList=arg_vec_t())
sets the constructor method with extended information; can set a private constructor, set additional functional domain info, and parameter type info from lists (or adds an overloaded variant)
void(* q_copy_t)(QoreObject *self, QoreObject *old, AbstractPrivateData *private_data, ExceptionSink *xsink)
the type used for builtin QoreClass copy signatures
Definition: common.h:390
void(* q_destructor_t)(QoreObject *self, AbstractPrivateData *private_data, ExceptionSink *xsink)
the type used for builtin QoreClass destructor signatures
Definition: common.h:362
double(* q_func_double_t)(const QoreListNode *args, ExceptionSink *xsink)
the type used for builtin function signatures returning an double value
Definition: common.h:224
DLLEXPORT void addDefaultBuiltinBaseClass(QoreClass *qc, QoreListNode *xargs=0)
make a builtin class a child of another builtin class and ensures that the given class&#39; private data ...
defines a Qore-language class
Definition: QoreClass.h:186
void(* q_destructor2_t)(const QoreClass &thisclass, QoreObject *self, AbstractPrivateData *private_data, ExceptionSink *xsink)
the type used for builtin QoreClass destructor signatures with the new generic calling convention ...
Definition: common.h:371
DLLEXPORT const char * getName() const
returns the method&#39;s name
DLLEXPORT const QoreExternalMethodVariant * findUserMethodVariant(const char *name, const QoreMethod *&method, const type_vec_t &argTypeList) const
returns the user variant for the given non-static method and argument types
DLLEXPORT bool newCallingConvention() const
DEPRECATED: always returns false, do not use.
DLLEXPORT int64 getDomain64() const
returns the functional domain of the class
void(* q_constructor_t)(QoreObject *self, const QoreListNode *args, ExceptionSink *xsink)
the type used for builtin QoreClass constructor method signatures
Definition: common.h:316
DLLLOCAL bool parseIsPrivate() const
returns true if all overloaded variants of a methods are private, false if at least one variant is pu...
DLLEXPORT const QoreClass * getClass() const
returns a pointer to the parent class
void(* q_system_constructor_t)(QoreObject *self, int code, va_list args)
the type used for builtin QoreClass system constructor method signatures
Definition: common.h:344
DLLEXPORT const QoreMethod * findLocalStaticMethod(const char *name) const
looks for a static method in the current class without searching base classes
DLLEXPORT void setConstructorExtendedList2(q_constructor2_t meth, bool priv=false, int64 n_flags=QC_NO_FLAGS, int64 n_domain=QDOM_DEFAULT, const type_vec_t &n_typeList=type_vec_t(), const arg_vec_t &defaultArgList=arg_vec_t())
sets the constructor method using the new calling convention with extended information; can set a pri...
DLLEXPORT QoreObject * execCopy(QoreObject *old, ExceptionSink *xsink) const
executes a class&#39; &quot;copy&quot; method on an object and returns the new object (or 0 in the case of an excep...
DLLEXPORT bool isPrivateMember(const char *str) const
returns true if the member is private
DLLEXPORT void addPublicMember(const char *mem, const QoreTypeInfo *n_typeInfo, AbstractQoreNode *initial_value=0)
adds a public member
DLLEXPORT void addBuiltinConstant(const char *name, AbstractQoreNode *value, bool priv=false, const QoreTypeInfo *typeInfo=0)
adds a class constant to the class
the implementation of Qore&#39;s object data type, reference counted, dynamically-allocated only ...
Definition: QoreObject.h:56
DLLEXPORT const QoreMethod * getMemberGateMethod() const
returns a const pointer to the QoreMethod object of the memberGate method, if any is set ...
unsigned qore_classid_t
used for the unique class ID for QoreClass objects
Definition: common.h:68
static unsigned num_params(const QoreListNode *n)
returns the number of arguments passed to the function
Definition: params.h:46
DLLEXPORT const QoreMethod * getConstructor() const
returns a const pointer to the QoreMethod object of the constuctor method, if any is set ...
container for holding Qore-language exception information and also for registering a &quot;thread_exit&quot; ca...
Definition: ExceptionSink.h:35
void(* q_constructor2_t)(const QoreClass &thisclass, QoreObject *self, const QoreListNode *args, ExceptionSink *xsink)
the type used for builtin QoreClass constructor method signatures using the new generic calling conve...
Definition: common.h:324
DLLEXPORT void recheckBuiltinMethodHierarchy()
rechecks for inherited methods in base classes when adding builtin classes
DLLLOCAL QoreClass()
constructor not exported in library&#39;s API
DLLEXPORT bool hasMethodGate() const
returns true if the class implements a &quot;methodGate&quot; method
DLLEXPORT void addMethod(const char *n_name, q_method_t meth, bool priv=false)
adds a builtin method to a class
bool(* q_method_bool_t)(QoreObject *self, AbstractPrivateData *private_data, const QoreListNode *args, ExceptionSink *xsink)
the type used for builtin QoreClass method signatures when called with the even newer generic calling...
Definition: common.h:260
DLLEXPORT void addStaticMethodExtendedList2(const char *n_name, q_static_method2_t meth, bool priv=false, int64 n_flags=QC_NO_FLAGS, int64 n_domain=QDOM_DEFAULT, const QoreTypeInfo *returnTypeInfo=0, const type_vec_t &n_typeList=type_vec_t(), const arg_vec_t &defaultArgList=arg_vec_t())
adds a builtin static method with the new generic calling convention with extended information; addit...
DLLEXPORT void setSynchronousClass()
call this function if your builtin class requires *all* methods (except the constructor) to be run in...
DLLEXPORT void setConstructor(q_constructor_t m)
sets the builtin constructor method for the class (or adds an overloaded variant) ...
DLLEXPORT void setCopy2(q_copy2_t m)
sets the builtin copy method for the class using the new generic calling convention ...
DLLEXPORT ~QoreClass()
deletes the object and frees all memory
AbstractQoreNode *(* q_static_method2_t)(const QoreMethod &method, const QoreListNode *args, ExceptionSink *xsink)
the type used for builtin static method signatures for static methods using the new generic calling c...
Definition: common.h:299
DLLEXPORT void addStaticMethodExtended3(const char *n_name, q_func_t meth, bool priv=false, int64 n_flags=QC_NO_FLAGS, int64 n_domain=QDOM_DEFAULT, const QoreTypeInfo *returnTypeInfo=0, unsigned num_params=0,...)
adds a builtin static method with extended information; additional functional domain info...
AbstractQoreNode *(* q_method_t)(QoreObject *self, AbstractPrivateData *private_data, const QoreListNode *args, ExceptionSink *xsink)
the type used for builtin QoreClass method signatures
Definition: common.h:233
DLLEXPORT const QoreMethod * findStaticMethod(const char *nme) const
finds a static method in the class hierarchy
DLLEXPORT bool isStatic() const
returns true if the method is static
DLLEXPORT bool isPrivate() const
returns true if all overloaded variants of a methods are private, false if at least one variant is pu...
DLLEXPORT void setSystemConstructor2(q_system_constructor2_t m)
sets the builtin constructor for system objects (ex: used as constant values) using the new calling c...
DLLEXPORT void addPrivateMember(const char *mem, const QoreTypeInfo *n_typeInfo, AbstractQoreNode *initial_value=0)
adds a private member
DLLEXPORT void addStaticMethodExtendedList3(const void *ptr, const char *n_name, q_static_method3_t meth, bool priv=false, int64 n_flags=QC_NO_FLAGS, int64 n_domain=QDOM_DEFAULT, const QoreTypeInfo *returnTypeInfo=0, const type_vec_t &n_typeList=type_vec_t(), const arg_vec_t &defaultArgList=arg_vec_t())
adds a builtin static method with the even newer generic calling convention with extended information...
DLLEXPORT int numUserMethods() const
returns the number of non-static user methods in this class
DLLEXPORT int numStaticUserMethods() const
returns the number of static user methods in this class
DLLEXPORT const QoreTypeInfo * getTypeInfo() const
returns the type information structure for this class
DLLEXPORT bool isSynchronized() const
DEPRECATED: always returns false, do not use.
DLLEXPORT bool hasCopy() const
returns true if the class implements a copy method
DLLEXPORT void setDestructor2(q_destructor2_t m)
sets the builtin destructor method for the class with the new generic calling convention ...
void(* q_constructor3_t)(const QoreClass &thisclass, const type_vec_t &typeList, const void *ptr, QoreObject *self, const QoreListNode *args, ExceptionSink *xsink)
the type used for builtin QoreClass constructor method signatures using the even newer generic callin...
Definition: common.h:334
DLLEXPORT void setDestructor3(const void *ptr, q_destructor3_t m)
sets the builtin destructor method for the class with the new generic calling convention ...
a method in a QoreClass
Definition: QoreClass.h:83
DLLEXPORT bool existsVariant(const type_vec_t &paramTypeInfo) const
returns true if a variant with the given parameter signature already exists in the method ...
DLLEXPORT void setConstructorExtended2(q_constructor2_t meth, bool priv=false, int64 n_flags=QC_NO_FLAGS, int64 n_domain=QDOM_DEFAULT, unsigned num_params=0,...)
sets the constructor method using the new calling convention with extended information; can set a pri...
std::vector< const QoreTypeInfo * > type_vec_t
vector of type information for parameter lists
Definition: common.h:200
DLLEXPORT void setSystemConstructor(q_system_constructor_t m)
sets the builtin constructor for system objects (ex: used as constant values)
bool(* q_func_bool_t)(const QoreListNode *args, ExceptionSink *xsink)
the type used for builtin function signatures returning a boolean value
Definition: common.h:221
DLLEXPORT void addStaticMethod(const char *n_name, q_func_t meth, bool priv=false)
adds a builtin static method to a class
DLLEXPORT void setConstructorExtended(q_constructor_t meth, bool priv=false, int64 n_flags=QC_NO_FLAGS, int64 n_domain=QDOM_DEFAULT, unsigned num_params=0,...)
sets the constructor method with extended information; can set a private constructor, set additional functional domain info, and parameter type info (or adds an overloaded variant)
DLLEXPORT void addAbstractMethodVariantExtended3(const char *n_name, bool priv=false, int64 n_flags=QC_NO_FLAGS, const QoreTypeInfo *returnTypeInfo=0, unsigned num_params=0,...)
adds an unimplemented abstract method variant to the class with extended information; with return and...
void(* q_copy2_t)(const QoreClass &thisclass, QoreObject *self, QoreObject *old, AbstractPrivateData *private_data, ExceptionSink *xsink)
the type used for builtin QoreClass copy signatures with the new generic calling convention ...
Definition: common.h:400
DLLEXPORT void addStaticMethodExtended2(const char *n_name, q_static_method2_t meth, bool priv=false, int64 n_flags=QC_NO_FLAGS, int64 n_domain=QDOM_DEFAULT, const QoreTypeInfo *returnTypeInfo=0, unsigned num_params=0,...)
adds a builtin static method with the new generic calling convention with extended information; addit...
DLLEXPORT void addMethodExtended3(const char *n_name, q_method_t meth, bool priv=false, int64 n_flags=QC_NO_FLAGS, int64 n_domain=QDOM_DEFAULT, const QoreTypeInfo *returnTypeInfo=0, unsigned num_params=0,...)
adds a builtin method with extended information; additional functional domain info, return and parameter type info
DLLEXPORT bool isBuiltin() const
returns true if all variants of the method are builtin variants
void(* q_destructor3_t)(const QoreClass &thisclass, const void *ptr, QoreObject *self, AbstractPrivateData *private_data, ExceptionSink *xsink)
the type used for builtin QoreClass destructor signatures with the new generic calling convention and...
Definition: common.h:381
DLLEXPORT const QoreMethod * findMethod(const char *nme) const
finds a non-static method in the class hierarchy
#define QDOM_DEFAULT
the default domain (no domain)
Definition: Restrictions.h:102