NCBI C++ ToolKit
edit_saver.hpp
Go to the documentation of this file.

Go to the SVN repository for this file.

1 #ifndef OBJECTS_OBJMGR_IMPL___EDIT_SAVER__HPP
2 #define OBJECTS_OBJMGR_IMPL___EDIT_SAVER__HPP
3 
4 /* $Id: edit_saver.hpp 33815 2007-05-04 17:18:18Z kazimird $
5 * ===========================================================================
6 *
7 * PUBLIC DOMAIN NOTICE
8 * National Center for Biotechnology Information
9 *
10 * This software/database is a "United States Government Work" under the
11 * terms of the United States Copyright Act. It was written as part of
12 * the author's official duties as a United States Government employee and
13 * thus cannot be copyrighted. This software/database is freely available
14 * to the public for use. The National Library of Medicine and the U.S.
15 * Government have not placed any restriction on its use or reproduction.
16 *
17 * Although all reasonable efforts have been taken to ensure the accuracy
18 * and reliability of the software and data, the NLM and the U.S.
19 * Government do not and cannot warrant the performance or results that
20 * may be obtained by using this software or data. The NLM and the U.S.
21 * Government disclaim all warranties, express or implied, including
22 * warranties of performance, merchantability or fitness for any particular
23 * purpose.
24 *
25 * Please cite the author in any work or product based on this material.
26 *
27 * ===========================================================================
28 *
29 * Author: Maxim Didenko
30 *
31 * File Description:
32 *
33 */
34 
35 #include <corelib/ncbiobj.hpp>
37 
38 #include <objects/seq/Seq_inst.hpp>
41 
42 #include <objmgr/bio_object_id.hpp>
45 
46 class CBioseq_Handle;
47 class CBioseq_set_Handle;
48 class CSeq_entry_Handle;
49 class CSeq_annot_Handle;
50 class CSeq_feat_Handle;
51 class CSeq_align_Handle;
52 class CSeq_graph_Handle;
53 class CTSE_Handle;
54 
55 class CSeq_feat;
56 class CSeq_align;
57 class CSeq_graph;
58 
59 class CSeq_descr;
60 class CSeqdesc;
61 
62 /// Edit Saver Interface
63 ///
64 /// An instance of a class which implements this interface
65 /// can be attached to a TSE in order to catch modifications
66 /// which are being done on the objects associated with this TSE
67 /// This instance is attached to the TSE using the CDataLoaderPatcher class
68 ///
69 /// @sa CDataLoaderPatcher, CScopeTransaction
70 ///
72 {
73 public:
74 
75  /// This flag can be used for optimization purpose
76  enum ECallMode {
77  eDo, ///< The method is called when a modification has just been done
78  eUndo ///< The method is called when a modification has just been undone
79  };
80 
81  virtual ~IEditSaver();
82 
83  /// Called when a transaction has just been started
84  ///
85  virtual void BeginTransaction() = 0;
86 
87  /// Called when a transaction is finished
88  ///
89  virtual void CommitTransaction() = 0;
90 
91  /// Called when a transaction should be undone
92  ///
93  virtual void RollbackTransaction() = 0;
94 
95  //------------------------------------------------------------------
96  // Bioseq operations
97 
98  /// Description operations
99  virtual void AddDescr (const CBioseq_Handle&,
100  const CSeq_descr&, ECallMode) = 0;
101  virtual void SetDescr (const CBioseq_Handle&,
102  const CSeq_descr&, ECallMode) = 0;
103  virtual void ResetDescr(const CBioseq_Handle&, ECallMode) = 0;
104  virtual void AddDesc (const CBioseq_Handle&, const CSeqdesc&, ECallMode) = 0;
105  virtual void RemoveDesc(const CBioseq_Handle&, const CSeqdesc&, ECallMode) = 0;
106 
107  /// CSeq_inst operatoions
108  virtual void SetSeqInst (const CBioseq_Handle&,
109  const CSeq_inst&, ECallMode) = 0;
110  virtual void SetSeqInstRepr (const CBioseq_Handle&,
112  virtual void SetSeqInstMol (const CBioseq_Handle&,
114  virtual void SetSeqInstLength (const CBioseq_Handle&,
116  virtual void SetSeqInstFuzz (const CBioseq_Handle& handle,
117  const CSeq_inst::TFuzz& fuzz, ECallMode) = 0;
118  virtual void SetSeqInstTopology(const CBioseq_Handle& handle,
119  CSeq_inst::TTopology topology, ECallMode) = 0;
120  virtual void SetSeqInstStrand (const CBioseq_Handle& handle,
121  CSeq_inst::TStrand strand, ECallMode) = 0;
122  virtual void SetSeqInstExt (const CBioseq_Handle& handle,
123  const CSeq_inst::TExt& ext, ECallMode) = 0;
124  virtual void SetSeqInstHist (const CBioseq_Handle& handle,
125  const CSeq_inst::THist& hist, ECallMode) = 0;
126  virtual void SetSeqInstSeq_data(const CBioseq_Handle& handle,
127  const CSeq_inst::TSeq_data& data,
128  ECallMode) = 0;
129 
130  virtual void ResetSeqInst (const CBioseq_Handle&, ECallMode) = 0;
131  virtual void ResetSeqInstRepr (const CBioseq_Handle&, ECallMode) = 0;
132  virtual void ResetSeqInstMol (const CBioseq_Handle&, ECallMode) = 0;
133  virtual void ResetSeqInstLength (const CBioseq_Handle&, ECallMode) = 0;
134  virtual void ResetSeqInstFuzz (const CBioseq_Handle&, ECallMode) = 0;
135  virtual void ResetSeqInstTopology(const CBioseq_Handle&, ECallMode) = 0;
136  virtual void ResetSeqInstStrand (const CBioseq_Handle&, ECallMode) = 0;
137  virtual void ResetSeqInstExt (const CBioseq_Handle&, ECallMode) = 0;
138  virtual void ResetSeqInstHist (const CBioseq_Handle&, ECallMode) = 0;
139  virtual void ResetSeqInstSeq_data(const CBioseq_Handle&, ECallMode) = 0;
140 
141  /// ID operation
142  virtual void AddId (const CBioseq_Handle&,
143  const CSeq_id_Handle&, ECallMode) = 0;
144  virtual void RemoveId(const CBioseq_Handle&,
145  const CSeq_id_Handle&, ECallMode) = 0;
147  virtual void ResetIds(const CBioseq_Handle&, const TIds&, ECallMode) = 0;
148 
149  //----------------------------------------------------------------
150  // Bioseq_set operations
151  virtual void AddDescr (const CBioseq_set_Handle&,
152  const CSeq_descr&, ECallMode) = 0;
153  virtual void SetDescr (const CBioseq_set_Handle&,
154  const CSeq_descr&, ECallMode) = 0;
155  virtual void ResetDescr(const CBioseq_set_Handle&, ECallMode) = 0;
156  virtual void AddDesc (const CBioseq_set_Handle&,
157  const CSeqdesc&, ECallMode) = 0;
158  virtual void RemoveDesc(const CBioseq_set_Handle&,
159  const CSeqdesc&, ECallMode) = 0;
160 
161  virtual void SetBioseqSetId (const CBioseq_set_Handle&,
162  const CBioseq_set::TId&, ECallMode) = 0;
163  virtual void SetBioseqSetColl (const CBioseq_set_Handle&,
164  const CBioseq_set::TColl&, ECallMode) = 0;
165  virtual void SetBioseqSetLevel (const CBioseq_set_Handle&,
167  virtual void SetBioseqSetClass (const CBioseq_set_Handle&,
170  const CBioseq_set::TRelease&, ECallMode) = 0;
171  virtual void SetBioseqSetDate (const CBioseq_set_Handle&,
172  const CBioseq_set::TDate&, ECallMode) = 0;
173 
174  virtual void ResetBioseqSetId (const CBioseq_set_Handle&, ECallMode) = 0;
175  virtual void ResetBioseqSetColl (const CBioseq_set_Handle&, ECallMode) = 0;
179  virtual void ResetBioseqSetDate (const CBioseq_set_Handle&, ECallMode) = 0;
180 
181  //-----------------------------------------------------------------
182  // Seq_entry operations
183  virtual void Attach(const CBioObjectId& old_id,
184  const CSeq_entry_Handle& entry,
185  const CBioseq_Handle& what, ECallMode ) = 0;
186  virtual void Attach(const CBioObjectId& old_id,
187  const CSeq_entry_Handle& entry,
188  const CBioseq_set_Handle& what, ECallMode ) = 0;
189  virtual void Detach(const CSeq_entry_Handle& entry,
190  const CBioseq_Handle& what, ECallMode ) = 0;
191  virtual void Detach(const CSeq_entry_Handle& entry,
192  const CBioseq_set_Handle& what, ECallMode ) = 0;
193 
194  virtual void Attach(const CSeq_entry_Handle& entry,
195  const CSeq_annot_Handle& what, ECallMode) = 0;
196  virtual void Remove(const CSeq_entry_Handle& entry,
197  const CSeq_annot_Handle& what, ECallMode) = 0;
198 
199  virtual void Attach(const CBioseq_set_Handle& handle,
200  const CSeq_entry_Handle& entry,
201  int Index, ECallMode) = 0;
202  virtual void Remove(const CBioseq_set_Handle& handle,
203  const CSeq_entry_Handle&,
204  int Index, ECallMode) = 0;
205 
206  //-----------------------------------------------------------------
207  // Annotation operations
208  virtual void Replace(const CSeq_feat_Handle& handle,
209  const CSeq_feat& old_value, ECallMode) = 0;
210  virtual void Replace(const CSeq_align_Handle& handle,
211  const CSeq_align& old_value, ECallMode) = 0;
212  virtual void Replace(const CSeq_graph_Handle& handle,
213  const CSeq_graph& old_value, ECallMode) = 0;
214 
215  virtual void Add(const CSeq_annot_Handle& handle,
216  const CSeq_feat& obj, ECallMode) = 0;
217  virtual void Add(const CSeq_annot_Handle& handle,
218  const CSeq_align& obj, ECallMode) = 0;
219  virtual void Add(const CSeq_annot_Handle& handle,
220  const CSeq_graph& obj, ECallMode) = 0;
221 
222  virtual void Remove(const CSeq_annot_Handle& handle,
223  const CSeq_feat& old_value, ECallMode) = 0;
224  virtual void Remove(const CSeq_annot_Handle& handle,
225  const CSeq_align& old_value, ECallMode) = 0;
226  virtual void Remove(const CSeq_annot_Handle& handle,
227  const CSeq_graph& old_value, ECallMode) = 0;
228 
229  //-----------------------------------------------------------------
230  virtual void RemoveTSE(const CTSE_Handle& handle, ECallMode) = 0;
231 
232 };
233 
235 
237 
238 template<>
240 {
241 public:
243  {
244  CPluginManager_DllResolver* resolver =
247  kEmptyStr,
250  resolver->SetDllNamePrefix("ncbi");
251  return resolver;
252  }
253 };
254 
256 
257 #endif//OBJECTS_OBJMGR_IMPL___EDIT_SAVER__HPP
CBioseq_Handle –.
CBioseq_set_Handle –.
Definition: Date.hpp:53
Definition: Dbtag.hpp:53
CPluginManager_DllResolver * operator()(void)
Definition: edit_saver.hpp:242
Template function to create dll resolver for interface.
CInterfaceVersion<> –.
CObject –.
Definition: ncbiobj.hpp:180
Service class for DLLs resolution.
CSeq_annot_Handle –.
@Seq_descr.hpp User-defined methods of the data storage class.
Definition: Seq_descr.hpp:55
CSeq_entry_Handle –.
CSeq_ext –.
Definition: Seq_ext.hpp:66
CSeq_feat_Handle –.
namespace ncbi::objects::
Definition: Seq_feat.hpp:58
CSeq_hist –.
Definition: Seq_hist.hpp:66
Edit Saver Interface.
Definition: edit_saver.hpp:72
virtual void ResetIds(const CBioseq_Handle &, const TIds &, ECallMode)=0
virtual void SetSeqInst(const CBioseq_Handle &, const CSeq_inst &, ECallMode)=0
CSeq_inst operatoions.
virtual void SetBioseqSetDate(const CBioseq_set_Handle &, const CBioseq_set::TDate &, ECallMode)=0
virtual void Remove(const CSeq_entry_Handle &entry, const CSeq_annot_Handle &what, ECallMode)=0
virtual void SetSeqInstHist(const CBioseq_Handle &handle, const CSeq_inst::THist &hist, ECallMode)=0
virtual void Replace(const CSeq_align_Handle &handle, const CSeq_align &old_value, ECallMode)=0
virtual void Remove(const CSeq_annot_Handle &handle, const CSeq_align &old_value, ECallMode)=0
virtual void ResetBioseqSetDate(const CBioseq_set_Handle &, ECallMode)=0
virtual void ResetSeqInstLength(const CBioseq_Handle &, ECallMode)=0
virtual void Replace(const CSeq_feat_Handle &handle, const CSeq_feat &old_value, ECallMode)=0
virtual void Add(const CSeq_annot_Handle &handle, const CSeq_graph &obj, ECallMode)=0
virtual void SetSeqInstExt(const CBioseq_Handle &handle, const CSeq_inst::TExt &ext, ECallMode)=0
ECallMode
This flag can be used for optimization purpose.
Definition: edit_saver.hpp:76
@ eDo
The method is called when a modification has just been done.
Definition: edit_saver.hpp:77
virtual void CommitTransaction()=0
Called when a transaction is finished.
virtual void SetDescr(const CBioseq_Handle &, const CSeq_descr &, ECallMode)=0
virtual void SetSeqInstLength(const CBioseq_Handle &, CSeq_inst::TLength, ECallMode)=0
virtual void Add(const CSeq_annot_Handle &handle, const CSeq_align &obj, ECallMode)=0
virtual void ResetSeqInstRepr(const CBioseq_Handle &, ECallMode)=0
virtual void SetSeqInstRepr(const CBioseq_Handle &, CSeq_inst::TRepr, ECallMode)=0
virtual void ResetBioseqSetLevel(const CBioseq_set_Handle &, ECallMode)=0
virtual void ResetBioseqSetRelease(const CBioseq_set_Handle &, ECallMode)=0
virtual void Remove(const CSeq_annot_Handle &handle, const CSeq_feat &old_value, ECallMode)=0
virtual void RemoveDesc(const CBioseq_set_Handle &, const CSeqdesc &, ECallMode)=0
virtual void Add(const CSeq_annot_Handle &handle, const CSeq_feat &obj, ECallMode)=0
virtual void SetSeqInstSeq_data(const CBioseq_Handle &handle, const CSeq_inst::TSeq_data &data, ECallMode)=0
virtual void Remove(const CBioseq_set_Handle &handle, const CSeq_entry_Handle &, int Index, ECallMode)=0
virtual void Attach(const CSeq_entry_Handle &entry, const CSeq_annot_Handle &what, ECallMode)=0
virtual void ResetBioseqSetColl(const CBioseq_set_Handle &, ECallMode)=0
virtual void SetBioseqSetRelease(const CBioseq_set_Handle &, const CBioseq_set::TRelease &, ECallMode)=0
virtual void Attach(const CBioseq_set_Handle &handle, const CSeq_entry_Handle &entry, int Index, ECallMode)=0
virtual void AddDesc(const CBioseq_Handle &, const CSeqdesc &, ECallMode)=0
virtual void AddDescr(const CBioseq_set_Handle &, const CSeq_descr &, ECallMode)=0
virtual void RemoveDesc(const CBioseq_Handle &, const CSeqdesc &, ECallMode)=0
virtual void BeginTransaction()=0
Called when a transaction has just been started.
virtual void ResetBioseqSetClass(const CBioseq_set_Handle &, ECallMode)=0
virtual void ResetSeqInstStrand(const CBioseq_Handle &, ECallMode)=0
virtual void SetBioseqSetColl(const CBioseq_set_Handle &, const CBioseq_set::TColl &, ECallMode)=0
virtual void AddDescr(const CBioseq_Handle &, const CSeq_descr &, ECallMode)=0
Description operations.
virtual void ResetBioseqSetId(const CBioseq_set_Handle &, ECallMode)=0
virtual void AddId(const CBioseq_Handle &, const CSeq_id_Handle &, ECallMode)=0
ID operation.
virtual void RemoveTSE(const CTSE_Handle &handle, ECallMode)=0
virtual void ResetDescr(const CBioseq_set_Handle &, ECallMode)=0
virtual void SetDescr(const CBioseq_set_Handle &, const CSeq_descr &, ECallMode)=0
virtual void ResetSeqInstMol(const CBioseq_Handle &, ECallMode)=0
virtual void SetBioseqSetLevel(const CBioseq_set_Handle &, CBioseq_set::TLevel, ECallMode)=0
virtual void ResetSeqInstSeq_data(const CBioseq_Handle &, ECallMode)=0
virtual void ResetSeqInst(const CBioseq_Handle &, ECallMode)=0
virtual void Attach(const CBioObjectId &old_id, const CSeq_entry_Handle &entry, const CBioseq_Handle &what, ECallMode)=0
virtual void RemoveId(const CBioseq_Handle &, const CSeq_id_Handle &, ECallMode)=0
virtual void ResetSeqInstHist(const CBioseq_Handle &, ECallMode)=0
virtual void SetSeqInstStrand(const CBioseq_Handle &handle, CSeq_inst::TStrand strand, ECallMode)=0
virtual void Attach(const CBioObjectId &old_id, const CSeq_entry_Handle &entry, const CBioseq_set_Handle &what, ECallMode)=0
virtual void Detach(const CSeq_entry_Handle &entry, const CBioseq_set_Handle &what, ECallMode)=0
virtual void SetSeqInstMol(const CBioseq_Handle &, CSeq_inst::TMol, ECallMode)=0
virtual void ResetDescr(const CBioseq_Handle &, ECallMode)=0
set< CSeq_id_Handle > TIds
Definition: edit_saver.hpp:146
virtual void SetSeqInstFuzz(const CBioseq_Handle &handle, const CSeq_inst::TFuzz &fuzz, ECallMode)=0
virtual void AddDesc(const CBioseq_set_Handle &, const CSeqdesc &, ECallMode)=0
virtual void Remove(const CSeq_annot_Handle &handle, const CSeq_graph &old_value, ECallMode)=0
virtual void RollbackTransaction()=0
Called when a transaction should be undone.
virtual void Replace(const CSeq_graph_Handle &handle, const CSeq_graph &old_value, ECallMode)=0
virtual void SetSeqInstTopology(const CBioseq_Handle &handle, CSeq_inst::TTopology topology, ECallMode)=0
virtual void ResetSeqInstExt(const CBioseq_Handle &, ECallMode)=0
virtual void SetBioseqSetId(const CBioseq_set_Handle &, const CBioseq_set::TId &, ECallMode)=0
virtual void Detach(const CSeq_entry_Handle &entry, const CBioseq_Handle &what, ECallMode)=0
virtual void SetBioseqSetClass(const CBioseq_set_Handle &, CBioseq_set::TClass, ECallMode)=0
virtual void ResetSeqInstTopology(const CBioseq_Handle &, ECallMode)=0
virtual void ResetSeqInstFuzz(const CBioseq_Handle &, ECallMode)=0
Definition: set.hpp:45
NCBI_DECLARE_INTERFACE_VERSION(objects::IEditSaver, "xeditsaver", 1, 0, 0)
char data[12]
Definition: iconv.c:80
@ eAutoUnload
Definition: ncbidll.hpp:144
virtual void SetDllNamePrefix(const string &prefix)
Set DLL file name prefix.
#define END_NCBI_SCOPE
End previously defined NCBI scope.
Definition: ncbistl.hpp:103
#define END_SCOPE(ns)
End the previously defined scope.
Definition: ncbistl.hpp:75
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
Definition: ncbistl.hpp:100
#define BEGIN_SCOPE(ns)
Define a new scope.
Definition: ncbistl.hpp:72
#define kEmptyStr
Definition: ncbistr.hpp:123
#define NCBI_XOBJMGR_EXPORT
Definition: ncbi_export.h:1307
ERepr
representation class
Definition: Seq_inst_.hpp:91
ETopology
topology of molecule
Definition: Seq_inst_.hpp:121
EMol
molecule class in living organism
Definition: Seq_inst_.hpp:108
EStrand
strandedness in living organism
Definition: Seq_inst_.hpp:133
TSeqPos TLength
Definition: Seq_inst_.hpp:147
Portable reference counted smart and weak pointers using CWeakRef, CRef, CObject and CObjectEx.
Plugin manager (using class factory paradigm).
Modified on Wed Apr 24 14:17:28 2024 by modify_doxy.py rev. 669887