OOFILE  1.9
Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
dbCompoundField Class Reference

Persistent field used to store a set of segments referring to other fields. More...

#include <oof3.h>

Inheritance diagram for dbCompoundField:
Inheritance graph
[legend]
Collaboration diagram for dbCompoundField:
Collaboration graph
[legend]

Public Types

enum  { kKeyLengthAutoCalculated = USHRT_MAX }
 
enum  FieldIsStandaloneT { eFieldIsStandalone }
 

Public Member Functions

virtual void addSegment (dbField &)
 
virtual const char * asChars () const
 
bool caseSensitive () const
 
virtual void clear ()
 
virtual dbFieldclone () const
 
virtual oofString copyString () const
 
virtual void copyValueFrom (const dbField *)
 
virtual void copyValueIfDifferent (const dbField *)
 
virtual unsigned short countSegments () const
 
 dbCompoundField (const OOF_IndexOptions)
 
 dbCompoundField (const char *fieldName=0)
 
 dbCompoundField (const char *fieldName, const OOF_IndexOptions)
 
 dbCompoundField (const dbCompoundField &)
 
virtual void describe (std::ostream &) const
 Provide human-readable information about object. More...
 
dbFieldequivalentFieldFromTable (dbTable *) const
 
virtual void extract (std::ostream &os) const
 
const dbFieldfield (unsigned int) const
 
unsigned long fieldDataLen () const
 
bool fieldIndexIgnoresNulls () const
 
bool fieldIndexIsCompressLeading () const
 
bool fieldIndexIsCompressPadding () const
 
OOF_IndexOptions fieldIndexOptions () const
 
virtual bool fieldIsBinary () const
 
virtual bool fieldIsBlob () const
 
virtual bool fieldIsIndexed () const
 
bool fieldIsJoinKey () const
 Checks if any relationships in field's table use field as join key. More...
 
virtual bool fieldIsKeywordIndexed () const
 
bool fieldIsPartiallyIndexed () const
 
virtual bool fieldIsSameTypeAs (const dbField *) const
 
bool fieldIsStandalone () const
 
virtual bool fieldIsUniqueIndexed () const
 
virtual bool fieldIsVirtual () const
 
unsigned short fieldKeyLen () const
 
virtual unsigned long fieldMinWrapWidth () const
 
virtual const oofStringfieldName () const
 
fieldNumT fieldNumber () const
 
fieldNumT fieldNumberOfSegment (unsigned int) const
 
unsigned short fieldNumIndexes () const
 
virtual unsigned long fieldStorageLen () const
 
dbTablefieldTable () const
 
virtual OOF_fieldTypes fieldType () const
 
virtual unsigned long fieldUsualWrapWidth () const
 
virtual void generateTestData (bool, unsigned long)
 
virtual void getChars (char *ioBuff, unsigned long &outLen) const
 
bool hasDefaultCalculator () const
 
bool hidden () const
 
void hide (bool hideIt=true)
 
void index (const OOF_IndexOptions=kIndexed)
 
void indexPartialKeyLen (unsigned short)
 
virtual bool insert (std::istream &, char fieldSep, char recSep)
 
bool isDirty () const
 
virtual bool isEmpty () const
 
virtual oofString name () const
 
virtual OOF_fieldTypes nativeType () const
 
dbQueryBinary operator!= (const char *) const
 
dbQueryBinary operator< (const char *) const
 
OOF_FieldSegOwneroperator<< (dbField &)
 
dbQueryBinary operator<= (const char *) const
 
dbQueryBinary operator== (const char *) const
 
dbQueryBinary operator> (const char *) const
 
dbQueryBinary operator>= (const char *) const
 
OOF_FieldSegOwneroperator>> (dbField &)
 
virtual void postCloneTableCleanup ()
 
void saveDefaultCalculatedValue ()
 
void saveStoredCalculatedValue ()
 
OOF_Segmentsegment (unsigned int) const
 
void setName (const char *name)
 
virtual void setNumber (long)
 
