From 96f3033a426b5e8dd2177eba2ff0f60b34dee2c8 Mon Sep 17 00:00:00 2001 From: Jonathan Turner Date: Thu, 25 Jun 2009 14:16:32 +0000 Subject: [PATCH] Moved to using a prelude header --- chaiscript/chaiscript_engine.hpp | 9 ++---- chaiscript/chaiscript_prelude.hpp | 54 +++++++++++++++++++++++++++++++ 2 files changed, 57 insertions(+), 6 deletions(-) create mode 100644 chaiscript/chaiscript_prelude.hpp diff --git a/chaiscript/chaiscript_engine.hpp b/chaiscript/chaiscript_engine.hpp index 3c5a499..4b0bc3a 100644 --- a/chaiscript/chaiscript_engine.hpp +++ b/chaiscript/chaiscript_engine.hpp @@ -6,6 +6,8 @@ #include +#include "chaiscript_prelude.hpp" + namespace chaiscript { template @@ -205,12 +207,7 @@ namespace chaiscript ss.register_function(boost::shared_ptr( new dispatchkit::Dynamic_Proxy_Function(boost::bind(&ChaiScript_System::eval, boost::ref(*this), _1), 1)), "eval"); - evaluate_string("def puts(x) { print_string(x.to_string()) }; def print(x) { println_string(x.to_string()) };" - "def for_each(container, func) { var range = range(container); while (!range.empty()) { func(range.front()); range.popFront();} }; " - "def map(container, func) { var retval = Vector(); var range = range(container); while (!range.empty()) { retval.push_back(func(range.front())); range.popFront();}; return retval;}; " - "def reduce(container, func, initial) { var retval = initial; var range = range(container); while (!range.empty()) { retval = (func(range.front(), retval)); range.popFront();}; return retval;};" - "def join(container, delim) { var retval = \"\"; var range = range(container); if (!range.empty()) { retval += to_string(range.front()); range.popFront(); " - "while (!range.empty()) { retval += delim; retval += to_string(range.front()); range.popFront(); }\n }\n return retval; };" ); + evaluate_string(chaiscript_prelude); return ss; } diff --git a/chaiscript/chaiscript_prelude.hpp b/chaiscript/chaiscript_prelude.hpp new file mode 100644 index 0000000..9758b33 --- /dev/null +++ b/chaiscript/chaiscript_prelude.hpp @@ -0,0 +1,54 @@ +// This file is distributed under the BSD License. +// See LICENSE.TXT for details. + +#ifndef CHAISCRIPT_PRELUDE_HPP_ +#define CHAISCRIPT_PRELUDE_HPP_ + +const char *chaiscript_prelude = " \n\ +def puts(x) { \n\ + print_string(x.to_string()) \n\ +}; \n\ +def print(x) { \n\ + println_string(x.to_string()) \n\ +}; \n\ +def for_each(container, func) { \n\ + var range = range(container); \n\ + while (!range.empty()) { \n\ + func(range.front()) \n\ + range.popFront() \n\ + } \n\ +} \n\ +def map(container, func) { \n\ + var retval = Vector() \n\ + var range = range(container) \n\ + while (!range.empty()) { \n\ + retval.push_back(func(range.front())) \n\ + range.popFront() \n\ + } \n\ + return retval \n\ +} \n\ +def reduce(container, func, initial) { \n\ + var retval = initial \n\ + var range = range(container) \n\ + while (!range.empty()) { \n\ + retval = (func(range.front(), retval)) \n\ + range.popFront() \n\ + } \n\ + return retval \n\ +} \n\ +def join(container, delim) { \n\ + var retval = \"\" \n\ + var range = range(container) \n\ + if (!range.empty()) { \n\ + retval += to_string(range.front()) \n\ + range.popFront() \n\ + while (!range.empty()) { \n\ + retval += delim \n\ + retval += to_string(range.front()) \n\ + range.popFront() \n\ + } \n\ + } \n\ + return retval \n\ +}"; + +#endif /* CHAISCRIPT_PRELUDE_HPP_ */