#ifndef _COMBINATORIAL_LOGIC_EXPRESSION_H #define _COMBINATORIAL_LOGIC_EXPRESSION_H #include #include #include #include #include #include namespace smo { namespace cologex { class Comparator : public MentalEntity, public logic::Operand { public: /** EXPLANATION: * The reference for a Comparator is the fixed mentity or range of mentities * that this comparator is intended to validate a match against. * * There are several mentities against which a comparator can match. At the * time of writing, we're fairly sure that these will be at minimum, * qualia, chronomena and mentena. */ std::shared_ptr reference; }; class ComparatorExpression : public logic::UnaryExpression { public: ComparatorExpression( logic::Operator &op, std::shared_ptr &comparator ) : logic::UnaryExpression( op, std::static_pointer_cast(comparator)) {} }; class CombinatorialLogicExpression : public MentalEntity, public logic::Expression, public Concept { public: }; class CombinatorialLogicExpressionSeq : public MentalEntity, public Concept { public: std::vector< std::pair > expressions; }; typedef CombinatorialLogicExpression Cologex; typedef CombinatorialLogicExpressionSeq CologexSeq; } // namespace cologex } // namespace smo #endif