Eliminate boost::lexical_cast usage completely #39

This commit is contained in:
Jason Turner 2012-06-03 09:20:15 -06:00
parent 832df7f9e8
commit d2aba2ef56
5 changed files with 28 additions and 20 deletions

View File

@ -93,27 +93,34 @@ namespace chaiscript
/** /**
* to_string function for internal use. Uses ostream operator<< * to_string function for internal use. Uses ostream operator<<
*/ */
template<typename Input> template<typename Input>
std::string to_string(Input i) std::string to_string(Input i)
{ {
return boost::lexical_cast<std::string>(i); std::stringstream ss;
} ss << i;
return ss.str();
}
/** /**
* Internal function for converting from a string to a value * Internal function for converting from a string to a value
* uses ostream operator >> to perform the conversion * uses ostream operator >> to perform the conversion
*/ */
template<typename Input> template<typename Input>
Input parse_string(const std::string &i) Input parse_string(const std::string &i)
{ {
return boost::lexical_cast<Input>(i); std::stringstream ss(i);
} Input t;
ss >> t;
return t;
}
/** /**
* Add all common functions for a POD type. All operators, and * Add all common functions for a POD type. All operators, and
* common conversions * common conversions

View File

@ -12,8 +12,6 @@
#include <map> #include <map>
#include <set> #include <set>
#include <boost/shared_ptr.hpp> #include <boost/shared_ptr.hpp>
#include <boost/lexical_cast.hpp>
#include <boost/tuple/tuple.hpp>
#include <stdexcept> #include <stdexcept>
#include <vector> #include <vector>
#include <iostream> #include <iostream>

View File

@ -21,7 +21,6 @@
#include <string> #include <string>
#include <boost/function.hpp> #include <boost/function.hpp>
#include <boost/bind.hpp> #include <boost/bind.hpp>
#include <boost/lexical_cast.hpp>
#include <stdexcept> #include <stdexcept>
#include <vector> #include <vector>

View File

@ -141,7 +141,9 @@ int main(int /*argc*/, char * /*argv*/[]) {
//Creating a functor on the stack and using it immediatly //Creating a functor on the stack and using it immediatly
int x = chai.eval<boost::function<int (int, int)> >("fun (x, y) { return x + y; }")(5, 6); int x = chai.eval<boost::function<int (int, int)> >("fun (x, y) { return x + y; }")(5, 6);
log("Functor test output", boost::lexical_cast<std::string>(x)); std::stringstream ss;
ss << x;
log("Functor test output", ss.str());
chai.add(var(boost::shared_ptr<int>()), "nullvar"); chai.add(var(boost::shared_ptr<int>()), "nullvar");
chai("print(\"This should be true.\"); print(nullvar.is_var_null())"); chai("print(\"This should be true.\"); print(nullvar.is_var_null())");

View File

@ -14,8 +14,10 @@
void do_work(chaiscript::ChaiScript &c) void do_work(chaiscript::ChaiScript &c)
{ {
// c("use(\"work.chai\"); do_chai_work(num_iterations);"); // c("use(\"work.chai\"); do_chai_work(num_iterations);");
std::string name = "MyVar" + boost::lexical_cast<std::string>(rand());
c.add(chaiscript::var(5), name); std::stringstream ss;
ss << "MyVar" << rand();
c.add(chaiscript::var(5), ss.str());
c("use(\"work.chai\"); do_chai_work(10000);"); c("use(\"work.chai\"); do_chai_work(10000);");
} }