Qore Programming Language  0.9.1
QoreProgram Class Reference

supports parsing and executing Qore-language code, reference counted, dynamically-allocated only More...

#include <QoreProgram.h>

Inheritance diagram for QoreProgram:
Collaboration diagram for QoreProgram:

Public Member Methods

DLLEXPORT QoreProgram ()
 creates the object
 
DLLEXPORT QoreProgram (int64 parse_options)
 creates the object and sets the parse options More...
 
DLLEXPORT void addFeature (const char *name)
 manually add the feature to the program More...
 
DLLEXPORT void assignBreakpoint (QoreBreakpoint *bkpt, ExceptionSink *xsink)
 
DLLEXPORT QoreValue callFunction (const char *name, const QoreListNode *args, ExceptionSink *xsink)
 calls a function from the function name and returns the return value More...
 
DLLEXPORT bool checkAllowDebugging (ExceptionSink *xsink)
 check if program can provide debugging stuff
 
DLLEXPORT bool checkFeature (const char *f) const
 returns true if the given feature is present in the program object
 
DLLEXPORT bool checkWarning (int code) const
 returns true if the warning code is set
 
DLLEXPORT void deleteAllBreakpoints ()
 
DLLEXPORT void depDeref ()
 dereferences a weak reference for the program object More...
 
DLLEXPORT void depRef ()
 incremements the weak reference count for the program object More...
 
virtual DLLLOCAL void deref (ExceptionSink *xsink)
 dereferences the object and deletes it if the reference count reaches zero More...
 
virtual DLLLOCAL void deref ()
 dereferences the object and deletes it if the reference count reaches zero More...
 
virtual DLLEXPORT void deref (ExceptionSink *xsink)
 decrements the reference count of the object More...
 
DLLEXPORT void disableParseOptions (int po, ExceptionSink *xsink)
 turns off the parse options given in the passed mask and adds Qore-language exception information if an error occurs More...
 
DLLEXPORT void disableParseOptions (int64 po, ExceptionSink *xsink)
 turns off the parse options given in the passed mask and adds Qore-language exception information if an error occurs More...
 
DLLEXPORT int disableWarning (int code)
 disables a warning by its code More...
 
DLLEXPORT int enableWarning (int code)
 enables a warning by its code More...
 
DLLEXPORT bool existsFunction (const char *name)
 returns true if the given function exists as a user function, false if not
 
DLLEXPORT class_vec_t findAllClassesRegex (const QoreString &pattern, int re_opts, ExceptionSink *xsink) const
 returns a list of all classes that match the pattern More...
 
DLLEXPORT func_vec_t findAllFunctionsRegex (const QoreString &pattern, int re_opts, ExceptionSink *xsink) const
 returns a list of all functions that match the pattern More...
 
DLLEXPORT gvar_vec_t findAllGlobalVarsRegex (const QoreString &pattern, int re_opts, ExceptionSink *xsink) const
 returns a list of all global variables that match the pattern More...
 
DLLEXPORT hashdecl_vec_t findAllHashDeclsRegex (const QoreString &pattern, int re_opts, ExceptionSink *xsink) const
 returns a list of all typed hashes (hashdecls) that match the pattern More...
 
DLLEXPORT const_vec_t findAllNamespaceConstantsRegex (const QoreString &pattern, int re_opts, ExceptionSink *xsink) const
 returns a list of all namespace constants that match the pattern More...
 
DLLEXPORT ns_vec_t findAllNamespacesRegex (const QoreString &pattern, int re_opts, ExceptionSink *xsink) const
 returns a list of all namespaces that match the pattern More...
 
DLLEXPORT const QoreClassfindClass (const char *path, ExceptionSink *xsink) const
 search for the given class in the program; can be a simple class name or a namespace-prefixed path (ex: "NamespaceName::ClassName") More...
 
DLLEXPORT const QoreExternalFunction * findFunction (const char *path) const
 search for the given function in the program; can be a simple function name or a namespace-prefixed path (ex: "NamespaceName::function_name") More...
 
DLLEXPORT AbstractStatement * findFunctionStatement (const char *functionName, const QoreListNode *params, ExceptionSink *xsink) const
 
DLLEXPORT const QoreExternalGlobalVar * findGlobalVar (const char *path, const QoreNamespace *&pns) const
 search for the given global variable in the program; can be a simple function name or a namespace-prefixed path (ex: "NamespaceName::global_var") More...
 
DLLEXPORT const TypedHashDeclfindHashDecl (const char *path, const QoreNamespace *&pns) const
 search for the given typed hash (hashdecl) in the program; can be a simple function name or a namespace-prefixed path (ex: "NamespaceName::TypedHashName") More...
 
DLLEXPORT QoreNamespacefindNamespace (const QoreString &path)
 search for the given namespace in the program; can be a simple namespace name or a namespace-prefixed path (ex: "NamespaceName::Namespace") More...
 
DLLEXPORT const QoreNamespacefindNamespace (const QoreString &path) const
 search for the given namespace in the program; can be a simple namespace name or a namespace-prefixed path (ex: "NamespaceName::Namespace") More...
 
DLLEXPORT const QoreExternalConstantfindNamespaceConstant (const char *path, const QoreNamespace *&pns) const
 search for the given namespace constant in the program; can be a simple function name or a namespace-prefixed path (ex: "NamespaceName::MyConstant") More...
 
DLLEXPORT QoreObjectfindQoreObject () const
 find Qore script object related to QoreProgram instance
 
DLLEXPORT AbstractStatement * findStatement (const char *fileName, int line) const
 
DLLEXPORT void getBreakpoints (QoreBreakpointList_t &bkptList)
 
DLLEXPORT AbstractQoreProgramExternalDatagetExternalData (const char *owner) const
 retrieves the external data pointer More...
 
DLLEXPORT QoreListNodegetFeatureList () const
 returns a list of features in the program object
 
DLLEXPORT QoreValue getGlobalVariableVal (const char *var, bool &found) const
 returns the value of the global variable given (do not include the "$" symbol), the caller owns the reference count returned More...
 
DLLEXPORT QoreValue getGlobalVariableValue (const char *var, bool &found) const
 returns the value of the global variable given (do not include the "$" symbol), the caller owns the reference count returned More...
 
DLLEXPORT QoreHashNodegetGlobalVars () const
 retrieves a hash of global variables and their values More...
 
