Files
salmanoff/include/user/cologex.h
T

64 lines
1.4 KiB
C++
Raw Normal View History

2025-10-02 11:30:04 -04:00
#ifndef _COMBINATORIAL_LOGIC_EXPRESSION_H
#define _COMBINATORIAL_LOGIC_EXPRESSION_H
2024-09-08 01:04:41 +10:00
#include <vector>
#include <memory>
#include <user/logic.h>
2024-09-08 01:04:41 +10:00
#include <mentalEntity.h>
2025-10-05 21:15:55 -04:00
#include <concept.h>
#include <user/stimFrame.h>
2024-09-08 01:04:41 +10:00
namespace smo {
2025-10-02 11:30:04 -04:00
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
)
2025-09-02 17:01:01 -04:00
: logic::UnaryExpression(
op, std::static_pointer_cast<logic::Operand>(comparator))
{}
};
class CombinatorialLogicExpression
2025-10-05 21:15:55 -04:00
: public MentalEntity, public logic::Expression, public Concept
2024-09-08 01:04:41 +10:00
{
public:
2024-09-08 01:04:41 +10:00
};
class CombinatorialLogicExpressionSeq
2025-10-05 21:15:55 -04:00
: public MentalEntity, public Concept
{
public:
std::vector<
std::pair<stim_buff::SimultaneityStamp, CombinatorialLogicExpression>
> expressions;
};
2025-10-02 11:30:04 -04:00
typedef CombinatorialLogicExpression Cologex;
typedef CombinatorialLogicExpressionSeq CologexSeq;
2025-10-02 11:30:04 -04:00
} // namespace cologex
} // namespace smo
2024-09-08 01:04:41 +10:00
#endif