Qore Programming Language  0.9.16
QoreListNode Class Reference

This is the list container type in Qore, dynamically allocated only, reference counted. More...

#include <QoreListNode.h>

Inheritance diagram for QoreListNode:
Collaboration diagram for QoreListNode:

Public Member Methods

DLLEXPORT QoreListNode ()
 create an empty list
 
DLLLOCAL QoreListNode (bool i)
 this function is not exported in the qore library
 
DLLEXPORT QoreListNode (const QoreTypeInfo *valueTypeInfo)
 creates an empty list with the given value type
 
DLLEXPORT QoreListNodecopy () const
 performs a deep copy of the list and returns the new list
 
DLLEXPORT QoreListNodecopyListFrom (size_t index) const
 performs a deep copy of the list starting from element "offset" and returns the new list More...
 
DLLEXPORT bool empty () const
 returns true if the list is empty More...
 
DLLEXPORT QoreListNodeevalList (bool &needs_deref, ExceptionSink *xsink) const
 optionally evaluates the list More...
 
DLLEXPORT QoreListNodeevalList (ExceptionSink *xsink) const
 evaluates the list and returns a value (or 0) More...
 
DLLEXPORT QoreListNodeextract (qore_offset_t offset)
 truncates the list at position "offset" (first element is offset 0) and returns any elements removed from the list as a new list More...
 
DLLEXPORT QoreListNodeextract (qore_offset_t offset, qore_offset_t length)
 removes "length" elements at position "offset" (first element is offset 0) and returns any elements removed from the list as a new list More...
 
DLLEXPORT QoreListNodeextract (qore_offset_t offset, qore_offset_t length, const QoreValue l, ExceptionSink *xsink)
 adds a single value or a list of values ("l") to list possition "offset", while removing "length" elements and returns any elements removed from the list as a new list More...
 
virtual DLLEXPORT bool getAsBoolImpl () const
 returns false unless perl-boolean-evaluation is enabled, in which case it returns false only when empty More...
 
DLLEXPORT QoreStringgetAsString (bool &del, int foff, ExceptionSink *xsink) const
 returns a QoreString giving the verbose string representation of the List (including all contained values) More...
 
DLLEXPORT int getAsString (QoreString &str, int foff, ExceptionSink *xsink) const
 concatenate the verbose string representation of the list (including all contained values) to an existing QoreString More...
 
DLLEXPORT int getEntryAsInt (size_t index) const
 returns the value of element at "index" as an integer (first element is index 0) More...
 
DLLEXPORT QoreValue getReferencedEntry (size_t index) const
 returns the element at "index" (first element is index 0), the caller owns the reference More...
 
const DLLEXPORT QoreTypeInfo * getTypeInfo () const
 returns the type info structure for the current value; also works for lists with a specific value type More...
 
virtual const DLLEXPORT char * getTypeName () const
 returns the type name as a c string
 
const DLLEXPORT QoreTypeInfo * getValueTypeInfo () const
 returns the value type declaration (if set) More...
 
DLLEXPORT int insert (QoreValue val, ExceptionSink *xsink)
 inserts a value in the first position of the list More...
 
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 compare) More...
 
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 (soft compare) More...
 
DLLLOCAL bool isFinalized () const
 this function is not exported in the qore library
 
DLLLOCAL bool isVariableList () const
 this function is not exported in the qore library
 
DLLEXPORT QoreListNodelistRefSelf () const
 returns "this" with an incremented reference count
 
DLLEXPORT QoreValue max (const ResolvedCallReferenceNode *fr, ExceptionSink *xsink) const
 returns the element having the highest value (determined by calling the function reference passed to give lexical order) More...
 
DLLEXPORT QoreValue max (ExceptionSink *xsink) const
 returns the element having the highest value (determined by calling OP_LOG_GT - the greater-than ">" operator) More...
 
DLLEXPORT int merge (const QoreListNode *list, ExceptionSink *xsink)
 appends the elements of "list" to this list More...
 
DLLEXPORT QoreValue min (const ResolvedCallReferenceNode *fr, ExceptionSink *xsink) const
 returns the element having the lowest value (determined by calling the function reference passed to give lexical order) More...
 
