basix_doc 0.1
|
00001 00002 #include <basix/int.hpp> 00003 #include <basix/literal.hpp> 00004 #include <basix/glue.hpp> 00005 00006 #define int_literal(x) as_int (as_string (x)) 00007 00008 namespace mmx { 00009 static int 00010 GLUE_1 (const literal &arg_1) { 00011 return int_literal (arg_1); 00012 } 00013 00014 static int 00015 GLUE_2 (const string &arg_1) { 00016 return as_int (arg_1); 00017 } 00018 00019 static string 00020 GLUE_3 (const int &arg_1) { 00021 return as_string (arg_1); 00022 } 00023 00024 static string 00025 GLUE_4 (const int &arg_1) { 00026 return as_string_hexa (arg_1); 00027 } 00028 00029 static int 00030 GLUE_5 (const int &arg_1) { 00031 return -arg_1; 00032 } 00033 00034 static int 00035 GLUE_6 (const int &arg_1) { 00036 return square (arg_1); 00037 } 00038 00039 static int 00040 GLUE_7 (const int &arg_1, const int &arg_2) { 00041 return arg_1 + arg_2; 00042 } 00043 00044 static int 00045 GLUE_8 (const int &arg_1, const int &arg_2) { 00046 return arg_1 - arg_2; 00047 } 00048 00049 static int 00050 GLUE_9 (const int &arg_1, const int &arg_2) { 00051 return arg_1 * arg_2; 00052 } 00053 00054 static int 00055 GLUE_10 (const int &arg_1, const int &arg_2) { 00056 return arg_1 / arg_2; 00057 } 00058 00059 static int 00060 GLUE_11 (const int &arg_1, const int &arg_2) { 00061 return quo (arg_1, arg_2); 00062 } 00063 00064 static int 00065 GLUE_12 (const int &arg_1, const int &arg_2) { 00066 return rem (arg_1, arg_2); 00067 } 00068 00069 static bool 00070 GLUE_13 (const int &arg_1, const int &arg_2) { 00071 return divides (arg_1, arg_2); 00072 } 00073 00074 static bool 00075 GLUE_14 (const int &arg_1, const int &arg_2) { 00076 return arg_1 < arg_2; 00077 } 00078 00079 static bool 00080 GLUE_15 (const int &arg_1, const int &arg_2) { 00081 return arg_1 <= arg_2; 00082 } 00083 00084 static bool 00085 GLUE_16 (const int &arg_1, const int &arg_2) { 00086 return arg_1 > arg_2; 00087 } 00088 00089 static bool 00090 GLUE_17 (const int &arg_1, const int &arg_2) { 00091 return arg_1 >= arg_2; 00092 } 00093 00094 static int 00095 GLUE_18 (const int &arg_1) { 00096 return abs (arg_1); 00097 } 00098 00099 static int 00100 GLUE_19 (const int &arg_1, const int &arg_2) { 00101 return min (arg_1, arg_2); 00102 } 00103 00104 static int 00105 GLUE_20 (const int &arg_1, const int &arg_2) { 00106 return max (arg_1, arg_2); 00107 } 00108 00109 static int 00110 GLUE_21 () { 00111 return rand (); 00112 } 00113 00114 void 00115 glue_int () { 00116 static bool done = false; 00117 if (done) return; 00118 done = true; 00119 define_type<int > (lit ("Int")); 00120 define ("literal_integer", GLUE_1); 00121 define ("as_int", GLUE_2); 00122 define ("as_string", GLUE_3); 00123 define ("as_string_hexa", GLUE_4); 00124 define ("-", GLUE_5); 00125 define ("square", GLUE_6); 00126 define ("+", GLUE_7); 00127 define ("-", GLUE_8); 00128 define ("*", GLUE_9); 00129 define ("div", GLUE_10); 00130 define ("quo", GLUE_11); 00131 define ("rem", GLUE_12); 00132 define ("divides?", GLUE_13); 00133 define ("<", GLUE_14); 00134 define ("<=", GLUE_15); 00135 define (">", GLUE_16); 00136 define (">=", GLUE_17); 00137 define ("abs", GLUE_18); 00138 define ("min", GLUE_19); 00139 define ("max", GLUE_20); 00140 define ("random", GLUE_21); 00141 } 00142 }