summaryrefslogtreecommitdiff
path: root/indra/llmath/llcalcparser.cpp
diff options
context:
space:
mode:
authorBrad Payne (Vir Linden) <vir@lindenlab.com>2011-07-13 14:57:23 -0400
committerBrad Payne (Vir Linden) <vir@lindenlab.com>2011-07-13 14:57:23 -0400
commitdd3069127bb437e95d106734e8a0ab95307e297c (patch)
tree4bb93a05adec058abbfff5ae836b355b8ed1989e /indra/llmath/llcalcparser.cpp
parent40a489a9cc1b23db35c7b12f34e35cd2b191a307 (diff)
parent44c7c6feaa824f4049d326965cb066e76ebefee3 (diff)
merge
Diffstat (limited to 'indra/llmath/llcalcparser.cpp')
-rw-r--r--indra/llmath/llcalcparser.cpp46
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;
+}