00001 00002 #include <basix/int.hpp> 00003 #include <basix/vector.hpp> 00004 #include <basix/port.hpp> 00005 #include <basix/table.hpp> 00006 #include <basix/storage.hpp> 00007 #include <basix/glue.hpp> 00008 00009 #define int_literal(x) as_int (as_string (x)) 00010 00011 namespace mmx { 00012 static storage 00013 GLUE_1 () { 00014 return disk_storage (); 00015 } 00016 00017 static storage 00018 GLUE_2 (const string &arg_1) { 00019 return disk_storage (arg_1); 00020 } 00021 00022 static storage 00023 GLUE_3 (const storage &arg_1) { 00024 return cached_storage (arg_1); 00025 } 00026 00027 static void 00028 GLUE_4 (const storage &arg_1, const string &arg_2, const string &arg_3) { 00029 write (arg_1, arg_2, arg_3); 00030 } 00031 00032 static string 00033 GLUE_5 (const storage &arg_1, const string &arg_2) { 00034 return read (arg_1, arg_2); 00035 } 00036 00037 static void 00038 GLUE_6 (const storage &arg_1, const string &arg_2) { 00039 lock (arg_1, arg_2); 00040 } 00041 00042 static void 00043 GLUE_7 (const storage &arg_1, const string &arg_2) { 00044 unlock (arg_1, arg_2); 00045 } 00046 00047 static storage 00048 GLUE_8 (const storage &arg_1, const string &arg_2) { 00049 return get_branch (arg_1, arg_2); 00050 } 00051 00052 static bool 00053 GLUE_9 (const storage &arg_1, const string &arg_2) { 00054 return has_branch (arg_1, arg_2); 00055 } 00056 00057 static string 00058 GLUE_10 (const storage &arg_1, const string &arg_2) { 00059 return get_file (arg_1, arg_2); 00060 } 00061 00062 static bool 00063 GLUE_11 (const storage &arg_1, const string &arg_2) { 00064 return has_file (arg_1, arg_2); 00065 } 00066 00067 static vector<generic> 00068 GLUE_12 (const storage &arg_1) { 00069 return retrieve_data_bis (arg_1); 00070 } 00071 00072 static vector<generic> 00073 GLUE_13 (const storage &arg_1) { 00074 return retrieve_branches_bis (arg_1); 00075 } 00076 00077 static vector<generic> 00078 GLUE_14 (const storage &arg_1) { 00079 return retrieve_files_bis (arg_1); 00080 } 00081 00082 void 00083 glue_storage () { 00084 static bool done = false; 00085 if (done) return; 00086 done = true; 00087 call_glue (string ("glue_string")); 00088 call_glue (string ("glue_basix_vector_generic")); 00089 call_glue (string ("glue_basix_table_generic")); 00090 define_type<storage > (lit ("Storage")); 00091 define ("disk_storage", GLUE_1); 00092 define ("disk_storage", GLUE_2); 00093 define ("cached_storage", GLUE_3); 00094 define ("write", GLUE_4); 00095 define ("read", GLUE_5); 00096 define ("lock", GLUE_6); 00097 define ("unlock", GLUE_7); 00098 define ("get_branch", GLUE_8); 00099 define ("has_branch?", GLUE_9); 00100 define ("get_file", GLUE_10); 00101 define ("has_file?", GLUE_11); 00102 define (".data", GLUE_12); 00103 define (".branches", GLUE_13); 00104 define (".files", GLUE_14); 00105 } 00106 }