summaryrefslogtreecommitdiff
path: root/indra/llmath/llcalcparser.cpp
diff options
context:
space:
mode:
authorLogan Dethrow <log@lindenlab.com>2011-07-12 13:59:26 -0400
committerLogan Dethrow <log@lindenlab.com>2011-07-12 13:59:26 -0400
commitb750a5afb7833d91aed88d9d1f75ee0b4bc2aa80 (patch)
treeee54bbaed8f2f6016915cd3bb0506805e33179aa /indra/llmath/llcalcparser.cpp
parent543943279894d76662833c3b4e35efd7d09a91fc (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;
+}