25 #ifndef MU_PARSER_DLL_H
26 #define MU_PARSER_DLL_H
28 #if defined(WIN32) || defined(_WIN32)
29 #ifdef MUPARSERLIB_EXPORTS
30 #define API_EXPORT(TYPE) __declspec(dllexport) TYPE __cdecl
32 #define API_EXPORT(TYPE) __declspec(dllimport) TYPE __cdecl
35 #define API_EXPORT(TYPE) TYPE
49 typedef void* muParserHandle_t;
52 typedef char muChar_t;
54 typedef wchar_t muChar_t;
59 typedef double muFloat_t;
62 typedef muFloat_t (*muFun0_t )();
63 typedef muFloat_t (*muFun1_t )(muFloat_t);
64 typedef muFloat_t (*muFun2_t )(muFloat_t, muFloat_t);
65 typedef muFloat_t (*muFun3_t )(muFloat_t, muFloat_t, muFloat_t);
66 typedef muFloat_t (*muFun4_t )(muFloat_t, muFloat_t, muFloat_t, muFloat_t);
67 typedef muFloat_t (*muFun5_t )(muFloat_t, muFloat_t, muFloat_t, muFloat_t, muFloat_t);
68 typedef muFloat_t (*muFun6_t )(muFloat_t, muFloat_t, muFloat_t, muFloat_t, muFloat_t, muFloat_t);
69 typedef muFloat_t (*muFun7_t )(muFloat_t, muFloat_t, muFloat_t, muFloat_t, muFloat_t, muFloat_t, muFloat_t);
70 typedef muFloat_t (*muFun8_t )(muFloat_t, muFloat_t, muFloat_t, muFloat_t, muFloat_t, muFloat_t, muFloat_t, muFloat_t);
71 typedef muFloat_t (*muFun9_t )(muFloat_t, muFloat_t, muFloat_t, muFloat_t, muFloat_t, muFloat_t, muFloat_t, muFloat_t, muFloat_t);
72 typedef muFloat_t (*muFun10_t)(muFloat_t, muFloat_t, muFloat_t, muFloat_t, muFloat_t, muFloat_t, muFloat_t, muFloat_t, muFloat_t, muFloat_t);
75 typedef muFloat_t (*muBulkFun0_t )(int, int);
76 typedef muFloat_t (*muBulkFun1_t )(int, int, muFloat_t);
77 typedef muFloat_t (*muBulkFun2_t )(int, int, muFloat_t, muFloat_t);
78 typedef muFloat_t (*muBulkFun3_t )(int, int, muFloat_t, muFloat_t, muFloat_t);
79 typedef muFloat_t (*muBulkFun4_t )(int, int, muFloat_t, muFloat_t, muFloat_t, muFloat_t);
80 typedef muFloat_t (*muBulkFun5_t )(int, int, muFloat_t, muFloat_t, muFloat_t, muFloat_t, muFloat_t);
81 typedef muFloat_t (*muBulkFun6_t )(int, int, muFloat_t, muFloat_t, muFloat_t, muFloat_t, muFloat_t, muFloat_t);
82 typedef muFloat_t (*muBulkFun7_t )(int, int, muFloat_t, muFloat_t, muFloat_t, muFloat_t, muFloat_t, muFloat_t, muFloat_t);
83 typedef muFloat_t (*muBulkFun8_t )(int, int, muFloat_t, muFloat_t, muFloat_t, muFloat_t, muFloat_t, muFloat_t, muFloat_t, muFloat_t);
84 typedef muFloat_t (*muBulkFun9_t )(int, int, muFloat_t, muFloat_t, muFloat_t, muFloat_t, muFloat_t, muFloat_t, muFloat_t, muFloat_t, muFloat_t);
85 typedef muFloat_t (*muBulkFun10_t)(int, int, muFloat_t, muFloat_t, muFloat_t, muFloat_t, muFloat_t, muFloat_t, muFloat_t, muFloat_t, muFloat_t, muFloat_t);
87 typedef muFloat_t (*muMultFun_t)(
const muFloat_t*, muInt_t);
88 typedef muFloat_t (*muStrFun1_t)(
const muChar_t*);
89 typedef muFloat_t (*muStrFun2_t)(
const muChar_t*, muFloat_t);
90 typedef muFloat_t (*muStrFun3_t)(
const muChar_t*, muFloat_t, muFloat_t);
93 typedef void (*muErrorHandler_t)(muParserHandle_t a_hParser);
94 typedef muFloat_t* (*muFacFun_t)(
const muChar_t*,
void*);
95 typedef muInt_t (*muIdentFun_t)(
const muChar_t*, muInt_t*, muFloat_t*);
99 static const int muOPRT_ASCT_LEFT = 0;
100 static const int muOPRT_ASCT_RIGHT = 1;
102 static const int muBASETYPE_FLOAT = 0;
103 static const int muBASETYPE_INT = 1;
115 API_EXPORT(muParserHandle_t) mupCreate(
int nBaseType);
116 API_EXPORT(
void) mupRelease(muParserHandle_t a_hParser);
117 API_EXPORT(const muChar_t*) mupGetExpr(muParserHandle_t a_hParser);
118 API_EXPORT(
void) mupSetExpr(muParserHandle_t a_hParser, const muChar_t *a_szExpr);
119 API_EXPORT(
void) mupSetVarFactory(muParserHandle_t a_hParser, muFacFun_t a_pFactory,
void* pUserData);
120 API_EXPORT(const muChar_t*) mupGetVersion(muParserHandle_t a_hParser);
121 API_EXPORT(muFloat_t) mupEval(muParserHandle_t a_hParser);
122 API_EXPORT(muFloat_t*) mupEvalMulti(muParserHandle_t a_hParser,
int *nNum);
123 API_EXPORT(
void) mupEvalBulk(muParserHandle_t a_hParser, muFloat_t *a_fResult,
int nSize);
126 API_EXPORT(
void) mupDefineFun0(muParserHandle_t a_hParser, const muChar_t *a_szName, muFun0_t a_pFun, muBool_t a_bOptimize);
127 API_EXPORT(
void) mupDefineFun1(muParserHandle_t a_hParser, const muChar_t *a_szName, muFun1_t a_pFun, muBool_t a_bOptimize);
128 API_EXPORT(
void) mupDefineFun2(muParserHandle_t a_hParser, const muChar_t *a_szName, muFun2_t a_pFun, muBool_t a_bOptimize);
129 API_EXPORT(
void) mupDefineFun3(muParserHandle_t a_hParser, const muChar_t *a_szName, muFun3_t a_pFun, muBool_t a_bOptimize);
130 API_EXPORT(
void) mupDefineFun4(muParserHandle_t a_hParser, const muChar_t *a_szName, muFun4_t a_pFun, muBool_t a_bOptimize);
131 API_EXPORT(
void) mupDefineFun5(muParserHandle_t a_hParser, const muChar_t *a_szName, muFun5_t a_pFun, muBool_t a_bOptimize);
132 API_EXPORT(
void) mupDefineFun6(muParserHandle_t a_hParser, const muChar_t *a_szName, muFun6_t a_pFun, muBool_t a_bOptimize);
133 API_EXPORT(
void) mupDefineFun7(muParserHandle_t a_hParser, const muChar_t *a_szName, muFun7_t a_pFun, muBool_t a_bOptimize);
134 API_EXPORT(
void) mupDefineFun8(muParserHandle_t a_hParser, const muChar_t *a_szName, muFun8_t a_pFun, muBool_t a_bOptimize);
135 API_EXPORT(
void) mupDefineFun9(muParserHandle_t a_hParser, const muChar_t *a_szName, muFun9_t a_pFun, muBool_t a_bOptimize);
136 API_EXPORT(
void) mupDefineFun10(muParserHandle_t a_hParser, const muChar_t *a_szName, muFun10_t a_pFun, muBool_t a_bOptimize);
139 API_EXPORT(
void) mupDefineBulkFun0(muParserHandle_t a_hParser, const muChar_t *a_szName, muBulkFun0_t a_pFun);
140 API_EXPORT(
void) mupDefineBulkFun1(muParserHandle_t a_hParser, const muChar_t *a_szName, muBulkFun1_t a_pFun);
141 API_EXPORT(
void) mupDefineBulkFun2(muParserHandle_t a_hParser, const muChar_t *a_szName, muBulkFun2_t a_pFun);
142 API_EXPORT(
void) mupDefineBulkFun3(muParserHandle_t a_hParser, const muChar_t *a_szName, muBulkFun3_t a_pFun);
143 API_EXPORT(
void) mupDefineBulkFun4(muParserHandle_t a_hParser, const muChar_t *a_szName, muBulkFun4_t a_pFun);
144 API_EXPORT(
void) mupDefineBulkFun5(muParserHandle_t a_hParser, const muChar_t *a_szName, muBulkFun5_t a_pFun);
145 API_EXPORT(
void) mupDefineBulkFun6(muParserHandle_t a_hParser, const muChar_t *a_szName, muBulkFun6_t a_pFun);
146 API_EXPORT(
void) mupDefineBulkFun7(muParserHandle_t a_hParser, const muChar_t *a_szName, muBulkFun7_t a_pFun);
147 API_EXPORT(
void) mupDefineBulkFun8(muParserHandle_t a_hParser, const muChar_t *a_szName, muBulkFun8_t a_pFun);
148 API_EXPORT(
void) mupDefineBulkFun9(muParserHandle_t a_hParser, const muChar_t *a_szName, muBulkFun9_t a_pFun);
149 API_EXPORT(
void) mupDefineBulkFun10(muParserHandle_t a_hParser, const muChar_t *a_szName, muBulkFun10_t a_pFun);
152 API_EXPORT(
void) mupDefineStrFun1(muParserHandle_t a_hParser, const muChar_t *a_szName, muStrFun1_t a_pFun);
153 API_EXPORT(
void) mupDefineStrFun2(muParserHandle_t a_hParser, const muChar_t *a_szName, muStrFun2_t a_pFun);
154 API_EXPORT(
void) mupDefineStrFun3(muParserHandle_t a_hParser, const muChar_t *a_szName, muStrFun3_t a_pFun);
156 API_EXPORT(
void) mupDefineMultFun( muParserHandle_t a_hParser,
157 const muChar_t* a_szName,
159 muBool_t a_bOptimize);
161 API_EXPORT(
void) mupDefineOprt( muParserHandle_t a_hParser,
162 const muChar_t* a_szName,
166 muBool_t a_bOptimize);
168 API_EXPORT(
void) mupDefineConst( muParserHandle_t a_hParser,
169 const muChar_t* a_szName,
172 API_EXPORT(
void) mupDefineStrConst( muParserHandle_t a_hParser,
173 const muChar_t* a_szName,
174 const muChar_t *a_sVal );
176 API_EXPORT(
void) mupDefineVar( muParserHandle_t a_hParser,
177 const muChar_t* a_szName,
180 API_EXPORT(
void) mupDefineBulkVar( muParserHandle_t a_hParser,
181 const muChar_t* a_szName,
184 API_EXPORT(
void) mupDefinePostfixOprt( muParserHandle_t a_hParser,
185 const muChar_t* a_szName,
187 muBool_t a_bOptimize);
190 API_EXPORT(
void) mupDefineInfixOprt( muParserHandle_t a_hParser,
191 const muChar_t* a_szName,
193 muBool_t a_bOptimize);
196 API_EXPORT(
void) mupDefineNameChars(muParserHandle_t a_hParser, const muChar_t* a_szCharset);
197 API_EXPORT(
void) mupDefineOprtChars(muParserHandle_t a_hParser, const muChar_t* a_szCharset);
198 API_EXPORT(
void) mupDefineInfixOprtChars(muParserHandle_t a_hParser, const muChar_t* a_szCharset);
201 API_EXPORT(
void) mupRemoveVar(muParserHandle_t a_hParser, const muChar_t* a_szName);
202 API_EXPORT(
void) mupClearVar(muParserHandle_t a_hParser);
203 API_EXPORT(
void) mupClearConst(muParserHandle_t a_hParser);
204 API_EXPORT(
void) mupClearOprt(muParserHandle_t a_hParser);
205 API_EXPORT(
void) mupClearFun(muParserHandle_t a_hParser);
208 API_EXPORT(
int) mupGetExprVarNum(muParserHandle_t a_hParser);
209 API_EXPORT(
int) mupGetVarNum(muParserHandle_t a_hParser);
210 API_EXPORT(
int) mupGetConstNum(muParserHandle_t a_hParser);
211 API_EXPORT(
void) mupGetExprVar(muParserHandle_t a_hParser,
unsigned a_iVar, const muChar_t** a_pszName, muFloat_t** a_pVar);
212 API_EXPORT(
void) mupGetVar(muParserHandle_t a_hParser,
unsigned a_iVar, const muChar_t** a_pszName, muFloat_t** a_pVar);
213 API_EXPORT(
void) mupGetConst(muParserHandle_t a_hParser,
unsigned a_iVar, const muChar_t** a_pszName, muFloat_t* a_pVar);
214 API_EXPORT(
void) mupSetArgSep(muParserHandle_t a_hParser, const muChar_t cArgSep);
215 API_EXPORT(
void) mupSetDecSep(muParserHandle_t a_hParser, const muChar_t cArgSep);
216 API_EXPORT(
void) mupSetThousandsSep(muParserHandle_t a_hParser, const muChar_t cArgSep);
217 API_EXPORT(
void) mupResetLocale(muParserHandle_t a_hParser);
220 API_EXPORT(
void) mupAddValIdent(muParserHandle_t a_hParser, muIdentFun_t);
223 API_EXPORT(muBool_t) mupError(muParserHandle_t a_hParser);
224 API_EXPORT(
void) mupErrorReset(muParserHandle_t a_hParser);
225 API_EXPORT(
void) mupSetErrorHandler(muParserHandle_t a_hParser, muErrorHandler_t a_pErrHandler);
226 API_EXPORT(const muChar_t*) mupGetErrorMsg(muParserHandle_t a_hParser);
227 API_EXPORT(muInt_t) mupGetErrorCode(muParserHandle_t a_hParser);
228 API_EXPORT(muInt_t) mupGetErrorPos(muParserHandle_t a_hParser);
229 API_EXPORT(const muChar_t*) mupGetErrorToken(muParserHandle_t a_hParser);
234 API_EXPORT(muFloat_t*) mupCreateVar();
235 API_EXPORT(
void) mupReleaseVar(muFloat_t*);
241 #endif // include guard