DLLEXPORT QoreValue min (ExceptionSink *xsink) const
 returns the element having the lowest value (determined by calling OP_LOG_LT - the less-than "<" operator) More...
 
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 QoreValue pop ()
 returns the last element of the list, the length is decremented by one, caller owns the reference More...
 
DLLEXPORT int push (QoreValue val, ExceptionSink *xsink)
 adds a value to the list More...
 
virtual DLLEXPORT AbstractQoreNoderealCopy () const
 returns true if the list contains parse expressions and therefore needs evaluation to return a value, false if not More...
 
DLLEXPORT QoreValue retrieveEntry (size_t index)
 returns the element at "index" (first element is index 0) More...
 
const DLLEXPORT QoreValue retrieveEntry (size_t index) const
 returns the element at "index" (first element is index 0) More...
 
DLLEXPORT QoreListNodereverse () const
 returns a list with the order of the elements reversed
 
DLLEXPORT int setEntry (size_t index, QoreValue val, ExceptionSink *xsink)
 sets the value of a list element More...
 
DLLLOCAL void setFinalized ()
 this function is not exported in the qore library
 
DLLLOCAL void setVariableList ()
 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, caller owns the reference More...
 
DLLEXPORT size_t size () const
 returns the number of elements in the list More...
 
DLLEXPORT QoreListNodesort (const ResolvedCallReferenceNode *fr, ExceptionSink *xsink) const
 returns a new list based on quicksorting the source list ("this") using the passed function reference to determine lexical order More...
 
DLLEXPORT QoreListNodesort (ExceptionSink *xsink) const
 returns a new list based on quicksorting the source list ("this") More...
 
DLLEXPORT QoreListNodesortDescending (const ResolvedCallReferenceNode *fr, ExceptionSink *xsink) const
 returns a new list based on quicksorting the source list ("this") in descending order, using the passed function reference to determine lexical order More...
 
DLLEXPORT QoreListNodesortDescending (ExceptionSink *xsink) const
 returns a new list based on quicksorting the source list ("this") in descending order More...
 
DLLEXPORT QoreListNodesortDescendingStable (const ResolvedCallReferenceNode *fr, ExceptionSink *xsink) const
 returns a new list based on executing mergesort on the source list ("this") in descending order, using the passed function reference to determine lexical order More...
 
DLLEXPORT QoreListNodesortDescendingStable (ExceptionSink *xsink) const
 returns a new list based on executing mergesort on the source list ("this") in descending order More...
 
DLLEXPORT QoreListNodesortStable (const ResolvedCallReferenceNode *fr, ExceptionSink *xsink) const
 returns a new list based on executing mergesort on the source list ("this") using the passed function reference to determine lexical order More...
 
DLLEXPORT QoreListNodesortStable (ExceptionSink *xsink) const
 returns a new list based on executing mergesort on the source list ("this") More...
 
DLLEXPORT QoreListNodesplice (qore_offset_t offset)
 truncates the list at position "offset" (first element is offset 0) and returns any elements removed from the list as a new list More...
 
DLLEXPORT QoreListNodesplice (qore_offset_t offset, qore_offset_t length)
 removes "length" elements at position "offset" (first element is offset 0) and returns any elements removed from the list as a new list More...
 
DLLEXPORT QoreListNodesplice (qore_offset_t offset, qore_offset_t length, const QoreValue l, ExceptionSink *xsink)
 adds a single value or a list of values ("l") to list possition "offset", while removing "length" elements and returns any elements removed from the list as a new list More...
 
- Public Member Methods inherited from AbstractQoreNode
DLLEXPORT AbstractQoreNode (const AbstractQoreNode &v)
 copy constructor
 
DLLEXPORT AbstractQoreNode (qore_type_t t, bool n_value, bool n_needs_eval, bool n_there_can_be_only_one=false, bool n_custom_reference_handlers=false)
 constructor takes the type More...
 
virtual DLLEXPORT void customDeref (ExceptionSink *xsink)
 
virtual DLLEXPORT void customRef () const
 special processing when the object's reference count transitions from 0-1 More...
 
