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

Search Toolkit Book for CScope

CScope –. More...

#include <objmgr/scope.hpp>

+ Inheritance diagram for CScope:
+ Collaboration diagram for CScope:

Public Types

enum  EPriority { kPriority_Default = -1 , kPriority_NotSet = -1 }
 
enum  EGetBioseqFlag { eGetBioseq_Resolved , eGetBioseq_Loaded , eGetBioseq_All }
 
enum  EMissing { eMissing_Throw , eMissing_Null , eMissing_Default = eMissing_Throw }
 GetXxxHandle control values. More...
 
enum  EExist { eExist_Throw , eExist_Get , eExist_Default = eExist_Throw }
 AddXxx() control values. More...
 
enum  EActionIfLocked { eKeepIfLocked , eThrowIfLocked , eRemoveIfLocked }
 
enum  ERemoveDataLoaders { eRemoveDataLoaders }
 Clear all information in the scope including data loaders. More...
 
enum  EForceLoad { eNoForceLoad , eForceLoad }
 EForceLoad flag instruct scope to ignore already loaded information and always request data loader for data. More...
 
enum  EGetFlags {
  fForceLoad = (1 << 0) , fThrowOnMissingSequence = (1 << 1) , fThrowOnMissingData = (1 << 2) , fThrowOnMissing = fThrowOnMissingSequence|fThrowOnMissingData ,
  fDoNotRecalculate = (1 << 3)
}
 Flags to control behavior of various meta-data getters fForceLoad instructs scope to ignore already loaded information and alway request data loader for data fThrowOnMissing instructs to throw an exeption if the requested data is missing - either sequence id cannot be found in any data loader or the sequence doesn't have the requested meta-data without the flag getter will return special value. More...
 
enum  EForceLabelLoad { eNoForceLabelLoad = eNoForceLoad , eForceLabelLoad = eForceLoad }
 obsolete enum More...
 
enum  ETSEKind { eManualTSEs , eAllTSEs }
 
typedef int TPriority
 priority type and special value for added objects More...
 
typedef vector< CSeq_id_HandleTIds
 
typedef vector< CBioseq_HandleTBioseqHandles
 
typedef vector< CTSE_HandleTCDD_Entries
 Get CDD annotations for all ids. More...
 
typedef CBlobIdKey TBlobId
 
typedef int TGetFlags
 
typedef int TSequenceHash
 Get sequence data hash value Return 0 if sequence is not found or if its hash is not known Note: 0 can be a real hash value, use flags to distinguish these cases. More...
 
typedef vector< CSeq_id_HandleTSeq_id_Handles
 Bulk retrieval methods Common argument typedef - vector of requested ids. More...
 
typedef vector< TIdsTBulkIds
 Get all ids of sequences Returns empty ids if the sequence is not found. More...
 
typedef vector< TGiTGIs
 Get GI of a sequence Returns ZERO_GI for sequence that aren't found or don't have GI. More...
 
typedef vector< stringTLabels
 Get short descriptions of sequences, usually "accession.version" Returns empty strings for sequences that aren't found. More...
 
typedef vector< TTaxIdTTaxIds
 Get taxonomy ids of sequences Return -1 for sequences that aren't found Return 0 for sequences that don't have taxonomy id. More...
 
typedef vector< TSeqPosTSequenceLengths
 Get lengths of sequences Return kInvalidSeqPos for sequences that aren't found. More...
 
typedef vector< CSeq_inst::TMolTSequenceTypes
 Get molecular types of sequences (protein/dna/rna) Return CSeq_inst::eMol_not_set for sequences that aren't found. More...
 
typedef vector< CBioseq_Handle::TBioseqStateFlagsTSequenceStates
 Get GenBank states of sequences Return (fState_not_found|fState_no_data) for sequences that aren't found. More...
 
typedef vector< TSequenceHashTSequenceHashes
 Get data hashes of sequences Return 0 for sequences that aren't found or they don't have hash Note: 0 can be a real hash value, use flags to distinguish these cases. More...
 
typedef vector< CSeq_entry_HandleTTSE_Handles
 
- 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 Member Functions

 CScope (CObjectManager &objmgr)
 
virtual ~CScope (void)
 
CObjectManagerGetObjectManager (void)
 Get object manager controlling this scope. More...
 