DLLEXPORT QoreValue getLocalVariableVal (const char *var, bool &found) const
 
DLLEXPORT int getParseOptions () const
 returns the parse options currently set for this program; DEPRECATED; use getParseOptions64() instead
 
DLLEXPORT int64 getParseOptions64 () const
 returns the parse options currently set for this program
 
DLLEXPORT unsigned getProgramId () const
 get the program id More...
 
DLLEXPORT QoreNamespacegetQoreNS () const
 returns a pointer to the "Qore" namespace
 
DLLEXPORT RootQoreNamespacegetRootNS () const
 returns a pointer to the root namespace
 
DLLEXPORT QoreStringNodegetScriptDir () const
 returns the script directory, if known (0 if not) More...
 
DLLEXPORT QoreStringNodegetScriptName () const
 returns the script file name, if known (0 if not) More...
 
DLLEXPORT QoreStringNodegetScriptPath () const
 returns the script path (directory and name), if known (0 if not) More...
 
DLLEXPORT QoreHashNodegetSourceFileNames (ExceptionSink *xsink) const
 get list of files which appears in a statement More...
 
DLLEXPORT QoreHashNodegetSourceLabels (ExceptionSink *xsink) const
 get list of labels which appears in a statement More...
 
DLLEXPORT void getStatementBreakpoints (const AbstractStatement *statement, QoreBreakpointList_t &bkptList)
 
DLLEXPORT unsigned long getStatementId (const AbstractStatement *statement) const
 get the statement id More...
 
DLLEXPORT QoreHashNodegetThreadData ()
 returns the thread-local data for the current thread and the Program object More...
 
DLLEXPORT QoreListNodegetThreadList () const
 returns a list of threads active in this Program object More...
 
DLLEXPORT QoreListNodegetUserFunctionList ()
 returns a list of all user functions in this program More...
 
DLLEXPORT int getWarningMask () const
 returns the warning mask
 
DLLEXPORT void lockOptions ()
 locks parse options so they may not be changed
 
DLLEXPORT void parse (FILE *fp, const char *name, ExceptionSink *xsink, ExceptionSink *warn_sink=0, int warn_mask=QP_WARN_ALL)
 parses code from the file given and commits changes to the QoreProgram More...
 
DLLEXPORT void parse (const QoreString *str, const QoreString *lstr, ExceptionSink *xsink, ExceptionSink *warn_sink=0, int warn_mask=QP_WARN_ALL)
 parses code from the given string and commits changes to the QoreProgram More...
 
DLLEXPORT void parse (const QoreString *str, const QoreString *lstr, ExceptionSink *xsink, ExceptionSink *warn_sink, int warn_mask, const QoreString *source, int offset)
 parses code from the given string and commits changes to the QoreProgram More...
 
DLLEXPORT void parse (const char *str, const char *lstr, ExceptionSink *xsink, ExceptionSink *warn_sink=0, int warn_mask=QP_WARN_ALL)
 parses code from the given string and commits changes to the QoreProgram More...
 
DLLEXPORT void parse (const char *str, const char *lstr, ExceptionSink *xsink, ExceptionSink *warn_sink, int warn_mask, const char *source, int offset)
 parses code from the given string and commits changes to the QoreProgram More...
 
DLLEXPORT void parseAndRun (FILE *fp, const char *name)
 parses the given file and runs the file More...
 
DLLEXPORT void parseAndRun (const char *str, const char *name)
 parses the given string and runs the code More...
 
DLLEXPORT void parseAndRunClass (FILE *fp, const char *name, const char *classname)
 parses the given file and runs the code by instantiating the class given More...
 
DLLEXPORT void parseAndRunClass (const char *str, const char *name, const char *classname)
 parses the given string and runs the code by instantiating the class given More...
 
DLLEXPORT void parseCmdLineDefines (ExceptionSink &xs, ExceptionSink &ws, int w, const std::map< std::string, std::string > &defmap)
 defines parse-time variables More...
 
DLLEXPORT void parseCommit (ExceptionSink *xsink, ExceptionSink *warn_sink=0, int warn_mask=QP_WARN_ALL)
 commits pending changes to the program More...
 
DLLEXPORT void parseDefine (const char *str, QoreValue val)
 defines a parse-time variable; call only at parse time (or before parsing) More...
 
DLLEXPORT void parseDefine (const char *str, const char *val)
 defines a parse-time variable; call only at parse time (or before parsing) More...
 
DLLEXPORT void parseDisableParseOptions (int64 po)
 disables the parse options given to the parse option mask
 
DLLEXPORT void parseFile (const char *filename, ExceptionSink *xsink, ExceptionSink *warn_sink=0, int warn_mask=QP_WARN_ALL, bool only_first_except=false)
 parses code from the file given and commits changes to the QoreProgram More...
 
DLLEXPORT void parseFileAndRun (const char *filename)
 parses the given filename and runs the file More...
 
DLLEXPORT void parseFileAndRunClass (const char *filename, const char *classname)
 parses the given filename and runs the program by instantiating the class given More...
 
DLLLOCAL const char * parseGetScriptDir () const
 returns the script directory, if known (0 if not), does not grab the parse lock, only to be called while parsing More...
 
DLLEXPORT void parsePending (const char *code, const char *label, ExceptionSink *xsink, ExceptionSink *warn_sink=0, int warn_mask=QP_WARN_ALL)
 parses code from the given string but does not commit changes to the QoreProgram More...
 
DLLEXPORT void parsePending (const char *code, const char *label, ExceptionSink *xsink, ExceptionSink *warn_sink, int warn_mask, const char *source, int offset)
 parses code from the given string but does not commit changes to the QoreProgram More...
 
DLLEXPORT void parsePending (const QoreString *str, const QoreString *lstr, ExceptionSink *xsink, ExceptionSink *warn_sink=0, int warn_mask=QP_WARN_ALL)
 parses code from the given string but does not commit changes to the QoreProgram More...
 
DLLEXPORT void parsePending (const QoreString *str, const QoreString *lstr, ExceptionSink *xsink, ExceptionSink *warn_sink, int warn_mask, const QoreString *source, int offset)
 parses code from the given string but does not commit changes to the QoreProgram More...
 
DLLEXPORT void parseRollback ()
 rolls back changes to the program object that were added with QoreProgram::parsePending() More...
 
DLLEXPORT int parseRollback (ExceptionSink *xsink)
 rolls back changes to the program object that were added with QoreProgram::parsePending() More...
 
