Inheritance diagram for VarCharType:
Public Types | |
typedef uint | Ordinal |
Each type must have a unique positive integer ordinal associated with it. | |
Private Member Functions | |
virtual Ordinal | getOrdinal () const |
| |
virtual uint | getBitCount () const |
| |
virtual uint | getFixedByteCount () const |
| |
virtual uint | getMinByteCount (uint cbMaxWidth) const |
Gets the number of bytes required to store the narrowest value with this type, given a particular max byte count. | |
virtual uint | getAlignmentByteCount (uint cbWidth) const |
Gets the alignment size in bytes required for values of this type, given a particular max byte count. | |
virtual void | visitValue (DataVisitor &dataVisitor, void const *pData, TupleStorageByteLength cbData) const |
Visits a value of this type. | |
virtual int | compareValues (void const *pData1, TupleStorageByteLength cbData1, void const *pData2, TupleStorageByteLength cbData2) const |
Compares two values of this type. |
Definition at line 250 of file StandardTypeDescriptor.cpp.
typedef uint StoredTypeDescriptor::Ordinal [inherited] |
Each type must have a unique positive integer ordinal associated with it.
This is used to reconstruct a StoredTypeDescriptor object from a stored attribute definition.
Definition at line 44 of file StoredTypeDescriptor.h.
virtual Ordinal VarCharType::getOrdinal | ( | ) | const [inline, private, virtual] |
Implements StoredTypeDescriptor.
Definition at line 252 of file StandardTypeDescriptor.cpp.
References STANDARD_TYPE_VARCHAR.
00253 { 00254 return STANDARD_TYPE_VARCHAR; 00255 }
virtual uint VarCharType::getBitCount | ( | ) | const [inline, private, virtual] |
Implements StoredTypeDescriptor.
Definition at line 257 of file StandardTypeDescriptor.cpp.
virtual uint VarCharType::getFixedByteCount | ( | ) | const [inline, private, virtual] |
Implements StoredTypeDescriptor.
Definition at line 262 of file StandardTypeDescriptor.cpp.
Gets the number of bytes required to store the narrowest value with this type, given a particular max byte count.
For a fixed-width type, the return value is the same as the input.
cbMaxWidth | maximum width for which to compute the minimum |
Implements StoredTypeDescriptor.
Definition at line 267 of file StandardTypeDescriptor.cpp.
Gets the alignment size in bytes required for values of this type, given a particular max byte count.
This must be 1, 2, 4, or 8, and may not be greater than 2 for variable-width datatypes. For fixed-width datatypes, the width must be a multiple of the alignment size.
cbWidth | width for which to compute the alignment |
Implements StoredTypeDescriptor.
Definition at line 272 of file StandardTypeDescriptor.cpp.
virtual void VarCharType::visitValue | ( | DataVisitor & | dataVisitor, | |
void const * | pData, | |||
TupleStorageByteLength | cbData | |||
) | const [inline, private, virtual] |
Visits a value of this type.
dataVisitor | the DataVisitor which should be called with the interpreted value | |
pData | the address of the data value | |
cbData | the number of bytes of data |
Implements StoredTypeDescriptor.
Definition at line 277 of file StandardTypeDescriptor.cpp.
References DataVisitor::visitChars().
00281 { 00282 char const *pStr = static_cast<char const *>(pData); 00283 dataVisitor.visitChars(pStr,cbData); 00284 }
virtual int VarCharType::compareValues | ( | void const * | pData1, | |
TupleStorageByteLength | cbData1, | |||
void const * | pData2, | |||
TupleStorageByteLength | cbData2 | |||
) | const [inline, private, virtual] |
Compares two values of this type.
pData1 | the address of the first data value | |
cbData1 | the width of the first data value in bytes | |
pData2 | the address of the second data value | |
cbData2 | the width of the second data value in bytes |
Implements StoredTypeDescriptor.
Definition at line 286 of file StandardTypeDescriptor.cpp.
References min().
00291 { 00292 TupleStorageByteLength cbMin = std::min(cbData1,cbData2); 00293 int rc = memcmp(pData1, pData2, cbMin); 00294 if (rc) { 00295 return rc; 00296 } 00297 if (cbData1 == cbData2) { 00298 return 0; 00299 } 00300 PConstBuffer pBuf1 = static_cast<PConstBuffer>(pData1); 00301 PConstBuffer pBuf2 = static_cast<PConstBuffer>(pData2); 00302 PConstBuffer trailStart,trailEnd; 00303 if (cbData1 > cbData2) { 00304 trailStart = pBuf1 + cbMin; 00305 trailEnd = pBuf1 + cbData1; 00306 rc = 1; 00307 } else { 00308 trailStart = pBuf2 + cbMin; 00309 trailEnd = pBuf2 + cbData2; 00310 rc = -1; 00311 } 00312 for (; trailStart < trailEnd; trailStart++) { 00313 if (*trailStart != ' ') { 00314 return rc; 00315 } 00316 } 00317 return 0; 00318 }