an iCal processing library
Diff: iCal.cpp
- Revision:
- 11:fe5586155a42
- Parent:
- 10:deeaec151283
--- a/iCal.cpp Tue Jan 26 11:58:10 2016 +0000 +++ b/iCal.cpp Mon Feb 27 02:17:06 2017 +0000 @@ -10,7 +10,7 @@ #include <algorithm> //#ifdef _DEBUG -//#define DEBUG "iCal" +#define DEBUG "iCal" //#endif #ifdef WIN32 #define LF "\n" @@ -34,6 +34,16 @@ int EventCount = 0; int32_t tzoTZIDSec = 0; +bool tzAdjusted = false; // used during parsing of an iCal resource +typedef enum { + idle, + inTimeZone, + inEvent +} seekstate_t; +seekstate_t seeking = idle; +Event_T Event; + + const char * RPT_DAYS[] = { "SU", "MO", "TU", "WE", "TH", "FR", "SA", "" }; int GetNumEvents(void) @@ -520,15 +530,23 @@ return tzo; } +void ParseICalStart(void) { + tzAdjusted = false; + seeking = idle; + EventCount = 0; + +} + +int ParseICalClose(void) { + if (EventCount > 0) + SortEvents(); + return GetNumEvents(); +} + int ParseICalStream(char * pStart, time_t gridStartTime, time_t gridEndTime, tz_min_t tzoMin, bool showEvents) { - Event_T Event; - bool tzAdjusted = false; char * pEnd; - typedef enum { idle, inTimeZone, inEvent } seekstate_t; - seekstate_t seeking = idle; - EventCount = 0; if (gridEndTime == gridStartTime) gridEndTime++; // advance so they are not equal while (pStart && EventCount < EVENT_COUNT) { @@ -541,8 +559,6 @@ pEnd++; } // pStart now has a single null terminated line of text. - if (showEvents) - INFO("*** %s", pStart); switch (seeking) { case idle: if (strcmp(pStart, "BEGIN:VTIMEZONE") == 0) @@ -614,7 +630,4 @@ pStart = NULL; } } // while - if (EventCount > 0) - SortEvents(); - return GetNumEvents(); }