virtual void setString (const char *)
 
dbQueryBinary startsWith (const char *str) const
 
void storeCalculatedValues ()
 
bool storesCalculatedValues () const
 
const char * tableName () const
 
void toggleSegmentReversedFlags ()
 
void useCalculatorOnlyForDefaults ()
 
bool usingCalculator () const
 
virtual bool validateContents ()
 
virtual dbQueryClausevalueAsQueryLiteral () const
 
bool valueIsDuplicate () const
 
virtual oofWordParserwords () const
 
virtual ~dbCompoundField ()
 

Protected Member Functions

void CalculateWith (dbCalculator *adoptedCalculator, bool useOnlyForDefaults)
 
virtual void CopyCalculatedValueToBuffer ()
 

Protected Attributes

OOF_tableBackendmBackend
 
dbCalculatormCalculator
 
fieldNumT mFieldNumber
 
bool mHidden
 
dbTablemTable
 

Detailed Description

Persistent field used to store a set of segments referring to other fields.

Most often used to declare a compound index. Unless indexed, often will not actually allocate storage in the database. Read-only field.

Definition at line 575 of file oof3.h.

Constructor & Destructor Documentation

dbCompoundField::dbCompoundField ( const OOF_IndexOptions  indexOptions)

Definition at line 2350 of file oof3.cpp.

Referenced by clone().

dbCompoundField::dbCompoundField ( const char *  fieldName = 0)

Definition at line 2356 of file oof3.cpp.

dbCompoundField::dbCompoundField ( const char *  fieldName,
const OOF_IndexOptions  indexOptions 
)

Definition at line 2362 of file oof3.cpp.

dbCompoundField::dbCompoundField ( const dbCompoundField rhs)

Definition at line 2368 of file oof3.cpp.

virtual dbCompoundField::~dbCompoundField ( )
inlinevirtual

Definition at line 582 of file oof3.h.

Member Function Documentation

void dbCompoundField::addSegment ( dbField segField)
virtual
const char * dbField::asChars ( ) const
virtualinherited
void dbField::CalculateWith ( dbCalculator adoptedCalculator,
bool  useOnlyForDefaults 
)
protectedinherited
bool dbField::caseSensitive ( ) const
inlineinherited

Definition at line 747 of file oof3.h.

References kIndexCaseSensitive.

virtual void dbField::clear ( )
inlinevirtualinherited
dbField * dbCompoundField::clone ( ) const
virtual

Implements dbField.

Definition at line 2376 of file oof3.cpp.

References dbCompoundField().

void dbField::CopyCalculatedValueToBuffer ( )
protectedvirtualinherited
oofString dbField::copyString ( ) const
virtualinherited

Reimplemented in dbText, and dbChar.

Definition at line 472 of file oof3.cpp.

References dbField::extract().

Referenced by dbFieldLink::copyFieldToLink(), dbFieldLink::copyLinkToField(), oofRepGraphBand_CSVRender::draw(), oofRepGraphBand_TSVRender::draw(), oofRepViewBand_HTMLRender::draw(), oofRepViewBand_CSVRender::draw(), oofRepViewBand_TSVRender::draw(), oofRepViewBand_WinRender::draw(), oofRepViewBand_MacRender::draw(), oofRepViewBand_RTFRender::draw(), dbRepHTML::drawColumnar(), dbRepHTMLTable::drawColumnar(), dbRepChar::drawColumnar(), dbRepHTML::drawPageWise(), dbRepHTMLTable::drawPageWise(), dbRepChar::drawPageWise(), dbRep::extract(), oofColumnGraph::finishConstruction(), oofPointGraph::finishConstruction(), oofLineGraph::finishConstruction(), oofBarGraph::finishConstruction(), oofStackedBarGraph::finishConstruction(), oofOrdinalStackedBarGraph::finishConstruction(), oofPieGraph::finishConstruction(), oofRepViewEditLink::getCellText(), oofRepFieldBlock::getCellText(), OOF_mixOutlineItem::GetDrawContentsFromView(), dbDate::getStr255(), dbDateTime::getStr255(), dbFieldLink::linkEqualsField(), oofRepFieldBlock::MiddleText(), oofRepCustomViewDrawer::plainText(), OOF_simpleRecordBackend::recordNumberMatching(), OOF_simpleRecordBackend::SearchEqualNonIndexedWildcard(), OOF_simpleRecordBackend::SearchNotEqualNonIndexedWildcard(), OOF_simpleRecordBackend::searchSelContainsAllOf(), OOF_simpleRecordBackend::searchSelContainsAnyOf(), dbGUIAdaptLPopupButton::setValueList(), OOF_simpleRecordBackend::SubSort(), dbFieldLink::validToLeaveForm(), and oofXMLDBWriter::writeRecord().

