Sequences represent arrays of rows (or indexed collections / tables). Insertion and removal of entries is allowed, but could take linear time. A reference count is maintained to decide when the object should go away.


virtual int AddHandler (c4_Handler*);
Add the specified data handler to this sequence

void Attach (c4_Sequence* child_);
Register a sequence to receive change notifications

c4_Bytes& Buffer ();
Gives access to a general purpose temporary buffer

void ClearCache ();
! for c4_Table::Sequence setup

virtual int Compare (int, c4_Cursor) const;
Compare the specified row with another one

virtual c4_Handler* CreateHandler (const c4_Property&);
Create a handler of the appropriate type

void DecRef ();
Decrement the reference count, delete objects when last

const char* Describe ();
Return a descriptions of the current data structure

void Detach (c4_Sequence* child_);
Unregister a sequence which received change notifications

virtual bool Get (int, int, c4_Bytes&);
Retrieve one data item from this sequence

c4_Dependencies* GetDependencies () const;
Return a pointer to the dependencies, or null

virtual const c4_Sequence* HandlerContext (int) const;
Return the context of the N-th handler in this sequence

void IncRef ();
Increment the reference count of this sequence

virtual void InsertAt (int, c4_Cursor, int =1);
Insert one or more rows into this sequence

virtual int ItemSize (int index_, int propId_);
Return width of specified data item

virtual void Move (int, int);
Move a row to another position

virtual c4_Handler& NthHandler (int) const;
Return a reference to the N-th handler in this sequence

int NthPropId (int) const;
Return the id of the N-th property

virtual int NumHandlers () const;
Return the number of data handlers in this sequence

int NumRefs () const;
Return the current number of references to this sequence

virtual void PostChange (c4_Notifier& nf_);
Called after changes have been made to the sequence

virtual c4_Notifier* PreChange (c4_Notifier& nf_);
Called just before a change is made to the sequence

int PropIndex (const c4_Property&);
Find the index of a property, or create a new entry

int PropIndex (int);
Find the index of a property by its id

virtual int RemapIndex (int, const c4_Sequence*) const;
Remap the index to an underlying view

virtual void RemoveAt (int, int =1);
Remove one or more rows from this sequence

void Resize (int, int =-1);
Change number of rows, either by inserting or removing them

virtual void Set (int, const c4_Property&, const c4_Bytes&);
Store a data item into this sequence

void SetAt (int, c4_Cursor);
Replace the contents of a specified row

virtual void SetSize (int size_);

virtual int Size () const;
Return the current number of rows

const char* UseTempBuffer (const char*);

c4_Dependencies* _dependencies;

int _propertyLimit;

short* _propertyMap;
see c4_HandlerSeq::Reset()

int _refCount;

c4_Bytes* _tempBuf;

c4_Sequence ();
Abstract constructor

c4_Sequence (const c4_Sequence&);
not implemented

void operator= (const c4_Sequence&);
not implemented

virtual ~c4_Sequence ();


class c4_Sequence