DLLEXPORT void parseSetParseOptions (int po)
 adds the parse options given to the parse option mask; DEPRECATED: use parseSetParseOptions(int64) instead
 
DLLEXPORT void parseSetParseOptions (int64 po)
 adds the parse options given to the parse option mask
 
DLLEXPORT void parseSetTimeZone (const char *zone)
 sets the time zone during parsing More...
 
DLLEXPORT QoreProgramprogramRefSelf () const
 references "this" and returns a non-const pointer to itself
 
DLLEXPORT void registerQoreObject (QoreObject *o, ExceptionSink *xsink) const
 register link to Qore script object
 
DLLEXPORT void replaceParseOptions (int64 po, ExceptionSink *xsink)
 replaces the parse options in the program with those given by the argument; adds Qore-language exception information if an error occurs More...
 
DLLEXPORT AbstractStatement * resolveStatementId (unsigned long statementId) const
 get the statement from statement id More...
 
DLLEXPORT QoreValue run (ExceptionSink *xsink)
 runs the program (instantiates the program class if a program class has been set) and returns the return value (if any) More...
 
DLLEXPORT void runClass (const char *classname, ExceptionSink *xsink)
 instantiates the class given and runs its constructor More...
 
DLLEXPORT const AbstractQoreFunctionVariant * runtimeFindCall (const char *name, const QoreListNode *params, ExceptionSink *xsink) const
 
DLLEXPORT QoreListNoderuntimeFindCallVariants (const char *name, ExceptionSink *xsink) const
 
DLLEXPORT QoreValue runTopLevel (ExceptionSink *xsink)
 tuns the top level code and returns any return value More...
 
DLLEXPORT void setExecClass (const char *ecn=0)
 sets the name of the application class to be executed (instantiated) instead of top-level code More...
 
DLLEXPORT void setExternalData (const char *owner, AbstractQoreProgramExternalData *pud)
 sets a pointer to external data in the Program More...
 
DLLEXPORT int setGlobalVarValue (const char *name, QoreValue val, ExceptionSink *xsink)
 sets the value of the given global variable More...
 
DLLEXPORT void setParseOptions (int po, ExceptionSink *xsink)
 sets the parse options and adds Qore-language exception information if an error occurs More...
 
DLLEXPORT void setParseOptions (int64 po, ExceptionSink *xsink)
 sets the parse options and adds Qore-language exception information if an error occurs More...
 
DLLEXPORT void setScriptPath (const char *path)
 sets the script path More...
 
DLLEXPORT int setWarningMask (int wm)
 sets the warning mask More...
 
DLLEXPORT void unregisterQoreObject (QoreObject *o, ExceptionSink *xsink) const
 unregister link to Qore script object
 
DLLEXPORT void waitForTermination ()
 this call blocks until the program's last thread terminates
 
DLLEXPORT void waitForTerminationAndDeref (ExceptionSink *xsink)
 this call blocks until the program's last thread terminates, and then calls QoreProgram::deref() More...
 
- Public Member Methods inherited from AbstractPrivateData
virtual DLLLOCAL void deref ()
 decrements the reference count of the object without the possibility of throwing a Qore-language exception
 
DLLLOCAL void ref ()
 increments the reference count of the object More...
 
- Public Member Methods inherited from QoreReferenceCounter
DLLEXPORT QoreReferenceCounter ()
 creates the reference counter object
 
DLLEXPORT QoreReferenceCounter (const QoreReferenceCounter &old)
 creates a new object with a reference count of 1 More...
 
DLLEXPORT ~QoreReferenceCounter ()
 destroys the reference counter object
 
DLLEXPORT bool is_unique () const
 returns true if the reference count is 1 More...
 
DLLEXPORT int reference_count () const
 gets the reference count More...
 
DLLEXPORT bool ROdereference () const
 atomically decrements the reference count More...
 
DLLEXPORT void ROreference () const
 atomically increments the reference count
 

Static Public Member Methods

static DLLEXPORT QoreListNodegetAllQoreObjects (ExceptionSink *xsink)
 list all programs as QoreObject list
 
static DLLEXPORT QoreObjectgetQoreObject (QoreProgram *pgm)
 get QoreObject of QoreProgram
 
static DLLEXPORT QoreProgramresolveProgramId (unsigned programId)
 get the program from program id More...
 

Private Member Methods

virtual DLLLOCAL ~QoreProgram ()
 the destructor is private in order to prohibit the object from being allocated on the stack More...
 
- Private Member Methods inherited from AbstractPrivateData
virtual DLLLOCAL ~AbstractPrivateData ()
 as these objects are reference counted, the destructor should be called only when the reference count = 0 and not manually
 

Detailed Description

supports parsing and executing Qore-language code, reference counted, dynamically-allocated only

This class implements a transaction and thread-safe container for qore-language code This class implements two-layered reference counting to address problems with circular references. When a program has a global variable that contains an object that references the program... objects now reference the dependency counter, so when the object's counter reaches zero and the global variable list is deleted, then the variables will in turn dereference the program so it can be deleted.

Constructor & Destructor Documentation

◆ ~QoreProgram()

virtual DLLLOCAL QoreProgram::~QoreProgram ( )
privatevirtual

the destructor is private in order to prohibit the object from being allocated on the stack

the destructor is run when the reference count reaches 0

◆ QoreProgram()

DLLEXPORT QoreProgram::QoreProgram ( int64  parse_options)

creates the object and sets the parse options

Parameters
parse_optionsthe parse options mask for the QoreProgram object

Member Function Documentation

◆ addFeature()

DLLEXPORT void QoreProgram::addFeature ( const char *  name)

manually add the feature to the program

useful for use with module-cmd when manually merging in namespace changes to the program

Parameters
namethe name of the feature to add to the QoreProgram's feature list

◆ assignBreakpoint()

DLLEXPORT void QoreProgram::assignBreakpoint ( QoreBreakpoint bkpt,
ExceptionSink xsink 
)

Assign QoreBreakpoint instance to QoreProgram. If breakpoint has been assigned to an program then is unassigned in the first step.

◆ callFunction()

DLLEXPORT QoreValue QoreProgram::callFunction ( const char *  name,
const QoreListNode args,
ExceptionSink xsink 
)

calls a function from the function name and returns the return value

if the function does not exist, an exception is added to "xsink"