CBioseq_Handle GetBioseqHandle (const CSeq_id &id)
 Get bioseq handle by seq-id. More...
 
CBioseq_Handle GetBioseqHandle (const CSeq_id_Handle &id)
 Get bioseq handle by seq-id handle. More...
 
CBioseq_Handle GetBioseqHandle (const CSeq_loc &loc)
 Get bioseq handle by seq-loc. More...
 
CBioseq_Handle GetBioseqHandle (const CSeq_id &id, EGetBioseqFlag get_flag)
 Get bioseq handle without loading new data. More...
 
CBioseq_Handle GetBioseqHandle (const CSeq_id_Handle &id, EGetBioseqFlag get_flag)
 Get bioseq handle without loading new data. More...
 
bool IsSameBioseq (const CSeq_id_Handle &id1, const CSeq_id_Handle &id2, EGetBioseqFlag get_flag)
 Check if two seq-ids are resolved to the same Bioseq. More...
 
TBioseqHandles GetBioseqHandles (const TIds &ids)
 Get bioseq handles for all ids. More...
 
TCDD_Entries GetCDDAnnots (const TIds &idhs)
 
TCDD_Entries GetCDDAnnots (const TBioseqHandles &bhs)
 
CSeq_entry_Handle GetSeq_entryHandle (CDataLoader *loader, const TBlobId &blob_id, EMissing action=eMissing_Default)
 Get Seq-entry handle by its blob-id, with possible loading. More...
 
CTSE_Handle GetTSE_Handle (const CSeq_entry &tse, EMissing action=eMissing_Default)
 Find object in scope If object is not found GetXxxHandle() methods will either throw an exception or return null handle depending on argument. More...
 
CBioseq_Handle GetBioseqHandle (const CBioseq &bioseq, EMissing action=eMissing_Default)
 
CBioseq_set_Handle GetBioseq_setHandle (const CBioseq_set &seqset, EMissing action=eMissing_Default)
 
CSeq_entry_Handle GetSeq_entryHandle (const CSeq_entry &entry, EMissing action=eMissing_Default)
 
CSeq_annot_Handle GetSeq_annotHandle (const CSeq_annot &annot, EMissing action=eMissing_Default)
 
CSeq_feat_Handle GetSeq_featHandle (const CSeq_feat &feat, EMissing action=eMissing_Default)
 
CBioseq_Handle GetObjectHandle (const CBioseq &bioseq, EMissing action=eMissing_Default)
 
CBioseq_set_Handle GetObjectHandle (const CBioseq_set &seqset, EMissing action=eMissing_Default)
 
CSeq_entry_Handle GetObjectHandle (const CSeq_entry &entry, EMissing action=eMissing_Default)
 
CSeq_annot_Handle GetObjectHandle (const CSeq_annot &annot, EMissing action=eMissing_Default)
 
CSeq_feat_Handle GetObjectHandle (const CSeq_feat &feat, EMissing action=eMissing_Default)
 
CBioseq_EditHandle GetBioseqEditHandle (const CBioseq &bioseq)
 Get edit handle for the specified object Throw an exception if object is not found, or non-editable. More...
 
CSeq_entry_EditHandle GetSeq_entryEditHandle (const CSeq_entry &entry)
 
CSeq_annot_EditHandle GetSeq_annotEditHandle (const CSeq_annot &annot)
 
CBioseq_set_EditHandle GetBioseq_setEditHandle (const CBioseq_set &seqset)
 
CBioseq_EditHandle GetObjectEditHandle (const CBioseq &bioseq)
 
CBioseq_set_EditHandle GetObjectEditHandle (const CBioseq_set &seqset)
 
CSeq_entry_EditHandle GetObjectEditHandle (const CSeq_entry &entry)
 
CSeq_annot_EditHandle GetObjectEditHandle (const CSeq_annot &annot)
 
CBioseq_Handle GetBioseqHandleFromTSE (const CSeq_id &id, const CTSE_Handle &tse)
 Get bioseq handle for sequence withing one TSE. More...
 
CBioseq_Handle GetBioseqHandleFromTSE (const CSeq_id_Handle &id, const CTSE_Handle &tse)
 
CBioseq_Handle GetBioseqHandleFromTSE (const CSeq_id &id, const CBioseq_Handle &bh)
 
