Qore Programming Language  0.8.8
 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 
175 
181  DLLLOCAL AbstractQoreNode *eval(QoreObject *self, const QoreListNode *args, ExceptionSink *xsink) const;
182  DLLLOCAL int64 bigIntEval(QoreObject *self, const QoreListNode *args, ExceptionSink *xsink) const;
183  DLLLOCAL int intEval(QoreObject *self, const QoreListNode *args, ExceptionSink *xsink) const;
184  DLLLOCAL bool boolEval(QoreObject *self, const QoreListNode *args, ExceptionSink *xsink) const;
185  DLLLOCAL double floatEval(QoreObject *self, const QoreListNode *args, ExceptionSink *xsink) const;
186 
187  DLLLOCAL AbstractQoreNode *evalNormalVariant(QoreObject *self, const QoreExternalMethodVariant *ev, const QoreListNode *args, ExceptionSink *xsink) const;
188  DLLLOCAL int64 bigIntEvalNormalVariant(QoreObject *self, const QoreExternalMethodVariant *ev, const QoreListNode *args, ExceptionSink *xsink) const;
189  DLLLOCAL int intEvalNormalVariant(QoreObject *self, const QoreExternalMethodVariant *ev, const QoreListNode *args, ExceptionSink *xsink) const;
190  DLLLOCAL bool boolEvalNormalVariant(QoreObject *self, const QoreExternalMethodVariant *ev, const QoreListNode *args, ExceptionSink *xsink) const;
191  DLLLOCAL double floatEvalNormalVariant(QoreObject *self, const QoreExternalMethodVariant *ev, const QoreListNode *args, ExceptionSink *xsink) const;
192 };
193 
195 
199 class QoreClass {
200  friend class BCList;
201  friend class BCNode;
202  friend class BCSMList;
203  friend class qore_object_private;
204  friend class qore_class_private;
205  friend class QoreObject;
206  friend class BCANode;
207  friend class qore_method_private;
208  friend class QoreMethodIterator;
209  friend class QoreStaticMethodIterator;
210  friend class ConstructorMethodFunction;
211 
212 private:
214  DLLLOCAL QoreClass& operator=(const QoreClass&);
215 
217  class qore_class_private *priv;
218 
219  // private constructor only called when the class is copied
220  DLLLOCAL QoreClass(qore_classid_t id, const char *nme);
221 
222  DLLLOCAL void insertMethod(QoreMethod *o);
223  DLLLOCAL void insertStaticMethod(QoreMethod *o);
224  DLLLOCAL AbstractQoreNode *evalMethodGate(QoreObject *self, const char *nme, const QoreListNode *args, ExceptionSink *xsink) const;
225  DLLLOCAL const QoreMethod *parseResolveSelfMethodIntern(const char *nme);
226 
228 
237  DLLLOCAL AbstractQoreNode *evalMethod(QoreObject *self, const char *method_name, const QoreListNode *args, ExceptionSink *xsink) const;
238  DLLLOCAL int64 bigIntEvalMethod(QoreObject *self, const char *method_name, const QoreListNode *args, ExceptionSink *xsink) const;
239  DLLLOCAL int intEvalMethod(QoreObject *self, const char *method_name, const QoreListNode *args, ExceptionSink *xsink) const;
240  DLLLOCAL bool boolEvalMethod(QoreObject *self, const char *method_name, const QoreListNode *args, ExceptionSink *xsink) const;
241  DLLLOCAL double floatEvalMethod(QoreObject *self, const char *method_name, const QoreListNode *args, ExceptionSink *xsink) const;
242 
243  // This function must only be called from QoreObject
244  DLLLOCAL AbstractQoreNode *evalMemberGate(QoreObject *self, const QoreString *nme, ExceptionSink *xsink) const;
245  // This function must only be called from QoreObject
246  DLLLOCAL void execMemberNotification(QoreObject *self, const char *mem, ExceptionSink *xsink) const;
247  // This function must only be called from QoreObject and BCList
248  DLLLOCAL bool execDeleteBlocker(QoreObject *self, ExceptionSink *xsink) const;
249  // This function must only be called from QoreObject
250  DLLLOCAL void execDestructor(QoreObject *self, ExceptionSink *xsink) const;
251  // This function is only called from BCList
252  DLLEXPORT const QoreClass *getClassIntern(qore_classid_t cid, bool &priv) const;
253 
254 public:
256 
261  DLLEXPORT QoreClass(const char *n_name, int n_domain = QDOM_DEFAULT);
262 
264 
271  DLLEXPORT QoreClass(const char *n_name, int64 n_domain, const QoreTypeInfo *n_typeInfo);
272 
274 
276  DLLEXPORT QoreClass(const QoreClass &old);
277 
279  DLLEXPORT ~QoreClass();
280 
282 
303  DLLEXPORT void addMethod(const char *n_name, q_method_t meth, bool priv = false);
304 
306  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, ...);
307 
309  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, ...);
310 
312  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());
313 
315  DLLEXPORT void addMethod2(const char *n_name, q_method2_t meth, bool priv = false);
316 
318  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, ...);
319 
321  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());
322 
324 
334  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());
335 
337  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, ...);
338 
340  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, ...);
341 
343  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, ...);
344 
346  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, ...);
347 
349  DLLEXPORT void addAbstractMethodVariantExtended3(const char *n_name, bool priv = false, int64 n_flags = QC_NO_FLAGS, const QoreTypeInfo *returnTypeInfo = 0, unsigned num_params = 0, ...);
350 
352 
357  DLLEXPORT void addStaticMethod(const char *n_name, q_func_t meth, bool priv = false);
358 
360  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, ...);
361 
363  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());
364 
366  DLLEXPORT void addStaticMethod2(const char *n_name, q_static_method2_t meth, bool priv = false);
367 
369  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, ...);
370 
372  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());
373 
375 
385  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());
386 
388  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, ...);
389 
391  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, ...);
392 
394  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, ...);
395 
397  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, ...);
398 
400 
411  DLLEXPORT void setDestructor(q_destructor_t m);
412 
414 
425  DLLEXPORT void setDestructor2(q_destructor2_t m);
426 
428 
440  DLLEXPORT void setDestructor3(const void *ptr, q_destructor3_t m);
441 
443 
446  DLLEXPORT void setConstructor(q_constructor_t m);
447 
449  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, ...);
450 
452  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());
453 
455 
458  DLLEXPORT void setConstructor2(q_constructor2_t m);
459 
461  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, ...);
462 
464  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());
465 
467 
475  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());
476 
478  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, ...);
479 
481 
485 
487 
491 
493 
504  DLLEXPORT void setCopy(q_copy_t m);
505 
507 
518  DLLEXPORT void setCopy2(q_copy2_t m);
519 
521 
533  DLLEXPORT void setCopy3(const void *ptr, q_copy3_t m);
534 
536 
544  DLLEXPORT void setDeleteBlocker(q_delete_blocker_t m);
545 
547 
551  DLLEXPORT bool isPrivateMember(const char *str) const;
552 
554 
559  DLLEXPORT bool isPublicOrPrivateMember(const char *str, bool &priv) const;
560 
562 
567  DLLEXPORT QoreObject *execConstructor(const QoreListNode *args, ExceptionSink *xsink) const;
568 
570 
574  DLLEXPORT QoreObject *execSystemConstructor(int code = 0, ...) const;
575 
577 
581  DLLEXPORT QoreObject *execCopy(QoreObject *old, ExceptionSink *xsink) const;
582 
584 
589  DLLEXPORT const QoreMethod *findLocalMethod(const char *name) const;
590 
592 
597  DLLEXPORT const QoreMethod *findLocalStaticMethod(const char *name) const;
598 
600 
603  DLLEXPORT QoreListNode *getMethodList() const;
604 
606 
609  DLLEXPORT QoreListNode *getStaticMethodList() const;
610 
612 
620  DLLEXPORT QoreClass *getClass(qore_classid_t cid) const;
621 
623 
630  DLLEXPORT const QoreClass *getClass(qore_classid_t cid, bool &priv) const;
631 
633 
640  DLLEXPORT const QoreClass *getClass(const QoreClass& qc, bool &priv) const;
641 
643  DLLEXPORT int numMethods() const;
644 
646  DLLEXPORT int numStaticMethods() const;
647 
649  DLLEXPORT int numUserMethods() const;
650 
652  DLLEXPORT int numStaticUserMethods() const;
653 
655  DLLEXPORT bool hasCopy() const;
656 
658  DLLEXPORT qore_classid_t getID() const;
659 
661  DLLEXPORT bool isSystem() const;
662 
664  DLLEXPORT bool hasMemberGate() const;
665 
667  DLLEXPORT bool hasMethodGate() const;
668 
670  DLLEXPORT bool hasMemberNotification() const;
671 
673 
675  DLLEXPORT int getDomain() const;
676 
678 
680  DLLEXPORT int64 getDomain64() const;
681 
683  DLLEXPORT const char *getName() const;
684 
686  // used at run-time
687  DLLEXPORT const QoreMethod *findMethod(const char *nme) const;
688 
690  // used at run-time
691  DLLEXPORT const QoreMethod *findStaticMethod(const char *nme) const;
692 
694  DLLEXPORT const QoreMethod *findMethod(const char *nme, bool &priv) const;
695 
697  DLLEXPORT const QoreMethod *findStaticMethod(const char *nme, bool &priv) const;
698 
700 
704  DLLEXPORT void addBuiltinBaseClass(QoreClass *qc, QoreListNode *xargs = 0);
705 
707 
713  DLLEXPORT void addDefaultBuiltinBaseClass(QoreClass *qc, QoreListNode *xargs = 0);
714 
716 
722  DLLEXPORT void addBuiltinVirtualBaseClass(QoreClass *qc);
723 
725 
727  DLLEXPORT void setSynchronousClass();
728 
730 
733  DLLEXPORT const QoreMethod *getConstructor() const;
734 
736 
739  DLLEXPORT const QoreMethod *getSystemConstructor() const;
740 
742 
745  DLLEXPORT const QoreMethod *getDestructor() const;
746 
748 
751  DLLEXPORT const QoreMethod *getCopyMethod() const;
752 
754 
757  DLLEXPORT const QoreMethod *getMemberGateMethod() const;
758 
760 
763  DLLEXPORT const QoreMethod *getMethodGate() const;
764 
766 
769  DLLEXPORT const QoreMethod *getMemberNotificationMethod() const;
770 
772  DLLEXPORT const QoreTypeInfo *getTypeInfo() const;
773 
775  DLLEXPORT const QoreTypeInfo *getOrNothingTypeInfo() const;
776 
778  DLLEXPORT void addPublicMember(const char *mem, const QoreTypeInfo *n_typeInfo, AbstractQoreNode *initial_value = 0);
779 
781  DLLEXPORT void addPrivateMember(const char *mem, const QoreTypeInfo *n_typeInfo, AbstractQoreNode *initial_value = 0);
782 
784  DLLEXPORT void setUserData(const void *ptr);
785 
787  DLLEXPORT const void *getUserData() const;
788 
790  DLLEXPORT void recheckBuiltinMethodHierarchy();
791 
793 
795  DLLEXPORT const QoreExternalMethodVariant *findUserMethodVariant(const char *name, const QoreMethod *&method, const type_vec_t &argTypeList) const;
796 
798 
803  DLLEXPORT void addBuiltinConstant(const char *name, AbstractQoreNode *value, bool priv = false, const QoreTypeInfo *typeInfo = 0);
804 
806 
811  DLLEXPORT void addBuiltinStaticVar(const char *name, AbstractQoreNode *value, bool priv = false, const QoreTypeInfo *typeInfo = 0);
812 
814 
816  DLLEXPORT bool hasAbstract() const;
817 
819  DLLLOCAL QoreClass();
820 
821  // used when parsing, finds committed non-static methods within the entire class hierarchy (local class plus base classes)
822  DLLLOCAL const QoreMethod *parseFindCommittedMethod(const char *nme);
823 
824  // adds public constants to pending list
825  DLLLOCAL void parseAssimilatePublicConstants(ConstantList &cmap);
826  // adds private constants to pending list
827  DLLLOCAL void parseAssimilatePrivateConstants(ConstantList &cmap);
828  // adds a single public constant to pending list
829  DLLLOCAL void parseAddPublicConstant(const std::string &name, AbstractQoreNode *val);
830 
831  // returns 0 for success, -1 for error
832  DLLLOCAL int parseAddBaseClassArgumentList(BCAList *bcal);
833  // only called when parsing, sets the name of the class
834  DLLLOCAL void setName(const char *n);
835 
836  DLLLOCAL qore_classid_t getIDForMethod() const;
837  // get base class list to add virtual class indexes for private data
838  DLLLOCAL BCSMList *getBCSMList() const;
839  // returns true if the class has a delete_blocker function (somewhere in the hierarchy)
840  DLLLOCAL bool has_delete_blocker() const;
841  // looks in current and pending method lists, non-static methods only, no initialization
842  DLLLOCAL const QoreMethod *parseFindLocalMethod(const char *name) const;
843  // looks in current and pending method lists for the entire hierarchy (local class plus base classes), non-static methods only
844  DLLLOCAL const QoreMethod *parseFindMethodTree(const char *name);
845  // looks in current and pending method lists for the entire hierarchy (local class plus base classes), static methods only
846  DLLLOCAL const QoreMethod *parseFindStaticMethodTree(const char *name);
847  // 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
848  DLLLOCAL bool parseCheckHierarchy(const QoreClass *cls) const;
849  DLLLOCAL bool parseHasPublicMembersInHierarchy() const;
850  DLLLOCAL bool runtimeGetMemberInfo(const char *mem, const QoreTypeInfo *&memberTypeInfo, bool &priv) const;
851  DLLLOCAL bool runtimeHasPublicMembersInHierarchy() const;
852  DLLLOCAL int initMembers(QoreObject *o, ExceptionSink *xsink) const;
853  // returns true if the class has one or more parent classes
854  DLLLOCAL bool hasParentClass() const;
855  DLLLOCAL QoreObject *execConstructor(const AbstractQoreFunctionVariant *variant, const QoreListNode *args, ExceptionSink *xsink) const;
856  DLLLOCAL bool hasPrivateCopyMethod() const;
857  // returns the status including the pending variant (if any)
858  DLLLOCAL bool parseHasPrivateCopyMethod() const;
859  DLLLOCAL const QoreMethod *parseGetConstructor() const;
860  // returns true if the class implements a "methodGate" method, also in pending uncommitted methods
861  DLLLOCAL bool parseHasMethodGate() const;
862  // called when there is an empty public member declaration or a "no_public" declaration
863  DLLLOCAL void parseSetEmptyPublicMemberDeclaration();
864  // unsets the public member flag for builtin classes
865  DLLLOCAL void unsetPublicMemberFlag();
866 };
867 
870 private:
871  void *priv;
872 
873 public:
874  DLLEXPORT QoreMethodIterator(const QoreClass* qc);
875  DLLEXPORT ~QoreMethodIterator();
876  DLLEXPORT bool next();
877  DLLEXPORT const QoreMethod* getMethod() const;
878 };
879 
882 private:
883  void *priv;
884 
885 public:
886  DLLEXPORT QoreStaticMethodIterator(const QoreClass *qc);
887  DLLEXPORT ~QoreStaticMethodIterator();
888  DLLEXPORT bool next();
889  DLLEXPORT const QoreMethod *getMethod() const;
890 };
891 
892 #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:410
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:869
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:418
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:308
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:290
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:217
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:202
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:278
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:353
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...
DLLLOCAL AbstractQoreNode * eval(QoreObject *self, const QoreListNode *args, ExceptionSink *xsink) const
evaluates the method and returns the result
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:241
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:268
To be used to iterate through a class&#39; static methods.
Definition: QoreClass.h:881
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:214
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:389
void(* q_destructor_t)(QoreObject *self, AbstractPrivateData *private_data, ExceptionSink *xsink)
the type used for builtin QoreClass destructor signatures
Definition: common.h:361
double(* q_func_double_t)(const QoreListNode *args, ExceptionSink *xsink)
the type used for builtin function signatures returning an double value
Definition: common.h:223
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:199
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:370
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:315
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:343
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:67
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:323
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:259
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:298
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:232
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:333
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:199
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:220
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:399
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:380
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