DLLEXPORT void deref (ExceptionSink *xsink)
 decrements the reference count and calls derefImpl() if there_can_be_only_one is false, otherwise does nothing More...
 
DLLEXPORT QoreValue eval (bool &needs_deref, ExceptionSink *xsink) const
 optionally evaluates the argument More...
 
DLLEXPORT QoreValue eval (ExceptionSink *xsink) const
 evaluates the object and returns a value (or 0) More...
 
DLLEXPORT int64 getAsBigInt () const
 returns the 64-bit integer value of the object More...
 
virtual DLLLOCAL int64 getAsBigIntImpl () const
 default implementation, returns 0 More...
 
DLLEXPORT bool getAsBool () const
 returns the boolean value of the object More...
 
DLLEXPORT double getAsFloat () const
 returns the float value of the object More...
 
virtual DLLLOCAL double getAsFloatImpl () const
 default implementation, returns 0.0 More...
 
DLLEXPORT int getAsInt () const
 returns the integer value of the object More...
 
virtual DLLLOCAL int getAsIntImpl () const
 default implementation, returns 0 More...
 
virtual DLLEXPORT class DateTimegetDateTimeRepresentation (bool &del) const
 returns the DateTime representation of this type (default implementation: returns ZeroDate, del = false) More...
 
virtual DLLEXPORT void getDateTimeRepresentation (DateTime &dt) const
 assigns the date representation of a value to the DateTime reference passed, default implementation does nothing More...
 
virtual DLLEXPORT QoreStringgetStringRepresentation (bool &del) const
 returns the value of the type converted to a string, default implementation: returns the empty string More...
 
virtual DLLEXPORT void getStringRepresentation (QoreString &str) const
 concatentates the value of the type to an existing QoreString reference, default implementation does nothing More...
 
DLLLOCAL qore_type_t getType () const
 returns the data type More...
 
DLLLOCAL bool is_value () const
 returns true if the node represents a value More...
 
DLLLOCAL bool isReferenceCounted () const
 returns true if the object is reference-counted
 
DLLLOCAL bool needs_eval () const
 returns true if the object needs evaluation to return a value, false if not More...
 
DLLLOCAL AbstractQoreNodeoperator= (const AbstractQoreNode &)
 this function is not implemented; it is here as a private function in order to prohibit it from being used
 
DLLEXPORT void ref () const
 increments the reference count
 
DLLEXPORT AbstractQoreNoderefSelf () const
 returns "this" with an incremented reference count 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 const DLLLOCAL char * getStaticTypeName ()
 returns true if the list does not contain any parse expressions, otherwise returns false
 

Private Member Methods

virtual DLLEXPORT ~QoreListNode ()
 the destructor is protected so it cannot be called directly More...
 
virtual DLLEXPORT bool derefImpl (ExceptionSink *xsink)
 dereferences all elements of the list More...
 
virtual DLLLOCAL QoreValue evalImpl (bool &needs_deref, ExceptionSink *xsink) const
 optionally evaluates the argument More...
 
- Private Member Methods inherited from AbstractQoreNode
virtual DLLEXPORT ~AbstractQoreNode ()
 default destructor does nothing More...
 

Private Attributes

hashdecl qore_list_private * priv
 this structure holds the private implementation for the type More...
 
- Private Attributes inherited from AbstractQoreNode
bool custom_reference_handlers: 1
 set to one for objects that need custom reference handlers
 
bool needs_eval_flag: 1
 if this is true then the type can be evaluated
 
bool there_can_be_only_one: 1
 if this is set to true, then reference counting is turned off for objects of this class
 
qore_type_t type: 11
 the type of the object More...
 
bool value: 1
 this is true for values, if false then either the type needs evaluation to produce a value or is a parse expression
 

Detailed Description

This is the list container type in Qore, dynamically allocated only, reference counted.

it is both a value type and can hold parse expressions as well (in which case it needs to be evaluated) the first element in the list is element 0

Constructor & Destructor Documentation

◆ ~QoreListNode()

virtual DLLEXPORT QoreListNode::~QoreListNode ( )
privatevirtual

the destructor is protected so it cannot be called directly

use the deref(ExceptionSink) function to release the reference count

