Qore Programming Language 0.8.8

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

- File List
- File Members

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
484 DLLEXPORT void setSystemConstructor(q_system_constructor_t m);
485
487
490 DLLEXPORT void setSystemConstructor2(q_system_constructor2_t m);
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
869 class QoreMethodIterator {
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
881 class QoreStaticMethodIterator {
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
QoreMethod::getNameStr
DLLEXPORT const std::string & getNameStr() const
returns the method&#39;s name
QoreClass::setUserData
DLLEXPORT void setUserData(const void *ptr)
sets a pointer to user-specific data in the class
QoreClass::getOrNothingTypeInfo
DLLEXPORT const QoreTypeInfo * getOrNothingTypeInfo() const
returns the &quot;or nothing&quot; type information structure for this class
QoreClass::findLocalMethod
DLLEXPORT const QoreMethod * findLocalMethod(const char *name) const
looks for a non-static method in the current class without searching base classes ...
QoreClass::addMethodExtended
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
q_copy3_t
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
QoreClass::setCopy3
DLLEXPORT void setCopy3(const void *ptr, q_copy3_t m)
sets the builtin copy method for the class using the new generic calling convention ...
QoreClass::setDestructor
DLLEXPORT void setDestructor(q_destructor_t m)
sets the builtin destructor method for the class
QoreClass::getMemberNotificationMethod
DLLEXPORT const QoreMethod * getMemberNotificationMethod() const
returns a const pointer to the QoreMethod object of the memberNotification method, if any is set
QoreClass::addBuiltinVirtualBaseClass
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...
QoreClass::addMethodExtended2
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...
QoreMethodIterator
To be used to iterate through a class&#39; normal (non-static) methods.
Definition: QoreClass.h:869
QoreMethod::getClassName
DLLEXPORT const char * getClassName() const
returns the class name for the method
QoreClass::addStaticMethodExtendedList
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...
QoreClass::addMethodExtendedList2
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...
QoreClass::addBuiltinBaseClass
DLLEXPORT void addBuiltinBaseClass(QoreClass *qc, QoreListNode *xargs=0)
make a builtin class a child of another builtin class
QoreClass::getID
DLLEXPORT qore_classid_t getID() const
returns the class ID of this class
q_delete_blocker_t
bool(* q_delete_blocker_t)(QoreObject *self, AbstractPrivateData *private_data)
the typed used for QoreClass deleteBlocker signatures
Definition: common.h:418
QoreClass::execSystemConstructor
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 ...
QoreClass::setCopy
DLLEXPORT void setCopy(q_copy_t m)
sets the builtin copy method for the class
QoreClass::getMethodList
DLLEXPORT QoreListNode * getMethodList() const
returns a list strings of all non-static methods in the class, the caller owns the reference count re...
q_static_method3_t
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
QoreClass::isPublicOrPrivateMember
DLLEXPORT bool isPublicOrPrivateMember(const char *str, bool &priv) const
returns true if the member is private or public
QoreClass::setDeleteBlocker
DLLEXPORT void setDeleteBlocker(q_delete_blocker_t m)
sets the deleteBlocker method for the class
QoreClass::addStaticMethod2
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
QoreClass::setConstructor2
DLLEXPORT void setConstructor2(q_constructor2_t m)
sets the builtin constructor method for the class using the new calling convention (or adds an overlo...
QoreClass::numStaticMethods
DLLEXPORT int numStaticMethods() const
returns the number of static methods in this class (user and builtin)
q_method3_t
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
QoreClass::numMethods
DLLEXPORT int numMethods() const
returns the number of non-static methods in this class (user and builtin)
QoreClass::hasMemberGate
DLLEXPORT bool hasMemberGate() const
returns true if the class implements a &quot;memberGate&quot; method
AbstractQoreNode
The base class for all value and parse types in Qore expression trees.
Definition: AbstractQoreNode.h:47
QoreClass::getUserData
DLLEXPORT const void * getUserData() const
retrieves the user-specific data pointer
q_func_int64_t
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
QoreClass::getDomain
DLLEXPORT int getDomain() const
returns the functional domain of the class
QoreClass::getDestructor
DLLEXPORT const QoreMethod * getDestructor() const
returns a const pointer to the QoreMethod object of the constructor method, if any is set ...
QoreClass::isSystem
DLLEXPORT bool isSystem() const
returns true if the class is a builtin class
QoreClass::getName
DLLEXPORT const char * getName() const
returns the class name
arg_vec_t
std::vector< AbstractQoreNode * > arg_vec_t
vector of value information for default argument lists
Definition: common.h:202
QoreClass::hasAbstract
DLLEXPORT bool hasAbstract() const
returns true if the class has at least one abstract method variant
q_method2_t
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
QoreClass::setConstructorExtendedList3
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...
QoreClass::addBuiltinStaticVar
DLLEXPORT void addBuiltinStaticVar(const char *name, AbstractQoreNode *value, bool priv=false, const QoreTypeInfo *typeInfo=0)
adds a static variable to the class
QoreClass::getStaticMethodList
DLLEXPORT QoreListNode * getStaticMethodList() const
returns a list strings of all static methods in the class, the caller owns the reference count return...
QoreClass::getCopyMethod
DLLEXPORT const QoreMethod * getCopyMethod() const
returns a const pointer to the QoreMethod object of the destructor method, if any is set ...
QoreMethod::isUser
DLLEXPORT bool isUser() const
returns true if all variants of the method are user variants
q_system_constructor2_t
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
QoreClass::addMethodExtendedList3
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...
QoreMethod::eval
DLLLOCAL AbstractQoreNode * eval(QoreObject *self, const QoreListNode *args, ExceptionSink *xsink) const
evaluates the method and returns the result
QoreClass::getMethodGate
DLLEXPORT const QoreMethod * getMethodGate() const
returns a const pointer to the QoreMethod object of the methodGate method, if any is set ...
q_method_int64_t
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
QoreClass::setConstructorExtended3
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)
q_method_double_t
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
QoreStaticMethodIterator
To be used to iterate through a class&#39; static methods.
Definition: QoreClass.h:881
QoreClass::execConstructor
DLLEXPORT QoreObject * execConstructor(const QoreListNode *args, ExceptionSink *xsink) const
creates a new object and executes the constructor on it and returns the new object ...
QoreString
Qore&#39;s string type supported by the QoreEncoding class.
Definition: QoreString.h:42
q_func_t
AbstractQoreNode *(* q_func_t)(const QoreListNode *args, ExceptionSink *xsink)
the type used for builtin function signatures
Definition: common.h:214
QoreClass::hasMemberNotification
DLLEXPORT bool hasMemberNotification() const
returns true if the class implements a &quot;memberNotification&quot; method
QoreClass::addMethod2
DLLEXPORT void addMethod2(const char *n_name, q_method2_t meth, bool priv=false)
adds a builtin method with the new generic calling convention
QoreClass::getSystemConstructor
DLLEXPORT const QoreMethod * getSystemConstructor() const
returns a const pointer to the QoreMethod object of the constuctor method, if any is set ...
QoreClass::getClass
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 ...
QoreClass::addMethodExtendedList
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
QoreListNode
This is the list container type in Qore, dynamically allocated only, reference counted.
Definition: QoreListNode.h:44
QoreClass::addStaticMethodExtended
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...
QoreClass::setConstructorExtendedList
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)
q_copy_t
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
q_destructor_t
void(* q_destructor_t)(QoreObject *self, AbstractPrivateData *private_data, ExceptionSink *xsink)
the type used for builtin QoreClass destructor signatures
Definition: common.h:361
q_func_double_t
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
QoreClass::addDefaultBuiltinBaseClass
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 ...
QoreClass
defines a Qore-language class
Definition: QoreClass.h:199
q_destructor2_t
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
QoreMethod::getName
DLLEXPORT const char * getName() const
returns the method&#39;s name
QoreClass::findUserMethodVariant
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
QoreMethod::newCallingConvention
DLLEXPORT bool newCallingConvention() const
DEPRECATED: always returns false, do not use.
QoreClass::getDomain64
DLLEXPORT int64 getDomain64() const
returns the functional domain of the class
q_constructor_t
void(* q_constructor_t)(QoreObject *self, const QoreListNode *args, ExceptionSink *xsink)
the type used for builtin QoreClass constructor method signatures
Definition: common.h:315
QoreMethod::parseIsPrivate
DLLLOCAL bool parseIsPrivate() const
returns true if all overloaded variants of a methods are private, false if at least one variant is pu...
QoreMethod::getClass
DLLEXPORT const QoreClass * getClass() const
returns a pointer to the parent class
q_system_constructor_t
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
QoreClass::findLocalStaticMethod
DLLEXPORT const QoreMethod * findLocalStaticMethod(const char *name) const
looks for a static method in the current class without searching base classes
QoreClass::setConstructorExtendedList2
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...
QoreClass::execCopy
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...
QoreClass::isPrivateMember
DLLEXPORT bool isPrivateMember(const char *str) const
returns true if the member is private
QoreClass::addPublicMember
DLLEXPORT void addPublicMember(const char *mem, const QoreTypeInfo *n_typeInfo, AbstractQoreNode *initial_value=0)
adds a public member
QoreClass::addBuiltinConstant
DLLEXPORT void addBuiltinConstant(const char *name, AbstractQoreNode *value, bool priv=false, const QoreTypeInfo *typeInfo=0)
adds a class constant to the class
QoreObject
the implementation of Qore&#39;s object data type, reference counted, dynamically-allocated only ...
Definition: QoreObject.h:56
QoreClass::getMemberGateMethod
DLLEXPORT const QoreMethod * getMemberGateMethod() const
returns a const pointer to the QoreMethod object of the memberGate method, if any is set ...
qore_classid_t
unsigned qore_classid_t
used for the unique class ID for QoreClass objects
Definition: common.h:67
num_params
static unsigned num_params(const QoreListNode *n)
returns the number of arguments passed to the function
Definition: params.h:46
QoreClass::getConstructor
DLLEXPORT const QoreMethod * getConstructor() const
returns a const pointer to the QoreMethod object of the constuctor method, if any is set ...
ExceptionSink
container for holding Qore-language exception information and also for registering a &quot;thread_exit&quot; ca...
Definition: ExceptionSink.h:35
q_constructor2_t
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
QoreClass::recheckBuiltinMethodHierarchy
DLLEXPORT void recheckBuiltinMethodHierarchy()
rechecks for inherited methods in base classes when adding builtin classes
QoreClass::QoreClass
DLLLOCAL QoreClass()
constructor not exported in library&#39;s API
QoreClass::hasMethodGate
DLLEXPORT bool hasMethodGate() const
returns true if the class implements a &quot;methodGate&quot; method
QoreClass::addMethod
DLLEXPORT void addMethod(const char *n_name, q_method_t meth, bool priv=false)
adds a builtin method to a class
q_method_bool_t
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
QoreClass::addStaticMethodExtendedList2
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...
QoreClass::setSynchronousClass
DLLEXPORT void setSynchronousClass()
call this function if your builtin class requires *all* methods (except the constructor) to be run in...
QoreClass::setConstructor
DLLEXPORT void setConstructor(q_constructor_t m)
sets the builtin constructor method for the class (or adds an overloaded variant) ...
QoreClass::setCopy2
DLLEXPORT void setCopy2(q_copy2_t m)
sets the builtin copy method for the class using the new generic calling convention ...
QoreClass::~QoreClass
DLLEXPORT ~QoreClass()
deletes the object and frees all memory
q_static_method2_t
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
QoreClass::addStaticMethodExtended3
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...
q_method_t
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
QoreClass::findStaticMethod
DLLEXPORT const QoreMethod * findStaticMethod(const char *nme) const
finds a static method in the class hierarchy
QoreMethod::isStatic
DLLEXPORT bool isStatic() const
returns true if the method is static
QoreMethod::isPrivate
DLLEXPORT bool isPrivate() const
returns true if all overloaded variants of a methods are private, false if at least one variant is pu...
QoreClass::setSystemConstructor2
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...
QoreClass::addPrivateMember
DLLEXPORT void addPrivateMember(const char *mem, const QoreTypeInfo *n_typeInfo, AbstractQoreNode *initial_value=0)
adds a private member
QoreClass::addStaticMethodExtendedList3
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...
QoreClass::numUserMethods
DLLEXPORT int numUserMethods() const
returns the number of non-static user methods in this class
QoreClass::numStaticUserMethods
DLLEXPORT int numStaticUserMethods() const
returns the number of static user methods in this class
QoreClass::getTypeInfo
DLLEXPORT const QoreTypeInfo * getTypeInfo() const
returns the type information structure for this class
QoreMethod::isSynchronized
DLLEXPORT bool isSynchronized() const
DEPRECATED: always returns false, do not use.
QoreClass::hasCopy
DLLEXPORT bool hasCopy() const
returns true if the class implements a copy method
QoreClass::setDestructor2
DLLEXPORT void setDestructor2(q_destructor2_t m)
sets the builtin destructor method for the class with the new generic calling convention ...
q_constructor3_t
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
QoreClass::setDestructor3
DLLEXPORT void setDestructor3(const void *ptr, q_destructor3_t m)
sets the builtin destructor method for the class with the new generic calling convention ...
QoreMethod
a method in a QoreClass
Definition: QoreClass.h:83
QoreMethod::existsVariant
DLLEXPORT bool existsVariant(const type_vec_t &paramTypeInfo) const
returns true if a variant with the given parameter signature already exists in the method ...
QoreClass::setConstructorExtended2
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...
type_vec_t
std::vector< const QoreTypeInfo * > type_vec_t
vector of type information for parameter lists
Definition: common.h:199
QoreClass::setSystemConstructor
DLLEXPORT void setSystemConstructor(q_system_constructor_t m)
sets the builtin constructor for system objects (ex: used as constant values)
q_func_bool_t
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
QoreClass::addStaticMethod
DLLEXPORT void addStaticMethod(const char *n_name, q_func_t meth, bool priv=false)
adds a builtin static method to a class
QoreClass::setConstructorExtended
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)
QoreClass::addAbstractMethodVariantExtended3
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...
q_copy2_t
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
QoreClass::addStaticMethodExtended2
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...
QoreClass::addMethodExtended3
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
QoreMethod::isBuiltin
DLLEXPORT bool isBuiltin() const
returns true if all variants of the method are builtin variants
q_destructor3_t
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
QoreClass::findMethod
DLLEXPORT const QoreMethod * findMethod(const char *nme) const
finds a non-static method in the class hierarchy
QDOM_DEFAULT
#define QDOM_DEFAULT
the default domain (no domain)
Definition: Restrictions.h:102