ftp.nice.ch/pub/next/developer/languages/c/gcc.2.7.2.2.I.b.tar.gz#/lib/gcc-lib/m68k-next-nextstep3/2.7.2.2.f.2/include/store/IXStoreBlock.h

This is IXStoreBlock.h in view mode; [Download] [Up]

/*
IXStoreBlock.h
Copyright 1991, NeXT Computer, Inc.
*/

#import	"protocols.h"
#import	"IXStore.h"

#import	<remote/transport.h>
#import <machkit/reference.h>
#import	<objc/Object.h>

extern unsigned 
IXWriteRootObjectToStore(IXStore *aStore, unsigned aHandle, id anObject);

extern id 
IXReadObjectFromStore(IXStore *aStore, unsigned aHandle, NXZone *aZone);

/* This is a convenience class, most often used to associate a named store */
/* directory entry with an archived object.  It distributes by copy, using the */
/* exportBlock:atOffset:forLength: and importBlock:atOffset:forLength: methods */
/* of IXStore to provide remote access the contents of the block.*/

@interface IXStoreBlock: Object <NXReference,NXTransport,IXBlockAndStoreAccess>
{
    unsigned		_references;
@public
    IXStore		*store;
    unsigned		handle;
    unsigned		blockSize;
@protected
    id			blockData;
    unsigned		readOffset;
    unsigned		readLength;
}

/* Returns the receiver's store, primarily as a convenience for transaction */
/* management - e.g., [[client store] startTransaction].*/

- (IXStore *)store;

/* Closes the block if there is only one outstanding reference.  This makes the */
/* block available to other contexts, unless the block has been modified.*/

- close;

/* Opens the block for reading, returning a pointer to a copy of the block's */
/* contents. Each invocation invalidates the pointer returned by the previous */
/* invocation, unless the supplied offset and length are the same as for the */
/* previous invocation.  The block's contents will not be modified, regardless */
/* of what the sender does to the copy, until writeAtOffset:forLength: is sent.  */

- (unsigned char *)readAtOffset:(unsigned)offset forLength:(unsigned)length;

/* These two methods return the offset and length supplied to the most recent */
/* invocation of readAtOffset:forLength:.*/

- (unsigned)readOffset;
- (unsigned)readLength;

/* Writes the copy of the block's contents, as modified by the sender, to the */
/* store, opening the block for modification in the process.  The supplied */
/* offset and length must define a complete subset of the range opened by the */
/* previous invocation of readAtOffset:forLength:.*/

- writeAtOffset:(unsigned)offset forLength:(unsigned)length;

/* Copies the block, returning the handle of the result of the copy.*/
- (unsigned)copyAtOffset:(unsigned)offset forLength:(unsigned)length;

- (unsigned)size; /* Locks and determines the size of the block.*/

/* Resizes the block.  This invalidates the pointer to the block's contents */
/* returned by readAtOffset:forLength:.  A new pointer to the block's contents */
/* must be accquired if further access to the contents is necessary.*/

- resizeTo:(unsigned)size;

/* Opens typed stream on the block's contents, and calls NXReadObject() to */
/* unarchive the contents of the typed stream.*/

- readObject;

/* Calls NXWriteRootObject() on the supplied object, resizes the block to fit */
/* the resulting buffer, and copies the contents of the buffer to the block */
/* with writeAtOffset:forLength:.*/

- writeObject:anObject;

/* This method does not distribute, since it returns a pointer to the actual */
/* block contents obtained from openBlock:atOffset:forLength:.  It is provided */
/* for compatibility and for efficiency with a local store.*/

- (unsigned char *)openAtOffset:(unsigned)offset forLength:(unsigned)length;

@end

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.