#ifndef __bootstrap_hpp #define __bootstrap_hpp__ #include "boxedcpp.hpp" template Ret add(P1 p1, P2 p2) { return p1 + p2; } template Ret subtract(P1 p1, P2 p2) { return p1 - p2; } template Ret divide(P1 p1, P2 p2) { return p1 - p2; } template Ret multiply(P1 p1, P2 p2) { return p1 * p2; } template bool equals(P1 p1, P2 p2) { return p1 == p2; } template P1 ×equal(P1 &p1, P2 p2) { return (p1 *= p2); } template std::string to_string(Input i) { return boost::lexical_cast(i); } void bootstrap(BoxedCPP_System &s) { s.register_type("void"); s.register_type("double"); s.register_type("int"); s.register_type("char"); s.register_type("bool"); s.register_type("string"); s.register_function(boost::function(&add), "+"); s.register_function(boost::function(&add), "+"); s.register_function(boost::function(&add), "+"); s.register_function(boost::function(&add), "+"); s.register_function(boost::function(&add), "+"); s.register_function(boost::function(&subtract), "-"); s.register_function(boost::function(&subtract), "-"); s.register_function(boost::function(&subtract), "-"); s.register_function(boost::function(&subtract), "-"); s.register_function(boost::function), "/"); s.register_function(boost::function), "/"); s.register_function(boost::function), "/"); s.register_function(boost::function), "/"); s.register_function(boost::function(&equals), "=="); s.register_function(boost::function(&equals), "=="); s.register_function(boost::function(&equals), "=="); s.register_function(boost::function(&equals), "=="); s.register_function(boost::function(&multiply), "*"); s.register_function(boost::function(&multiply), "*"); s.register_function(boost::function(&multiply), "*"); s.register_function(boost::function(&multiply), "*"); s.register_function(boost::function(&to_string), "to_string"); s.register_function(boost::function(&to_string), "to_string"); s.register_function(boost::function(&to_string), "to_string"); s.register_function(boost::function(&to_string), "to_string"); s.register_function(boost::function(×equal), "*="); s.register_function(boost::function(×equal), "*="); s.register_function(boost::function(×equal), "*="); s.register_function(boost::function(×equal), "*="); } #endif