-- /ivy/binding/calendar/calStorage.mesa -- Last edited by: Binding, August 16, 1984 2:52:54 pm PDT DIRECTORY Calendar USING [ Days, Months, Years, Date, ZoomLevel], Hickory USING [ EventList, Event, Reason, EventTuple], ViewerClasses USING [ Viewer], RopeSets USING [ RopeSet] ; CalStorage: CEDAR DEFINITIONS = BEGIN OPEN Calendar; DayNode: TYPE = RECORD [ Day: Days, Initialized: BOOLEAN _ FALSE, -- was Hickory already queried for that day? EvList: Hickory.EventList _ NIL ]; MonthNode: TYPE = RECORD [ Month: Months, Initialized: BOOLEAN _ FALSE, -- for that month? DayNodes: ARRAY Days OF DayNode, Viewer: ViewerClasses.Viewer _ NIL ]; YearNode: TYPE = RECORD [ Year: Years, Initialized: BOOLEAN _ FALSE, -- for that year? MonthNodes: ARRAY Months OF MonthNode, Next: REF YearNode, Viewer: ViewerClasses.Viewer _ NIL ]; Mode: TYPE = { Query, Browse, EnterEvent, Initial }; ProtectedData: TYPE = MONITORED RECORD [ calViewer: ViewerClasses.Viewer _ NIL, curDate: Date, curMode: Mode, yearTrees: REF YearNode ]; protData: ProtectedData; GetEventsOfDay: PRIVATE --INTERNAL-- PROCEDURE [ date: Date, zoomLevel: ZoomLevel] RETURNS [ evl: Hickory.EventList]; RetrieveViewer: PRIVATE -- INTERNAL-- PROCEDURE [ date: Date, zoom: ZoomLevel] RETURNS [ viewer: ViewerClasses.Viewer]; StoreViewer: PRIVATE -- INTERNAL-- PROCEDURE [ date: Date, zoom: ZoomLevel, viewer: ViewerClasses.Viewer]; DestroyAllViewers: PRIVATE --INTERNAL-- PROCEDURE; FindEvent: PRIVATE --INTERNAL-- PROCEDURE [ date: Date, key: Hickory.Event] RETURNS [ evPtr: REF Hickory.EventTuple]; HickoryChange: PRIVATE --INTERNAL-- PROCEDURE [ reason: Hickory.Reason, ev: Hickory.Event, data: RopeSets.RopeSet] RETURNS [ oldEvl, newEvl: Hickory.EventList]; END. ÆGlobal Types Global Variables Operations zoomLevel is used for prefetching.... to destroy all viewers that are cached in CalStorage. return the pointer onto the event in storage. Makes a copy of tuple... here we update calendar storage and return the list of events that have indeed changed. 'oldEvl' is the list of events with key = 'ev' that were in storge before the change to hickory, newEvl is the list of events that now is in calStorage. ʘJ˜(J˜:J˜šÏk ˜ Jšœ œ)˜7Jšœœ)˜6Jšœœ ˜Jšœ œ ˜J˜—J˜Jšœ œ œ˜J˜Jšœœ ˜J˜šœ ™ J˜šœ œœ˜J˜ Jšœ œœÏc,˜JJšœ˜J˜—J˜šœ œœ˜J˜Jšœ œœž˜0Jšœ œœ ˜ J˜"J˜—J˜šœ œœ˜J˜ Jšœ œœž˜/Jšœ œœ ˜&Jšœœ ˜J˜"J˜—J˜J˜Jšœœ*˜4J˜šœœ œœ˜(J˜J˜&J˜J˜J˜J˜J˜Jšœ œ ˜J˜J˜—J˜—šœ™J˜J˜J˜—šœ ™ J˜š Ïnœœž œ œ%œ˜uJšœ%™%—J˜Jš Ÿœœž œ œ œ!˜wJ˜šŸ œœž œ œ>˜jJ˜—šŸœœž œ œ˜2Jšœ5™5J™—š Ÿ œœž œ œ#œ"˜uJšœF™FJ™—š Ÿ œœž œ œFœ&˜ JšœN™NJšœR™RJ™NJ™—Jšœ˜——…—Ò