00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #include <openrj/cpp/database.hpp>
00027
00028
00029 #include <iostream>
00030
00031
00032
00033
00034
00035 using std::cerr;
00036 using std::endl;
00037 using std::cout;
00038
00039
00040
00041
00042
00043
00044 static const char contents[] =
00045
00046 "%% Sample Open-RJ database - Cats and Dogs\n"
00047 "%% Created: 28th September 2004\n"
00048 "%% Updated: 29th September 2004\n"
00049 "_OpenRJ.Field.Alias: 1:Name\n"
00050 "_OpenRJ.Field.Alias: 2:Species\n"
00051 "_OpenRJ.Field.Alias: 3:Breed\n"
00052 "%%\n"
00053 "1: Barney\n"
00054 "2: Dog\n"
00055 "3: Bijon \\\n"
00056 " Frieze\n"
00057 "%%\n"
00058 "1: Elsa\n"
00059 "2: Dog\n"
00060 "3: Mixed\n"
00061 "%%\n"
00062 "1: Fluffy Kitten\n"
00063 "2: Cat\n"
00064 "%%\n"
00065 "1: Moet\n"
00066 "2: Dog\n"
00067 "3: Boxer\n"
00068 "%%\n"
00069 "1: Rebel\n"
00070 "2: Dog\n"
00071 "3: German \\\n"
00072 " Shepherd\n"
00073 "%%\n"
00074 "1: Sparky\n"
00075 "2: Cat\n"
00076 "%%\n";
00077
00078
00079
00080 int main(int , char * [])
00081 {
00082 try
00083 {
00084 unsigned flags = 0;
00085 openrj::cpp::MemoryDatabase db(&contents[0], sizeof(contents), flags);
00086
00087 cout << "Database has "
00088 << db.GetNumLines() << " lines in "
00089 << db.GetNumFields() << " fields in "
00090 << db.GetNumRecords() << " records"
00091 << endl;
00092
00093 cout << endl << "Enumerate records and their fields using subscript operators:" << endl;
00094
00095 { for(size_t iRecord = 0; iRecord < db.GetNumRecords(); ++iRecord)
00096 {
00097 openrj::cpp::Record record(db[iRecord]);
00098
00099 cout << "record-#" << iRecord
00100 << " " << record.GetComment() << " "
00101 << " (" << record.GetNumFields() << " fields)"
00102 << endl;
00103
00104 for(size_t iField = 0; iField < record.GetNumFields(); ++iField)
00105 {
00106 openrj::cpp::Field field(record[iField]);
00107 std::string name = field.GetName();
00108 std::string value = field.GetValue();
00109
00110 cout << " field-#" << iField << ": " << field << endl;
00111 }
00112 }}
00113 }
00114 catch(std::exception &x)
00115 {
00116 cerr << "Failed to open database: " << x.what() << endl;
00117 }
00118
00119 return EXIT_SUCCESS;
00120 }
00121
00122
00123
00124