Parameters
namethe name of the function to call
argsthe argument to the function (can be nullptr)
xsinkif an error occurs, the Qore-language exception information will be added here
Returns
the value returned by the function (if any)

◆ deleteAllBreakpoints()

DLLEXPORT void QoreProgram::deleteAllBreakpoints ( )

delete all breakpoints from instance

◆ depDeref()

DLLEXPORT void QoreProgram::depDeref ( )

dereferences a weak reference for the program object

Since
Qore 0.9 public

◆ depRef()

DLLEXPORT void QoreProgram::depRef ( )

incremements the weak reference count for the program object

Since
Qore 0.9

◆ deref() [1/3]

virtual DLLLOCAL void AbstractPrivateData::deref
inline

dereferences the object and deletes it if the reference count reaches zero

do not use this function if the program may be running, use QoreProgram::waitForTerminationAndDeref() instead

Parameters
xsinkif an error occurs, the Qore-language exception information will be added here
See also
QoreProgram::waitForTerminationAndDeref()

◆ deref() [2/3]

virtual DLLLOCAL void AbstractPrivateData::deref
inline

dereferences the object and deletes it if the reference count reaches zero

do not use this function if the program may be running, use QoreProgram::waitForTerminationAndDeref() instead

Parameters
xsinkif an error occurs, the Qore-language exception information will be added here
See also
QoreProgram::waitForTerminationAndDeref()

◆ deref() [3/3]

virtual DLLEXPORT void QoreProgram::deref ( ExceptionSink xsink)
virtual

decrements the reference count of the object

Parameters
xsinkany Qore-language exception information is stored here

Reimplemented from AbstractPrivateData.

◆ disableParseOptions() [1/2]

DLLEXPORT void QoreProgram::disableParseOptions ( int  po,
ExceptionSink xsink 
)

turns off the parse options given in the passed mask and adds Qore-language exception information if an error occurs

DEPRECATED: use disableParseOptions(int64, ...) instead

Parameters
pothe parse options to subtract from the parse option mask
xsinkif an error occurs, the Qore-language exception information will be added here

◆ disableParseOptions() [2/2]

DLLEXPORT void QoreProgram::disableParseOptions ( int64  po,
ExceptionSink xsink 
)

turns off the parse options given in the passed mask and adds Qore-language exception information if an error occurs

Parameters
pothe parse options to subtract from the parse option mask
xsinkif an error occurs, the Qore-language exception information will be added here

◆ disableWarning()

DLLEXPORT int QoreProgram::disableWarning ( int  code)

disables a warning by its code

Parameters
codethe warning code to disable
Returns
0 for success, -1 for error

◆ enableWarning()

DLLEXPORT int QoreProgram::enableWarning ( int  code)

enables a warning by its code

Parameters
codethe warning code to enable
Returns
0 for success, -1 for error

◆ findAllClassesRegex()

DLLEXPORT class_vec_t QoreProgram::findAllClassesRegex ( const QoreString pattern,
int  re_opts,
ExceptionSink xsink 
) const

returns a list of all classes that match the pattern

Since
Qore 0.9

◆ findAllFunctionsRegex()

DLLEXPORT func_vec_t QoreProgram::findAllFunctionsRegex ( const QoreString pattern,
int  re_opts,
ExceptionSink xsink 
) const

returns a list of all functions that match the pattern

Since
Qore 0.9

◆ findAllGlobalVarsRegex()

DLLEXPORT gvar_vec_t QoreProgram::findAllGlobalVarsRegex ( const QoreString pattern,
int  re_opts,
ExceptionSink xsink 
) const

returns a list of all global variables that match the pattern

Since
Qore 0.9

◆ findAllHashDeclsRegex()

DLLEXPORT hashdecl_vec_t QoreProgram::findAllHashDeclsRegex ( const QoreString pattern,
int  re_opts,
ExceptionSink xsink 
) const

returns a list of all typed hashes (hashdecls) that match the pattern

Since
Qore 0.9

◆ findAllNamespaceConstantsRegex()

DLLEXPORT const_vec_t QoreProgram::findAllNamespaceConstantsRegex ( const QoreString pattern,
int  re_opts,
ExceptionSink xsink 
) const

returns a list of all namespace constants that match the pattern

Since
Qore 0.9

◆ findAllNamespacesRegex()

DLLEXPORT ns_vec_t QoreProgram::findAllNamespacesRegex ( const QoreString pattern,
int  re_opts,
ExceptionSink xsink 
) const

returns a list of all namespaces that match the pattern

Since
Qore 0.9

◆ findClass()

DLLEXPORT const QoreClass* QoreProgram::findClass ( const char *  path,
ExceptionSink xsink 
) const

search for the given class in the program; can be a simple class name or a namespace-prefixed path (ex: "NamespaceName::ClassName")

Since
Qore 0.9

◆ findFunction()

DLLEXPORT const QoreExternalFunction* QoreProgram::findFunction ( const char *  path) const

search for the given function in the program; can be a simple function name or a namespace-prefixed path (ex: "NamespaceName::function_name")

Since
Qore 0.9

◆ findFunctionStatement()

DLLEXPORT AbstractStatement* QoreProgram::findFunctionStatement ( const char *  functionName,
const QoreListNode params,
ExceptionSink xsink 
) const

find statement related to particular function

◆ findGlobalVar()

DLLEXPORT const QoreExternalGlobalVar* QoreProgram::findGlobalVar ( const char *  path,
const QoreNamespace *&  pns 
) const

search for the given global variable in the program; can be a simple function name or a namespace-prefixed path (ex: "NamespaceName::global_var")

Since
Qore 0.9

◆ findHashDecl()

DLLEXPORT const TypedHashDecl* QoreProgram::findHashDecl ( const char *  path,
const QoreNamespace *&  pns 
) const

search for the given typed hash (hashdecl) in the program; can be a simple function name or a namespace-prefixed path (ex: "NamespaceName::TypedHashName")

Since
Qore 0.9

◆ findNamespace() [1/2]

DLLEXPORT QoreNamespace* QoreProgram::findNamespace ( const QoreString path)

search for the given namespace in the program; can be a simple namespace name or a namespace-prefixed path (ex: "NamespaceName::Namespace")

Note
this function is safe to call during module initialization for the current Program (as returned by getProgram())
Since
Qore 0.9

◆ findNamespace() [2/2]

DLLEXPORT const QoreNamespace* QoreProgram::findNamespace ( const QoreString path) const

