1 /* $Id: bioseq_set_handle.cpp 576286 2018-12-12 19:07:08Z vasilche $
2 * ===========================================================================
3 *
4 * PUBLIC DOMAIN NOTICE
5 * National Center for Biotechnology Information
6 *
7 * This software/database is a "United States Government Work" under the
8 * terms of the United States Copyright Act. It was written as part of
9 * the author's official duties as a United States Government employee and
10 * thus cannot be copyrighted. This software/database is freely available
11 * to the public for use. The National Library of Medicine and the U.S.
12 * Government have not placed any restriction on its use or reproduction.
13 *
14 * Although all reasonable efforts have been taken to ensure the accuracy
15 * and reliability of the software and data, the NLM and the U.S.
16 * Government do not and cannot warrant the performance or results that
17 * may be obtained by using this software or data. The NLM and the U.S.
18 * Government disclaim all warranties, express or implied, including
19 * warranties of performance, merchantability or fitness for any particular
20 * purpose.
21 *
22 * Please cite the author in any work or product based on this material.
23 *
24 * ===========================================================================
25 *
26 * Author: Aleksey Grichenko, Eugene Vasilchenko
27 *
28 * File Description:
29 * Handle to Seq-entry object
30 *
31 */
32
33 #include <ncbi_pch.hpp>
34 #include <objmgr/bioseq_set_handle.hpp>
35
36 #include <objmgr/scope.hpp>
37 #include <objmgr/bio_object_id.hpp>
38
39 #include <objmgr/impl/scope_impl.hpp>
40 #include <objmgr/impl/bioseq_set_info.hpp>
41 #include <objmgr/impl/tse_info.hpp>
42
43 #include <objmgr/impl/bioseq_set_edit_commands.hpp>
44
45 #include <objects/seqset/Bioseq_set.hpp>
46 #include <objects/seqset/Seq_entry.hpp>
47 #include <objects/seq/Seqdesc.hpp>
48
49 BEGIN_NCBI_SCOPE
BEGIN_SCOPE(objects)50 BEGIN_SCOPE(objects)
51
52
53 CBioseq_set_Handle::CBioseq_set_Handle(const CBioseq_set_Info& info,
54 const CTSE_Handle& tse)
55 : m_Info(tse.x_GetScopeInfo().GetScopeLock(tse, info))
56 {
57 }
58
59
CBioseq_set_Handle(const TLock & lock)60 CBioseq_set_Handle::CBioseq_set_Handle(const TLock& lock)
61 : m_Info(lock)
62 {
63 }
64
65
Reset(void)66 void CBioseq_set_Handle::Reset(void)
67 {
68 m_Info.Reset();
69 }
70
71
x_GetInfo(void) const72 const CBioseq_set_Info& CBioseq_set_Handle::x_GetInfo(void) const
73 {
74 return m_Info->GetObjectInfo();
75 }
76
77
GetCompleteBioseq_set(void) const78 CConstRef<CBioseq_set> CBioseq_set_Handle::GetCompleteBioseq_set(void) const
79 {
80 return x_GetInfo().GetCompleteBioseq_set();
81 }
82
83
GetBioseq_setCore(void) const84 CConstRef<CBioseq_set> CBioseq_set_Handle::GetBioseq_setCore(void) const
85 {
86 return x_GetInfo().GetBioseq_setCore();
87 }
88
89
IsEmptySeq_set(void) const90 bool CBioseq_set_Handle::IsEmptySeq_set(void) const
91 {
92 return x_GetInfo().IsEmptySeq_set();
93 }
94
GetBioObjectId(void) const95 const CBioObjectId& CBioseq_set_Handle::GetBioObjectId(void) const
96 {
97 return x_GetInfo().GetBioObjectId();
98 }
99
GetParentEntry(void) const100 CSeq_entry_Handle CBioseq_set_Handle::GetParentEntry(void) const
101 {
102 CSeq_entry_Handle ret;
103 const CBioseq_set_Info& info = x_GetInfo();
104 if ( info.HasParent_Info() ) {
105 ret = CSeq_entry_Handle(info.GetParentSeq_entry_Info(),
106 GetTSE_Handle());
107 }
108 return ret;
109 }
110
111
GetParentBioseq_set(void) const112 CBioseq_set_Handle CBioseq_set_Handle::GetParentBioseq_set(void) const
113 {
114 CBioseq_set_Handle ret;
115 const CBioseq_set_Info& info = x_GetInfo();
116 if ( info.HasParent_Info() ) {
117 const CSeq_entry_Info& entry = info.GetParentSeq_entry_Info();
118 if ( entry.HasParent_Info() ) {
119 ret = CBioseq_set_Handle(entry.GetParentBioseq_set_Info(),
120 GetTSE_Handle());
121 }
122 }
123 return ret;
124 }
125
126
GetTopLevelEntry(void) const127 CSeq_entry_Handle CBioseq_set_Handle::GetTopLevelEntry(void) const
128 {
129 return GetTSE_Handle();
130 }
131
132
GetEditHandle(void) const133 CBioseq_set_EditHandle CBioseq_set_Handle::GetEditHandle(void) const
134 {
135 return GetScope().GetEditHandle(*this);
136 }
137
138
IsSetId(void) const139 bool CBioseq_set_Handle::IsSetId(void) const
140 {
141 return x_GetInfo().IsSetId();
142 }
143
144
CanGetId(void) const145 bool CBioseq_set_Handle::CanGetId(void) const
146 {
147 return *this && x_GetInfo().CanGetId();
148 }
149
150
GetId(void) const151 const CBioseq_set::TId& CBioseq_set_Handle::GetId(void) const
152 {
153 return x_GetInfo().GetId();
154 }
155
156
IsSetColl(void) const157 bool CBioseq_set_Handle::IsSetColl(void) const
158 {
159 return x_GetInfo().IsSetColl();
160 }
161
162
CanGetColl(void) const163 bool CBioseq_set_Handle::CanGetColl(void) const
164 {
165 return *this && x_GetInfo().CanGetColl();
166 }
167
168
GetColl(void) const169 const CBioseq_set::TColl& CBioseq_set_Handle::GetColl(void) const
170 {
171 return x_GetInfo().GetColl();
172 }
173
174
IsSetLevel(void) const175 bool CBioseq_set_Handle::IsSetLevel(void) const
176 {
177 return x_GetInfo().IsSetLevel();
178 }
179
180
CanGetLevel(void) const181 bool CBioseq_set_Handle::CanGetLevel(void) const
182 {
183 return *this && x_GetInfo().CanGetLevel();
184 }
185
186
GetLevel(void) const187 CBioseq_set::TLevel CBioseq_set_Handle::GetLevel(void) const
188 {
189 return x_GetInfo().GetLevel();
190 }
191
192
IsSetClass(void) const193 bool CBioseq_set_Handle::IsSetClass(void) const
194 {
195 return x_GetInfo().IsSetClass();
196 }
197
198
CanGetClass(void) const199 bool CBioseq_set_Handle::CanGetClass(void) const
200 {
201 return *this && x_GetInfo().CanGetClass();
202 }
203
204
GetClass(void) const205 CBioseq_set::TClass CBioseq_set_Handle::GetClass(void) const
206 {
207 return x_GetInfo().GetClass();
208 }
209
210
IsSetRelease(void) const211 bool CBioseq_set_Handle::IsSetRelease(void) const
212 {
213 return x_GetInfo().IsSetRelease();
214 }
215
216
CanGetRelease(void) const217 bool CBioseq_set_Handle::CanGetRelease(void) const
218 {
219 return *this && x_GetInfo().CanGetRelease();
220 }
221
222
GetRelease(void) const223 const CBioseq_set::TRelease& CBioseq_set_Handle::GetRelease(void) const
224 {
225 return x_GetInfo().GetRelease();
226 }
227
228
IsSetDate(void) const229 bool CBioseq_set_Handle::IsSetDate(void) const
230 {
231 return x_GetInfo().IsSetDate();
232 }
233
234
CanGetDate(void) const235 bool CBioseq_set_Handle::CanGetDate(void) const
236 {
237 return *this && x_GetInfo().CanGetDate();
238 }
239
240
GetDate(void) const241 const CBioseq_set::TDate& CBioseq_set_Handle::GetDate(void) const
242 {
243 return x_GetInfo().GetDate();
244 }
245
246
IsSetDescr(void) const247 bool CBioseq_set_Handle::IsSetDescr(void) const
248 {
249 return x_GetInfo().IsSetDescr();
250 }
251
252
CanGetDescr(void) const253 bool CBioseq_set_Handle::CanGetDescr(void) const
254 {
255 return *this && x_GetInfo().CanGetDescr();
256 }
257
258
GetDescr(void) const259 const CBioseq_set::TDescr& CBioseq_set_Handle::GetDescr(void) const
260 {
261 return x_GetInfo().GetDescr();
262 }
263
264
HasAnnots(void) const265 bool CBioseq_set_Handle::HasAnnots(void) const
266 {
267 return x_GetInfo().HasAnnots();
268 }
269
270
271 CBioseq_set_Handle::TComplexityTable
272 CBioseq_set_Handle::sm_ComplexityTable = {
273 0, // not-set (0)
274 3, // nuc-prot (1)
275 2, // segset (2)
276 2, // conset (3)
277 1, // parts (4)
278 1, // gibb (5)
279 1, // gi (6)
280 5, // genbank (7)
281 3, // pir (8)
282 4, // pub-set (9)
283 4, // equiv (10)
284 3, // swissprot (11)
285 3, // pdb-entry (12)
286 4, // mut-set (13)
287 4, // pop-set (14)
288 4, // phy-set (15)
289 4, // eco-set (16)
290 4, // gen-prod-set (17)
291 4, // wgs-set (18)
292 4, // named-annot (19)
293 4, // named-annot-prod (20)
294 4, // read-set (21)
295 4, // paired-end-reads (22)
296 4, // small-genome-set (23)
297 0, // other (255 - processed separately)
298 };
299
300
301 const CBioseq_set_Handle::TComplexityTable&
sx_GetComplexityTable(void)302 CBioseq_set_Handle::sx_GetComplexityTable(void)
303 {
304 return sm_ComplexityTable;
305 }
306
307
308 CSeq_entry_Handle
GetComplexityLevel(CBioseq_set::EClass cls) const309 CBioseq_set_Handle::GetComplexityLevel(CBioseq_set::EClass cls) const
310 {
311 const TComplexityTable& ctab = sx_GetComplexityTable();
312 if (cls == CBioseq_set::eClass_other) {
313 // adjust 255 to the correct value
314 cls = CBioseq_set::EClass(sizeof(ctab) - 1);
315 }
316 CSeq_entry_Handle e = GetParentEntry();
317 CSeq_entry_Handle last = e;
318 _ASSERT(e && e.IsSet());
319 while ( e ) {
320 _ASSERT(e.IsSet());
321 // Found good level
322 if (ctab[e.GetSet().GetClass()] == ctab[cls]) {
323 last = e;
324 break;
325 }
326 // Gone too high
327 if ( ctab[e.GetSet().GetClass()] > ctab[cls] ) {
328 break;
329 }
330 // Go up one level
331 last = e;
332 e = e.GetParentEntry();
333 }
334 return last;
335 }
336
337
338 CSeq_entry_Handle
GetExactComplexityLevel(CBioseq_set::EClass cls) const339 CBioseq_set_Handle::GetExactComplexityLevel(CBioseq_set::EClass cls) const
340 {
341 CSeq_entry_Handle ret = GetComplexityLevel(cls);
342 if ( ret &&
343 (!ret.GetSet().IsSetClass() ||
344 ret.GetSet().GetClass() != cls) ) {
345 ret.Reset();
346 }
347 return ret;
348 }
349
GetSeq_entry_Index(const CSeq_entry_Handle & entry) const350 int CBioseq_set_Handle::GetSeq_entry_Index(const CSeq_entry_Handle& entry) const
351 {
352 return x_GetInfo().GetEntryIndex(entry.x_GetInfo());
353 }
354
355 /////////////////////////////////////////////////////////////////////////////
356 // CBioseq_set_EditHandle
357
CBioseq_set_EditHandle(const CBioseq_set_Handle & h)358 CBioseq_set_EditHandle::CBioseq_set_EditHandle(const CBioseq_set_Handle& h)
359 : CBioseq_set_Handle(h)
360 {
361 if ( !h.GetTSE_Handle().CanBeEdited() ) {
362 NCBI_THROW(CObjMgrException, eInvalidHandle,
363 "object is not in editing mode");
364 }
365 }
366
367
CBioseq_set_EditHandle(CBioseq_set_Info & info,const CTSE_Handle & tse)368 CBioseq_set_EditHandle::CBioseq_set_EditHandle(CBioseq_set_Info& info,
369 const CTSE_Handle& tse)
370 : CBioseq_set_Handle(info, tse)
371 {
372 }
373
374
GetParentEntry(void) const375 CSeq_entry_EditHandle CBioseq_set_EditHandle::GetParentEntry(void) const
376 {
377 CSeq_entry_EditHandle ret;
378 CBioseq_set_Info& info = x_GetInfo();
379 if ( info.HasParent_Info() ) {
380 ret = CSeq_entry_EditHandle(info.GetParentSeq_entry_Info(),
381 GetTSE_Handle());
382 }
383 return ret;
384 }
385
386
x_GetInfo(void) const387 CBioseq_set_Info& CBioseq_set_EditHandle::x_GetInfo(void) const
388 {
389 return const_cast<CBioseq_set_Info&>(CBioseq_set_Handle::x_GetInfo());
390 }
391
392
ResetId(void) const393 void CBioseq_set_EditHandle::ResetId(void) const
394 {
395 typedef CReset_BioseqSetId_EditCommand TCommand;
396 CCommandProcessor processor(x_GetScopeImpl());
397 processor.run(new TCommand(*this));
398 //x_GetInfo().ResetId();
399 }
400
401
SetId(TId & v) const402 void CBioseq_set_EditHandle::SetId(TId& v) const
403 {
404 typedef CSet_BioseqSetId_EditCommand TCommand;
405 CCommandProcessor processor(x_GetScopeImpl());
406 processor.run(new TCommand(*this,v));
407 // x_GetInfo().SetId(v);
408 }
409
410
ResetColl(void) const411 void CBioseq_set_EditHandle::ResetColl(void) const
412 {
413 typedef CReset_BioseqSetColl_EditCommand TCommand;
414 CCommandProcessor processor(x_GetScopeImpl());
415 processor.run(new TCommand(*this));
416 //x_GetInfo().ResetColl();
417 }
418
419
SetColl(TColl & v) const420 void CBioseq_set_EditHandle::SetColl(TColl& v) const
421 {
422 typedef CSet_BioseqSetColl_EditCommand TCommand;
423 CCommandProcessor processor(x_GetScopeImpl());
424 processor.run(new TCommand(*this, v));
425 //x_GetInfo().SetColl(v);
426 }
427
428
ResetLevel(void) const429 void CBioseq_set_EditHandle::ResetLevel(void) const
430 {
431 typedef CReset_BioseqSetLevel_EditCommand TCommand;
432 CCommandProcessor processor(x_GetScopeImpl());
433 processor.run(new TCommand(*this));
434 // x_GetInfo().ResetLevel();
435 }
436
437
SetLevel(TLevel v) const438 void CBioseq_set_EditHandle::SetLevel(TLevel v) const
439 {
440 typedef CSet_BioseqSetLevel_EditCommand TCommand;
441 CCommandProcessor processor(x_GetScopeImpl());
442 processor.run(new TCommand(*this, v));
443 //x_GetInfo().SetLevel(v);
444 }
445
446
ResetClass(void) const447 void CBioseq_set_EditHandle::ResetClass(void) const
448 {
449 typedef CReset_BioseqSetClass_EditCommand TCommand;
450 CCommandProcessor processor(x_GetScopeImpl());
451 processor.run(new TCommand(*this));
452 //x_GetInfo().ResetClass();
453 }
454
455
SetClass(TClass v) const456 void CBioseq_set_EditHandle::SetClass(TClass v) const
457 {
458 typedef CSet_BioseqSetClass_EditCommand TCommand;
459 CCommandProcessor processor(x_GetScopeImpl());
460 processor.run(new TCommand(*this, v));
461 //x_GetInfo().SetClass(v);
462 }
463
464
ResetRelease(void) const465 void CBioseq_set_EditHandle::ResetRelease(void) const
466 {
467 typedef CReset_BioseqSetRelease_EditCommand TCommand;
468 CCommandProcessor processor(x_GetScopeImpl());
469 processor.run(new TCommand(*this));
470 // x_GetInfo().ResetRelease();
471 }
472
473
SetRelease(TRelease & v) const474 void CBioseq_set_EditHandle::SetRelease(TRelease& v) const
475 {
476 typedef CSet_BioseqSetRelease_EditCommand TCommand;
477 CCommandProcessor processor(x_GetScopeImpl());
478 processor.run(new TCommand(*this, v));
479 // x_GetInfo().SetRelease(v);
480 }
481
482
ResetDate(void) const483 void CBioseq_set_EditHandle::ResetDate(void) const
484 {
485 typedef CReset_BioseqSetDate_EditCommand TCommand;
486 CCommandProcessor processor(x_GetScopeImpl());
487 processor.run(new TCommand(*this));
488 //x_GetInfo().ResetDate();
489 }
490
491
SetDate(TDate & v) const492 void CBioseq_set_EditHandle::SetDate(TDate& v) const
493 {
494 typedef CSet_BioseqSetDate_EditCommand TCommand;
495 CCommandProcessor processor(x_GetScopeImpl());
496 processor.run(new TCommand(*this,v));
497 // x_GetInfo().SetDate(v);
498 }
499
500
ResetDescr(void) const501 void CBioseq_set_EditHandle::ResetDescr(void) const
502 {
503 typedef CResetValue_EditCommand<CBioseq_set_EditHandle,TDescr> TCommand;
504 CCommandProcessor processor(x_GetScopeImpl());
505 processor.run(new TCommand(*this));
506 // x_GetInfo().ResetDescr();
507 }
508
509
SetDescr(TDescr & v) const510 void CBioseq_set_EditHandle::SetDescr(TDescr& v) const
511 {
512 typedef CSetValue_EditCommand<CBioseq_set_EditHandle,TDescr> TCommand;
513 CCommandProcessor processor(x_GetScopeImpl());
514 processor.run(new TCommand(*this,v));
515 // x_GetInfo().SetDescr(v);
516 }
517
518
SetDescr(void) const519 CBioseq_set_EditHandle::TDescr& CBioseq_set_EditHandle::SetDescr(void) const
520 {
521 if (x_GetScopeImpl().IsTransactionActive()
522 || GetTSE_Handle().x_GetTSE_Info().GetEditSaver() ) {
523 NCBI_THROW(CObjMgrException, eTransaction,
524 "TDescr& CBioseq_set_EditHandle::SetDescr(): "
525 "method can not be called if a transaction is required");
526 }
527 return x_GetInfo().SetDescr();
528 }
529
530
AddSeqdesc(CSeqdesc & d) const531 bool CBioseq_set_EditHandle::AddSeqdesc(CSeqdesc& d) const
532 {
533 typedef CDesc_EditCommand<CBioseq_set_EditHandle,true> TCommand;
534 CCommandProcessor processor(x_GetScopeImpl());
535 return processor.run(new TCommand(*this, d));
536 // return x_GetInfo().AddSeqdesc(d);
537 }
538
539
RemoveSeqdesc(const CSeqdesc & d) const540 CRef<CSeqdesc> CBioseq_set_EditHandle::RemoveSeqdesc(const CSeqdesc& d) const
541 {
542 typedef CDesc_EditCommand<CBioseq_set_EditHandle,false> TCommand;
543 CCommandProcessor processor(x_GetScopeImpl());
544 return processor.run(new TCommand(*this, d));
545 //return x_GetInfo().RemoveSeqdesc(d);
546 }
547
548
ReplaceSeqdesc(const CSeqdesc & old_desc,CSeqdesc & new_desc) const549 CRef<CSeqdesc> CBioseq_set_EditHandle::ReplaceSeqdesc(const CSeqdesc& old_desc, CSeqdesc& new_desc) const
550 {
551 return x_RealReplaceSeqdesc(old_desc, new_desc);
552 }
553
554
AddSeq_descr(TDescr & v) const555 void CBioseq_set_EditHandle::AddSeq_descr(TDescr& v) const
556 {
557 typedef CAddDescr_EditCommand<CBioseq_set_EditHandle> TCommand;
558 CCommandProcessor processor(x_GetScopeImpl());
559 processor.run(new TCommand(*this, v));
560 // x_GetInfo().AddSeq_descr(v);
561 }
562
563
AddNewEntry(int index) const564 CSeq_entry_EditHandle CBioseq_set_EditHandle::AddNewEntry(int index) const
565 {
566 return AttachEntry(*new CSeq_entry, index);
567 }
568
569
570 CBioseq_EditHandle
AttachBioseq(CBioseq & seq,int index) const571 CBioseq_set_EditHandle::AttachBioseq(CBioseq& seq, int index) const
572 {
573 CRef<IScopeTransaction_Impl> tr(x_GetScopeImpl().CreateTransaction());
574 CBioseq_EditHandle ret = AddNewEntry(index).SelectSeq(seq);
575 tr->Commit();
576 return ret;
577 }
578
579
580 CBioseq_EditHandle
CopyBioseq(const CBioseq_Handle & seq,int index) const581 CBioseq_set_EditHandle::CopyBioseq(const CBioseq_Handle& seq,
582 int index) const
583 {
584 CRef<IScopeTransaction_Impl> tr(x_GetScopeImpl().CreateTransaction());
585 CBioseq_EditHandle ret = AddNewEntry(index).CopySeq(seq);
586 tr->Commit();
587 return ret;
588 }
589
590
591 CBioseq_EditHandle
TakeBioseq(const CBioseq_EditHandle & seq,int index) const592 CBioseq_set_EditHandle::TakeBioseq(const CBioseq_EditHandle& seq,
593 int index) const
594 {
595 CRef<IScopeTransaction_Impl> tr(x_GetScopeImpl().CreateTransaction());
596 CBioseq_EditHandle ret = AddNewEntry(index).TakeSeq(seq);
597 tr->Commit();
598 return ret;
599 }
600
601
602 CSeq_entry_EditHandle
AttachEntry(CSeq_entry & entry,int index) const603 CBioseq_set_EditHandle::AttachEntry(CSeq_entry& entry, int index) const
604 {
605 return AttachEntry(Ref(new CSeq_entry_Info(entry)), index);
606 // return x_GetScopeImpl().AttachEntry(*this, entry, index);
607 }
608
609 CSeq_entry_EditHandle
AttachEntry(CRef<CSeq_entry_Info> entry,int index) const610 CBioseq_set_EditHandle::AttachEntry(CRef<CSeq_entry_Info> entry, int index) const
611 {
612 typedef CAttachEntry_EditCommand<CRef<CSeq_entry_Info> > TCommand;
613 CCommandProcessor processor(x_GetScopeImpl());
614 return processor.run(new TCommand(*this, entry, index, x_GetScopeImpl()));
615 }
616
617
618 CSeq_entry_EditHandle
CopyEntry(const CSeq_entry_Handle & entry,int index) const619 CBioseq_set_EditHandle::CopyEntry(const CSeq_entry_Handle& entry,
620 int index) const
621 {
622 return AttachEntry(Ref(new CSeq_entry_Info(entry.x_GetInfo(), 0)),
623 index);
624 //return x_GetScopeImpl().CopyEntry(*this, entry, index);
625 }
626
627
628 CSeq_entry_EditHandle
TakeEntry(const CSeq_entry_EditHandle & entry,int index) const629 CBioseq_set_EditHandle::TakeEntry(const CSeq_entry_EditHandle& entry,
630 int index) const
631 {
632 CRef<IScopeTransaction_Impl> tr(x_GetScopeImpl().CreateTransaction());
633 entry.Remove();
634 CSeq_entry_EditHandle handle = AttachEntry(entry, index);
635 tr->Commit();
636 return handle;
637 //return x_GetScopeImpl().TakeEntry(*this, entry, index);
638 }
639
640
641 CSeq_entry_EditHandle
AttachEntry(const CSeq_entry_EditHandle & entry,int index) const642 CBioseq_set_EditHandle::AttachEntry(const CSeq_entry_EditHandle& entry,
643 int index) const
644 {
645 typedef CAttachEntry_EditCommand<CSeq_entry_EditHandle> TCommand;
646 CCommandProcessor processor(x_GetScopeImpl());
647 return processor.run(new TCommand(*this, entry, index, x_GetScopeImpl()));
648 // return x_GetScopeImpl().AttachEntry(*this, entry, index);
649 }
650
651
652 CSeq_annot_EditHandle
AttachAnnot(CSeq_annot & annot) const653 CBioseq_set_EditHandle::AttachAnnot(CSeq_annot& annot) const
654 {
655 return GetParentEntry().AttachAnnot(annot);
656 }
657
658
659 CSeq_annot_EditHandle
CopyAnnot(const CSeq_annot_Handle & annot) const660 CBioseq_set_EditHandle::CopyAnnot(const CSeq_annot_Handle& annot) const
661 {
662 return GetParentEntry().CopyAnnot(annot);
663 }
664
665
666 CSeq_annot_EditHandle
TakeAnnot(const CSeq_annot_EditHandle & annot) const667 CBioseq_set_EditHandle::TakeAnnot(const CSeq_annot_EditHandle& annot) const
668 {
669 return GetParentEntry().TakeAnnot(annot);
670 }
671
672
Remove(CBioseq_set_EditHandle::ERemoveMode mode) const673 void CBioseq_set_EditHandle::Remove(CBioseq_set_EditHandle::ERemoveMode mode) const
674 {
675 if (mode == eKeepSeq_entry)
676 x_Detach();
677 else {
678 CRef<IScopeTransaction_Impl> tr(x_GetScopeImpl().CreateTransaction());
679 CSeq_entry_EditHandle parent = GetParentEntry();
680 x_Detach();
681 parent.Remove();
682 tr->Commit();
683 }
684 }
x_Detach(void) const685 void CBioseq_set_EditHandle::x_Detach(void) const
686 {
687 typedef CRemoveBioseq_set_EditCommand TCommand;
688 CCommandProcessor processor(x_GetScopeImpl());
689 processor.run(new TCommand(*this, x_GetScopeImpl()));
690 // x_GetScopeImpl().RemoveBioseq_set(*this);
691 }
692
693 //////////////////////////////////////////////////////////////////////////
x_RealResetDescr(void) const694 void CBioseq_set_EditHandle::x_RealResetDescr(void) const
695 {
696 x_GetInfo().ResetDescr();
697 }
698
699
x_RealSetDescr(TDescr & v) const700 void CBioseq_set_EditHandle::x_RealSetDescr(TDescr& v) const
701 {
702 x_GetInfo().SetDescr(v);
703 }
704
x_RealAddSeqdesc(CSeqdesc & d) const705 bool CBioseq_set_EditHandle::x_RealAddSeqdesc(CSeqdesc& d) const
706 {
707 return x_GetInfo().AddSeqdesc(d);
708 }
709
710
x_RealRemoveSeqdesc(const CSeqdesc & d) const711 CRef<CSeqdesc> CBioseq_set_EditHandle::x_RealRemoveSeqdesc(const CSeqdesc& d) const
712 {
713 return x_GetInfo().RemoveSeqdesc(d);
714 }
715
716
x_RealReplaceSeqdesc(const CSeqdesc & old_desc,CSeqdesc & new_desc) const717 CRef<CSeqdesc> CBioseq_set_EditHandle::x_RealReplaceSeqdesc(const CSeqdesc& old_desc, CSeqdesc& new_desc) const
718 {
719 return x_GetInfo().ReplaceSeqdesc(old_desc, new_desc);
720 }
721
722
x_RealAddSeq_descr(TDescr & v) const723 void CBioseq_set_EditHandle::x_RealAddSeq_descr(TDescr& v) const
724 {
725 x_GetInfo().AddSeq_descr(v);
726 }
727
x_RealResetId(void) const728 void CBioseq_set_EditHandle::x_RealResetId(void) const
729 {
730 x_GetInfo().ResetId();
731 }
732
733
x_RealSetId(TId & v) const734 void CBioseq_set_EditHandle::x_RealSetId(TId& v) const
735 {
736 x_GetInfo().SetId(v);
737 }
738
739
x_RealResetColl(void) const740 void CBioseq_set_EditHandle::x_RealResetColl(void) const
741 {
742 x_GetInfo().ResetColl();
743 }
744
745
x_RealSetColl(TColl & v) const746 void CBioseq_set_EditHandle::x_RealSetColl(TColl& v) const
747 {
748 x_GetInfo().SetColl(v);
749 }
750
751
x_RealResetLevel(void) const752 void CBioseq_set_EditHandle::x_RealResetLevel(void) const
753 {
754 x_GetInfo().ResetLevel();
755 }
756
757
x_RealSetLevel(TLevel v) const758 void CBioseq_set_EditHandle::x_RealSetLevel(TLevel v) const
759 {
760 x_GetInfo().SetLevel(v);
761 }
762
763
x_RealResetClass(void) const764 void CBioseq_set_EditHandle::x_RealResetClass(void) const
765 {
766 x_GetInfo().ResetClass();
767 }
768
769
x_RealSetClass(TClass v) const770 void CBioseq_set_EditHandle::x_RealSetClass(TClass v) const
771 {
772 x_GetInfo().SetClass(v);
773 }
774
775
x_RealResetRelease(void) const776 void CBioseq_set_EditHandle::x_RealResetRelease(void) const
777 {
778 x_GetInfo().ResetRelease();
779 }
780
781
x_RealSetRelease(TRelease & v) const782 void CBioseq_set_EditHandle::x_RealSetRelease(TRelease& v) const
783 {
784 x_GetInfo().SetRelease(v);
785 }
786
787
x_RealResetDate(void) const788 void CBioseq_set_EditHandle::x_RealResetDate(void) const
789 {
790 x_GetInfo().ResetDate();
791 }
792
793
x_RealSetDate(TDate & v) const794 void CBioseq_set_EditHandle::x_RealSetDate(TDate& v) const
795 {
796 x_GetInfo().SetDate(v);
797 }
798
799
800 END_SCOPE(objects)
801 END_NCBI_SCOPE
802