MADNESS  version 0.9
muParserDLL.h
Go to the documentation of this file.
1 /*
2  __________
3  _____ __ __\______ \_____ _______ ______ ____ _______
4  / \ | | \| ___/\__ \ \_ __ \/ ___/_/ __ \\_ __ \
5  | Y Y \| | /| | / __ \_| | \/\___ \ \ ___/ | | \/
6  |__|_| /|____/ |____| (____ /|__| /____ > \___ >|__|
7  \/ \/ \/ \/
8  Copyright (C) 2004-2008 Ingo Berg
9 
10  Permission is hereby granted, free of charge, to any person obtaining a copy of this
11  software and associated documentation files (the "Software"), to deal in the Software
12  without restriction, including without limitation the rights to use, copy, modify,
13  merge, publish, distribute, sublicense, and/or sell copies of the Software, and to
14  permit persons to whom the Software is furnished to do so, subject to the following conditions:
15 
16  The above copyright notice and this permission notice shall be included in all copies or
17  substantial portions of the Software.
18 
19  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
20  NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
21  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
22  DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
24 */
25 #ifndef MU_PARSER_DLL_H
26 #define MU_PARSER_DLL_H
27 
28 #if defined(_WIN32)
29  #ifdef MUPARSERLIB_EXPORTS
30  #define API_EXPORT(TYPE) extern "C" __declspec(dllexport) TYPE __stdcall
31  #else
32  #define API_EXPORT(TYPE) extern __declspec(dllimport) TYPE __stdcall
33  #endif
34 #else
35  #define API_EXPORT(TYPE) TYPE
36 #endif
37 
42 // Basic types
43 typedef void* muParserHandle_t; // parser handle
44 typedef char muChar_t; // character type
45 typedef int muBool_t; // boolean type
46 typedef int muInt_t; // integer type
47 typedef double muFloat_t; // floating point type
48 
49 // function types for calculation
50 typedef muFloat_t (*muFun0_t)();
56 typedef muFloat_t (*muMultFun_t)(const muFloat_t*, muInt_t);
57 typedef muFloat_t (*muStrFun1_t)(const muChar_t*);
60 
61 // Functions for parser management
62 typedef void (*muErrorHandler_t)(muParserHandle_t a_hParser); // [optional] callback to an error handler
63 typedef muFloat_t* (*muFacFun_t)(const muChar_t*, void*); // [optional] callback for creating new variables
64 typedef muInt_t (*muIdentFun_t)(const muChar_t*, muInt_t*, muFloat_t*); // [optional] value identification callbacks
65 
66 //-----------------------------------------------------------------------------------------------------
67 //
68 //
69 // muParser C compatible bindings
70 //
71 //
72 //-----------------------------------------------------------------------------------------------------
73 
74 // Basic operations / initialization
75 API_EXPORT(muParserHandle_t) mupCreate();
76 API_EXPORT(void) mupRelease(muParserHandle_t a_hParser);
77 API_EXPORT(const muChar_t*) mupGetExpr(muParserHandle_t a_hParser);
78 API_EXPORT(void) mupSetExpr(muParserHandle_t a_hParser, const muChar_t *a_szExpr);
79 API_EXPORT(void) mupSetVarFactory(muParserHandle_t a_hParser, muFacFun_t a_pFactory, void* pUserData);
80 
81 API_EXPORT(muFloat_t) mupEval(muParserHandle_t a_hParser);
82 
83 // Defining callbacks / variables / constants
85 API_EXPORT(void) mupDefineFun1(muParserHandle_t a_hParser, const muChar_t *a_szName, muFun1_t a_pFun, muBool_t a_bOptimize);
86 API_EXPORT(void) mupDefineFun2(muParserHandle_t a_hParser, const muChar_t *a_szName, muFun2_t a_pFun, muBool_t a_bOptimize);
87 API_EXPORT(void) mupDefineFun3(muParserHandle_t a_hParser, const muChar_t *a_szName, muFun3_t a_pFun, muBool_t a_bOptimize);
88 API_EXPORT(void) mupDefineFun4(muParserHandle_t a_hParser, const muChar_t *a_szName, muFun4_t a_pFun, muBool_t a_bOptimize);
89 API_EXPORT(void) mupDefineFun5(muParserHandle_t a_hParser, const muChar_t *a_szName, muFun5_t a_pFun, muBool_t a_bOptimize);
90 // string functions
91 API_EXPORT(void) mupDefineStrFun1(muParserHandle_t a_hParser, const muChar_t *a_szName, muStrFun1_t a_pFun);
92 API_EXPORT(void) mupDefineStrFun2(muParserHandle_t a_hParser, const muChar_t *a_szName, muStrFun2_t a_pFun);
93 API_EXPORT(void) mupDefineStrFun3(muParserHandle_t a_hParser, const muChar_t *a_szName, muStrFun3_t a_pFun);
94 
95 API_EXPORT(void) mupDefineMultFun( muParserHandle_t a_hParser,
96  const muChar_t* a_szName,
97  muMultFun_t a_pFun,
98  muBool_t a_bOptimize);
99 
100 API_EXPORT(void) mupDefineOprt( muParserHandle_t a_hParser,
101  const muChar_t* a_szName,
102  muFun2_t a_pFun,
103  muInt_t a_iPri1,
104  muBool_t a_bOptimize);
105 
106 API_EXPORT(void) mupDefineConst( muParserHandle_t a_hParser,
107  const muChar_t* a_szName,
108  muFloat_t a_fVal );
109 
110 API_EXPORT(void) mupDefineStrConst( muParserHandle_t a_hParser,
111  const muChar_t* a_szName,
112  const muChar_t *a_sVal );
113 
114 API_EXPORT(void) mupDefineVar( muParserHandle_t a_hParser,
115  const muChar_t* a_szName,
116  muFloat_t *a_fVar);
117 
118 API_EXPORT(void) mupDefinePostfixOprt( muParserHandle_t a_hParser,
119  const muChar_t* a_szName,
120  muFun1_t a_pOprt,
121  muBool_t a_bOptimize);
122 
123 
124 API_EXPORT(void) mupDefineInfixOprt( muParserHandle_t a_hParser,
125  const muChar_t* a_szName,
126  muFun1_t a_pOprt,
127  muBool_t a_bOptimize);
128 
129 // Define character sets for identifiers
130 API_EXPORT(void) mupDefineNameChars(muParserHandle_t a_hParser, const muChar_t* a_szCharset);
131 API_EXPORT(void) mupDefineOprtChars(muParserHandle_t a_hParser, const muChar_t* a_szCharset);
132 API_EXPORT(void) mupDefineInfixOprtChars(muParserHandle_t a_hParser, const muChar_t* a_szCharset);
133 
134 // Remove all / single variables
135 API_EXPORT(void) mupRemoveVar(muParserHandle_t a_hParser, const muChar_t* a_szName);
136 API_EXPORT(void) mupClearVar(muParserHandle_t a_hParser);
137 API_EXPORT(void) mupClearConst(muParserHandle_t a_hParser);
138 API_EXPORT(void) mupClearOprt(muParserHandle_t a_hParser);
139 API_EXPORT(void) mupClearFun(muParserHandle_t a_hParser);
140 
141 // Querying variables / expression variables / constants
142 API_EXPORT(int) mupGetExprVarNum(muParserHandle_t a_hParser);
143 API_EXPORT(int) mupGetVarNum(muParserHandle_t a_hParser);
144 API_EXPORT(int) mupGetConstNum(muParserHandle_t a_hParser);
145 API_EXPORT(void) mupGetExprVar(muParserHandle_t a_hParser, unsigned a_iVar, const muChar_t** a_pszName, muFloat_t** a_pVar);
146 API_EXPORT(void) mupGetVar(muParserHandle_t a_hParser, unsigned a_iVar, const muChar_t** a_pszName, muFloat_t** a_pVar);
147 API_EXPORT(void) mupGetConst(muParserHandle_t a_hParser, unsigned a_iVar, const muChar_t** a_pszName, muFloat_t* a_pVar);
148 API_EXPORT(void) mupSetArgSep(muParserHandle_t a_hParser, const muChar_t cArgSep);
149 API_EXPORT(void) mupSetDecSep(muParserHandle_t a_hParser, const muChar_t cArgSep);
150 API_EXPORT(void) mupSetThousandsSep(muParserHandle_t a_hParser, const muChar_t cArgSep);
151 
152 // Add value recognition callbacks
153 API_EXPORT(void) mupAddValIdent(muParserHandle_t a_hParser, muIdentFun_t);
154 
155 // Error handling
156 API_EXPORT(muBool_t) mupError(muParserHandle_t a_hParser);
157 API_EXPORT(void) mupErrorReset(muParserHandle_t a_hParser);
158 API_EXPORT(void) mupSetErrorHandler(muParserHandle_t a_hParser, muErrorHandler_t a_pErrHandler);
159 API_EXPORT(const muChar_t*) mupGetErrorMsg(muParserHandle_t a_hParser);
160 API_EXPORT(muInt_t) mupGetErrorCode(muParserHandle_t a_hParser);
161 API_EXPORT(muInt_t) mupGetErrorPos(muParserHandle_t a_hParser);
162 API_EXPORT(const muChar_t*) mupGetErrorToken(muParserHandle_t a_hParser);
163 API_EXPORT(const muChar_t*) mupGetErrorExpr(muParserHandle_t a_hParser);
164 
165 // This is used for .NET only. It creates a new variable allowing the dll to
166 // manage the variable rather than the .NET garbage collector.
167 API_EXPORT(muFloat_t*) mupCreateVar();
168 API_EXPORT(void) mupReleaseVar(muFloat_t*);
169 
170 
171 #endif // include guard
const muChar_t cArgSep
Definition: muParserDLL.h:148
int muInt_t
Definition: muParserDLL.h:46
muFloat_t(* muFun0_t)()
Definition: muParserDLL.h:50
#define API_EXPORT(TYPE)
Definition: muParserDLL.h:35
const muChar_t muFloat_t a_fVal
Definition: muParserDLL.h:107
muFloat_t(* muStrFun2_t)(const muChar_t *, muFloat_t)
Definition: muParserDLL.h:58
muFacFun_t a_pFactory
Definition: muParserDLL.h:79
muFloat_t(* muFun1_t)(muFloat_t)
Definition: muParserDLL.h:51
const muChar_t muFun0_t a_pFun
Definition: muParserDLL.h:84
muFloat_t(* muFun3_t)(muFloat_t, muFloat_t, muFloat_t)
Definition: muParserDLL.h:53
unsigned const muChar_t muFloat_t ** a_pVar
Definition: muParserDLL.h:145
muErrorHandler_t a_pErrHandler
Definition: muParserDLL.h:158
muFloat_t(* muStrFun1_t)(const muChar_t *)
Definition: muParserDLL.h:57
muFloat_t(* muStrFun3_t)(const muChar_t *, muFloat_t, muFloat_t)
Definition: muParserDLL.h:59
char muChar_t
Definition: muParserDLL.h:44
const muChar_t muFun1_t a_pOprt
Definition: muParserDLL.h:119
const muChar_t muFun2_t muInt_t a_iPri1
Definition: muParserDLL.h:101
muFloat_t *(* muFacFun_t)(const muChar_t *, void *)
Definition: muParserDLL.h:63
const muChar_t const muChar_t * a_sVal
Definition: muParserDLL.h:111
const muChar_t muFun0_t muBool_t a_bOptimize
Definition: muParserDLL.h:84
int muBool_t
Definition: muParserDLL.h:45
const muChar_t * a_szExpr
Definition: muParserDLL.h:78
const muChar_t * a_szName
Definition: muParserDLL.h:84
double muFloat_t
Definition: muParserDLL.h:47
unsigned a_iVar
Definition: muParserDLL.h:145
muFloat_t(* muFun4_t)(muFloat_t, muFloat_t, muFloat_t, muFloat_t)
Definition: muParserDLL.h:54
void(* muErrorHandler_t)(muParserHandle_t a_hParser)
Definition: muParserDLL.h:62
muFloat_t(* muFun5_t)(muFloat_t, muFloat_t, muFloat_t, muFloat_t, muFloat_t)
Definition: muParserDLL.h:55
const muChar_t muFloat_t * a_fVar
Definition: muParserDLL.h:115
const muChar_t * a_szCharset
Definition: muParserDLL.h:130
unsigned const muChar_t ** a_pszName
Definition: muParserDLL.h:145
void * muParserHandle_t
Definition: muParserDLL.h:43
muFloat_t(* muMultFun_t)(const muFloat_t *, muInt_t)
Definition: muParserDLL.h:56
muInt_t(* muIdentFun_t)(const muChar_t *, muInt_t *, muFloat_t *)
Definition: muParserDLL.h:64
muFacFun_t void * pUserData
Definition: muParserDLL.h:79
muFloat_t(* muFun2_t)(muFloat_t, muFloat_t)
Definition: muParserDLL.h:52