NCBI C++ ToolKit
Public Types | Public Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
CSGDataSourceContext Class Reference

Search Toolkit Book for CSGDataSourceContext

#include <gui/widgets/seq_graphic/seqgraphic_ds_manager.hpp>

+ Inheritance diagram for CSGDataSourceContext:
+ Collaboration diagram for CSGDataSourceContext:

Public Types

typedef map< string, CWeakIRef< ISGDataSource > > TDSRegistry
 
typedef CIRef< ISGDataSourceTypeTDataSourceTypeRef
 
typedef vector< TDataSourceTypeRefTDataSourceTypeVec
 
- Public Types inherited from CObject
enum  EAllocFillMode { eAllocFillNone = 1 , eAllocFillZero , eAllocFillPattern }
 Control filling of newly allocated memory. More...
 
typedef CObjectCounterLocker TLockerType
 Default locker type for CRef. More...
 
typedef atomic< Uint8TCounter
 Counter type is CAtomiCounter. More...
 
typedef Uint8 TCount
 Alias for value type of counter. More...
 
- Public Types inherited from INonAsnDataRegistry
using TDataBlob = INonAsnTrackData::TDataBlob
 

Public Member Functions

 CSGDataSourceContext ()
 
virtual ~CSGDataSourceContext ()
 
ISGDataSouceContext interface implementation.
virtual CIRef< ISGDataSourceGetDS (const string &type, SConstScopedObject &object)
 Get a seqgraphic data source instance of the specified type. More...
 
virtual void ClearCache ()
 clear the cache if any. More...
 
INonAsnDataRegistry interface implementation.
virtual void AddNonAsnData (const INonAsnTrackData &data)
 
virtual void RemoveNonAsnData (const INonAsnTrackData &data)
 
virtual bool HasNonAsnData (const string &annot_name) const
 
virtual const TDataBlobGetNonAsnDataBlob (const string &annot_name) const
 
- Public Member Functions inherited from CObject
 CObject (void)
 Constructor. More...
 
 CObject (const CObject &src)
 Copy constructor. More...
 
virtual ~CObject (void)
 Destructor. More...
 
