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 }