NCBI C++ ToolKit
|
Search Toolkit Book for CSeqDBExtFile
Database component file. More...
#include <objtools/blast/seqdb_reader/impl/seqdbfile.hpp>
Public Types | |
typedef CSeqDBAtlas::TIndx | TIndx |
Type which spans possible file offsets. More... | |
![]() | |
enum | EAllocFillMode { eAllocFillNone = 1 , eAllocFillZero , eAllocFillPattern } |
Control filling of newly allocated memory. More... | |
typedef CObjectCounterLocker | TLockerType |
Default locker type for CRef. More... | |
typedef atomic< Uint8 > | TCounter |
Counter type is CAtomiCounter. More... | |
typedef Uint8 | TCount |
Alias for value type of counter. More... | |
Public Member Functions | |
CSeqDBExtFile (CSeqDBAtlas &atlas, const string &dbfilename, char prot_nucl) | |
Constructor. More... | |
virtual | ~CSeqDBExtFile () |
Destructor. More... | |
void | UnLease () |
Release memory held in the atlas layer by this object. More... | |
![]() | |
CObject (void) | |
Constructor. More... | |
CObject (const CObject &src) | |
Copy constructor. More... | |
virtual | ~CObject (void) |
Destructor. More... | |
CObject & | operator= (const CObject &src) THROWS_NONE |
Assignment operator. More... | |
bool | CanBeDeleted (void) const THROWS_NONE |
Check if object can be deleted. More... | |
bool | IsAllocatedInPool (void) const THROWS_NONE |
Check if object is allocated in memory pool (not system heap) More... | |
bool | Referenced (void) const THROWS_NONE |
Check if object is referenced. More... | |
bool | ReferencedOnlyOnce (void) const THROWS_NONE |
Check if object is referenced only once. More... | |
void | AddReference (void) const |
Add reference to object. More... | |
void | RemoveReference (void) const |
Remove reference to object. More... | |
void | ReleaseReference (void) const |
Remove reference without deleting object. More... | |
virtual void | DoNotDeleteThisObject (void) |
Mark this object as not allocated in heap – do not delete this object. More... | |
virtual void | DoDeleteThisObject (void) |
Mark this object as allocated in heap – object can be deleted. More... | |
void * | operator new (size_t size) |
Define new operator for memory allocation. More... | |
void * | operator new[] (size_t size) |
Define new[] operator for 'array' memory allocation. More... | |
void | operator delete (void *ptr) |
Define delete operator for memory deallocation. More... | |
void | operator delete[] (void *ptr) |
Define delete[] operator for memory deallocation. More... | |
void * | operator new (size_t size, void *place) |
Define new operator. More... | |
void | operator delete (void *ptr, void *place) |
Define delete operator. More... | |
void * | operator new (size_t size, CObjectMemoryPool *place) |
Define new operator using memory pool. More... | |
void | operator delete (void *ptr, CObjectMemoryPool *place) |
Define delete operator. More... | |
virtual void | DebugDump (CDebugDumpContext ddc, unsigned int depth) const |
Define method for dumping debug information. More... | |
![]() | |
CDebugDumpable (void) | |
virtual | ~CDebugDumpable (void) |
void | DebugDumpText (ostream &out, const string &bundle, unsigned int depth) const |
void | DebugDumpFormat (CDebugDumpFormatter &ddf, const string &bundle, unsigned int depth) const |
void | DumpToConsole (void) const |
Protected Member Functions | |
void | x_ReadBytes (char *buf, TIndx start, TIndx end) const |
Read part of the file into a buffer. More... | |
template<class T > | |
TIndx | x_ReadSwapped (CSeqDBFileMemMap &lease, TIndx offset, T *value) |
Read a numerical object from the file. More... | |
char | x_GetSeqType () const |
Get the volume's sequence data type. More... | |
void | x_SetFileType (char prot_nucl) |
Sets the sequence data type. More... | |
![]() | |
virtual void | DeleteThis (void) |
Virtual method "deleting" this object. More... | |
Protected Attributes | |
CSeqDBAtlas & | m_Atlas |
The memory layer management object. More... | |
string | m_FileName |
The name of this file. More... | |
char | m_ProtNucl |
Either 'p' for protein or 'n' for nucleotide. More... | |
CSeqDBFileMemMap | m_Lease |
A memory lease used by this file. More... | |
CSeqDBRawFile | m_File |
The raw file object. More... | |
Additional Inherited Members | |
![]() | |
static NCBI_XNCBI_EXPORT void | ThrowNullPointerException (void) |
Define method to throw null pointer exception. More... | |
static NCBI_XNCBI_EXPORT void | ThrowNullPointerException (const type_info &type) |
static EAllocFillMode | GetAllocFillMode (void) |
static void | SetAllocFillMode (EAllocFillMode mode) |
static void | SetAllocFillMode (const string &value) |
Set mode from configuration parameter value. More... | |
![]() | |
static void | EnableDebugDump (bool on) |
![]() | |
static const TCount | eCounterBitsCanBeDeleted = 1 << 0 |
Define possible object states. More... | |
static const TCount | eCounterBitsInPlainHeap = 1 << 1 |
Heap signature was found. More... | |
static const TCount | eCounterBitsPlaceMask |
Mask for 'in heap' state flags. More... | |
static const int | eCounterStep = 1 << 2 |
Skip over the "in heap" bits. More... | |
static const TCount | eCounterValid = TCount(1) << (sizeof(TCount) * 8 - 2) |
Minimal value for valid objects (reference counter is zero) Must be a single bit value. More... | |
static const TCount | eCounterStateMask |
Valid object, and object in heap. More... | |
Database component file.
This represents any database component file with an extension like "pxx" or "nxx". This finds the correct type (protein or nucleotide) if that is unknown, and computes the filename based on a filename template like "path/to/file/basename.-in".
This also provides a 'protected' interface to the specific db files, and defines a few useful methods.
Definition at line 258 of file seqdbfile.hpp.
Type which spans possible file offsets.
Definition at line 261 of file seqdbfile.hpp.
CSeqDBExtFile::CSeqDBExtFile | ( | CSeqDBAtlas & | atlas, |
const string & | dbfilename, | ||
char | prot_nucl | ||
) |
Constructor.
This builds an object which has a few properties required by most or all database volume component files. This object keeps a lease on the file from the first access until instructed not to, moving and expanding that lease to cover incoming requests. By keeping a lease, lookups, file opens, and other expensive operations are usually avoided on subsequent calls. This object also provides some methods to read data in a byte swapped or direct way.
atlas | The memory management layer object. |
dbfilename | The name of the managed file. |
prot_nucl | The sequence data type. |
locked | The lock holder object for this thread. |
Definition at line 106 of file seqdbfile.cpp.
References CSeqDBFileMemMap::Init(), m_File, m_FileName, m_Lease, NCBI_THROW, CSeqDBRawFile::Open(), string, and x_SetFileType().
|
inlinevirtual |
Destructor.
Definition at line 287 of file seqdbfile.hpp.
|
inline |
Release memory held in the atlas layer by this object.
Definition at line 293 of file seqdbfile.hpp.
References CSeqDBFileMemMap::Clear(), and m_Lease.
Referenced by CSeqDBVol::UnLease().
|
inlineprotected |
Get the volume's sequence data type.
This object knows which type of sequence data it deals with - this method returns that information.
Definition at line 353 of file seqdbfile.hpp.
References m_ProtNucl.
Referenced by CSeqDBIdxFile::CSeqDBIdxFile(), CSeqDBIdxFile::GetAmbStartEnd(), CSeqDBIdxFile::GetSeqStartEnd(), CSeqDBIdxFile::GetSeqType(), and CSeqDBIdxFile::x_GetAmb().
Read part of the file into a buffer.
Copy the file data from offsets start to end into the array at buf, which is assumed to already have been allocated. This method assumes the atlas lock is held.
buf | The destination for the data to be read. |
start | The starting offset for the first byte to read. |
end | The offset for the first byte after the area to read. |
Definition at line 312 of file seqdbfile.hpp.
References buf, m_File, m_Lease, and CSeqDBRawFile::ReadBytes().
Referenced by CSeqDBSeqFile::ReadBytes(), and CSeqDBHdrFile::ReadBytes().
|
inlineprotected |
Read a numerical object from the file.
Given a pointer to an object in memory, this reads a numerical value for it from the file. The data in the file is assumed to be in network byte order, and the user version in the local default byte order (host order). The offset of the data is provided, and the size of the object is taken as sizeof(T).
lease | A memory lease object to use for the read. |
offset | The starting offset of the object in the file. |
value | A pointer to the object. |
locked | The lock holder object for this thread. |
Definition at line 338 of file seqdbfile.hpp.
References m_File, offset, CSeqDBRawFile::ReadSwapped(), and value.
Referenced by CSeqDBIdxFile::CSeqDBIdxFile().
|
inlineprotected |
Sets the sequence data type.
The sequence data will be set as protein or nucleotide. An exception is thrown if an invalid type is provided. The first character of the file extension will be modified to reflect the sequence data type.
prot_nucl | Either 'p' or 'n' for protein or nucleotide. |
Definition at line 387 of file seqdbfile.hpp.
References _ASSERT, m_FileName, m_ProtNucl, and NCBI_THROW.
Referenced by CSeqDBExtFile().
|
protected |
The memory layer management object.
Definition at line 372 of file seqdbfile.hpp.
|
protected |
The raw file object.
Definition at line 384 of file seqdbfile.hpp.
Referenced by CSeqDBExtFile(), x_ReadBytes(), and x_ReadSwapped().
|
protected |
The name of this file.
Definition at line 375 of file seqdbfile.hpp.
Referenced by CSeqDBExtFile(), CSeqDBIdxFile::x_GetAmb(), CSeqDBIdxFile::x_GetHdr(), CSeqDBIdxFile::x_GetSeq(), and x_SetFileType().
|
mutableprotected |
A memory lease used by this file.
Definition at line 381 of file seqdbfile.hpp.
Referenced by CSeqDBExtFile(), CSeqDBIdxFile::CSeqDBIdxFile(), CSeqDBIdxFile::GetAmbStartEnd(), CSeqDBSeqFile::GetFileDataPtr(), CSeqDBHdrFile::GetFileDataPtr(), CSeqDBIdxFile::GetHdrStartEnd(), CSeqDBIdxFile::GetSeqStart(), CSeqDBIdxFile::GetSeqStartEnd(), UnLease(), and x_ReadBytes().
|
protected |
Either 'p' for protein or 'n' for nucleotide.
Definition at line 378 of file seqdbfile.hpp.
Referenced by x_GetSeqType(), and x_SetFileType().