ALib C++ Library
Library Version: 2402 R1
Documentation generated by doxygen
Loading...
Searching...
No Matches
expressions.cpp
1// #################################################################################################
2// ALib C++ Library
3//
4// Copyright 2013-2024 A-Worx GmbH, Germany
5// Published under 'Boost Software License' (a free software license, see LICENSE.txt)
6// #################################################################################################
8
9#if !defined(ALIB_DOX)
10# if !defined (HPP_ALIB_EXPRESSIONS_DETAIL_VIRTUAL_MACHINE)
12# endif
13# if ALIB_CAMP && !defined(HPP_ALIB_CAMP_ERRORS)
15# endif
16# if ALIB_CAMP && !defined (HPP_ALIB_EXPRESSIONS_PLUGINS_DATEANDTIME)
18# endif
19# if !defined (HPP_ALIB_LANG_BASECAMP)
21# endif
22# if ALIB_CONFIGURATION && !defined (HPP_ALIB_CONFIG_CONFIG)
23# include "alib/config/config.hpp"
24# endif
25# if !defined(HPP_ALIB_ENUMS_SERIALIZATION)
27# endif
28# if !defined (HPP_ALIB_ENUMS_RECORDBOOTSTRAP)
30# endif
31# if ALIB_CAMP && !defined( HPP_ALIB_TIME_DATETIME)
32# include "alib/time/datetime.hpp"
33# endif
34#endif // !defined(ALIB_DOX)
35
38
39namespace alib {
40
42
43/** ************************************************************************************************
44 * This is the reference documentation of sub-namespace \c expressions of the \aliblink, which
45 * holds types of library module \alib_expressions.
46 *
47 * Extensive documentation for this module is provided with
48 * \ref alib_mod_expressions "ALib Module Expressions - Programmer's Manual".
49 **************************************************************************************************/
50namespace expressions {
51
52// ##########################################################################################
53// ### Static sample objects and signatures
54// ##########################################################################################
55Box Types::Void = nullptr;
56Box Types::Boolean = false;
57Box Types::Integer = static_cast<integer>(0);
58Box Types::Float = static_cast<double >(0.0);
60
61#if ALIB_CAMP
63Box Types::Duration= time::DateTime::Duration::FromNanoseconds(0);
64#endif
65
66Box* Signatures::Var [1] = { nullptr };
71Box* Signatures::IVar[2] = { &Types::Integer , nullptr };
75Box* Signatures::SVar[2] = { &Types::String , nullptr };
82#if ALIB_CAMP
86#endif
87
88#if !defined(ALIB_DOX)
89# define EOS ,
90#endif
91
92// ##########################################################################################
93// ### Module class implementation
94// ##########################################################################################
95
97: Camp( "EXPR" )
98{
99 ALIB_ASSERT_ERROR( this == &EXPRESSIONS, "EXPR",
100 "Instances of class Expressions must not be created. Use singleton alib::EXPRESSIONS" )
101}
102
103
105{
107 {
108 ALIB_BOXING_BOOTSTRAP_VTABLE_DBG_REGISTER( vt_expressions_exceptions )
109 ALIB_BOXING_BOOTSTRAP_VTABLE_DBG_REGISTER( vt_expressions_vmopcodes )
112
114
115 // add resources
118
119 // Type names
120
121 "T_VOID" , A_CHAR( "Void" ) ,
122 "T_BOOL" , A_CHAR( "Boolean" ) ,
123 "T_INT" , A_CHAR( "Integer" ) ,
124 "T_FLOAT" , A_CHAR( "Float" ) ,
125 "T_STR" , A_CHAR( "String" ) ,
126 "T_DATE" , A_CHAR( "DateTime" ) ,
127 "T_DUR" , A_CHAR( "Duration" ) ,
128
129 // unary ops
130 "UO0" , A_CHAR( "0" "," "NONE" ) ,
131 "UO1" , A_CHAR( "1" "," "+" ) ,
132 "UO2" , A_CHAR( "2" "," "-" ) ,
133 "UO3" , A_CHAR( "3" "," "!" ) ,
134 "UO4" , A_CHAR( "4" "," "~" ) ,
135 "UO5" , A_CHAR( "5" "," "*" ) ,
136
137
138 // Binary ops
139 "BO0" , A_CHAR( "0" "," "NONE" "," "0" ) ,
140 "BO1" , A_CHAR( "1" "," "[]" "," "100" ) ,
141 "BO2" , A_CHAR( "2" "," "*" "," "900" ) ,
142 "BO3" , A_CHAR( "3" "," "/" "," "900" ) ,
143 "BO4" , A_CHAR( "4" "," "%" "," "900" ) ,
144 "BO5" , A_CHAR( "5" "," "+" "," "800" ) ,
145 "BO6" , A_CHAR( "6" "," "-" "," "800" ) ,
146 "BO7" , A_CHAR( "7" "," "<<" "," "700" ) ,
147 "BO8" , A_CHAR( "8" "," ">>" "," "700" ) ,
148 "BO9" , A_CHAR( "9" "," "<" "," "600" ) ,
149 "BO10" , A_CHAR("10" "," "<=" "," "600" ) ,
150 "BO11" , A_CHAR("11" "," ">" "," "600" ) ,
151 "BO12" , A_CHAR("12" "," ">=" "," "600" ) ,
152 "BO13" , A_CHAR("13" "," "==" "," "500" ) ,
153 "BO14" , A_CHAR("14" "," "!=" "," "500" ) ,
154 "BO15" , A_CHAR("15" "," "&" "," "470" ) ,
155 "BO16" , A_CHAR("16" "," "^" "," "460" ) ,
156 "BO17" , A_CHAR("17" "," "|" "," "450" ) ,
157 "BO18" , A_CHAR("18" "," "&&" "," "440" ) ,
158 "BO19" , A_CHAR("19" "," "||" "," "430" ) ,
159 "BO20" , A_CHAR("20" "," "=" "," "300" ) ,
160 "BO21" , A_CHAR("21" "," "?:" "," "200" ) ,
161
162 // verbal operator aliases
163 "UOA0" , A_CHAR( "0" "," "Not" "," "!" ) ,
164 "BOA0" , A_CHAR( "0" "," "And" "," "&&") ,
165 "BOA1" , A_CHAR( "1" "," "Or" "," "||") ,
166 "BOA2" , A_CHAR( "2" "," "Sm" "," "<" ) ,
167 "BOA3" , A_CHAR( "3" "," "Smaller" "," "<" ) ,
168 "BOA4" , A_CHAR( "4" "," "Smeq" "," "<=") ,
169 "BOA5" , A_CHAR( "5" "," "Smaller_Or_Equal" "," "<=") ,
170 "BOA6" , A_CHAR( "6" "," "Gt" "," ">" ) ,
171 "BOA7" , A_CHAR( "7" "," "Greater" "," ">" ) ,
172 "BOA8" , A_CHAR( "8" "," "Gteq" "," ">=") ,
173 "BOA9" , A_CHAR( "9" "," "Greater_Or_Equal" "," ">=") ,
174 "BOA10", A_CHAR("10" "," "Eq" "," "==") ,
175 "BOA11", A_CHAR("11" "," "Equals" "," "==") ,
176 "BOA12", A_CHAR("12" "," "Neq" "," "!=") ,
177 "BOA13", A_CHAR("13" "," "Not_equals" "," "!=") ,
178
179 // expression function and "throw" keyword
180 "EF" , A_CHAR("Expression" " I 4"),
181 "EFT" , A_CHAR("throw"),
182
183 "E<" , A_CHAR("expressions::") ,
184
185 // parse errors
186 "E0" , A_CHAR( "1,SyntaxError" ",ED1" ),
187 "E1" , A_CHAR( "-1,ExpressionInfo" ",ED-1" ),
188 "E2" , A_CHAR( "-2,StdExceptionInfo" ",ED-2" ),
189 "E3" , A_CHAR( "2,EmptyExpressionString" ",ED2" ),
190 "E4" , A_CHAR( "5,SyntaxErrorExpectation" ",ED5" ),
191 "E5" , A_CHAR( "6,UnknownUnaryOperatorSymbol" ",ED6" ),
192 "E6" , A_CHAR( "7,UnknownBinaryOperatorSymbol" ",ED7" ),
193
194 // compile errors
195 "E7" , A_CHAR( "14,UnknownIdentifier" ",ED14" ),
196 "E8" , A_CHAR( "15,UnknownFunction" ",ED15" ),
197 "E9" , A_CHAR( "-15,FunctionHint" ",ED-15" ),
198 "E10", A_CHAR( "16,UnaryOperatorNotDefined" ",ED16" ),
199 "E11", A_CHAR( "17,BinaryOperatorNotDefined" ",ED17" ),
200
201 "E12", A_CHAR( "22,MissingFunctionParentheses" ",ED22" ),
202 "E13", A_CHAR( "23,IdentifierWithFunctionParentheses" ",ED23" ),
203
204 "E14", A_CHAR( "25,IncompatibleTypesInConditional" ",ED25" ),
205
206 "E15", A_CHAR( "30,ExceptionInPlugin" ",ED30" ),
207 "E16", A_CHAR( "40,ExceptionInCallback" ",ED40" ),
208
209
210 // nested expressions
211 "E17", A_CHAR( "50,NamedExpressionNotConstant" ",ED50" ),
212 "E18", A_CHAR( "51,NamedExpressionNotFound" ",ED51" ),
213 "E19", A_CHAR( "52,NestedExpressionNotFoundCT" ",ED52" ),
214 "E20", A_CHAR( "53,NestedExpressionCallArgumentMismatch" ",ED53" ),
215 "E21", A_CHAR( "54,NestedExpressionNotFoundET" ",ED54" ),
216 "E22", A_CHAR( "-54,WhenEvaluatingNestedExpression" ",ED-54" ),
217 "E23", A_CHAR( "55,NestedExpressionResultTypeError" ",ED55" ),
218 "E24", A_CHAR( "56,CircularNestedExpressions" ",ED56" ),
219 "E25", A_CHAR( "-56,CircularNestedExpressionsInfo" ",ED-56" ),
220 "E26", A_CHAR("-500,InExpressionFormatter" ",ED-500" ),
221
222 "ED1", A_CHAR( "Syntax error parsing expression." ),
223 "ED-1", A_CHAR( "Expression: {{{}}}\n"
224 " {!F}^->" ),
225 "ED-2", A_CHAR( "std::exception thrown: {!Q}." ),
226
227 "ED2", A_CHAR( "Trying to parse empty expression string." ),
228
229 "ED5", A_CHAR( "Syntax error while parsing expression{}" ),
230 "ED6", A_CHAR( "Unknown unary operator {!Q'} found." ),
231 "ED7", A_CHAR( "Unknown binary operator {!Q'} found." ),
232
233
234 "ED14", A_CHAR( "Unknown identifier {!Q}." ),
235 "ED15", A_CHAR( "Unknown function '{}{}'." ),
236 "ED-15", A_CHAR( "Found function {!Q}. Arguments not applicable." ),
237
238 "ED16", A_CHAR( "Operator {!Q'} not defined for type {!Q}." ),
239 "ED17", A_CHAR( "Operator {!Q'} not defined for types {!Q} and {!Q}." ),
240
241
242 "ED22", A_CHAR( "Missing function parentheses '()' with call to function {!Q'}." ),
243 "ED23", A_CHAR( "Function parentheses '()' are not allowed on identifier {!Q'}." ),
244
245 "ED25", A_CHAR( "Incompatible types for conditional expression operator {!Q<>} : {!Q<>}." ),
246
247 "ED30", A_CHAR( "Exception caught in 'callback function' while evaluating expression {!Q}." ),
248
249 "ED40", A_CHAR( "Exception caught in 'callback function' while evaluating expression {!Q}." ),
250
251 "ED50", A_CHAR( "Expression name has to be constant, if no expression return type is given." ),
252 "ED51", A_CHAR( "Named expression {!Q} not found." ),
253 "ED52", A_CHAR( "Compile-time defined nested expression {!Q} not found." ),
254 "ED53", A_CHAR( "Erroneous arguments given with nested expression function {!Q}." ),
255 "ED54", A_CHAR( "Evaluation-time defined nested expression {!Q} not found." ),
256 "ED-54", A_CHAR( "Exception evaluating nested expression {!Q}." ),
257 "ED55", A_CHAR( "Nested expression {!Q} returned wrong result type.\n"
258 "Type expected: {}\n"
259 "Type returned: {}" ),
260 "ED56", A_CHAR( "Circular nested expressions detected. Circular evaluation stack follows." ),
261 "ED-56", A_CHAR( "Expression {!Q} contains nested expression {!Q}." ),
262 "ED-500", A_CHAR( "Occurred in ExpressionFormatter expression #{}.\n"
263 "of formatter string: {!Q}" ) EOS
264
265 // exception "expectation" strings
266 "EE1", A_CHAR(": Closing brace ')' expected." ),
267 "EE2", A_CHAR(": Closing function parameter brace ')' expected." ),
268 "EE3", A_CHAR(": Closing subscript brace ']' expected." ),
269 "EE4", A_CHAR(": String literal closing quote ('\"') expected." ),
270 "EE5", A_CHAR(": Operator expected." ),
271 "EE6", A_CHAR(": Colon ':' of conditional term expected." ),
272 "EE7", A_CHAR(": Right-hand side binary operand expected." ),
273 "EE20", A_CHAR(": Unexpected end of expression." ),
274 "EE21", A_CHAR(": Misplaced closing bracket." ),
275 "EE22", A_CHAR(": Misplaced subscript operator symbol." ),
276 "EE23", A_CHAR(": Misplaced comma." ),
277
278 "ANON_EXPR_NAME", A_CHAR( "ANONYMOUS" ) EOS
279
280#if ALIB_DEBUG
281 "VM_CMD_OPCODES", A_CHAR( "5,Subroutine" ",1,"
282 "3,JumpIfFalse" ",5,"
283 "4,Jump" ",1,"
284 "2,Function" ",1,"
285 "1,Constant" ",1" ) EOS
286
287 "ProgListHeader", A_CHAR( "@HL-"
288 "ALib Expression Compiler\n"
289 "(c) 2024 AWorx GmbH. Published under MIT License (Open Source).\n"
290 "More Info: https://alib.dev\n"
291 "@HL-"
292 "Expression name: {}\n"
293 " Normalized: {{{}}}\n"
294 "\n" ) EOS
295
296
297 "ProgListHdl0", A_CHAR("PC" ),
298 "ProgListHdl1", A_CHAR("ResultType" ),
299 "ProgListHdl2", A_CHAR("Command" ),
300 "ProgListHdl3", A_CHAR("Param" ),
301 "ProgListHdl4", A_CHAR("Stack" ),
302 "ProgListHdl5", A_CHAR("Description" ),
303 "ProgListHdl6", A_CHAR("ArgNo{Start..End}" ),
304
305 "ProgListLine", A_CHAR("{:<02} | {!AW} | {!AW} | {!AW} | {!AW} | {!AW} | {!AW} |{!Fill}{}\n") EOS
306
307
308 "ProgListFooter",A_CHAR("@HL-") EOS
309#endif
310
311
312 // Identifier/Function names
313 "CPA0" , A_CHAR( "true" " I 4" ),
314 "CPA1" , A_CHAR( "false" " I 5" ),
315 "CPA2" , A_CHAR( "yes" " I 3" ),
316 "CPA3" , A_CHAR( "no" " I 2" ),
317 "CPA4" , A_CHAR( "on" " I 2" ),
318 "CPA5" , A_CHAR( "off" " I 3" ),
319 "CPA6" , A_CHAR( "Boolean" " I 4" ),
320 "CPA7" , A_CHAR( "Integer" " I 3" ),
321 "CPA8" , A_CHAR( "Float" " I 5" ) EOS
322
323 "CPALen" , A_CHAR("Length" " I 3" ) EOS
324
325 "CPM0" , A_CHAR( "PI" " I 2" ),
326 "CPM1" , A_CHAR( "E" " I 1" ),
327 "CPM2" , A_CHAR( "abs" " I 3" ),
328 "CPM3" , A_CHAR( "ceil" " I 4" ),
329 "CPM4" , A_CHAR( "floor" " I 5" ),
330 "CPM5" , A_CHAR( "trunc" " I 5" ),
331 "CPM6" , A_CHAR( "round" " I 5" ),
332 "CPM7" , A_CHAR( "rint" " I 4" ),
333 "CPM8" , A_CHAR( "max" " I 3" ),
334 "CPM9" , A_CHAR( "min" " I 3" ),
335 "CPM10" , A_CHAR( "remainder" " I 6" ),
336 "CPM11" , A_CHAR( "random" " I 4" ),
337 "CPM12" , A_CHAR( "sin" " I 3" ),
338 "CPM13" , A_CHAR( "asin" " I 4" ),
339 "CPM14" , A_CHAR( "cos" " I 3" ),
340 "CPM15" , A_CHAR( "acos" " I 4" ),
341 "CPM16" , A_CHAR( "tan" " I 3" ),
342 "CPM17" , A_CHAR( "atan" " I 4" ),
343 "CPM18" , A_CHAR( "sinh" " I 4" ),
344 "CPM19" , A_CHAR( "asinh" " I 5" ),
345 "CPM20" , A_CHAR( "cosh" " I 4" ),
346 "CPM21" , A_CHAR( "acosh" " I 5" ),
347 "CPM22" , A_CHAR( "tanh" " I 4" ),
348 "CPM23" , A_CHAR( "atanh" " I 5" ),
349 "CPM24" , A_CHAR( "exp" " I 3" ),
350 "CPM25" , A_CHAR( "exp2" " I 4" ),
351 "CPM26" , A_CHAR( "exp10" " I 5" ),
352 "CPM27" , A_CHAR( "log" " I 3" ),
353 "CPM28" , A_CHAR( "log2" " I 4" ),
354 "CPM29" , A_CHAR( "log10" " I 5" ),
355 "CPM30" , A_CHAR( "pow" " I 3" ),
356 "CPM31" , A_CHAR( "pow10" " I 5" ),
357 "CPM32" , A_CHAR( "sqrt" " I 4" ),
358 "CPM33" , A_CHAR( "cbrt" " I 4" ) EOS
359
360
361
362 "CPS0" , A_CHAR( "NewLine" " I 1 1" ),
363 "CPS1" , A_CHAR( "Tabulator" " I 3" ),
364 "CPS2" , A_CHAR( "String" " I 3" ),
365 "CPS3" , A_CHAR( "WildCardMatch" " I 1 1 1"),
366 "CPS4" , A_CHAR( "Format" " I 6" ),
367 "CPS5" , A_CHAR( "ToUpper" " I 1 1" ),
368 "CPS6" , A_CHAR( "ToLower" " I 1 1" ),
369 "CPS7" , A_CHAR( "Compare" " I 4" ),
370 "CPS8" , A_CHAR( "StartsWith" " I 1 1" ),
371 "CPS9" , A_CHAR( "EndsWith" " I 1 1" ),
372 "CPS10" , A_CHAR( "Substring" " I 4" ),
373 "CPS11" , A_CHAR( "IndexOf" " I 3 1" ),
374 "CPS12" , A_CHAR( "Count" " I 5" ),
375 "CPS13" , A_CHAR( "Trim" " I 4" ),
376 "CPS14" , A_CHAR( "TrimStart" " I 4 1" ),
377 "CPS15" , A_CHAR( "TrimEnd" " I 4 1" ),
378 "CPS16" , A_CHAR( "Integer" " I 3" ),
379 "CPS17" , A_CHAR( "Float" " I 5" ),
380 "CPS18" , A_CHAR( "Token" " I 3" ),
381 "CPS19" , A_CHAR( "Hexadecimal" " I 3" ),
382 "CPS20" , A_CHAR( "Octal" " I 3" ),
383 "CPS21" , A_CHAR( "Binary" " I 3" ),
384 "CPS22" , A_CHAR( "Replace" " I 4" ),
385 "CPS23" , A_CHAR( "Repeat" " I 6" )
387 , "CPS24" , A_CHAR( "RegExMatch" " I 1 1 1")
388#endif
389 EOS
390
391
392#if ALIB_CAMP
393 "CPD0" , A_CHAR( "January" " I 3," ),
394 "CPD1" , A_CHAR( "February" " I 3," ),
395 "CPD2" , A_CHAR( "March" " I 3," ),
396 "CPD3" , A_CHAR( "April" " I 3," ),
397 "CPD4" , A_CHAR( "May" " I 3," ),
398 "CPD5" , A_CHAR( "June" " I 3," ),
399 "CPD6" , A_CHAR( "July" " I 3," ),
400 "CPD7" , A_CHAR( "August" " I 3," ),
401 "CPD8" , A_CHAR( "September" " I 3," ),
402 "CPD9" , A_CHAR( "October" " I 3," ),
403 "CPD10" , A_CHAR( "November" " I 3," ),
404 "CPD11" , A_CHAR( "December" " I 3," ),
405 "CPD12" , A_CHAR( "Sunday" " I 3," ),
406 "CPD13" , A_CHAR( "Monday" " I 3," ),
407 "CPD14" , A_CHAR( "Tuesday" " I 3," ),
408 "CPD15" , A_CHAR( "Wednesday" " I 3," ),
409 "CPD16" , A_CHAR( "Thursday" " I 3," ),
410 "CPD17" , A_CHAR( "Friday" " I 3," ),
411 "CPD18" , A_CHAR( "Saturday" " I 3," ),
412 "CPD19" , A_CHAR( "NanoSecondS" " I 1 1 0," ),
413 "CPD20" , A_CHAR( "MicroSecondS" " I 3 1 0," ),
414 "CPD21" , A_CHAR( "MilliSecondS" " I 1 1 0," ),
415 "CPD22" , A_CHAR( "SecondS" " I 3 0," ),
416 "CPD23" , A_CHAR( "MinuteS" " I 3 0," ),
417 "CPD24" , A_CHAR( "Hours" " I 4," ),
418 "CPD25" , A_CHAR( "Days" " I 3," ),
419 "CPD26" , A_CHAR( "Weeks" " I 4," ),
420 "CPD27" , A_CHAR( "Months" " I 3," ),
421 "CPD28" , A_CHAR( "Years" " I 4," ),
422 "CPD29" , A_CHAR( "InDayS" " I 2 1 0," ),
423 "CPD30" , A_CHAR( "InHourS" " I 2 1 0," ),
424 "CPD31" , A_CHAR( "InMinuteS" " I 2 3 0," ),
425 "CPD32" , A_CHAR( "InSecondS" " I 2 3 0," ),
426 "CPD33" , A_CHAR( "InMilliSecondS" " I 2 1 1 0," ),
427 "CPD34" , A_CHAR( "InMicroSecondS" " I 2 3 1 0," ),
428 "CPD35" , A_CHAR( "InNanoSecondS" " I 2 1 1 0," ),
429 "CPD36" , A_CHAR( "InHertZ" " I 2 1 1," ),
430 "CPD37" , A_CHAR( "DateTime" " I 1 1," ),
431 "CPD38" , A_CHAR( "UtcDateTime" " I 1 1 1," ),
432 "CPD39" , A_CHAR( "Now" " I 3," ),
433 "CPD40" , A_CHAR( "Today" " I 5," ),
434 "CPD41" , A_CHAR( "UtcToday" " I 1 5," ),
435 "CPD42" , A_CHAR( "Age" " I 3," ),
436 "CPD43" , A_CHAR( "IsOlderThan" " I 2 1 1," ),
437 "CPD44" , A_CHAR( "GetYear" " I 1 1," ),
438 "CPD45" , A_CHAR( "GetMonth" " I 1 3," ),
439 "CPD46" , A_CHAR( "GetDay" " I 1 1," ),
440 "CPD47" , A_CHAR( "GetDayOfWeek" " I 1 1 1 1," ),
441 "CPD48" , A_CHAR( "GetHour" " I 1 1," ),
442 "CPD49" , A_CHAR( "GetMinute" " I 1 3," ),
443 "CPD50" , A_CHAR( "GetMilliSecond" " I 1 1 1," ),
444 "CPD51" , A_CHAR( "GetUtcYear" " I 1 1 1," ),
445 "CPD52" , A_CHAR( "GetUtcMonth" " I 1 1 3," ),
446 "CPD53" , A_CHAR( "GetUtcDay" " I 1 1 1," ),
447 "CPD54" , A_CHAR( "GetUtcDayOfWeek" " I 1 1 1 1 1," ),
448 "CPD55" , A_CHAR( "GetUtcHour" " I 1 1 1," ),
449 "CPD56" , A_CHAR( "GetUtcMinute" " I 1 1 3," ),
450 "CPD57" , A_CHAR( "GetUtcMilliSecond" " I 1 1 1 1" ) EOS
451#endif
452
453 // end of BootstrapBulk()
454 nullptr);
455#endif // !ALIB_RESOURCES_OMIT_DEFAULTS
456
457 }
458
459 else if( phase == BootstrapPhases::PrepareConfig )
460 {
466 #if ALIB_DEBUG
468 #endif
469 }
470}
471
472
473
474// #################################################################################################
475// Implementation of parsing methods of built-in record types.
476// #################################################################################################
482
488
489
490}} // namespace [alib::expressions]
491
492
493#undef EOS
virtual void bootstrap(BootstrapPhases phase) override
NCString ResourceCategory
Definition camp.hpp:142
lang::resources::ResourcePool * resourcePool
Definition camp.hpp:98
virtual void BootstrapBulk(const nchar *category,...)=0
#define ALIB_BOXING_VTABLE_DEFINE(TMapped, Identifier)
Definition vtable.inl:490
#define A_CHAR(STR)
#define ALIB_IF_CAMP(...)
Definition alib.hpp:295
#define ALIB_BOXING_BOOTSTRAP_REGISTER_FAPPEND_FOR_APPENDABLE_TYPE(TAppendable)
#define ALIB_BOXING_BOOTSTRAP_VTABLE_DBG_REGISTER(Identifier)
Definition vtable.inl:506
#define ALIB_ASSERT_ERROR(cond,...)
Definition alib.hpp:984
#define ALIB_DBG(...)
Definition alib.hpp:457
#define ALIB_CHARACTERS_NATIVE_WCHAR
Definition prepro.dox:32
#define ALIB_CHARACTERS_WIDE
Definition alib.hpp:351
#define ALIB_DEBUG
Definition prepro.dox:21
#define ALIB_RESOURCES_OMIT_DEFAULTS
Definition resources.hpp:22
#define ALIB_CAMP
Definition alib.hpp:170
#define ALIB_FEAT_BOOST_REGEX
Definition prepro.dox:45
Definition alib.cpp:57
expressions::Expressions EXPRESSIONS
BootstrapPhases
Definition camp.hpp:26
@ PrepareConfig
Initializes up to the creation of a field config .
lang::integer integer
Type alias in namespace alib.
Definition integers.hpp:286
static ALIB_API void Get(String &result, bool isLastField=false)
static void Bootstrap(TEnum element, TArgs &&... args) noexcept
static ALIB_API Box * SS[2]
Function accepts two string arguments.
static ALIB_API Box * IVar[2]
Function accepts one integral argument, followed by variadic arguments.
static ALIB_API Box * D[1]
Function accepts a DateTime argument.
static ALIB_API Box * DDur[2]
Function accepts a DateTime argument; followed by a Duration .
static ALIB_API Box * B[1]
Function accepts one boolean argument.
static ALIB_API Box * Var[1]
Function accepts variadic arguments.
static ALIB_API Box * SII[3]
Function accepts one string argument, followed by two integral arguments.
static ALIB_API Box * SSI[3]
Function accepts two string arguments, followed by an integral argument.
static ALIB_API Box * II[2]
Function accepts two integral arguments.
static ALIB_API Box * SVar[2]
Function accepts one string argument, followed by variadic arguments.
static ALIB_API Box * BB[2]
Function accepts two boolean arguments.
static ALIB_API Box * SSB[3]
Function accepts two string arguments, followed by a boolean argument.
static ALIB_API Box * SSS[3]
Function accepts three string arguments.
static ALIB_API Box * SI[2]
Function accepts one string argument, followed by an integral argument.
static ALIB_API Box * F[1]
Function accepts one floating point argument.
static ALIB_API Box * Dur[1]
Function accepts a Duration argument.
static ALIB_API Box * S[1]
Function accepts one string argument.
static ALIB_API Box * FF[2]
Function accepts two floating point arguments.
static ALIB_API Box * I[1]
Function accepts one integral argument.
static ALIB_API Box DateTime
static ALIB_API Box Duration
static ALIB_API Box Void
static ALIB_API Box Integer
static ALIB_API Box Boolean
static ALIB_API Box String
static ALIB_API Box Float