virtual void dbField::copyValueFrom ( const dbField )
inlinevirtualinherited

Reimplemented in dbDateTime, dbTime, dbDate, dbReal, dbText, dbUlong, dbLong, dbBool, dbUshort, dbChar, and dbShort.

Definition at line 140 of file oof3.h.

Referenced by dbTable::copyRecFrom(), and dbFieldCopier::receiveMsg().

virtual void dbField::copyValueIfDifferent ( const dbField )
inlinevirtualinherited
unsigned short OOF_FieldSegOwner::countSegments ( ) const
inlinevirtualinherited
void dbField::describe ( std::ostream &  ) const
virtualinherited

Provide human-readable information about object.

Overriden to provide much more detail particularly for dbTable::describe() which provides full schema.

Reimplemented from OOF_PublicBase.

Reimplemented in dbFixedBinary, dbChar, and dbRelRefBase.

Definition at line 544 of file oof3.cpp.

References dbField::fieldIndexOptions(), dbField::fieldIsIndexed(), dbField::fieldType(), and oofString::isEmpty().

Referenced by dbChar::describe(), dbFixedBinary::describe(), and dbTable::setSortOrder().

dbField * dbField::equivalentFieldFromTable ( dbTable baseTable) const
inherited
void dbCompoundField::extract ( std::ostream &  os) const
virtual

Reimplemented from dbField.

Definition at line 2470 of file oof3.cpp.

References OOF_FieldSegOwner::countSegments(), dbField::extract(), and field().

const dbField * dbCompoundField::field ( unsigned int  n) const
unsigned long dbField::fieldDataLen ( ) const
inlineinherited
bool dbField::fieldIndexIgnoresNulls ( ) const
inlineinherited

Definition at line 699 of file oof3.h.

References kIndexNoNulls.

Referenced by OOF_ctreeBackend::countAll().

bool dbField::fieldIndexIsCompressLeading ( ) const
inlineinherited

Definition at line 707 of file oof3.h.

References kIndexCompressLeading.

bool dbField::fieldIndexIsCompressPadding ( ) const
inlineinherited

Definition at line 715 of file oof3.h.

References kIndexCompressPadding.

OOF_IndexOptions dbField::fieldIndexOptions ( ) const
inlineinherited

Definition at line 678 of file oof3.h.

Referenced by dbField::describe().

bool dbField::fieldIsBinary ( ) const
virtualinherited

Reimplemented in dbText, and dbChar.

Definition at line 393 of file oof3.cpp.

bool dbField::fieldIsBlob ( ) const
virtualinherited
bool dbField::fieldIsIndexed ( ) const
virtualinherited
bool dbField::fieldIsJoinKey ( ) const
inherited

Checks if any relationships in field's table use field as join key.

Relatively expensive because it's iterating over all fields but all the function calls below are inline queries so will compile down well in release mode.

WARNING Doesn't fan out - if any other tables use this field as a join key then they are doing really weird stuff and the application programmer must add their own checks.

This feature originally added to support OOF_repEditSetupVisitor::VisitViewBandBody

Definition at line 327 of file oof3.cpp.

