<> <> <> DIRECTORY ViewerClasses USING [Column, Viewer]; ViewerLocks: CEDAR DEFINITIONS = BEGIN OPEN ViewerClasses; <> <<>> <> <<>> <> <<>> <> <<>> <> <> CallUnderWriteLock: PROC [proc: PROC, viewer: Viewer] ; <> CallUnderWriteLocks: PROC [proc: PROC, v0, v1, v2: Viewer _ NIL] ; <> CallUnderReadLock: PROC [proc: PROC, viewer: Viewer] ; <> CallUnderReadLocks: PROC [proc: PROC, v0, v1, v2: Viewer _ NIL] ; <> CallUnderColumnLock: PROC [proc: PROC, column: Column] ; <> CallUnderColumnLocks: PROC [proc: PROC, c0, c1: Column] ; <> CallUnderViewerTreeLock: PROC [proc: PROC] ; <> LockOrder: PROC [v0, v1: Viewer] RETURNS [BOOL] = INLINE { RETURN [LOOPHOLE[v0, LONG CARDINAL] >= LOOPHOLE[v1, LONG CARDINAL]] }; <> <> AcquireWriteLock: PRIVATE PROC [viewer: Viewer] ; <> ReleaseWriteLock: PRIVATE PROC [viewer: Viewer] ; <> AcquireWriteLocks: PRIVATE PROC [v0, v1, v2: Viewer _ NIL] ; <> ReleaseWriteLocks: PRIVATE PROC [v0, v1, v2: Viewer _ NIL] ; <> AcquireReadLock: PRIVATE PROC [viewer: Viewer] ; <> ReleaseReadLock: PRIVATE PROC [viewer: Viewer] ; <> AcquireReadLocks: PRIVATE PROC [v0, v1, v2: Viewer _ NIL] ; <> ReleaseReadLocks: PRIVATE PROC [v0, v1, v2: Viewer _ NIL] ; <> AcquireColumnWriteLock: PRIVATE PROC [column: Column] ; <> ReleaseColumnWriteLock: PRIVATE PROC [column: Column] ; <> Wedged: ERROR [column: Column] ; <> ColumnWedged: PRIVATE PROC[column: Column] RETURNS[wedged, write: BOOLEAN]; MarkColumnWedged: PRIVATE PROC [column: Column] ; <> MarkColumnUnWedged: PRIVATE PROC [column: Column] ; <> LockViewerTree: PRIVATE PROC ; <> ReleaseViewerTree: PRIVATE PROC ; <> END.