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