Main Page   Namespace List   Class Hierarchy   Compound List   File List   Namespace Members   Compound Members   File Members   Related Pages  

test2.cpp

00001 #include <fstream>
00002 #include <stdlib.h>
00003 #include <iostream>
00004 #include <string>
00005 #include <list>
00006 #include <utility>
00007 #include "diskdatabase.hpp"
00008 
00009 using namespace std;
00010 
00011 void error_return(const char* msg)
00012 {
00013         cerr << msg;
00014         exit(3);
00015 }
00016 
00017 class mystring
00018 {
00019 public:
00020         string my;
00021 
00022         mystring() {}
00023         mystring(const string& s) : my(s) {}
00024 
00025         istream& read(istream& is)
00026         {
00027                 size_t t;
00028                 char *nstr;
00029 
00030                 is.read(&t, sizeof(t));
00031                 nstr = new char[t];
00032                 is.read(nstr,t);
00033                 my = string(nstr);
00034 
00035                 delete [] nstr;
00036         }
00037 
00038         size_t DataSize() const
00039         {
00040                 return sizeof(size_t) + my.length() + 1;
00041         }
00042 
00043         ostream& write(ostream& os)
00044         {
00045                 size_t t;
00046 
00047                 t = my.length() + 1;
00048 
00049                 os.write(&t,sizeof(t));
00050                 os.write(my.c_str(),t);
00051         }
00052 };
00053 
00054 int main(int argc, char *argv[])
00055 {
00056         int i;
00057         ID id;
00058         list<ID> m;
00059         list<ID>::iterator p;
00060         DiskDatabase<mystring> ms;
00061         DiskDatabase<mystring> ps;
00062         pair<mystring,bool> ret;
00063         mystring s;
00064         fstream outfile;
00065         fstream infile;
00066 
00067         if(!ms.Create("/h/11/trokhim/work/code/Hello")) error_return("Could not create database");
00068 
00069         for(i=argc-1; i > 0; i--) 
00070         {
00071                 s = string(argv[i]);
00072                 id = ms.Add(s);
00073 
00074                 cout << "ID: " << id << "       ";
00075                 cout << "DATA: " << s.my << endl;
00076 
00077                 m.push_back(id);
00078         }
00079 
00080         for(p = m.begin(); p != m.end(); p++)
00081         {
00082                 ret = ms[*p];
00083 
00084                 if(!ret.second) 
00085                         cout << "Couldn't retrieve the record from the database" << endl;
00086                 else
00087                 {
00088                         cout << "ID " << *p << "        ";
00089                         cout << "string " << ret.first.my << endl;
00090                 }
00091         }
00092 
00093         cout << endl << "Here we delete all" << endl;
00094 
00095         ms.RemoveAll();
00096 
00097         for(p = m.begin(); p != m.end(); p++)
00098         {
00099                 ret = ms[*p];
00100 
00101                 if(!ret.second) 
00102                         cout << "Couldn't retrieve the record from the database" << endl;
00103                 else
00104                 {
00105                         cout << "ID " << *p << "        ";
00106                         cout << "string " << ret.first.my << endl;
00107                 }
00108         }       
00109         m.clear();
00110 
00111         cout << endl << "Here we read them all again" << endl;
00112 
00113         for(i=argc-1; i > 0; i--) 
00114         {
00115                 s = string(argv[i]);
00116                 id = ms.Add(s);
00117 
00118                 cout << "ID: " << id << "       ";
00119                 cout << "DATA: " << s.my << endl;
00120 
00121                 m.push_back(id);
00122         }
00123 
00124         for(p = m.begin(); p != m.end(); p++)
00125         {
00126                 ret = ms[*p];
00127 
00128                 if(!ret.second) 
00129                         cout << "Couldn't retrieve the record from the database" << endl;
00130                 else
00131                 {
00132                         cout << "ID " << *p << "        ";
00133                         cout << "string " << ret.first.my << endl;
00134                 }
00135         }       
00136 
00137         cout << endl << "ANd the second time" << endl;
00138 
00139         for(i=argc-1; i > 0; i--) 
00140         {
00141                 s = string(argv[i]);
00142                 id = ms.Add(s);
00143 
00144                 cout << "ID: " << id << "       ";
00145                 cout << "DATA: " << s.my << endl;
00146 
00147                 m.push_back(id);
00148         }
00149 
00150         for(p = m.begin(); p != m.end(); p++)
00151         {
00152                 ret = ms[*p];
00153 
00154                 if(!ret.second) 
00155                         cout << "Couldn't retrieve the record from the database" << endl;
00156                 else
00157                 {
00158                         cout << "ID " << *p << "        ";
00159                         cout << "string " << ret.first.my << endl;
00160                 }
00161         }       
00162 
00163         cout << endl << "Here we delete all the second time" << endl;
00164 
00165         p = m.begin();
00166         for(; p != m.end(); p++) ms.Remove(*p);
00167 
00168         for(p = m.begin(); p != m.end(); p++)
00169         {
00170                 ret = ms[*p];
00171 
00172                 if(!ret.second) 
00173                         cout << "Couldn't retrieve the record from the database" << endl;
00174                 else
00175                 {
00176                         cout << "ID " << *p << "        ";
00177                         cout << "string " << ret.first.my << endl;
00178                 }
00179         }       
00180 
00181         m.clear();
00182         
00183         cout << endl << "Here we read them all again" << endl;
00184 
00185         for(i=argc-1; i > 0; i--) 
00186         {
00187                 s = string(argv[i]);
00188                 id = ms.Add(s);
00189 
00190                 cout << "ID: " << id << "       ";
00191                 cout << "DATA: " << s.my << endl;
00192 
00193                 m.push_back(id);
00194         }
00195 
00196         for(p = m.begin(); p != m.end(); p++)
00197         {
00198                 ret = ms[*p];
00199 
00200                 if(!ret.second) 
00201                         cout << "Couldn't retrieve the record from the database" << endl;
00202                 else
00203                 {
00204                         cout << "ID " << *p << "        ";
00205                         cout << "string " << ret.first.my << endl;
00206                 }
00207         }
00208 
00209         cout << endl << "Here we write and read" << endl;
00210 
00211         outfile.open("/h/11/trokhim/work/code/mdtest.dat", ios::out | ios::binary);
00212         if(!outfile) error_return("Couldn't open output file");
00213 
00214         ms.Write(outfile);
00215         ms.Close();
00216         if(!outfile) error_return("couldn't write to the output file");
00217 
00218         outfile.close();
00219 
00220         infile.open("/h/11/trokhim/work/code/mdtest.dat", ios::in | ios::nocreate | ios::binary);
00221 
00222         if(!infile) error_return("Couldn't open input file");
00223 
00224         ps.Read(infile);
00225         if(!infile) error_return("couldn't read from input file");
00226 
00227         cout << "hey7" << endl;
00228         infile.close();
00229         cout << "hey8" << endl;
00230 
00231         for(p = m.begin(); p != m.end(); p++)
00232         {
00233                 ret = ps[*p];
00234 
00235                 if(!ret.second) 
00236                         cout << "Couldn't retrieve the record from the database" << endl;
00237                 else
00238                 {
00239                         cout << "ID " << *p << "        ";
00240                         cout << "string " << ret.first.my << endl;
00241                 }
00242         }
00243 
00244         return 0;
00245 }

Generated on Sat Nov 13 11:21:26 2004 for Noisy DAG Matcher by doxygen1.2.18