GaiaXHarmony/GaiaXAnalyze/GXAnalyzeCore/GXAnalyze.h (27 lines of code) (raw):

/* * Copyright (c) 2021, Alibaba Group Holding Limited; * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef _GXANALYZE_CORE_H_ #define _GXANALYZE_CORE_H_ #include <stdlib.h> #include "GXATSNode.h" #include "GXWordAnalyze.h" #include <vector> #include "GXValue.h" #include <set> #include <unordered_map> #include <regex> using namespace std; class GXAnalyze { public: GXAnalyze(); ~GXAnalyze(); long getValue(string expression, void *source); //获取数据 $ virtual long getSourceValue(string valuePath, void *source) = 0; //获取方法 Function virtual long getFunctionValue(string funName, long *paramPointers, int paramsSize, string source) = 0; virtual void throwError(string message) = 0; private: //获取两个数值计算的结果 GXATSNode doubleCalculate(GXATSNode value1, GXATSNode value2, string op); //获取单个数值计算的结果 GXATSNode singleCalculate(GXATSNode value1, string op); long check(string s, vector<GXATSNode> array, void *p_analyze, void* source,string expression); long calculateCache(string cache,vector<GXATSNode> array,void *p_analyze, void* source); }; #endif /*include _GXAnalyze__H_*/