NCBI C++ ToolKit
gene_model_config.cpp
Go to the documentation of this file.

Go to the SVN repository for this file.

1 /* $Id: gene_model_config.cpp 46313 2021-03-16 13:11:19Z shkeda $
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  * Authors: Liangshou Wu
27  *
28  * File Description:
29  *
30  */
31 
32 #include <ncbi_pch.hpp>
33 
38 
39 
42 
43 
44 ///////////////////////////////////////////////////////////////////////////////
45 /// CGeneModelConfig implementation
46 ///
47 
48 static const char* const kDefProfile = "Default";
49 static const char* const kCDSKey = "GBPlugins.SeqGraphicGeneModelCDS";
50 
52 static const TStyleStr s_StyleStrs[] = {
53  { "Merge all", CGeneModelConfig::eMerge_All },
54  { "Merge pairs", CGeneModelConfig::eMerge_Pairs },
55  { "No merge", CGeneModelConfig::eMerge_No },
56  { "Single line", CGeneModelConfig::eMerge_OneLine },
57 };
58 
59 
62 
63 
66 {
67  TStyleMap::const_iterator iter = sm_StyleMap.find(style);
68  if (iter != sm_StyleMap.end()) {
69  return iter->second;
70  }
71  NCBI_THROW(CException, eInvalid, "Invalid merge style string: " + style);
72 }
73 
74 
75 const string&
77 {
79  for (iter = sm_StyleMap.begin(); iter != sm_StyleMap.end(); ++iter) {
80  if (iter->second == style) {
81  return iter->first;
82  }
83  }
84  return kEmptyStr;
85 }
86 
87 
89 static const TOptionStr s_OptionStrs[] = {
90  { "GeneOnly", CGeneModelConfig::eOption_GeneOnly },
91  { "MergeAll", CGeneModelConfig::eOption_MergeAll },
92  { "MergePairs", CGeneModelConfig::eOption_MergePairs },
93  { "ShowAll", CGeneModelConfig::eOption_ShowAll },
94  { "ShowAllButGenes", CGeneModelConfig::eOption_ShowAllButGenes },
95  { "SingleLine", CGeneModelConfig::eOption_SingleLine },
96 };
97 
98 
101 
102 
104 {
106  for (iter = sm_OptionMap.begin(); iter != sm_OptionMap.end(); ++iter) {
107  if (iter->second == option) {
108  return iter->first;
109  }
110  }
111  return kEmptyStr;
112 }
113 
114 
116 {
117  TOptionMap::const_iterator iter = sm_OptionMap.find(option);
118  if (iter != sm_OptionMap.end()) {
119  return iter->second;
120  }
121  NCBI_THROW(CException, eInvalid, "Invalid rendeirng option string: " + option);
122 }
123 
124 
126  const string& reg_path,
127  const string& profile)
128 {
129  if ( !m_CdsConfig ) {
131  }
132 
133  if ( !m_GeneBoxConfig ) {
135  true, false, CRgbaColor(0.0, 0.6f, 0.0f, 0.1f),
136  CRgbaColor(0.6f, 0.8f, 0.3f, 0.3f), 1.0));
137  }
138 
140  CRegistryReadView view =
141  CSGConfigUtils::GetReadView(registry, reg_path, profile, kDefProfile);
142  m_MergeStyle =
143  StyleStrToValue(view.GetString("CdsRnaMergeStyle", "No merge"));
144  m_ShowLMGeneLabel = view.GetBool("LandmarkGeneLabel", true);
145  m_LandmarkFeatLimit = view.GetInt("LandmarkFeatLimit", 199);
146  m_OverviewFeatCutoff = view.GetInt("OverviewFeatCutoff", 30);
147 
148  // load content settings
149  m_ShowGenes = view.GetBool("Genes", true);
150  m_ShowRNAs = view.GetBool("RNAs", true);
151  m_ShowCDSs = view.GetBool("CDSs", true);
152  m_ShowExons = view.GetBool("Exons", true);
153  m_ShowVDJCs = view.GetBool("VDJCs", true);
154  m_ShowGeneProducts = view.GetBool("GeneProdcuts", true);
155  m_ShowCDSProductFeats = view.GetBool("CDSProductFeats", false);
156  m_ShowNtRuler = view.GetBool("NtRuler", true);
157  m_ShowAaRuler = view.GetBool("AaRuler", true);
158  m_ShowHistogram = view.GetBool("Histogram", true);
159  m_CDSProfile = view.GetString("CDSProfile", kDefProfile);
160  m_HighlightMode = view.GetInt("HighlightMode", 0);
161  m_ShowLabel = view.GetBool("ShowLabel", true);
162 
163  m_HideNonCoding = view.GetBool("HideNonCoding", false);
164  m_HideModels = view.GetBool("HideModels", false);
165  m_CCDSOnly = view.GetBool("CCDSOnly", false);
166  m_SelectOnly = view.GetBool("SelectOnly", false);
167 
168  // load color settings
171  CSGConfigUtils::GetColor(view, "BGProtProduct", m_CdsConfig->m_bgProtProd);
172  CSGConfigUtils::GetColor(view, "FGProtProduct", m_CdsConfig->m_fgProtProd);
173  CSGConfigUtils::GetColor(view, "LabelProtProduct", m_CdsConfig->m_LabelProtProd);
174  CSGConfigUtils::GetColor(view, "SeqProtOriginal", m_CdsConfig->m_SeqProt);
175  CSGConfigUtils::GetColor(view, "SeqProtMismatch", m_CdsConfig->m_SeqProtMismatch);
176  CSGConfigUtils::GetColor(view, "SeqProtTranslated", m_CdsConfig->m_SeqProtTrans);
177 
178  // load size settings
181 
182  CSGConfigUtils::GetFont(view, "ProdFontFace", "ProdFontSize", m_CdsConfig->m_ProdFont);
183  CSGConfigUtils::GetFont(view, "TransFontFace", "TransFontSize", m_CdsConfig->m_TransFont);
184 }
185 
186 
188  const string& reg_path,
189  const string& profile)
190 {
191 // if ( !m_CdsConfig ) {
192 // m_CdsConfig.Reset(new CCdsConfig);
193 // }
194 
195  if ( !m_GeneBoxConfig ) {
197  true, false, CRgbaColor(0.0, 0.6f, 0.0f, 0.1f),
198  CRgbaColor(0.6f, 0.8f, 0.3f, 0.3f), 1.0));
199  }
200 
202  CRegistryReadView view =
203  CSGConfigUtils::GetReadView(registry, reg_path, profile, kDefProfile);
204  m_MergeStyle =
205  StyleStrToValue(view.GetString("CdsRnaMergeStyle", "No merge"));
206  m_ShowLMGeneLabel = view.GetBool("LandmarkGeneLabel", true);
207  m_LandmarkFeatLimit = view.GetInt("LandmarkFeatLimit", 199);
208  m_OverviewFeatCutoff = view.GetInt("OverviewFeatCutoff", 30);
209 
210  // load content settings
211  m_ShowGenes = view.GetBool("Genes", true);
212  m_ShowRNAs = view.GetBool("RNAs", true);
213  m_ShowCDSs = view.GetBool("CDSs", true);
214  m_ShowExons = view.GetBool("Exons", true);
215  m_ShowVDJCs = view.GetBool("VDJCs", true);
216  m_ShowGeneProducts = view.GetBool("GeneProdcuts", true);
217  m_ShowCDSProductFeats = view.GetBool("CDSProductFeats", false);
218 // m_ShowNtRuler = view.GetBool("NtRuler", true);
219 // m_ShowAaRuler = view.GetBool("AaRuler", true);
220  m_ShowNtRuler = true;
221  m_ShowAaRuler = true;
222  m_ShowHistogram = view.GetBool("Histogram", true);
223  m_CDSProfile = view.GetString("CDSProfile", kDefProfile);
224  m_HighlightMode = view.GetInt("HighlightMode", 0);
225  m_HideNonCoding = view.GetBool("HideNonCoding", false);
226  m_HideModels = view.GetBool("HideModels", false);
227  m_CCDSOnly = view.GetBool("CCDSOnly", false);
228  m_SelectOnly = view.GetBool("SelectOnly", false);
229 
230 }
231 
232 
234  const string& reg_path,
235  const string& profile) const
236 {
238  CRegistryWriteView view =
240  view.Set("CdsRnaMergeStyle", StyleValueToStr(m_MergeStyle));
241  view.Set("LandmarkGeneLabel", m_ShowLMGeneLabel);
242  view.Set("LandmarkFeatLimit", m_LandmarkFeatLimit);
243  view.Set("OverviewFeatCutoff", m_OverviewFeatCutoff);
244 
245  // save content settings
246  view.Set("Genes", m_ShowGenes);
247  view.Set("RNAs", m_ShowRNAs);
248  view.Set("CDSs", m_ShowCDSs);
249  view.Set("Exons", m_ShowExons);
250  view.Set("VDJCs", m_ShowVDJCs);
251  view.Set("GeneProdcuts", m_ShowGeneProducts);
252  view.Set("CDSProductFeats", m_ShowCDSProductFeats);
253  view.Set("NtRuler", m_ShowNtRuler);
254  view.Set("AaRuler", m_ShowAaRuler);
255  view.Set("Histogram", m_ShowHistogram);
256  view.Set("CDSProfile", m_CDSProfile);
257  view.Set("HighlightMode", m_HighlightMode);
258  view.Set("HideNonCoding", m_HideNonCoding);
259  view.Set("HideModels", m_HideModels);
260  view.Set("CCDSOnly", m_CCDSOnly);
261  view.Set("SelectOnly", m_SelectOnly);
262 
263  if (m_CdsConfig->m_Dirty) {
264  // save color settings
267  CSGConfigUtils::SetColor(view, "BGProtProduct", m_CdsConfig->m_bgProtProd);
268  CSGConfigUtils::SetColor(view, "FGProtProduct", m_CdsConfig->m_fgProtProd);
269  CSGConfigUtils::SetColor(view, "LabelProtProduct", m_CdsConfig->m_LabelProtProd);
270  CSGConfigUtils::SetColor(view, "SeqProtOriginal", m_CdsConfig->m_SeqProt);
271  CSGConfigUtils::SetColor(view, "SeqProtMismatch", m_CdsConfig->m_SeqProtMismatch);
272  CSGConfigUtils::SetColor(view, "SeqProtTrans", m_CdsConfig->m_SeqProtTrans);
273 
274  // save size settings
277  CSGConfigUtils::SetFont(view, "ProdFontFace", "ProdFontSize", m_CdsConfig->m_ProdFont);
278  CSGConfigUtils::SetFont(view, "TransFontFace", "TransFontSize", m_CdsConfig->m_TransFont);
279  }
280 }
281 
283 {
284  // override those default settings passed in through profile settings
285  ITERATE (CSGConfigUtils::TKeyValuePairs, iter, settings) {
286  try {
287  if (NStr::EqualNocase(iter->first, "Merge"))
288  m_MergeStyle = StyleStrToValue(iter->second);
289  else if (NStr::EqualNocase(iter->first, "LandmarkGeneLabel"))
290  m_ShowLMGeneLabel = NStr::StringToBool(iter->second);
291  else if (NStr::EqualNocase(iter->first, "Genes"))
292  m_ShowGenes = NStr::StringToBool(iter->second);
293  else if (NStr::EqualNocase(iter->first, "RNAs"))
294  m_ShowRNAs = NStr::StringToBool(iter->second);
295  else if (NStr::EqualNocase(iter->first, "CDSs"))
296  m_ShowCDSs = NStr::StringToBool(iter->second);
297  else if (NStr::EqualNocase(iter->first, "Exons"))
298  m_ShowExons = NStr::StringToBool(iter->second);
299  else if (NStr::EqualNocase(iter->first, "VDJCs"))
300  m_ShowVDJCs = NStr::StringToBool(iter->second);
301  else if (NStr::EqualNocase(iter->first, "CDSProductFeats"))
303  else if (NStr::EqualNocase(iter->first, "NtRuler"))
304  // m_ShowNtRuler = NStr::StringToBool(iter->second);
305  ; // suppress the warning
306  else if (NStr::EqualNocase(iter->first, "AaRuler"))
307  /// m_ShowAaRuler = NStr::StringToBool(iter->second);
308  ; // suppress the warning
309  else if (NStr::EqualNocase(iter->first, "Histogram"))
310  m_ShowHistogram = NStr::StringToBool(iter->second);
311  else if (NStr::EqualNocase(iter->first, "HighlightMode"))
312  m_HighlightMode = NStr::StringToInt(iter->second);
313  else if (NStr::EqualNocase(iter->first, "ShowLabel"))
314  m_ShowLabel = NStr::StringToBool(iter->second);
315  else if (NStr::EqualNocase(iter->first, "HideNonCoding"))
316  m_HideNonCoding = NStr::StringToBool(iter->second);
317  else if (NStr::EqualNocase(iter->first, "HideModels"))
318  m_HideModels = NStr::StringToBool(iter->second);
319  else if (NStr::EqualNocase(iter->first, "CCDSOnly"))
320  m_CCDSOnly = NStr::StringToBool(iter->second);
321  else if (NStr::EqualNocase(iter->first, "SelectOnly"))
322  m_SelectOnly = NStr::StringToBool(iter->second);
323  else if (NStr::EqualNocase(iter->first, "Options")) {
324  ERenderingOption option = OptionStrToValue(iter->second);
325  switch (option) {
326  case eOption_GeneOnly:
327  m_ShowGenes = true;
328  m_ShowRNAs = false;
329  m_ShowCDSs = false;
330  m_ShowExons = false;
331  m_ShowVDJCs = false;
332  break;
333  case eOption_MergeAll:
334  m_ShowGenes = false;
335  m_ShowRNAs = true;
336  m_ShowCDSs = true;
337  m_ShowExons = true;
338  m_ShowVDJCs = true;
340  break;
341  case eOption_MergePairs:
342  m_ShowGenes = false;
343  m_ShowRNAs = true;
344  m_ShowCDSs = true;
345  m_ShowExons = true;
346  m_ShowVDJCs = true;
348  break;
350  m_ShowGenes = false;
351  m_ShowRNAs = true;
352  m_ShowCDSs = true;
353  m_ShowExons = true;
354  m_ShowVDJCs = true;
356  break;
357  case eOption_ShowAll:
358  m_ShowGenes = true;
359  m_ShowRNAs = true;
360  m_ShowCDSs = true;
361  m_ShowExons = true;
362  m_ShowVDJCs = true;
364  break;
365  case eOption_SingleLine:
366  m_ShowGenes = false;
367  m_ShowRNAs = true;
368  m_ShowCDSs = true;
369  m_ShowExons = true;
370  m_ShowVDJCs = true;
372  break;
373  default:
374  break;
375  }
376  } else
377  LOG_POST(Warning << "CGeneModelConfig::UpdateSettings() "
378  << "the setting is not supported: "
379  << iter->first << ":" << iter->second);
380  } catch (CException&) {
381  LOG_POST(Warning << "CGeneModelConfig::UpdateSettings() invalid setting - "
382  << iter->first << ":" << iter->second);
383  }
384  }
385 }
386 
387 
388 string CGeneModelConfig::SaveSettingsAsString(const string& preset_style) const
389 {
391 
392  if ( !preset_style.empty() ) {
393  settings["profile"] = preset_style;
394  }
395 
396  settings["Merge"] = StyleValueToStr(m_MergeStyle);
397  settings["LandmarkGeneLabel"] = NStr::BoolToString(m_ShowLMGeneLabel);
398  settings["Genes"] = NStr::BoolToString(m_ShowGenes);
399  settings["RNAs"] = NStr::BoolToString(m_ShowRNAs);
400  settings["CDSs"] = NStr::BoolToString(m_ShowCDSs);
401  settings["Exons"] = NStr::BoolToString(m_ShowExons);
402  settings["VDJCs"] = NStr::BoolToString(m_ShowVDJCs);
403  settings["CDSProductFeats"] = NStr::BoolToString(m_ShowCDSProductFeats);
404  settings["NtRuler"] = NStr::BoolToString(m_ShowNtRuler);
405  settings["AaRuler"] = NStr::BoolToString(m_ShowAaRuler);
406 
407  settings["Histogram"] = NStr::BoolToString(m_ShowHistogram);
408 
409  settings["HideNonCoding"] = NStr::BoolToString(m_HideNonCoding);
410  settings["HideModels"] = NStr::BoolToString(m_HideModels);
411  settings["CCDSOnly"] = NStr::BoolToString(m_CCDSOnly);
412  settings["SelectOnly"] = NStr::BoolToString(m_SelectOnly);
413 
414  return CSGConfigUtils::ComposeProfileString(settings);
415 }
416 
417 
IBoundaryParams.
CRgbaColor m_SeqProtMismatch
mismatched sequence color.
Definition: cds_glyph.hpp:85
bool m_Dirty
dirty flag indicating any setting changed
Definition: cds_glyph.hpp:95
CGlTextureFont m_ProdFont
Definition: cds_glyph.hpp:91
CRgbaColor m_LabelProtProd
protein product label color.
Definition: cds_glyph.hpp:83
CRgbaColor m_SeqProtTrans
translated sequence color.
Definition: cds_glyph.hpp:86
CRgbaColor m_fgProtProd
protein product frorground color.
Definition: cds_glyph.hpp:82
CRgbaColor m_SeqProt
sequence color.
Definition: cds_glyph.hpp:84
CRgbaColor m_bgProtProd
protein product background color.
Definition: cds_glyph.hpp:81
CGlTextureFont m_TransFont
Definition: cds_glyph.hpp:92
bool m_CCDSOnly
Show only CCDS variants.
bool m_ShowCDSProductFeats
CDS associated protein features.
bool m_ShowGeneProducts
feature histogram on a gene.
bool m_ShowNtRuler
Show nucleotide ruler.
EMergeStyle m_MergeStyle
the way on how to merge CDSs and RNAs.
static ERenderingOption OptionStrToValue(const string &option)
static const string & OptionValueToStr(CGeneModelConfig::ERenderingOption option)
static EMergeStyle StyleStrToValue(const string &style)
bool m_ShowAaRuler
Show protein ruler.
bool m_SelectOnly
Show only Select/MANE variants.
void SaveSettings(CConstRef< CSeqGraphicConfig > g_conf, const string &reg_path, const string &profile) const
void UpdateSettings(const CSGConfigUtils::TKeyValuePairs &settings)
bool m_HideNonCoding
Hide transcripts without associated CDS.
void LoadSettingsPartial(const string &reg_path, const string &profile)
void LoadSettings(CConstRef< CSeqGraphicConfig > g_conf, const string &reg_path, const string &profile)
bool m_ShowVDJCs
show VDJ_segments and C_region
CRef< CBoundaryParams > m_GeneBoxConfig
bool m_ShowHistogram
show gene distribution histogram.
ERenderingOption
rendering options on how to render features overall.
@ eOption_SingleLine
merge all RNAs and CDSs into one line
@ eOption_MergeAll
merge all RNAs and CDSs, show exons, no gene bar
@ eOption_ShowAll
show all features individually
@ eOption_MergePairs
merge each RNA and CDS pair, show exons, no gene bar
@ eOption_ShowAllButGenes
show all RNAs, CDSs and exons, no gene bar
@ eOption_GeneOnly
show gene bar only
string SaveSettingsAsString(const string &preset_style) const
string m_CDSProfile
cds setting profile
static const string & StyleValueToStr(CGeneModelConfig::EMergeStyle style)
CRef< CCdsConfig > m_CdsConfig
EMergeStyle
style on how to merge RNAs and CDSs.
@ eMerge_OneLine
merge into one line
@ eMerge_Pairs
merge each transcript and CDS pair
@ eMerge_All
merge all transcripts and CDSs
@ eMerge_No
show all feature individually
bool m_ShowLMGeneLabel
landmark gene labels.
bool m_HideModels
Hide Model RefSeqs.
bool m_ShowLabel
Show labels.
static CGuiRegistry & GetInstance()
access the application-wide singleton
Definition: registry.cpp:400
class CRegistryReadView provides a nested hierarchical view at a particular key.
Definition: reg_view.hpp:58
int GetInt(const string &key, int default_val=0) const
access a named key at this level, with no recursion
Definition: reg_view.cpp:230
bool GetBool(const string &key, bool default_val=false) const
Definition: reg_view.cpp:241
string GetString(const string &key, const string &default_val=kEmptyStr) const
Definition: reg_view.cpp:246
void Set(const string &key, int val)
access a named key at this level, with no recursion
Definition: reg_view.cpp:533
class CRgbaColor provides a simple abstraction for managing colors.
Definition: rgba_color.hpp:58
static CRegistryReadView GetSizeReadView(const CGuiRegistry &reg, const string &base_key, const string &sect, const string &key, const string &def_sect="")
static void GetFont(const CRegistryReadView &view, const string &face_key, const string &size_key, CGlTextureFont &f)
static string ComposeProfileString(const TKeyValuePairs &settings)
static CRegistryReadView GetColorReadView(const CGuiRegistry &reg, const string &base_key, const string &sect, const string &key, const string &def_sect="")
Create a read view specifically for 'Color' section.
static CRegistryReadView GetReadView(const CGuiRegistry &reg, const string &base_key, const string &curr_key, const string &def_key1="", const string &def_key2="", const string &def_key3="")
read/readwrite view creation helper methods.
static CRegistryWriteView GetWriteView(CGuiRegistry &reg, const string &base_key, const string &curr_key, const string &def_key1="", const string &def_key2="", const string &def_key3="")
static CRegistryWriteView GetColorRWView(CGuiRegistry &reg, const string &base_key, const string &sect, const string &key, const string &def_sect="")
static CRegistryWriteView GetSizeRWView(CGuiRegistry &reg, const string &base_key, const string &sect, const string &key, const string &def_sect="")
static void SetColor(CRegistryWriteView &view, const string &key, const CRgbaColor &color)
static void GetColor(const CRegistryReadView &view, const string &key, CRgbaColor &color)
static void SetFont(CRegistryWriteView &view, const string &face_key, const string &size_key, const CGlTextureFont &f)
const string & GetSizeLevel() const
const string & GetColorTheme() const
class CStaticArrayMap<> provides access to a static array in much the same way as CStaticArraySet<>,...
Definition: static_map.hpp:175
TBase::const_iterator const_iterator
Definition: static_map.hpp:179
static CMemoryRegistry registry
Definition: cn3d_tools.cpp:81
#define option
USING_SCOPE(objects)
CStaticArrayMap< string, CGeneModelConfig::EMergeStyle > TStyleMap
CStaticArrayMap< string, CGeneModelConfig::ERenderingOption > TOptionMap
SStaticPair< const char *, CGeneModelConfig::EMergeStyle > TStyleStr
static const char *const kDefProfile
CGeneModelConfig implementation.
static const TOptionStr s_OptionStrs[]
SStaticPair< const char *, CGeneModelConfig::ERenderingOption > TOptionStr
static const TStyleStr s_StyleStrs[]
static const char *const kCDSKey
DEFINE_STATIC_ARRAY_MAP(TStyleMap, sm_StyleMap, s_StyleStrs)
#define ITERATE(Type, Var, Cont)
ITERATE macro to sequence through container elements.
Definition: ncbimisc.hpp:815
#define LOG_POST(message)
This macro is deprecated and it's strongly recomended to move in all projects (except tests) to macro...
Definition: ncbidiag.hpp:226
#define NCBI_THROW(exception_class, err_code, message)
Generic macro to throw an exception, given the exception class, error code and message string.
Definition: ncbiexpt.hpp:704
void Warning(CExceptionArgs_Base &args)
Definition: ncbiexpt.hpp:1191
void Reset(void)
Reset reference object.
Definition: ncbiobj.hpp:773
#define END_NCBI_SCOPE
End previously defined NCBI scope.
Definition: ncbistl.hpp:103
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
Definition: ncbistl.hpp:100
static bool StringToBool(const CTempString str)
Convert string to bool.
Definition: ncbistr.cpp:2821
#define kEmptyStr
Definition: ncbistr.hpp:123
static int StringToInt(const CTempString str, TStringToNumFlags flags=0, int base=10)
Convert string to int.
Definition: ncbistr.cpp:630
static const string BoolToString(bool value)
Convert bool to string.
Definition: ncbistr.cpp:2815
static bool EqualNocase(const CTempString s1, SIZE_TYPE pos, SIZE_TYPE n, const char *s2)
Case-insensitive equality of a substring with another string.
Definition: ncbistr.hpp:5353
Template structure SStaticPair is simlified replacement of STL pair<> Main reason of introducing this...
Definition: static_set.hpp:60
Modified on Tue May 21 10:58:11 2024 by modify_doxy.py rev. 669887