#include #include #include #include #include #include #include #include "../../common/text.h" using namespace std; enum CalendarObjectLoadResult { CALENDAROBJECTLOAD_UNITTESTFAIL = -1, CALENDAROBJECTLOAD_OK, CALENDAROBJECTLOAD_MISSING, CALENDAROBJECTLOAD_INVALIDFORMAT, CALENDAROBJECTLOAD_CANNOTOPEN }; enum CalendarObjectValidResult{ CALENDAROBJECTVALID_UNITTESTFAIL = -1, CALENDAROBJECTVALID_OK, CALENDAROBJECTVALID_INVALIDFORMAT }; class CalendarObject{ public: CalendarObjectLoadResult LoadFile(std::string LoadFilename); CalendarObjectLoadResult LoadString(std::string *LoadStringData); CalendarObjectValidResult ValidBaseObject(); void ProcessBaseData(); // Setup virtual subroutines for use by objects // inheriting from CalendarObject later on. virtual CalendarObjectValidResult ValidObject() { return CALENDAROBJECTVALID_OK; }; virtual void Clear() {}; // Object data. std::string MethodData; std::string MethodTokens; std::string UniqueID; std::string UniqueIDTokens; vector AttachList; vector AttachListTokens; vector AttachListEncoding; vector AttachListValue; vector CategoriesList; vector CategoriesListLanguage; vector CateogriesListTokens; std::string ClassData; std::string ClassListTokens; vector CommentList; vector CommentListAltID; vector CommentListLanguage; vector CommentListTokens; vector DescriptionList; vector DescriptionListAltID; vector DescriptionListLanguage; vector DescriptionListTokens; std::string GeographicData; std::string GeographicTokens; std::string LocationData; std::string LocationDataAltID; std::string PercentCompleteData; std::string PercentCompleteTokens; int PriorityData; std::string PriorityTokens; vector ResourcesData; vector ResourcesDataAltID; vector ResourcesDataLanguage; vector ResourcesDataTokens; std::string StatusData; std::string StatusTokens; std::string SummaryData; std::string SummaryDataAltID; std::string SummaryDataLanguage; std::string SummaryDataTokens; std::string DataTimeEndData; std::string DataTimeEndDataValue; std::string DataTimeEndDataTimeZoneID; std::string DataTimeEndDataTokens; std::string DueData; std::string DueDataValue; std::string DueDataTimeZoneID; std::string DueDataTokens; std::string DataTimeStartData; std::string DataTimeStartDataValue; std::string DataTimeStartDataTimeZoneID; std::string DataTimeStartDataTokens; std::string DurationData; std::string DurationDataTokens; vector FreeBusyList; vector FreeBusyListType; vector FreeBusyListTokens; std::string TimeTransparencyData; std::string TimeTransparencyDataTokens; std::string TimeZoneData; std::string TimeZoneDataTokens; vector TimeZoneNameList; vector TimeZoneNameListLanguage; vector TimeZoneNameListTokens; std::string TimeZoneOffsetFromData; std::string TimeZoneOffsetFromDataTokens; std::string TimeZoneOffsetToData; std::string TimeZoneOffsetToDataTokens; std::string TimeZoneURLData; std::string TimeZoneURLTokens; vector AttendeeList; vector AttendeeListMember; vector AttendeeListDelegatedFrom; vector AttendeeListDelegatedTo; vector AttendeeListRole; vector AttendeeListRSVP; vector AttendeeListDirectoryEntry; vector AttendeeListSentBy; vector AttendeeListCommonName; vector AttendeeListCalendarUserType; vector AttendeeListParticipationStatus; vector AttendeeListLanguage; vector AttendeeListTokens; vector ContactList; vector ContactListAltID; vector ContactListLanguage; vector ContactListTokens; std::string OrganiserData; std::string OrganiserDataCommonName; std::string OrganiserDataDirectoryEntry; std::string OrganiserDataSentByParam; std::string OrganiserDataLanguage; std::string OrganiserDataTokens; std::string RecurranceIDData; std::string RecurranceIDDataTimeZoneParam; std::string RecurranceIDDataValue; std::string RecurranceIDDataTokens; vector RelatedToData; vector RelatedToDataRelationType; vector RelatedToDataTokens; std::string URLData; std::string URLDataTokens; vector ExcludeDateData; vector ExcludeDateDataValue; vector ExcludeDateDataTimeZoneParam; vector ExcludeDateDataTokens; vector RecurranceDateData; vector RecurranceDateDataValue; vector RecurranceDateDataTimeZoneParam; vector RecurranceDateDataTokens; std::string RecurranceRuleData; std::string RecurranceRuleDataFrequency; std::string RecurranceRuleDataCount; std::string RecurranceRuleDataInterval; std::string RecurranceRuleDataUntil; std::string RecurranceRuleDataMonth; std::string RecurranceRuleDataWeekStarting; std::string RecurranceRuleDataWeekByDay; std::string RecurranceRuleDataWeekByMonthDay; std::string RecurranceRuleDataWeekByWeekNumber; std::string RecurranceRuleDataWeekBySetPosition; std::string TriggerDataList; std::string TriggerDataValue; std::string TriggerDataRelatedParam; std::string TriggerDataTokens; std::string DateTimeCreatedData; std::string DateTimeCreatedTokens; std::string DateTimeStampData; std::string DateTimeStampTokens; std::string LastModifiedData; std::string LastModifiedTokens; std::string SequenceData; std::string SequenceTokens; vector XTokensData; vector XTokensDataTokens; vector RequestStatusData; vector RequestStatusLanguage; vector RequestStatusTokens; protected: // Initial Loading Data. vector ObjectName; vector ObjectData; private: virtual void ProcessData() {}; };