208 if ( (*it)->GetStrand() )
return true;
211 if ( !(*it)->GetStrand() )
return false;
222 bool strand_set =
false;
225 if ((*it)->IsNull() || (*it)->IsEmpty()) {
230 const CSeq_id* iid = (*it)->GetId();
247 }
else if (!strand_set) {
250 }
else if (istrand != strand) {
278 if ( !other.
IsMix() ) {
281 Set().push_back(loc);
293 if ( !other.
IsMix() ) {
295 Set().push_back(loc);
312 pnt.
SetId().Assign(
id);
320 ival.
SetId().Assign(
id);
325 Set().push_back(loc);
332 (*it)->SetStrand(strand);
340 (*it)->ResetStrand();
ESeqLocExtremes
Used to determine the meaning of a location's Start/Stop positions.
@ eExtreme_Positional
numerical value
EIsSetStrand
Flag used by IsSetStrand() to switch between any/all modes.
@ eIsSetStrand_All
Check if all parts have strand.
@ eIsSetStrand_Any
Check if any part has strand.
bool IsReverseStrand(void) const
void SetPartialStart(bool val, ESeqLocExtremes ext)
void AddInterval(const CSeq_id &id, TSeqPos from, TSeqPos to, ENa_strand strand=eNa_strand_unknown)
const CSeq_loc * GetLastLoc(ENullSegType null_seg=eNullSegAllow) const
bool IsTruncatedStop(ESeqLocExtremes ext) const
CSeq_loc * SetStartLoc(ESeqLocExtremes ext, ENullSegType null_seg=eNullSegAllow)
const CSeq_loc * GetStopLoc(ESeqLocExtremes ext, ENullSegType null_seg=eNullSegAllow) const
void SetPartialStop(bool val, ESeqLocExtremes ext)
void ResetStrand(void)
Reset the strand to 'not set'.
bool IsSetStrand(EIsSetStrand flag=eIsSetStrand_Any) const
void SetTruncatedStart(bool val, ESeqLocExtremes ext)
set / remove e_Lim fuzz on start or stop (tl/tr - indicating removed parts of the seq-loc)
TSeqPos GetStop(ESeqLocExtremes ext) const
void AddSeqLoc(const CSeq_loc &other)
bool IsPartialStart(ESeqLocExtremes ext) const
CSeq_loc * SetStopLoc(ESeqLocExtremes ext, ENullSegType null_seg=eNullSegAllow)
ENa_strand GetStrand(void) const
CSeq_loc * SetLastLoc(ENullSegType null_seg=eNullSegAllow)
TSeqPos GetStart(ESeqLocExtremes ext) const
bool IsPartialStop(ESeqLocExtremes ext) const
void SetStrand(ENa_strand strand)
Set the strand for all of the location's ranges.
CSeq_loc * SetFirstLoc(ENullSegType null_seg=eNullSegAllow)
const CSeq_loc * GetStartLoc(ESeqLocExtremes ext, ENullSegType null_seg=eNullSegAllow) const
bool IsTruncatedStart(ESeqLocExtremes ext) const
check if parts of the seq-loc are missing
const CSeq_loc * GetFirstLoc(ENullSegType null_seg=eNullSegAllow) const
void FlipStrand(void)
Flip the strand (e.g. plus to minus)
void SetTruncatedStop(bool val, ESeqLocExtremes ext)
static vector< string > arr
unsigned int TSeqPos
Type for sequence locations and lengths.
#define ITERATE(Type, Var, Cont)
ITERATE macro to sequence through container elements.
#define NON_CONST_ITERATE(Type, Var, Cont)
Non constant version of ITERATE macro.
#define NON_CONST_REVERSE_ITERATE(Type, Var, Cont)
Non constant version of REVERSE_ITERATE macro.
const TSeqPos kInvalidSeqPos
Define special value for invalid sequence position.
#define REVERSE_ITERATE(Type, Var, Cont)
ITERATE macro to reverse sequence through container elements.
E_SIC Compare(const CSeq_id &sid2) const
Compare() - more general.
@ e_YES
SeqIds compared, but are different.
void SetTruncatedStart(bool val, ESeqLocExtremes ext)
set / remove e_Lim fuzz on start or stop (tl/tr - indicating removed parts of the seq-loc)
bool IsPartialStart(ESeqLocExtremes ext) const
check start or stop of location for e_Lim fuzz
virtual void Assign(const CSerialObject &source, ESerialRecursionMode how=eRecursive)
Override Assign() to incorporate cache invalidation.
TSeqPos GetStart(ESeqLocExtremes ext) const
Return start and stop positions of the seq-loc.
bool IsTruncatedStop(ESeqLocExtremes ext) const
bool IsTruncatedStart(ESeqLocExtremes ext) const
check if parts of the seq-loc are missing
void SetPartialStart(bool val, ESeqLocExtremes ext)
set / remove e_Lim fuzz on start or stop (lt/gt - indicating partial interval)
void SetPartialStop(bool val, ESeqLocExtremes ext)
bool IsPartialStop(ESeqLocExtremes ext) const
void SetTruncatedStop(bool val, ESeqLocExtremes ext)
TSeqPos GetStop(ESeqLocExtremes ext) const
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
void SetTo(TTo value)
Assign a value to To data member.
void SetPoint(TPoint value)
Assign a value to Point data member.
void SetId(TId &value)
Assign a value to Id data member.
bool IsMix(void) const
Check if variant Mix is selected.
ENa_strand
strand of nucleic acid
void SetId(TId &value)
Assign a value to Id data member.
void SetStrand(TStrand value)
Assign a value to Strand data member.
list< CRef< CSeq_loc > > Tdata
void SetFrom(TFrom value)
Assign a value to From data member.
const Tdata & Get(void) const
Get the member data.
Tdata & Set(void)
Assign a value to data member.
bool IsNull(void) const
Check if variant Null is selected.
void SetStrand(TStrand value)
Assign a value to Strand data member.
const TMix & GetMix(void) const
Get the variant data.
constexpr bool empty(list< Ts... >) noexcept