diff options
author | Kadah_Coba <none@none> | 2011-06-29 23:40:20 -0700 |
---|---|---|
committer | Kadah_Coba <none@none> | 2011-06-29 23:40:20 -0700 |
commit | c47d42d9459445d9e9869c49ebe66a0671a3a0a7 (patch) | |
tree | 439119cbe0dc332aaf829f4a582c4026804155e2 /indra/llmath/llcalcparser.cpp | |
parent | a300902494f76b9542c3978c2ca80726cefbc942 (diff) |
STORM-1315 Ability to do simple math in numeric edit fields
Diffstat (limited to 'indra/llmath/llcalcparser.cpp')
-rw-r--r-- | indra/llmath/llcalcparser.cpp | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/indra/llmath/llcalcparser.cpp b/indra/llmath/llcalcparser.cpp new file mode 100644 index 0000000000..fd55376fa9 --- /dev/null +++ b/indra/llmath/llcalcparser.cpp @@ -0,0 +1,46 @@ +/* + * LLCalcParser.cpp + * SecondLife + * + * Created by Aimee Walton on 28/09/2008. + * Copyright 2008 Aimee Walton. + * + */ + +#include "linden_common.h" + +#include "llcalcparser.h" +using namespace boost::spirit::classic; + +F32 LLCalcParser::lookup(const std::string::iterator& start, const std::string::iterator& end) const +{ + LLCalc::calc_map_t::iterator iter; + + std::string name(start, end); + + if (mConstants) + { + iter = mConstants->find(name); + if (iter != mConstants->end()) + { + return (*iter).second; + } + } + else + { + // This should never happen! + throw_(end, std::string("Missing constants table")); + } + + if (mVariables) + { + iter = mVariables->find(name); + if (iter != mVariables->end()) + { + return (*iter).second; + } + } + + throw_(end, std::string("Unknown symbol " + name)); + return 0.f; +} |