diff options
| author | Logan Dethrow <log@lindenlab.com> | 2011-07-12 13:59:26 -0400 |
|---|---|---|
| committer | Logan Dethrow <log@lindenlab.com> | 2011-07-12 13:59:26 -0400 |
| commit | b750a5afb7833d91aed88d9d1f75ee0b4bc2aa80 (patch) | |
| tree | ee54bbaed8f2f6016915cd3bb0506805e33179aa /indra/llmath/llcalcparser.cpp | |
| parent | 543943279894d76662833c3b4e35efd7d09a91fc (diff) | |
| parent | 44c7c6feaa824f4049d326965cb066e76ebefee3 (diff) | |
merge
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; +} |
