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 #ifndef __BARRY_S11N_BOOST_H__
00026 #define __BARRY_S11N_BOOST_H__
00027
00028 #include "record.h"
00029 #include <boost/serialization/vector.hpp>
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041 #define BARRY_BASE_S11N_VERSION 0
00042 #define BARRY_POD_MAP_VERSION 1000
00043
00044
00045 namespace boost {
00046 namespace serialization {
00047
00048 template <class ArchiveT>
00049 void serialize(ArchiveT &ar, Barry::UnknownField &uf, const unsigned int ver)
00050 {
00051 ar & make_nvp("type", uf.type);
00052 ar & make_nvp("data", uf.data.raw_data);
00053 }
00054
00055 template <class ArchiveT>
00056 void serialize(ArchiveT &ar, Barry::Contact::GroupLink &g, const unsigned int ver)
00057 {
00058 ar & make_nvp("Link", g.Link);
00059 ar & make_nvp("Unknown", g.Unknown);
00060 }
00061
00062 template <class ArchiveT>
00063 void serialize(ArchiveT &ar, Barry::CategoryList &cl, const unsigned int ver)
00064 {
00065 std::vector<std::string> &sl = cl;
00066 ar & make_nvp("CategoryList", sl);
00067 }
00068
00069 template <class ArchiveT>
00070 void serialize(ArchiveT &ar, Barry::Contact &c, const unsigned int ver)
00071 {
00072 ar & make_nvp("RecType", c.RecType);
00073 ar & make_nvp("RecordId", c.RecordId);
00074
00075 ar & make_nvp("EmailAddresses", c.EmailAddresses);
00076 ar & make_nvp("Phone", c.Phone);
00077 ar & make_nvp("Fax", c.Fax);
00078 ar & make_nvp("WorkPhone", c.WorkPhone);
00079 ar & make_nvp("HomePhone", c.HomePhone);
00080 ar & make_nvp("MobilePhone", c.MobilePhone);
00081 ar & make_nvp("Pager", c.Pager);
00082 ar & make_nvp("PIN", c.PIN);
00083 ar & make_nvp("Radio", c.Radio);
00084 ar & make_nvp("WorkPhone2", c.WorkPhone2);
00085 ar & make_nvp("HomePhone2", c.HomePhone2);
00086 ar & make_nvp("OtherPhone", c.OtherPhone);
00087 ar & make_nvp("FirstName", c.FirstName);
00088 ar & make_nvp("LastName", c.LastName);
00089 ar & make_nvp("Company", c.Company);
00090 ar & make_nvp("DefaultCommunicationsMethod", c.DefaultCommunicationsMethod);
00091 ar & make_nvp("Address1", c.WorkAddress.Address1);
00092 ar & make_nvp("Address2", c.WorkAddress.Address2);
00093 ar & make_nvp("Address3", c.WorkAddress.Address3);
00094 ar & make_nvp("City", c.WorkAddress.City);
00095 ar & make_nvp("Province", c.WorkAddress.Province);
00096 ar & make_nvp("PostalCode", c.WorkAddress.PostalCode);
00097 ar & make_nvp("Country", c.WorkAddress.Country);
00098 ar & make_nvp("JobTitle", c.JobTitle);
00099 ar & make_nvp("PublicKey", c.PublicKey);
00100 ar & make_nvp("URL", c.URL);
00101 ar & make_nvp("Prefix", c.Prefix);
00102 ar & make_nvp("Categories", c.Categories);
00103 ar & make_nvp("HomeAddress1", c.HomeAddress.Address1);
00104 ar & make_nvp("HomeAddress2", c.HomeAddress.Address2);
00105 ar & make_nvp("HomeAddress3", c.HomeAddress.Address3);
00106 ar & make_nvp("Notes", c.Notes);
00107 ar & make_nvp("UserDefined1", c.UserDefined1);
00108 ar & make_nvp("UserDefined2", c.UserDefined2);
00109 ar & make_nvp("UserDefined3", c.UserDefined3);
00110 ar & make_nvp("UserDefined4", c.UserDefined4);
00111 ar & make_nvp("HomeCity", c.HomeAddress.City);
00112 ar & make_nvp("HomeProvince", c.HomeAddress.Province);
00113 ar & make_nvp("HomePostalCode", c.HomeAddress.PostalCode);
00114 ar & make_nvp("HomeCountry", c.HomeAddress.Country);
00115 ar & make_nvp("Image", c.Image);
00116
00117 if( ver < BARRY_POD_MAP_VERSION ) {
00118 ar & make_nvp("GroupLinks", c.GroupLinks);
00119 ar & make_nvp("Unknowns", c.Unknowns);
00120 }
00121 }
00122
00123 template <class ArchiveT>
00124 void serialize(ArchiveT &ar, Barry::EmailAddress &a, const unsigned int ver)
00125 {
00126 ar & make_nvp("Name", a.Name);
00127 ar & make_nvp("Email", a.Email);
00128 }
00129
00130 template <class ArchiveT>
00131 void serialize(ArchiveT &ar, Barry::Message &m, const unsigned int ver)
00132 {
00133 ar & make_nvp("From", m.From);
00134 ar & make_nvp("To", m.To);
00135 ar & make_nvp("Cc", m.Cc);
00136 ar & make_nvp("Sender", m.Sender);
00137 ar & make_nvp("ReplyTo", m.ReplyTo);
00138 ar & make_nvp("Subject", m.Subject);
00139 ar & make_nvp("Body", m.Body);
00140 ar & make_nvp("Attachment", m.Attachment);
00141 ar & make_nvp("MessageRecordId", m.MessageRecordId);
00142 ar & make_nvp("MessageReplyTo", m.MessageReplyTo);
00143 ar & make_nvp("MessageDateSent", m.MessageDateSent);
00144 ar & make_nvp("MessageDateReceived", m.MessageDateReceived);
00145
00146 ar & make_nvp("MessageTruncated", m.MessageTruncated);
00147 ar & make_nvp("MessageRead", m.MessageRead);
00148 ar & make_nvp("MessageReply", m.MessageReply);
00149 ar & make_nvp("MessageSaved", m.MessageSaved);
00150 ar & make_nvp("MessageSavedDeleted", m.MessageSavedDeleted);
00151
00152 ar & make_nvp("MessagePriority", m.Priority);
00153 ar & make_nvp("MessageSensitivity", m.Sensitivity);
00154
00155 if( ver < BARRY_POD_MAP_VERSION ) {
00156 ar & make_nvp("Unknowns", m.Unknowns);
00157 }
00158 }
00159
00160 template <class ArchiveT>
00161 void serialize(ArchiveT &ar, Barry::Calendar &c, const unsigned int ver)
00162 {
00163 ar & make_nvp("RecType", c.RecType);
00164 ar & make_nvp("RecordId", c.RecordId);
00165
00166 ar & make_nvp("AllDayEvent", c.AllDayEvent);
00167
00168 ar & make_nvp("Subject", c.Subject);
00169 ar & make_nvp("Notes", c.Notes);
00170 ar & make_nvp("Location", c.Location);
00171
00172 ar & make_nvp("NotificationTime", c.NotificationTime);
00173 ar & make_nvp("StartTime", c.StartTime);
00174 ar & make_nvp("EndTime", c.EndTime);
00175
00176 ar & make_nvp("Organizer", c.Organizer);
00177 ar & make_nvp("AcceptedBy", c.AcceptedBy);
00178 ar & make_nvp("Invited", c.Invited);
00179
00180 ar & make_nvp("FreeBusyFlag", c.FreeBusyFlag);
00181 ar & make_nvp("ClassFlag", c.ClassFlag);
00182
00183 ar & make_nvp("Recurring", c.Recurring);
00184 ar & make_nvp("RecurringType", c.RecurringType);
00185 ar & make_nvp("Interval", c.Interval);
00186 ar & make_nvp("RecurringEndTime", c.RecurringEndTime);
00187 ar & make_nvp("Perpetual", c.Perpetual);
00188 ar & make_nvp("TimeZoneCode", c.TimeZoneCode);
00189 ar & make_nvp("TimeZoneValid", c.TimeZoneValid);
00190
00191 ar & make_nvp("DayOfWeek", c.DayOfWeek);
00192 ar & make_nvp("WeekOfMonth", c.WeekOfMonth);
00193 ar & make_nvp("DayOfMonth", c.DayOfMonth);
00194 ar & make_nvp("MonthOfYear", c.MonthOfYear);
00195 ar & make_nvp("WeekDays", c.WeekDays);
00196
00197 if( ver < BARRY_POD_MAP_VERSION ) {
00198 ar & make_nvp("Unknowns", c.Unknowns);
00199 }
00200 }
00201
00202 template <class ArchiveT>
00203 void serialize(ArchiveT &ar, Barry::CallLog &c, const unsigned int ver)
00204 {
00205 ar & make_nvp("RecType", c.RecType);
00206 ar & make_nvp("RecordId", c.RecordId);
00207
00208 ar & make_nvp("Duration", c.Duration);
00209 ar & make_nvp("Timestamp", c.Timestamp);
00210 ar & make_nvp("ContactName", c.ContactName);
00211 ar & make_nvp("PhoneNumber", c.PhoneNumber);
00212
00213 ar & make_nvp("DirectionFlag", c.DirectionFlag);
00214 ar & make_nvp("StatusFlag", c.StatusFlag);
00215 ar & make_nvp("PhoneTypeFlag", c.PhoneTypeFlag);
00216 ar & make_nvp("PhoneInfoFlag", c.PhoneInfoFlag);
00217
00218 if( ver < BARRY_POD_MAP_VERSION ) {
00219 ar & make_nvp("Unknowns", c.Unknowns);
00220 }
00221 }
00222
00223 template <class ArchiveT>
00224 void serialize(ArchiveT &ar, Barry::ServiceBookConfig &c, const unsigned int ver)
00225 {
00226 ar & make_nvp("Format", c.Format);
00227
00228 if( ver < BARRY_POD_MAP_VERSION ) {
00229 ar & make_nvp("Unknowns", c.Unknowns);
00230 }
00231 }
00232
00233 template <class ArchiveT>
00234 void serialize(ArchiveT &ar, Barry::ServiceBook &c, const unsigned int ver)
00235 {
00236 ar & make_nvp("RecType", c.RecType);
00237 ar & make_nvp("RecordId", c.RecordId);
00238
00239 ar & make_nvp("Name", c.Name);
00240 ar & make_nvp("HiddenName", c.HiddenName);
00241 ar & make_nvp("Description", c.Description);
00242 ar & make_nvp("DSID", c.DSID);
00243 ar & make_nvp("BesDomain", c.BesDomain);
00244 ar & make_nvp("UniqueId", c.UniqueId);
00245 ar & make_nvp("ContentId", c.ContentId);
00246 ar & make_nvp("Config", c.Config);
00247
00248 if( ver < BARRY_POD_MAP_VERSION ) {
00249 ar & make_nvp("Unknowns", c.Unknowns);
00250 }
00251 }
00252
00253 template <class ArchiveT>
00254 void serialize(ArchiveT &ar, Barry::Memo &m, const unsigned int ver)
00255 {
00256 ar & make_nvp("RecType", m.RecType);
00257 ar & make_nvp("RecordId", m.RecordId);
00258
00259 ar & make_nvp("Title", m.Title);
00260 ar & make_nvp("Body", m.Body);
00261 ar & make_nvp("Categories", m.Categories);
00262
00263 if( ver < BARRY_POD_MAP_VERSION ) {
00264 ar & make_nvp( "Unknowns", m.Unknowns);
00265 }
00266 }
00267
00268 template <class ArchiveT>
00269 void serialize(ArchiveT &ar, Barry::Task &t, const unsigned int ver)
00270 {
00271 ar & make_nvp("RecType", t.RecType);
00272 ar & make_nvp("RecordId", t.RecordId);
00273
00274 ar & make_nvp("Summary", t.Summary);
00275 ar & make_nvp("Notes", t.Notes);
00276 ar & make_nvp("Categories", t.Categories);
00277 ar & make_nvp("UID", t.UID);
00278
00279 ar & make_nvp("StartTime", t.StartTime);
00280 ar & make_nvp("DueTime", t.DueTime);
00281 ar & make_nvp("AlarmTime", t.AlarmTime);
00282
00283 ar & make_nvp("TimeZoneCode", t.TimeZoneCode);
00284 ar & make_nvp("TimeZoneValid", t.TimeZoneValid);
00285
00286 ar & make_nvp("AlarmType", t.AlarmType);
00287 ar & make_nvp("Interval", t.Interval);
00288 ar & make_nvp("RecurringType", t.RecurringType);
00289 ar & make_nvp("RecurringEndTime", t.RecurringEndTime);
00290 ar & make_nvp("DayOfWeek", t.DayOfWeek);
00291 ar & make_nvp("WeekOfMonth", t.WeekOfMonth);
00292 ar & make_nvp("DayOfMonth", t.DayOfMonth);
00293 ar & make_nvp("MonthOfYear", t.MonthOfYear);
00294 ar & make_nvp("WeekDays", t.WeekDays);
00295
00296 ar & make_nvp("PriorityFlag", t.PriorityFlag);
00297 ar & make_nvp("StatusFlag", t.StatusFlag);
00298 ar & make_nvp("Recurring", t.Recurring);
00299 ar & make_nvp("Perpetual", t.Perpetual);
00300 ar & make_nvp("DueDateFlag", t.DueDateFlag);
00301
00302 if( ver < BARRY_POD_MAP_VERSION ) {
00303 ar & make_nvp( "Unknowns", t.Unknowns);
00304 }
00305 }
00306
00307 template<class ArchiveT>
00308 void serialize(ArchiveT &ar, Barry::PINMessage &p, const unsigned int ver)
00309 {
00310 ar & make_nvp("RecType", p.RecType);
00311 ar & make_nvp("RecordId", p.RecordId);
00312
00313 ar & make_nvp("From", p.From);
00314 ar & make_nvp("To", p.To);
00315 ar & make_nvp("Cc", p.Cc);
00316 ar & make_nvp("Bcc", p.Bcc);
00317 ar & make_nvp("Subject", p.Subject);
00318 ar & make_nvp("Body", p.Body);
00319 ar & make_nvp("MessageRecordId", p.MessageRecordId);
00320 ar & make_nvp("MessageReplyTo", p.MessageReplyTo);
00321 ar & make_nvp("MessageDateSent", p.MessageDateSent);
00322 ar & make_nvp("MessageDateReceived", p.MessageDateReceived);
00323
00324 ar & make_nvp("MessageTruncated", p.MessageTruncated);
00325 ar & make_nvp("MessageRead", p.MessageRead);
00326 ar & make_nvp("MessageReply", p.MessageReply);
00327 ar & make_nvp("MessageSaved", p.MessageSaved);
00328 ar & make_nvp("MessageSavedDeleted", p.MessageSavedDeleted);
00329
00330 ar & make_nvp("MessagePriority", p.Priority);
00331 ar & make_nvp("MessageSensitivity", p.Sensitivity);
00332
00333 if(ver < BARRY_POD_MAP_VERSION) {
00334 ar & make_nvp("Unknowns", p.Unknowns);
00335 }
00336 }
00337
00338 template <class ArchiveT>
00339 void serialize(ArchiveT &ar, Barry::SavedMessage &m, const unsigned int ver)
00340 {
00341 ar & make_nvp("RecType", m.RecType);
00342 ar & make_nvp("RecordId", m.RecordId);
00343
00344 ar & make_nvp("From", m.From);
00345 ar & make_nvp("To", m.To);
00346 ar & make_nvp("Cc", m.Cc);
00347 ar & make_nvp("Bcc", m.Bcc);
00348 ar & make_nvp("Sender", m.Sender);
00349 ar & make_nvp("ReplyTo", m.ReplyTo);
00350 ar & make_nvp("Subject", m.Subject);
00351 ar & make_nvp("Body", m.Body);
00352 ar & make_nvp("Attachment", m.Attachment);
00353 ar & make_nvp("MessageRecordId", m.MessageRecordId);
00354 ar & make_nvp("MessageReplyTo", m.MessageReplyTo);
00355 ar & make_nvp("MessageDateSent", m.MessageDateSent);
00356 ar & make_nvp("MessageDateReceived", m.MessageDateReceived);
00357
00358 ar & make_nvp("MessageTruncated", m.MessageTruncated);
00359 ar & make_nvp("MessageRead", m.MessageRead);
00360 ar & make_nvp("MessageReply", m.MessageReply);
00361 ar & make_nvp("MessageSaved", m.MessageSaved);
00362 ar & make_nvp("MessageSavedDeleted", m.MessageSavedDeleted);
00363
00364 ar & make_nvp("MessagePriority", m.Priority);
00365 ar & make_nvp("MessageSensitivity", m.Sensitivity);
00366
00367 if( ver < BARRY_POD_MAP_VERSION ) {
00368 ar & make_nvp("Unknowns", m.Unknowns);
00369 }
00370 }
00371
00372 template <class ArchiveT>
00373 void serialize(ArchiveT &ar, Barry::Sms &m, const unsigned int ver)
00374 {
00375 ar & make_nvp("RecType", m.RecType);
00376 ar & make_nvp("RecordId", m.RecordId);
00377
00378 ar & make_nvp("MessageStatus", m.MessageStatus);
00379 ar & make_nvp("DeliveryStatus", m.DeliveryStatus);
00380
00381 ar & make_nvp("IsNew", m.IsNew);
00382 ar & make_nvp("NewConversation", m.NewConversation);
00383 ar & make_nvp("Saved", m.Saved);
00384 ar & make_nvp("Deleted", m.Deleted);
00385 ar & make_nvp("Opened", m.Opened);
00386
00387 ar & make_nvp("Timestamp", m.Timestamp);
00388 ar & make_nvp("ServiceCenterTimestamp", m.ServiceCenterTimestamp);
00389
00390 ar & make_nvp("DataCodingScheme", m.DataCodingScheme);
00391 ar & make_nvp("ErrorId", m.ErrorId);
00392
00393 ar & make_nvp("Addresses", m.Addresses);
00394 ar & make_nvp("Body", m.Body);
00395
00396 if( ver < BARRY_POD_MAP_VERSION ) {
00397 ar & make_nvp("Unknowns", m.Unknowns);
00398 }
00399 }
00400
00401 template <class ArchiveT>
00402 void serialize(ArchiveT &ar, Barry::Folder &f, const unsigned int ver)
00403 {
00404 ar & make_nvp("RecType", f.RecType);
00405 ar & make_nvp("RecordId", f.RecordId);
00406
00407 ar & make_nvp("FolderName", f.Name);
00408 ar & make_nvp("FolderNumber", f.Number);
00409 ar & make_nvp("FolderLevel", f.Level);
00410 ar & make_nvp("FolderType", f.Type);
00411
00412 if( ver < BARRY_POD_MAP_VERSION ) {
00413 ar & make_nvp( "Unknowns", f.Unknowns);
00414 }
00415 }
00416
00417 template <class ArchiveT>
00418 void serialize(ArchiveT &ar, Barry::Timezone &t, const unsigned int ver)
00419 {
00420 ar & make_nvp("RecType", t.RecType);
00421 ar & make_nvp("RecordId", t.RecordId);
00422
00423 ar & make_nvp("TZType", t.TZType);
00424 ar & make_nvp("DSTOffset", t.DSTOffset);
00425 ar & make_nvp("Index", t.Index);
00426 ar & make_nvp("Offset", t.Offset);
00427 ar & make_nvp("OffsetFraction", t.OffsetFraction);
00428 ar & make_nvp("StartMonth", t.StartMonth);
00429 ar & make_nvp("EndMonth", t.EndMonth);
00430 ar & make_nvp("Left", t.Left);
00431 ar & make_nvp("UseDST", t.UseDST);
00432
00433 ar & make_nvp("TimeZoneName", t.TimeZoneName);
00434
00435 if( ver < BARRY_POD_MAP_VERSION ) {
00436 ar & make_nvp("Unknowns", t.Unknowns);
00437 }
00438 }
00439
00440 }}
00441
00442 #endif
00443