CBioseq_Handle GetBioseqHandleFromTSE (const CSeq_id &id, const CSeq_entry_Handle &seh)
 Get bioseq handle for sequence withing one TSE. More...
 
CBioseq_Handle GetBioseqHandleFromTSE (const CSeq_id_Handle &id, const CBioseq_Handle &bh)
 Get bioseq handle for sequence withing one TSE. More...
 
CBioseq_Handle GetBioseqHandleFromTSE (const CSeq_id_Handle &id, const CSeq_entry_Handle &seh)
 Get bioseq handle for sequence withing one TSE. More...
 
void AddDefaults (TPriority pri=kPriority_Default)
 Add default data loaders from object manager. More...
 
void AddDataLoader (const string &loader_name, TPriority pri=kPriority_Default)
 Add data loader by name. More...
 
void AddScope (CScope &scope, TPriority pri=kPriority_Default)
 Add the scope's datasources as a single group with the given priority All data sources (data loaders and explicitly added data) have priorities. More...
 
CSeq_entry_Handle AddTopLevelSeqEntry (CSeq_entry &top_entry, TPriority pri=kPriority_Default, EExist action=eExist_Default)
 Add seq_entry, default priority is higher than for defaults or loaders Add object to the score with possibility to edit it directly. More...
 
CSeq_entry_Handle AddTopLevelSeqEntry (const CSeq_entry &top_entry, TPriority pri=kPriority_Default, EExist action=eExist_Throw)
 Add shared Seq-entry, scope will not modify it. More...
 
CBioseq_Handle AddBioseq (CBioseq &bioseq, TPriority pri=kPriority_Default, EExist action=eExist_Throw)
 Add bioseq, return bioseq handle. More...
 
CBioseq_Handle AddBioseq (const CBioseq &bioseq, TPriority pri=kPriority_Default, EExist action=eExist_Throw)
 Add shared Bioseq, scope will not modify it. More...
 
CSeq_entry_Handle AddGC_Assembly (const CGC_Assembly &gc_assembly, CGC_Assembly_Parser::FParserFlags flags=CGC_Assembly_Parser::fDefault, TPriority pri=kPriority_Default, EExist action=eExist_Throw)
 Add GC-Assembly. More...
 
CSeq_annot_Handle AddSeq_annot (CSeq_annot &annot, TPriority pri=kPriority_Default, EExist action=eExist_Throw)
 Add Seq-annot, return its CSeq_annot_Handle. More...
 
CSeq_annot_Handle AddSeq_annot (const CSeq_annot &annot, TPriority pri=kPriority_Default, EExist action=eExist_Throw)
 Add shared Seq-annot, scope will not modify it. More...
 
CSeq_entry_Handle AddSeq_submit (CSeq_submit &submit, TPriority pri=kPriority_Default)
 Add Seq-submit, return its CSeq_entry_Handle. More...
 
CBioseq_EditHandle GetEditHandle (const CBioseq_Handle &seq)
 Get editable Biosec handle by regular one. More...
 
CSeq_entry_EditHandle GetEditHandle (const CSeq_entry_Handle &entry)
 Get editable SeqEntry handle by regular one. More...
 
CSeq_annot_EditHandle GetEditHandle (const CSeq_annot_Handle &annot)
 Get editable Seq-annot handle by regular one. More...
 
CBioseq_set_EditHandle GetEditHandle (const CBioseq_set_Handle &seqset)
 Get editable Biosec-set handle by regular one. More...
 
void ResetHistory (EActionIfLocked action=eKeepIfLocked)
 Clean all unused TSEs from the scope's cache and release the memory. More...
 
void ResetDataAndHistory (void)
 Clear all information in the scope except added data loaders. More...
 
void ResetDataAndHistory (ERemoveDataLoaders remove_data_loaders)
 
void RemoveFromHistory (const CTSE_Handle &tse, EActionIfLocked action=eKeepIfLocked)
 Remove single TSE from the scope's history. More...
 
void RemoveFromHistory (const CBioseq_Handle &bioseq, EActionIfLocked action=eKeepIfLocked)
 Remove the bioseq's TSE from the scope's history. More...
 
void RemoveFromHistory (const CSeq_id_Handle &seq_id)
 Remove the Seq-id failed resolution from the scope's history. More...
 
void RemoveFromHistory (const CSeq_id &seq_id)
 Remove the Seq-id failed resolution from the scope's history. More...
 