search for the given namespace in the program; can be a simple namespace name or a namespace-prefixed path (ex: "NamespaceName::Namespace")

Since
Qore 0.9

◆ findNamespaceConstant()

DLLEXPORT const QoreExternalConstant* QoreProgram::findNamespaceConstant ( const char *  path,
const QoreNamespace *&  pns 
) const

search for the given namespace constant in the program; can be a simple function name or a namespace-prefixed path (ex: "NamespaceName::MyConstant")

Since
Qore 0.9

◆ findStatement()

DLLEXPORT AbstractStatement* QoreProgram::findStatement ( const char *  fileName,
int  line 
) const

find statement related to particular line in a source file

◆ getBreakpoints()

DLLEXPORT void QoreProgram::getBreakpoints ( QoreBreakpointList_t &  bkptList)

get list of breakpoint assigned to program.

◆ getExternalData()

DLLEXPORT AbstractQoreProgramExternalData* QoreProgram::getExternalData ( const char *  owner) const

retrieves the external data pointer

Parameters
ownera unique string identifying the owner of the data; for modules this should be the module name
Returns
the data if set otherwise nullptr is returned
Since
Qore 0.8.13

◆ getGlobalVariableVal()

DLLEXPORT QoreValue QoreProgram::getGlobalVariableVal ( const char *  var,
bool &  found 
) const

returns the value of the global variable given (do not include the "$" symbol), the caller owns the reference count returned

Parameters
varthe variable name to return (do not include the "$" symbol)
foundreturns true if the variable exists, false if not
Returns
the value of the global variable given; if a non-zero pointer is returned, the caller owns the reference count returned

◆ getGlobalVariableValue()

DLLEXPORT QoreValue QoreProgram::getGlobalVariableValue ( const char *  var,
bool &  found 
) const

returns the value of the global variable given (do not include the "$" symbol), the caller owns the reference count returned

Parameters
varthe variable name to return (do not include the "$" symbol)
foundreturns true if the variable exists, false if not
Returns
the value of the global variable given; if a non-zero pointer is returned, the caller owns the reference count returned

◆ getGlobalVars()

DLLEXPORT QoreHashNode* QoreProgram::getGlobalVars ( ) const

retrieves a hash of global variables and their values

Returns
a hash of global variable information; keys are namespace-justified global variable names, values are the values
Since
Qore 0.8.13

◆ getLocalVariableVal()

DLLEXPORT QoreValue QoreProgram::getLocalVariableVal ( const char *  var,
bool &  found 
) const

returns the value of the local variable given (do not include the "$" symbol), the caller owns the reference count returned The variable is related to current frame. This function can be executed only when program is stopped

Parameters
varthe variable name to return (do not include the "$" symbol)
foundreturns true if the variable exists, false if not
Returns
the value of the global variable given; if a non-zero pointer is returned, the caller owns the reference count returned

◆ getProgramId()

DLLEXPORT unsigned QoreProgram::getProgramId ( ) const

get the program id

Returns
the program id

◆ getScriptDir()

DLLEXPORT QoreStringNode* QoreProgram::getScriptDir ( ) const

returns the script directory, if known (0 if not)

Returns
the script directory, if known (0 if not)

◆ getScriptName()

DLLEXPORT QoreStringNode* QoreProgram::getScriptName ( ) const

returns the script file name, if known (0 if not)

Returns
the script file name, if known (0 if not)

◆ getScriptPath()

DLLEXPORT QoreStringNode* QoreProgram::getScriptPath ( ) const

returns the script path (directory and name), if known (0 if not)

Returns
the script path (directory and name), if known (0 if not)

◆ getSourceFileNames()

DLLEXPORT QoreHashNode* QoreProgram::getSourceFileNames ( ExceptionSink xsink) const

get list of files which appears in a statement

Returns
hash where the key is file name and value is hash where the key value is label and the value is label's section offset in the file

◆ getSourceLabels()

DLLEXPORT QoreHashNode* QoreProgram::getSourceLabels ( ExceptionSink xsink) const

get list of labels which appears in a statement

Returns
hash where the key is label name and value is hash where the key is file and the value is label's section offset in the file

◆ getStatementBreakpoints()

DLLEXPORT void QoreProgram::getStatementBreakpoints ( const AbstractStatement *  statement,
QoreBreakpointList_t &  bkptList 
)

get list of breakpoint assigned to statement.

◆ getStatementId()

DLLEXPORT unsigned long QoreProgram::getStatementId ( const AbstractStatement *  statement) const

get the statement id

Parameters
statementMUST be statement of this Program instance!
Returns
the statement id which consist of pointer to both program and statement instances

◆ getThreadData()

DLLEXPORT QoreHashNode* QoreProgram::getThreadData ( )

returns the thread-local data for the current thread and the Program object

will always be non-nullptr if the thread is registered

Since
Qore 0.9

◆ getThreadList()

DLLEXPORT QoreListNode* QoreProgram::getThreadList ( ) const

returns a list of threads active in this Program object

Returns
a list of threads active in this Program object
Since
Qore 0.8.13

◆ getUserFunctionList()

DLLEXPORT QoreListNode* QoreProgram::getUserFunctionList ( )

returns a list of all user functions in this program

Returns
a list of all user functions in this program; returns 0 only if the Program is being destroyed, otherwise returns an empty list

◆ parse() [1/5]

DLLEXPORT void QoreProgram::parse ( FILE *  fp,
const char *  name,
ExceptionSink xsink,
ExceptionSink warn_sink = 0,
int  warn_mask = QP_WARN_ALL 
)

parses code from the file given and commits changes to the QoreProgram

Note
will also commit any pending changes added with QoreProgram::parsePending()
Parameters
fpthe filename to parse
namethe name of the file being parsed and run
xsinkif an error occurs, the Qore-language exception information will be added here
warn_sinkif a warning is raised, the warning information will be added here
warn_maskthe warning mask to set (-1 sets all possible warnings)

◆ parse() [2/5]

DLLEXPORT void QoreProgram::parse ( const QoreString str,
const QoreString lstr,
ExceptionSink xsink,
ExceptionSink warn_sink = 0,
int  warn_mask = QP_WARN_ALL 
)

parses code from the given string and commits changes to the QoreProgram

