1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
|
#include "parser.ih"
namespace{
using FunMap = Parser::FunctionMap;
using Function = RuleValue::Function;
FunMap::value_type funArray[] =
{
FunMap::value_type("abs",
Function(static_cast<double (*)(double)>(abs))),
FunMap::value_type("sqrt", Function(&sqrt)),
FunMap::value_type("exp", Function(&exp)),
FunMap::value_type("log", Function(&log)),
FunMap::value_type("ln", Function(&log)),
FunMap::value_type("log10", Function(&log10)),
FunMap::value_type("sin", Function(&sin, Function::RAD_IN_DOUBLE_OUT)),
FunMap::value_type("cos", Function(&cos, Function::RAD_IN_DOUBLE_OUT)),
FunMap::value_type("tan", Function(&tan, Function::RAD_IN_DOUBLE_OUT)),
FunMap::value_type("asin", Function(&asin, Function::DOUBLE_IN_RAD_OUT)),
FunMap::value_type("acos", Function(&acos, Function::DOUBLE_IN_RAD_OUT)),
FunMap::value_type("atan", Function(&atan, Function::DOUBLE_IN_RAD_OUT)),
FunMap::value_type("pow", Function(&pow)),
};
unsigned const sizeofFunctionArray = sizeof(funArray) /
sizeof(FunMap::value_type);
using DoubleValue = Parser::DoubleMap::value_type;
DoubleValue doubleArray[] =
{
DoubleValue("e", M_El),
DoubleValue("E", M_El),
DoubleValue("pi", M_PI),
DoubleValue("PI", M_PI),
};
unsigned const sizeofDoubleArray = sizeof(doubleArray) /
sizeof(DoubleValue);
};
Parser::FunctionMap
Parser::s_functions(
funArray,
funArray + sizeofFunctionArray
);
Parser::DoubleMap
Parser::s_doubles(
doubleArray,
doubleArray + sizeofDoubleArray
);
bool A2x::s_lastFail = false;
|