Data Model
[Support Kit]


Detailed Description

These Binder interfaces and classes provide a rich, standard data model for the rest of the system to use.

The core data model API is expressed in four interfaces: IDatum, INode, IIterable, and ICatalog. In additional, helper classes are provided to with the use and implementation of these basic interfaces. See Binder Data Model for more extensive documentation on these classes.


Files

file  BufferIO.h
 Perform buffering on a byte stream.
file  ByteStream.h
 A BByteStream converts byte stream operations in to IStorage operations.
file  Catalog.h
 Helpers for implementing ICatalog and its associated interfaces.
file  CatalogDelegate.h
 Delegation class for wrapping an existing INode/IIterable/ICatalog implementation.
file  CatalogMirror.h
 Create a new catalog entry based on modifications to an existing one.
file  Datum.h
 Convenience for calling the IDatum interface.
file  DatumGeneratorInt.h
 Utility class for dynamically generating datums associated with integer keys.
file  DatumLord.h
 Generates IDatum objects on demand.
file  GenericDatum.h
 Common base implementation of IDatum interface.
file  GenericIterable.h
 Common base implementations of IIterable interface.
file  GenericNode.h
 Common base implementations of INode interface.
file  IByteStream.h
 Raw byte stream (read, write, seek) interfaces.
file  ICatalog.h
 Generic node modification interface.
file  IndexedDataNode.h
 Helper class for implementing an INode containing an array of data.
file  IndexedIterable.h
 Base class for IIterable implementations that contain an array of items.
file  IndexedTableNode.h
 Helper class for implementing an INode containing a complex table structure.
file  IOSStream.h
 Byte stream to an IOS device.
file  IStorage.h
 Random-access interface to a block of raw data.
file  KernelStreams.h
 Byte stream to a file descriptor (not supported on Palm OS).
file  MemoryStore.h
 IStorage implementations for physical memory.
file  MetaDataNode.h
 A base class of INode that provides all standard meta-data.
file  Node.h
 Helper class for calling the INode interface.
file  NodeDelegate.h
 Delegation class for wrapping an existing INode implementation.
file  NullStreams.h
 Byte streams that do nothing.
file  Pipe.h
 Pipe-like implementation of byte input and output streams.
file  StdIO.h
 Binder-based standard IO streams.
file  StreamDatum.h
 Base implementation of IDatum from stream-like data operations.
file  StringIO.h
 Binder IO stream for creating C strings.
file  StructuredNode.h
 Convenience for creating data model interface to a structure.
file  TextStream.h
 Implementation of ITextOutput and ITextInput on top of byte streams.
file  ValueDatum.h
 A concrete implementation of BStreamData holding a generic SValue.

Classes

class  BByteStream
 Byte streams on top of an IStorage. More...
class  BCatalog
class  BCatalogDelegate
 Provides base implementation of delegations for INode/IIterable/ICatalog. More...
class  BCatalogDelegate::IteratorDelegate
 Generic base class implementation of a BGenericIterable's iterator. More...
class  BCatalogMirror
 CatalogMirror is an ICatalogPermissions + ICatalog. More...
class  BGenericCatalog
class  BGenericDatum
 Generic base class for implementations of IDatum. More...
class  BGenericNode
 This is the most generic base-class implementation of the INode interface. More...
class  BIndexedCatalog
class  BIndexedDataNode
 An implementation of INode that holds an array of data, identified by index. More...
class  BIndexedIterable
 Base class for IIterable implementations that contain an array of items. More...
class  BIndexedIterable::IndexedIterator
 Iterator over an BIndexedIterable's data set. More...
class  BIndexedTableNode
 An implementation of INode that holds a 2d array of data, identified by index. More...
class  BIndexedTableNode::RowNode
 Node object generated for a row in BIndexedTableNode. More...
class  BIOSStream
 Byte input and output streams on an IOS device. More...
class  BKernelIStr
class  BKernelOStr
class  BMallocStore
 BMemoryStore that performs memory allocations on the heap. More...
class  BMemoryStore
 Generic implementation of storage and byte streams on a block of memory. More...
class  BMetaDataCatalog
class  BMetaDataNode
 A base class of INode that provides all standard meta-data. More...
class  BNodeDelegate
 Provides base implementation of delegations for INode. More...
class  BNodeObserver
class  BNullStream
class  BNullTextOutput
class  BPipe
 Pipe-like implementation of byte input and output streams. More...
class  BRandomIterator
class  BReadOnlyStream
 Read-only byte streams on top of an IStorage. More...
class  BStreamDatum
 Base implementation of IDatum from stream-like data operations. More...
class  BStreamDatum::Stream
 An open stream on BStreamDatum. More...
class  BStringIO
class  BStructuredNode
 An INode containing a fixed set of named entries. More...