Note
will also commit any pending changes added with QoreProgram::parsePending()
Parameters
strthe code to parse
lstrthe label of the code being parsed to be used as a file name
xsinkif an error occurs, the Qore-language exception information will be added here
warn_sinkif a warning is raised, the warning information will be added here
warn_maskthe warning mask to set (-1 sets all possible warnings)

◆ parse() [3/5]

DLLEXPORT void QoreProgram::parse ( const QoreString str,
const QoreString lstr,
ExceptionSink xsink,
ExceptionSink warn_sink,
int  warn_mask,
const QoreString source,
int  offset 
)

parses code from the given string and commits changes to the QoreProgram

Note
will also commit any pending changes added with QoreProgram::parsePending()
Parameters
strthe code to parse
lstrthe label of the code being parsed to be used as a file name
xsinkif an error occurs, the Qore-language exception information will be added here
warn_sinkif a warning is raised, the warning information will be added here (0 = no warnings)
warn_maskthe warning mask to set (-1 sets all possible warnings)
sourcethe source file name (if lstr is a label representing a section of a file for example)
offsetthe line offset from the label to the file

◆ parse() [4/5]

DLLEXPORT void QoreProgram::parse ( const char *  str,
const char *  lstr,
ExceptionSink xsink,
ExceptionSink warn_sink = 0,
int  warn_mask = QP_WARN_ALL 
)

parses code from the given string and commits changes to the QoreProgram

Note
will also commit any pending changes added with QoreProgram::parsePending()
Parameters
strthe code to parse; the encoding of the string is assumed to be QCS_DEFAULT
lstrthe label of the code being parsed to be used as a file name
xsinkif an error occurs, the Qore-language exception information will be added here
warn_sinkif a warning is raised, the warning information will be added here (0 = no warnings)
warn_maskthe warning mask to set (-1 sets all possible warnings)

◆ parse() [5/5]

DLLEXPORT void QoreProgram::parse ( const char *  str,
const char *  lstr,
ExceptionSink xsink,
ExceptionSink warn_sink,
int  warn_mask,
const char *  source,
int  offset 
)

parses code from the given string and commits changes to the QoreProgram

Note
will also commit any pending changes added with QoreProgram::parsePending()
Parameters
strthe code to parse; the encoding of the string is assumed to be QCS_DEFAULT
lstrthe label of the code being parsed to be used as a file name
xsinkif an error occurs, the Qore-language exception information will be added here
warn_sinkif a warning is raised, the warning information will be added here (0 = no warnings)
warn_maskthe warning mask to set (-1 sets all possible warnings)
sourcethe source file name (if lstr is a label representing a section of a file for example)
offsetthe line offset from the label to the file

◆ parseAndRun() [1/2]

DLLEXPORT void QoreProgram::parseAndRun ( FILE *  fp,
const char *  name 
)

parses the given file and runs the file

the default exception handler is run on any Qore-language exceptions raised while parsing and executing the file.

Note
any threads started by this call will continue running in the background, to wait for them to terminate, call QoreProgram::waitForTermination() or QoreProgram::waitForTerminationAndDeref()
will also commit any pending changes added with QoreProgram::parsePending()
Parameters
fpthe filename to run
namethe name of the file being parsed and run

◆ parseAndRun() [2/2]

DLLEXPORT void QoreProgram::parseAndRun ( const char *  str,
const char *  name 
)

parses the given string and runs the code

The default exception handler is run on any Qore-language exceptions raised while parsing and executing the code.

Note
any threads started by this call will continue running in the background, to wait for them to terminate, call QoreProgram::waitForTermination() or QoreProgram::waitForTerminationAndDeref()
will also commit any pending changes added with QoreProgram::parsePending()
Parameters
strthe Qore-language code to parse and run
namethe label of the code being parsed and run (used as the file name)

◆ parseAndRunClass() [1/2]

DLLEXPORT void QoreProgram::parseAndRunClass ( FILE *  fp,
const char *  name,
const char *  classname 
)

parses the given file and runs the code by instantiating the class given

The default exception handler is run on any Qore-language exceptions raised while parsing and executing the file.

Note
any threads started by this call will continue running in the background, to wait for them to terminate, call QoreProgram::waitForTermination() or QoreProgram::waitForTerminationAndDeref()
will also commit any pending changes added with QoreProgram::parsePending()
Parameters
fpthe filename to run
namethe name of the file being parsed and run
classnamethe name of the class to instantiate

◆ parseAndRunClass() [2/2]

DLLEXPORT void QoreProgram::parseAndRunClass ( const char *  str,
const char *  name,
const char *  classname 
)

parses the given string and runs the code by instantiating the class given

The default exception handler is run on any Qore-language exceptions raised while parsing and executing the code.

Note
any threads started by this call will continue running in the background, to wait for them to terminate, call QoreProgram::waitForTermination() or QoreProgram::waitForTerminationAndDeref()
will also commit any pending changes added with QoreProgram::parsePending()
Parameters
strthe Qore-language code to parse and run
namethe label of the code being parsed and run (used as the file name)
classnamethe name of the class to instantiate

◆ parseCmdLineDefines()

DLLEXPORT void QoreProgram::parseCmdLineDefines ( ExceptionSink xs,
ExceptionSink ws,
int  w,
const std::map< std::string, std::string > &  defmap 
)

defines parse-time variables

Parameters
xsexception sink for errors
wsexception sink for warnings
wwarning mask
defmapa map of variable names to values

◆ parseCommit()

DLLEXPORT void QoreProgram::parseCommit ( ExceptionSink xsink,
ExceptionSink warn_sink = 0,
int  warn_mask = QP_WARN_ALL 
)

commits pending changes to the program

See also
QoreProgram::parsePending()
QoreProgram::parseRollback()

◆ parseDefine() [1/2]

DLLEXPORT void QoreProgram::parseDefine ( const char *  str,
QoreValue  val 
)

defines a parse-time variable; call only at parse time (or before parsing)

Parameters
strthe name of the variable
valthe value of the variable; may be 0; if non-0, then the QoreProgram object assumes ownership of the reference
Note
if this function is called at runtime it could cause a crash
See also
runtimeDefine()

◆ parseDefine() [2/2]

DLLEXPORT void QoreProgram::parseDefine ( const char *  str,
const char *  val 
)

defines a parse-time variable; call only at parse time (or before parsing)

Parameters
strthe name of the variable
vala string value that will be parsed and converted to a qore value
Note
if this function is called at runtime it could cause a crash
See also
runtimeDefine()

◆ parseFile()

