Qore Programming Language  0.8.11.1
QoreClass.h
1 /* -*- mode: c++; indent-tabs-mode: nil -*- */
2 /*
3  QoreClass.h
4 
5  Qore Programming Language
6 
7  Copyright (C) 2003 - 2014 David Nichols
8 
9  Permission is hereby granted, free of charge, to any person obtaining a
10  copy of this software and associated documentation files (the "Software"),
11  to deal in the Software without restriction, including without limitation
12  the rights to use, copy, modify, merge, publish, distribute, sublicense,
13  and/or sell copies of the Software, and to permit persons to whom the
14  Software is furnished to do so, subject to the following conditions:
15 
16  The above copyright notice and this permission notice shall be included in
17  all copies or substantial portions of the Software.
18 
19  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
22  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
23  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
24  FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
25  DEALINGS IN THE SOFTWARE.
26 
27  Note that the Qore library is released under a choice of three open-source
28  licenses: MIT (as above), LGPL 2+, or GPL 2+; see README-LICENSE for more
29  information.
30 */
31 
32 #ifndef _QORE_QORECLASS_H
33 
34 #define _QORE_QORECLASS_H
35 
36 #include <stdarg.h>
37 #include <string>
38 
39 // all qore class IDs
40 DLLEXPORT extern qore_classid_t CID_AUTOGATE;
41 DLLEXPORT extern qore_classid_t CID_AUTOLOCK;
42 DLLEXPORT extern qore_classid_t CID_AUTOREADLOCK;
43 DLLEXPORT extern qore_classid_t CID_AUTOWRITELOCK;
44 DLLEXPORT extern qore_classid_t CID_CONDITION;
45 DLLEXPORT extern qore_classid_t CID_COUNTER;
46 DLLEXPORT extern qore_classid_t CID_DATASOURCE;
47 DLLEXPORT extern qore_classid_t CID_DATASOURCEPOOL;
48 DLLEXPORT extern qore_classid_t CID_FILE;
49 DLLEXPORT extern qore_classid_t CID_FTPCLIENT;
50 DLLEXPORT extern qore_classid_t CID_GATE;
51 DLLEXPORT extern qore_classid_t CID_GETOPT;
52 DLLEXPORT extern qore_classid_t CID_HTTPCLIENT;
53 DLLEXPORT extern qore_classid_t CID_MUTEX;
54 DLLEXPORT extern qore_classid_t CID_PROGRAM;
55 DLLEXPORT extern qore_classid_t CID_QUEUE;
56 DLLEXPORT extern qore_classid_t CID_RWLOCK;
57 DLLEXPORT extern qore_classid_t CID_SSLCERTIFICATE;
58 DLLEXPORT extern qore_classid_t CID_SSLPRIVATEKEY;
59 DLLEXPORT extern qore_classid_t CID_SEQUENCE;
60 DLLEXPORT extern qore_classid_t CID_SOCKET;
61 DLLEXPORT extern qore_classid_t CID_TERMIOS;
62 
63 DLLEXPORT extern QoreClass *QC_QUEUE;
64 DLLEXPORT extern QoreClass *QC_HTTPCLIENT;
65 
66 class BCList;
67 class BCSMList;
68 class BCAList;
69 class QoreObject;
70 class QoreClass;
71 class BCEAList;
72 class ParamList;
73 class QoreMemberInfo;
74 class BuiltinMethod;
75 class AbstractQoreFunctionVariant;
76 class AbstractFunctionSignature;
77 class UserMethod;
78 class BCANode;
79 class qore_method_private;
80 class MethodFunctionBase;
81 class QoreExternalMethodVariant;
82 class QoreExternalStaticMethodVariant;
83 class NamedScope;
84 class ConstantList;
85 class MethodVariantBase;
86 
88 
91 class QoreMethod {
92  friend class StaticMethodCallNode;
93  friend class QoreObject;
94  friend class qore_class_private;
95  friend class qore_method_private;
96  friend class BCList;
97 
98 private:
100  class qore_method_private *priv;
101 
103  DLLLOCAL QoreMethod(const QoreMethod&);
104 
106  DLLLOCAL QoreMethod& operator=(const QoreMethod&);
107 
108 public:
110 
113  DLLEXPORT bool isSynchronized() const;
114 
116 
119  DLLEXPORT bool newCallingConvention() const;
120 
122 
124  DLLEXPORT bool isUser() const;
125 
127 
129  DLLEXPORT bool isBuiltin() const;
130 
132 
134  DLLEXPORT bool isPrivate() const;
135 
137 
140  DLLEXPORT bool isStatic() const;
141 
143 
146  DLLEXPORT const char* getName() const;
147 
149 
152  DLLEXPORT const std::string& getNameStr() const;
153 
155  DLLEXPORT const QoreClass *getClass() const;
156 
158  DLLEXPORT const char *getClassName() const;
159 
161  DLLEXPORT bool existsVariant(const type_vec_t &paramTypeInfo) const;
162 
163  /* returns the return type information for the method if it is available and if
164  there is only one return type (there can be more return types if the method is
165  overloaded)
166  */
167  DLLEXPORT const QoreTypeInfo *getUniqueReturnTypeInfo() const;
168 
169  DLLLOCAL QoreMethod(const QoreClass *p_class, MethodFunctionBase *n_func, bool n_static = false);
170 
171  DLLLOCAL ~QoreMethod();
172  DLLLOCAL bool inMethod(const QoreObject *self) const;
173  DLLLOCAL QoreMethod *copy(const QoreClass *p_class) const;
174  DLLLOCAL void assign_class(const QoreClass *p_class);
175  DLLLOCAL MethodFunctionBase *getFunction() const;
176 
178 
180  DLLLOCAL bool parseIsPrivate() const;
181 
182  DLLLOCAL AbstractQoreNode *evalNormalVariant(QoreObject *self, const QoreExternalMethodVariant *ev, const QoreListNode *args, ExceptionSink *xsink) const;
183  DLLLOCAL int64 bigIntEvalNormalVariant(QoreObject *self, const QoreExternalMethodVariant *ev, const QoreListNode *args, ExceptionSink *xsink) const;
184  DLLLOCAL int intEvalNormalVariant(QoreObject *self, const QoreExternalMethodVariant *ev, const QoreListNode *args, ExceptionSink *xsink) const;
185  DLLLOCAL bool boolEvalNormalVariant(QoreObject *self, const QoreExternalMethodVariant *ev, const QoreListNode *args, ExceptionSink *xsink) const;
186  DLLLOCAL double floatEvalNormalVariant(QoreObject *self, const QoreExternalMethodVariant *ev, const QoreListNode *args, ExceptionSink *xsink) const;
187 };
188 
190 
194 class QoreClass {
195  friend class BCList;
196  friend class BCNode;
197  friend class BCSMList;
198  friend class qore_object_private;
199  friend class qore_class_private;
200  friend class QoreObject;
201  friend class BCANode;
202  friend class qore_method_private;
203  friend class QoreMethodIterator;
204  friend class QoreStaticMethodIterator;
205  friend class ConstructorMethodFunction;
206 
207 private:
209  DLLLOCAL QoreClass& operator=(const QoreClass&);
210 
212  class qore_class_private *priv;
213 
214  // private constructor only called when the class is copied
215  DLLLOCAL QoreClass(qore_classid_t id, const char *nme);
216 
217  DLLLOCAL void insertMethod(QoreMethod *o);
218  DLLLOCAL void insertStaticMethod(QoreMethod *o);
219  DLLLOCAL AbstractQoreNode *evalMethodGate(QoreObject *self, const char *nme, const QoreListNode *args, ExceptionSink *xsink) const;
220  DLLLOCAL const QoreMethod *parseResolveSelfMethodIntern(const char *nme);
221 
223 
232  DLLLOCAL AbstractQoreNode *evalMethod(QoreObject *self, const char *method_name, const QoreListNode *args, ExceptionSink *xsink) const;
233  DLLLOCAL int64 bigIntEvalMethod(QoreObject *self, const char *method_name, const QoreListNode *args, ExceptionSink *xsink) const;
234  DLLLOCAL int intEvalMethod(QoreObject *self, const char *method_name, const QoreListNode *args, ExceptionSink *xsink) const;
235  DLLLOCAL bool boolEvalMethod(QoreObject *self, const char *method_name, const QoreListNode *args, ExceptionSink *xsink) const;
236  DLLLOCAL double floatEvalMethod(QoreObject *self, const char *method_name, const QoreListNode *args, ExceptionSink *xsink) const;
237 
238  // This function must only be called from QoreObject
239  DLLLOCAL AbstractQoreNode *evalMemberGate(QoreObject *self, const QoreString *nme, ExceptionSink *xsink) const;
240  // This function must only be called from QoreObject
241  DLLLOCAL void execMemberNotification(QoreObject *self, const char *mem, ExceptionSink *xsink) const;
242  // This function must only be called from QoreObject and BCList
243  DLLLOCAL bool execDeleteBlocker(QoreObject *self, ExceptionSink *xsink) const;
244  // This function must only be called from QoreObject
245  DLLLOCAL void execDestructor(QoreObject *self, ExceptionSink *xsink) const;
246  // This function is only called from BCList
247  DLLEXPORT const QoreClass *getClassIntern(qore_classid_t cid, bool &priv) const;
248 
249 public:
251 
256  DLLEXPORT QoreClass(const char *n_name, int n_domain = QDOM_DEFAULT);
257 
259 
266  DLLEXPORT QoreClass(const char *n_name, int64 n_domain, const QoreTypeInfo *n_typeInfo);
267 
269 
271  DLLEXPORT QoreClass(const QoreClass &old);
272 
274  DLLEXPORT ~QoreClass();
275 
277 
298  DLLEXPORT void addMethod(const char *n_name, q_method_t meth, bool priv = false);
299 
301  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, ...);
302 
304  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, ...);
305 
307  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());
308 
310  DLLEXPORT void addMethod2(const char *n_name, q_method2_t meth, bool priv = false);
311 
313  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, ...);
314 
316  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());
317 
319 
329  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());
330 
332  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, ...);
333 
335  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, ...);
336 
338  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, ...);
339 
341  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, ...);
342 
344  DLLEXPORT void addAbstractMethodVariantExtended3(const char *n_name, bool priv = false, int64 n_flags = QC_NO_FLAGS, const QoreTypeInfo *returnTypeInfo = 0, unsigned num_params = 0, ...);
345 
347 
352  DLLEXPORT void addStaticMethod(const char *n_name, q_func_t meth, bool priv = false);
353 
355  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, ...);
356 
358  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());
359 
361  DLLEXPORT void addStaticMethod2(const char *n_name, q_static_method2_t meth, bool priv = false);
362 
364  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, ...);
365 
367  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());
368 
370 
380  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());
381 
383  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, ...);
384 
386  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, ...);
387 
389  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, ...);
390 
392  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, ...);
393 
395 
406  DLLEXPORT void setDestructor(q_destructor_t m);
407 
409 
420  DLLEXPORT void setDestructor2(q_destructor2_t m);
421 
423 
435  DLLEXPORT void setDestructor3(const void *ptr, q_destructor3_t m);
436 
438 
441  DLLEXPORT void setConstructor(q_constructor_t m);
442 
444  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, ...);
445 
447  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());
448 
450 
453  DLLEXPORT void setConstructor2(q_constructor2_t m);
454 
456  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, ...);
457 
459  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());
460 
462 
470  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());
471 
473  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, ...);
474 
476 
480 
482 
486 
488 
499  DLLEXPORT void setCopy(q_copy_t m);
500 
502 
513  DLLEXPORT void setCopy2(q_copy2_t m);
514 
516 
528  DLLEXPORT void setCopy3(const void *ptr, q_copy3_t m);
529 
531 
539  DLLEXPORT void setDeleteBlocker(q_delete_blocker_t m);
540 
542 
546  DLLEXPORT bool isPrivateMember(const char *str) const;
547 
549 
554  DLLEXPORT bool isPublicOrPrivateMember(const char *str, bool &priv) const;
555 
557 
562  DLLEXPORT QoreObject *execConstructor(const QoreListNode *args, ExceptionSink *xsink) const;
563 
565 
569  DLLEXPORT QoreObject *execSystemConstructor(int code = 0, ...) const;
570 
572 
576  DLLEXPORT QoreObject *execCopy(QoreObject *old, ExceptionSink *xsink) const;
577 
579 
584  DLLEXPORT const QoreMethod *findLocalMethod(const char *name) const;
585 
587 
592  DLLEXPORT const QoreMethod *findLocalStaticMethod(const char *name) const;
593 
595 
598  DLLEXPORT QoreListNode *getMethodList() const;
599 
601 
604  DLLEXPORT QoreListNode *getStaticMethodList() const;
605 
607 
615  DLLEXPORT QoreClass *getClass(qore_classid_t cid) const;
616 
618 
625  DLLEXPORT const QoreClass *getClass(qore_classid_t cid, bool &priv) const;
626 
628 
635  DLLEXPORT const QoreClass *getClass(const QoreClass& qc, bool &priv) const;
636 
638  DLLEXPORT int numMethods() const;
639 
641  DLLEXPORT int numStaticMethods() const;
642 
644  DLLEXPORT int numUserMethods() const;
645 
647  DLLEXPORT int numStaticUserMethods() const;
648 
650  DLLEXPORT bool hasCopy() const;
651 
653  DLLEXPORT qore_classid_t getID() const;
654 
656  DLLEXPORT bool isSystem() const;
657 
659  DLLEXPORT bool hasMemberGate() const;
660 
662  DLLEXPORT bool hasMethodGate() const;
663 
665  DLLEXPORT bool hasMemberNotification() const;
666 
668 
670  DLLEXPORT int getDomain() const;
671 
673 
675  DLLEXPORT int64 getDomain64() const;
676 
678  DLLEXPORT const char *getName() const;
679 
681  // used at run-time
682  DLLEXPORT const QoreMethod *findMethod(const char *nme) const;
683 
685  // used at run-time
686  DLLEXPORT const QoreMethod *findStaticMethod(const char *nme) const;
687 
689  DLLEXPORT const QoreMethod *findMethod(const char *nme, bool &priv) const;
690 
692  DLLEXPORT const QoreMethod *findStaticMethod(const char *nme, bool &priv) const;
693 
695 
699  DLLEXPORT void addBuiltinBaseClass(QoreClass *qc, QoreListNode *xargs = 0);
700 
702 
708  DLLEXPORT void addDefaultBuiltinBaseClass(QoreClass *qc, QoreListNode *xargs = 0);
709 
711 
717  DLLEXPORT void addBuiltinVirtualBaseClass(QoreClass *qc);
718 
720 
722  DLLEXPORT void setSynchronousClass();
723 
725 
728  DLLEXPORT const QoreMethod *getConstructor() const;
729 
731 
734  DLLEXPORT const QoreMethod *getSystemConstructor() const;
735 
737 
740  DLLEXPORT const QoreMethod *getDestructor() const;
741 
743 
746  DLLEXPORT const QoreMethod *getCopyMethod() const;
747 
749 
752  DLLEXPORT const QoreMethod *getMemberGateMethod() const;
753 
755 
758  DLLEXPORT const QoreMethod *getMethodGate() const;
759 
761 
764  DLLEXPORT const QoreMethod *getMemberNotificationMethod() const;
765 
767  DLLEXPORT const QoreTypeInfo *getTypeInfo() const;
768 
770  DLLEXPORT const QoreTypeInfo *getOrNothingTypeInfo() const;
771 
773  DLLEXPORT void addPublicMember(const char *mem, const QoreTypeInfo *n_typeInfo, AbstractQoreNode *initial_value = 0);
774 
776  DLLEXPORT void addPrivateMember(const char *mem, const QoreTypeInfo *n_typeInfo, AbstractQoreNode *initial_value = 0);
777 
779  DLLEXPORT void setUserData(const void *ptr);
780 
782  DLLEXPORT const void *getUserData() const;
783 
785  DLLEXPORT void recheckBuiltinMethodHierarchy();
786 
788 
790  DLLEXPORT const QoreExternalMethodVariant *findUserMethodVariant(const char *name, const QoreMethod *&method, const type_vec_t &argTypeList) const;
791 
793 
798  DLLEXPORT void addBuiltinConstant(const char *name, AbstractQoreNode *value, bool priv = false, const QoreTypeInfo *typeInfo = 0);
799 
801 
806  DLLEXPORT void addBuiltinStaticVar(const char *name, AbstractQoreNode *value, bool priv = false, const QoreTypeInfo *typeInfo = 0);
807 
809 
811  DLLEXPORT bool hasAbstract() const;
812 
814  DLLLOCAL QoreClass();
815 
816  // used when parsing, finds committed non-static methods within the entire class hierarchy (local class plus base classes)
817  DLLLOCAL const QoreMethod *parseFindCommittedMethod(const char *nme);
818 
819  // adds public constants to pending list
820  DLLLOCAL void parseAssimilatePublicConstants(ConstantList &cmap);
821  // adds private constants to pending list
822  DLLLOCAL void parseAssimilatePrivateConstants(ConstantList &cmap);
823  // adds a single public constant to pending list
824  DLLLOCAL void parseAddPublicConstant(const std::string &name, AbstractQoreNode *val);
825 
826  // returns 0 for success, -1 for error
827  DLLLOCAL int parseAddBaseClassArgumentList(BCAList *bcal);
828  // only called when parsing, sets the name of the class
829  DLLLOCAL void setName(const char *n);
830 
831  DLLLOCAL qore_classid_t getIDForMethod() const;
832  // get base class list to add virtual class indexes for private data
833  DLLLOCAL BCSMList *getBCSMList() const;
834  // returns true if the class has a delete_blocker function (somewhere in the hierarchy)
835  DLLLOCAL bool has_delete_blocker() const;
836  // looks in current and pending method lists, non-static methods only, no initialization
837  DLLLOCAL const QoreMethod *parseFindLocalMethod(const char *name) const;
838  // looks in current and pending method lists for the entire hierarchy (local class plus base classes), non-static methods only
839  DLLLOCAL const QoreMethod *parseFindMethodTree(const char *name);
840  // looks in current and pending method lists for the entire hierarchy (local class plus base classes), static methods only
841  DLLLOCAL const QoreMethod *parseFindStaticMethodTree(const char *name);
842  // 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
843  DLLLOCAL bool parseCheckHierarchy(const QoreClass *cls) const;
844  DLLLOCAL bool parseHasPublicMembersInHierarchy() const;
845  DLLLOCAL bool runtimeGetMemberInfo(const char *mem, const QoreTypeInfo *&memberTypeInfo, bool &priv) const;
846  DLLLOCAL bool runtimeHasPublicMembersInHierarchy() const;
847  // returns true if the class has one or more parent classes
848  DLLLOCAL bool hasParentClass() const;
849  DLLLOCAL QoreObject *execConstructor(const AbstractQoreFunctionVariant *variant, const QoreListNode *args, ExceptionSink *xsink) const;
850  DLLLOCAL bool hasPrivateCopyMethod() const;
851  // returns the status including the pending variant (if any)
852  DLLLOCAL bool parseHasPrivateCopyMethod() const;
853  DLLLOCAL const QoreMethod *parseGetConstructor() const;
854  // returns true if the class implements a "methodGate" method, also in pending uncommitted methods
855  DLLLOCAL bool parseHasMethodGate() const;
856  // called when there is an empty public member declaration or a "no_public" declaration
857  DLLLOCAL void parseSetEmptyPublicMemberDeclaration();
858  // unsets the public member flag for builtin classes
859  DLLLOCAL void unsetPublicMemberFlag();
860 };
861 
864 private:
865  void *priv;
866 
867 public:
868  DLLEXPORT QoreMethodIterator(const QoreClass* qc);
869  DLLEXPORT ~QoreMethodIterator();
870  DLLEXPORT bool next();
871  DLLEXPORT const QoreMethod* getMethod() const;
872 };
873 
876 private:
877  void *priv;
878 
879 public:
880  DLLEXPORT QoreStaticMethodIterator(const QoreClass *qc);
881  DLLEXPORT ~QoreStaticMethodIterator();
882  DLLEXPORT bool next();
883  DLLEXPORT const QoreMethod *getMethod() const;
884 };
885 
886 #endif // _QORE_QORECLASS_H
DLLEXPORT const std::string & getNameStr() const
returns the method's name
DLLEXPORT void setUserData(const void *ptr)
sets a pointer to user-specific data in the class
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:241
DLLEXPORT const QoreTypeInfo * getOrNothingTypeInfo() const
returns the "or nothing" 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
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 "virtual" 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...
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:250
To be used to iterate through a class' normal (non-static) methods.
Definition: QoreClass.h:863
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
DLLEXPORT QoreObject * execSystemConstructor(int code=0,...) const
creates a new "system" object for use as the value of a constant, executes the system constructor on ...
void(* q_destructor_t)(QoreObject *self, AbstractPrivateData *private_data, ExceptionSink *xsink)
the type used for builtin QoreClass destructor signatures
Definition: common.h:370
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...
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:408
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:299
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
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:352
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...
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:362
DLLEXPORT int numStaticMethods() const
returns the number of static methods in this class (user and builtin)
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:379
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 "memberGate" method
int64(* q_func_int64_t)(const QoreListNode *args, ExceptionSink *xsink)
the type used for builtin function signatures returning an integer value
Definition: common.h:226
The base class for all value and parse types in Qore expression trees.
Definition: AbstractQoreNode.h:55
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:342
DLLEXPORT const void * getUserData() const
retrieves the user-specific data pointer
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:211
DLLEXPORT bool hasAbstract() const
returns true if the class has at least one abstract method variant
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:317
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
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 ...
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)
To be used to iterate through a class' static methods.
Definition: QoreClass.h:875
void(* q_constructor_t)(QoreObject *self, const QoreListNode *args, ExceptionSink *xsink)
the type used for builtin QoreClass constructor method signatures
Definition: common.h:324
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's string type supported by the QoreEncoding class.
Definition: QoreString.h:50
DLLEXPORT bool hasMemberNotification() const
returns true if the class implements a "memberNotification" 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:52
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)
DLLEXPORT void addDefaultBuiltinBaseClass(QoreClass *qc, QoreListNode *xargs=0)
make a builtin class a child of another builtin class and ensures that the given class' private data ...
defines a Qore-language class
Definition: QoreClass.h:194
bool(* q_delete_blocker_t)(QoreObject *self, AbstractPrivateData *private_data)
the typed used for QoreClass deleteBlocker signatures
Definition: common.h:427
DLLEXPORT const char * getName() const
returns the method's name
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:419
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
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
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' "copy" 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's object data type, reference counted, dynamically-allocated only ...
Definition: QoreObject.h:64
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:76
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:268
static unsigned num_params(const QoreListNode *n)
returns the number of arguments passed to the function
Definition: params.h:54
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 "thread_exit" ca...
Definition: ExceptionSink.h:43
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:277
DLLEXPORT void recheckBuiltinMethodHierarchy()
rechecks for inherited methods in base classes when adding builtin classes
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:307
DLLLOCAL QoreClass()
constructor not exported in library's API
DLLEXPORT bool hasMethodGate() const
returns true if the class implements a "methodGate" method
DLLEXPORT void addMethod(const char *n_name, q_method_t meth, bool priv=false)
adds a builtin method to a class
AbstractQoreNode *(* q_func_t)(const QoreListNode *args, ExceptionSink *xsink)
the type used for builtin function signatures
Definition: common.h:223
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:287
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
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...
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
double(* q_func_double_t)(const QoreListNode *args, ExceptionSink *xsink)
the type used for builtin function signatures returning an double value
Definition: common.h:232
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_copy_t)(QoreObject *self, QoreObject *old, AbstractPrivateData *private_data, ExceptionSink *xsink)
the type used for builtin QoreClass copy signatures
Definition: common.h:398
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:91
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:389
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:208
DLLEXPORT void setSystemConstructor(q_system_constructor_t m)
sets the builtin constructor for system objects (ex: used as constant values)
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:332
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...
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
DLLEXPORT const QoreMethod * findMethod(const char *nme) const
finds a non-static method in the class hierarchy
bool(* q_func_bool_t)(const QoreListNode *args, ExceptionSink *xsink)
the type used for builtin function signatures returning a boolean value
Definition: common.h:229
#define QDOM_DEFAULT
the default domain (no domain)
Definition: Restrictions.h:110