tse_info.hpp
上传用户:yhdzpy8989
上传日期:2007-06-13
资源大小:13604k
文件大小:20k
源码类别:

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: tse_info.hpp,v $
  4.  * PRODUCTION Revision 1000.2  2004/04/12 17:28:46  gouriano
  5.  * PRODUCTION PRODUCTION: UPGRADED [CATCHUP_003] Dev-tree R1.49
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. #ifndef OBJECTS_OBJMGR_IMPL___TSE_INFO__HPP
  10. #define OBJECTS_OBJMGR_IMPL___TSE_INFO__HPP
  11. /*  $Id: tse_info.hpp,v 1000.2 2004/04/12 17:28:46 gouriano Exp $
  12. * ===========================================================================
  13. *
  14. *                            PUBLIC DOMAIN NOTICE
  15. *               National Center for Biotechnology Information
  16. *
  17. *  This software/database is a "United States Government Work" under the
  18. *  terms of the United States Copyright Act.  It was written as part of
  19. *  the author's official duties as a United States Government employee and
  20. *  thus cannot be copyrighted.  This software/database is freely available
  21. *  to the public for use. The National Library of Medicine and the U.S.
  22. *  Government have not placed any restriction on its use or reproduction.
  23. *
  24. *  Although all reasonable efforts have been taken to ensure the accuracy
  25. *  and reliability of the software and data, the NLM and the U.S.
  26. *  Government do not and cannot warrant the performance or results that
  27. *  may be obtained by using this software or data. The NLM and the U.S.
  28. *  Government disclaim all warranties, express or implied, including
  29. *  warranties of performance, merchantability or fitness for any particular
  30. *  purpose.
  31. *
  32. *  Please cite the author in any work or product based on this material.
  33. *
  34. * ===========================================================================
  35. *
  36. * Author: Aleksey Grichenko, Eugene Vasilchenko
  37. *
  38. * File Description:
  39. *   TSE info -- entry for data source seq-id to TSE map
  40. *
  41. */
  42. #include <objmgr/impl/seq_entry_info.hpp>
  43. #include <objmgr/annot_selector.hpp>
  44. #include <objmgr/seq_id_handle.hpp>
  45. #include <util/rangemap.hpp>
  46. #include <corelib/ncbiobj.hpp>
  47. #include <corelib/ncbimtx.hpp>
  48. #include <objmgr/impl/annot_object_index.hpp>
  49. #include <map>
  50. #include <set>
  51. #include <vector>
  52. BEGIN_NCBI_SCOPE
  53. BEGIN_SCOPE(objects)
  54. class CScope_Impl;
  55. class CBioseq_Info;
  56. class CSeq_entry_Info;
  57. class CSeq_annot_Info;
  58. class CSeq_annot_SNP_Info;
  59. class CTSE_Chunk_Info;
  60. class CTSE_Info_Object;
  61. class CDataSource;
  62. class CHandleRange;
  63. class CAnnotObject_Info;
  64. class CAnnotTypes_CI;
  65. class CSeq_entry;
  66. ////////////////////////////////////////////////////////////////////
  67. //
  68. //  CTSE_Info::
  69. //
  70. //    General information and indexes for top level seq-entries
  71. //
  72. struct NCBI_XOBJMGR_EXPORT SIdAnnotObjs
  73. {
  74.     SIdAnnotObjs(void);
  75.     ~SIdAnnotObjs(void);
  76.     SIdAnnotObjs(const SIdAnnotObjs& objs);
  77.     
  78.     typedef CRange<TSeqPos>                                  TRange;
  79.     typedef CRangeMultimap<SAnnotObject_Index, TSeqPos>      TRangeMap;
  80.     typedef vector<TRangeMap>                                TAnnotSet;
  81.     typedef vector<CConstRef<CSeq_annot_SNP_Info> >          TSNPSet;
  82.     TAnnotSet m_AnnotSet;
  83.     TSNPSet   m_SNPSet;
  84. private:
  85.     const SIdAnnotObjs& operator=(const SIdAnnotObjs& objs);
  86. };
  87. class NCBI_XOBJMGR_EXPORT CTSE_Info : public CSeq_entry_Info
  88. {
  89.     typedef CSeq_entry_Info TParent;
  90. public:
  91.     // 'ctors
  92.     // Argument tse will be parentized.
  93.     explicit CTSE_Info(CSeq_entry& tse,
  94.                        bool dead = false,
  95.                        const CObject* blob_id = 0);
  96.     explicit CTSE_Info(const CTSE_Info& info);
  97.     virtual ~CTSE_Info(void);
  98.     bool HasDataSource(void) const;
  99.     CDataSource& GetDataSource(void) const;
  100.     CConstRef<CSeq_entry> GetCompleteTSE(void) const;
  101.     CConstRef<CSeq_entry> GetTSECore(void) const;
  102.     const CTSE_Info& GetTSE_Info(void) const;
  103.     CTSE_Info& GetTSE_Info(void);
  104.     bool IsDead(void) const;
  105.     void SetDead(bool dead);
  106.     bool Locked(void) const;
  107.     const CAnnotName& GetName(void) const;
  108.     void SetName(const CAnnotName& name);
  109.     bool HasAnnot(const CAnnotName& name) const;
  110.     bool HasUnnamedAnnot(void) const;
  111.     bool HasNamedAnnot(const string& name) const;
  112.     const CConstRef<CObject>& GetBlobId(void) const;
  113.     void SetBlobId(const CObject* blob_id);
  114.     // indexes types
  115.     typedef map<int, CBioseq_set_Info*>                      TBioseq_sets;
  116.     typedef map<CSeq_id_Handle, CBioseq_Info*>               TBioseqs;
  117.     typedef SIdAnnotObjs::TRange                             TRange;
  118.     typedef SIdAnnotObjs::TRangeMap                          TRangeMap;
  119.     typedef SIdAnnotObjs::TAnnotSet                          TAnnotSet;
  120.     typedef SIdAnnotObjs::TSNPSet                            TSNPSet;
  121.     typedef map<CSeq_id_Handle, SIdAnnotObjs>                TAnnotObjs;
  122.     typedef map<CAnnotName, TAnnotObjs>                      TNamedAnnotObjs;
  123.     typedef set<CAnnotName>                                  TNames;
  124.     typedef map<CSeq_id_Handle, TNames>                      TSeqIdToNames;
  125.     typedef int                                              TChunkId;
  126.     typedef map<TChunkId, CRef<CTSE_Chunk_Info> >            TChunks;
  127.     bool ContainsSeqid(const CSeq_id_Handle& id) const;
  128.     CConstRef<CBioseq_Info> FindBioseq(const CSeq_id_Handle& key) const;
  129.     void UpdateAnnotIndex(void) const;
  130.     void UpdateAnnotIndex(const CTSE_Info_Object& object) const;
  131.     void UpdateAnnotIndex(void);
  132.     void UpdateAnnotIndex(CTSE_Info_Object& object);
  133.     virtual void DebugDump(CDebugDumpContext ddc, unsigned int depth) const;
  134.     void x_DSAttachContents(CDataSource& ds);
  135.     void x_DSDetachContents(CDataSource& ds);
  136.     
  137.     virtual void x_SetDirtyAnnotIndexNoParent(void);
  138.     virtual void x_ResetDirtyAnnotIndexNoParent(void);
  139.     CRef<CTSE_Chunk_Info> GetNotLoadedChunk(void);
  140.     void LoadAllChunks(void);
  141. private:
  142.     friend class CTSE_Guard;
  143.     friend class CDataSource;
  144.     friend class CScope_Impl;
  145.     friend class CDataLoader;
  146.     friend class CAnnot_Collector;
  147.     friend class CSeq_entry_Info;
  148.     friend class CSeq_annot_Info;
  149.     friend class CBioseq_Info;
  150.     friend class CBioseq_set_Info;
  151.     friend class CTSE_Chunk_Info;
  152.     friend class CSeq_annot_SNP_Info;
  153.     friend struct SAnnotSelector;
  154.     CBioseq_set_Info& GetBioseq_set(int id);
  155.     CBioseq_Info& GetBioseq(int gi);
  156.     
  157.     void x_DSMapObject(CConstRef<TObject> obj, CDataSource& ds);
  158.     void x_DSUnmapObject(CConstRef<TObject> obj, CDataSource& ds);
  159.     void x_SetBioseqId(const CSeq_id_Handle& key, CBioseq_Info* info);
  160.     void x_ResetBioseqId(const CSeq_id_Handle& key, CBioseq_Info* info);
  161.     void x_SetBioseq_setId(int key, CBioseq_set_Info* info);
  162.     void x_ResetBioseq_setId(int key, CBioseq_set_Info* info);
  163.     // index access methods
  164.     TAnnotObjs& x_SetAnnotObjs(const CAnnotName& name);
  165.     const TAnnotObjs* x_GetAnnotObjs(const CAnnotName& name) const;
  166.     const TAnnotObjs* x_GetUnnamedAnnotObjs(void) const;
  167.     void x_RemoveAnnotObjs(const CAnnotName& name);
  168.     const SIdAnnotObjs* x_GetIdObjects(const TAnnotObjs& objs,
  169.                                        const CSeq_id_Handle& idh) const;
  170.     const SIdAnnotObjs* x_GetIdObjects(const CAnnotName& name,
  171.                                        const CSeq_id_Handle& id) const;
  172.     const SIdAnnotObjs* x_GetUnnamedIdObjects(const CSeq_id_Handle& id) const;
  173.     SIdAnnotObjs& x_SetIdObjects(TAnnotObjs& objs,
  174.                                  const CAnnotName& name,
  175.                                  const CSeq_id_Handle& id);
  176.     SIdAnnotObjs& x_SetIdObjects(const CAnnotName& name,
  177.                                  const CSeq_id_Handle& idh);
  178.     void x_MapSNP_Table(const CAnnotName& name,
  179.                         const CSeq_id_Handle& key,
  180.                         const CSeq_annot_SNP_Info& snp_info);
  181.     void x_UnmapSNP_Table(const CAnnotName& name,
  182.                           const CSeq_id_Handle& key,
  183.                           const CSeq_annot_SNP_Info& snp_info);
  184.     void x_MapAnnotObject(TRangeMap& rangeMap,
  185.                           const SAnnotObject_Key& key,
  186.                           const SAnnotObject_Index& annotRef);
  187.     bool x_UnmapAnnotObject(TRangeMap& rangeMap,
  188.                             const SAnnotObject_Key& key);
  189.     void x_MapAnnotObject(SIdAnnotObjs& objs,
  190.                           const SAnnotObject_Key& key,
  191.                           const SAnnotObject_Index& annotRef);
  192.     bool x_UnmapAnnotObject(SIdAnnotObjs& objs,
  193.                             const SAnnotObject_Key& key);
  194.     void x_MapAnnotObject(TAnnotObjs& objs,
  195.                           const CAnnotName& name,
  196.                           const SAnnotObject_Key& key,
  197.                           const SAnnotObject_Index& annotRef);
  198.     void x_MapAnnotObject(TAnnotObjs& index,
  199.                           const SAnnotObject_Key& key,
  200.                           const SAnnotObject_Index& annotRef,
  201.                           SAnnotObjects_Info& infos);
  202.     void x_MapAnnotObject(const SAnnotObject_Key& key,
  203.                           const SAnnotObject_Index& annotRef,
  204.                           SAnnotObjects_Info& infos);
  205.     bool x_UnmapAnnotObject(TAnnotObjs& objs,
  206.                             const CAnnotName& name,
  207.                             const SAnnotObject_Key& key);
  208.     void x_UnmapAnnotObjects(SAnnotObjects_Info& infos);
  209.     void x_IndexSeqTSE(const CSeq_id_Handle& id);
  210.     void x_UnindexSeqTSE(const CSeq_id_Handle& id);
  211.     void x_IndexAnnotTSE(const CAnnotName& name, const CSeq_id_Handle& id);
  212.     void x_UnindexAnnotTSE(const CAnnotName& name, const CSeq_id_Handle& id);
  213.     // Parent data-source
  214.     CDataSource*           m_DataSource;
  215.     // Dead seq-entry flag
  216.     bool                   m_Dead;
  217.     // TSE has name
  218.     CAnnotName             m_Name;
  219.     // May be used by data loaders to store blob-id
  220.     typedef CConstRef<CObject> TBlob_ID;
  221.     TBlob_ID               m_Blob_ID;
  222.     typedef CRWLock        TAnnotObjsLock;
  223.     typedef TAnnotObjsLock::TReadLockGuard  TAnnotReadLockGuard;
  224.     typedef TAnnotObjsLock::TWriteLockGuard TAnnotWriteLockGuard;
  225.     // ID to bioseq-info
  226.     TBioseq_sets           m_Bioseq_sets;
  227.     TBioseqs               m_Bioseqs;
  228.     // ID to annot-selector-map
  229.     TNamedAnnotObjs        m_NamedAnnotObjs;
  230.     TSeqIdToNames          m_SeqIdToNames;
  231.     mutable TAnnotObjsLock m_AnnotObjsLock;
  232.     TChunks                m_Chunks;
  233.     // Hide copy methods
  234.     CTSE_Info& operator= (const CTSE_Info&);
  235. };
  236. typedef CConstRef<CTSE_Info> TTSE_Lock;
  237. /////////////////////////////////////////////////////////////////////
  238. //
  239. //  Inline methods
  240. //
  241. /////////////////////////////////////////////////////////////////////
  242. inline
  243. bool CTSE_Info::HasDataSource(void) const
  244. {
  245.     return m_DataSource != 0;
  246. }
  247. inline
  248. CDataSource& CTSE_Info::GetDataSource(void) const
  249. {
  250.     _ASSERT(m_DataSource);
  251.     return *m_DataSource;
  252. }
  253. inline
  254. const CTSE_Info& CTSE_Info::GetTSE_Info(void) const
  255. {
  256.     return *this;
  257. }
  258. inline
  259. CTSE_Info& CTSE_Info::GetTSE_Info(void)
  260. {
  261.     return *this;
  262. }
  263. inline
  264. bool CTSE_Info::IsDead(void) const
  265. {
  266.     return m_Dead;
  267. }
  268. inline
  269. void CTSE_Info::SetDead(bool dead)
  270. {
  271.     m_Dead = dead;
  272. }
  273. inline
  274. bool CTSE_Info::Locked(void) const
  275. {
  276.     return !ReferencedOnlyOnce();
  277. }
  278. inline
  279. const CAnnotName& CTSE_Info::GetName(void) const
  280. {
  281.     return m_Name;
  282. }
  283. inline
  284. const CConstRef<CObject>& CTSE_Info::GetBlobId(void) const
  285. {
  286.     return m_Blob_ID;
  287. }
  288. END_SCOPE(objects)
  289. END_NCBI_SCOPE
  290. /*
  291. * ---------------------------------------------------------------------------
  292. * $Log: tse_info.hpp,v $
  293. * Revision 1000.2  2004/04/12 17:28:46  gouriano
  294. * PRODUCTION: UPGRADED [CATCHUP_003] Dev-tree R1.49
  295. *
  296. * Revision 1.49  2004/04/05 15:56:13  grichenk
  297. * Redesigned CAnnotTypes_CI: moved all data and data collecting
  298. * functions to CAnnotDataCollector. CAnnotTypes_CI is no more
  299. * inherited from SAnnotSelector.
  300. *
  301. * Revision 1.48  2004/03/24 18:30:29  vasilche
  302. * Fixed edit API.
  303. * Every *_Info object has its own shallow copy of original object.
  304. *
  305. * Revision 1.47  2004/03/16 15:47:27  vasilche
  306. * Added CBioseq_set_Handle and set of EditHandles
  307. *
  308. * Revision 1.46  2004/02/19 17:17:00  vasilche
  309. * Formatting.
  310. *
  311. * Revision 1.45  2004/02/04 18:05:33  grichenk
  312. * Added annotation filtering by set of types/subtypes.
  313. * Renamed *Choice to *Type in SAnnotSelector.
  314. *
  315. * Revision 1.44  2004/01/22 20:10:39  vasilche
  316. * 1. Splitted ID2 specs to two parts.
  317. * ID2 now specifies only protocol.
  318. * Specification of ID2 split data is moved to seqsplit ASN module.
  319. * For now they are still reside in one resulting library as before - libid2.
  320. * As the result split specific headers are now in objects/seqsplit.
  321. * 2. Moved ID2 and ID1 specific code out of object manager.
  322. * Protocol is processed by corresponding readers.
  323. * ID2 split parsing is processed by ncbi_xreader library - used by all readers.
  324. * 3. Updated OBJMGR_LIBS correspondingly.
  325. *
  326. * Revision 1.43  2003/11/26 17:55:55  vasilche
  327. * Implemented ID2 split in ID1 cache.
  328. * Fixed loading of splitted annotations.
  329. *
  330. * Revision 1.42  2003/10/27 16:47:12  vasilche
  331. * Fixed error:
  332. * src/objmgr/data_source.cpp", line 913: Fatal: Assertion failed: (it != tse_map.end() && it->first == id)
  333. *
  334. * Revision 1.41  2003/10/09 20:20:59  vasilche
  335. * Added possibility to include and exclude Seq-annot names to annot iterator.
  336. * Fixed adaptive search. It looked only on selected set of annot names before.
  337. *
  338. * Revision 1.40  2003/10/07 13:43:22  vasilche
  339. * Added proper handling of named Seq-annots.
  340. * Added feature search from named Seq-annots.
  341. * Added configurable adaptive annotation search (default: gene, cds, mrna).
  342. * Fixed selection of blobs for loading from GenBank.
  343. * Added debug checks to CSeq_id_Mapper for easier finding lost CSeq_id_Handles.
  344. * Fixed leaked split chunks annotation stubs.
  345. * Moved some classes definitions in separate *.cpp files.
  346. *
  347. * Revision 1.39  2003/09/30 16:22:01  vasilche
  348. * Updated internal object manager classes to be able to load ID2 data.
  349. * SNP blobs are loaded as ID2 split blobs - readers convert them automatically.
  350. * Scope caches results of requests for data to data loaders.
  351. * Optimized CSeq_id_Handle for gis.
  352. * Optimized bioseq lookup in scope.
  353. * Reduced object allocations in annotation iterators.
  354. * CScope is allowed to be destroyed before other objects using this scope are
  355. * deleted (feature iterators, bioseq handles etc).
  356. * Optimized lookup for matching Seq-ids in CSeq_id_Mapper.
  357. * Added 'adaptive' option to objmgr_demo application.
  358. *
  359. * Revision 1.38  2003/09/16 14:21:46  grichenk
  360. * Added feature indexing and searching by subtype.
  361. *
  362. * Revision 1.37  2003/08/14 20:05:19  vasilche
  363. * Simple SNP features are stored as table internally.
  364. * They are recreated when needed using CFeat_CI.
  365. *
  366. * Revision 1.36  2003/07/18 16:57:52  rsmith
  367. * Do not leave redundant class qualifiers
  368. *
  369. * Revision 1.35  2003/07/17 20:07:55  vasilche
  370. * Reduced memory usage by feature indexes.
  371. * SNP data is loaded separately through PUBSEQ_OS.
  372. * String compression for SNP data.
  373. *
  374. * Revision 1.34  2003/07/14 21:13:24  grichenk
  375. * Added possibility to resolve seq-map iterator withing a single TSE
  376. * and to skip intermediate references during this resolving.
  377. *
  378. * Revision 1.33  2003/06/24 14:25:18  vasilche
  379. * Removed obsolete CTSE_Guard class.
  380. * Used separate mutexes for bioseq and annot maps.
  381. *
  382. * Revision 1.32  2003/06/19 18:23:45  vasilche
  383. * Added several CXxx_ScopeInfo classes for CScope related information.
  384. * CBioseq_Handle now uses reference to CBioseq_ScopeInfo.
  385. * Some fine tuning of locking in CScope.
  386. *
  387. * Revision 1.31  2003/06/02 16:01:37  dicuccio
  388. * Rearranged include/objects/ subtree.  This includes the following shifts:
  389. *     - include/objects/alnmgr --> include/objtools/alnmgr
  390. *     - include/objects/cddalignview --> include/objtools/cddalignview
  391. *     - include/objects/flat --> include/objtools/flat
  392. *     - include/objects/objmgr/ --> include/objmgr/
  393. *     - include/objects/util/ --> include/objmgr/util/
  394. *     - include/objects/validator --> include/objtools/validator
  395. *
  396. * Revision 1.30  2003/05/20 15:44:37  vasilche
  397. * Fixed interaction of CDataSource and CDataLoader in multithreaded app.
  398. * Fixed some warnings on WorkShop.
  399. * Added workaround for memory leak on WorkShop.
  400. *
  401. * Revision 1.29  2003/05/06 18:54:08  grichenk
  402. * Moved TSE filtering from CDataSource to CScope, changed
  403. * some filtering rules (e.g. priority is now more important
  404. * than scope history). Added more caches to CScope.
  405. *
  406. * Revision 1.28  2003/04/25 14:23:46  vasilche
  407. * Added explicit constructors, destructor and assignment operator to make it compilable on MSVC DLL.
  408. *
  409. * Revision 1.27  2003/04/24 16:12:37  vasilche
  410. * Object manager internal structures are splitted more straightforward.
  411. * Removed excessive header dependencies.
  412. *
  413. * Revision 1.26  2003/03/21 19:22:50  grichenk
  414. * Redesigned TSE locking, replaced CTSE_Lock with CRef<CTSE_Info>.
  415. *
  416. * Revision 1.25  2003/03/18 14:50:08  grichenk
  417. * Made CounterOverflow() and CounterUnderflow() private
  418. *
  419. * Revision 1.24  2003/03/14 19:10:39  grichenk
  420. * + SAnnotSelector::EIdResolving; fixed operator=() for several classes
  421. *
  422. * Revision 1.23  2003/03/12 20:09:31  grichenk
  423. * Redistributed members between CBioseq_Handle, CBioseq_Info and CTSE_Info
  424. *
  425. * Revision 1.22  2003/03/05 20:56:43  vasilche
  426. * SAnnotSelector now holds all parameters of annotation iterators.
  427. *
  428. * Revision 1.21  2003/02/25 20:10:38  grichenk
  429. * Reverted to single total-range index for annotations
  430. *
  431. * Revision 1.20  2003/02/25 14:48:07  vasilche
  432. * Added Win32 export modifier to object manager classes.
  433. *
  434. * Revision 1.19  2003/02/24 18:57:21  vasilche
  435. * Make feature gathering in one linear pass using CSeqMap iterator.
  436. * Do not use feture index by sub locations.
  437. * Sort features at the end of gathering in one vector.
  438. * Extracted some internal structures and classes in separate header.
  439. * Delay creation of mapped features.
  440. *
  441. * Revision 1.18  2003/02/13 14:34:32  grichenk
  442. * Renamed CAnnotObject -> CAnnotObject_Info
  443. * + CSeq_annot_Info and CAnnotObject_Ref
  444. * Moved some members of CAnnotObject to CSeq_annot_Info
  445. * and CAnnotObject_Ref.
  446. * Added feat/align/graph to CAnnotObject_Info map
  447. * to CDataSource.
  448. *
  449. * Revision 1.17  2003/02/05 17:57:41  dicuccio
  450. * Moved into include/objects/objmgr/impl to permit data loaders to be defined
  451. * outside of xobjmgr.
  452. *
  453. * Revision 1.16  2003/02/04 21:46:31  grichenk
  454. * Added map of annotations by intervals (the old one was
  455. * by total ranges)
  456. *
  457. * Revision 1.15  2003/01/29 22:02:22  grichenk
  458. * Fixed includes for SAnnotSelector
  459. *
  460. * Revision 1.14  2003/01/29 17:45:05  vasilche
  461. * Annotaions index is split by annotation/feature type.
  462. *
  463. * Revision 1.13  2002/12/26 21:03:33  dicuccio
  464. * Added Win32 export specifier.  Moved file from src/objects/objmgr to
  465. * include/objects/objmgr.
  466. *
  467. * Revision 1.12  2002/12/26 16:39:24  vasilche
  468. * Object manager class CSeqMap rewritten.
  469. *
  470. * Revision 1.11  2002/11/04 21:29:12  grichenk
  471. * Fixed usage of const CRef<> and CRef<> constructor
  472. *
  473. * Revision 1.10  2002/10/18 19:12:41  grichenk
  474. * Removed mutex pools, converted most static mutexes to non-static.
  475. * Protected CSeqMap::x_Resolve() with mutex. Modified code to prevent
  476. * dead-locks.
  477. *
  478. * Revision 1.9  2002/07/10 16:50:33  grichenk
  479. * Fixed bug with duplicate and uninitialized atomic counters
  480. *
  481. * Revision 1.8  2002/07/08 20:51:02  grichenk
  482. * Moved log to the end of file
  483. * Replaced static mutex (in CScope, CDataSource) with the mutex
  484. * pool. Redesigned CDataSource data locking.
  485. *
  486. * Revision 1.7  2002/05/31 17:53:00  grichenk
  487. * Optimized for better performance (CTSE_Info uses atomic counter,
  488. * delayed annotations indexing, no location convertions in
  489. * CAnnot_Types_CI if no references resolution is required etc.)
  490. *
  491. * Revision 1.6  2002/05/29 21:21:13  gouriano
  492. * added debug dump
  493. *
  494. * Revision 1.5  2002/05/03 21:28:11  ucko
  495. * Introduce T(Signed)SeqPos.
  496. *
  497. * Revision 1.4  2002/05/02 20:42:38  grichenk
  498. * throw -> THROW1_TRACE
  499. *
  500. * Revision 1.3  2002/03/14 18:39:14  gouriano
  501. * added mutex for MT protection
  502. *
  503. * Revision 1.2  2002/02/21 19:27:07  grichenk
  504. * Rearranged includes. Added scope history. Added searching for the
  505. * best seq-id match in data sources and scopes. Updated tests.
  506. *
  507. * Revision 1.1  2002/02/07 21:25:06  grichenk
  508. * Initial revision
  509. *
  510. *
  511. * ===========================================================================
  512. */
  513. #endif  /* OBJECTS_OBJMGR_IMPL___TSE_INFO__HPP */