DLLEXPORT void QoreProgram::parseFile ( const char *  filename,
ExceptionSink xsink,
ExceptionSink warn_sink = 0,
int  warn_mask = QP_WARN_ALL,
bool  only_first_except = false 
)

parses code from the file given and commits changes to the QoreProgram

Also sets the script path.

Note
will also commit any pending changes added with QoreProgram::parsePending()
Parameters
filenamethe filename to open and parse
xsinkif an error occurs, the Qore-language exception information will be added here
warn_sinkif a warning is raised, the warning information will be added here (0 = no warnings)
warn_maskthe warning mask to set (-1 sets all possible warnings)
only_first_exceptis flag to stop parsing exceptions printing after 1st exception

◆ parseFileAndRun()

DLLEXPORT void QoreProgram::parseFileAndRun ( const char *  filename)

parses the given filename and runs the file

any errors opening the file are added as Qore-language exceptions the default exception handler is run on any Qore-language exceptions raised during opening, parsing, and executing the file.

Note
any threads started by this call will continue running in the background, to wait for them to terminate, call QoreProgram::waitForTermination() or QoreProgram::waitForTerminationAndDeref(). Also sets the script path.
will also commit any pending changes added with QoreProgram::parsePending()
Parameters
filenamethe filename to run

◆ parseFileAndRunClass()

DLLEXPORT void QoreProgram::parseFileAndRunClass ( const char *  filename,
const char *  classname 
)

parses the given filename and runs the program by instantiating the class given

Any errors opening the file are added as Qore-language exceptions. The default exception handler is run on any Qore-language exceptions raised during opening, parsing, and executing the file.

Note
any threads started by this call will continue running in the background, to wait for them to terminate, call QoreProgram::waitForTermination() or QoreProgram::waitForTerminationAndDeref(). Also sets the script path.
will also commit any pending changes added with QoreProgram::parsePending()
Parameters
filenamethe filename to run
classnamethe name of the class to instantiate

◆ parseGetScriptDir()

DLLLOCAL const char* QoreProgram::parseGetScriptDir ( ) const

returns the script directory, if known (0 if not), does not grab the parse lock, only to be called while parsing

Returns
the script directory, if known (0 if not)

◆ parsePending() [1/4]

DLLEXPORT void QoreProgram::parsePending ( const char *  code,
const char *  label,
ExceptionSink xsink,
ExceptionSink warn_sink = 0,
int  warn_mask = QP_WARN_ALL 
)

parses code from the given string but does not commit changes to the QoreProgram

Parameters
codethe code to parse; the encoding of the string is assumed to be QCS_DEFAULT
labelthe label of the code being parsed to be used as a file name
xsinkif an error occurs, the Qore-language exception information will be added here
warn_sinkif a warning is raised, the warning information will be added here (0 = no warnings)
warn_maskthe warning mask to set (-1 sets all possible warnings)
See also
QoreProgram::parseCommit()
QoreProgram::parseRollback()

◆ parsePending() [2/4]

DLLEXPORT void QoreProgram::parsePending ( const char *  code,
const char *  label,
ExceptionSink xsink,
ExceptionSink warn_sink,
int  warn_mask,
const char *  source,
int  offset 
)

parses code from the given string but does not commit changes to the QoreProgram

Parameters
codethe code to parse; the encoding of the string is assumed to be QCS_DEFAULT
labelthe label of the code being parsed to be used as a file name
xsinkif an error occurs, the Qore-language exception information will be added here
warn_sinkif a warning is raised, the warning information will be added here (0 = no warnings)
warn_maskthe warning mask to set (-1 sets all possible warnings)
sourcethe source file name (if lstr is a label representing a section of a file for example)
offsetthe line offset from the label to the file
See also
QoreProgram::parseCommit()
QoreProgram::parseRollback()

◆ parsePending() [3/4]

DLLEXPORT void QoreProgram::parsePending ( const QoreString str,
const QoreString lstr,
ExceptionSink xsink,
ExceptionSink warn_sink = 0,
int  warn_mask = QP_WARN_ALL 
)

parses code from the given string but does not commit changes to the QoreProgram

Parameters
strthe code to parse
lstrthe label of the code being parsed to be used as a file name
xsinkif an error occurs, the Qore-language exception information will be added here
warn_sinkif a warning is raised, the warning information will be added here (0 = no warnings)
warn_maskthe warning mask to set (-1 sets all possible warnings)
See also
QoreProgram::parseCommit()
QoreProgram::parseRollback()

◆ parsePending() [4/4]

DLLEXPORT void QoreProgram::parsePending ( const QoreString str,
const QoreString lstr,
ExceptionSink xsink,
ExceptionSink warn_sink,
int  warn_mask,
const QoreString source,
int  offset 
)

parses code from the given string but does not commit changes to the QoreProgram

Parameters
strthe code to parse
lstrthe label of the code being parsed to be used as a file name
xsinkif an error occurs, the Qore-language exception information will be added here
warn_sinkif a warning is raised, the warning information will be added here (0 = no warnings)
warn_maskthe warning mask to set (-1 sets all possible warnings)
sourcethe source file name (if lstr is a label representing a section of a file for example)
offsetthe line offset from the label to the file
See also
QoreProgram::parseCommit()
QoreProgram::parseRollback()

◆ parseRollback() [1/2]

DLLEXPORT void QoreProgram::parseRollback ( )

rolls back changes to the program object that were added with QoreProgram::parsePending()

See also
QoreProgram::parsePending()
QoreProgram::parseCommit()
Deprecated:
use parseRollback(ExceptionSink*) instead; exceptions raised with this version cannot be caught

◆ parseRollback() [2/2]

DLLEXPORT int QoreProgram::parseRollback ( ExceptionSink xsink)

rolls back changes to the program object that were added with QoreProgram::parsePending()

a Qore-language exception could be raised if the parse lock could not be acquired (Program has running threads)

See also
QoreProgram::parsePending()
QoreProgram::parseCommit()

◆ parseSetTimeZone()

DLLEXPORT void QoreProgram::parseSetTimeZone ( const char *  zone)

sets the time zone during parsing

Parameters
zonecan be either a region name (ex: 'Europe/Prague') or a UTC offset in the format SDD[:DD[:DD]] where S is + or - and D is an integer 0 - 9; the ':' characters are optional
Note
do not call this function if there are any running threads; a crash could result

◆ replaceParseOptions()

