home *** CD-ROM | disk | FTP | other *** search
- /*
- protocols.h
- Copyright 1991,NeXT Computer,Inc.
- */
-
- #import <objc/objc.h>
-
- @class IXStore;
-
- #define IX_STOREUSERERRBASE (9000)
- #define IX_STOREMACHERRBASE IX_STOREUSERERRBASE + (100)
- #define IX_STOREUNIXERRBASE IX_STOREUSERERRBASE + (300)
-
- typedef enum IXStoreErrorType {
- IX_NoError = IX_STOREUSERERRBASE,
- IX_InternalError,
- IX_ArgumentError,
- IX_QueryEvalError,
- IX_QueryTypeError,
- IX_QueryAttrError,
- IX_QueryImplError,
- IX_QueryYaccError,
- IX_MemoryError,
- IX_LockedError,
- IX_MachineError,
- IX_VersionError,
- IX_DamagedError,
- IX_DuplicateError,
- IX_NotFoundError,
- IX_TooLargeError,
- IX_UnixErrorBase = IX_STOREUNIXERRBASE,
- IX_MachErrorBase = IX_STOREMACHERRBASE
- } IXStoreErrorType;
-
- // An object that conforms to this protocol is a store client. It is a pseudo
- // persistent object, meaning that the run time representation of the object
- // may be freed, and later reconsituted by activation from persistent data in a
- // store. Every store client has a bootstrap handle; this is the handle of a
- // block from which all other blocks managed by the store client are reachable.
-
- @protocol IXBlockAndStoreAccess
-
- // Frees a store client of the receiving class from the designated bootstrap
- // handle in the designated store. This may involve instantiating the store
- // client from the designated handle and store, then sending it freeFromStore.
-
- + freeFromBlock:(unsigned)aHandle inStore:(IXStore *)aStore;
-
- // Frees the run time representation of a store client, and frees all blocks
- // allocated by the store client from the store.
-
- - freeFromStore;
-
- // Finds the bootstrap handle and store of a store client. This is enough
- // information to later reconsitute another run time representation of the
- // store client.
-
- - getBlock:(unsigned *)aHandle andStore:(IXStore **)aStore;
-
- // Creates a store client of the receiving class in the designated store,
- // allocating at least the bootstrap handle, and initializes the run time
- // representation.
-
- - initInStore:(IXStore *)aStore;
-
- // Reconstitutes and initializes a run time representation of a store client of
- // the receving class from the designated bootstrap handle and store.
-
- - initFromBlock:(unsigned)aHandle inStore:(IXStore *)aStore;
-
- @end
-
- // An object that conforms to this protocol uses an IXStoreDirectory to
- // bootstrap from an object name and a file name, rather than from a bootstrap
- // handle. By convention, the IXStoreDirectory is bootstrapped from the
- // distinguished block handle, 1.
-
- @protocol IXNameAndFileAccess <IXBlockAndStoreAccess>
-
- // Performs + freeFromBlock:inStore: for the designated object in the
- // designated file.
-
- + freeFromName:(const char *)aName inFile:(const char *)aFile;
-
- // Returns the object name and file name of a store client. This is enough
- // information to later reconsitute another run time representation of the
- // store client.
-
- - getName:(const char **)aName andFile:(const char **)aFile;
-
- // Creates a store client of the receiving class in the designated file,
- // allocating at least the bootstrap handle, and initializes the run time
- // representation. Creates the IXStoreDirectory, if necessary.
-
- - initWithName:(const char *)aName inFile:(const char *)aFile;
-
- // Reconstitutes and initializes a run time representation of a store client of
- // the receving class from the designated object name and file name.
-
- - initFromName:(const char *)aName inFile:(const char *)aFile
- forWriting:(BOOL)writingFlag;
-
- @end
-
-