Covalent Bond  0.0.1-alpha
'covalent bond' is a data middle office. As a 2022-2023 Fall SWE final project.
cbOperator.hpp
Go to the documentation of this file.
1 
11 #ifndef __SERVER_CB_OPERATOR_HPP_
12 #define __SERVER_CB_OPERATOR_HPP_
13 
14 #ifdef _WIN32
15 #if _MSC_VER > 1000
16 #pragma once
17 #endif
18 #endif
19 
20 #if defined(__unix__) && defined(__clang__)
21 #pragma once
22 #endif
23 
24 #include "../../pch.hpp"
25 
26 #include "luaEngine.hpp"
27 
28 enum class opType : uint32_t {
29  rowWise = 0,
30  tableWise = 1,
31  notTableMatrix = 2,
32 };
33 
38 struct cbOpIO {
39  std::vector<cbVirtualTable> I;
41 };
42 
47 struct baseOp {
48  virtual ~baseOp();
49  baseOp(const opType& ot);
50 
51  virtual void overload(const sol::function& func) = 0;
52  virtual void execMain() = 0;
53 
56 
57  bool isOverload = false;
58  sol::function luaOverrideFunc = sol::nil;
59 };
60 
61 // Basic operation.
62 
67 class cbOpRowWise : public baseOp {
68  public:
69  ~cbOpRowWise();
70  cbOpRowWise();
71  virtual void overload(const sol::function& func) = 0;
72  virtual void execMain() = 0;
73  virtual void __innerFunc(baseOp* thisOp = nullptr) = 0;
74 };
75 
80 class cbOpTableWise : public baseOp {
81  public:
83  cbOpTableWise();
84  virtual void overload(const sol::function& func) = 0;
85  virtual void execMain() = 0;
86  virtual void __innerFunc(baseOp* thisOp = nullptr) = 0;
87 };
88 
93 class cbOpNotTable : public baseOp {
94  public:
95  ~cbOpNotTable();
96  cbOpNotTable();
97  virtual void overload(const sol::function& func) = 0;
98  virtual void execMain() = 0;
99  virtual void __innerFunc(baseOp* thisOp = nullptr) = 0;
100 };
101 
102 // Details operation.
103 
108 class cbOpCombine final : public cbOpRowWise {
109  public:
110  ~cbOpCombine() override;
111  cbOpCombine(const std::vector<std::string>& key, const std::string name);
112  void overload(const sol::function& func) override final;
113  void execMain() override final;
114  void __innerFunc(baseOp* thisOp = nullptr) override final;
115 
116  private:
117  const std::string m_tableName;
118  const std::vector<std::string> m_key;
119 };
120 
125 class cbOpMultiMap : public cbOpRowWise {
126  public:
127  ~cbOpMultiMap() override;
128  cbOpMultiMap() = default;
129  void overload(const sol::function& func) override final;
130  void execMain() override final;
131  void __innerFunc(baseOp* thisOp = nullptr) override final;
132 };
133 
138 class cbOpFilter : public cbOpTableWise {
139  public:
140  ~cbOpFilter() override;
141  cbOpFilter() = default;
142  cbOpFilter(const sol::function& mapBool, const sol::function& mapLogic);
143  void overload(const sol::function& func) override final;
144  void execMain() override final;
145  void __innerFunc(baseOp* thisOp = nullptr) override final;
146 
147  private:
148  sol::function m_mapBoolFunc = sol::nil;
149  sol::function m_mapLogicFunc = sol::nil;
150 };
151 
156 class cbOpSort : public cbOpTableWise {
157  public:
158  ~cbOpSort() override;
159  cbOpSort() = default;
160  void overload(const sol::function& func) override final;
161  void execMain() override final;
162  void __innerFunc(baseOp* thisOp = nullptr) override final;
163 };
164 
169 class cbOpAverage : public cbOpTableWise {
170  public:
171  ~cbOpAverage() override;
172  cbOpAverage() = default;
173  void overload(const sol::function& func) override final;
174  void execMain() override final;
175  void __innerFunc(baseOp* thisOp = nullptr) override final;
176 };
177 
182 class cbOpVar : public cbOpTableWise {
183  public:
184  ~cbOpVar() override;
185  cbOpVar() = default;
186  void overload(const sol::function& func) override final;
187  void execMain() override final;
188  void __innerFunc(baseOp* thisOp = nullptr) override final;
189 };
190 
195 class cbOpSum : public cbOpTableWise {
196  public:
197  ~cbOpSum() override;
198  cbOpSum() = default;
199  void overload(const sol::function& func) override final;
200  void execMain() override final;
201  void __innerFunc(baseOp* thisOp = nullptr) override final;
202 };
203 
204 #endif //! __SERVER_CB_OPERATOR_HPP_
cbOpSum::cbOpSum
cbOpSum()=default
cbOpRowWise::execMain
virtual void execMain()=0
cbOpTableWise::__innerFunc
virtual void __innerFunc(baseOp *thisOp=nullptr)=0
cbOpMultiMap::cbOpMultiMap
cbOpMultiMap()=default
cbOpVar::overload
void overload(const sol::function &func) override final
Definition: cbOperator.cpp:127
cbOpSum
Definition: cbOperator.hpp:195
cbOpSum::execMain
void execMain() override final
Definition: cbOperator.cpp:150
cbOpIO::O
cbVirtualTable O
Definition: cbOperator.hpp:40
cbOpCombine
Definition: cbOperator.hpp:108
cbOpCombine::m_tableName
const std::string m_tableName
Definition: cbOperator.hpp:117
cbOpAverage::cbOpAverage
cbOpAverage()=default
cbOpVar::cbOpVar
cbOpVar()=default
cbOpNotTable::execMain
virtual void execMain()=0
cbOpMultiMap::execMain
void execMain() override final
Definition: cbOperator.cpp:56
cbOpSort::execMain
void execMain() override final
Definition: cbOperator.cpp:96
cbOpSort::cbOpSort
cbOpSort()=default
cbOpRowWise::__innerFunc
virtual void __innerFunc(baseOp *thisOp=nullptr)=0
cbOpNotTable::cbOpNotTable
cbOpNotTable()
Definition: cbOperator.cpp:27
cbOpFilter::m_mapLogicFunc
sol::function m_mapLogicFunc
Definition: cbOperator.hpp:149
cbOpSum::~cbOpSum
~cbOpSum() override
Definition: cbOperator.cpp:143
cbOpTableWise::~cbOpTableWise
~cbOpTableWise()
Definition: cbOperator.cpp:21
cbVirtualTable
cbVirtualTable works as a reference from shared memory. It only use a shape and SqlCell to define dif...
Definition: cbTable.hpp:605
baseOp::execMain
virtual void execMain()=0
baseOp::io
cbOpIO io
Definition: cbOperator.hpp:54
cbOpNotTable::overload
virtual void overload(const sol::function &func)=0
cbOpNotTable::__innerFunc
virtual void __innerFunc(baseOp *thisOp=nullptr)=0
cbOpAverage::overload
void overload(const sol::function &func) override final
Definition: cbOperator.cpp:109
cbOpSort::overload
void overload(const sol::function &func) override final
Definition: cbOperator.cpp:91
cbOpCombine::__innerFunc
void __innerFunc(baseOp *thisOp=nullptr) override final
Definition: cbOperator.cpp:41
cbOpRowWise
Definition: cbOperator.hpp:67
opType
opType
_WIN32
Definition: cbOperator.hpp:28
cbOpAverage::__innerFunc
void __innerFunc(baseOp *thisOp=nullptr) override final
Definition: cbOperator.cpp:118
cbOpFilter::~cbOpFilter
~cbOpFilter() override
Definition: cbOperator.cpp:70
cbOpRowWise::~cbOpRowWise
~cbOpRowWise()
Definition: cbOperator.cpp:17
cbOpFilter::cbOpFilter
cbOpFilter()=default
cbOpAverage::execMain
void execMain() override final
Definition: cbOperator.cpp:114
opType::notTableMatrix
@ notTableMatrix
cbOpFilter
TODO.
Definition: cbOperator.hpp:138
opType::rowWise
@ rowWise
opType::tableWise
@ tableWise
cbOpMultiMap::__innerFunc
void __innerFunc(baseOp *thisOp=nullptr) override final
Definition: cbOperator.cpp:60
cbOpAverage::~cbOpAverage
~cbOpAverage() override
Definition: cbOperator.cpp:107
cbOpVar::execMain
void execMain() override final
Definition: cbOperator.cpp:132
cbOpIO
The input and output of one Operator.
Definition: cbOperator.hpp:38
cbOpCombine::execMain
void execMain() override final
Definition: cbOperator.cpp:39
baseOp::type
opType type
Definition: cbOperator.hpp:55
cbOpFilter::m_mapBoolFunc
sol::function m_mapBoolFunc
Definition: cbOperator.hpp:148
cbOpSort
Definition: cbOperator.hpp:156
cbOpFilter::overload
void overload(const sol::function &func) override final
Definition: cbOperator.cpp:75
cbOpFilter::__innerFunc
void __innerFunc(baseOp *thisOp=nullptr) override final
Definition: cbOperator.cpp:82
baseOp::isOverload
bool isOverload
Definition: cbOperator.hpp:57
baseOp::luaOverrideFunc
sol::function luaOverrideFunc
Definition: cbOperator.hpp:58
cbOpCombine::~cbOpCombine
~cbOpCombine() override
Definition: cbOperator.cpp:29
cbOpSort::~cbOpSort
~cbOpSort() override
Definition: cbOperator.cpp:89
cbOpAverage
Definition: cbOperator.hpp:169
cbOpRowWise::cbOpRowWise
cbOpRowWise()
Definition: cbOperator.cpp:19
cbOpMultiMap::overload
void overload(const sol::function &func) override final
Definition: cbOperator.cpp:51
baseOp::baseOp
baseOp(const opType &ot)
Definition: cbOperator.cpp:15
cbOpIO::I
std::vector< cbVirtualTable > I
Definition: cbOperator.hpp:39
baseOp::overload
virtual void overload(const sol::function &func)=0
baseOp::~baseOp
virtual ~baseOp()
Definition: cbOperator.cpp:13
cbOpSum::__innerFunc
void __innerFunc(baseOp *thisOp=nullptr) override final
Definition: cbOperator.cpp:154
cbOpVar::~cbOpVar
~cbOpVar() override
Definition: cbOperator.cpp:125
cbOpTableWise
Definition: cbOperator.hpp:80
cbOpTableWise::cbOpTableWise
cbOpTableWise()
Definition: cbOperator.cpp:23
cbOpTableWise::overload
virtual void overload(const sol::function &func)=0
cbOpMultiMap
Definition: cbOperator.hpp:125
cbOpVar
Definition: cbOperator.hpp:182
baseOp
basic operator.
Definition: cbOperator.hpp:47
cbOpMultiMap::~cbOpMultiMap
~cbOpMultiMap() override
Definition: cbOperator.cpp:49
cbOpVar::__innerFunc
void __innerFunc(baseOp *thisOp=nullptr) override final
Definition: cbOperator.cpp:136
cbOpCombine::m_key
const std::vector< std::string > m_key
Definition: cbOperator.hpp:118
cbOpCombine::cbOpCombine
cbOpCombine(const std::vector< std::string > &key, const std::string name)
Definition: cbOperator.cpp:31
cbOpNotTable::~cbOpNotTable
~cbOpNotTable()
Definition: cbOperator.cpp:25
cbOpSum::overload
void overload(const sol::function &func) override final
Definition: cbOperator.cpp:145
cbOpTableWise::execMain
virtual void execMain()=0
cbOpRowWise::overload
virtual void overload(const sol::function &func)=0
cbOpNotTable
Definition: cbOperator.hpp:93
cbOpSort::__innerFunc
void __innerFunc(baseOp *thisOp=nullptr) override final
Definition: cbOperator.cpp:100
cbOpFilter::execMain
void execMain() override final
Definition: cbOperator.cpp:80
cbOpCombine::overload
void overload(const sol::function &func) override final
Definition: cbOperator.cpp:34
luaEngine.hpp
A lua engine for execute all c++ embedding in struct. A warper of lua JIT engine.