00001 #ifndef FILTER_QBOX_H 00002 #define FILTER_QBOX_H 00003 00004 #include "QBox.h" 00005 #include "Expression.h" 00006 00007 BOREALIS_NAMESPACE_BEGIN; 00008 00009 class FilterQBox : public QBox { 00010 friend class FilterBoxState; 00011 00012 private: 00013 EvalContext _ctxt; 00014 vector<ptr<Expression> > _expressions; 00015 00016 bool _passOnFalsePort; 00017 unsigned int _output_tuple_size; 00018 00019 unsigned int _expr_count; // _expressions.size() 00020 00021 protected: 00022 void setupImpl() throw (AuroraException); 00023 void initImpl() throw (AuroraException); 00024 void runImpl(QBoxInvocation&) throw (AuroraException); 00025 00026 // packing and unpacking states 00027 void setPendingBoxState(ptr<AbstractBoxState> packed_box); 00028 ptr<AbstractBoxState> packState(); 00029 void unpackState(ptr<AbstractBoxState> box_state) {}; 00030 00031 AURORA_DECLARE_QBOX(FilterQBox, "filter"); 00032 }; 00033 00034 class FilterBoxState : public AbstractBoxState 00035 { 00036 public: 00037 FilterBoxState() {} 00038 ~FilterBoxState() {} 00039 00040 private: 00041 00042 00043 }; 00044 00045 BOREALIS_NAMESPACE_END; 00046 00047 #endif