| Qore Programming Language - C/C++ Library 1.12.2

QoreNamespace.h
1 /* -*- mode: c++; indent-tabs-mode: nil -*- */
2 /*
3 QoreNamespace.h
4
5 Qore Programming Language
6
7 Copyright (C) 2003 - 2022 Qore Technologies, s.r.o.
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 /*
33 namespaces are children of a program object. there is a parse
34 lock per program object to ensure that objects are added (or backed out)
35 atomically per program object. All the objects referenced here should
36 be safe to read & copied at all times. They will only be deleted when the
37 program object is deleted (except the pending structures, which will be
38 deleted any time there is a parse error, together with all other
39 pending structures)
40 */
41
42 #ifndef _QORE_QORENAMESPACE_H
43
44 #define _QORE_QORENAMESPACE_H
45
46 #include <cstdlib>
47 #include <cstring>
48 #include <string>
49
50 // forward declarations
51 class QoreExternalFunction;
52 class QoreExternalConstant;
53 class QoreExternalGlobalVar;
54 class QoreProgram;
55
57
62 typedef QoreClass* (*q_ns_class_handler_t)(QoreNamespace* ns, const char* cname);
63
65 class QoreNamespace {
66 friend class QoreNamespaceList;
67 friend class RootQoreNamespace;
68 friend class qore_ns_private;
69 friend class qore_root_ns_private;
70 friend struct NSOInfoBase;
71
72 public:
74
77 DLLEXPORT QoreNamespace(const char* n);
78
80
85 DLLEXPORT QoreNamespace(const QoreNamespace& old, int64 po);
86
88 DLLEXPORT virtual ~QoreNamespace();
89
91
95 DLLEXPORT void clear(ExceptionSink* xsink);
96
98
104 DLLEXPORT void addConstant(const char* name, QoreValue value);
105
107
113 DLLEXPORT void addConstant(const char* name, QoreValue value, const QoreTypeInfo* typeInfo);
114
116
119 DLLEXPORT void addSystemClass(QoreClass* oc);
120
122
127 DLLEXPORT void addSystemHashDecl(TypedHashDecl* hashdecl);
128
130
133 DLLEXPORT QoreNamespace* copy(int64 po = PO_DEFAULT) const;
134
136
141 DLLEXPORT QoreHashNode* getClassInfo() const;
142
144
149 DLLEXPORT QoreHashNode* getConstantInfo() const;
150
152
158 DLLEXPORT QoreHashNode* getInfo() const;
159
161
164 DLLEXPORT const char* getName() const;
165
167
170 DLLEXPORT void addNamespace(QoreNamespace* ns);
171
173
178 DLLEXPORT void addInitialNamespace(QoreNamespace* ns);
179
181
193 DLLEXPORT QoreNamespace* findCreateNamespacePath(const char* nspath);
194
196
208 DLLEXPORT QoreNamespace* findCreateNamespacePathAll(const char* nspath);
209
211
217 DLLEXPORT QoreClass* findLocalClass(const char* cname) const;
218
220
228 DLLEXPORT QoreClass* findLoadLocalClass(const char* cname);
229
231
235 DLLEXPORT QoreNamespace* findLocalNamespace(const char* nsname) const;
236
238
241 DLLEXPORT void setClassHandler(q_ns_class_handler_t class_handler);
242
244
246 DLLEXPORT const QoreNamespace* getParent() const;
247
249 DLLEXPORT void deleteData(ExceptionSink* xsink);
250
252 DLLEXPORT void addBuiltinVariant(const char* name, q_func_n_t f, int64 code_flags = QCF_NO_FLAGS, int64 functional_domain = QDOM_DEFAULT, const QoreTypeInfo* returnTypeInfo = 0, unsigned num_params = 0, ...);
253
255
257 DLLEXPORT void addBuiltinVariant(void* ptr, const char* name, q_external_func_t f,
258 int64 code_flags = QCF_NO_FLAGS, int64 functional_domain = QDOM_DEFAULT,
259 const QoreTypeInfo* returnTypeInfo = nullptr, unsigned num_params = 0, ...);
260
262
264 DLLEXPORT const QoreExternalFunction* findLocalFunction(const char* name) const;
265
267
269 DLLEXPORT const QoreExternalConstant* findLocalConstant(const char* name) const;
270
272
274 DLLEXPORT const QoreExternalGlobalVar* findLocalGlobalVar(const char* name) const;
275
277
279 DLLEXPORT const TypedHashDecl* findLocalTypedHash(const char* name) const;
280
282
286 DLLEXPORT std::string getPath(bool anchored = false) const;
287
289
291 DLLEXPORT bool isModulePublic() const;
292
294
296 DLLEXPORT bool isBuiltin() const;
297
299
301 DLLEXPORT bool isImported() const;
302
304
306 DLLEXPORT bool isRoot() const;
307
309
311 DLLEXPORT QoreProgram* getProgram() const;
312
314
316 DLLEXPORT const char* getModuleName() const;
317
319
328 DLLEXPORT QoreValue setKeyValue(const std::string& key, QoreValue val);
329
331
342 DLLEXPORT QoreValue setKeyValueIfNotSet(const std::string& key, QoreValue val);
343
345
354 DLLEXPORT bool setKeyValueIfNotSet(const std::string& key, const char* str);
355
357
365 DLLEXPORT QoreValue getReferencedKeyValue(const std::string& key) const;
366
368
376 DLLEXPORT QoreValue getReferencedKeyValue(const char* key) const;
377
378 private:
380 QoreNamespace(const QoreNamespace&) = delete;
381
383 QoreNamespace& operator=(const QoreNamespace&) = delete;
384
385 protected:
386 class qore_ns_private* priv; // private implementation
387
388 // protected, function not exported in the API
389 DLLLOCAL QoreNamespace(qore_ns_private* p);
390 };
391
393
397 class RootQoreNamespace : public QoreNamespace {
398 friend class qore_ns_private;
399 friend class qore_root_ns_private;
400 friend class StaticSystemNamespace;
401
402 public:
404
407 DLLEXPORT QoreNamespace* rootGetQoreNamespace() const;
408
410 DLLLOCAL virtual ~RootQoreNamespace();
411
413
415 DLLEXPORT QoreProgram* getProgram() const;
416
417 protected:
418 // private implementation
419 class qore_root_ns_private* rpriv;
420
421 private:
423 RootQoreNamespace(const RootQoreNamespace&) = delete;
424
426 RootQoreNamespace& operator=(const RootQoreNamespace&) = delete;
427
428 DLLLOCAL RootQoreNamespace(class qore_root_ns_private* p);
429 };
430
431 class QorePrivateNamespaceIterator;
432
434
436 class QoreNamespaceIterator {
437 public:
439 DLLEXPORT QoreNamespaceIterator(QoreNamespace& ns);
440
442 DLLEXPORT virtual ~QoreNamespaceIterator();
443
445 DLLEXPORT bool next();
446
448 DLLEXPORT QoreNamespace* operator->();
449
451 DLLEXPORT QoreNamespace* operator*();
452
454 DLLEXPORT QoreNamespace& get();
455
457 DLLEXPORT const QoreNamespace* operator->() const;
459 DLLEXPORT const QoreNamespace* operator*() const;
460
462 DLLEXPORT const QoreNamespace& get() const;
463
464 private:
466 QoreNamespaceIterator(const QoreNamespaceIterator&) = delete;
467
469 QoreNamespaceIterator& operator=(const QoreNamespaceIterator&) = delete;
470
471 QorePrivateNamespaceIterator* priv;
472 };
473
475
477 class QoreNamespaceConstIterator {
478 public:
480 DLLEXPORT QoreNamespaceConstIterator(const QoreNamespace& ns);
481
483 DLLEXPORT virtual ~QoreNamespaceConstIterator();
484
486 DLLEXPORT bool next();
487
489 DLLEXPORT const QoreNamespace* operator->() const;
490
492 DLLEXPORT const QoreNamespace* operator*() const;
493
495 DLLEXPORT const QoreNamespace& get() const;
496
497 private:
499 QoreNamespaceConstIterator(const QoreNamespaceConstIterator&) = delete;
500
502 QoreNamespaceConstIterator& operator=(const QoreNamespaceConstIterator&) = delete;
503
504 QorePrivateNamespaceIterator* priv;
505 };
506
508
510 class QoreNamespaceNamespaceIterator {
511 public:
513 DLLEXPORT QoreNamespaceNamespaceIterator(const QoreNamespace& ns);
514
516 DLLEXPORT virtual ~QoreNamespaceNamespaceIterator();
517
519 DLLEXPORT bool next();
520
522 DLLEXPORT const QoreNamespace& get() const;
523
524 private:
526 QoreNamespaceNamespaceIterator(const QoreNamespaceNamespaceIterator&) = delete;
527
529 QoreNamespaceNamespaceIterator& operator=(const QoreNamespaceNamespaceIterator&) = delete;
530
531 class qore_namespace_namespace_iterator* priv;
532 };
533
535
537 class QoreNamespaceFunctionIterator {
538 public:
540 DLLEXPORT QoreNamespaceFunctionIterator(const QoreNamespace& ns);
541
543 DLLEXPORT virtual ~QoreNamespaceFunctionIterator();
544
546 DLLEXPORT bool next();
547
549 DLLEXPORT const QoreExternalFunction& get() const;
550
551 private:
553 QoreNamespaceFunctionIterator(const QoreNamespaceFunctionIterator&) = delete;
554
556 QoreNamespaceFunctionIterator& operator=(const QoreNamespaceFunctionIterator&) = delete;
557
558 class qore_namespace_function_iterator* priv;
559 };
560
562
564 class QoreNamespaceConstantIterator {
565 public:
567 DLLEXPORT QoreNamespaceConstantIterator(const QoreNamespace& ns);
568
570 DLLEXPORT virtual ~QoreNamespaceConstantIterator();
571
573 DLLEXPORT bool next();
574
576 DLLEXPORT const QoreExternalConstant& get() const;
577
578 private:
580 QoreNamespaceConstantIterator(const QoreNamespaceConstantIterator&) = delete;
581
583 QoreNamespaceConstantIterator& operator=(const QoreNamespaceConstantIterator&) = delete;
584
585 class qore_namespace_constant_iterator* priv;
586 };
587
589
591 class QoreNamespaceClassIterator {
592 public:
594 DLLEXPORT QoreNamespaceClassIterator(const QoreNamespace& ns);
595
597 DLLEXPORT virtual ~QoreNamespaceClassIterator();
598
600 DLLEXPORT bool next();
601
603 DLLEXPORT const QoreClass& get() const;
604
605 private:
607 QoreNamespaceClassIterator(const QoreNamespaceClassIterator&) = delete;
608
610 QoreNamespaceClassIterator& operator=(const QoreNamespaceClassIterator&) = delete;
611
612 class ConstClassListIterator* priv;
613 };
614
616
618 class QoreNamespaceGlobalVarIterator {
619 public:
621 DLLEXPORT QoreNamespaceGlobalVarIterator(const QoreNamespace& ns);
622
624 DLLEXPORT virtual ~QoreNamespaceGlobalVarIterator();
625
627 DLLEXPORT bool next();
628
630 DLLEXPORT const QoreExternalGlobalVar& get() const;
631
632 private:
634 QoreNamespaceGlobalVarIterator(const QoreNamespaceGlobalVarIterator&) = delete;
635
637 QoreNamespaceGlobalVarIterator& operator=(const QoreNamespaceGlobalVarIterator&) = delete;
638
639 class qore_namespace_globalvar_iterator* priv;
640 };
641
643
645 class QoreNamespaceTypedHashIterator {
646 public:
648 DLLEXPORT QoreNamespaceTypedHashIterator(const QoreNamespace& ns);
649
651 DLLEXPORT virtual ~QoreNamespaceTypedHashIterator();
652
654 DLLEXPORT bool next();
655
657 DLLEXPORT const TypedHashDecl& get() const;
658
659 private:
661 QoreNamespaceTypedHashIterator(const QoreNamespaceTypedHashIterator&) = delete;
662
664 QoreNamespaceTypedHashIterator& operator=(const QoreNamespaceTypedHashIterator&) = delete;
665
666 class ConstHashDeclListIterator* priv;
667 };
668
669 #endif // QORE_NAMESPACE_H
QDOM_DEFAULT
#define QDOM_DEFAULT
the default domain (no domain)
Definition: Restrictions.h:159
PO_DEFAULT
#define PO_DEFAULT
no parse options set by default
Definition: Restrictions.h:107
ExceptionSink
container for holding Qore-language exception information and also for registering a "thread_exit" ca...
Definition: ExceptionSink.h:48
QoreClass
defines a Qore-language class
Definition: QoreClass.h:249
QoreExternalConstant
external wrapper class for constants
Definition: QoreReflection.h:200
QoreHashNode
This is the hash or associative list container type in Qore, dynamically allocated only,...
Definition: QoreHashNode.h:50
QoreNamespaceClassIterator
allows classes in a namespace to be iterated
Definition: QoreNamespace.h:591
QoreNamespaceClassIterator::~QoreNamespaceClassIterator
virtual DLLEXPORT ~QoreNamespaceClassIterator()
destroys the object
QoreNamespaceClassIterator::get
DLLEXPORT const QoreClass & get() const
returns the class
QoreNamespaceClassIterator::next
DLLEXPORT bool next()
moves to the next position; returns true if on a valid position
QoreNamespaceClassIterator::QoreNamespaceClassIterator
DLLEXPORT QoreNamespaceClassIterator(const QoreNamespace &ns)
creates the iterator
QoreNamespaceConstIterator
allows all namespaces of a namespace to be iterated (including the namespace passed in the constructo...
Definition: QoreNamespace.h:477
QoreNamespaceConstIterator::~QoreNamespaceConstIterator
virtual DLLEXPORT ~QoreNamespaceConstIterator()
destroys the object
QoreNamespaceConstIterator::QoreNamespaceConstIterator
DLLEXPORT QoreNamespaceConstIterator(const QoreNamespace &ns)
creates the iterator; the namespace given will also be included in the iteration set
QoreNamespaceConstIterator::operator->
DLLEXPORT const QoreNamespace * operator->() const
returns the namespace
QoreNamespaceConstIterator::operator*
DLLEXPORT const QoreNamespace * operator*() const
returns the namespace
QoreNamespaceConstIterator::get
DLLEXPORT const QoreNamespace & get() const
returns the namespace
QoreNamespaceConstIterator::next
DLLEXPORT bool next()
moves to the next position; returns true if on a valid position
QoreNamespaceConstantIterator
allows constants in a namespace to be iterated
Definition: QoreNamespace.h:564
QoreNamespaceConstantIterator::next
DLLEXPORT bool next()
moves to the next position; returns true if on a valid position
QoreNamespaceConstantIterator::~QoreNamespaceConstantIterator
virtual DLLEXPORT ~QoreNamespaceConstantIterator()
destroys the object
QoreNamespaceConstantIterator::QoreNamespaceConstantIterator
DLLEXPORT QoreNamespaceConstantIterator(const QoreNamespace &ns)
creates the iterator
QoreNamespaceConstantIterator::get
DLLEXPORT const QoreExternalConstant & get() const
returns the constant
QoreNamespaceFunctionIterator
allows functions in a namespace to be iterated
Definition: QoreNamespace.h:537
QoreNamespaceFunctionIterator::get
DLLEXPORT const QoreExternalFunction & get() const
returns the function
QoreNamespaceFunctionIterator::next
DLLEXPORT bool next()
moves to the next position; returns true if on a valid position
QoreNamespaceFunctionIterator::QoreNamespaceFunctionIterator
DLLEXPORT QoreNamespaceFunctionIterator(const QoreNamespace &ns)
creates the iterator
QoreNamespaceFunctionIterator::~QoreNamespaceFunctionIterator
virtual DLLEXPORT ~QoreNamespaceFunctionIterator()
destroys the object
QoreNamespaceGlobalVarIterator
allows global variables in a namespace to be iterated
Definition: QoreNamespace.h:618
QoreNamespaceGlobalVarIterator::QoreNamespaceGlobalVarIterator
DLLEXPORT QoreNamespaceGlobalVarIterator(const QoreNamespace &ns)
creates the iterator
QoreNamespaceGlobalVarIterator::get
DLLEXPORT const QoreExternalGlobalVar & get() const
returns the global variable
QoreNamespaceGlobalVarIterator::~QoreNamespaceGlobalVarIterator
virtual DLLEXPORT ~QoreNamespaceGlobalVarIterator()
destroys the object
QoreNamespaceGlobalVarIterator::next
DLLEXPORT bool next()
moves to the next position; returns true if on a valid position
QoreNamespace
contains constants, classes, and subnamespaces in QoreProgram objects
Definition: QoreNamespace.h:65
QoreNamespace::copy
DLLEXPORT QoreNamespace * copy(int64 po=PO_DEFAULT) const
returns a deep copy of the namespace
QoreNamespace::addNamespace
DLLEXPORT void addNamespace(QoreNamespace *ns)
adds a namespace to the namespace tree
QoreNamespace::findLocalNamespace
DLLEXPORT QoreNamespace * findLocalNamespace(const char *nsname) const
finds a subnamespace in this namespace, does not search child namespaces
QoreNamespace::getClassInfo
DLLEXPORT QoreHashNode * getClassInfo() const
gets a hash of all classes in the namespace, the hash keys are the class names and the values are lis...
QoreNamespace::isRoot
DLLEXPORT bool isRoot() const
returns true if the namespace is the root namespace
QoreNamespace::addSystemClass
DLLEXPORT void addSystemClass(QoreClass *oc)
adds a class to a namespace
QoreNamespace::getInfo
DLLEXPORT QoreHashNode * getInfo() const
returns a hash giving information about the definitions in the namespace
QoreNamespace::setKeyValue
DLLEXPORT QoreValue setKeyValue(const std::string &key, QoreValue val)
Sets a key value in the namespace's key-value store unconditionally.
QoreNamespace::isBuiltin
DLLEXPORT bool isBuiltin() const
returns true if the namespace is builtin
QoreNamespace::findLocalTypedHash
DLLEXPORT const TypedHashDecl * findLocalTypedHash(const char *name) const
find a typed hash (hashdecl) in the current namespace; returns nullptr if not found
QoreNamespace::addBuiltinVariant
DLLEXPORT void addBuiltinVariant(const char *name, q_func_n_t f, int64 code_flags=QCF_NO_FLAGS, int64 functional_domain=QDOM_DEFAULT, const QoreTypeInfo *returnTypeInfo=0, unsigned num_params=0,...)
adds a function variant
QoreNamespace::findLocalFunction
DLLEXPORT const QoreExternalFunction * findLocalFunction(const char *name) const
find a function in the current namespace; returns nullptr if not found
QoreNamespace::deleteData
DLLEXPORT void deleteData(ExceptionSink *xsink)
this function must be called before the QoreNamespace object is deleted or a crash could result due i...
QoreNamespace::addConstant
DLLEXPORT void addConstant(const char *name, QoreValue value)
adds a constant definition to the namespace
QoreNamespace::getName
DLLEXPORT const char * getName() const
returns the name of the namespace
QoreNamespace::findCreateNamespacePathAll
DLLEXPORT QoreNamespace * findCreateNamespacePathAll(const char *nspath)
finds a Namespace based on the argument; creates it (or the whole path) if necessary
QoreNamespace::getPath
DLLEXPORT std::string getPath(bool anchored=false) const
returns the path for the namespace
QoreNamespace::findLocalConstant
DLLEXPORT const QoreExternalConstant * findLocalConstant(const char *name) const
find a constant in the current namespace; returns nullptr if not found
QoreNamespace::findCreateNamespacePath
DLLEXPORT QoreNamespace * findCreateNamespacePath(const char *nspath)
finds a Namespace based on the argument; creates it (or the whole path) if necessary
QoreNamespace::getParent
DLLEXPORT const QoreNamespace * getParent() const
returns a pointer to the parent namespace or nullptr if there is no parent
QoreNamespace::getReferencedKeyValue
DLLEXPORT QoreValue getReferencedKeyValue(const std::string &key) const
Returns a referenced key value from the namespace's key-value store.
QoreNamespace::getProgram
DLLEXPORT QoreProgram * getProgram() const
Returns the owning QoreProgram object (if not the static system namespace)
QoreNamespace::addSystemHashDecl
DLLEXPORT void addSystemHashDecl(TypedHashDecl *hashdecl)
adds a hashdecl to a namespace
QoreNamespace::setClassHandler
DLLEXPORT void setClassHandler(q_ns_class_handler_t class_handler)
sets the namespace class handler
QoreNamespace::setKeyValueIfNotSet
DLLEXPORT QoreValue setKeyValueIfNotSet(const std::string &key, QoreValue val)
Sets a key value in the namespace's key-value store only if no value exists for the given key.
QoreNamespace::getModuleName
DLLEXPORT const char * getModuleName() const
Returns the module name the namespace was loaded from or nullptr if it is a builtin namespace.
QoreNamespace::QoreNamespace
DLLEXPORT QoreNamespace(const char *n)
creates a namespace with the given name
QoreNamespace::clear
DLLEXPORT void clear(ExceptionSink *xsink)
clears the contents of the namespace before deleting
QoreNamespace::findLocalGlobalVar
DLLEXPORT const QoreExternalGlobalVar * findLocalGlobalVar(const char *name) const
find a global variable in the current namespace; returns nullptr if not found
QoreNamespace::getConstantInfo
DLLEXPORT QoreHashNode * getConstantInfo() const
a hash of all constants in the namespace, the hash keys are the constant names and the values are the...
QoreNamespace::findLoadLocalClass
DLLEXPORT QoreClass * findLoadLocalClass(const char *cname)
finds a class in this namespace, does not search child namespaces
QoreNamespace::~QoreNamespace
virtual DLLEXPORT ~QoreNamespace()
destroys the object and frees memory
QoreNamespace::addInitialNamespace
DLLEXPORT void addInitialNamespace(QoreNamespace *ns)
adds a subnamespace to the namespace
QoreNamespace::isModulePublic
DLLEXPORT bool isModulePublic() const
returns true if the namespace has its module public flag set
QoreNamespace::isImported
DLLEXPORT bool isImported() const
returns true if the namespace was imported from another program object
QoreNamespace::findLocalClass
DLLEXPORT QoreClass * findLocalClass(const char *cname) const
finds a class in this namespace, does not search child namespaces
QoreNamespaceIterator
allows all namespaces of a namespace to be iterated (including the namespace passed in the constructo...
Definition: QoreNamespace.h:436
QoreNamespaceIterator::operator*
DLLEXPORT QoreNamespace * operator*()
returns the namespace
QoreNamespaceIterator::next
DLLEXPORT bool next()
moves to the next position; returns true if on a valid position
QoreNamespaceIterator::operator->
DLLEXPORT QoreNamespace * operator->()
returns the namespace
QoreNamespaceIterator::get
DLLEXPORT QoreNamespace & get()
returns the namespace
QoreNamespaceIterator::~QoreNamespaceIterator
virtual DLLEXPORT ~QoreNamespaceIterator()
destroys the object
QoreNamespaceIterator::QoreNamespaceIterator
DLLEXPORT QoreNamespaceIterator(QoreNamespace &ns)
creates the iterator; the namespace given will also be included in the iteration set
QoreNamespaceNamespaceIterator
allows local namespaces to be iterated
Definition: QoreNamespace.h:510
QoreNamespaceNamespaceIterator::~QoreNamespaceNamespaceIterator
virtual DLLEXPORT ~QoreNamespaceNamespaceIterator()
destroys the object
QoreNamespaceNamespaceIterator::get
DLLEXPORT const QoreNamespace & get() const
returns the namespace
QoreNamespaceNamespaceIterator::next
DLLEXPORT bool next()
moves to the next position; returns true if on a valid position
QoreNamespaceNamespaceIterator::QoreNamespaceNamespaceIterator
DLLEXPORT QoreNamespaceNamespaceIterator(const QoreNamespace &ns)
creates the iterator
QoreNamespaceTypedHashIterator
allows typed hashes (hashdecls) in a namespace to be iterated
Definition: QoreNamespace.h:645
QoreNamespaceTypedHashIterator::get
DLLEXPORT const TypedHashDecl & get() const
returns the typed hash (hashdecl)
QoreNamespaceTypedHashIterator::~QoreNamespaceTypedHashIterator
virtual DLLEXPORT ~QoreNamespaceTypedHashIterator()
destroys the object
QoreNamespaceTypedHashIterator::QoreNamespaceTypedHashIterator
DLLEXPORT QoreNamespaceTypedHashIterator(const QoreNamespace &ns)
creates the iterator
QoreNamespaceTypedHashIterator::next
DLLEXPORT bool next()
moves to the next position; returns true if on a valid position
QoreProgram
supports parsing and executing Qore-language code, reference counted, dynamically-allocated only
Definition: QoreProgram.h:127
RootQoreNamespace
the root namespace of a QoreProgram object
Definition: QoreNamespace.h:397
RootQoreNamespace::rootGetQoreNamespace
DLLEXPORT QoreNamespace * rootGetQoreNamespace() const
returns a pointer to the QoreNamespace for the "Qore" namespace
RootQoreNamespace::getProgram
DLLEXPORT QoreProgram * getProgram() const
Returns the owning QoreProgram object (if not the static system namespace)
RootQoreNamespace::~RootQoreNamespace
virtual DLLLOCAL ~RootQoreNamespace()
destructor is not exported in the library's public API
TypedHashDecl
typed hash declaration
Definition: TypedHashDecl.h:44
q_func_n_t
QoreValue(* q_func_n_t)(const QoreListNode *args, q_rt_flags_t flags, ExceptionSink *xsink)
the type used for builtin function signatures
Definition: common.h:307
int64
long long int64
64bit integer type, cannot use int64_t here since it breaks the API on some 64-bit systems due to equ...
Definition: common.h:260
q_external_func_t
QoreValue(* q_external_func_t)(const void *ptr, const QoreListNode *args, q_rt_flags_t flags, ExceptionSink *xsink)
the type used for builtin function signatures for external functions
Definition: common.h:319
num_params
static unsigned num_params(const QoreListNode *n)
returns the number of arguments passed to the function
Definition: params.h:54
QoreValue
The main value class in Qore, designed to be passed by value.
Definition: QoreValue.h:275