29 #if defined(MUPARSER_DLL)
32 #define WIN32_LEAN_AND_MEAN
33 #define _CRT_SECURE_NO_WARNINGS
34 #define _CRT_SECURE_NO_DEPRECATE
52 #pragma warning(disable : 26812)
61 catch (muError_t &e) \
63 ParserTag *pTag = static_cast<ParserTag*>(a_hParser); \
65 pTag->bError = true; \
66 if (pTag->errHandler) \
67 (pTag->errHandler)(a_hParser); \
71 ParserTag *pTag = static_cast<ParserTag*>(a_hParser); \
72 pTag->exc = muError_t(mu::ecINTERNAL_ERROR); \
73 pTag->bError = true; \
74 if (pTag->errHandler) \
75 (pTag->errHandler)(a_hParser); \
91 : pParser((nType == muBASETYPE_FLOAT)
92 ? (
mu::ParserBase*)new
mu::Parser()
93 : (nType == muBASETYPE_INT) ? (
mu::ParserBase*)new
mu::ParserInt() : nullptr)
97 , m_nParserType(nType)
107 muErrorHandler_t errHandler;
111 ParserTag(
const ParserTag& ref);
112 ParserTag& operator=(
const ParserTag& ref);
117 static muChar_t s_tmpOutBuf[2048];
119 template <
typename T>
120 constexpr std::size_t count_of(
const T& array)
122 return (
sizeof(array) /
sizeof(array[0]));
134 inline muParser_t* AsParser(muParserHandle_t a_hParser)
136 return static_cast<ParserTag*
>(a_hParser)->pParser;
140 inline ParserTag* AsParserTag(muParserHandle_t a_hParser)
142 return static_cast<ParserTag*
>(a_hParser);
148 BOOL APIENTRY DllMain(HANDLE , DWORD ul_reason_for_call, LPVOID )
150 switch (ul_reason_for_call)
152 case DLL_PROCESS_ATTACH:
155 case DLL_THREAD_ATTACH:
156 case DLL_THREAD_DETACH:
157 case DLL_PROCESS_DETACH:
174 API_EXPORT(
void) mupSetVarFactory(muParserHandle_t a_hParser, muFacFun_t a_pFactory,
void* pUserData)
177 muParser_t* p(AsParser(a_hParser));
178 p->SetVarFactory(a_pFactory, pUserData);
184 API_EXPORT(muParserHandle_t) mupCreate(
int nBaseType)
188 case muBASETYPE_FLOAT:
return (
void*)(
new ParserTag(muBASETYPE_FLOAT));
189 case muBASETYPE_INT:
return (
void*)(
new ParserTag(muBASETYPE_INT));
190 default:
return nullptr;
196 API_EXPORT(
void) mupRelease(muParserHandle_t a_hParser)
199 ParserTag* p =
static_cast<ParserTag*
>(a_hParser);
205 API_EXPORT(
const muChar_t*) mupGetVersion(muParserHandle_t a_hParser)
208 muParser_t*
const p(AsParser(a_hParser));
211 snprintf(s_tmpOutBuf, count_of(s_tmpOutBuf),
"%s", p->GetVersion().c_str());
213 swprintf(s_tmpOutBuf, count_of(s_tmpOutBuf),
_T(
"%s"), p->GetVersion().c_str());
223 API_EXPORT(muFloat_t) mupEval(muParserHandle_t a_hParser)
226 muParser_t*
const p(AsParser(a_hParser));
233 API_EXPORT(muFloat_t*) mupEvalMulti(muParserHandle_t a_hParser,
int* nNum)
237 throw std::runtime_error(
"Argument is null!");
239 muParser_t*
const p(AsParser(a_hParser));
240 return p->Eval(*nNum);
246 API_EXPORT(
void) mupEvalBulk(muParserHandle_t a_hParser, muFloat_t* a_res,
int nSize)
249 muParser_t* p(AsParser(a_hParser));
250 p->Eval(a_res, nSize);
255 API_EXPORT(
void) mupSetExpr(muParserHandle_t a_hParser, const muChar_t* a_szExpr)
258 muParser_t*
const p(AsParser(a_hParser));
259 p->SetExpr(a_szExpr);
264 API_EXPORT(
void) mupRemoveVar(muParserHandle_t a_hParser, const muChar_t* a_szName)
267 muParser_t*
const p(AsParser(a_hParser));
268 p->RemoveVar(a_szName);
276 API_EXPORT(
void) mupClearVar(muParserHandle_t a_hParser)
279 muParser_t*
const p(AsParser(a_hParser));
288 API_EXPORT(
void) mupClearConst(muParserHandle_t a_hParser)
291 muParser_t*
const p(AsParser(a_hParser));
300 API_EXPORT(
void) mupClearOprt(muParserHandle_t a_hParser)
303 muParser_t*
const p(AsParser(a_hParser));
309 API_EXPORT(
void) mupClearFun(muParserHandle_t a_hParser)
312 muParser_t*
const p(AsParser(a_hParser));
318 API_EXPORT(
void) mupDefineFun0(muParserHandle_t a_hParser,
319 const muChar_t* a_szName,
321 muBool_t a_bAllowOpt)
324 muParser_t*
const p(AsParser(a_hParser));
325 p->DefineFun(a_szName, a_pFun, a_bAllowOpt != 0);
330 API_EXPORT(
void) mupDefineFun1(muParserHandle_t a_hParser, const muChar_t* a_szName, muFun1_t a_pFun, muBool_t a_bAllowOpt)
333 muParser_t*
const p(AsParser(a_hParser));
334 p->DefineFun(a_szName, a_pFun, a_bAllowOpt != 0);
339 API_EXPORT(
void) mupDefineFun2(muParserHandle_t a_hParser, const muChar_t* a_szName, muFun2_t a_pFun, muBool_t a_bAllowOpt)
342 muParser_t*
const p(AsParser(a_hParser));
343 p->DefineFun(a_szName, a_pFun, a_bAllowOpt != 0);
348 API_EXPORT(
void) mupDefineFun3(muParserHandle_t a_hParser, const muChar_t* a_szName, muFun3_t a_pFun, muBool_t a_bAllowOpt)
351 muParser_t*
const p(AsParser(a_hParser));
352 p->DefineFun(a_szName, a_pFun, a_bAllowOpt != 0);
357 API_EXPORT(
void) mupDefineFun4(muParserHandle_t a_hParser, const muChar_t* a_szName, muFun4_t a_pFun, muBool_t a_bAllowOpt)
360 muParser_t*
const p(AsParser(a_hParser));
361 p->DefineFun(a_szName, a_pFun, a_bAllowOpt != 0);
366 API_EXPORT(
void) mupDefineFun5(muParserHandle_t a_hParser, const muChar_t* a_szName, muFun5_t a_pFun, muBool_t a_bAllowOpt)
369 muParser_t*
const p(AsParser(a_hParser));
370 p->DefineFun(a_szName, a_pFun, a_bAllowOpt != 0);
375 API_EXPORT(
void) mupDefineFun6(muParserHandle_t a_hParser, const muChar_t* a_szName, muFun6_t a_pFun, muBool_t a_bAllowOpt)
378 muParser_t*
const p(AsParser(a_hParser));
379 p->DefineFun(a_szName, a_pFun, a_bAllowOpt != 0);
384 API_EXPORT(
void) mupDefineFun7(muParserHandle_t a_hParser, const muChar_t* a_szName, muFun7_t a_pFun, muBool_t a_bAllowOpt)
387 muParser_t*
const p(AsParser(a_hParser));
388 p->DefineFun(a_szName, a_pFun, a_bAllowOpt != 0);
393 API_EXPORT(
void) mupDefineFun8(muParserHandle_t a_hParser, const muChar_t* a_szName, muFun8_t a_pFun, muBool_t a_bAllowOpt)
396 muParser_t*
const p(AsParser(a_hParser));
397 p->DefineFun(a_szName, a_pFun, a_bAllowOpt != 0);
402 API_EXPORT(
void) mupDefineFun9(muParserHandle_t a_hParser, const muChar_t* a_szName, muFun9_t a_pFun, muBool_t a_bAllowOpt)
405 muParser_t*
const p(AsParser(a_hParser));
406 p->DefineFun(a_szName, a_pFun, a_bAllowOpt != 0);
411 API_EXPORT(
void) mupDefineFun10(muParserHandle_t a_hParser, const muChar_t* a_szName, muFun10_t a_pFun, muBool_t a_bAllowOpt)
414 muParser_t*
const p(AsParser(a_hParser));
415 p->DefineFun(a_szName, a_pFun, a_bAllowOpt != 0);
420 API_EXPORT(
void) mupDefineFunUserData0(muParserHandle_t a_hParser, const muChar_t* a_szName, muFunUserData0_t a_pFun,
void* a_pUserData, muBool_t a_bAllowOpt)
423 muParser_t*
const p(AsParser(a_hParser));
424 p->DefineFunUserData(a_szName, a_pFun, a_pUserData, a_bAllowOpt != 0);
429 API_EXPORT(
void) mupDefineFunUserData1(muParserHandle_t a_hParser, const muChar_t* a_szName, muFunUserData1_t a_pFun,
void* a_pUserData, muBool_t a_bAllowOpt)
432 muParser_t*
const p(AsParser(a_hParser));
433 p->DefineFunUserData(a_szName, a_pFun, a_pUserData, a_bAllowOpt != 0);
438 API_EXPORT(
void) mupDefineFunUserData2(muParserHandle_t a_hParser, const muChar_t* a_szName, muFunUserData2_t a_pFun,
void* a_pUserData, muBool_t a_bAllowOpt)
441 muParser_t*
const p(AsParser(a_hParser));
442 p->DefineFunUserData(a_szName, a_pFun, a_pUserData, a_bAllowOpt != 0);
447 API_EXPORT(
void) mupDefineFunUserData3(muParserHandle_t a_hParser, const muChar_t* a_szName, muFunUserData3_t a_pFun,
void* a_pUserData, muBool_t a_bAllowOpt)
450 muParser_t*
const p(AsParser(a_hParser));
451 p->DefineFunUserData(a_szName, a_pFun, a_pUserData, a_bAllowOpt != 0);
456 API_EXPORT(
void) mupDefineFunUserData4(muParserHandle_t a_hParser, const muChar_t* a_szName, muFunUserData4_t a_pFun,
void* a_pUserData, muBool_t a_bAllowOpt)
459 muParser_t*
const p(AsParser(a_hParser));
460 p->DefineFunUserData(a_szName, a_pFun, a_pUserData, a_bAllowOpt != 0);
465 API_EXPORT(
void) mupDefineFunUserData5(muParserHandle_t a_hParser, const muChar_t* a_szName, muFunUserData5_t a_pFun,
void* a_pUserData, muBool_t a_bAllowOpt)
468 muParser_t*
const p(AsParser(a_hParser));
469 p->DefineFunUserData(a_szName, a_pFun, a_pUserData, a_bAllowOpt != 0);
474 API_EXPORT(
void) mupDefineFunUserData6(muParserHandle_t a_hParser, const muChar_t* a_szName, muFunUserData6_t a_pFun,
void* a_pUserData, muBool_t a_bAllowOpt)
477 muParser_t*
const p(AsParser(a_hParser));
478 p->DefineFunUserData(a_szName, a_pFun, a_pUserData, a_bAllowOpt != 0);
483 API_EXPORT(
void) mupDefineFunUserData7(muParserHandle_t a_hParser, const muChar_t* a_szName, muFunUserData7_t a_pFun,
void* a_pUserData, muBool_t a_bAllowOpt)
486 muParser_t*
const p(AsParser(a_hParser));
487 p->DefineFunUserData(a_szName, a_pFun, a_pUserData, a_bAllowOpt != 0);
492 API_EXPORT(
void) mupDefineFunUserData8(muParserHandle_t a_hParser, const muChar_t* a_szName, muFunUserData8_t a_pFun,
void* a_pUserData, muBool_t a_bAllowOpt)
495 muParser_t*
const p(AsParser(a_hParser));
496 p->DefineFunUserData(a_szName, a_pFun, a_pUserData, a_bAllowOpt != 0);
501 API_EXPORT(
void) mupDefineFunUserData9(muParserHandle_t a_hParser, const muChar_t* a_szName, muFunUserData9_t a_pFun,
void* a_pUserData, muBool_t a_bAllowOpt)
504 muParser_t*
const p(AsParser(a_hParser));
505 p->DefineFunUserData(a_szName, a_pFun, a_pUserData, a_bAllowOpt != 0);
510 API_EXPORT(
void) mupDefineFunUserData10(muParserHandle_t a_hParser, const muChar_t* a_szName, muFunUserData10_t a_pFun,
void* a_pUserData, muBool_t a_bAllowOpt)
513 muParser_t*
const p(AsParser(a_hParser));
514 p->DefineFunUserData(a_szName, a_pFun, a_pUserData, a_bAllowOpt != 0);
519 API_EXPORT(
void) mupDefineBulkFun0(muParserHandle_t a_hParser, const muChar_t* a_szName, muBulkFun0_t a_pFun)
522 muParser_t*
const p(AsParser(a_hParser));
523 p->DefineFun(a_szName, a_pFun,
false);
528 API_EXPORT(
void) mupDefineBulkFun1(muParserHandle_t a_hParser, const muChar_t* a_szName, muBulkFun1_t a_pFun)
531 muParser_t*
const p(AsParser(a_hParser));
532 p->DefineFun(a_szName, a_pFun,
false);
537 API_EXPORT(
void) mupDefineBulkFun2(muParserHandle_t a_hParser, const muChar_t* a_szName, muBulkFun2_t a_pFun)
540 muParser_t*
const p(AsParser(a_hParser));
541 p->DefineFun(a_szName, a_pFun,
false);
546 API_EXPORT(
void) mupDefineBulkFun3(muParserHandle_t a_hParser, const muChar_t* a_szName, muBulkFun3_t a_pFun)
549 muParser_t*
const p(AsParser(a_hParser));
550 p->DefineFun(a_szName, a_pFun,
false);
555 API_EXPORT(
void) mupDefineBulkFun4(muParserHandle_t a_hParser, const muChar_t* a_szName, muBulkFun4_t a_pFun)
558 muParser_t*
const p(AsParser(a_hParser));
559 p->DefineFun(a_szName, a_pFun,
false);
564 API_EXPORT(
void) mupDefineBulkFun5(muParserHandle_t a_hParser, const muChar_t* a_szName, muBulkFun5_t a_pFun)
567 muParser_t*
const p(AsParser(a_hParser));
568 p->DefineFun(a_szName, a_pFun,
false);
573 API_EXPORT(
void) mupDefineBulkFun6(muParserHandle_t a_hParser, const muChar_t* a_szName, muBulkFun6_t a_pFun)
576 muParser_t*
const p(AsParser(a_hParser));
577 p->DefineFun(a_szName, a_pFun,
false);
582 API_EXPORT(
void) mupDefineBulkFun7(muParserHandle_t a_hParser, const muChar_t* a_szName, muBulkFun7_t a_pFun)
585 muParser_t*
const p(AsParser(a_hParser));
586 p->DefineFun(a_szName, a_pFun,
false);
591 API_EXPORT(
void) mupDefineBulkFun8(muParserHandle_t a_hParser, const muChar_t* a_szName, muBulkFun8_t a_pFun)
594 muParser_t*
const p(AsParser(a_hParser));
595 p->DefineFun(a_szName, a_pFun,
false);
600 API_EXPORT(
void) mupDefineBulkFun9(muParserHandle_t a_hParser, const muChar_t* a_szName, muBulkFun9_t a_pFun)
603 muParser_t*
const p(AsParser(a_hParser));
604 p->DefineFun(a_szName, a_pFun,
false);
609 API_EXPORT(
void) mupDefineBulkFun10(muParserHandle_t a_hParser, const muChar_t* a_szName, muBulkFun10_t a_pFun)
612 muParser_t*
const p(AsParser(a_hParser));
613 p->DefineFun(a_szName, a_pFun,
false);
618 API_EXPORT(
void) mupDefineBulkFunUserData0(muParserHandle_t a_hParser, const muChar_t* a_szName, muBulkFunUserData0_t a_pFun,
void* a_pUserData)
621 muParser_t*
const p(AsParser(a_hParser));
622 p->DefineFunUserData(a_szName, a_pFun, a_pUserData,
false);
627 API_EXPORT(
void) mupDefineBulkFunUserData1(muParserHandle_t a_hParser, const muChar_t* a_szName, muBulkFunUserData1_t a_pFun,
void* a_pUserData)
630 muParser_t*
const p(AsParser(a_hParser));
631 p->DefineFunUserData(a_szName, a_pFun, a_pUserData,
false);
636 API_EXPORT(
void) mupDefineBulkFunUserData2(muParserHandle_t a_hParser, const muChar_t* a_szName, muBulkFunUserData2_t a_pFun,
void* a_pUserData)
639 muParser_t*
const p(AsParser(a_hParser));
640 p->DefineFunUserData(a_szName, a_pFun, a_pUserData,
false);
645 API_EXPORT(
void) mupDefineBulkFunUserData3(muParserHandle_t a_hParser, const muChar_t* a_szName, muBulkFunUserData3_t a_pFun,
void* a_pUserData)
648 muParser_t*
const p(AsParser(a_hParser));
649 p->DefineFunUserData(a_szName, a_pFun, a_pUserData,
false);
654 API_EXPORT(
void) mupDefineBulkFunUserData4(muParserHandle_t a_hParser, const muChar_t* a_szName, muBulkFunUserData4_t a_pFun,
void* a_pUserData)
657 muParser_t*
const p(AsParser(a_hParser));
658 p->DefineFunUserData(a_szName, a_pFun, a_pUserData,
false);
663 API_EXPORT(
void) mupDefineBulkFunUserData5(muParserHandle_t a_hParser, const muChar_t* a_szName, muBulkFunUserData5_t a_pFun,
void* a_pUserData)
666 muParser_t*
const p(AsParser(a_hParser));
667 p->DefineFunUserData(a_szName, a_pFun, a_pUserData,
false);
672 API_EXPORT(
void) mupDefineBulkFunUserData6(muParserHandle_t a_hParser, const muChar_t* a_szName, muBulkFunUserData6_t a_pFun,
void* a_pUserData)
675 muParser_t*
const p(AsParser(a_hParser));
676 p->DefineFunUserData(a_szName, a_pFun, a_pUserData,
false);
681 API_EXPORT(
void) mupDefineBulkFunUserData7(muParserHandle_t a_hParser, const muChar_t* a_szName, muBulkFunUserData7_t a_pFun,
void* a_pUserData)
684 muParser_t*
const p(AsParser(a_hParser));
685 p->DefineFunUserData(a_szName, a_pFun, a_pUserData,
false);
690 API_EXPORT(
void) mupDefineBulkFunUserData8(muParserHandle_t a_hParser, const muChar_t* a_szName, muBulkFunUserData8_t a_pFun,
void* a_pUserData)
693 muParser_t*
const p(AsParser(a_hParser));
694 p->DefineFunUserData(a_szName, a_pFun, a_pUserData,
false);
699 API_EXPORT(
void) mupDefineBulkFunUserData9(muParserHandle_t a_hParser, const muChar_t* a_szName, muBulkFunUserData9_t a_pFun,
void* a_pUserData)
702 muParser_t*
const p(AsParser(a_hParser));
703 p->DefineFunUserData(a_szName, a_pFun, a_pUserData,
false);
708 API_EXPORT(
void) mupDefineBulkFunUserData10(muParserHandle_t a_hParser, const muChar_t* a_szName, muBulkFunUserData10_t a_pFun,
void* a_pUserData)
711 muParser_t*
const p(AsParser(a_hParser));
712 p->DefineFunUserData(a_szName, a_pFun, a_pUserData,
false);
717 API_EXPORT(
void) mupDefineStrFun1(muParserHandle_t a_hParser, const muChar_t* a_szName, muStrFun1_t a_pFun)
720 muParser_t*
const p(AsParser(a_hParser));
721 p->DefineFun(a_szName, a_pFun,
false);
726 API_EXPORT(
void) mupDefineStrFun2(muParserHandle_t a_hParser, const muChar_t* a_szName, muStrFun2_t a_pFun)
729 muParser_t*
const p(AsParser(a_hParser));
730 p->DefineFun(a_szName, a_pFun,
false);
735 API_EXPORT(
void) mupDefineStrFun3(muParserHandle_t a_hParser, const muChar_t* a_szName, muStrFun3_t a_pFun)
738 muParser_t*
const p(AsParser(a_hParser));
739 p->DefineFun(a_szName, a_pFun,
false);
744 API_EXPORT(
void) mupDefineStrFun4(muParserHandle_t a_hParser, const muChar_t* a_szName, muStrFun4_t a_pFun)
747 muParser_t*
const p(AsParser(a_hParser));
748 p->DefineFun(a_szName, a_pFun,
false);
753 API_EXPORT(
void) mupDefineStrFun5(muParserHandle_t a_hParser, const muChar_t* a_szName, muStrFun5_t a_pFun)
756 muParser_t*
const p(AsParser(a_hParser));
757 p->DefineFun(a_szName, a_pFun,
false);
762 API_EXPORT(
void) mupDefineStrFunUserData1(muParserHandle_t a_hParser, const muChar_t* a_szName, muStrFunUserData1_t a_pFun,
void* a_pUserData)
765 muParser_t*
const p(AsParser(a_hParser));
766 p->DefineFunUserData(a_szName, a_pFun, a_pUserData,
false);
771 API_EXPORT(
void) mupDefineStrFunUserData2(muParserHandle_t a_hParser, const muChar_t* a_szName, muStrFunUserData2_t a_pFun,
void* a_pUserData)
774 muParser_t*
const p(AsParser(a_hParser));
775 p->DefineFunUserData(a_szName, a_pFun, a_pUserData,
false);
780 API_EXPORT(
void) mupDefineStrFunUserData3(muParserHandle_t a_hParser, const muChar_t* a_szName, muStrFunUserData3_t a_pFun,
void* a_pUserData)
783 muParser_t*
const p(AsParser(a_hParser));
784 p->DefineFunUserData(a_szName, a_pFun, a_pUserData,
false);
789 API_EXPORT(
void) mupDefineStrFunUserData4(muParserHandle_t a_hParser, const muChar_t* a_szName, muStrFunUserData4_t a_pFun,
void* a_pUserData)
792 muParser_t*
const p(AsParser(a_hParser));
793 p->DefineFunUserData(a_szName, a_pFun, a_pUserData,
false);
798 API_EXPORT(
void) mupDefineStrFunUserData5(muParserHandle_t a_hParser, const muChar_t* a_szName, muStrFunUserData5_t a_pFun,
void* a_pUserData)
801 muParser_t*
const p(AsParser(a_hParser));
802 p->DefineFunUserData(a_szName, a_pFun, a_pUserData,
false);
807 API_EXPORT(
void) mupDefineMultFun(muParserHandle_t a_hParser, const muChar_t* a_szName, muMultFun_t a_pFun, muBool_t a_bAllowOpt)
810 muParser_t*
const p(AsParser(a_hParser));
811 p->DefineFun(a_szName, a_pFun, a_bAllowOpt != 0);
816 API_EXPORT(
void) mupDefineMultFunUserData(muParserHandle_t a_hParser, const muChar_t* a_szName, muMultFunUserData_t a_pFun,
void* a_pUserData, muBool_t a_bAllowOpt)
819 muParser_t*
const p(AsParser(a_hParser));
820 p->DefineFunUserData(a_szName, a_pFun, a_pUserData, a_bAllowOpt != 0);
825 API_EXPORT(
void) mupDefineOprt(muParserHandle_t a_hParser, const muChar_t* a_szName, muFun2_t a_pFun, muInt_t a_nPrec, muInt_t a_nOprtAsct, muBool_t a_bAllowOpt)
828 muParser_t*
const p(AsParser(a_hParser));
834 API_EXPORT(
void) mupDefineVar(muParserHandle_t a_hParser, const muChar_t* a_szName, muFloat_t* a_pVar)
837 muParser_t*
const p(AsParser(a_hParser));
838 p->DefineVar(a_szName, a_pVar);
843 API_EXPORT(
void) mupDefineBulkVar(muParserHandle_t a_hParser, const muChar_t* a_szName, muFloat_t* a_pVar)
846 muParser_t*
const p(AsParser(a_hParser));
847 p->DefineVar(a_szName, a_pVar);
852 API_EXPORT(
void) mupDefineConst(muParserHandle_t a_hParser, const muChar_t* a_szName, muFloat_t a_fVal)
855 muParser_t*
const p(AsParser(a_hParser));
856 p->DefineConst(a_szName, a_fVal);
861 API_EXPORT(
void) mupDefineStrConst(muParserHandle_t a_hParser, const muChar_t* a_szName, const muChar_t* a_szVal)
864 muParser_t*
const p(AsParser(a_hParser));
865 p->DefineStrConst(a_szName, a_szVal);
870 API_EXPORT(
const muChar_t*) mupGetExpr(muParserHandle_t a_hParser)
873 muParser_t*
const p(AsParser(a_hParser));
878 snprintf(s_tmpOutBuf, count_of(s_tmpOutBuf),
"%s", p->GetExpr().c_str());
880 swprintf(s_tmpOutBuf, count_of(s_tmpOutBuf),
_T(
"%s"), p->GetExpr().c_str());
890 API_EXPORT(
void) mupDefinePostfixOprt(muParserHandle_t a_hParser, const muChar_t* a_szName, muFun1_t a_pOprt, muBool_t a_bAllowOpt)
893 muParser_t*
const p(AsParser(a_hParser));
894 p->DefinePostfixOprt(a_szName, a_pOprt, a_bAllowOpt != 0);
899 API_EXPORT(
void) mupDefineInfixOprt(muParserHandle_t a_hParser, const muChar_t* a_szName, muFun1_t a_pOprt,
int a_iPrec, muBool_t a_bAllowOpt)
902 muParser_t*
const p(AsParser(a_hParser));
903 p->DefineInfixOprt(a_szName, a_pOprt, a_iPrec, a_bAllowOpt != 0);
908 API_EXPORT(
void) mupDefineNameChars(muParserHandle_t a_hParser, const muChar_t* a_szCharset)
910 muParser_t*
const p(AsParser(a_hParser));
911 p->DefineNameChars(a_szCharset);
915 API_EXPORT(
void) mupDefineOprtChars(muParserHandle_t a_hParser, const muChar_t* a_szCharset)
917 muParser_t*
const p(AsParser(a_hParser));
918 p->DefineOprtChars(a_szCharset);
922 API_EXPORT(
void) mupDefineInfixOprtChars(muParserHandle_t a_hParser, const muChar_t* a_szCharset)
924 muParser_t*
const p(AsParser(a_hParser));
925 p->DefineInfixOprtChars(a_szCharset);
934 API_EXPORT(
int) mupGetVarNum(muParserHandle_t a_hParser)
937 muParser_t*
const p(AsParser(a_hParser));
939 return (
int)VarMap.size();
961 API_EXPORT(
void) mupGetVar(muParserHandle_t a_hParser,
unsigned a_iVar, const muChar_t** a_szName, muFloat_t** a_pVar)
965 static muChar_t szName[1024];
968 muParser_t*
const p(AsParser(a_hParser));
971 if (a_iVar >= VarMap.size())
977 mu::varmap_type::const_iterator item;
979 item = VarMap.begin();
980 for (
unsigned i = 0; i < a_iVar; ++i)
984 strncpy(szName, item->first.c_str(), count_of(szName));
986 wcsncpy(szName, item->first.c_str(), count_of(szName));
989 szName[count_of(szName) - 1] = 0;
991 *a_szName = &szName[0];
992 *a_pVar = item->second;
1006 API_EXPORT(
int) mupGetExprVarNum(muParserHandle_t a_hParser)
1009 muParser_t*
const p(AsParser(a_hParser));
1011 return (
int)VarMap.size();
1034 API_EXPORT(
void) mupGetExprVar(muParserHandle_t a_hParser,
unsigned a_iVar, const muChar_t** a_szName, muFloat_t** a_pVar)
1038 static muChar_t szName[1024];
1041 muParser_t*
const p(AsParser(a_hParser));
1044 if (a_iVar >= VarMap.size())
1050 mu::varmap_type::const_iterator item;
1052 item = VarMap.begin();
1053 for (
unsigned i = 0; i < a_iVar; ++i)
1057 strncpy(szName, item->first.c_str(), count_of(szName));
1059 wcsncpy(szName, item->first.c_str(), count_of(szName));
1062 szName[count_of(szName) - 1] = 0;
1064 *a_szName = &szName[0];
1065 *a_pVar = item->second;
1075 API_EXPORT(
int) mupGetConstNum(muParserHandle_t a_hParser)
1078 muParser_t*
const p(AsParser(a_hParser));
1080 return (
int)ValMap.size();
1087 API_EXPORT(
void) mupSetArgSep(muParserHandle_t a_hParser, const muChar_t cArgSep)
1090 muParser_t*
const p(AsParser(a_hParser));
1091 p->SetArgSep(cArgSep);
1096 API_EXPORT(
void) mupResetLocale(muParserHandle_t a_hParser)
1099 muParser_t*
const p(AsParser(a_hParser));
1105 API_EXPORT(
void) mupSetDecSep(muParserHandle_t a_hParser, const muChar_t cDecSep)
1108 muParser_t*
const p(AsParser(a_hParser));
1109 p->SetDecSep(cDecSep);
1114 API_EXPORT(
void) mupSetThousandsSep(muParserHandle_t a_hParser, const muChar_t cThousandsSep)
1117 muParser_t*
const p(AsParser(a_hParser));
1118 p->SetThousandsSep(cThousandsSep);
1129 API_EXPORT(
void) mupGetConst(muParserHandle_t a_hParser,
unsigned a_iVar, const muChar_t** a_pszName, muFloat_t* a_fVal)
1133 static muChar_t szName[1024];
1136 muParser_t*
const p(AsParser(a_hParser));
1139 if (a_iVar >= ValMap.size())
1146 mu::valmap_type::const_iterator item;
1147 item = ValMap.begin();
1148 for (
unsigned i = 0; i < a_iVar; ++i)
1152 strncpy(szName, item->first.c_str(), count_of(szName));
1154 wcsncpy(szName, item->first.c_str(), count_of(szName));
1157 szName[count_of(szName) - 1] = 0;
1159 *a_pszName = &szName[0];
1160 *a_fVal = item->second;
1171 API_EXPORT(
void) mupAddValIdent(muParserHandle_t a_hParser, muIdentFun_t a_pFun)
1174 muParser_t* p(AsParser(a_hParser));
1175 p->AddValIdent(a_pFun);
1185 API_EXPORT(muBool_t) mupError(muParserHandle_t a_hParser)
1187 bool bError(AsParserTag(a_hParser)->bError);
1188 AsParserTag(a_hParser)->bError =
false;
1194 API_EXPORT(
void) mupErrorReset(muParserHandle_t a_hParser)
1196 AsParserTag(a_hParser)->bError =
false;
1200 API_EXPORT(
void) mupSetErrorHandler(muParserHandle_t a_hParser, muErrorHandler_t a_pHandler)
1202 AsParserTag(a_hParser)->errHandler = a_pHandler;
1207 API_EXPORT(
const muChar_t*) mupGetErrorMsg(muParserHandle_t a_hParser)
1209 ParserTag*
const p(AsParserTag(a_hParser));
1210 const muChar_t* pMsg = p->exc.GetMsg().c_str();
1215 snprintf(s_tmpOutBuf, count_of(s_tmpOutBuf),
"%s", pMsg);
1217 swprintf(s_tmpOutBuf, count_of(s_tmpOutBuf),
_T(
"%s"), pMsg);
1225 API_EXPORT(
const muChar_t*) mupGetErrorToken(muParserHandle_t a_hParser)
1227 ParserTag*
const p(AsParserTag(a_hParser));
1228 const muChar_t* pToken = p->exc.GetToken().c_str();
1233 snprintf(s_tmpOutBuf, count_of(s_tmpOutBuf),
"%s", pToken);
1235 swprintf(s_tmpOutBuf, count_of(s_tmpOutBuf),
_T(
"%s"), pToken);
1244 API_EXPORT(
int) mupGetErrorCode(muParserHandle_t a_hParser)
1246 return AsParserTag(a_hParser)->exc.GetCode();
1251 API_EXPORT(
int) mupGetErrorPos(muParserHandle_t a_hParser)
1253 return (
int)AsParserTag(a_hParser)->exc.GetPos();
1257 API_EXPORT(muFloat_t*) mupCreateVar()
1259 return new muFloat_t(0);
1263 API_EXPORT(
void) mupReleaseVar(muFloat_t* ptr)
1268 #if defined(_MSC_VER)
1269 #pragma warning(pop)
1272 #endif // MUPARSER_DLL
#define _T(x)
Activate this option in order to compile with OpenMP support.
std::map< string_type, value_type * > varmap_type
Type used for storing variables.
Definition of a parser using integer value.
Definition of the standard floating point parser.
EOprtAssociativity
Parser operator precedence values.
std::map< string_type, value_type > valmap_type
Type used for storing constants.
Error class of the parser.
Namespace for mathematical applications.
This file contains the DLL interface of muparser.
Mathematical expressions parser (base parser engine).
This file defines the error class used by the parser.