References dbTable::field(), dbField::fieldIsStandalone(), dbField::fieldType(), dbRelRefBase::joinField(), dbField::mFieldNumber, dbField::mTable, dbTable::numFields(), and relationshipField.

Referenced by OOF_repEditSetupVisitor::VisitIterableBandBody().

bool dbField::fieldIsKeywordIndexed ( ) const
virtualinherited

Reimplemented in dbText, and dbChar.

Definition at line 415 of file oof3.cpp.

Referenced by OOF_ctreeBackend::BuildBackendtables().

bool dbField::fieldIsPartiallyIndexed ( ) const
inlineinherited

Definition at line 692 of file oof3.h.

References dbField::kKeyLengthAutoCalculated.

Referenced by dbField::fieldKeyLen().

bool dbCompoundField::fieldIsSameTypeAs ( const dbField rhs) const
virtual

Reimplemented from dbField.

Definition at line 2481 of file oof3.cpp.

References dbField::fieldIsSameTypeAs().

bool dbField::fieldIsStandalone ( ) const
inlineinherited
bool dbField::fieldIsUniqueIndexed ( ) const
virtualinherited
bool dbCompoundField::fieldIsVirtual ( ) const
virtual

Reimplemented from dbField.

Definition at line 2397 of file oof3.cpp.

unsigned short dbField::fieldKeyLen ( ) const
inherited
unsigned long dbField::fieldMinWrapWidth ( ) const
virtualinherited
const oofString & dbField::fieldName ( ) const
inlinevirtualinherited

Reimplemented in dbRelRefBase.

Definition at line 769 of file oof3.h.

Referenced by dbView::AppendOwnedField(), OOF_ramBackend::BuildBackendtables(), OOF_dbaseBackend::BuildBackendtables(), OOF_ctreeBackend::BuildBackendtables(), dbShort::copyValueFrom(), dbChar::copyValueFrom(), dbUshort::copyValueFrom(), dbBool::copyValueFrom(), dbLong::copyValueFrom(), dbUlong::copyValueFrom(), dbText::copyValueFrom(), dbReal::copyValueFrom(), dbDate::copyValueFrom(), dbTime::copyValueFrom(), dbDateTime::copyValueFrom(), dbShort::copyValueIfDifferent(), dbChar::copyValueIfDifferent(), dbUshort::copyValueIfDifferent(), dbBool::copyValueIfDifferent(), dbLong::copyValueIfDifferent(), dbUlong::copyValueIfDifferent(), dbText::copyValueIfDifferent(), dbReal::copyValueIfDifferent(), dbDate::copyValueIfDifferent(), dbTime::copyValueIfDifferent(), dbDateTime::copyValueIfDifferent(), OOF_dbaseBackend::createTableInConnection(), dbView::currentHeading(), dbRelRefBase::describe(), dbQueryField::describe(), dbRepHTML::drawHeader(), dbRepHTMLTable::drawHeader(), dbRepChar::drawHeader(), dbRepHTML::drawPageWise(), dbRepHTMLTable::drawPageWise(), dbRepChar::drawPageWise(), oofXMLdataParser::EnterNestedData(), dbRep::extract(), oofE_CtreeBlobError::extract(), dbRelRefBase::fieldName(), oofColumnGraph::finishConstruction(), oofPointGraph::finishConstruction(), oofLineGraph::finishConstruction(), oofXYGraph::finishConstruction(), oofBarGraph::finishConstruction(), oofStackedBarGraph::finishConstruction(), oofOrdinalStackedBarGraph::finishConstruction(), dbView::getHeading(), dbQueryField::getSearchTables(), dbChar::insert(), dbText::insert(), dbField::name(), OOF_simpleRecordBackend::sortSelectionInverseNow(), OOF_simpleRecordBackend::sortSelectionNow(), oofXMLdataParser::startElement(), oofXMLDBWriter::startSchema(), OOF_repXMLschemaVisitor::UniquifyTables(), dbFieldLink::validToLeaveForm(), and oofXMLDBWriter::writeRecord().

