From 33681059b0e2abcadfc03e12901ccc1bf9902d4d Mon Sep 17 00:00:00 2001 From: Hayodea Hekol Date: Tue, 2 Dec 2025 14:11:20 -0400 Subject: [PATCH] Restore logic.h which was unintentionally deleted previously --- include/user/cologex.h | 4 +-- include/user/logic.h | 65 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 67 insertions(+), 2 deletions(-) create mode 100644 include/user/logic.h diff --git a/include/user/cologex.h b/include/user/cologex.h index c9e61d0..b294a7e 100644 --- a/include/user/cologex.h +++ b/include/user/cologex.h @@ -3,10 +3,10 @@ #include #include -#include #include #include -#include +#include +#include namespace smo { namespace cologex { diff --git a/include/user/logic.h b/include/user/logic.h new file mode 100644 index 0000000..6e08225 --- /dev/null +++ b/include/user/logic.h @@ -0,0 +1,65 @@ +#ifndef _LOGIC_H +#define _LOGIC_H + +#include +#include + +namespace smo { +namespace logic { + +class ExpressionPart +{ +}; + +class Operator +: public ExpressionPart +{ +}; + +class OperatorAnd +: public Operator +{ +}; + +class OperatorOr +: public Operator +{ +}; + +class OperatorNot +: public Operator +{ +}; + +class Operand +: public ExpressionPart +{ +}; + +class UnaryExpression +: public ExpressionPart +{ +public: + UnaryExpression(Operator &op, const std::shared_ptr &operand) + : parts(std::make_pair(op, operand)) + {} +public: + std::pair> parts; +}; + +// Expressions can be chained as parts of a larger expression +class Expression +: public ExpressionPart +{ +public: + // This will eventually take in some data to be evaluated for a match. + virtual bool evaluate(void) = 0; + +public: + std::vector> parts; +}; + +} // namespace logic +} // namespace smo + +#endif