1 #ifndef OBJECTS_OBJMGR_IMPL___EDIT_COMMNADS_IMPL__HPP
2 #define OBJECTS_OBJMGR_IMPL___EDIT_COMMNADS_IMPL__HPP
53 template<
typename CMD>
64 template<
typename CMD>
81 void*
operator new(size_t) =
delete;
82 void operator delete(
void*) =
delete;
91 template<
typename Handle>
94 const CTSE_Info& tse = handle.GetTSE_Handle().x_GetTSE_Info();
99 template<
typename T,
bool cref = false>
124 #define DEFINE_CREF_TYPE(T) \
125 template<> struct IsCRef<T> { enum { value = 1 }; }
127 template<
typename TEditHandle,
typename T>
135 static inline bool IsSet(
const TEditHandle& handle);
137 static inline void Set(
const TEditHandle& handle,
const TStorage& data);
138 static inline void Reset(
const TEditHandle& handle);
154 template<
typename TEditHandle>
161 template<
typename TEditHandle>
166 else TFunc::Reset(handle);
176 template<
typename THandle,
typename T>
194 template<
typename TEditHandle>
200 static inline bool IsSet(
const TEditHandle& handle)
201 {
return handle.IsSetDescr(); }
208 static inline void Reset(
const TEditHandle& handle)
209 { handle.x_RealResetDescr(); }
212 template<
typename Handle>
229 template<
typename TEditHandle,
typename T>
279 template<
typename TEditHandle,
typename T>
329 template<
typename TEditHandle>
374 template<
typename Handle>
388 template<
typename TEditHandle,
bool add = true>
394 {
return handle.x_RealAddSeqdesc(desc); }
395 static inline void Undo(
const TEditHandle& handle,
397 { handle.x_RealRemoveSeqdesc( desc ); }
399 const TEditHandle& handle,
404 const TEditHandle& handle,
409 template<
typename TEditHandle>
414 {
return handle.x_RealRemoveSeqdesc(desc); }
416 { handle.x_RealAddSeqdesc( desc ); }
418 const TEditHandle& handle,
422 const TEditHandle& handle,
429 template <
typename TEditHandle,
bool add>
473 template<
typename TEditHandle,
bool add>
482 template<
typename TEditHandle>
486 const TEditHandle& handle);
489 const TEditHandle& handle);
493 const TEditHandle& handle);
497 const TEditHandle& handle);
500 template<
typename TEditHandle>
static CRef< CScope > m_Scope
CAliasTypeInfoFunctions TFunc
virtual ~CAddDescr_EditCommand()
DBFunc< TEditHandle, CSeq_descr > TDBFunc
unique_ptr< TSeq_descr_Memeto > m_Memeto
CAddDescr_EditCommand(const TEditHandle &handle, CSeq_descr &descr)
virtual void Do(IScopeTransaction_Impl &tr)
CMemeto< CSeq_descr > TSeq_descr_Memeto
CRef< CSeq_descr > m_Descr
CRef< IScopeTransaction_Impl > m_Transaction
CCommandProcessor(const CCommandProcessor &)=delete
CMDReturn< CMD >::TReturn run(CMD *cmd)
CCommandProcessor & operator=(const CCommandProcessor &)=delete
virtual void Do(IScopeTransaction_Impl &tr)
DescEditAction< TEditHandle, add > TAction
virtual ~CDesc_EditCommand()
CDesc_EditCommand(const TEditHandle &handle, const CSeqdesc &desc)
TTrait::TConstRef TConstRef
MemetoTrait< T, IsCRef< T >::value > TTrait
TTrait::TStorage TStorage
CMemeto(const TEditHandle &handle)
void RestoreTo(const TEditHandle &handle)
CSeq_entry_EditHandle m_Entry
virtual void Do(IScopeTransaction_Impl &tr)
virtual ~CRemove_EditCommand()
RemoveAction< TEditHandle > TAction
CRemove_EditCommand(const TEditHandle &handle, CScope_Impl &scope)
unique_ptr< TMemeto > m_Memeto
virtual ~CResetValue_EditCommand()
CResetValue_EditCommand(const TEditHandle &handle)
MemetoFunctions< TEditHandle, T > TFunc
DBFunc< TEditHandle, T > TDBFunc
virtual void Do(IScopeTransaction_Impl &tr)
@Seq_descr.hpp User-defined methods of the data storage class.
unique_ptr< TMemeto > m_Memeto
virtual ~CSetValue_EditCommand()
TMemeto::TStorage TStorage
MemetoFunctions< TEditHandle, T > TFunc
DBFunc< TEditHandle, T > TDBFunc
CSetValue_EditCommand(const TEditHandle &handle, TRef value)
virtual void Do(IScopeTransaction_Impl &tr)
CRef< IEditSaver > GetEditSaver() const
Interface (functor) for object editing.
ECallMode
This flag can be used for optimization purpose.
@ eUndo
The method is called when a modification has just been undone.
@ eDo
The method is called when a modification has just been done.
virtual void SetDescr(const CBioseq_Handle &, const CSeq_descr &, ECallMode)=0
virtual void AddDesc(const CBioseq_Handle &, const CSeqdesc &, ECallMode)=0
virtual void RemoveDesc(const CBioseq_Handle &, const CSeqdesc &, ECallMode)=0
virtual void AddDescr(const CBioseq_Handle &, const CSeq_descr &, ECallMode)=0
Description operations.
virtual void ResetDescr(const CBioseq_Handle &, ECallMode)=0
virtual void AddCommand(TCommand)=0
virtual void AddEditSaver(IEditSaver *)=0
Include a standard set of the NCBI C++ Toolkit most basic headers.
#define DEFINE_CREF_TYPE(T)
IEditSaver * GetEditSaver(const Handle &handle)
const CBioObjectId & GetBioObjectId(void) const
Get unique object id.
TObjectType * GetPointer(void) THROWS_NONE
Get pointer,.
bool ReferencedOnlyOnce(void) const THROWS_NONE
Check if object is referenced only once.
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define END_SCOPE(ns)
End the previously defined scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
#define BEGIN_SCOPE(ns)
Define a new scope.
#define NCBI_XOBJMGR_EXPORT
const TYPE & Get(const CNamedParameterList *param)
Portable reference counted smart and weak pointers using CWeakRef, CRef, CObject and CObjectEx.
static TReturn GetRet(TCMD *cmd)
CDesc_EditCommand< TEditHandle, add > TCMD
static TReturn GetRet(CMD *)
static void Reset(IEditSaver &saver, const Handle &handle, IEditSaver::ECallMode mode)
static void Set(IEditSaver &saver, const Handle &handle, const CSeq_descr &data, IEditSaver::ECallMode mode)
static void Add(IEditSaver &saver, const Handle &handle, const CSeq_descr &data, IEditSaver::ECallMode mode)
static void Set(IEditSaver &, const THandle &, TConstRef, IEditSaver::ECallMode)
TTrait::TConstRef TConstRef
static void Reset(IEditSaver &, const THandle &, IEditSaver::ECallMode)
MemetoTrait< T, IsCRef< T >::value > TTrait
static void Add(IEditSaver &saver, const Handle &handle, const CSeqdesc &desc, IEditSaver::ECallMode mode)
static void Remove(IEditSaver &saver, const Handle &handle, const CSeqdesc &desc, IEditSaver::ECallMode mode)
static void UndoInDB(IEditSaver &saver, const TEditHandle &handle, const CSeqdesc &desc)
static void DoInDB(IEditSaver &saver, const TEditHandle &handle, const CSeqdesc &desc)
static void Undo(const TEditHandle &handle, CSeqdesc &desc)
static TReturn Do(const TEditHandle &handle, CSeqdesc &desc)
static void DoInDB(IEditSaver &saver, const TEditHandle &handle, const CSeqdesc &desc)
static void Undo(const TEditHandle &handle, CSeqdesc &desc)
static TReturn Do(const TEditHandle &handle, CSeqdesc &desc)
static void UndoInDB(IEditSaver &saver, const TEditHandle &handle, const CSeqdesc &desc)
static void Set(const TEditHandle &handle, TStorage &data)
static bool IsSet(const TEditHandle &handle)
static void Reset(const TEditHandle &handle)
MemetoTrait< CSeq_descr, IsCRef< CSeq_descr >::value > TTrait
TTrait::TStorage TStorage
static TStorage Get(const TEditHandle &handle)
static bool IsSet(const TEditHandle &handle)
TTrait::TConstRef TConstRef
static void Set(const TEditHandle &handle, const TStorage &data)
MemetoTrait< T, IsCRef< T >::value > TTrait
static void Reset(const TEditHandle &handle)
static TStorage Get(const TEditHandle &handle)
TTrait::TStorage TStorage
static TStorage Store(TRef t)
static TRef Restore(TStorage t)
static TRef Restore(TStorage t)
static TStorage Store(TRef t)
static void Do(CScope_Impl &scope, const CSeq_entry_EditHandle &entry, const TEditHandle &handle)
static void DoInDB(IEditSaver &saver, const CSeq_entry_EditHandle &entry, const TEditHandle &handle)
static void Undo(CScope_Impl &scope, const CSeq_entry_EditHandle &entry, const TEditHandle &handle)
static void UndoInDB(IEditSaver &saver, const CBioObjectId &old_id, const CSeq_entry_EditHandle &entry, const TEditHandle &handle)