basix_doc 0.1
|
00001 00002 #include <basix/vector.hpp> 00003 #include <basix/port.hpp> 00004 #include <basix/literal.hpp> 00005 #include <basix/tuple.hpp> 00006 #include <basix/glue.hpp> 00007 00008 #define is_generic_literal is<literal> 00009 #define literal_apply(f,v) gen (as<generic> (f), v) 00010 #define literal_access(f,v) access (as<generic> (f), v) 00011 00012 namespace mmx { 00013 static bool 00014 GLUE_1 (const generic &arg_1) { 00015 return is_generic_literal (arg_1); 00016 } 00017 00018 static literal 00019 GLUE_2 (const string &arg_1) { 00020 return literal (arg_1); 00021 } 00022 00023 static string 00024 GLUE_3 (const literal &arg_1) { 00025 return *arg_1; 00026 } 00027 00028 static generic 00029 GLUE_4 (const literal &arg_1, const tuple<generic> &arg_2) { 00030 return literal_apply (arg_1, as_vector (arg_2)); 00031 } 00032 00033 static generic 00034 GLUE_5 (const literal &arg_1, const tuple<generic> &arg_2) { 00035 return literal_access (arg_1, as_vector (arg_2)); 00036 } 00037 00038 void 00039 glue_literal () { 00040 static bool done = false; 00041 if (done) return; 00042 done = true; 00043 call_glue (string ("glue_string")); 00044 define ("literal?", GLUE_1); 00045 define ("as_literal", GLUE_2); 00046 define ("as_string", GLUE_3); 00047 define (".()", GLUE_4); 00048 define (".[]", GLUE_5); 00049 } 00050 }