home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
NeXTSTEP 3.2 (Developer)
/
NS_dev_3.2.iso
/
NextDeveloper
/
Headers
/
store
/
protocols.h
< prev
Wrap
Text File
|
1993-02-18
|
4KB
|
105 lines
/*
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