32 #ifndef _QORE_QOREVALUELIST_H 34 #define _QORE_QOREVALUELIST_H 36 #include <qore/AbstractQoreNode.h> 46 friend struct qore_value_list_private;
47 friend class QoreValueListEvalOptionalRefHolder;
54 DLLLOCAL QoreValueList& operator=(
const QoreValueList&);
60 struct qore_value_list_private*
priv;
210 DLLEXPORT
void merge(
const QoreValueList* list);
232 DLLEXPORT QoreValueList*
copy()
const;
238 DLLEXPORT QoreValueList*
copyListFrom(
size_t index)
const;
392 DLLEXPORT
size_t size()
const;
397 DLLEXPORT
bool empty()
const;
400 DLLEXPORT QoreValueList*
reverse()
const;
422 #include <qore/ReferenceHolder.h> 456 DLLLOCAL
void *
operator new(size_t);
469 DLLEXPORT ValueListIterator(
QoreValueList& lst,
size_t n_pos = -1);
477 DLLEXPORT
bool next();
486 DLLEXPORT
bool prev();
494 DLLEXPORT
int set(
size_t n_pos);
500 DLLEXPORT
QoreValue* getValueReference()
const;
503 DLLEXPORT
QoreValue getReferencedValue()
const;
506 DLLEXPORT
bool first()
const;
509 DLLEXPORT
bool last()
const;
514 DLLLOCAL
size_t index()
const {
return pos; }
517 DLLLOCAL
size_t max()
const {
return l->
size(); }
528 DLLLOCAL
bool valid()
const {
529 return pos == -1 ? false :
true;
569 DLLEXPORT ConstValueListIterator(
const QoreValueList& lst,
size_t n_pos = -1);
577 DLLEXPORT
bool next();
586 DLLEXPORT
bool prev();
594 DLLEXPORT
int set(
size_t n_pos);
597 DLLEXPORT
const QoreValue getValue()
const;
600 DLLEXPORT
QoreValue getReferencedValue()
const;
603 DLLEXPORT
bool first()
const;
606 DLLEXPORT
bool last()
const;
609 DLLLOCAL
size_t index()
const {
return pos; }
612 DLLLOCAL
size_t max()
const {
return l->
size(); }
623 DLLLOCAL
bool valid()
const {
624 return pos == -1 ? false :
true;
628 DLLEXPORT
void reset();
DLLEXPORT QoreValueList * sortDescending(ExceptionSink *xsink) const
returns a new list based on quicksorting the source list ("this") in descending order ...
DLLEXPORT QoreValue swap(ptrdiff_t offset, QoreValue val)
swaps the value at the given position with the value given, caller owns any reference returned ...
For use on the stack only: iterates through a the elements of a QoreValueList.
Definition: QoreValueList.h:450
virtual DLLEXPORT AbstractQoreNode * realCopy() const
returns true if the list contains parse expressions and therefore needs evaluation to return a value...
virtual DLLEXPORT AbstractQoreNode * evalImpl(ExceptionSink *xsink) const
evaluates the list and returns a value (or 0)
DLLEXPORT QoreValue takeExists(ptrdiff_t offset)
takes the value at the given position and replaces with NULL, only if the list position exists ...
DLLEXPORT bool empty() const
returns true if the list is empty
virtual DLLEXPORT bool is_equal_soft(const AbstractQoreNode *v, ExceptionSink *xsink) const
tests for equality ("deep compare" including all contained values) with possible type conversion (sof...
This is the list container type in Qore, dynamically allocated only, reference counted.
Definition: QoreValueList.h:45
The base class for all value and parse types in Qore expression trees.
Definition: AbstractQoreNode.h:54
virtual DLLEXPORT bool is_equal_hard(const AbstractQoreNode *v, ExceptionSink *xsink) const
tests for equality ("deep compare" including all contained values) without type conversions (hard com...
DLLLOCAL QoreListNode * getOldList() const
returns a QoreListNode object corresponding to the current list
DLLEXPORT QoreValueList * splice(ptrdiff_t offset, ExceptionSink *xsink)
truncates the list at position "offset" (first element is offset 0)
virtual DLLLOCAL int integerEvalImpl(ExceptionSink *xsink) const
always returns 0
DLLEXPORT QoreValue * getExistingEntryPtr(size_t index)
Qore's string type supported by the QoreEncoding class.
Definition: QoreString.h:82
DLLEXPORT QoreValue minValue(ExceptionSink *xsink) const
returns the element having the lowest value (determined by calling OP_LOG_LT - the less-than "<" oper...
DLLEXPORT QoreValue getReferencedEntry(size_t index) const
returns the element at "index" (first element is index 0), the caller owns the reference ...
DLLEXPORT QoreValue shift()
returns the first element of the list, all other entries are moved down to fill up the first position...
DLLEXPORT QoreValueList * sortDescendingStable(ExceptionSink *xsink) const
returns a new list based on executing mergesort on the source list ("this") in descending order ...
struct qore_value_list_private * priv
this structure holds the private implementation for the type
Definition: QoreValueList.h:60
This is the list container type in Qore, dynamically allocated only, reference counted.
Definition: QoreListNode.h:52
DLLEXPORT QoreValueList * copy() const
performs a deep copy of the list and returns the new list
DLLEXPORT const QoreTypeInfo * getTypeInfo() const
returns the type info structure for the current value; also works for lists with a specific value typ...
static DLLLOCAL const char * getStaticTypeName()
returns true if the list does not contain any parse expressions, otherwise returns false ...
Definition: QoreValueList.h:160
DLLEXPORT size_t size() const
returns the number of elements in the list
The main value class in Qore, designed to be passed by value.
Definition: QoreValue.h:112
DLLEXPORT QoreValue maxValue(ExceptionSink *xsink) const
returns the element having the highest value (determined by calling OP_LOG_GT - the greater-than ">" ...
virtual DLLLOCAL bool boolEvalImpl(ExceptionSink *xsink) const
always returns false
virtual DLLLOCAL double floatEvalImpl(ExceptionSink *xsink) const
always returns 0.0
For use on the stack only: iterates through elements of a const QoreValueList.
Definition: QoreValueList.h:553
DLLEXPORT QoreValueList * copyListFrom(size_t index) const
performs a deep copy of the list starting from element "offset" and returns the new list ...
container for holding Qore-language exception information and also for registering a "thread_exit" ca...
Definition: ExceptionSink.h:47
virtual DLLEXPORT bool getAsBoolImpl() const
returns false unless perl-boolean-evaluation is enabled, in which case it returns false only when emp...
DLLEXPORT QoreValueList * listRefSelf() const
returns "this" with an incremented reference count
DLLEXPORT void merge(const QoreValueList *list)
appends the elements of "list" to this list
DLLEXPORT QoreValueList * reverse() const
returns a list with the order of the elements reversed
DLLEXPORT QoreValueList * sort(ExceptionSink *xsink) const
returns a new list based on quicksorting the source list ("this")
virtual DLLEXPORT ~QoreValueList()
the destructor is protected so it cannot be called directly
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:241
DLLEXPORT QoreValueList * extract(ptrdiff_t offset, ExceptionSink *xsink)
truncates the list at position "offset" (first element is offset 0) and returns any elements removed ...
DLLEXPORT const QoreTypeInfo * getValueTypeInfo() const
returns the value type declaration (if set)
virtual DLLLOCAL int64 bigIntEvalImpl(ExceptionSink *xsink) const
always returns 0
base class for resolved call references
Definition: CallReferenceNode.h:130
DLLEXPORT int getAsString(QoreString &str, int foff, ExceptionSink *xsink) const
concatenate the verbose string representation of the list (including all contained values) to an exis...
DLLEXPORT QoreValue retrieveEntry(size_t index)
returns the element at "index" (first element is index 0)
DLLEXPORT QoreValueList * evalList(ExceptionSink *xsink) const
evaluates the list and returns a value (or 0)
virtual DLLEXPORT bool derefImpl(ExceptionSink *xsink)
dereferences all elements of the list
DLLEXPORT QoreValue & getEntryReference(size_t index)
virtual DLLEXPORT const char * getTypeName() const
returns the type name as a c string
DLLEXPORT QoreValueList()
creates an empty list
a templated class to manage a reference count of an object that can throw a Qore-language exception w...
Definition: ReferenceHolder.h:51
DLLEXPORT QoreValue pop()
returns the last element of the list, the length is decremented by one, caller owns the reference ...
DLLEXPORT QoreValueList * sortStable(ExceptionSink *xsink) const
returns a new list based on executing mergesort on the source list ("this")