Moved to using a prelude header

This commit is contained in:
Jonathan Turner 2009-06-25 14:16:32 +00:00
parent 18985b6a97
commit 96f3033a42
2 changed files with 57 additions and 6 deletions

View File

@ -6,6 +6,8 @@
#include <exception>
#include "chaiscript_prelude.hpp"
namespace chaiscript
{
template <typename Eval_Engine>
@ -205,12 +207,7 @@ namespace chaiscript
ss.register_function(boost::shared_ptr<dispatchkit::Proxy_Function>(
new dispatchkit::Dynamic_Proxy_Function(boost::bind(&ChaiScript_System<Eval_Engine>::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;
}

View File

@ -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_ */