class  BTextInput
class  BTextOutput
class  BValueDatum
 A concrete implementation of BStreamData holding a generic SValue. More...
class  BValueIterator
class  BValueStorage
class  BWriteOnlyStream
 Write-only byte streams on top of an IStorage. More...
class  IByteInput
 Abstract byte stream input (read) interface. More...
class  IByteOutput
 Abstract byte stream output (write) interface. More...
class  IByteSeekable
 Abstract byte stream seeking interface. More...
class  ICatalog
 Generic modification interface for INode objects. More...
class  ICatalogPermissions
 ICatalogPermissions provides for ICatalog modifications. More...
class  IDatum
 Interface to a single piece of data, such as a file. More...
class  IIterable
 Interface implemented by objects that support iteration over their data. More...
class  IIterator
 Basic iteration iterface. More...
class  INode
 Basic interface to a container in the Binder namespace. More...
class  INodeObserver
 Convenience for linking to INode events. More...
class  IRandomIterator
 Extended IIterator interface that supports random access. More...
class  IReferable
 Interface to find the unique name for an object in the namespace. More...
class  IStorage
 Random-access interface to a block of raw data. More...
class  ITable
 Extended interface to an IIterable holding a 2d data structure. More...
struct  read_at_transaction
 This is the contents of a B_READ_AT_TRANSACTION parcel. More...
class  SDatum
 Convenience class for using an IDatum. More...
class  SDatumGeneratorInt
 Utility class for dynamically generating datums associated with integer keys. More...
class  SDatumGeneratorInt::IndexedDatum
 Datum object generated for an item in SDatumGeneratorInt. More...
class  SDatumLord
class  SIterator
 Convenience class for using an IIterator/IIterable. More...
class  SNode
 Convenience class for operating on the INode interface. More...
class  SWalkHelper
struct  write_at_transaction
 is immediately followed by the data to be written. More...

Defines

#define berr   _get_berr()
#define bout   _get_bout()
#define TEXTOUTPUT_SMALL_STACK   1
#define TO(x)

Typedefs

typedef SNode SCatalog

Enumerations

enum  {
  B_TEXT_OUTPUT_THREADED = 0x00000001, B_TEXT_OUTPUT_COLORED = 0x00000002, B_TEXT_OUTPUT_TAG_THREAD = 0x00000004, B_TEXT_OUTPUT_TAG_TEAM = 0x00000008,
  B_TEXT_OUTPUT_TAG_TIME = 0x00000010, B_TEXT_OUTPUT_FROM_ENV = 0x10000000, B_TEXT_OUTPUT_COLORED_RED = 0x00010000 | B_TEXT_OUTPUT_COLORED, B_TEXT_OUTPUT_COLORED_GREEN = 0x00020000 | B_TEXT_OUTPUT_COLORED,
  B_TEXT_OUTPUT_COLORED_BROWN = 0x00030000 | B_TEXT_OUTPUT_COLORED, B_TEXT_OUTPUT_COLORED_BLUE = 0x00040000 | B_TEXT_OUTPUT_COLORED, B_TEXT_OUTPUT_COLORED_PURPLE = 0x00050000 | B_TEXT_OUTPUT_COLORED, B_TEXT_OUTPUT_COLORED_CYAN = 0x00060000 | B_TEXT_OUTPUT_COLORED,
  B_TEXT_OUTPUT_COLORED_GRAY = 0x00070000 | B_TEXT_OUTPUT_COLORED, B_TEXT_OUTPUT_COLORED_MASK = 0x000f0000
}
 Flags for BTextOutput constructor. More...
enum  { B_WRITE_AT_TRANSACTION = 'WRAT', B_READ_AT_TRANSACTION = 'RDAT' }
 Raw storage read and write transaction codes. More...
enum  { B_IOSSTREAM_NO_AUTO_CLOSE = 0x0001, B_IOSSTREAM_HIDE_INPUT = 0x0002, B_IOSSTREAM_HIDE_OUTPUT = 0x0004 }
enum  { B_WRITE_TRANSACTION = 'WRTE', B_WRITE_FLAGS_TRANSACTION = 'WRFL', B_READ_TRANSACTION = 'READ' }
 Raw byte input and output transaction codes. More...
enum  { B_DO_NOT_BLOCK = 0x00000001 }
 Flags for IByteOutput::Write() and IByteInput::Read(). More...
enum  { B_WRITE_END = 0x00010000 }
 Flags for IByteOutput::Write(). More...

Functions

