32 #ifndef _QORE_INTERN_FUNCTIONALOPERATORINTERFACE_H 34 #define _QORE_INTERN_FUNCTIONALOPERATORINTERFACE_H 36 #include "qore/intern/AbstractIteratorHelper.h" 37 #include "qore/intern/FunctionalOperator.h" 39 class FunctionalOperatorInterface {
41 DLLLOCAL
virtual ~FunctionalOperatorInterface() {
51 DLLLOCAL
virtual const QoreTypeInfo* getValueType()
const {
52 return getValueTypeImpl();
55 DLLLOCAL
virtual const QoreTypeInfo* getValueTypeImpl()
const = 0;
57 DLLLOCAL
static FunctionalOperatorInterface* getFunctionalIterator(FunctionalOperator::FunctionalValueType& value_type,
QoreValue exp,
bool fwd,
const char* who,
ExceptionSink* xsink);
60 class QoreFunctionalListOperator :
public FunctionalOperatorInterface,
public ConstListIterator {
69 DLLLOCAL
virtual ~QoreFunctionalListOperator() {
73 DLLLOCAL
virtual const QoreTypeInfo* getValueTypeImpl()
const {
74 return l->getValueTypeInfo();
80 class QoreFunctionalSingleValueOperator :
public FunctionalOperatorInterface {
90 DLLLOCAL
virtual ~QoreFunctionalSingleValueOperator() {
94 DLLLOCAL
virtual const QoreTypeInfo* getValueTypeImpl()
const {
101 class QoreFunctionalIteratorOperator :
public FunctionalOperatorInterface {
104 AbstractIteratorHelper h;
109 DLLLOCAL QoreFunctionalIteratorOperator(
bool t, AbstractIteratorHelper n_h,
ExceptionSink* xs) : temp(t), h(n_h), xsink(xs) {
112 DLLLOCAL ~QoreFunctionalIteratorOperator() {
117 DLLLOCAL
virtual const QoreTypeInfo* getValueTypeImpl()
const {
allows storing a value and setting a boolean flag that indicates if the value should be dereference i...
Definition: QoreValue.h:485
This is the list container type in Qore, dynamically allocated only, reference counted.
Definition: QoreListNode.h:52
The main value class in Qore, designed to be passed by value.
Definition: QoreValue.h:262
container for holding Qore-language exception information and also for registering a "thread_exit" ca...
Definition: ExceptionSink.h:46
DLLEXPORT const QoreTypeInfo * getTypeInfo() const
returns the type of the value
DLLEXPORT void discard(ExceptionSink *xsink)
dereferences any contained AbstractQoreNode pointer and sets to 0; does not modify other values ...
For use on the stack only: iterates through elements of a const QoreListNode.
Definition: QoreListNode.h:566