27ff4a3a0a
All Cologexes (both Cologexes and CologexSets) are now categorized as Concepts. Goals are now also Concepts -- they inherit from Concept as a base class. Using Concept as the base class for both Cologex and CologexSet allows us to treat both cologexes and cologexsets the same way when comparing in the abstract.
64 lines
1.4 KiB
C++
64 lines
1.4 KiB
C++
#ifndef _COMBINATORIAL_LOGIC_EXPRESSION_H
|
|
#define _COMBINATORIAL_LOGIC_EXPRESSION_H
|
|
|
|
#include <vector>
|
|
#include <memory>
|
|
#include <logic.h>
|
|
#include <mentalEntity.h>
|
|
#include <concept.h>
|
|
#include <user/stimFrame.h>
|
|
|
|
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<MentalEntity> reference;
|
|
};
|
|
|
|
class ComparatorExpression
|
|
: public logic::UnaryExpression
|
|
{
|
|
public:
|
|
ComparatorExpression(
|
|
logic::Operator &op, std::shared_ptr<Comparator> &comparator
|
|
)
|
|
: logic::UnaryExpression(
|
|
op, std::static_pointer_cast<logic::Operand>(comparator))
|
|
{}
|
|
};
|
|
|
|
class CombinatorialLogicExpression
|
|
: public MentalEntity, public logic::Expression, public Concept
|
|
{
|
|
public:
|
|
|
|
};
|
|
|
|
class CombinatorialLogicExpressionSet
|
|
: public MentalEntity, public Concept
|
|
{
|
|
public:
|
|
std::vector<
|
|
std::pair<stim_buff::SimultaneityStamp, CombinatorialLogicExpression>
|
|
> expressions;
|
|
};
|
|
|
|
typedef CombinatorialLogicExpression Cologex;
|
|
typedef CombinatorialLogicExpressionSet CologexSet;
|
|
|
|
} // namespace cologex
|
|
} // namespace smo
|
|
|
|
#endif
|