See also
AbstractQoreNode::deref()
QoreListNode::derefImpl()

Member Function Documentation

◆ copyListFrom()

DLLEXPORT QoreListNode* QoreListNode::copyListFrom ( size_t  index) const

performs a deep copy of the list starting from element "offset" and returns the new list

therefore element 0 of the new list is element "offset" in the source list

Parameters
indexthe index of the element (first element is index 0)

◆ derefImpl()

virtual DLLEXPORT bool QoreListNode::derefImpl ( ExceptionSink xsink)
privatevirtual

dereferences all elements of the list

The ExceptionSink argument is needed for those types that could throw an exception when they are deleted (ex: QoreObject) - which could be contained in the list

Parameters
xsinkif an error occurs, the Qore-language exception information will be added here
Returns
true if the object can be deleted, false if not (externally-managed)

Reimplemented from AbstractQoreNode.

◆ empty()

DLLEXPORT bool QoreListNode::empty ( ) const

returns true if the list is empty

return true if the list is empty

◆ evalImpl()

virtual DLLLOCAL QoreValue QoreListNode::evalImpl ( bool &  needs_deref,
ExceptionSink xsink 
) const
privatevirtual

optionally evaluates the argument

return value requires a deref(xsink) if needs_deref is true

See also
AbstractQoreNode::eval()

Implements AbstractQoreNode.

◆ evalList() [1/2]

DLLEXPORT QoreListNode* QoreListNode::evalList ( bool &  needs_deref,
ExceptionSink xsink 
) const

optionally evaluates the list

return value requires a deref(xsink) if needs_deref is true NOTE: if the list requires evaluation and there is an exception, 0 will be returned NOTE: do not use this function directly, use the QoreListNodeEvalOptionalRefHolder class instead

Parameters
needs_derefthis is an output parameter, if needs_deref is true then the value returned must be dereferenced
xsinkif an error occurs, the Qore-language exception information will be added here
See also
QoreListNodeEvalOptionalRefHolder

◆ evalList() [2/2]

DLLEXPORT QoreListNode* QoreListNode::evalList ( ExceptionSink xsink) const

evaluates the list and returns a value (or 0)

return value requires a deref(xsink) if the list does not require evaluation then "refSelf()" is used to return the same object with an incremented reference count NOTE: if the object requires evaluation and there is an exception, 0 will be returned

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

◆ extract() [1/3]

DLLEXPORT QoreListNode* QoreListNode::extract ( qore_offset_t  offset)

truncates the list at position "offset" (first element is offset 0) and returns any elements removed from the list as a new list

Parameters
offsetthe index of the element (first element is offset 0, negative offsets are offsets from the end of the list)
Returns
the elements removed from the list as a new list; if no elements are removed, an empty list is returned

◆ extract() [2/3]

DLLEXPORT QoreListNode* QoreListNode::extract ( qore_offset_t  offset,
qore_offset_t  length 
)

removes "length" elements at position "offset" (first element is offset 0) and returns any elements removed from the list as a new list

Parameters
offsetthe index of the element (first element is offset 0, negative offsets are offsets from the end of the list)
lengththe number of elements to remove (negative numbers mean all except that many elements from the end)
Returns
the elements removed from the list as a new list; if no elements are removed, an empty list is returned

◆ extract() [3/3]

DLLEXPORT QoreListNode* QoreListNode::extract ( qore_offset_t  offset,
qore_offset_t  length,
const QoreValue  l,
ExceptionSink xsink 
)

adds a single value or a list of values ("l") to list possition "offset", while removing "length" elements and returns any elements removed from the list as a new list

