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 #include <iostream>
00026 #include <fstream>
00027 #include "weHelper.h"
00028 #include "weTask.h"
00029
00030 #include <boost/archive/text_oarchive.hpp>
00031 #include <boost/archive/text_iarchive.hpp>
00032 #include <boost/archive/xml_iarchive.hpp>
00033 #include <boost/archive/xml_oarchive.hpp>
00034
00035 using namespace std;
00036
00037 int main(int argc, char* argv[])
00038 {
00039 WeOption opt1, opt2, opt3;
00040 string str("sample");
00041 string st2;
00042 int iVal;
00043 char cVal;
00044
00045 WeLibInit();
00046
00047 opt1.Name("testStr");
00048 opt1.SetValue(str);
00049
00050 opt2.Name("testInt");
00051 opt2.SetValue(2);
00052
00053 opt3.Name("testChar");
00054 opt3.SetValue(char(2));
00055
00056 cout << "Opt1 type = " << opt1.GetTypeName() << endl;
00057 cout << "Opt2 type = " << opt2.GetTypeName() << endl;
00058 cout << "Opt3 type = " << opt3.GetTypeName() << endl;
00059
00060 try
00061 {
00062 opt1.GetValue(st2);
00063 cout << opt1.Name() << ": " << st2 << endl;
00064 opt2.GetValue(st2);
00065 cout << opt2.Name() << ": " << st2 << endl;
00066 opt3.GetValue(st2);
00067 cout << opt3.Name() << ": " << st2 << endl;
00068 }
00069 catch (...)
00070 {
00071 cout << "Exception!!!" << endl;
00072 }
00073
00074 try
00075 {
00076 opt2.GetValue(iVal);
00077 cout << opt2.Name() << ": " << iVal << endl;
00078 opt3.GetValue(iVal);
00079 cout << opt3.Name() << ": " << iVal << endl;
00080 opt1.GetValue(iVal);
00081 cout << opt1.Name() << ": " << iVal << endl;
00082 }
00083 catch (...)
00084 {
00085 cout << "Exception!!!" << endl;
00086 }
00087
00088
00089 try
00090 {
00091 opt3.GetValue(cVal);
00092 cout << opt3.Name() << ": " << cVal << endl;
00093 opt2.GetValue(cVal);
00094 cout << opt2.Name() << ": " << cVal << endl;
00095 opt1.GetValue(cVal);
00096 cout << opt1.Name() << ": " << cVal << endl;
00097 }
00098 catch (...)
00099 {
00100 cout << "Exception!!!" << endl;
00101 }
00102
00103 std::ofstream ofs("options");
00104
00105
00106 {
00107 boost::archive::text_oarchive oa(ofs);
00108
00109 oa << opt1;
00110 oa << opt2;
00111 oa << opt3;
00112
00113 }
00114
00115 WeTask tsk;
00116
00117 try
00118 {
00119 std::ifstream itfs("task");
00120 {
00121 boost::archive::xml_iarchive ia(itfs);
00122
00123 ia >> BOOST_SERIALIZATION_NVP(tsk);
00124
00125 }
00126 }
00127 catch (...)
00128 {
00129 cout << "archive reading exception!" << endl;
00130 }
00131
00132 string testOpt("test");
00133 cout << "Read \"test\" option: " << tsk.Option(testOpt).Name() << " (" << tsk.Option(testOpt).GetTypeName() << ") -> ";
00134 if (!tsk.Option(testOpt).IsEmpty()) {
00135 tsk.Option(testOpt).GetValue(iVal);
00136 cout << iVal;
00137 }
00138 else {
00139 cout << "{empty}";
00140 }
00141 cout << endl;
00142
00143 tsk.Option(testOpt, 3);
00144
00145 cout << "Read \"test\" option: " << tsk.Option("test").Name() << " (" << tsk.Option("test").GetTypeName() << ") -> ";
00146 if (!tsk.Option("test").IsEmpty()) {
00147 tsk.Option("test").GetValue(iVal);
00148 cout << iVal;
00149 }
00150 else {
00151 cout << "{empty}";
00152 }
00153 cout << endl;
00154
00155 cout << "Read \"fakename\" option: " << tsk.Option("fakename").Name() << " (" << tsk.Option("fakename").GetTypeName() << ") -> ";
00156 if (!tsk.Option("fakename").IsEmpty()) {
00157 tsk.Option("fakename").GetValue(iVal);
00158 cout << iVal;
00159 }
00160 else {
00161 cout << "{empty}";
00162 }
00163 cout << endl;
00164
00165 std::ofstream tfs("task");
00166
00167
00168 {
00169 boost::archive::xml_oarchive oa(tfs);
00170
00171 oa << BOOST_SERIALIZATION_NVP(tsk);
00172
00173 }
00174
00175 WeStringLinks lst;
00176
00177 try
00178 {
00179 std::ifstream ilfs("list");
00180 {
00181 boost::archive::xml_iarchive ia(ilfs);
00182
00183 ia >> BOOST_SERIALIZATION_NVP(lst);
00184
00185 }
00186 }
00187 catch (...)
00188 {
00189 cout << "archive reading exception!" << endl;
00190 }
00191
00192 lst.Append("key1", "value1");
00193 lst.Append("key2", "value2");
00194 lst.Append("key3", "value3");
00195
00196 std::ofstream lfs("list");
00197
00198
00199 {
00200 boost::archive::xml_oarchive oa(lfs);
00201
00202 oa << BOOST_SERIALIZATION_NVP(lst);
00203
00204 }
00205
00206 WeLibClose();
00207
00208 return 0;
00209 }
00210