void RemoveDataLoader (const string &loader_name, EActionIfLocked action=eThrowIfLocked)
 Revoke data loader from the scope. More...
 
void RemoveTopLevelSeqEntry (const CTSE_Handle &entry)
 Revoke TSE previously added using AddTopLevelSeqEntry() or AddBioseq(). More...
 
void RemoveTopLevelSeqEntry (const CSeq_entry_Handle &entry)
 
void RemoveBioseq (const CBioseq_Handle &seq)
 Revoke Bioseq previously added using AddBioseq(). More...
 
void RemoveSeq_annot (const CSeq_annot_Handle &annot)
 Revoke Seq-annot previously added using AddSeq_annot(). More...
 
bool Exists (const CSeq_id &id)
 Check existence of sequence with this id. More...
 
bool Exists (const CSeq_id_Handle &id)
 
TIds GetIds (const CSeq_id &id, TGetFlags flags=0)
 Get "native" bioseq ids without filtering and matching. More...
 
TIds GetIds (const CSeq_id_Handle &idh, TGetFlags flags=0)
 
CSeq_id_Handle GetAccVer (const CSeq_id_Handle &idh, TGetFlags flags=0)
 Get accession.version Seq-id Returns null CSeq_id_Handle if the sequence is not found or if it doesn't have accession. More...
 
TGi GetGi (const CSeq_id_Handle &idh, TGetFlags flags=0)
 Get GI of a sequence Returns ZERO_GI if the sequence is not found or if it doesn't have GI. More...
 
string GetLabel (const CSeq_id &id, TGetFlags flags=0)
 Get short description of bioseq, usually "accession.version" Returns empty string if the sequence is not found. More...
 
string GetLabel (const CSeq_id_Handle &idh, TGetFlags flags=0)
 
TTaxId GetTaxId (const CSeq_id &id, TGetFlags flags=0)
 Get taxonomy id of bioseq Return -1 if sequence is not found Return 0 if sequence doesn't have taxonomy id. More...
 
TTaxId GetTaxId (const CSeq_id_Handle &idh, TGetFlags flags=0)
 
TSeqPos GetSequenceLength (const CSeq_id &id, TGetFlags flags=0)
 Get sequence length Return kInvalidSeqPos if sequence is not found. More...
 
TSeqPos GetSequenceLength (const CSeq_id_Handle &id, TGetFlags flags=0)
 
CSeq_inst::TMol GetSequenceType (const CSeq_id &id, TGetFlags flags=0)
 Get molecular type of sequence (protein/dna/rna) Return CSeq_inst::eMol_not_set if sequence is not found. More...
 
CSeq_inst::TMol GetSequenceType (const CSeq_id_Handle &id, TGetFlags flags=0)
 
CBioseq_Handle::TBioseqStateFlags GetSequenceState (const CSeq_id &id, TGetFlags flags=0)
 Get sequence GenBank state Return (fState_not_found|fState_no_data) if sequence is not found. More...
 
CBioseq_Handle::TBioseqStateFlags GetSequenceState (const CSeq_id_Handle &id, TGetFlags flags=0)
 
TSequenceHash GetSequenceHash (const CSeq_id &id, TGetFlags flags=0)
 
TSequenceHash GetSequenceHash (const CSeq_id_Handle &id, TGetFlags flags=0)
 
TBulkIds GetBulkIds (const TSeq_id_Handles &idhs, TGetFlags flags=0)
 
void GetBulkIds (TBulkIds *results, const TSeq_id_Handles &idhs, TGetFlags flags=0)
 
TSeq_id_Handles GetAccVers (const TSeq_id_Handles &idhs, TGetFlags flags=0)
 Get accession.version Seq-id Returns null CSeq_id_Handles for sequences that aren't found or don't have accession id. More...
 
void GetAccVers (TSeq_id_Handles *results, const TSeq_id_Handles &idhs, TGetFlags flags=0)
 
TGIs GetGis (const TSeq_id_Handles &idhs, TGetFlags flags=0)
 
void GetGis (TGIs *results, const TSeq_id_Handles &idhs, TGetFlags flags=0)
 
TLabels GetLabels (const TSeq_id_Handles &idhs, TGetFlags flags=0)
 
void GetLabels (TLabels *results, const TSeq_id_Handles &idhs, TGetFlags flags=0)
 