CObjectoperator= (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...
 
- Public Member Functions inherited from CDebugDumpable
 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
 
- Public Member Functions inherited from ISGDataSourceContext
virtual ~ISGDataSourceContext ()
 
- Public Member Functions inherited from INonAsnDataRegistry
virtual ~INonAsnDataRegistry ()
 

Private Types

using TBlobsMap = map< string, const TDataBlob * >
 

Private Member Functions

 CSGDataSourceContext (const CSGDataSourceContext &)
 prohibited copy constructor and assignment operator. More...
 
CSGDataSourceContextoperator= (const CSGDataSourceContext &)
 

Private Attributes

TDataSourceTypeVec m_DataSourceTypes
 All the registered data source types. More...
 
TDSRegistry m_DataSources
 The cached data source instances. More...
 
CFastMutex m_Mutex
 make sure data source context is thread-safe More...
 
TBlobsMap m_NonAsnDataBlobs
 
std::mutex m_NonAsnDataBlobsMutex
 

Additional Inherited Members

- Static Public Member Functions inherited from CObject
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 Public Member Functions inherited from CDebugDumpable
static void EnableDebugDump (bool on)
 
- Static Public Attributes inherited from CObject
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...
 
- Protected Member Functions inherited from CObject
virtual void DeleteThis (void)
 Virtual method "deleting" this object. More...
 

Detailed Description

Definition at line 74 of file seqgraphic_ds_manager.hpp.

Member Typedef Documentation

◆ TBlobsMap

Definition at line 116 of file seqgraphic_ds_manager.hpp.

◆ TDataSourceTypeRef

Definition at line 81 of file seqgraphic_ds_manager.hpp.

◆ TDataSourceTypeVec

Definition at line 82 of file seqgraphic_ds_manager.hpp.

◆ TDSRegistry

Definition at line 80 of file seqgraphic_ds_manager.hpp.

Constructor & Destructor Documentation

◆ CSGDataSourceContext() [1/2]

CSGDataSourceContext::CSGDataSourceContext ( )

◆ ~CSGDataSourceContext()

CSGDataSourceContext::~CSGDataSourceContext ( )
virtual

Definition at line 96 of file seqgraphic_ds_manager.cpp.

◆ CSGDataSourceContext() [2/2]

CSGDataSourceContext::CSGDataSourceContext ( const CSGDataSourceContext )
private

prohibited copy constructor and assignment operator.

Member Function Documentation

◆ AddNonAsnData()

void CSGDataSourceContext::AddNonAsnData ( const INonAsnTrackData data)
virtual

◆ ClearCache()

void CSGDataSourceContext::ClearCache ( )
virtual

◆ GetDS()

CIRef< ISGDataSource > CSGDataSourceContext::GetDS ( const string type,
SConstScopedObject object 
)
virtual

Get a seqgraphic data source instance of the specified type.

If a datasource is not sharable, it will just create one based on the input object. If a datasource is sharable, it will return a cached instance if there is a cached one. Otherwise, a new instance will get created, cached and returned. TODO, preferably, the context should be able to distinguish different objects in addition to the types.

Implements ISGDataSourceContext.

Definition at line 48 of file seqgraphic_ds_manager.cpp.

References ISGDataSourceType::CreateDS(), map_checker< Container >::end(), map_checker< Container >::erase(), map_checker< Container >::find(), CRef< C, Locker >::GetPointer(), CRef< C, Locker >::GetPointerOrNull(), i, CRef< C, Locker >::IsNull(), ISGDataSourceType::IsSharable(), m_DataSources, m_DataSourceTypes, m_Mutex, NCBI_THROW, CRef< C, Locker >::Reset(), INonAsnDataSource::SetNonAsnDataRegistry(), and type.

◆ GetNonAsnDataBlob()

const INonAsnDataRegistry::TDataBlob & CSGDataSourceContext::GetNonAsnDataBlob ( const string annot_name) const
virtual

Implements INonAsnDataRegistry.

Definition at line 136 of file seqgraphic_ds_manager.cpp.

References m_NonAsnDataBlobs, and m_NonAsnDataBlobsMutex.

◆ HasNonAsnData()

bool CSGDataSourceContext::HasNonAsnData ( const string annot_name) const
virtual

Implements INonAsnDataRegistry.

Definition at line 130 of file seqgraphic_ds_manager.cpp.

References m_NonAsnDataBlobs, and m_NonAsnDataBlobsMutex.

◆ operator=()

CSGDataSourceContext& CSGDataSourceContext::operator= ( const CSGDataSourceContext )
private

◆ RemoveNonAsnData()

void CSGDataSourceContext::RemoveNonAsnData ( const INonAsnTrackData data)
virtual

Member Data Documentation

◆ m_DataSources

TDSRegistry CSGDataSourceContext::m_DataSources
private

The cached data source instances.

Definition at line 113 of file seqgraphic_ds_manager.hpp.

Referenced by ClearCache(), and GetDS().

◆ m_DataSourceTypes

TDataSourceTypeVec CSGDataSourceContext::m_DataSourceTypes
private

All the registered data source types.

Definition at line 112 of file seqgraphic_ds_manager.hpp.

Referenced by CSGDataSourceContext(), and GetDS().

◆ m_Mutex

CFastMutex CSGDataSourceContext::m_Mutex
private

make sure data source context is thread-safe

Definition at line 114 of file seqgraphic_ds_manager.hpp.

Referenced by ClearCache(), and GetDS().

◆ m_NonAsnDataBlobs

TBlobsMap CSGDataSourceContext::m_NonAsnDataBlobs
private

◆ m_NonAsnDataBlobsMutex

std::mutex CSGDataSourceContext::m_NonAsnDataBlobsMutex
mutableprivate

The documentation for this class was generated from the following files:
Modified on Sat Dec 09 04:49:15 2023 by modify_doxy.py rev. 669887