fieldNumT dbField::fieldNumber ( ) const
inlineinherited
fieldNumT OOF_FieldSegOwner::fieldNumberOfSegment ( unsigned int  i) const
inherited
unsigned short dbField::fieldNumIndexes ( ) const
inlineinherited

Definition at line 723 of file oof3.h.

References kNotIndexed.

Referenced by OOF_ctreeBackend::BuildBackendtables().

unsigned long dbCompoundField::fieldStorageLen ( ) const
virtual

Implements dbField.

Definition at line 2390 of file oof3.cpp.

Referenced by dbQueryBinaryCombo::makeCompoundSearch().

dbTable * dbField::fieldTable ( ) const
inherited
OOF_fieldTypes dbCompoundField::fieldType ( ) const
virtual

Implements dbField.

Definition at line 2383 of file oof3.cpp.

References compoundField.

unsigned long dbField::fieldUsualWrapWidth ( ) const
virtualinherited

Reimplemented in dbText, and dbChar.

Definition at line 235 of file oof3.cpp.

References dbField::fieldMinWrapWidth().

Referenced by oofViewFieldDefaultsColSizer::CalculateDefaultWidths().

virtual void dbField::generateTestData ( bool  ,
unsigned long   
)
inlinevirtualinherited

Reimplemented in dbDateTime, dbTime, dbDate, dbReal, dbFixedBinary, dbText, dbUlong, dbLong, dbBLOB, dbBool, dbUshort, dbChar, and dbShort.

Definition at line 147 of file oof3.h.

Referenced by dbTable::generateTestData().

void dbField::getChars ( char *  ioBuff,
unsigned long &  outLen 
) const
virtualinherited

Reimplemented in dbText, and dbChar.

Definition at line 481 of file oof3.cpp.

References dbField::extract().

Referenced by dbViewAsTableStorage::GetCellData().

bool dbField::hasDefaultCalculator ( ) const
inlineinherited
bool OOF_PublicBase::hidden ( ) const
inlineinherited

Definition at line 51 of file oof1.h.

Referenced by OOF_Dictionary::EntryMatchesVisibility().

void OOF_PublicBase::hide ( bool  hideIt = true)
inlineinherited

Definition at line 52 of file oof1.h.

void dbField::index ( const OOF_IndexOptions  indexOpt = kIndexed)
inherited

Definition at line 212 of file oof3.cpp.

Referenced by dbRelRefBase::joinField(), and dbRelRefBase::SetCommonRelationshipFields().

void dbField::indexPartialKeyLen ( unsigned short  inLen)
inlineinherited

Definition at line 685 of file oof3.h.

bool dbField::insert ( std::istream &  ,
char  fieldSep,
char  recSep 
)
virtualinherited

Reimplemented in dbDateTime, dbTime, dbDate, dbReal, dbText, dbUlong, dbLong, dbBool, dbUshort, dbChar, and dbShort.

Definition at line 513 of file oof3.cpp.

Referenced by dbChar::insert(), dbText::insert(), dbTable::insert(), and operator>>().

bool dbField::isDirty ( ) const
inherited
bool dbField::isEmpty ( ) const
virtualinherited

Reimplemented in dbDateTime, dbDate, dbBLOB, and dbChar.

Definition at line 170 of file oof3.cpp.

Referenced by OOF_ctreeKeywordIndex::updateWords().

oofString dbField::name ( ) const
virtualinherited

Reimplemented from OOF_PublicBase.

Definition at line 156 of file oof3.cpp.

References dbField::fieldName().

Referenced by dbField::setName().

OOF_fieldTypes dbField::nativeType ( ) const
virtualinherited
dbQueryBinary dbCompoundField::operator!= ( const char *  str) const

Definition at line 2428 of file oof3.cpp.

References dbQueryClause::notEquals.

dbQueryBinary dbCompoundField::operator< ( const char *  str) const

Definition at line 2435 of file oof3.cpp.

