32 #ifndef _QORE_QORELISTNODE_H 34 #define _QORE_QORELISTNODE_H 36 #include <qore/AbstractQoreNode.h> 53 friend class StackList;
54 friend hashdecl qore_list_private;
61 DLLLOCAL QoreListNode& operator=(
const QoreListNode&);
67 hashdecl qore_list_private *
priv;
96 DLLEXPORT
QoreListNode(
const QoreTypeInfo* valueTypeInfo);
152 DLLEXPORT
QoreValue& getEntryReference(
size_t index);
240 DLLEXPORT QoreListNode*
copy()
const;
246 DLLEXPORT QoreListNode*
copyListFrom(
size_t index)
const;
393 DLLEXPORT
size_t size()
const;
398 DLLEXPORT
bool empty()
const;
401 DLLEXPORT QoreListNode*
reverse()
const;
433 DLLLOCAL
virtual void parseInit(
QoreValue& val, LocalVar *oflag,
int pflag,
int &lvids,
const QoreTypeInfo *&typeInfo);
436 #include <qore/ReferenceHolder.h> 470 DLLLOCAL
void *
operator new(size_t);
483 DLLEXPORT ListIterator(
QoreListNode& lst,
size_t n_pos = -1);
491 DLLEXPORT
bool next();
500 DLLEXPORT
bool prev();
508 DLLEXPORT
int set(
size_t n_pos);
513 DLLEXPORT
QoreValue getReferencedValue()
const;
521 DLLEXPORT
bool first()
const;
524 DLLEXPORT
bool last()
const;
527 DLLLOCAL
size_t index()
const {
return pos; }
530 DLLLOCAL
size_t max()
const {
return l->
size(); }
541 DLLLOCAL
bool valid()
const {
542 return pos == -1 ? false :
true;
582 DLLEXPORT ConstListIterator(
const QoreListNode& lst,
size_t n_pos = -1);
590 DLLEXPORT
bool next();
599 DLLEXPORT
bool prev();
607 DLLEXPORT
int set(
size_t n_pos);
612 DLLEXPORT
QoreValue getReferencedValue()
const;
617 DLLEXPORT
const QoreValue getValue()
const;
620 DLLEXPORT
bool first()
const;
623 DLLEXPORT
bool last()
const;
626 DLLLOCAL
size_t index()
const {
return pos; }
629 DLLLOCAL
size_t max()
const {
return l->
size(); }
640 DLLLOCAL
bool valid()
const {
641 return pos == -1 ? false :
true;
645 DLLEXPORT
void reset();
virtual DLLEXPORT const char * getTypeName() const
returns the type name as a c string
DLLEXPORT QoreListNode * sort(ExceptionSink *xsink) const
returns a new list based on quicksorting the source list ("this")
DLLEXPORT QoreValue getReferencedEntry(size_t index) const
returns the element at "index" (first element is index 0), the caller owns the reference ...
DLLEXPORT QoreValue pop()
returns the last element of the list, the length is decremented by one, caller owns the reference ...
virtual DLLLOCAL QoreValue evalImpl(bool &needs_deref, ExceptionSink *xsink) const
optionally evaluates the argument
DLLLOCAL bool isVariableList() const
this function is not exported in the qore library
DLLEXPORT QoreValue shift()
returns the first element of the list, all other entries are moved down to fill up the first position...
DLLEXPORT const QoreTypeInfo * getValueTypeInfo() const
returns the value type declaration (if set)
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...
DLLEXPORT QoreValue max(ExceptionSink *xsink) const
returns the element having the highest value (determined by calling OP_LOG_GT - the greater-than ">" ...
The base class for all value and parse types in Qore expression trees.
Definition: AbstractQoreNode.h:54
DLLEXPORT QoreValue retrieveEntry(size_t index)
returns the element at "index" (first element is index 0)
DLLEXPORT QoreListNode * splice(qore_offset_t offset)
truncates the list at position "offset" (first element is offset 0) and returns any elements removed ...
For use on the stack only: iterates through a the elements of a QoreListNode.
Definition: QoreListNode.h:464
DLLEXPORT int getEntryAsInt(size_t index) const
returns the value of element at "index" as an integer (first element is index 0)
DLLEXPORT int push(QoreValue val, ExceptionSink *xsink)
adds a value to the list
DLLEXPORT bool empty() const
returns true if the list is empty
Qore's string type supported by the QoreEncoding class.
Definition: QoreString.h:81
virtual DLLEXPORT bool getAsBoolImpl() const
returns false unless perl-boolean-evaluation is enabled, in which case it returns false only when emp...
This is the list container type in Qore, dynamically allocated only, reference counted.
Definition: QoreListNode.h:52
DLLLOCAL void setFinalized()
this function is not exported in the qore library
virtual DLLLOCAL void parseInit(QoreValue &val, LocalVar *oflag, int pflag, int &lvids, const QoreTypeInfo *&typeInfo)
for initialization of lists in the parse tree at parse time (always returns "this") ...
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...
virtual DLLEXPORT ~QoreListNode()
the destructor is protected so it cannot be called directly
virtual DLLEXPORT AbstractQoreNode * realCopy() const
returns true if the list contains parse expressions and therefore needs evaluation to return a value...
DLLEXPORT size_t size() const
returns the number of elements in the list
DLLEXPORT QoreListNode * listRefSelf() const
returns "this" with an incremented reference count
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...
DLLEXPORT QoreListNode * reverse() const
returns a list with the order of the elements reversed
DLLEXPORT QoreListNode * extract(qore_offset_t offset)
truncates the list at position "offset" (first element is offset 0) and returns any elements removed ...
DLLEXPORT QoreListNode * sortDescending(ExceptionSink *xsink) const
returns a new list based on quicksorting the source list ("this") in descending order ...
The main value class in Qore, designed to be passed by value.
Definition: QoreValue.h:262
DLLEXPORT QoreValue min(ExceptionSink *xsink) const
returns the element having the lowest value (determined by calling OP_LOG_LT - the less-than "<" oper...
DLLLOCAL void setVariableList()
this function is not exported in the qore library
container for holding Qore-language exception information and also for registering a "thread_exit" ca...
Definition: ExceptionSink.h:46
DLLEXPORT QoreListNode * evalList(ExceptionSink *xsink) const
evaluates the list and returns a value (or 0)
DLLEXPORT QoreListNode * sortStable(ExceptionSink *xsink) const
returns a new list based on executing mergesort on the source list ("this")
intptr_t qore_offset_t
used for offsets that could be negative
Definition: common.h:76
base class for resolved call references
Definition: CallReferenceNode.h:105
DLLEXPORT int merge(const QoreListNode *list, ExceptionSink *xsink)
appends the elements of "list" to this list
DLLEXPORT int setEntry(size_t index, QoreValue val, ExceptionSink *xsink)
sets the value of a list element
DLLEXPORT int insert(QoreValue val, ExceptionSink *xsink)
inserts a value in the first position of the list
DLLLOCAL bool isFinalized() const
this function is not exported in the qore library
DLLEXPORT QoreListNode * copyListFrom(size_t index) const
performs a deep copy of the list starting from element "offset" and returns the new list ...
static DLLLOCAL const char * getStaticTypeName()
returns true if the list does not contain any parse expressions, otherwise returns false ...
Definition: QoreListNode.h:148
DLLEXPORT const QoreTypeInfo * getTypeInfo() const
returns the type info structure for the current value; also works for lists with a specific value typ...
DLLEXPORT QoreListNode * sortDescendingStable(ExceptionSink *xsink) const
returns a new list based on executing mergesort on the source list ("this") in descending order ...
DLLEXPORT QoreListNode()
create an empty list
For use on the stack only: iterates through elements of a const QoreListNode.
Definition: QoreListNode.h:566
hashdecl qore_list_private * priv
this structure holds the private implementation for the type
Definition: QoreListNode.h:67
virtual DLLEXPORT bool derefImpl(ExceptionSink *xsink)
dereferences all elements of the list
DLLEXPORT QoreListNode * copy() const
performs a deep copy of the list and returns the new list