00001
00002 #include <basix/int.hpp>
00003 #include <basix/vector.hpp>
00004 #include <basix/port.hpp>
00005 #include <basix/tuple.hpp>
00006 #include <basix/glue.hpp>
00007
00008 #define int_literal(x) as_int (as_string (x))
00009
00010 namespace mmx {
00011 static port
00012 GLUE_1 (const string &arg_1) {
00013 return input_string_port (arg_1);
00014 }
00015
00016 static port
00017 GLUE_2 (const string &arg_1) {
00018 return input_file_port (arg_1);
00019 }
00020
00021 static port
00022 GLUE_3 (const string &arg_1) {
00023 return output_file_port (arg_1);
00024 }
00025
00026 static port
00027 GLUE_4 (const string &arg_1, const int &arg_2) {
00028 return socket_server_port (arg_1, arg_2);
00029 }
00030
00031 static port
00032 GLUE_5 (const string &arg_1, const int &arg_2) {
00033 return socket_client_port (arg_1, arg_2);
00034 }
00035
00036 static port
00037 GLUE_6 (const string &arg_1) {
00038 return pipe_port (arg_1);
00039 }
00040
00041 static port
00042 GLUE_7 (const tuple<port> &arg_1) {
00043 return composite_port (as_vector (arg_1));
00044 }
00045
00046 static port
00047 GLUE_8 (const string &arg_1) {
00048 return error_port (arg_1);
00049 }
00050
00051 static bool
00052 GLUE_9 (const port &arg_1) {
00053 return is_output_port (arg_1);
00054 }
00055
00056 static bool
00057 GLUE_10 (const port &arg_1) {
00058 return is_input_port (arg_1);
00059 }
00060
00061 static bool
00062 GLUE_11 (const port &arg_1) {
00063 return error_flag (arg_1);
00064 }
00065
00066 static string
00067 GLUE_12 (const port &arg_1) {
00068 return error_message (arg_1);
00069 }
00070
00071 static bool
00072 GLUE_13 (const port &arg_1) {
00073 return busy (arg_1);
00074 }
00075
00076 static int
00077 GLUE_14 (const port &arg_1) {
00078 return can_write (arg_1);
00079 }
00080
00081 static int
00082 GLUE_15 (const port &arg_1) {
00083 return can_read (arg_1);
00084 }
00085
00086 static void
00087 GLUE_16 (const port &arg_1, const string &arg_2) {
00088 write (arg_1, arg_2);
00089 }
00090
00091 static string
00092 GLUE_17 (const port &arg_1, const int &arg_2) {
00093 return read (arg_1, arg_2);
00094 }
00095
00096 static void
00097 GLUE_18 (const port &arg_1) {
00098 flush (arg_1);
00099 }
00100
00101 static bool
00102 GLUE_19 (const port &arg_1, const int &arg_2) {
00103 return mmx_wait (arg_1, arg_2);
00104 }
00105
00106 static port
00107 GLUE_20 (const port &arg_1) {
00108 return accept (arg_1);
00109 }
00110
00111 static port
00112 GLUE_21 (const port &arg_1, const string &arg_2) {
00113 return component (arg_1, arg_2);
00114 }
00115
00116 static int
00117 GLUE_22 (const int &arg_1) {
00118 return wait_port_event (arg_1);
00119 }
00120
00121 static port
00122 GLUE_23 (const port &arg_1, const generic &arg_2) {
00123 return arg_1 << arg_2;
00124 }
00125
00126 static port
00127 GLUE_24 (const port &arg_1, const string &arg_2) {
00128 return arg_1 << arg_2;
00129 }
00130
00131 static port
00132 GLUE_25 (const port &arg_1, const print_format &arg_2) {
00133 return arg_1 << arg_2;
00134 }
00135
00136 static generic
00137 GLUE_26 (const generic &arg_1) {
00138 return generic_assemble (arg_1);
00139 }
00140
00141 static generic
00142 GLUE_27 (const generic &arg_1) {
00143 return generic_disassemble (arg_1);
00144 }
00145
00146 static void
00147 GLUE_28 (const port &arg_1, const generic &arg_2) {
00148 binary_write_generic (arg_1, arg_2);
00149 }
00150
00151 static generic
00152 GLUE_29 (const port &arg_1) {
00153 return binary_read_generic (arg_1);
00154 }
00155
00156 void
00157 glue_port () {
00158 static bool done = false;
00159 if (done) return;
00160 done = true;
00161 call_glue (string ("glue_int"));
00162 call_glue (string ("glue_string"));
00163 define_type<print_format > (lit ("Print_format"));
00164 define_constant<print_format > ("blank", blank);
00165 define_constant<print_format > ("stroke", stroke);
00166 define_constant<print_format > ("indent", indent);
00167 define_constant<print_format > ("unindent", unindent);
00168 define_constant<print_format > ("reset_indent", reset_indent);
00169 define_constant<print_format > ("cr", cr);
00170 define_constant<print_format > ("lf", lf);
00171 define_constant<print_format > ("hrule", hrule);
00172 define_constant<print_format > ("flush_now", flush_now);
00173 define_constant<print_format > ("black_foreground", black_foreground);
00174 define_constant<print_format > ("red_foreground", red_foreground);
00175 define_constant<print_format > ("green_foreground", green_foreground);
00176 define_constant<print_format > ("yellow_foreground", yellow_foreground);
00177 define_constant<print_format > ("blue_foreground", blue_foreground);
00178 define_constant<print_format > ("magenta_foreground", magenta_foreground);
00179 define_constant<print_format > ("cyan_foreground", cyan_foreground);
00180 define_constant<print_format > ("white_foreground", white_foreground);
00181 define_constant<print_format > ("black_background", black_background);
00182 define_constant<print_format > ("red_background", red_background);
00183 define_constant<print_format > ("green_background", green_background);
00184 define_constant<print_format > ("yellow_background", yellow_background);
00185 define_constant<print_format > ("blue_background", blue_background);
00186 define_constant<print_format > ("magenta_background", magenta_background);
00187 define_constant<print_format > ("cyan_background", cyan_background);
00188 define_constant<print_format > ("white_background", white_background);
00189 define_constant<print_format > ("bold", bold);
00190 define_constant<print_format > ("underline", underline);
00191 define_constant<print_format > ("blink", blink);
00192 define_constant<print_format > ("reset_attributes", reset_attributes);
00193 define_type<port > (lit ("Port"));
00194 define_constant<port > ("mmin", mmin);
00195 define_constant<port > ("mmout", mmout);
00196 define_constant<port > ("mmerr", mmerr);
00197 define ("input_string_port", GLUE_1);
00198 define ("input_file_port", GLUE_2);
00199 define ("output_file_port", GLUE_3);
00200 define ("socket_server_port", GLUE_4);
00201 define ("socket_client_port", GLUE_5);
00202 define ("pipe_port", GLUE_6);
00203 define ("composite_port", GLUE_7);
00204 define ("error_port", GLUE_8);
00205 define (".output_port?", GLUE_9);
00206 define (".input_port?", GLUE_10);
00207 define (".error?", GLUE_11);
00208 define (".error", GLUE_12);
00209 define (".busy?", GLUE_13);
00210 define (".can_write", GLUE_14);
00211 define (".can_read", GLUE_15);
00212 define ("write", GLUE_16);
00213 define ("read", GLUE_17);
00214 define ("flush", GLUE_18);
00215 define ("wait", GLUE_19);
00216 define ("accept", GLUE_20);
00217 define (".[]", GLUE_21);
00218 define ("wait", GLUE_22);
00219 define ("<<", GLUE_23);
00220 define ("<<", GLUE_24);
00221 define ("<<", GLUE_25);
00222 define ("binary_assemble", GLUE_26);
00223 define ("binary_disassemble", GLUE_27);
00224 define ("binary_write", GLUE_28);
00225 define ("binary_read", GLUE_29);
00226 }
00227 }