<<>> <> <> <> <> <> <<>> DIRECTORY BasicTime USING [GMT], Rope USING [ROPE]; Remind: CEDAR DEFINITIONS = BEGIN MeetingType: TYPE = {none, meeting, command, seminar, protectedCmd}; MeetingRec: TYPE = RECORD[ uniqID: INT, type: MeetingType ¬ meeting, start: BasicTime.GMT, duration: CARD ¬ 60, -- minutes explanation: Rope.ROPE ¬ NIL, repeat: Repetitions ¬ once, nth: INT ¬ 0, reminders: RemindList ¬ NIL, more: Rope.ROPE ¬ NIL, -- pointer to more, usually a mail message iconLabel: Rope.ROPE ¬ NIL, iconFlavor: Rope.ROPE ¬ NIL, public: BOOL ¬ FALSE, other: REF ANY ¬ NIL]; Meeting: TYPE = REF MeetingRec; Repetitions: TYPE = {once, daily, weekdays, weekly, biweekly, monthly, yearly, nthWeekday, everyNthDay, everyNthWeek, everyNthMonth, other}; RemindList: TYPE ~ LIST OF Reminder; Reminder: TYPE ~ REF ReminderRecord; AlertReminder: TYPE ~ REF ReminderRecord[alert]; MailReminder: TYPE ~ REF ReminderRecord[mail]; ReminderRecord: TYPE ~ RECORD [ other: REF ANY ¬ NIL, variant: SELECT how: RemindStyle FROM alert => [start, stop: BasicTime.GMT], mail => [when: BasicTime.GMT, to: Rope.ROPE], ENDCASE]; RemindStyle: TYPE ~ {alert, mail}; <> AddMeeting: PROC[meeting: Meeting, closeDb: BOOLEAN ¬ TRUE, dbName: Rope.ROPE ¬ NIL] RETURNS [id: INT]; GetDefaultDbName: PROC RETURNS [Rope.ROPE]; <> CloseDb: PROC[dbName: Rope.ROPE ¬ NIL]; <> DeleteMeeting: PROC [start: BasicTime.GMT, id: INT, closeDb: BOOLEAN ¬ TRUE, dbName: Rope.ROPE ¬ NIL] RETURNS [BOOLEAN]; <> DeleteMeetingInRange: PROC [from, to: BasicTime.GMT, id: INT, closeDb: BOOLEAN ¬ TRUE, dbName: Rope.ROPE ¬ NIL] RETURNS [BOOLEAN]; <> DeleteAllMeetings: PROC[dbName: Rope.ROPE ¬ NIL] RETURNS [INT]; <> ListMeetings: PROC[ from, to: BasicTime.GMT, all: BOOLEAN ¬ FALSE, dbName: Rope.ROPE ¬ NIL] RETURNS [LIST OF Meeting]; <> RopeFromRepetition: PROC[rep: Repetitions] RETURNS [Rope.ROPE]; RepetitionFromRope: PROC[str: Rope.ROPE] RETURNS [Repetitions]; <> RopeFromMeetingType: PROC[type: MeetingType] RETURNS [Rope.ROPE]; MeetingTypeFromRope: PROC[str: Rope.ROPE] RETURNS [MeetingType]; <> NextOccurrence: PROC[repeat: Repetitions, nth: INT, time: BasicTime.GMT] RETURNS [BasicTime.GMT]; <= now when it will occur>> FirstOccurrenceAfter: PROC[repeat: Repetitions, nth: INT, init, now: BasicTime.GMT] RETURNS [BasicTime.GMT]; <> RegisterChangeProc: PROC[proc: PROC[data: REF], clientData: REF, ident: ATOM, dbName: Rope.ROPE ¬ NIL]; <<>> <> UnregisterChangeProc: PROC[ident: ATOM, dbName: Rope.ROPE ¬ NIL]; <> CompactDb: PROC[dbName: Rope.ROPE ¬ NIL]; <> <> <> <> <> <> BadData: ERROR; END.