_IMPEXP_SUPPORT sptr< ITextOutput > & _get_berr (void)
_IMPEXP_SUPPORT sptr< ITextOutput > & _get_bout (void)
 B_CONST_STRING_VALUE_LARGE (BV_ENTRY_RENAMED,"EntryRenamed",)
 B_CONST_STRING_VALUE_LARGE (BV_ENTRY_REMOVED,"EntryRemoved",)
 B_CONST_STRING_VALUE_LARGE (BV_ENTRY_MODIFIED,"EntryModified",)
 B_CONST_STRING_VALUE_LARGE (BV_ENTRY_CREATED,"EntryCreated",)
 B_CONST_STRING_VALUE_LARGE (BV_ITERATOR_CHANGED,"IteratorChanged",)
_IMPEXP_SUPPORT const sptr<
IByteInput > & 
NullByteInput (void)
_IMPEXP_SUPPORT const sptr<
IByteOutput > & 
NullByteOutput (void)
_IMPEXP_SUPPORT const sptr<
IByteOutput > & 
StandardByteError (void)
_IMPEXP_SUPPORT const sptr<
IByteInput > & 
StandardByteInput (void)
_IMPEXP_SUPPORT const sptr<
IByteOutput > & 
StandardByteOutput (void)


Define Documentation

#define berr   _get_berr()
 

#define bout   _get_bout()
 

#define TEXTOUTPUT_SMALL_STACK   1
 

#define TO  ) 
 


Typedef Documentation

typedef SNode SCatalog
 


Enumeration Type Documentation

anonymous enum
 

Flags for BTextOutput constructor.

Enumerator:
B_TEXT_OUTPUT_THREADED  Buffer text per-thread.
B_TEXT_OUTPUT_COLORED  Lines are colored by thread.
B_TEXT_OUTPUT_TAG_THREAD  Prefix output with thread id.
B_TEXT_OUTPUT_TAG_TEAM  Prefix output with team id.
B_TEXT_OUTPUT_TAG_TIME  Prefix output with timestamp.
B_TEXT_OUTPUT_FROM_ENV  Get above flags from environment var.
B_TEXT_OUTPUT_COLORED_RED 
B_TEXT_OUTPUT_COLORED_GREEN 
B_TEXT_OUTPUT_COLORED_BROWN 
B_TEXT_OUTPUT_COLORED_BLUE 
B_TEXT_OUTPUT_COLORED_PURPLE 
B_TEXT_OUTPUT_COLORED_CYAN 
B_TEXT_OUTPUT_COLORED_GRAY 
B_TEXT_OUTPUT_COLORED_MASK 

anonymous enum
 

Raw storage read and write transaction codes.

Enumerator:
B_WRITE_AT_TRANSACTION 
B_READ_AT_TRANSACTION 

anonymous enum
 

Enumerator:
B_IOSSTREAM_NO_AUTO_CLOSE 
B_IOSSTREAM_HIDE_INPUT 
B_IOSSTREAM_HIDE_OUTPUT 

anonymous enum
 

Raw byte input and output transaction codes.

Enumerator:
B_WRITE_TRANSACTION 
B_WRITE_FLAGS_TRANSACTION 
B_READ_TRANSACTION 

anonymous enum
 

Flags for IByteOutput::Write() and IByteInput::Read().

Enumerator:
B_DO_NOT_BLOCK  Perform a non-blocking IO.

If the read or write operation would block, the function instead returns with the number of bytes processed before having to block or B_WOULD_BLOCK if nothing was processed.

anonymous enum
 

Flags for IByteOutput::Write().

Enumerator:
B_WRITE_END  Mark the final location as the end of the stream.

Any data currently after this location will be removed; further writes will extend the stream from here. This flag will NOT be used if the write operation does not include all supplied bytes. (I.e., it returns fewer bytes than the caller supplied or an error code.)


Function Documentation

_IMPEXP_SUPPORT sptr<ITextOutput>& _get_berr void   ) 
 

_IMPEXP_SUPPORT sptr<ITextOutput>& _get_bout void   ) 
 

B_CONST_STRING_VALUE_LARGE BV_ENTRY_RENAMED  ,
"EntryRenamed" 
 

B_CONST_STRING_VALUE_LARGE BV_ENTRY_REMOVED  ,
"EntryRemoved" 
 

B_CONST_STRING_VALUE_LARGE BV_ENTRY_MODIFIED  ,
"EntryModified" 
 

B_CONST_STRING_VALUE_LARGE BV_ENTRY_CREATED  ,
"EntryCreated" 
 

B_CONST_STRING_VALUE_LARGE BV_ITERATOR_CHANGED  ,
"IteratorChanged" 
 

_IMPEXP_SUPPORT const sptr<IByteInput>& NullByteInput void   ) 
 

_IMPEXP_SUPPORT const sptr<IByteOutput>& NullByteOutput void   ) 
 

_IMPEXP_SUPPORT const sptr<IByteOutput>& StandardByteError void   ) 
 

_IMPEXP_SUPPORT const sptr<IByteInput>& StandardByteInput void   ) 
 

_IMPEXP_SUPPORT const sptr<IByteOutput>& StandardByteOutput void   )