From 4bdbcf30ffa4d6d7cd5f1c15faa057548989b70d Mon Sep 17 00:00:00 2001 From: Jason Turner Date: Tue, 15 Sep 2009 01:30:51 +0000 Subject: [PATCH] Move std::list<> support from main.cpp into a module, stl_extra.cpp, to better allow for measuring of core compile times / performance. --- CMakeLists.txt | 5 ++++- include/chaiscript/chaiscript.hpp | 10 ++++++++++ run_unit_tests.sh | 3 ++- src/main.cpp | 1 - src/multithreaded.cpp | 5 +++-- src/stl_extra.cpp | 9 +++++++++ src/test_module.cpp | 17 ++++------------- unittests/list_push_back.chai | 2 ++ unittests/list_push_front.chai | 2 ++ unittests/load_module.chai | 2 +- 10 files changed, 37 insertions(+), 19 deletions(-) create mode 100644 src/stl_extra.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 01b0ea6..b616323 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -33,9 +33,12 @@ if (Boost_FOUND) #add_executable(dispatchkit_test contrib/test/dispatchkit_test.cpp) target_link_libraries(chaiscript_eval dl ${Boost_LIBRARIES} ${READLINE_LIB}) - add_library(test MODULE src/test_module.cpp) + add_library(test MODULE src/test_module.cpp) target_link_libraries(test ${Boost_LIBRARIES}) + add_library(stl_extra MODULE src/stl_extra.cpp) + target_link_libraries(stl_extra ${Boost_LIBRARIES}) + install(TARGETS chaiscript_eval DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}/bin) else(Boost_FOUND) diff --git a/include/chaiscript/chaiscript.hpp b/include/chaiscript/chaiscript.hpp index c5a6ba0..8579e56 100644 --- a/include/chaiscript/chaiscript.hpp +++ b/include/chaiscript/chaiscript.hpp @@ -21,6 +21,16 @@ #include "dispatchkit/bootstrap.hpp" #include "dispatchkit/bootstrap_stl.hpp" #include "dispatchkit/function_call.hpp" + + +#ifdef BOOST_HAS_DECLSPEC +#define CHAISCRIPT_MODULE_EXPORT extern "C" __declspec(dllexport) +#else +#define CHAISCRIPT_MODULE_EXPORT extern "C" +#endif + + + namespace chaiscript { typedef ModulePtr (*Create_Module_Func)(); diff --git a/run_unit_tests.sh b/run_unit_tests.sh index 7b63999..d12b72f 100755 --- a/run_unit_tests.sh +++ b/run_unit_tests.sh @@ -1,5 +1,6 @@ #!/bin/bash + successes=0 failures=0 @@ -8,7 +9,7 @@ for file in unittests/*.chai do tstname=${file%.*} tst="$tstname.txt" - ./chaiscript_eval $file > /tmp/tstout.txt + LD_LIBRARY_PATH=. ./chaiscript_eval $file > /tmp/tstout.txt diff $tst /tmp/tstout.txt if [ "$?" -eq "0" ] then diff --git a/src/main.cpp b/src/main.cpp index 2eac4f3..f75b815 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -40,7 +40,6 @@ int main(int argc, char *argv[]) { std::string input; chaiscript::ChaiScript chai; - chai.add(chaiscript::bootstrap::list_type >("List")); if (argc < 2) { //std::cout << "eval> "; diff --git a/src/multithreaded.cpp b/src/multithreaded.cpp index b7e9187..f368775 100644 --- a/src/multithreaded.cpp +++ b/src/multithreaded.cpp @@ -13,14 +13,15 @@ void do_work(chaiscript::ChaiScript &c) { - c("use(\"work.chai\"); do_chai_work(num_iterations);"); +// c("use(\"work.chai\"); do_chai_work(num_iterations);"); + c("use(\"work.chai\"); do_chai_work(10000);"); } int main(int argc, char *argv[]) { std::string input; chaiscript::ChaiScript chai; - chai.add_shared_object(chaiscript::Boxed_Value(10000), "num_iterations"); + //chai.add_shared_object(chaiscript::Boxed_Value(10000), "num_iterations"); std::vector > threads; diff --git a/src/stl_extra.cpp b/src/stl_extra.cpp new file mode 100644 index 0000000..9ac88af --- /dev/null +++ b/src/stl_extra.cpp @@ -0,0 +1,9 @@ + +#include +#include + + +CHAISCRIPT_MODULE_EXPORT chaiscript::ModulePtr create_chaiscript_module_stl_extra() +{ + return chaiscript::bootstrap::list_type >("List"); +} diff --git a/src/test_module.cpp b/src/test_module.cpp index 28e9160..3698844 100644 --- a/src/test_module.cpp +++ b/src/test_module.cpp @@ -7,19 +7,10 @@ std::string hello_world() return "Hello World"; } -#ifdef _MSC_VER -#define EXPORT __declspec(dllexport) -#else -#define EXPORT -#endif - -extern "C" +CHAISCRIPT_MODULE_EXPORT chaiscript::ModulePtr create_chaiscript_module_test() { -EXPORT chaiscript::ModulePtr create_chaiscript_module_test() - { - chaiscript::ModulePtr m(new chaiscript::Module()); + chaiscript::ModulePtr m(new chaiscript::Module()); - m->add(chaiscript::fun(hello_world), "hello_world"); - return m; - } + m->add(chaiscript::fun(hello_world), "hello_world"); + return m; } diff --git a/unittests/list_push_back.chai b/unittests/list_push_back.chai index 537e0cc..88ce768 100644 --- a/unittests/list_push_back.chai +++ b/unittests/list_push_back.chai @@ -1,3 +1,5 @@ +load_module("stl_extra") + var x = List() x.push_back(3) x.push_back("A") diff --git a/unittests/list_push_front.chai b/unittests/list_push_front.chai index a977622..3ce226a 100644 --- a/unittests/list_push_front.chai +++ b/unittests/list_push_front.chai @@ -1,3 +1,5 @@ +load_module("stl_extra") + var x = List() x.push_front(3) x.push_front("A") diff --git a/unittests/load_module.chai b/unittests/load_module.chai index 7f1ebbc..47d9804 100644 --- a/unittests/load_module.chai +++ b/unittests/load_module.chai @@ -1,2 +1,2 @@ -load_module("test", "./libtest.so") +load_module("test") print(hello_world())