NCBI C++ ToolKit
Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes | Friends | List of all members
CBDB_Field Class Referenceabstract

Search Toolkit Book for CBDB_Field

Base class for constructing BDB fields. More...

#include <db/bdb/bdb_types.hpp>

+ Inheritance diagram for CBDB_Field:
+ Collaboration diagram for CBDB_Field:

Public Types

enum  ELengthType { eFixedLength , eVariableLength }
 Length based classificator for fields (fixed-variable) More...
 

Public Member Functions

 CBDB_Field (ELengthType length_type=eFixedLength)
 
virtual ~CBDB_Field ()
 
virtual CBDB_FieldConstruct (size_t buf_size=0) const =0
 Virtual constructor - class factory for BDB fields. More...
 
virtual BDB_CompareFunction GetCompareFunction (bool byte_swapped) const
 Return address to the type specific comparison function By default it's universal BDB_Compare. More...
 
bool IsNullable () const
 Return TRUE if field can be NULL. More...
 
void SetNull ()
 Assign field value to NULL. More...
 
bool IsNull () const
 Return TRUE if field is NULL. More...
 
const stringGetName () const
 Return symbolic name for the field. More...
 
const void * GetBuffer () const
 Get pointer to the data. NULL if not yet attached. More...
 
void * GetBuffer ()
 Get pointer to the data. NULL if not yet attached. More...
 
size_t GetBufferSize () const
 Return maximum possible buffer length. More...
 
size_t GetLength () const
 Get length of the actual data. More...
 
- Public Member Functions inherited from IBDB_Field
virtual ~IBDB_Field ()
 
virtual int Compare (const void *p1, const void *p2, bool byte_swapped) const =0
 Comparison function. More...
 
virtual size_t GetDataLength (const void *buf) const =0
 Return current effective size of the buffer. More...
 
virtual void SetMinVal ()=0
 Set minimal possible value for the field type. More...
 
virtual void SetMaxVal ()=0
 Set maximum possible value for the field type. More...
 
- Public Member Functions inherited from IBDB_FieldConvert
virtual ~IBDB_FieldConvert ()
 
virtual void SetInt (int)
 
virtual void SetUint (unsigned)
 
virtual int GetInt () const
 
virtual unsigned GetUint () const
 
virtual void SetString (const char *)
 
virtual void SetStdString (const string &)
 
virtual void SetFloat (float)
 
virtual void SetDouble (double)
 
virtual string GetString () const =0
 
virtual void ToString (string &str) const =0
 

Protected Member Functions

int CompareWith (const CBDB_Field &field) const
 Field comparison function. More...
 
void CopyFrom (const CBDB_Field &src)
 Copies field value from another field. More...
 
bool IsVariableLength () const
 Return TRUE if it is a variable length variable (like string) More...
 
bool IsBufferAttached () const
 Return TRUE if external buffer has already been attached. More...
 
bool IsSameType (const CBDB_Field &field) const
 RTTI based check if fld is of the same type. More...
 
bool IsByteSwapped () const
 Return TRUE if field belongs to a file with an alternative byte order. More...
 
void SetNullable ()
 Mark field as "NULL" capable. More...
 
void SetNotNull ()
 Set "is NULL" flag to FALSE. More...
 
void SetName (const char *name)
 Set symbolic name for the field. More...
 
void SetBufferIdx (unsigned int idx)
 Set field position in the buffer manager. More...
 
void * Unpack ()
 Unpack the buffer which contains this field (using CBDB_BufferManager). More...
 
void SetBuffer (void *buf, size_t buf_size=0)
 Set external buffer pointer and length. More...
 
void SetBufferSize (size_t size)
 Set the buffer size. More...
 
void SetDataSize (size_t size)
 Set data size, taking into account possible extra data for some fields. More...
 
virtual size_t GetExtraDataLength ()
 Hook for defining extra data length. More...
 
void SetBufferManager (CBDB_BufferManager *owner)
 Set CBDB_BufferManager – which works as a memory manager for BDB fields. More...
 
void CopyFrom (const void *src_buf)
 Copy buffer value from the external source. More...
 

Protected Attributes

CBDB_BufferManagerm_BufferManager
 
struct {
   unsigned   CBDB_Field::VariableLength: 1
 
   unsigned   CBDB_Field::Attached: 1
 
   unsigned   CBDB_Field::Nullable: 1
 
m_Flags
 

Private Member Functions

CBDB_Fieldoperator= (const CBDB_Field &data)
 
 CBDB_Field (const CBDB_Field &data)
 

Private Attributes

void * m_Buffer
 
size_t m_BufferSize
 
unsigned m_BufferIdx
 
string m_Name
 

Friends

class CBDB_BufferManager
 
class CBDB_File
 
class CBDB_BLobFile
 

Detailed Description

Base class for constructing BDB fields.

Implements field buffer pointer.

All DBD field types do not own their buffers. It works as a pointer on external memory kept by the record manager (CBDB_FieldBuf). Class cannot be used independently without record manager.

Definition at line 296 of file bdb_types.hpp.


The documentation for this class was generated from the following files:
Modified on Fri Sep 20 14:57:45 2024 by modify_doxy.py rev. 669887