This is eTBookmarkBinder.h in view mode; [Download] [Up]
///////////////////////////////////////////////////////////////////////////////
// FILENAME: eTBookmarkBinder.h
// SUMMARY: Appwide rendezvous point for bookmark management
// SUPERCLASS: Object
// INTERFACE: None
// PROTOCOLS: None
// AUTHOR: Rohit Khare
// COPYRIGHT: (c) 1994 California Institure of Technology, eText Project
///////////////////////////////////////////////////////////////////////////////
// DESCRIPTION
// The Binder enables 3 functions:
// * when reading in an eText stream, matching up the beginning
// and ending tags for an anchor
// * allowing link traversal to select a particular anchor in a doc.
// * working with the eTBookmarkUI to present a list of anchors
// a given doc.
// Ideally, we could have a binder for each document, but then we have
// namespace problems, and we'd have to hardwire new functionality into the
// kernel. Instead, [eTBookmarkBinder new] returns an appwide binder that
// internally maintains a table of anchor tables.
//
// TO DO
// What are the memory management/integrity constraints on this solution?
// It requires invariant and unique anchorID-annotation mappings.
//
// What happens when bookmarks are destroyed/corrupted? memory corruption,
// unpaired links... bookmark integrity checking?
//
// What happens to a "stale" anchor-ref-- when the anchor don't exist?
///////////////////////////////////////////////////////////////////////////////
// HISTORY
// 06/15/94: Added dirty bit management. RK & TRZ
// 05/08/94: Created. First actual implementation.
///////////////////////////////////////////////////////////////////////////////
#import "Bookmark.h"
@interface eTBookmarkBinder:Object
{
id docTable; // A hashtable of hashtables.
id anchorTable; // master anchor concordance -- shortcut
BOOL dirtyBit;
}
- registerBM:theBookmark ID:(long)anchorID inDoc:(long)docID;
- unregisterBM:theBookmark ID:(long)anchorID inDoc:(long)docID;
- getBookmarks:theStorage inDoc:(long)docID;
- bookmarkForID:(long)anchorID;
- (BOOL) isDirty;
@endThese are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.