Qore Programming Language  0.9.16
QoreLib.h
Go to the documentation of this file.
1 /* -*- mode: c++; indent-tabs-mode: nil -*- */
2 /*
3  QoreLib.h
4 
5  Qore Programming Language
6 
7  Copyright (C) 2003 - 2020 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 #ifndef _QORE_QORELIB_H
33 
34 #define _QORE_QORELIB_H
35 
36 #include <qore/common.h>
37 #include <qore/QoreThreadLock.h>
38 #include <qore/qore_bitopts.h>
39 #include <qore/safe_dslist>
40 
41 #include <cctype>
42 #include <cstdio>
43 #include <cstdlib>
44 #include <cstring>
45 #include <ctime>
46 #include <strings.h>
47 #include <sys/types.h>
48 #include <vector>
49 
51 typedef std::vector<int> sig_vec_t;
52 
57 #undef _QORE_HAS_QORE_XMLNODE_CLASS
59 
61 #undef _QORE_HAS_QORE_XMLREADER_CLASS
62 
64 #undef _QORE_HAS_QORE_XMLDOC_CLASS
65 
67 #define _QORE_HAS_HARD_TYPING 1
68 
70 #define _QORE_HAS_DBI_EXECRAW 1
71 
73 #define _QORE_HAS_TIME_ZONES 1
74 
76 #define _QORE_HAS_THREAD_RESOURCE_IDS 1
77 
79 #define _QORE_HAS_PREPARED_STATMENT_API 1
80 
82 #define _QORE_HAS_DATASOURCE_ACTIVETRANSACTION 1
83 
85 #define _QORE_HAS_DBI_SELECT_ROW 1
86 
88 #define _QORE_HAS_NUMBER_TYPE 1
89 
91 #define _QORE_HAS_PATH_IS_READABLE 1
92 
94 #define _QORE_HAS_DBI_OPTIONS 1
95 
97 #define _QORE_HAS_FIND_CREATE_TIMEZONE 1
98 
100 #define _QORE_HAS_NUMBER_CONS_WITH_PREC 1
101 
103 #define _QORE_HAS_FILE_OBJECT_HELPER 1
104 
106 #define _QORE_HAS_QUEUE_OBJECT_HELPER 1
107 
109 #define _QORE_HAS_QOREHTTPCLIENTOBJECT 1
110 
112 #define _QORE_HAS_DBI_DESCRIBE 1
113 
115 #define _QORE_HAS_DBI_EVENTS 1
116 
118 #define _QORE_HAS_QUEUE_OBJECT 1
119 
121 #define _QORE_HAS_SOCKET_PERF_API 1
122 
124 #define _QORE_HAS_QL_MIT 1
125 
127 #define _QORE_HAS_DATETIME_ADD_SECONDS_TO 1
128 
129 // qore code flags
130 #define QCF_NO_FLAGS 0
131 #define QCF_NOOP (1 << 0)
132 #define QCF_USES_EXTRA_ARGS (1 << 1)
133 #define QCF_CONSTANT_INTERN (1 << 2)
134 #define QCF_DEPRECATED (1 << 3)
135 #define QCF_RET_VALUE_ONLY (1 << 4)
136 #define QCF_RUNTIME_NOOP (1 << 5)
137 #define QCF_ABSTRACT_OVERRIDE_ALL (1 << 6)
138 
139 // composite flags
140 #define QCF_CONSTANT (QCF_CONSTANT_INTERN | QCF_RET_VALUE_ONLY)
141 
142 class BinaryNode;
143 class QoreStringNode;
144 class ExceptionSink;
145 
147 DLLEXPORT char* make_class_name(const char* fn);
148 
150 DLLEXPORT QoreStringNode* q_sprintf(const QoreListNode* params, int field, int offset, ExceptionSink* xsink);
151 
153 DLLEXPORT QoreStringNode* q_vsprintf(const QoreListNode* params, int field, int offset, ExceptionSink* xsink);
154 
156 DLLEXPORT QoreStringNode* q_sprintf(const QoreListNode* params, int field, int offset, ExceptionSink* xsink);
157 
159 DLLEXPORT hashdecl tm* q_localtime(const time_t* clock, struct tm* tms);
160 
162 DLLEXPORT hashdecl tm* q_gmtime(const time_t* clock, struct tm* tms);
163 
165 DLLEXPORT int64 q_epoch();
166 
168 DLLEXPORT int64 q_epoch_us(int &us);
169 
171 DLLEXPORT int64 q_epoch_ns(int &us);
172 
174 DLLEXPORT char* q_basename(const char* path);
175 
177 DLLEXPORT char* q_basenameptr(const char* path);
178 
180 DLLEXPORT char* q_dirname(const char* path);
181 
183 DLLEXPORT void* q_realloc(void* ptr, size_t size);
184 
185 #ifndef _Q_WINDOWS
186 DLLEXPORT QoreHashNode* q_getpwuid(uid_t uid);
188 
190 DLLEXPORT QoreHashNode* q_getpwnam(const char* name);
191 
193 DLLEXPORT QoreHashNode* q_getgrgid(uid_t uid);
194 
196 DLLEXPORT QoreHashNode* q_getgrnam(const char* name);
197 
199 
204 int q_uname2uid(const char* name, uid_t &uid);
205 
207 
212 int q_gname2gid(const char* name, gid_t &gid);
213 #endif // ! windows
214 
216 DLLEXPORT void qore_setup_argv(int pos, int argc, char* argv[]);
217 
219 DLLEXPORT qore_license_t qore_get_license();
220 
222 DLLEXPORT void qore_exit_process(int rc);
223 
225 
227 class FeatureList : public safe_dslist<std::string> {
228 private:
230  DLLLOCAL FeatureList(const FeatureList&);
231 
233  DLLLOCAL FeatureList& operator=(const FeatureList&);
234 
235 public:
237  DLLLOCAL FeatureList();
238 
240  DLLLOCAL ~FeatureList();
241 };
242 
244 DLLEXPORT extern FeatureList qoreFeatureList;
245 
247 static inline char* strchrs(const char* str, const char* chars) {
248  while (*str) {
249  if (strchr(chars, *str))
250  return (char* )str;
251  str++;
252  }
253  return 0;
254 }
255 
257 static inline char* strnchr(const char* str, int len, char c) {
258  int i = 0;
259  while (i++ != len) {
260  if (*str == c)
261  return (char* )str;
262  ++str;
263  }
264  return 0;
265 }
266 
268 static inline void strtolower(char* str) {
269  while (*(str)) {
270  (*str) = tolower(*str);
271  str++;
272  }
273 }
274 
276 static inline char* strtoupper(char* str) {
277  char* p = str;
278  while (*(p)) {
279  *p = toupper(*p);
280  p++;
281  }
282  return str;
283 }
284 
286 DLLEXPORT int getSecZeroInt(QoreValue a);
287 
289 DLLEXPORT int64 getSecZeroBigInt(QoreValue a);
290 
292 DLLEXPORT int getSecMinusOneInt(QoreValue a);
293 
296 
298 DLLEXPORT int getMsZeroInt(QoreValue a);
299 
301 DLLEXPORT int64 getMsZeroBigInt(QoreValue a);
302 
304 DLLEXPORT int getMsMinusOneInt(QoreValue a);
305 
307 DLLEXPORT int64 getMsMinusOneBigInt(QoreValue a);
308 
310 DLLEXPORT int getMicroSecZeroInt(QoreValue a);
311 
314 
316 static inline bool is_nothing(const AbstractQoreNode* n) {
317  if (!n || n->getType() == NT_NOTHING)
318  return true;
319 
320  return false;
321 }
322 
324 static inline void discard(AbstractQoreNode* n, ExceptionSink* xsink) {
325  if (n)
326  n->deref(xsink);
327 }
328 
329 static inline const char* get_type_name(const AbstractQoreNode* n) {
330  return n ? n->getTypeName() : "nothing";
331 }
332 
334 
336 DLLEXPORT const char* get_full_type_name(const AbstractQoreNode* n);
337 
338 static inline qore_type_t get_node_type(const AbstractQoreNode* n) {
339  return n ? n->getType() : NT_NOTHING;
340 }
341 
342 typedef QoreStringNode* (*qore_uncompress_to_string_t)(const BinaryNode* b, const QoreEncoding* enc, ExceptionSink* xsink);
343 
345 DLLEXPORT BinaryNode* qore_deflate(void* ptr, unsigned long len, int level, ExceptionSink* xsink);
347 DLLEXPORT QoreStringNode* qore_inflate_to_string(const BinaryNode* b, const QoreEncoding* enc, ExceptionSink* xsink);
349 DLLEXPORT BinaryNode* qore_inflate_to_binary(const BinaryNode* b, ExceptionSink* xsink);
351 DLLEXPORT BinaryNode* qore_gzip(void* ptr, unsigned long len, int level, ExceptionSink* xsink);
353 DLLEXPORT QoreStringNode* qore_gunzip_to_string(const BinaryNode* bin, const QoreEncoding* enc, ExceptionSink* xsink);
355 DLLEXPORT BinaryNode* qore_gunzip_to_binary(const BinaryNode* bin, ExceptionSink* xsink);
357 DLLEXPORT BinaryNode* qore_bzip2(void* ptr, unsigned long len, int level, ExceptionSink* xsink);
359 DLLEXPORT QoreStringNode* qore_bunzip2_to_string(const BinaryNode* bin, const QoreEncoding* enc, ExceptionSink* xsink);
361 DLLEXPORT BinaryNode* qore_bunzip2_to_binary(const BinaryNode* bin, ExceptionSink* xsink);
362 
364 DLLEXPORT BinaryNode* parseBase64(const char* buf, int len, ExceptionSink* xsink);
365 
367 DLLEXPORT BinaryNode* parseHex(const char* buf, int len, ExceptionSink* xsink);
368 
369 class AbstractQoreZoneInfo;
370 
372 DLLEXPORT const AbstractQoreZoneInfo* findCreateOffsetZone(int seconds_east);
373 
375 
380 DLLEXPORT const AbstractQoreZoneInfo* find_create_timezone(const char* name, ExceptionSink* xsink);
381 
383 DLLEXPORT int tz_get_utc_offset(const AbstractQoreZoneInfo* tz, int64 epoch_offset, bool &is_dst, const char* &zone_name);
385 DLLEXPORT bool tz_has_dst(const AbstractQoreZoneInfo* tz);
387 DLLEXPORT const char* tz_get_region_name(const AbstractQoreZoneInfo* tz);
388 
390 #define QORE_OPT_ATOMIC_OPERATIONS "atomic operations"
391 #define QORE_OPT_STACK_GUARD "stack guard"
393 #define QORE_OPT_SIGNAL_HANDLING "signal handling"
395 #define QORE_OPT_RUNTIME_STACK_TRACE "runtime stack tracing"
397 #define QORE_OPT_LIBRARY_DEBUGGING "library debugging"
399 #define QORE_OPT_SHA "openssl sha"
401 #define QORE_OPT_SHA224 "openssl sha224"
403 #define QORE_OPT_SHA256 "openssl sha256"
405 #define QORE_OPT_SHA384 "openssl sha384"
407 #define QORE_OPT_SHA512 "openssl sha512"
409 #define QORE_OPT_MDC2 "openssl mdc2"
411 #define QORE_OPT_RC5 "openssl rc5"
413 #define QORE_OPT_MD2 "openssl md2"
415 #define QORE_OPT_DSS "openssl dss"
417 #define QORE_OPT_TERMIOS "termios"
419 #define QORE_OPT_FILE_LOCKING "file locking"
421 #define QORE_OPT_UNIX_USERMGT "unix user management"
423 #define QORE_OPT_UNIX_FILEMGT "unix file management"
425 #define QORE_OPT_DETERMINISTIC_GC "deterministic GC"
427 #define QORE_OPT_FUNC_ROUND "round()"
429 #define QORE_OPT_FUNC_TIMEGM "timegm()"
431 #define QORE_OPT_FUNC_SETEUID "seteuid()"
433 #define QORE_OPT_FUNC_SETEGID "setegid()"
435 #define QORE_OPT_FUNC_SYSTEM "system()"
437 #define QORE_OPT_FUNC_KILL "kill()"
439 #define QORE_OPT_FUNC_FORK "fork()"
441 #define QORE_OPT_FUNC_GETPPID "getppid()"
443 #define QORE_OPT_FUNC_STATVFS "statvfs()"
445 #define QORE_OPT_FUNC_SETSID "setsid()"
447 #define QORE_OPT_FUNC_IS_EXECUTABLE "is_executable()"
449 #define QORE_OPT_FUNC_CLOSE_ALL_FD "close_all_fd()"
451 #define QORE_OPT_FUNC_GET_NETIF_LIST "get_netif_list()"
453 
455 #define QO_OPTION 0
456 #define QO_ALGORITHM 1
457 #define QO_FUNCTION 2
458 
460 hashdecl qore_option_s {
461  const char* option;
462  const char* constant;
463  int type;
464  bool value;
465 };
466 
468 DLLEXPORT QoreStringNode* q_strerror(int errnum);
470 DLLEXPORT void q_strerror(QoreString &str, int errnum);
471 
473 DLLEXPORT extern const qore_option_s* qore_option_list;
475 DLLEXPORT extern size_t qore_option_list_size;
476 
478 
488 DLLEXPORT QoreStringNode* qore_reassign_signal(int sig, const char* name);
489 
491 
505 DLLEXPORT QoreStringNode* qore_reassign_signals(const sig_vec_t& sig_vec, const char* name);
506 
508 
520 DLLEXPORT int qore_release_signal(int sig, const char* name);
521 
523 
530 DLLEXPORT int qore_release_signals(const sig_vec_t& sig_vec, const char* name);
531 
533 #define QORE_MAX(a, b) ((a) > (b) ? (a) : (b))
534 
536 #define QORE_MIN(a, b) ((a) < (b) ? (a) : (b))
537 
539 #define QORE_PARAM_NO_ARG QoreSimpleValue().assign(nullptr)
540 
541 // define QORE_PATH_MAX
542 #ifndef QORE_PATH_MAX
543 #ifdef _XOPEN_PATH_MAX
544 #define QORE_PATH_MAX _XOPEN_PATH_MAX
545 #else
546 #define QORE_PATH_MAX 1024
547 #endif
548 #endif
549 
551 
553 DLLEXPORT void parse_set_time_zone(const char* zone);
554 
556 DLLEXPORT int qore_usleep(int64 usecs);
557 
559 DLLEXPORT void qore_disable_gc();
560 
562 DLLEXPORT bool qore_is_gc_enabled();
563 
565 DLLEXPORT bool q_path_is_readable(const char* path);
566 
568 DLLEXPORT bool q_parse_bool(QoreValue n);
569 
571 DLLEXPORT bool q_parse_bool(const char* str);
572 
574 DLLEXPORT bool q_get_option_value(const char* opt);
575 
577 DLLEXPORT bool q_get_option_constant_value(const char* opt);
578 
580 DLLEXPORT const char* q_mode_to_perm(mode_t mode, QoreString& perm);
581 
583 int q_getcwd(QoreString& cwd);
584 
586 DLLEXPORT bool q_absolute_path_unix(const char* path);
587 
589 DLLEXPORT bool q_absolute_path_windows(const char* path);
590 
592 DLLEXPORT bool q_absolute_path(const char* path);
593 
595 DLLEXPORT void q_normalize_path(QoreString& path, const char* cwd = 0);
596 
598 DLLEXPORT int q_realpath(const QoreString& path, QoreString& rv, ExceptionSink* xsink = 0);
599 
601 DLLEXPORT void* q_memmem(const void* big, size_t big_len, const void* little, size_t little_len);
602 
604 
608 DLLEXPORT void* q_memrmem(const void* big, size_t big_len, const void* little, size_t little_len);
609 
611 
615 DLLEXPORT int q_env_subst(QoreString& str);
616 
618 
620 DLLEXPORT double q_strtod(const char* str);
621 
623 
625 DLLEXPORT bool q_libqore_initalized();
626 
628 
630 DLLEXPORT bool q_libqore_shutdown();
631 
633 
635 DLLEXPORT bool q_libqore_exiting();
636 
638 
647 DLLEXPORT QoreHashNode* q_get_thread_local_vars(int frame, ExceptionSink* xsink);
648 
650 
661 DLLEXPORT int q_set_thread_var_value(int frame, const char* name, const QoreValue& val, ExceptionSink* xsink);
662 
664 DLLEXPORT int q_get_data(const QoreValue& data, const char*& ptr, size_t& len);
665 
667 
670 
672 
675 
677 
679 DLLEXPORT const QoreTypeInfo* get_or_nothing_type_check(const QoreTypeInfo* typeInfo);
680 
682 
684 DLLEXPORT const QoreClass* qore_pseudo_get_class(qore_type_t t);
685 
687 
689 DLLEXPORT const QoreClass* qore_pseudo_get_class(const QoreTypeInfo* t);
690 
692 
695 
697 
703 DLLEXPORT void qore_set_module_option(std::string mod, std::string opt, QoreValue val);
704 
706 
713 DLLEXPORT QoreValue qore_get_module_option(std::string mod, std::string opt);
714 
715 // try to remove noise in insignificant digits from a number string
724 DLLEXPORT void qore_apply_rounding_heuristic(QoreString& str, int round_threshold_1, int round_threshold_2);
725 
727 
729 DLLEXPORT size_t q_thread_get_stack_size();
730 
732 
734 DLLEXPORT size_t q_thread_set_stack_size(size_t size, ExceptionSink* xsink);
735 
737 
739 DLLEXPORT size_t q_thread_stack_remaining();
740 
742 
744 DLLEXPORT size_t q_thread_stack_used();
745 
746 #endif // _QORE_QORELIB_H
qore_option_s
definition of the elements in the qore_option_list
Definition: QoreLib.h:460
q_basenameptr
DLLEXPORT char * q_basenameptr(const char *path)
returns a pointer within the same string
strtolower
static void strtolower(char *str)
convert a string to lower-case in place
Definition: QoreLib.h:268
strnchr
static char * strnchr(const char *str, int len, char c)
find a character in a string up to len
Definition: QoreLib.h:257
domain_bitfield_to_string_list
DLLEXPORT QoreListNode * domain_bitfield_to_string_list(int64 i, ExceptionSink *xsink)
returns a list<string> of domain strings for the given bitfield; a Qore-language exception is raised ...
qore_get_module_option
DLLEXPORT QoreValue qore_get_module_option(std::string mod, std::string opt)
get module option for the given module
q_parse_bool
DLLEXPORT bool q_parse_bool(QoreValue n)
tries to parse a boolean value - standard conversion or uses q_parse_bool(const char*) if it's a stri...
sig_vec_t
std::vector< int > sig_vec_t
signal vector
Definition: QoreLib.h:51
qoreFeatureList
DLLEXPORT FeatureList qoreFeatureList
list of qore features
QoreProgram
supports parsing and executing Qore-language code, reference counted, dynamically-allocated only
Definition: QoreProgram.h:126
QoreValue
The main value class in Qore, designed to be passed by value.
Definition: QoreValue.h:262
tz_get_region_name
const DLLEXPORT char * tz_get_region_name(const AbstractQoreZoneInfo *tz)
returns the reion name for the given time zone
AbstractQoreNode::getTypeName
virtual const DLLEXPORT char * getTypeName() const =0
returns the type name as a c string
QoreHashNode
This is the hash or associative list container type in Qore, dynamically allocated only,...
Definition: QoreHashNode.h:50
qore_release_signal
DLLEXPORT int qore_release_signal(int sig, const char *name)
releases the signal allocated to the given module
findCreateOffsetZone
const DLLEXPORT AbstractQoreZoneInfo * findCreateOffsetZone(int seconds_east)
returns a time zone for the given time zone UTC offset
qore_option_s::constant
const char * constant
name of the constant for this option
Definition: QoreLib.h:462
qore_set_module_option
DLLEXPORT void qore_set_module_option(std::string mod, std::string opt, QoreValue val)
sets a module option for the given module
qore_bunzip2_to_string
DLLEXPORT QoreStringNode * qore_bunzip2_to_string(const BinaryNode *bin, const QoreEncoding *enc, ExceptionSink *xsink)
decompresses bzip2 data to a string
qore_setup_argv
DLLEXPORT void qore_setup_argv(int pos, int argc, char *argv[])
sets up the Qore ARGV and QORE_ARGV values
q_path_is_readable
DLLEXPORT bool q_path_is_readable(const char *path)
platform-independent API that tells if the given path is readable by the current user
q_strtod
DLLEXPORT double q_strtod(const char *str)
converts a string to a double in a locale-independent way
NT_NOTHING
const qore_type_t NT_NOTHING
type value for QoreNothingNode
Definition: node_types.h:42
qore_option_s::type
int type
the type of the option
Definition: QoreLib.h:463
q_memrmem
DLLEXPORT void * q_memrmem(const void *big, size_t big_len, const void *little, size_t little_len)
finds a memory sequence in a larger memory sequence searching from the end of the sequence
QoreClass
defines a Qore-language class
Definition: QoreClass.h:239
q_dirname
DLLEXPORT char * q_dirname(const char *path)
thread-safe dirname function (resulting pointer must be free()ed)
q_absolute_path_unix
DLLEXPORT bool q_absolute_path_unix(const char *path)
returns true if the given string is an absolute path on UNIX systems
qore_disable_gc
DLLEXPORT void qore_disable_gc()
this function will cause garbage collection to be disabled
getMsZeroBigInt
DLLEXPORT int64 getMsZeroBigInt(QoreValue a)
for getting an integer number of milliseconds, with 0 as the default, from either a relative time val...
AbstractQoreNode::getType
DLLLOCAL qore_type_t getType() const
returns the data type
Definition: AbstractQoreNode.h:172
getSecZeroBigInt
DLLEXPORT int64 getSecZeroBigInt(QoreValue a)
for getting an integer number of seconds, with 0 as the default, from either a relative time value or...
QoreListNode
This is the list container type in Qore, dynamically allocated only, reference counted.
Definition: QoreListNode.h:52
q_env_subst
DLLEXPORT int q_env_subst(QoreString &str)
performs environment variable substitution on the string argument
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
parse_option_bitfield_to_string_list
DLLEXPORT QoreListNode * parse_option_bitfield_to_string_list(int64 i, ExceptionSink *xsink)
returns a list<string> of parse option strings for the given bitfield; a Qore-language exception is r...
q_get_thread_local_vars
DLLEXPORT QoreHashNode * q_get_thread_local_vars(int frame, ExceptionSink *xsink)
retrieves a hash of all thread local variables and their values for the given stack frame in the curr...
q_get_data
DLLEXPORT int q_get_data(const QoreValue &data, const char *&ptr, size_t &len)
returns the pointer and size for string or binary data (return 0); no change for other data (return -...
qore_bzip2
DLLEXPORT BinaryNode * qore_bzip2(void *ptr, unsigned long len, int level, ExceptionSink *xsink)
compresses data with bzip2
q_uname2uid
int q_uname2uid(const char *name, uid_t &uid)
thread-safe way to lookup a uid from a username
q_epoch_ns
DLLEXPORT int64 q_epoch_ns(int &us)
returns the seconds and nanoseconds from the epoch
qore_apply_rounding_heuristic
DLLEXPORT void qore_apply_rounding_heuristic(QoreString &str, int round_threshold_1, int round_threshold_2)
parse_set_time_zone
DLLEXPORT void parse_set_time_zone(const char *zone)
to set the time zone from the command line
q_thread_get_stack_size
DLLEXPORT size_t q_thread_get_stack_size()
returns the default thread stack size
parseHex
DLLEXPORT BinaryNode * parseHex(const char *buf, int len, ExceptionSink *xsink)
parses a string of hex characters and returns a BinaryNode
QoreString
Qore's string type supported by the QoreEncoding class.
Definition: QoreString.h:81
parseBase64
DLLEXPORT BinaryNode * parseBase64(const char *buf, int len, ExceptionSink *xsink)
parses a string of base64-encoded data and returns a BinaryNode
getSecMinusOneInt
DLLEXPORT int getSecMinusOneInt(QoreValue a)
for getting an integer number of seconds, with -1 as the default, from either a relative time value o...
q_thread_stack_remaining
DLLEXPORT size_t q_thread_stack_remaining()
Returns the number of bytes left in the current thread stack.
qore_get_license
DLLEXPORT qore_license_t qore_get_license()
returns the license type that the library has been initialized under
qore_license_t
qore_license_t
qore library and module license type identifiers
Definition: common.h:85
qore_gzip
DLLEXPORT BinaryNode * qore_gzip(void *ptr, unsigned long len, int level, ExceptionSink *xsink)
gzips data
q_realpath
DLLEXPORT int q_realpath(const QoreString &path, QoreString &rv, ExceptionSink *xsink=0)
normalizes the given path and resolves any symlinks
FeatureList::FeatureList
DLLLOCAL FeatureList()
initialized by the library, constructor not exported
is_nothing
static bool is_nothing(const AbstractQoreNode *n)
to check if an AbstractQoreNode object is NOTHING
Definition: QoreLib.h:316
q_memmem
DLLEXPORT void * q_memmem(const void *big, size_t big_len, const void *little, size_t little_len)
finds a memory sequence in a larger memory sequence
getSecZeroInt
DLLEXPORT int getSecZeroInt(QoreValue a)
for getting an integer number of seconds, with 0 as the default, from either a relative time value or...
qore_is_gc_enabled
DLLEXPORT bool qore_is_gc_enabled()
returns true if garbage collection is enabled, false if not
FeatureList
STL-like list containing all presently-loaded Qore features.
Definition: QoreLib.h:227
qore_gunzip_to_binary
DLLEXPORT BinaryNode * qore_gunzip_to_binary(const BinaryNode *bin, ExceptionSink *xsink)
gunzips compressed data to a binary
qore_reassign_signals
DLLEXPORT QoreStringNode * qore_reassign_signals(const sig_vec_t &sig_vec, const char *name)
allows a module to take over ownership of multiple signals atomically
q_absolute_path_windows
DLLEXPORT bool q_absolute_path_windows(const char *path)
returns true if the given string is an absolute path on Windows systems
getMicroSecZeroInt
DLLEXPORT int getMicroSecZeroInt(QoreValue a)
for getting an integer number of microseconds, with 0 as the default, from either a relative time val...
q_getpwuid
DLLEXPORT QoreHashNode * q_getpwuid(uid_t uid)
thread-safe version of getpwuid(): returns a Qore hash of the passwd information from the uid if poss...
getMicroSecZeroInt64
DLLEXPORT int64 getMicroSecZeroInt64(QoreValue a)
for getting an integer number of microseconds, with 0 as the default, from either a relative time val...
q_strerror
DLLEXPORT QoreStringNode * q_strerror(int errnum)
returns the error string as a QoreStringNode
ExceptionSink
container for holding Qore-language exception information and also for registering a "thread_exit" ca...
Definition: ExceptionSink.h:48
qore_deflate
DLLEXPORT BinaryNode * qore_deflate(void *ptr, unsigned long len, int level, ExceptionSink *xsink)
compresses data with the DEFLATE algorithm
qore_option_list_size
DLLEXPORT size_t qore_option_list_size
number of elements in the option list
q_basename
DLLEXPORT char * q_basename(const char *path)
thread-safe basename function (resulting pointer must be free()ed)
tz_has_dst
DLLEXPORT bool tz_has_dst(const AbstractQoreZoneInfo *tz)
returns true if the zone has daylight savings time ever
getMsZeroInt
DLLEXPORT int getMsZeroInt(QoreValue a)
for getting an integer number of milliseconds, with 0 as the default, from either a relative time val...
get_full_type_name
const DLLEXPORT char * get_full_type_name(const AbstractQoreNode *n)
returns a string type description of the full type of the value contained (ex: "nothing" for a null A...
q_vsprintf
DLLEXPORT QoreStringNode * q_vsprintf(const QoreListNode *params, int field, int offset, ExceptionSink *xsink)
a string formatting function that works with Qore data structures
qore_get_call_program_context
DLLEXPORT QoreProgram * qore_get_call_program_context()
returns the caller's Program context, if any
q_gname2gid
int q_gname2gid(const char *name, gid_t &gid)
thread-safe way to lookup a gid from a group name
q_getgrgid
DLLEXPORT QoreHashNode * q_getgrgid(uid_t uid)
thread-safe version of getgrgid(): returns a Qore hash of the group information from the gid if possi...
q_libqore_exiting
DLLEXPORT bool q_libqore_exiting()
returns true if the Qore library is exiting without a shutdown
qore_inflate_to_string
DLLEXPORT QoreStringNode * qore_inflate_to_string(const BinaryNode *b, const QoreEncoding *enc, ExceptionSink *xsink)
decompresses data compressed with the DEFLATE algorithm to a string
q_epoch_us
DLLEXPORT int64 q_epoch_us(int &us)
returns the seconds and microseconds from the epoch
common.h
getSecMinusOneBigInt
DLLEXPORT int64 getSecMinusOneBigInt(QoreValue a)
for getting an integer number of seconds, with -1 as the default, from either a relative time value o...
q_mode_to_perm
const DLLEXPORT char * q_mode_to_perm(mode_t mode, QoreString &perm)
concatenates UNIX-style permissions to perm and from mode and returns a string giving the file type
q_sprintf
DLLEXPORT QoreStringNode * q_sprintf(const QoreListNode *params, int field, int offset, ExceptionSink *xsink)
a string formatting function that works with Qore data structures
q_get_option_constant_value
DLLEXPORT bool q_get_option_constant_value(const char *opt)
returns the boolean value of qore library the given name of the constant for the option; false if the...
qore_usleep
DLLEXPORT int qore_usleep(int64 usecs)
use this function instead of usleep(), as usleep() is not signal-safe on some platforms (ex: Solaris ...
qore_gunzip_to_string
DLLEXPORT QoreStringNode * qore_gunzip_to_string(const BinaryNode *bin, const QoreEncoding *enc, ExceptionSink *xsink)
gunzips compressed data to a string
q_gmtime
DLLEXPORT hashdecl tm * q_gmtime(const time_t *clock, hashdecl tm *tms)
thread-safe version of "gmtime()"
q_getpwnam
DLLEXPORT QoreHashNode * q_getpwnam(const char *name)
thread-safe version of getpwnam(): returns a Qore hash of the passwd information from the username if...
qore_exit_process
DLLEXPORT void qore_exit_process(int rc)
instead of calling "exit()", call qore_exit_process() to exit without risking a crash if other thread...
qore_pseudo_get_class
const DLLEXPORT QoreClass * qore_pseudo_get_class(qore_type_t t)
returns the pseudo-class for the given type
q_thread_set_stack_size
DLLEXPORT size_t q_thread_set_stack_size(size_t size, ExceptionSink *xsink)
sets the default thread stack size or throws an exception on error
getMsMinusOneBigInt
DLLEXPORT int64 getMsMinusOneBigInt(QoreValue a)
for getting an integer number of milliseconds, with -1 as the default, from either a relative time va...
strchrs
static char * strchrs(const char *str, const char *chars)
find one of any characters in a string
Definition: QoreLib.h:247
make_class_name
DLLEXPORT char * make_class_name(const char *fn)
function to try and make a class name out of a file path, returns a new string that must be free()ed
qore_option_s::value
bool value
the value of the option
Definition: QoreLib.h:464
AbstractQoreNode::deref
DLLEXPORT void deref(ExceptionSink *xsink)
decrements the reference count and calls derefImpl() if there_can_be_only_one is false,...
q_set_thread_var_value
DLLEXPORT int q_set_thread_var_value(int frame, const char *name, const QoreValue &val, ExceptionSink *xsink)
sets the value of the given thread-local variable (which may be a closure-bound variable as well) in ...
q_libqore_shutdown
DLLEXPORT bool q_libqore_shutdown()
returns true if the Qore library has been shut down
get_or_nothing_type_check
const DLLEXPORT QoreTypeInfo * get_or_nothing_type_check(const QoreTypeInfo *typeInfo)
returns the "or nothing" type for the given type
q_get_option_value
DLLEXPORT bool q_get_option_value(const char *opt)
returns the boolean value of qore library the given option name; false if the option is unknown
q_epoch
DLLEXPORT int64 q_epoch()
returns the seconds from the epoch
qore_release_signals
DLLEXPORT int qore_release_signals(const sig_vec_t &sig_vec, const char *name)
releases multiple signals allocated to the given module atomically
qore_option_s::option
const char * option
name of the option
Definition: QoreLib.h:461
qore_reassign_signal
DLLEXPORT QoreStringNode * qore_reassign_signal(int sig, const char *name)
allows a module to take over ownership of a signal
getMsMinusOneInt
DLLEXPORT int getMsMinusOneInt(QoreValue a)
for getting an integer number of milliseconds, with -1 as the default, from either a relative time va...
qore_inflate_to_binary
DLLEXPORT BinaryNode * qore_inflate_to_binary(const BinaryNode *b, ExceptionSink *xsink)
decompresses data compressed with the DEFLATE algorithm to a binary
QoreEncoding
defines string encoding functions in Qore
Definition: QoreEncoding.h:83
BinaryNode
holds arbitrary binary data
Definition: BinaryNode.h:41
q_thread_stack_used
DLLEXPORT size_t q_thread_stack_used()
Returns the number of bytes used in the current thread stack.
strtoupper
static char * strtoupper(char *str)
convert a string to upper-case in place
Definition: QoreLib.h:276
qore_option_list
const DLLEXPORT qore_option_s * qore_option_list
list of qore options
qore_bunzip2_to_binary
DLLEXPORT BinaryNode * qore_bunzip2_to_binary(const BinaryNode *bin, ExceptionSink *xsink)
decompresses bzip2 data to a binary
q_localtime
DLLEXPORT hashdecl tm * q_localtime(const time_t *clock, hashdecl tm *tms)
thread-safe version of "localtime()"
QoreStringNode
Qore's string value type, reference counted, dynamically-allocated only.
Definition: QoreStringNode.h:50
tz_get_utc_offset
DLLEXPORT int tz_get_utc_offset(const AbstractQoreZoneInfo *tz, int64 epoch_offset, bool &is_dst, const char *&zone_name)
returns the UTC offset and local time zone name for the given time given as seconds from the epoch (1...
AbstractQoreNode
The base class for all value and parse types in Qore expression trees.
Definition: AbstractQoreNode.h:54
q_getcwd
int q_getcwd(QoreString &cwd)
returns the current working directory in the given string; -1 is returned if an error occurred,...
qore_type_t
int16_t qore_type_t
used to identify unique Qore data and parse types (descendents of AbstractQoreNode)
Definition: common.h:70
find_create_timezone
const DLLEXPORT AbstractQoreZoneInfo * find_create_timezone(const char *name, ExceptionSink *xsink)
returns a time zone for the given region name or UTC offset given as a string ("+01:00")
FeatureList::~FeatureList
DLLLOCAL ~FeatureList()
destructor not exported
discard
static void discard(AbstractQoreNode *n, ExceptionSink *xsink)
to deref an AbstractQoreNode (when the pointer may be 0)
Definition: QoreLib.h:324
q_realloc
DLLEXPORT void * q_realloc(void *ptr, size_t size)
frees memory if there is an allocation error
q_absolute_path
DLLEXPORT bool q_absolute_path(const char *path)
returns true if the given string is an absolute path on the current platform
q_normalize_path
DLLEXPORT void q_normalize_path(QoreString &path, const char *cwd=0)
normalizes the given path for the current platform in place (makes absolute, removes "....
q_getgrnam
DLLEXPORT QoreHashNode * q_getgrnam(const char *name)
thread-safe version of getgrnam(): returns a Qore hash of the group information from the group name i...
q_libqore_initalized
DLLEXPORT bool q_libqore_initalized()
returns true if the Qore library has been initialized