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

Go to the SVN repository for this file.

1 /* $Id: SeqFeatData.hpp 96717 2022-05-02 18:33:51Z ludwigf $
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: .......
27  *
28  * File Description:
29  * .......
30  *
31  * Remark:
32  * This code was originally generated by application DATATOOL
33  * using specifications from the ASN data definition file
34  * 'seqfeat.asn'.
35  *
36  * NOTE TO DEVELOPERS:
37  * The Seq-feat structure in 'seqfeat.asn' is subtyped into various
38  * more specialized structures by the content of the Seqfeat::data
39  * item. Depending on what is in the data item, other fields in
40  * Seq-feat (the ones marked optional in the ASN) are allowed or
41  * prohibited from being present. This file lists the possible
42  * subtypes of Seq-feat, along with the qualifiers that can occur
43  * within the Seq-feat structure.
44  *
45  * WHEN EDITING THE LIST OF QUALIFIERS (i.e. the EQualifier enum):
46  * - add or remove the qualifier to the various lists that define which
47  * qualifiers are legal for a given subtype
48  * (in src/objects/seqfeat/SeqFeatData.cpp),
49  * - add or remove the qualifier to the list of qualifiers known by the
50  * flatfile generator
51  * (in include/objtools/format/items/flat_qual_slots.hpp),
52  * - add or remove processing code in the flat-file generator
53  * (src/objtools/format/feature_item.cpp). This may well necessitate
54  * the addition or removal of a class that knows how to format the
55  * new qualifier for display; look at the code for a similar
56  * established qualifier for an idea of what needs to be done
57  * (check WHEN EDITING THE LIST OF QUALIFIERS comment in that file
58  * for additional hints),
59  * - add or remove the qualifier to the list of qualifiers known to
60  * the feature table reader (in src/objtools/readers/readfeat.cpp);
61  * it's an independent project with its own book-keeping concerning
62  * qualifiers, but needs to be kept in sync,
63  * - make sure corresponding code gets added to the validator
64  * (in src/objtools/validator/...) which is another project with an
65  * independent qualifier list that nonetheless needs to stay in sync,
66  * - (additional subitems to be added as I become aware of them).
67  *
68  * FEATURE REPRESENTATION:
69  * Although GenBank allows numerous kinds of features, certain types
70  * (Gene, Coding Region, Protein, and RNA) directly model the central
71  * dogma of molecular biology, and are designed to be used in making
72  * connections between records and in discovering new information by
73  * computation. Other features are stored as Import features, where
74  * the feature key is taken directly from the GenBank name. There are
75  * a few cases where the names can be confusing, and in each case the
76  * structured feature is normally used instead of the Import feature:
77  *
78  * - CDS uses eSubtype_cdregion instead of eSubtype_Imp_CDS.
79  * - processed proteins use the "_aa" versions:
80  * eSubtype_mat_peptide_aa instead of eSubtype_mat_peptide.
81  * eSubtype_sig_peptide_aa instead of eSubtype_sig_peptide.
82  * eSubtype_transit_peptide_aa instead of eSubtype_transit_peptide.
83  * - misc_RNA uses eSubtype_otherRNA instead of eSubtype_misc_RNA.
84  * - precursor_RNA uses eSubtype_preRNA instead of eSubtype_precursor_RNA.
85  *
86  */
87 
88 #ifndef OBJECTS_SEQFEAT_SEQFEATDATA_HPP
89 #define OBJECTS_SEQFEAT_SEQFEATDATA_HPP
90 
91 
92 // generated includes
94 #include <set>
95 
96 #include <corelib/ncbistr.hpp>
97 #include <util/static_map.hpp>
98 #include <array>
99 #include <util/compile_time.hpp>
100 
101 // generated classes
102 
104 
105 BEGIN_objects_SCOPE // namespace ncbi::objects::
106 
107 class CFeatList;
108 class CBondList;
109 class CSiteList;
110 class CGb_qual;
111 
113 {
115 public:
116  /// constructor
117  CSeqFeatData(void);
118  /// destructor
119  ~CSeqFeatData(void);
120 
121  /// ASCII representation of subtype (GenBank feature key, e.g.)
122  enum EVocabulary {
124  eVocabulary_genbank
125  };
126  string GetKey(EVocabulary vocab = eVocabulary_full) const;
127 
128  enum ESubtype {
129  /// These no longer need to match the FEATDEF values in the
130  /// C toolkit's objfdef.h
131  eSubtype_bad = 0,
132  eSubtype_gene = 1,
133  eSubtype_org = 2,
134  eSubtype_cdregion = 3,
135  eSubtype_prot = 4,
136  eSubtype_preprotein = 5,
137  eSubtype_mat_peptide_aa = 6, // Prot-ref mat_peptide
138  eSubtype_sig_peptide_aa = 7, // Prot-ref sig_peptide
139  eSubtype_transit_peptide_aa = 8, // Prot-ref transit_peptide
140  eSubtype_preRNA = 9, // RNA-ref precursor_RNA
141  eSubtype_mRNA = 10,
142  eSubtype_tRNA = 11,
143  eSubtype_rRNA = 12,
144  eSubtype_snRNA = 13,
145  eSubtype_scRNA = 14,
146  eSubtype_snoRNA = 15,
147  eSubtype_otherRNA = 16, // RNA-ref misc_RNA
148  eSubtype_pub = 17,
149  eSubtype_seq = 18,
150  eSubtype_imp = 19,
151  eSubtype_allele = 20,
152  eSubtype_attenuator = 21,
153  eSubtype_C_region = 22,
154  eSubtype_CAAT_signal = 23,
155  eSubtype_Imp_CDS = 24, // use eSubtype_cdregion for CDS
156  eSubtype_conflict = 25,
157  eSubtype_D_loop = 26,
158  eSubtype_D_segment = 27,
159  eSubtype_enhancer = 28,
160  eSubtype_exon = 29,
161  eSubtype_EC_number = 30,
162  eSubtype_GC_signal = 31,
163  eSubtype_iDNA = 32,
164  eSubtype_intron = 33,
165  eSubtype_J_segment = 34,
166  eSubtype_LTR = 35,
167  eSubtype_mat_peptide = 36, // use eSubtype_mat_peptide_aa
168  eSubtype_misc_binding = 37,
169  eSubtype_misc_difference = 38,
170  eSubtype_misc_feature = 39,
171  eSubtype_misc_recomb = 40,
172  eSubtype_misc_RNA = 41, // use eSubtype_otherRNA for misc_RNA
173  eSubtype_misc_signal = 42,
174  eSubtype_misc_structure = 43,
175  eSubtype_modified_base = 44,
176  eSubtype_mutation = 45,
177  eSubtype_N_region = 46,
178  eSubtype_old_sequence = 47,
179  eSubtype_polyA_signal = 48,
180  eSubtype_polyA_site = 49,
181  eSubtype_precursor_RNA = 50, // use eSubtype_preRNA for precursor_RNA
182  eSubtype_prim_transcript = 51,
183  eSubtype_primer_bind = 52,
184  eSubtype_promoter = 53,
185  eSubtype_protein_bind = 54,
186  eSubtype_RBS = 55,
187  eSubtype_repeat_region = 56,
188  eSubtype_repeat_unit = 57,
189  eSubtype_rep_origin = 58,
190  eSubtype_S_region = 59,
191  eSubtype_satellite = 60,
192  eSubtype_sig_peptide = 61, // use eSubtype_sig_peptide_aa
193  eSubtype_source = 62,
194  eSubtype_stem_loop = 63,
195  eSubtype_STS = 64,
196  eSubtype_TATA_signal = 65,
197  eSubtype_terminator = 66,
198  eSubtype_transit_peptide = 67, // use eSubtype_transit_peptide_aa
199  eSubtype_unsure = 68,
200  eSubtype_V_region = 69,
201  eSubtype_V_segment = 70,
202  eSubtype_variation = 71, //< old variation (data.imp)
203  eSubtype_virion = 72,
204  eSubtype_3clip = 73,
205  eSubtype_3UTR = 74,
206  eSubtype_5clip = 75,
207  eSubtype_5UTR = 76,
208  eSubtype_10_signal = 77,
209  eSubtype_35_signal = 78,
210  eSubtype_gap = 79,
211  eSubtype_operon = 80,
212  eSubtype_oriT = 81,
213  eSubtype_site_ref = 82,
214  eSubtype_region = 83,
215  eSubtype_comment = 84,
216  eSubtype_bond = 85,
217  eSubtype_site = 86,
218  eSubtype_rsite = 87,
219  eSubtype_user = 88,
220  eSubtype_txinit = 89,
221  eSubtype_num = 90,
222  eSubtype_psec_str = 91,
223  eSubtype_non_std_residue = 92,
224  eSubtype_het = 93,
225  eSubtype_biosrc = 94,
226  eSubtype_ncRNA = 95,
227  eSubtype_tmRNA = 96,
228  eSubtype_clone = 97,
229  eSubtype_variation_ref = 98, //< new variation (data.variant)
230  eSubtype_mobile_element = 99,
231  eSubtype_centromere = 100,
232  eSubtype_telomere = 101,
233  eSubtype_assembly_gap = 102,
234  eSubtype_regulatory = 103,
235  eSubtype_propeptide = 104, // use eSubtype_propeptide_aa
236  eSubtype_propeptide_aa = 105, // Prot-ref propeptide
237  eSubtype_max = 106,
238  eSubtype_any = 255
239  };
240  ESubtype GetSubtype(void) const;
241 
242  /// Call after changes that could affect the subtype
243  void InvalidateSubtype(void) const;
244 
245  /// Combine invalidation of all cached values
246  void InvalidateCache(void) const;
247 
248  /// Override all setters to incorporate cache invalidation.
249 #define DEFINE_NCBI_SEQFEATDATA_VAL_SETTERS(x) \
250  void Set##x(const T##x& v) { \
251  InvalidateCache(); \
252  Tparent::Set##x(v); \
253  } \
254  T##x& Set##x(void) { \
255  InvalidateCache(); \
256  return Tparent::Set##x(); \
257  }
258 #define DEFINE_NCBI_SEQFEATDATA_SETTERS(x) \
259  void Set##x(T##x& v) { \
260  InvalidateCache(); \
261  Tparent::Set##x(v); \
262  } \
263  T##x& Set##x(void) { \
264  InvalidateCache(); \
265  return Tparent::Set##x(); \
266  }
267 
277  void SetComment(void) {
278  InvalidateCache();
279  Tparent::SetComment();
280  }
293 
294 #undef DEFINE_NCBI_SEQFEATDATA_SETTERS
295 #undef DEFINE_NCBI_SEQFEATDATA_VAL_SETTERS
296 
297  /// Override Assign() to incorporate cache invalidation.
298  virtual void Assign(const CSerialObject& source,
300 
301  /// Invalidate subtype cache after deserialization
302  void PostRead(void) const;
303 
304  static E_Choice GetTypeFromSubtype (ESubtype subtype);
305  /// Turns a ESubtype into its string value which is NOT necessarily
306  /// related to the identifier of the enum.
307  ///
308  /// @return
309  /// empty string on bad input
310  static CTempString SubtypeValueToName(ESubtype eSubtype);
311  /// Turn a string into its ESubtype which is NOT necessarily
312  /// related to the identifier of the enum.
313  ///
314  /// @return
315  /// eSubtype_bad on bad input
317 
318 
319  static bool CanHaveGene(ESubtype subtype);
320 
321  /// List of available qualifiers for feature keys.
322  /// For more information see:
323  /// The DDBJ/EMBL/GenBank Feature Table: Definition
324  /// (http://www.ncbi.nlm.nih.gov/projects/collab/FT/index.html)
326  {
327  eQual_bad = 0,
465  eQual_whole_replicon
466  };
467 
472 
473  /// Test wheather a certain qualifier is legal for the feature
474  bool IsLegalQualifier(EQualifier qual) const;
475  static bool IsLegalQualifier(ESubtype subtype, EQualifier qual);
476 
477  /// Get a list of all the legal qualifiers for the feature.
478  const TLegalQualifiers& GetLegalQualifiers(void) const;
479  static const TLegalQualifiers& GetLegalQualifiers(ESubtype subtype);
480 
481  /// Get the list of all mandatory qualifiers for the feature.
482  const TQualifiers& GetMandatoryQualifiers(void) const;
483  static const TQualifiers& GetMandatoryQualifiers(ESubtype subtype);
484 
485  /// Convert a qualifier from an enumerated value to a string representation
486  /// or empty if not found.
488 
489  /// convert qual string to enumerated value
490  static EQualifier GetQualifierType(CTempString qual);
491  static std::pair<EQualifier, CTempString> GetQualifierTypeAndValue(CTempString qual);
492 
493  static const CFeatList* GetFeatList();
494  static const CBondList* GetBondList();
495  static const CSiteList* GetSiteList();
496 
497  static bool IsRegulatory(ESubtype subtype);
498  static const string & GetRegulatoryClass(ESubtype subtype);
499  static ESubtype GetRegulatoryClass(const string & class_name );
500  static const vector<string>& GetRegulatoryClassList();
501  static bool FixRegulatoryClassValue(string& val);
502 
503  static const vector<string>& GetRecombinationClassList();
504 
505  static bool IsDiscouragedSubtype(ESubtype subtype);
506  static bool IsDiscouragedQual(EQualifier qual);
507 
509  eFeatureLocationAllowed_Any = 0,
513  };
514 
515  static EFeatureLocationAllowed AllowedFeatureLocation(ESubtype subtype);
516 
517  static bool AllowStrandBoth(ESubtype subtype);
518  static bool RequireLocationIntervalsInBiologicalOrder(ESubtype subtype);
519  static bool AllowAdjacentIntervals(ESubtype subtype);
520 
521  static bool ShouldRepresentAsGbqual (CSeqFeatData::ESubtype feat_subtype, const CGb_qual& qual);
522  static bool ShouldRepresentAsGbqual (CSeqFeatData::ESubtype feat_subtype, CSeqFeatData::EQualifier qual_type);
523 
526  static bool AllowXref(CSeqFeatData::ESubtype subtype1, CSeqFeatData::ESubtype subtype2);
527  static bool ProhibitXref(CSeqFeatData::ESubtype subtype1, CSeqFeatData::ESubtype subtype2);
528 
529  static bool FixImportKey(string& key);
530  static bool IsLegalProductNameForRibosomalSlippage(const string& product_name);
531  // Internal structure to hold additional info
533  {
535  const char* m_Key_full;
536  const char* m_Key_gb;
537  };
538 
539 private:
540  void x_InitFeatDataInfo(void) const;
541 
542  mutable SFeatDataInfo m_FeatDataInfo; // cached
543 
544  static void s_InitSubtypesTable(void);
545  static const TSubTypeQualifiersMap& s_GetLegalQualMap() noexcept;
546 
547  // Prohibit copy constructor and assignment operator
550 
552  static const TSubtypeSet & GetSetOfRegulatorySubtypes();
553 };
554 
555 
556 /////////////////// CSeqFeatData inline methods
557 
558 inline
559 void CSeqFeatData::InvalidateSubtype(void) const
560 {
561  m_FeatDataInfo.m_Subtype = eSubtype_any;
562 }
563 
564 
565 inline
567 {
568  InvalidateSubtype(); // it's enough to invalidate all cached values
569 }
570 
571 
572 inline
574 {
575  return IsLegalQualifier(GetSubtype(), qual);
576 }
577 
578 
579 inline
581 {
582  return GetLegalQualifiers(GetSubtype());
583 }
584 
585 
586 inline
588 {
589  return GetMandatoryQualifiers(GetSubtype());
590 }
591 
592 /////////////////// end of CSeqFeatData inline methods
593 
594 
595 
596 
597 /// CFeatListItem - basic configuration data for one "feature" type.
598 /// "feature" expanded to include things that are not SeqFeats.
600 {
601 public:
603  CFeatListItem(int type, int subtype, const char* desc, const char* key)
604  : m_Type(type)
605  , m_Subtype(subtype)
606  , m_Description(desc)
607  , m_StorageKey(key) {}
608 
609  bool operator<(const CFeatListItem& rhs) const;
610 
611  int GetType() const;
612  int GetSubtype() const;
613  string GetDescription() const;
614  string GetStoragekey() const;
615 
616 private:
617  int m_Type = 0; ///< Feature type, or e_not_set for default values.
618  int m_Subtype = 0; ///< Feature subtype or eSubtype_any for default values.
619  string m_Description; ///< a string for display purposes.
620  string m_StorageKey; ///< a short string to use as a key or part of a key
621  ///< when storing a value by key/value string pairs.
622 };
623 
624 
625 // Inline methods.
626 
627 inline
629 { return m_Type; }
630 
631 inline
633 { return m_Subtype; }
634 
635 inline
637 { return m_Description; }
638 
639 inline
641 { return m_StorageKey; }
642 
643 
644 /// CConfigurableItems - a static list of items that can be configured.
645 ///
646 /// One can iterate through all items. Iterators dereference to CFeatListItem.
647 /// One can also get an item by type and subtype.
648 
650 {
651 private:
653 
654 public:
655 
656  CFeatList();
657  ~CFeatList();
658 
659  bool TypeValid(int type, int subtype) const;
660 
661  /// can get all static information for one type/subtype.
662  bool GetItem(int type, int subtype, CFeatListItem& config_item) const;
663  bool GetItemBySubtype(int subtype, CFeatListItem& config_item) const;
664 
665  bool GetItemByDescription(const string& desc, CFeatListItem& config_item) const;
666  bool GetItemByKey(const string& key, CFeatListItem& config_item) const;
667 
668  /// Get the displayable description of this type of feature.
669  string GetDescription(int type, int subtype) const;
670 
671  /// Get the feature's type and subtype from its description.
672  /// return true on success, false if type and subtype are not valid.
673  bool GetTypeSubType(const string& desc, int& type, int& subtype) const;
674 
675  /// Get the key used to store this type of feature.
676  string GetStoragekey(int type, int subtype) const;
677  /// Get the key used to store this type of feature by only subtype.
678  string GetStoragekey(int subtype) const;
679 
680  /// Get hierarchy of keys above this subtype, starting with "Master"
681  /// example, eSubtype_gene, will return {"Master", "Gene"}
682  /// but eSubtype_allele will return {"Master", "Import", "allele"}
683  vector<string> GetStoragekeys(int subtype) const;
684 
685  /// return a list of all the feature descriptions for a menu or other control.
686  /// if hierarchical is true use in an Fl_Menu_ descendant to make hierarchical menus.
687  void GetDescriptions(
688  vector<string> &descs, ///> output, list of description strings.
689  bool hierarchical = false ///> make descriptions hierachical, separated by '/'.
690  ) const;
691 
692  // Iteratable list of key values (type/subtype).
693  // can iterate through all values including defaults or with only
694  // real Feature types/subtypes.
696 
697  size_t size() const;
698  const_iterator begin() const;
699  const_iterator end() const;
700 private:
701  /// initialize our container of feature types and descriptions.
702  void x_Init(void);
703 
704  TFeatTypeContainer m_FeatTypes; ///> all valid types and subtypes.
705 
707  TSubtypeMap m_FeatTypeMap; ///> indexed by subtype only.
708 
709 };
710 
711 
712 inline
713 size_t CFeatList::size() const
714 {
715  return m_FeatTypes.size();
716 }
717 
718 
719 inline
721 {
722  return m_FeatTypes.begin();
723 }
724 
725 
726 inline
728 {
729  return m_FeatTypes.end();
730 }
731 
732 
734 {
735 public:
737 
738 private:
740 
741 public:
742 
743  CBondList();
744  ~CBondList();
745 
746  bool IsBondName (string str) const;
747  bool IsBondName (string str, CSeqFeatData::EBond& bond_type) const;
748  CSeqFeatData::EBond GetBondType (string str) const;
749 
750  // Iteratable list of key values (type/subtype).
751  // can iterate through all values including defaults or with only
752  // real Feature types/subtypes.
754 
755  size_t size() const;
756  const_iterator begin() const;
757  const_iterator end() const;
758 private:
759  /// initialize our container of feature types and descriptions.
760  void x_Init(void);
761 
763 
764 };
765 
766 
767 inline
768 size_t CBondList::size() const
769 {
770  return sm_BondKeys.size();
771 }
772 
773 
774 inline
776 {
777  return sm_BondKeys.begin();
778 }
779 
780 
781 inline
783 {
784  return sm_BondKeys.end();
785 }
786 
787 
789 {
790 public:
792 
793 private:
795 
796 public:
797 
798  CSiteList();
799  ~CSiteList();
800 
801  bool IsSiteName (string str) const;
802  bool IsSiteName (string str, CSeqFeatData::ESite& site_type) const;
803  CSeqFeatData::ESite GetSiteType (string str) const;
804 
805  // Iteratable list of key values (type/subtype).
806  // can iterate through all values including defaults or with only
807  // real Feature types/subtypes.
809 
810  size_t size() const;
811  const_iterator begin() const;
812  const_iterator end() const;
813 private:
814  /// initialize our container of feature types and descriptions.
815  void x_Init(void);
816 
818 
819 };
820 
821 
822 inline
823 size_t CSiteList::size() const
824 {
825  return sm_SiteKeys.size();
826 }
827 
828 
829 inline
831 {
832  return sm_SiteKeys.begin();
833 }
834 
835 
836 inline
838 {
839  return sm_SiteKeys.end();
840 }
841 
843 
844 
845 END_objects_SCOPE // namespace ncbi::objects::
846 
848 
849 
850 #endif // OBJECTS_SEQFEAT_SEQFEATDATA_HPP
851 
852 /* Original file checksum: lines: 90, chars: 2439, CRC32: 742431cc */
#define static
#define DEFINE_NCBI_SEQFEATDATA_VAL_SETTERS(x)
Override all setters to incorporate cache invalidation.
#define DEFINE_NCBI_SEQFEATDATA_SETTERS(x)
Data storage class.
Definition: bond.hpp:50
TBondMap::const_iterator const_iterator
void x_Init(void)
initialize our container of feature types and descriptions.
DECLARE_CLASS_STATIC_ARRAY_MAP(TBondMap, sm_BondKeys)
size_t size() const
CStaticPairArrayMap< const char *, CSeqFeatData::EBond, PNocase_CStr > TBondMap
const_iterator end() const
const_iterator begin() const
SStaticPair< const char *, CSeqFeatData::EBond > TBondKey
CFeatListItem - basic configuration data for one "feature" type.
string GetStoragekey() const
int GetSubtype() const
string m_StorageKey
a short string to use as a key or part of a key when storing a value by key/value string pairs.
string GetDescription() const
CFeatListItem(int type, int subtype, const char *desc, const char *key)
int GetType() const
string m_Description
a string for display purposes.
CConfigurableItems - a static list of items that can be configured.
const_iterator end() const
TFeatTypeContainer m_FeatTypes
map< int, CFeatListItem > TSubtypeMap
> all valid types and subtypes.
size_t size() const
TSubtypeMap m_FeatTypeMap
TFeatTypeContainer::const_iterator const_iterator
const_iterator begin() const
set< CFeatListItem > TFeatTypeContainer
@Gb_qual.hpp User-defined methods of the data storage class.
Definition: Gb_qual.hpp:61
CSeqFeatData_Base –.
static void s_InitXrefProhibitedSubtypesTable(void)
bool IsLegalQualifier(EQualifier qual) const
Test wheather a certain qualifier is legal for the feature.
EQualifier
List of available qualifiers for feature keys.
@ eQual_environmental_sample
@ eQual_recombination_class
@ eQual_UniProtKB_evidence
@ eQual_culture_collection
@ eQual_ribosomal_slippage
@ eQual_mobile_element_type
@ eQual_artificial_location
SFeatDataInfo m_FeatDataInfo
@ eFeatureLocationAllowed_NucOnly
@ eFeatureLocationAllowed_Error
@ eFeatureLocationAllowed_ProtOnly
EVocabulary
ASCII representation of subtype (GenBank feature key, e.g.)
static void s_InitXrefAllowedSubtypesTable(void)
const TLegalQualifiers & GetLegalQualifiers(void) const
Get a list of all the legal qualifiers for the feature.
const TQualifiers & GetMandatoryQualifiers(void) const
Get the list of all mandatory qualifiers for the feature.
void InvalidateCache(void) const
Combine invalidation of all cached values.
static CTempString GetQualifierAsString(EQualifier qual)
Convert a qualifier from an enumerated value to a string representation or empty if not found.
static ESubtype SubtypeNameToValue(CTempString sName)
Turn a string into its ESubtype which is NOT necessarily related to the identifier of the enum.
CSeqFeatData_Base Tparent
Base class for all serializable objects.
Definition: serialbase.hpp:150
void x_Init(void)
initialize our container of feature types and descriptions.
const_iterator begin() const
TSiteMap::const_iterator const_iterator
const_iterator end() const
CStaticPairArrayMap< const char *, CSeqFeatData::ESite, PNocase_CStr > TSiteMap
DECLARE_CLASS_STATIC_ARRAY_MAP(TSiteMap, sm_SiteKeys)
size_t size() const
SStaticPair< const char *, CSeqFeatData::ESite > TSiteKey
class CStaticArrayMap<> is an array adaptor that provides an STLish interface to statically-defined a...
Definition: static_map.hpp:105
TBase::const_iterator const_iterator
Definition: static_map.hpp:109
CTempString implements a light-weight string on top of a storage buffer whose lifetime management is ...
Definition: tempstr.hpp:65
parent_type::const_iterator const_iterator
Definition: set.hpp:79
char value[7]
Definition: config.c:431
The NCBI C++ standard methods for dealing with std::string.
int GetSubtype(CFieldNamePanel *field_name_panel, string &ncRNA_class)
bool operator<(const CEquivRange &A, const CEquivRange &B)
ESerialRecursionMode
How to assign and compare child sub-objects of serial objects.
Definition: serialdef.hpp:191
#define NCBISER_HAVE_POST_READ(Class)
Definition: serialbase.hpp:943
virtual void Assign(const CSerialObject &source, ESerialRecursionMode how=eRecursive)
Set object to copy of another one.
@ eRecursive
Recursively.
Definition: serialdef.hpp:192
#define END_NCBI_SCOPE
End previously defined NCBI scope.
Definition: ncbistl.hpp:103
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
Definition: ncbistl.hpp:100
#define NCBI_SEQFEAT_EXPORT
Definition: ncbi_export.h:768
E_Choice
Choice variants.
const struct ncbi::grid::netcache::search::fields::SIZE size
const struct ncbi::grid::netcache::search::fields::KEY key
const CharType(& source)[N]
Definition: pointer.h:1149
static const char * str(char *buf, int n)
Definition: stats.c:84
CSeqFeatData::ESubtype m_Subtype
Template structure SStaticPair is simlified replacement of STL pair<> Main reason of introducing this...
Definition: static_set.hpp:60
Definition: type.c:6
#define const
Definition: zconf.h:230
Modified on Sun Mar 03 03:12:11 2024 by modify_doxy.py rev. 669887