an iCal processing library

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();
 }