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 {
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 {