Parameters
offsetthe index of the element (first element is offset 0, negative offsets are offsets from the end of the list)
lengththe number of elements to remove (negative numbers mean all except that many elements from the end)
lthe value or list of values to insert
xsinkif an error occurs (ex: the type of value to be inserted in the list is not compatible with the list's declared type), the Qore-language exception information will be added here
Returns
the elements removed from the list as a new list; if no elements are removed, an empty list is returned

◆ getAsBoolImpl()

virtual DLLEXPORT bool QoreListNode::getAsBoolImpl ( ) const
virtual

returns false unless perl-boolean-evaluation is enabled, in which case it returns false only when empty

Returns
false unless perl-boolean-evaluation is enabled, in which case it returns false only when empty

Reimplemented from AbstractQoreNode.

◆ getAsString() [1/2]

DLLEXPORT QoreString* QoreListNode::getAsString ( bool &  del,
int  foff,
ExceptionSink xsink 
) const
virtual

returns a QoreString giving the verbose string representation of the List (including all contained values)

used for n and N printf formatting

Parameters
delif this is true when the function returns, then the returned QoreString pointer should be deleted, if false, then it must not be
fofffor multi-line formatting offset, -1 = no line breaks
xsinkif an error occurs, the Qore-language exception information will be added here NOTE: Use the QoreNodeAsStringHelper class (defined in QoreStringNode.h) instead of using this function directly
See also
QoreNodeAsStringHelper

Implements AbstractQoreNode.

◆ getAsString() [2/2]

DLLEXPORT int QoreListNode::getAsString ( QoreString str,
int  foff,
ExceptionSink xsink 
) const
virtual

concatenate the verbose string representation of the list (including all contained values) to an existing QoreString

used for n and N printf formatting

Parameters
strthe string representation of the type will be concatenated to this QoreString reference
fofffor multi-line formatting offset, -1 = no line breaks
xsinkif an error occurs, the Qore-language exception information will be added here
Returns
-1 for exception raised, 0 = OK

Implements AbstractQoreNode.

◆ getEntryAsInt()

DLLEXPORT int QoreListNode::getEntryAsInt ( size_t  index) const

returns the value of element at "index" as an integer (first element is index 0)

Parameters
indexthe index of the element (first element is index 0)

◆ getReferencedEntry()

DLLEXPORT QoreValue QoreListNode::getReferencedEntry ( size_t  index) const

returns the element at "index" (first element is index 0), the caller owns the reference

Parameters
indexthe index of the element (first element is index 0)
Returns
the value of the element at "index" with an incremented reference count for the caller

◆ getTypeInfo()

const DLLEXPORT QoreTypeInfo* QoreListNode::getTypeInfo ( ) const

returns the type info structure for the current value; also works for lists with a specific value type

Since
Qore 0.8.13

◆ getValueTypeInfo()

const DLLEXPORT QoreTypeInfo* QoreListNode::getValueTypeInfo ( ) const

returns the value type declaration (if set)

Since
Qore 0.8.13

◆ insert()

DLLEXPORT int QoreListNode::insert ( QoreValue  val,
ExceptionSink xsink 
)

inserts a value in the first position of the list

Since
Qore 0.9

◆ is_equal_hard()

virtual DLLEXPORT bool QoreListNode::is_equal_hard ( const AbstractQoreNode v,
ExceptionSink xsink 
) const
virtual

tests for equality ("deep compare" including all contained values) without type conversions (hard compare)

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

Implements AbstractQoreNode.

◆ is_equal_soft()

virtual DLLEXPORT bool QoreListNode::is_equal_soft ( const AbstractQoreNode v,
ExceptionSink xsink 
) const
virtual

tests for equality ("deep compare" including all contained values) with possible type conversion (soft compare)

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

Implements AbstractQoreNode.

◆ max() [1/2]

DLLEXPORT QoreValue QoreListNode::max ( const ResolvedCallReferenceNode fr,
ExceptionSink xsink 
) const

returns the element having the highest value (determined by calling the function reference passed to give lexical order)

Parameters
frthe function reference to be executed for each comparison to give lexical order to the elements
xsinkif an error occurs, the Qore-language exception information will be added here

◆ max() [2/2]

DLLEXPORT QoreValue QoreListNode::max ( ExceptionSink xsink) const

returns the element having the highest value (determined by calling OP_LOG_GT - the greater-than ">" operator)

so "soft" comparisons are made, meaning that the list can be made up of different types, and, as long as the comparisons are meaningful, the maximum value can be returned

◆ merge()

DLLEXPORT int QoreListNode::merge ( const QoreListNode list,
ExceptionSink xsink 
)

appends the elements of "list" to this list

Since
Qore 0.8.13

◆ min() [1/2]

DLLEXPORT QoreValue QoreListNode::min ( const ResolvedCallReferenceNode fr,
ExceptionSink xsink 
) const

returns the element having the lowest value (determined by calling the function reference passed to give lexical order)

Parameters
frthe function reference to be executed for each comparison to give lexical order to the elements
xsinkif an error occurs, the Qore-language exception information will be added here

◆ min() [2/2]

DLLEXPORT QoreValue QoreListNode::min ( ExceptionSink xsink) const

returns the element having the lowest value (determined by calling OP_LOG_LT - the less-than "<" operator)

so "soft" comparisons are made, meaning that the list can be made up of different types, and, as long as the comparisons are meaningful, the minimum value can be returned

◆ pop()

DLLEXPORT QoreValue QoreListNode::pop ( )

returns the last element of the list, the length is decremented by one, caller owns the reference

if the list is empty the 0 is returned (NOTE: the last entry could also be 0 as well)

Since
Qore 0.9

◆ push()

DLLEXPORT int QoreListNode::push ( QoreValue  val,
ExceptionSink xsink 
)

adds a value to the list

Since
Qore 0.9

◆ realCopy()

virtual DLLEXPORT AbstractQoreNode* QoreListNode::realCopy ( ) const
virtual

returns true if the list contains parse expressions and therefore needs evaluation to return a value, false if not

performs a deep copy of the list and returns the new list

Implements AbstractQoreNode.

◆ retrieveEntry() [1/2]

DLLEXPORT QoreValue QoreListNode::retrieveEntry ( size_t  index)

returns the element at "index" (first element is index 0)

the value is not referenced for the caller

Parameters
indexthe index of the element (first element is index 0)
Returns
the value of the element at "index", not referenced for the caller

Referenced by get_hard_value_or_nothing_param(), get_hard_value_param(), get_param_value(), and test_reference_param().

◆ retrieveEntry() [2/2]

const DLLEXPORT QoreValue QoreListNode::retrieveEntry ( size_t  index) const

returns the element at "index" (first element is index 0)

the value is not referenced for the caller

Parameters
indexthe index of the element (first element is index 0)
Returns
the value of the element at "index", not referenced for the caller

◆ setEntry()

DLLEXPORT int QoreListNode::setEntry ( size_t  index,
QoreValue  val,
ExceptionSink xsink 
)

sets the value of a list element

if there is a value there already, it is dereferenced (hence "xsink" is needed to catch any exceptions)

Parameters
indexthe index of the element (first element is index 0)
valthe value to set, must be already referenced for the assignment
xsinkif an error occurs, the Qore-language exception information will be added here

◆ shift()

DLLEXPORT QoreValue QoreListNode::shift ( )

returns the first element of the list, all other entries are moved down to fill up the first position, caller owns the reference

if the list is empty the 0 is returned (NOTE: the first entry could also be 0 as well) with the current implementation the execution time for this function is O(n) where n is the length of the list

Since
Qore 0.9

◆ size()

DLLEXPORT size_t QoreListNode::size ( ) const

returns the number of elements in the list

return the number of elements in the list

Referenced by num_args(), and num_params().

◆ sort() [1/2]

DLLEXPORT QoreListNode* QoreListNode::sort ( const ResolvedCallReferenceNode fr,
ExceptionSink xsink 
) const

returns a new list based on quicksorting the source list ("this") using the passed function reference to determine lexical order

Parameters
frthe function reference to be executed for each comparison to give lexical order to the elements
xsinkif an error occurs, the Qore-language exception information will be added here

◆ sort() [2/2]

DLLEXPORT QoreListNode* QoreListNode::sort ( ExceptionSink xsink) const

returns a new list based on quicksorting the source list ("this")

"soft" comparisons are made using OP_LOG_LT, meaning that the list can be made up of different data types and still be sorted

◆ sortDescending() [1/2]

DLLEXPORT QoreListNode* QoreListNode::sortDescending ( const ResolvedCallReferenceNode fr,
ExceptionSink xsink 
) const

returns a new list based on quicksorting the source list ("this") in descending order, using the passed function reference to determine lexical order

Parameters
frthe function reference to be executed for each comparison to give lexical order to the elements
xsinkif an error occurs, the Qore-language exception information will be added here

◆ sortDescending() [2/2]

DLLEXPORT QoreListNode* QoreListNode::sortDescending ( ExceptionSink xsink) const

returns a new list based on quicksorting the source list ("this") in descending order

"soft" comparisons are made using OP_LOG_LT, meaning that the list can be made up of different data types and still be sorted

◆ sortDescendingStable() [1/2]

DLLEXPORT QoreListNode* QoreListNode::sortDescendingStable ( const ResolvedCallReferenceNode fr,
ExceptionSink xsink 
) const

returns a new list based on executing mergesort on the source list ("this") in descending order, using the passed function reference to determine lexical order

Parameters
frthe function reference to be executed for each comparison to give lexical order to the elements
xsinkif an error occurs, the Qore-language exception information will be added here

◆ sortDescendingStable() [2/2]

DLLEXPORT QoreListNode* QoreListNode::sortDescendingStable ( ExceptionSink xsink) const

returns a new list based on executing mergesort on the source list ("this") in descending order

"soft" comparisons are made using OP_LOG_LT, meaning that the list can be made up of different data types and still be sorted

◆ sortStable() [1/2]

DLLEXPORT QoreListNode* QoreListNode::sortStable ( const ResolvedCallReferenceNode fr,
ExceptionSink xsink 
) const

returns a new list based on executing mergesort on the source list ("this") using the passed function reference to determine lexical order

Parameters
frthe function reference to be executed for each comparison to give lexical order to the elements
xsinkif an error occurs, the Qore-language exception information will be added here

◆ sortStable() [2/2]

DLLEXPORT QoreListNode* QoreListNode::sortStable ( ExceptionSink xsink) const

returns a new list based on executing mergesort on the source list ("this")

"soft" comparisons are made using OP_LOG_LT, meaning that the list can be made up of different data types and still be sorted

◆ splice() [1/3]

DLLEXPORT QoreListNode* QoreListNode::splice ( qore_offset_t  offset)

truncates the list at position "offset" (first element is offset 0) and returns any elements removed from the list as a new list

Parameters
offsetthe index of the element (first element is offset 0, negative offsets are offsets from the end of the list)
Returns
the elements removed from the list as a new list; if no elements are removed, nullptr is returned
Note
only returns a non-nullptr list if elements were actually removed; this is the only difference between splice() and extract()

◆ splice() [2/3]

DLLEXPORT QoreListNode* QoreListNode::splice ( qore_offset_t  offset,
qore_offset_t  length 
)

removes "length" elements at position "offset" (first element is offset 0) and returns any elements removed from the list as a new list

Parameters
offsetthe index of the element (first element is offset 0, negative offsets are offsets from the end of the list)
lengththe number of elements to remove (negative numbers mean all except that many elements from the end)
Returns
the elements removed from the list as a new list; if no elements are removed, nullptr is returned
Note
only returns a non-nullptr list if elements were actually removed; this is the only difference between splice() and extract()

◆ splice() [3/3]

DLLEXPORT QoreListNode* QoreListNode::splice ( qore_offset_t  offset,
qore_offset_t  length,
const QoreValue  l,
ExceptionSink xsink 
)

adds a single value or a list of values ("l") to list possition "offset", while removing "length" elements and returns any elements removed from the list as a new list

the "l" AbstractQoreNode (or each element if it is a QoreListNode) will be referenced for the assignment in the QoreListNode

Parameters
offsetthe index of the element (first element is offset 0, negative offsets are offsets from the end of the list)
lengththe number of elements to remove (negative numbers mean all except that many elements from the end)
lthe value or list of values to insert
xsinkif an error occurs (ex: the type of value to be inserted in the list is not compatible with the list's declared type), the Qore-language exception information will be added here
Returns
the elements removed from the list as a new list; if no elements are removed, nullptr is returned
Note
only returns a non-nullptr list if elements were actually removed; this is the only difference between splice() and extract()

Member Data Documentation

◆ priv

hashdecl qore_list_private* QoreListNode::priv
private

this structure holds the private implementation for the type

therefore changes to the implementation will not affect the C++ ABI


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