TTaxIds GetTaxIds (const TSeq_id_Handles &idhs, TGetFlags flags=0)
 
void GetTaxIds (TTaxIds *results, const TSeq_id_Handles &idhs, TGetFlags flags=0)
 
TSequenceLengths GetSequenceLengths (const TSeq_id_Handles &idhs, TGetFlags flags=0)
 
void GetSequenceLengths (TSequenceLengths *results, const TSeq_id_Handles &idhs, TGetFlags flags=0)
 
TSequenceTypes GetSequenceTypes (const TSeq_id_Handles &idhs, TGetFlags flags=0)
 
void GetSequenceTypes (TSequenceTypes *results, const TSeq_id_Handles &idhs, TGetFlags flags=0)
 
TSequenceStates GetSequenceStates (const TSeq_id_Handles &idhs, TGetFlags flags=0)
 
void GetSequenceStates (TSequenceStates *results, const TSeq_id_Handles &idhs, TGetFlags flags=0)
 
TSequenceHashes GetSequenceHashes (const TSeq_id_Handles &idhs, TGetFlags flags=0)
 
void GetSequenceHashes (TSequenceHashes *results, const TSeq_id_Handles &idhs, TGetFlags flags=0)
 
CConstRef< CSynonymsSetGetSynonyms (const CSeq_id &id)
 Get bioseq synonyms, resolving to the bioseq in this scope. More...
 
CConstRef< CSynonymsSetGetSynonyms (const CSeq_id_Handle &id)
 Get bioseq synonyms, resolving to the bioseq in this scope. More...
 
CConstRef< CSynonymsSetGetSynonyms (const CBioseq_Handle &bh)
 Get bioseq synonyms, resolving to the bioseq in this scope. More...
 
void AttachEntry (CSeq_entry &parent, CSeq_entry &entry)
 
void RemoveEntry (CSeq_entry &entry)
 
void AttachAnnot (CSeq_entry &parent, CSeq_annot &annot)
 
void RemoveAnnot (CSeq_entry &parent, CSeq_annot &annot)
 
void ReplaceAnnot (CSeq_entry &entry, CSeq_annot &old_annot, CSeq_annot &new_annot)
 
CBioseq_Handle GetBioseqHandleFromTSE (const CSeq_id &id, const CSeq_entry &tse)
 
CBioseq_Handle GetBioseqHandleFromTSE (const CSeq_id_Handle &id, const CSeq_entry &tse)
 
void GetAllTSEs (TTSE_Handles &tses, enum ETSEKind kind=eManualTSEs)
 
CScopeTransaction GetTransaction ()
 
void UpdateAnnotIndex (void)
 
bool GetKeepExternalAnnotsForEdit () const
 Return this scope's KeepExternalAnnotsForEdit flag. More...
 
void SetKeepExternalAnnotsForEdit (bool keep=true)
 Change this scope's KeepExternalAnnotsForEdit flag. More...
 
- 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
 

Static Public Member Functions

static CSeq_id_Handle x_GetAccVer (const TIds &ids)
 
static TGi x_GetGi (const TIds &ids)
 
static bool GetDefaultKeepExternalAnnotsForEdit ()
 Return current application-wide KeepExternalAnnotsForEdit flag. More...
 
static void SetDefaultKeepExternalAnnotsForEdit (bool keep=true)
 Set new application-wide KeepExternalAnnotsForEdit flag. More...
 
- 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)
 

Protected Member Functions

CScope_ImplGetImpl (void)
 
- Protected Member Functions inherited from CObject
virtual void DeleteThis (void)
 Virtual method "deleting" this object. More...
 

Private Member Functions

 CScope (const CScope &)
 
CScopeoperator= (const CScope &)
 

Private Attributes

CRef< CScopem_HeapScope
 
CRef< CScope_Implm_Impl
 

Friends

class CSeqMap_CI
 
class CSeq_annot_CI
 
class CAnnot_Collector
 
class CBioseq_CI
 
class CHeapScope
 
class CPrefetchTokenOld_Impl
 
class CScopeTransaction
 

Additional Inherited Members

- 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...
 

Detailed Description

CScope –.

Scope of cache visibility and reference resolution

Definition at line 91 of file scope.hpp.


The documentation for this class was generated from the following files:
Modified on Wed Sep 04 15:00:42 2024 by modify_doxy.py rev. 669887