DLLEXPORT void QoreProgram::replaceParseOptions ( int64  po,
ExceptionSink xsink 
)

replaces the parse options in the program with those given by the argument; adds Qore-language exception information if an error occurs

An exception will be raised if the calling program does not have PO_NO_CHILD_PO_RESTRICTIONS set

Parameters
pothe parse options to add to the parse option mask
xsinkif an error occurs, the Qore-language exception information will be added here

◆ resolveProgramId()

static DLLEXPORT QoreProgram* QoreProgram::resolveProgramId ( unsigned  programId)
static

get the program from program id

Parameters
programIdprovided by QoreProgram::getProgramId
Returns
the original program or null if program cannot be resolved

◆ resolveStatementId()

DLLEXPORT AbstractStatement* QoreProgram::resolveStatementId ( unsigned long  statementId) const

get the statement from statement id

Parameters
statementIdcreated by QoreProgram::getStatementId
Returns
the original statement or null if statement cannot be resolved

◆ run()

DLLEXPORT QoreValue QoreProgram::run ( ExceptionSink xsink)

runs the program (instantiates the program class if a program class has been set) and returns the return value (if any)

Note
if the program is run as a class it's not possible to return a value
any threads started by this call will continue running in the background, to wait for them to terminate, call QoreProgram::waitForTermination() or QoreProgram::waitForTerminationAndDeref()
See also
QoreProgram::setExecClass()
Parameters
xsinkif an error occurs, the Qore-language exception information will be added here
Returns
the value returned by the final return statement (if any)

◆ runClass()

DLLEXPORT void QoreProgram::runClass ( const char *  classname,
ExceptionSink xsink 
)

instantiates the class given and runs its constructor

Note
any threads started by this call will continue running in the background, to wait for them to terminate, call QoreProgram::waitForTermination() or QoreProgram::waitForTerminationAndDeref()
will also commit any pending changes added with QoreProgram::parsePending()
Parameters
classnamethe name of the class to instantiate
xsinkif an error occurs, the Qore-language exception information will be added here

◆ runtimeFindCall()

DLLEXPORT const AbstractQoreFunctionVariant* QoreProgram::runtimeFindCall ( const char *  name,
const QoreListNode params,
ExceptionSink xsink 
) const
Parameters
namethe function or class method name; may also be namespace-justified
paramsa list of string parameters giving the types to match
xsinkany errors finding the code are stored as Qore-language exceptions here; possible errors are as follows:
  • FIND-CALL-ERROR: name cannot be resolved, invalid parameter (member of params has a non-string value, string cannot be resolved to a valid type)
  • INVALID-FUNCTION-ACCESS: the resolved code is not accessible in the current QoreProgram's context
Since
Qore 0.8.13

◆ runtimeFindCallVariants()

DLLEXPORT QoreListNode* QoreProgram::runtimeFindCallVariants ( const char *  name,
ExceptionSink xsink 
) const
Parameters
namethe function or class method name; may also be namespace-justified
xsinkif an error occurs, the Qore-language exception information will be added here
Returns
a list of hashes or nullptr if the name cannot be resolved; when matched, each hash element has the following keys:
  • desc: a string description of the call which includes the name and the full text call signature
  • params: a QoreListNode object that gives the params in a format that can be used by runtimeFindCall()
Note
the caller owns the reference count returned for non-nullptr values
Since
Qore 0.8.13

◆ runTopLevel()

DLLEXPORT QoreValue QoreProgram::runTopLevel ( ExceptionSink xsink)

tuns the top level code and returns any return value

Note
any threads started by this call will continue running in the background, to wait for them to terminate, call QoreProgram::waitForTermination() or QoreProgram::waitForTerminationAndDeref()
Parameters
xsinkif an error occurs, the Qore-language exception information will be added here
Returns
the value returned by the final return statement (if any)

◆ setExecClass()

DLLEXPORT void QoreProgram::setExecClass ( const char *  ecn = 0)

sets the name of the application class to be executed (instantiated) instead of top-level code

normally parse option PO_NO_TOP_LEVEL_STATEMENTS should be set as well

Note
the string passed here will copied
Parameters
ecnthe name of the class to be executed as the program class
See also
QoreProgram::parseSetParseOptions()

◆ setExternalData()

DLLEXPORT void QoreProgram::setExternalData ( const char *  owner,
AbstractQoreProgramExternalData pud 
)

sets a pointer to external data in the Program

Parameters
ownera unique string identifying the owner of the data; for modules this should be the module name
pudthe external data
Since
Qore 0.8.13

◆ setGlobalVarValue()

DLLEXPORT int QoreProgram::setGlobalVarValue ( const char *  name,
QoreValue  val,
ExceptionSink xsink 
)

sets the value of the given global variable

Parameters
namethe name of the variable
valthe value to assign; the value must be already referenced for the assignment and will be dereferenced if the assignment fails
xsinkfor Qore-language exceptions
Returns
0 for OK, -1 if an exception was raised
Since
Qore 0.8.13

◆ setParseOptions() [1/2]

DLLEXPORT void QoreProgram::setParseOptions ( int  po,
ExceptionSink xsink 
)

sets the parse options and adds Qore-language exception information if an error occurs

DEPRECATED: use setParseOptions(int64, ...)

Parameters
pothe parse options to add to the parse option mask
xsinkif an error occurs, the Qore-language exception information will be added here

◆ setParseOptions() [2/2]

DLLEXPORT void QoreProgram::setParseOptions ( int64  po,
ExceptionSink xsink 
)

sets the parse options and adds Qore-language exception information if an error occurs

Parameters
pothe parse options to add to the parse option mask
xsinkif an error occurs, the Qore-language exception information will be added here

◆ setScriptPath()

DLLEXPORT void QoreProgram::setScriptPath ( const char *  path)

sets the script path

Parameters
paththe directory and filename of the script (set to 0 to clear)

◆ setWarningMask()

DLLEXPORT int QoreProgram::setWarningMask ( int  wm)

sets the warning mask

Parameters
wmthe new warning mask
Returns
0 for success, -1 for error

◆ waitForTerminationAndDeref()

DLLEXPORT void QoreProgram::waitForTerminationAndDeref ( ExceptionSink xsink)

this call blocks until the program's last thread terminates, and then calls QoreProgram::deref()

Parameters
xsinkif an error occurs, the Qore-language exception information will be added here

The documentation for this class was generated from the following file: