00001 00002 #include <basix/int.hpp> 00003 #include <basix/vector.hpp> 00004 #include <basix/port.hpp> 00005 #include <basix/alias.hpp> 00006 #include <basix/glue.hpp> 00007 00008 #define int_literal(x) as_int (as_string (x)) 00009 00010 namespace mmx { 00011 static bool 00012 GLUE_1 (const generic &arg_1) { 00013 return generic_is_string (arg_1); 00014 } 00015 00016 static int 00017 GLUE_2 (const string &arg_1) { 00018 return N (arg_1); 00019 } 00020 00021 static string 00022 GLUE_3 (const string &arg_1, const int &arg_2, const int &arg_3) { 00023 return arg_1 (arg_2, arg_3); 00024 } 00025 00026 static string 00027 GLUE_4 (const string &arg_1, const string &arg_2) { 00028 return arg_1 * arg_2; 00029 } 00030 00031 static string 00032 GLUE_5 (const string &arg_1, const string &arg_2) { 00033 return arg_1 * arg_2; 00034 } 00035 00036 static alias<string> 00037 GLUE_6 (const alias<string> &arg_1, const string &arg_2) { 00038 return alias_write (arg_1, arg_2); 00039 } 00040 00041 static bool 00042 GLUE_7 (const string &arg_1, const string &arg_2) { 00043 return arg_1 < arg_2; 00044 } 00045 00046 static bool 00047 GLUE_8 (const string &arg_1, const string &arg_2) { 00048 return arg_1 <= arg_2; 00049 } 00050 00051 static bool 00052 GLUE_9 (const string &arg_1, const string &arg_2) { 00053 return arg_1 > arg_2; 00054 } 00055 00056 static bool 00057 GLUE_10 (const string &arg_1, const string &arg_2) { 00058 return arg_1 >= arg_2; 00059 } 00060 00061 static bool 00062 GLUE_11 (const string &arg_1, const string &arg_2) { 00063 return starts (arg_1, arg_2); 00064 } 00065 00066 static bool 00067 GLUE_12 (const string &arg_1, const string &arg_2) { 00068 return ends (arg_1, arg_2); 00069 } 00070 00071 static string 00072 GLUE_13 (const string &arg_1, const string &arg_2, const string &arg_3) { 00073 return replace (arg_1, arg_2, arg_3); 00074 } 00075 00076 static int 00077 GLUE_14 (const string &arg_1, const string &arg_2, const int &arg_3) { 00078 return search_forwards (arg_1, arg_2, arg_3); 00079 } 00080 00081 static int 00082 GLUE_15 (const string &arg_1, const string &arg_2, const int &arg_3) { 00083 return search_backwards (arg_1, arg_2, arg_3); 00084 } 00085 00086 static string 00087 GLUE_16 (const string &arg_1) { 00088 return upcase (arg_1); 00089 } 00090 00091 static string 00092 GLUE_17 (const string &arg_1) { 00093 return locase (arg_1); 00094 } 00095 00096 static string 00097 GLUE_18 (const string &arg_1) { 00098 return upcase_first (arg_1); 00099 } 00100 00101 static string 00102 GLUE_19 (const string &arg_1) { 00103 return locase_first (arg_1); 00104 } 00105 00106 static string 00107 GLUE_20 (const string &arg_1) { 00108 return quote (arg_1); 00109 } 00110 00111 static string 00112 GLUE_21 (const string &arg_1) { 00113 return unquote (arg_1); 00114 } 00115 00116 static string 00117 GLUE_22 (const int &arg_1) { 00118 return charcode_as_string (arg_1); 00119 } 00120 00121 static int 00122 GLUE_23 (const string &arg_1) { 00123 return string_as_charcode (arg_1); 00124 } 00125 00126 void 00127 glue_string () { 00128 static bool done = false; 00129 if (done) return; 00130 done = true; 00131 call_glue (string ("glue_basix_vector_generic")); 00132 define ("string?", GLUE_1); 00133 define ("#", GLUE_2); 00134 define (".[]", GLUE_3); 00135 define ("*", GLUE_4); 00136 define ("><", GLUE_5); 00137 define ("<<", GLUE_6); 00138 define ("<", GLUE_7); 00139 define ("<=", GLUE_8); 00140 define (">", GLUE_9); 00141 define (">=", GLUE_10); 00142 define ("starts?", GLUE_11); 00143 define ("ends?", GLUE_12); 00144 define ("replace", GLUE_13); 00145 define ("search_forwards", GLUE_14); 00146 define ("search_backwards", GLUE_15); 00147 define ("upcase", GLUE_16); 00148 define ("locase", GLUE_17); 00149 define ("upcase_first", GLUE_18); 00150 define ("locase_first", GLUE_19); 00151 define ("quote", GLUE_20); 00152 define ("unquote", GLUE_21); 00153 define ("ascii", GLUE_22); 00154 define ("ascii_code", GLUE_23); 00155 } 00156 }