References dbQueryClause::lessThan.

OOF_FieldSegOwner & OOF_FieldSegOwner::operator<< ( dbField segField)
inlineinherited

Definition at line 2584 of file oof1.h.

dbQueryBinary dbCompoundField::operator<= ( const char *  str) const

Definition at line 2442 of file oof3.cpp.

References dbQueryClause::lessThanOrEqual.

dbQueryBinary dbCompoundField::operator== ( const char *  str) const

Definition at line 2421 of file oof3.cpp.

References dbQueryClause::equals.

dbQueryBinary dbCompoundField::operator> ( const char *  str) const

Definition at line 2449 of file oof3.cpp.

References dbQueryClause::greaterThan.

dbQueryBinary dbCompoundField::operator>= ( const char *  str) const

Definition at line 2456 of file oof3.cpp.

References dbQueryClause::greaterThanOrEqual.

OOF_FieldSegOwner & OOF_FieldSegOwner::operator>> ( dbField segField)
inherited
virtual void dbField::postCloneTableCleanup ( )
inlinevirtualinherited

Reimplemented in dbRelRefBase.

Definition at line 77 of file oof3.h.

Referenced by dbTable::postCloneTableCleanup().

void dbField::saveDefaultCalculatedValue ( )
inherited
void dbField::saveStoredCalculatedValue ( )
inherited

Definition at line 282 of file oof3.cpp.

References dbField::CopyCalculatedValueToBuffer().

Referenced by OOF_simpleRecordBackend::saveRecord().

OOF_Segment * OOF_FieldSegOwner::segment ( unsigned int  i) const
inlineinherited
void dbField::setName ( const char *  name)
inherited

Definition at line 195 of file oof3.cpp.

References dbField::name().

Referenced by dbView::AppendOwnedField(), and OOF_repXMLschemaVisitor::UniquifyTables().

virtual void dbField::setNumber ( long  )
inlinevirtualinherited

Reimplemented in dbDateTime, dbDate, dbReal, dbText, dbUlong, dbLong, dbBool, dbUshort, dbChar, and dbShort.

Definition at line 133 of file oof3.h.

Referenced by dbNumericField::clear().

virtual void dbField::setString ( const char *  )
inlinevirtualinherited
dbQueryBinary dbCompoundField::startsWith ( const char *  str) const
void dbField::storeCalculatedValues ( )
inlineinherited

Definition at line 813 of file oof3.h.

Referenced by OOF_ctreeBackend::BuildBackendtables().

bool dbField::storesCalculatedValues ( ) const
inlineinherited

Definition at line 806 of file oof3.h.

Referenced by OOF_simpleRecordBackend::GetFieldWriteDest().

const char * dbField::tableName ( ) const
inherited
void OOF_FieldSegOwner::toggleSegmentReversedFlags ( )
inherited
void dbField::useCalculatorOnlyForDefaults ( )
inlineinherited

Definition at line 799 of file oof3.h.

Referenced by dbField::CalculateWith().

bool dbField::usingCalculator ( ) const
inherited
bool dbField::validateContents ( )
virtualinherited

Definition at line 177 of file oof3.cpp.

dbQueryClause * dbField::valueAsQueryLiteral ( ) const
virtualinherited
bool dbField::valueIsDuplicate ( ) const
inherited
oofWordParser * dbField::words ( ) const
virtualinherited

Reimplemented in dbText, and dbChar.

Definition at line 251 of file oof3.cpp.

Referenced by OOF_simpleRecordBackend::SearchWordNonIndexed(), and OOF_ctreeKeywordIndex::updateWords().

Member Data Documentation

OOF_tableBackend* dbField::mBackend
protectedinherited
dbCalculator* dbField::mCalculator
protectedinherited
fieldNumT dbField::mFieldNumber
protectedinherited
bool OOF_PublicBase::mHidden
protectedinherited

Definition at line 61 of file oof1.h.

dbTable* dbField::mTable
protectedinherited

The documentation for this class was generated from the following files: