upd: first version of Arith operations

This commit is contained in:
2023-11-09 14:03:58 +08:00
parent 3aff6d64c4
commit 5852b2738f
2 changed files with 390 additions and 46 deletions

View File

@ -73,9 +73,11 @@ struct FunctionItem {
};
class FucntionContainer {
std::unordered_map<std::string, FunctionItem> FunctionIndex;
public:
public:
void AddFunction(const std::string &name, const FunctionItem &item);
std::any CallFunction(const std::string &name, const std::vector<ParaArguItemType> &args);
std::any CallFunction(const std::string &name,
const std::vector<ParaArguItemType> &args);
};
class VariableContainer {
std::unordered_map<std::string, std::any> GlobalScope;
@ -87,29 +89,28 @@ class VariableContainer {
std::any ReadVariable(const std::string &name);
void WriteVariable(const std::string &name, const std::any &value);
};
std::any DeQuate(std::any val,VariableContainer &Variables);
std::any DeQuate(std::any val, VariableContainer &Variables);
std::any Add(const std::any &a, const std::any &b);
std::any& SelfAdd(std::any &a, const std::any &b);
int ConverToSameArithType(std::any &a, std::any &b,
bool allow_string_operation = false);
std::any Add(std::any a, std::any b);
std::any Sub(std::any a, std::any b);
std::any Mul(std::any a, std::any b);
std::any Div(std::any a, std::any b);
std::any Divv(std::any a, std::any b);
std::any Mod(std::any a, std::any b);
std::any &SelfAdd(std::any &a, std::any b);
std::any &SelfSub(std::any &a, std::any b);
std::any &SelfMul(std::any &a, std::any b);
std::any &SelfDiv(std::any &a, std::any b);
std::any &SelfDivv(std::any &a, std::any b);
std::any &SelfMod(std::any &a, std::any b);
std::any Neg(std::any a);
std::any Sub(const std::any &a, const std::any &b);
std::any& SelfSub(std::any &a, const std::any &b);
std::any Mul(const std::any &a, const std::any &b);
std::any& SelfMul(std::any &a, const std::any &b);
std::any Div(const std::any &a, const std::any &b);
std::any& SelfDiv(std::any &a, const std::any &b);
std::any Mod(const std::any &a, const std::any &b);
std::any& SelfMod(std::any &a, const std::any &b);
std::any Neg(const std::any &a);
bool Greater(const std::any &a, const std::any &b);
bool Less(const std::any &a, const std::any &b);
bool Equal(const std::any &a, const std::any &b);
bool NotEqual(const std::any &a, const std::any &b);
bool GreaterEqual(const std::any &a, const std::any &b);
bool LessEqual(const std::any &a, const std::any &b);
bool Greater(std::any a, std::any b);
bool Less(std::any a, std::any b);
bool Equal(std::any a, std::any b);
bool NotEqual(std::any a, std::any b);
bool GreaterEqual(std::any a, std::any b);
bool LessEqual(std::any a, std::any b);
#endif