67 trimmed_cb->
Assign(code_break);
96 trimmed_ext->Assign(trna_ext);
106 const bool set_partial =
true;
128 const bool set_partial =
true;
151 if (new_sf->
SetData().SetCdregion().IsSetCode_break()) {
153 list<CRef<CCode_break>>& code_breaks = new_sf->
SetData().SetCdregion().SetCode_break();
156 if (code_breaks.empty()) {
157 new_sf->
SetData().SetCdregion().ResetCode_break();
163 for (
auto code_break : code_breaks) {
164 const TSeqPos cb_to = code_break->GetLoc().GetTotalRange().GetTo();
171 for (
auto code_break : code_breaks) {
172 const TSeqPos cb_from = code_break->GetLoc().GetTotalRange().GetFrom();
173 if (cb_from < from) {
184 if (
rna.IsSetExt() &&
rna.GetExt().IsTRNA()) {
195 const bool not_partial =
false;
200 code_break.
SetLoc(*cb_loc);
205 const bool set_partial,
212 bool partial_start =
false;
213 bool partial_stop =
false;
219 const auto& current_range = loc_it.GetRange();
220 const auto current_from = current_range.GetFrom();
221 const auto current_to = current_range.GetTo();
224 current_seqid->
Assign(loc_it.GetSeq_id());
227 if ((current_to < from) ||
228 (current_from > to)) {
235 if (current_to < from) {
236 partial_start =
true;
238 if (current_from > to) {
244 if (current_from < from) {
251 partial_start =
true;
254 if (current_to > to) {
265 if (loc->
IsNull() || !set_partial) {
271 swap(partial_start, partial_stop);
292 if (trimmed_loc.
IsPnt()) {
296 if (trimmed_loc.
IsInt()) {
303 length += pSubInt->GetLength();
312 if (trimmed_loc.
IsMix()) {
314 for (
auto pSubLoc : trimmed_loc.
GetMix().
Get()) {
327 pTrimmedInt->SetInt().SetId().Assign(loc_it.
GetSeq_id());
328 pTrimmedInt->SetInt().SetFrom(from);
329 pTrimmedInt->SetInt().SetTo(to);
347 if (feat_from < from) {
349 return (from - feat_from);
358 return (feat_to - to);
407 if (new_frame == 1) {
410 if (new_frame == 2) {
440 if (from <= ac_from && to >= ac_to) {
444 if (from > ac_to || to < ac_from) {
449 const bool set_partial=
true;
User-defined methods of the data storage class.
User-defined methods of the data storage class.
@ eExtreme_Biological
5' and 3'
User-defined methods of the data storage class.
static CRef< CSeq_feat > Apply(const CSeq_feat &feat, const CRange< TSeqPos > &range)
static void x_TrimCodeBreak(TSeqPos from, TSeqPos to, CCode_break &cod_break)
static CCdregion::EFrame GetCdsFrame(const CSeq_feat &cds_feature, const CRange< TSeqPos > &range)
static TSeqPos x_GetStartOffset(const CSeq_feat &feat, TSeqPos from, TSeqPos to)
static TSeqPos x_GetFrame(const CCdregion &cdregion)
static CCdregion::EFrame x_GetNewFrame(TSeqPos offset, const CCdregion ®ion)
static void x_TrimTrnaExt(TSeqPos from, TSeqPos to, CTrna_ext &ext)
static void x_UpdateFrame(TSeqPos offset, CCdregion &cdregion)
static void x_TrimLocation(TSeqPos from, TSeqPos to, bool set_partial, CRef< CSeq_loc > &loc)
ESubtype GetSubtype(void) const
namespace ncbi::objects::
TSeqPos GetLength(void) const
Seq-loc iterator class – iterates all intervals from a seq-loc in the correct order.
Include a standard set of the NCBI C++ Toolkit most basic headers.
static TSeqPos s_GetTrimmedLength(const CSeq_loc &trimmed_loc)
unsigned int TSeqPos
Type for sequence locations and lengths.
void swap(NCBI_NS_NCBI::pair_base_member< T1, T2 > &pair1, NCBI_NS_NCBI::pair_base_member< T1, T2 > &pair2)
virtual void Assign(const CSerialObject &source, ESerialRecursionMode how=eRecursive)
Set object to copy of another one.
virtual void Assign(const CSerialObject &source, ESerialRecursionMode how=eRecursive)
Optimized implementation of CSerialObject::Assign, which is not so efficient.
bool IsPartialStart(ESeqLocExtremes ext) const
check start or stop of location for e_Lim fuzz
ENa_strand GetStrand(void) const
Get the location's strand.
virtual void Assign(const CSerialObject &source, ESerialRecursionMode how=eRecursive)
Override Assign() to incorporate cache invalidation.
TRange GetTotalRange(void) const
CRef< CSeq_loc > Subtract(const CSeq_loc &other, TOpFlags flags, ISynonymMapper *syn_mapper, ILengthGetter *len_getter) const
Subtract seq-loc from this, merge/sort resulting ranges depending on flags.
void SetPartialStart(bool val, ESeqLocExtremes ext)
set / remove e_Lim fuzz on start or stop (lt/gt - indicating partial interval)
CRef< CSeq_loc > Intersect(const CSeq_loc &other, TOpFlags flags, ISynonymMapper *syn_mapper) const
Find the intersection with the seq-loc, merge/sort resulting ranges depending on flags.
const CSeq_id & GetSeq_id(void) const
Get seq_id of the current location.
void SetPartialStop(bool val, ESeqLocExtremes ext)
bool IsPartialStop(ESeqLocExtremes ext) const
CRef< C > Ref(C *object)
Helper functions to get CRef<> and CConstRef<> objects.
bool IsNull(void) const THROWS_NONE
Check if pointer is null – same effect as Empty().
bool NotEmpty(void) const
TThisType IntersectionWith(const TThisType &r) const
#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.
TTo GetTo(void) const
Get the To member data.
TFrom GetFrom(void) const
Get the From member data.
const TAnticodon & GetAnticodon(void) const
Get the Anticodon member data.
bool IsSetAnticodon(void) const
location of anticodon Check if a value has been assigned to Anticodon data member.
void SetAnticodon(TAnticodon &value)
Assign a value to Anticodon data member.
void ResetAnticodon(void)
Reset Anticodon data member.
void SetLocation(TLocation &value)
Assign a value to Location data member.
bool IsCdregion(void) const
Check if variant Cdregion is selected.
const TLoc & GetLoc(void) const
Get the Loc member data.
void SetPartial(TPartial value)
Assign a value to Partial data member.
const TLocation & GetLocation(void) const
Get the Location member data.
void ResetLoc(void)
Reset Loc data member.
TFrame GetFrame(void) const
Get the Frame member data.
const TData & GetData(void) const
Get the Data member data.
void ResetFrame(void)
Reset Frame data member.
void SetData(TData &value)
Assign a value to Data data member.
const TCdregion & GetCdregion(void) const
Get the variant data.
void SetLoc(TLoc &value)
Assign a value to Loc data member.
void SetFrame(TFrame value)
Assign a value to Frame data member.
@ eFrame_not_set
not set, code uses one
@ eFrame_three
reading frame
bool IsMix(void) const
Check if variant Mix is selected.
bool IsEmpty(void) const
Check if variant Empty is selected.
const Tdata & Get(void) const
Get the member data.
bool IsPacked_pnt(void) const
Check if variant Packed_pnt is selected.
const Tdata & Get(void) const
Get the member data.
const TPacked_pnt & GetPacked_pnt(void) const
Get the variant data.
bool IsPacked_int(void) const
Check if variant Packed_int is selected.
const TPoints & GetPoints(void) const
Get the Points member data.
bool IsInt(void) const
Check if variant Int is selected.
const TInt & GetInt(void) const
Get the variant data.
bool IsNull(void) const
Check if variant Null is selected.
const TMix & GetMix(void) const
Get the variant data.
bool IsPnt(void) const
Check if variant Pnt is selected.
const TPacked_int & GetPacked_int(void) const
Get the variant data.
range(_Ty, _Ty) -> range< _Ty >
SOutsideRange(const CRange< TSeqPos > &range)
bool operator()(const CRef< CCode_break > &code_break)
CRange< TSeqPos > m_Range