Using the ISAM mode of c-tree Plus means that the maintenance of keys is automatic - as fields are updated, c-tree will update keys affected (a given field update may affect multiple keys due to compound fields, or keys defined with different constraints). The schema generation in OOF_ctreeBackend generates schema resources (DODA) in the c-tree files matching the Faircom standard so external tools and ODBC drivers can access OOFILE files.
|
public search functions |
| virtual bool | gotoRecord (unsigned long) |
| virtual bool | search (const dbQueryClause *qClause) |
| virtual unsigned long | recordNumberMatching (const dbQueryClause *qClause, bool *outFoundIt=0) const |
| virtual bool | checkDuplicate (const dbQueryClause *) |
| virtual bool | searchSelection (const dbQueryClause *) |
| virtual bool | searchEqual (const dbField *, const char *, bool matchEntireKey=true) |
| virtual bool | searchEqual (const dbField *, const VOID *) |
| virtual void | invert () |
recordwise access |
| virtual void | start () |
| virtual void | next () |
| virtual unsigned long | countAll () const |
data access |
| virtual void | newRecord () |
| | Sets up a new record ready to enter data On exit the state is: Selection state is aboutToDirty Selection Set record state to New Set dirty to false Clear buffer Append new record to selection.
|
| virtual void | deleteRecord () |
| virtual void | unloadRecord () |
| virtual void | saveRecord () |
| | Save current main record and any cached dirty records.
|
reflective operators |
| virtual unsigned long | sequenceNumber () const |
locking |
| virtual void | lockRecord () |
| virtual void | unlockRecord () |
transactions |
| virtual void | beginTransaction (COUNT tMode=0) |
| virtual void | abortTransaction (COUNT rMode=0) |
| virtual void | commitTransaction (COUNT rMode=0) |
OID generation |
| virtual oidT | currentOID () |
| virtual oidT | oidOfRecord (unsigned long) |
selection manipulation |
| virtual unsigned long | recordNumber () const |
| virtual unsigned long | recordNumberOfOID (oidT inOID) |
| | Implement dbTable::recordNumberOfOID.
|
| virtual void | selectAll () |
| virtual void | selectNone () |
| virtual void | difference_with (const OOF_tableBackend *) |
| virtual void | difference_with (const dbSelection &) |
| virtual void | intersection_with (const OOF_tableBackend *) |
| virtual void | intersection_with (const dbSelection &) |
| virtual void | union_with (const OOF_tableBackend *) |
| virtual void | union_with (const dbSelection &) |
| virtual void | union_with_no_overlap (const OOF_tableBackend *) |
| virtual void | union_with_no_overlap (const dbSelection &) |
public search functions |
| virtual bool | searchEqual (const dbField *, const void *) |
| virtual bool | searchSelContainsAnyDelimited (const dbField *schField, const char *schStr, char delim) |
| virtual bool | searchSelContainsAnyOf (const dbField *schField, const char **schStrs, unsigned long count) |
| virtual bool | searchSelContainsAllDelimited (const dbField *schField, const char *schStr, char delim) |
| virtual bool | searchSelContainsAllOf (const dbField *schField, const char **schStrs, unsigned long count) |
| virtual bool | loadRelatedContextJoiningFromTo (const dbField *, const dbField *) |
| | Implements relationships via searching.
|
field-level data access |
| virtual bool | readBool (const dbField *) const |
| | Assumes bools stored as unsigned short, 0==false.
|
| virtual short | readShort (const dbField *) const |
| virtual long | readLong (const dbField *) const |
| virtual double | readDouble (const dbField *) const |
| virtual const char * | readChars (const dbField *) const |
| virtual oofString | readString (const dbField *) const |
| | Copy field data into a string.
|
| virtual void | writeBool (bool, const dbField *) |
| | Encode bool as short to be decoded by readBool.
|
| virtual void | writeShort (short, const dbField *) |
| virtual void | writeLong (long, const dbField *) |
| virtual void | writeDouble (double, const dbField *) |
| virtual void | writeChars (const char *, long numChars, long maxLen, const dbField *, long startIndex=0) |
| virtual void | writeBytes (const char *inBuf, long inLen, const dbField *inField) |
| virtual char * | getByteWriteAddress (unsigned long, const dbField *) |
recordwise access |
| virtual bool | atFirst () const |
| virtual bool | atLast () const |
| virtual bool | atRelative (unsigned long) const |
| virtual void | prev () |
| virtual bool | more () const |
| virtual unsigned long | count () const |
| void | gotoBOF () |
record-level data access |
| virtual void | unloadCache () |
| virtual void | revertRecord () |
| virtual void | pack () |
sorting public interface |
| virtual void | setSortOrder (dbSorter *adoptSorter) |
| virtual dbSorter * | sorter () const |
| virtual void | sortSelectionNow (fieldNumT) |
| virtual void | sortSelectionNow (const dbSorter *) |
| virtual void | sortSelectionInverseNow (fieldNumT) |
reflective operators |
| virtual unsigned long | fieldDataLen (const dbField *) const |
| virtual bool | fieldIsDirty (fieldNumT) const |
| virtual bool | isNewRecord () const |
| virtual unsigned int | numIndexes () const |
| virtual unsigned int | numFiles () const |
| virtual unsigned long | blobPointerReferenceSize () const |
| virtual bool | allSelected () const |
| virtual bool | contains (oidT) const |
getting & saving selections as lightweight objects |
| virtual dbSelection | currentSelection () const |
| virtual dbSelection | makeEmptySelection () const |
| virtual void | setSelection (const dbSelection &) |
| virtual void | setSelection (const OOF_Selection *) |
selection of specific contexts |
| virtual bool | selectJustOID (oidT) |
| virtual void | selectJustCurrent () |
transactions |
| virtual void | beginTransaction (short tMode) |
| virtual void | abortTransaction (short rMode) |
| virtual void | commitTransaction (short rMode) |
record-level data access |
| bool | isDirty () const |
| void | markDirty () |
reflective operators |
| void | fieldHasDefaultCalculator (dbField *) |
| void | fieldHasStoredCalculator (dbField *) |
| dbTable * | table () const |
| dbField * | field (fieldNumT) const |
Ken's wildcard header bits |
| enum | OOF_wctype {
prefix,
single,
multiple,
singlefinal,
multiplefinal
} |
Non-Indexed searches |
| bool | SearchEqualNonIndexed (const dbField *, const char *, bool matchEntireKey=true) |
| bool | SearchEqualNonIndexed (const dbField *, const void *) |
| bool | SearchWordNonIndexed (const dbField *, const char *, bool startsWith=false) |
| bool | SearchNotEqualNonIndexed (const dbField *, const char *, bool matchEntireKey=true) |
| bool | SearchNotEqualNonIndexed (const dbField *, const void *) |
| bool | SearchBetweenNonIndexed (const dbField *, const char *, const char *) |
| bool | SearchBetweenNonIndexed (const dbField *, const void *, const void *) |
| bool | SearchOutsideNonIndexed (const dbField *, const char *, const char *) |
| bool | SearchOutsideNonIndexed (const dbField *, const void *, const void *) |
| bool | SearchComparativeNonIndexed (const dbField *, const char *, dbQueryClause::BinaryQueryOps) |
| bool | SearchComparativeNonIndexed (const dbField *, const void *, dbQueryClause::BinaryQueryOps) |
| bool | SearchSelectionTrinaryFieldToLiterals (const dbQueryTrinary *) |
Non-Indexed wildcard Searches |
| bool | SearchEqualNonIndexedWildcard (const dbField *schField, const char *schStr, bool matchEntireKey=true) |
| bool | SearchNotEqualNonIndexedWildcard (const dbField *schField, const char *schStr, bool matchEntireKey=true) |
Sort implementations |
| void | SortSelectionNow (const dbUlong *theFld) |
| void | SortSelectionNow (const dbLong *theFld) |
| void | SortSelectionNow (const dbUshort *theFld) |
| void | SortSelectionNow (const dbShort *theFld) |
| void | SortSelectionNow (const dbReal *theFld) |
| void | SortSelectionNow (const dbChar *theFld) |
| void | SortSelectionNow (const dbText *theFld) |
| void | SortSelectionNow (const dbField *theFld, unsigned long fixedBinaryLength) |
| void | SortSelectionInverseNow (const dbUlong *theFld) |
| void | SortSelectionInverseNow (const dbLong *theFld) |
| void | SortSelectionInverseNow (const dbUshort *theFld) |
| void | SortSelectionInverseNow (const dbShort *theFld) |
| void | SortSelectionInverseNow (const dbReal *theFld) |
| void | SortSelectionInverseNow (const dbChar *theFld) |
| void | SortSelectionInverseNow (const dbText *theFld) |
| void | SortSelectionInverseNow (const dbField *theFld, unsigned long fixedBinaryLength) |
| void | SubSort (const dbSorter *theSorter, const unsigned long level, unsigned long *theData, const unsigned long count) |
| | Now we're sorting at the recursive level of partitioning in a nested sort !
|
Public Types |
| enum | { kDataExtendSize = 0,
kIndexExtendSize = 0
} |
| enum | { kCtreeKeySeqenceAddonLength = 4
} |
| enum | ERecordState { eNew,
eLoaded,
eUnloaded
} |
Public Member Functions |
| virtual | ~OOF_ctreeBackend () |
| virtual OOF_tableBackend * | clone (dbTable::selSharingT, dbTable *) const |
| virtual void | buildSchema (bool rebuilding=false) |
| virtual void | addIndices (const char *newIDXname) |
| virtual void | suppressIndices () |
| virtual void | rebuild () |
| virtual void | open () |
| virtual void | close () |
| virtual void | deleteStorage () |
| virtual void | createTableInConnection (const dbConnect *) |
| virtual bool | openTableInConnection (const dbConnect *, const bool createIfMissing=false) |
| virtual void | setFileExtensions (const char *dataExt, const char *indexExt) |
| virtual void | loadBlob (const dbBLOB *) |
| virtual void | describeState (std::ostream &) const |
| virtual void | ignoreDuplicateRecords () |
| virtual void | noticeDuplicateRecords () |
| virtual bool | reloadRecord () |
| virtual bool | isRecordLoaded () const |
| virtual void | setBlobLength (fieldNumT, unsigned long len) |
| virtual bool | addOIDtoSelection (oidT) |
| virtual void | dropRecordFromSelection (unsigned long) |
| void | describeInvariant (std::ostream &) const |
| | debugging
|
| void | copyFrom (const OOF_recordBufferedContext *) |
| virtual void | copyFrom (const OOF_recordBufferedContext &) |
| unsigned long | currentOffset () const |
| | operator unsigned long () const |
| bool | operator== (unsigned long) const |
| bool | operator== (const OOF_recordBufferedContext &) const |
| bool | isNew () const |
| char * | buffer () const |
Static Public Member Functions |
| OOF_fieldTypes | MapCtreeDODATypeToFieldType (const COUNT t) |
Static Public Attributes |
| long | sFileMode = SHARED | PERMANENT |
| long | sTransMode = TRNLOG|ENABLE |
| long | sTransReleaseMode = ctKEEP_OUT |
Protected Types |
Protected Member Functions |
| virtual void | BuildBackendtables (bool rebuilding) |
| | backend construction
|
| virtual bool | CanUseIndex (const dbField *theFld, dbQueryClause::BinaryQueryOps=dbQueryClause::equals) const |
| void * | GetFieldWriteDest (const dbField *) |
| void * | GetFieldReadFrom (fieldNumT) const |
| bool | Invariant (const char *optionalComment=0) const |
| | Check combination of member variables defining Invariant state.
|
| oofString | InvariantDescription () const |
| unsigned long | state () const |
| unsigned long | PadFieldWidthForAlignment (const dbField *fld) const |
| unsigned int | FieldAlignsTo (const dbField *) const |
| virtual void | CachingContextChange () |
| virtual void | ContextChange () |
| bool | IgnoringDuplicateRecords () const |
| unsigned long | BlobLenFromBuffer (const dbField *, const char *theirBuffer) const |
| unsigned long | BlobLenFromBuffer (fieldNumT, const char *theirBuffer) const |
| unsigned long | BlobPosFromBuffer (const dbField *fld, const char *theirBuffer) const |
| unsigned long | BlobPosFromBuffer (fieldNumT, const char *theirBuffer) const |
| void | SetBlobLenInBuffer (fieldNumT, unsigned long len, const char *theirBuffer) const |
| void | SetBlobPosInBuffer (fieldNumT, unsigned long pos, const char *theirBuffer) const |
| bool | MaybeLoadRecordFromCache (unsigned long offset) |
| bool | CommonSimpleDelete () |
| void | AdoptBuffer (OOF_recordBufferedContext *) |
| void | DonateBlobBodiesTo (OOF_recordBufferedContext *) |
| void | CacheDirtyCurrentRecord () |
| void | ResetBlobs () |
| bool | tableCachesDirtyRecords () const |
| void | AllocBuffer () |
Protected Attributes |
| COUNT | mBlobFilNo |
| COUNT | mISAMdatno |
| dbConnect_ctree * | mConnection |
| OOF_recordSelection | mSelection |
| OOF_recordFieldEntry * | mFieldBufMap |
| unsigned int * | mFieldBufMapRefCount |
| unsigned short | mNumFiles |
| unsigned short | mNumIndexes |
| unsigned short | mOverheadLeadingBytes |
| OOF_ExpandableLongArray * | mBlobFieldNums |
| OOF_recordCache * | mDirtyRecordCache |
| bool | mIgnoreDuplicateRecords |
| OOF_Dictionary | mFields |
| dbTable * | mTable |
| bool | mDirty |
| bool | mHasDefaultCalculators |
| bool | mHasStoredCalculators |
| ERecordState | mRecordState |
| unsigned long | mCurrLoadedRecOffset |
| unsigned long | mRecBufLen |
| char * | mBuffer |
| OOF_ExpandableLongArray * | mBlobFieldBodies |
| OOF_dirtyFieldMap | mDirtyMap |
Friends |
| void | dbConnect_ctree::SetupConnection (const OOF_String &) |
| OOF_tableBackend * | dbConnect_ctree::MakeTableBackend (dbTable *) |
| void | dbTable::ContextChange () |
| class | OOF_recordCacheCopier |
| class | OOF_simpleRecordBackend |
| class | dbTable |