summaryrefslogtreecommitdiff
path: root/indra/llmath/llcalcparser.cpp
diff options
context:
space:
mode:
authorLeslie Linden <leslie@lindenlab.com>2011-07-28 12:15:32 -0700
committerLeslie Linden <leslie@lindenlab.com>2011-07-28 12:15:32 -0700
commit0b9327df241e1a5a4693c690810ce8c330e196ad (patch)
tree1bdff29f5e3de1764410a7bf706763d4a35ebe8b /indra/llmath/llcalcparser.cpp
parent75452dd7a8f9f51bf3fbcb871976168f80e0cae0 (diff)
parentb8d5c8993d46dc5b24bc07f721115a174ff918c8 (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;
+}