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

Go to the SVN repository for this file.

1 /* $Id: macro_query_exec.cpp 39115 2017-08-01 18:58:09Z asztalos $
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: Bob Falk
27  *
28  * File Description:
29  *
30  */
31 
32 #include <ncbi_pch.hpp>
34 
35 
37 
39 {
40  if (name.empty())
41  return CRef<CQueryNodeValue>();
42 
43  auto rt_var = x_LocateRTVar( name );
44  if (rt_var) {
45  return rt_var;
46  }
47 
49  m_RTVars[name] = node;
50  return node;
51 }
52 
53 bool CMacroQueryExec::ResolveRTVar(const string& identifier, CQueryNodeValue& v) //, const CQueryParseTree::TNode* parent)
54 {
55  CRef<CQueryNodeValue> rt_var = x_LocateRTVar(identifier);
56  if (rt_var) {
57  v.SetRef(rt_var);
58  return true;
59  }
60  return false;
61 }
62 
64 {
65  auto it = m_RTVars.find(identifier);
66  if (it != m_RTVars.end()) {
67  return (*it).second;
68  }
69 
70  return CRef<CQueryNodeValue>();
71 }
72 
74 
bool ResolveRTVar(const string &identifier, CQueryNodeValue &v)
Return the value of RT variable in node "v".
CRef< CQueryNodeValue > x_LocateRTVar(const string &identifier)
Gets the pointer to RT variable.
CRef< CQueryNodeValue > GetOrCreateRTVar(const string &name)
Gets or creates run-time vars (used in assignment in Do clause)
class CQueryNodeValue
void SetRef(CRef< CQueryNodeValue > node)
const_iterator end() const
Definition: map.hpp:152
const_iterator find(const key_type &key) const
Definition: map.hpp:153
#define END_NCBI_SCOPE
End previously defined NCBI scope.
Definition: ncbistl.hpp:103
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
Definition: ncbistl.hpp:100
Modified on Thu Apr 11 15:07:32 2024 by modify_doxy.py rev. 669887