NCBI C++ ToolKit
|
Search Toolkit Book for CTraversalNode
#include "traversal_node.hpp"
(Private to src/serial/datatool
.)
Classes | |
struct | CCRefUserCallLessThan |
class | CDepthFirstCallback |
class | CNodeCall |
class | CUserCall |
struct | SRefNodeCallLessthan |
Public Member Functions | |
void | AddCaller (const std::string &var_name, CRef< CTraversalNode > caller) |
void | DepthFirst (CDepthFirstCallback &callback, TTraversalOpts traversal_opts=0) |
void | GenerateCode (const string &func_class_name, CNcbiOstream &traversal_output_file, EGenerateMode generate_mode) |
void | SplitByVarName (void) |
CRef< CTraversalNode > | Ref () |
const std::string & | GetFuncName (void) const |
const TNodeCallSet & | GetCallers (void) const |
const TNodeCallSet & | GetCallees (void) const |
const std::string & | GetTypeName () const |
EType | GetType () const |
const string & | GetTypeAsString (void) const |
const std::string & | GetIncludePath (void) const |
const std::string & | GetInputClassName (void) const |
bool | IsTemplate (void) const |
const TUserCallVec & | GetPostCalleesUserCalls () const |
const TUserCallVec & | GetPreCalleesUserCalls () const |
const string | GetStoredArgVariable (void) const |
bool | GetDoStoreArg (void) const |
void | SetDoStoreArg (void) |
void | AddPreCalleesUserCall (CRef< CUserCall > user_call) |
void | AddPostCalleesUserCall (CRef< CUserCall > user_call) |
void | RemoveXFromFuncName (void) |
bool | Merge (CRef< CTraversalNode > node_to_merge_into_this, EMergeNameAllowed merge_name_allowed=eMergeNameAllowed_AllowNameChange) |
void | Clear (void) |
![]() | |
CObject (void) | |
Constructor. More... | |
CObject (const CObject &src) | |
Copy constructor. More... | |
virtual | ~CObject (void) |
Destructor. More... | |
CObject & | operator= (const CObject &src) THROWS_NONE |
Assignment operator. More... | |
bool | CanBeDeleted (void) const THROWS_NONE |
Check if object can be deleted. More... | |
bool | IsAllocatedInPool (void) const THROWS_NONE |
Check if object is allocated in memory pool (not system heap) More... | |
bool | Referenced (void) const THROWS_NONE |
Check if object is referenced. More... | |
bool | ReferencedOnlyOnce (void) const THROWS_NONE |
Check if object is referenced only once. More... | |
void | AddReference (void) const |
Add reference to object. More... | |
void | RemoveReference (void) const |
Remove reference to object. More... | |
void | ReleaseReference (void) const |
Remove reference without deleting object. More... | |
virtual void | DoNotDeleteThisObject (void) |
Mark this object as not allocated in heap – do not delete this object. More... | |
virtual void | DoDeleteThisObject (void) |
Mark this object as allocated in heap – object can be deleted. More... | |
void * | operator new (size_t size) |
Define new operator for memory allocation. More... | |
void * | operator new[] (size_t size) |
Define new[] operator for 'array' memory allocation. More... | |
void | operator delete (void *ptr) |
Define delete operator for memory deallocation. More... | |
void | operator delete[] (void *ptr) |
Define delete[] operator for memory deallocation. More... | |
void * | operator new (size_t size, void *place) |
Define new operator. More... | |
void | operator delete (void *ptr, void *place) |
Define delete operator. More... | |
void * | operator new (size_t size, CObjectMemoryPool *place) |
Define new operator using memory pool. More... | |
void | operator delete (void *ptr, CObjectMemoryPool *place) |
Define delete operator. More... | |
virtual void | DebugDump (CDebugDumpContext ddc, unsigned int depth) const |
Define method for dumping debug information. More... | |
![]() | |
CDebugDumpable (void) | |
virtual | ~CDebugDumpable (void) |
void | DebugDumpText (ostream &out, const string &bundle, unsigned int depth) const |
void | DebugDumpFormat (CDebugDumpFormatter &ddf, const string &bundle, unsigned int depth) const |
void | DumpToConsole (void) const |
Static Public Member Functions | |
static CRef< CTraversalNode > | Create (CRef< CTraversalNode > caller, const string &var_name, CDataType *asn_node) |
static const TNodeRawSet & | GetEveryNode (void) |
![]() | |
static NCBI_XNCBI_EXPORT void | ThrowNullPointerException (void) |
Define method to throw null pointer exception. More... | |
static NCBI_XNCBI_EXPORT void | ThrowNullPointerException (const type_info &type) |
static EAllocFillMode | GetAllocFillMode (void) |
static void | SetAllocFillMode (EAllocFillMode mode) |
static void | SetAllocFillMode (const string &value) |
Set mode from configuration parameter value. More... | |
![]() | |
static void | EnableDebugDump (bool on) |
Private Types | |
typedef set< CConstRef< CUserCall >, CCRefUserCallLessThan > | TUserCallSet |
typedef std::map< CDataType *, CRef< CTraversalNode > > | TASNNodeToNodeMap |
Private Member Functions | |
CTraversalNode (CRef< CTraversalNode > parent, const string &var_name, CDataType *asn_node) | |
~CTraversalNode (void) | |
CTraversalNode (void) | |
CTraversalNode (const CTraversalNode &other) | |
CTraversalNode & | operator= (const CTraversalNode &other) |
void | x_LoadDataFromASNNode (CDataType *asn_node) |
void | x_DepthFirst (CDepthFirstCallback &callback, TNodeVec &node_path, TNodeSet &nodesSeen, TTraversalOpts traversal_opts) |
void | x_GenerateChildCall (CNcbiOstream &traversal_output_file, CRef< CTraversalNode > child, const string &arg) |
void | x_TemplatizeType (std::string &type_name) |
bool | x_IsSeqFeat (void) |
CRef< CTraversalNode > | x_CloneWithoutCallers (const string &var_name) const |
string | x_ExtractIncludePathFromFileName (const string &asn_file_name) |
Static Private Member Functions | |
static void | x_MergeNames (string &result, const string &name1, const string &name2) |
Static Private Attributes | |
static TASNNodeToNodeMap | m_ASNNodeToNodeMap |
static set< CTraversalNode * > * | ms_EveryNode = new set<CTraversalNode*> |
static int | ms_FuncUniquerInt = 0 |
Additional Inherited Members | |
![]() | |
static const TCount | eCounterBitsCanBeDeleted = 1 << 0 |
Define possible object states. More... | |
static const TCount | eCounterBitsInPlainHeap = 1 << 1 |
Heap signature was found. More... | |
static const TCount | eCounterBitsPlaceMask |
Mask for 'in heap' state flags. More... | |
static const int | eCounterStep = 1 << 2 |
Skip over the "in heap" bits. More... | |
static const TCount | eCounterValid = TCount(1) << (sizeof(TCount) * 8 - 2) |
Minimal value for valid objects (reference counter is zero) Must be a single bit value. More... | |
static const TCount | eCounterStateMask |
Valid object, and object in heap. More... | |
![]() | |
virtual void | DeleteThis (void) |
Virtual method "deleting" this object. More... | |
Definition at line 42 of file traversal_node.hpp.
|
private |
Definition at line 256 of file traversal_node.hpp.
typedef std::set< CRef<CNodeCall>, SRefNodeCallLessthan > CTraversalNode::TNodeCallSet |
Definition at line 66 of file traversal_node.hpp.
typedef set<CTraversalNode*> CTraversalNode::TNodeRawSet |
Definition at line 181 of file traversal_node.hpp.
typedef std::set< CRef<CTraversalNode> > CTraversalNode::TNodeSet |
Definition at line 65 of file traversal_node.hpp.
typedef std::vector< CRef<CTraversalNode> > CTraversalNode::TNodeVec |
Definition at line 67 of file traversal_node.hpp.
typedef unsigned int CTraversalNode::TTraversalOpts |
Definition at line 95 of file traversal_node.hpp.
|
private |
Definition at line 205 of file traversal_node.hpp.
typedef std::vector< CRef<CUserCall> > CTraversalNode::TUserCallVec |
Definition at line 142 of file traversal_node.hpp.
Enumerator | |
---|---|
eGenerateMode_Prototypes | |
eGenerateMode_Definitions |
Definition at line 99 of file traversal_node.hpp.
Enumerator | |
---|---|
eMergeNameAllowed_AllowNameChange | |
eMergeNameAllowed_ForbidNameChange |
Definition at line 167 of file traversal_node.hpp.
enum CTraversalNode::EType | ( | void | ) |
Enumerator | |
---|---|
eType_Sequence | |
eType_Choice | |
eType_Primitive | |
eType_Null | |
eType_Enum | |
eType_Reference | |
eType_UniSequence |
Definition at line 107 of file traversal_node.hpp.
Enumerator | |
---|---|
fTraversalOpts_Post | |
fTraversalOpts_UpCallers | |
fTraversalOpts_AllowCycles |
Definition at line 90 of file traversal_node.hpp.
|
private |
Definition at line 65 of file traversal_node.cpp.
References AddCaller(), set< Key, Compare >::insert(), kEmptyStr, m_ASNNodeToNodeMap, m_FuncName, m_IncludePath, m_InputClassName, m_IsTemplate, m_Type, m_TypeName, ms_EveryNode, Ref(), NStr::Replace(), and x_LoadDataFromASNNode().
|
private |
Definition at line 105 of file traversal_node.cpp.
References set< Key, Compare >::erase(), and ms_EveryNode.
|
private |
Definition at line 99 of file traversal_node.cpp.
References set< Key, Compare >::insert(), and ms_EveryNode.
Referenced by Create().
|
private |
void CTraversalNode::AddCaller | ( | const std::string & | var_name, |
CRef< CTraversalNode > | caller | ||
) |
Definition at line 176 of file traversal_node.cpp.
References m_Callees, m_Callers, and Ref().
Referenced by CTraversalNode(), Merge(), SplitByVarName(), and CTraversalCodeGenerator::x_CreateNode().
Definition at line 465 of file traversal_node.cpp.
References m_PostCalleesUserCalls.
Referenced by CTraversalPatternMatchCallback::x_DoAttachment().
Definition at line 460 of file traversal_node.cpp.
References m_PreCalleesUserCalls.
Referenced by CTraversalPatternMatchCallback::x_DoAttachment().
void CTraversalNode::Clear | ( | void | ) |
Definition at line 518 of file traversal_node.cpp.
References m_Callees, m_Callers, m_PostCalleesUserCalls, m_PreCalleesUserCalls, m_ReferencingUserCalls, NON_CONST_ITERATE, and Ref().
Referenced by CTraversalPatternMatchCallback::CTraversalPatternMatchCallback(), Merge(), SplitByVarName(), and CTraversalCodeGenerator::x_PruneEmptyNodes().
|
static |
Definition at line 59 of file traversal_node.cpp.
References CTraversalNode().
Referenced by CTraversalCodeGenerator::x_CreateNode().
void CTraversalNode::DepthFirst | ( | CDepthFirstCallback & | callback, |
TTraversalOpts | traversal_opts = 0 |
||
) |
Definition at line 420 of file traversal_node.cpp.
References x_DepthFirst().
void CTraversalNode::GenerateCode | ( | const string & | func_class_name, |
CNcbiOstream & | traversal_output_file, | ||
EGenerateMode | generate_mode | ||
) |
Definition at line 182 of file traversal_node.cpp.
References _ASSERT, eGenerateMode_Definitions, eGenerateMode_Prototypes, eType_Choice, eType_Enum, eType_Null, eType_Primitive, eType_Reference, eType_Sequence, eType_UniSequence, NStr::FindNoCase(), GetInputClassName(), GetStoredArgVariable(), GetTypeAsString(), ITERATE, kEmptyCStr, m_Callees, m_DoStoreArg, m_FuncName, m_InputClassName, m_IsTemplate, m_PostCalleesUserCalls, m_PreCalleesUserCalls, m_Type, NPOS, NStr::ReplaceInPlace(), string, toupper(), x_GenerateChildCall(), and x_IsSeqFeat().
Referenced by CGenerateCodeCallback::Call().
|
inline |
Definition at line 146 of file traversal_node.hpp.
References m_Callees.
Referenced by CGenerateIncludesCallback::Call(), CTraversalMerger::CNodeLabeler::x_AppendNodeLabelRecursively(), and CTraversalPatternMatchCallback::x_NodeIsUnmatchable().
|
inline |
Definition at line 145 of file traversal_node.hpp.
References m_Callers.
Referenced by CTraversalMerger::x_AddCallersToTier(), CTraversalPatternMatchCallback::x_GetNodeVarName(), CTraversalPatternMatchCallback::x_NodeIsUnmatchable(), CTraversalPatternMatchCallback::x_PatternMatches(), and CTraversalPatternMatchCallback::x_TranslateArgToNode().
|
inline |
Definition at line 158 of file traversal_node.hpp.
References m_DoStoreArg.
Referenced by CGenerateStoredArgVariablesCallback::Call(), and CGenerateStoredArgInitializerCallback::Call().
|
inlinestatic |
Definition at line 182 of file traversal_node.hpp.
References ms_EveryNode.
Referenced by CTraversalPatternMatchCallback::CTraversalPatternMatchCallback(), CTraversalCodeGenerator::x_PruneEmptyNodes(), and CTraversalCodeGenerator::x_SplitNodesByVar().
|
inline |
Definition at line 144 of file traversal_node.hpp.
References m_FuncName.
Referenced by CTraversalMerger::x_DoTier().
|
inline |
Definition at line 150 of file traversal_node.hpp.
References m_IncludePath.
Referenced by CGenerateIncludesCallback::Call().
|
inline |
Definition at line 151 of file traversal_node.hpp.
References m_InputClassName.
Referenced by CGenerateIncludesCallback::Call(), CGenerateStoredArgVariablesCallback::Call(), CPrintTraversalNodeCallback::Call(), GenerateCode(), CTraversalMerger::CNodeLabeler::x_AppendDirectNodeLabel(), and CTraversalPatternMatchCallback::x_PatternMatches().
|
inline |
Definition at line 153 of file traversal_node.hpp.
References m_PostCalleesUserCalls.
Referenced by CTraversalMerger::CNodeLabeler::x_AppendDirectNodeLabel().
|
inline |
Definition at line 154 of file traversal_node.hpp.
References m_PreCalleesUserCalls.
Referenced by CTraversalMerger::CNodeLabeler::x_AppendDirectNodeLabel().
Definition at line 156 of file traversal_node.hpp.
References kEmptyStr, m_DoStoreArg, and m_FuncName.
Referenced by CGenerateStoredArgVariablesCallback::Call(), CGenerateStoredArgInitializerCallback::Call(), and GenerateCode().
|
inline |
Definition at line 148 of file traversal_node.hpp.
References m_Type.
Referenced by CGenerateIncludesCallback::Call(), CPrintTraversalNodeCallback::Call(), and CTraversalPatternMatchCallback::x_NodeIsUnmatchable().
Definition at line 427 of file traversal_node.cpp.
References eType_Choice, eType_Enum, eType_Null, eType_Primitive, eType_Reference, eType_Sequence, eType_UniSequence, kUnknown, and m_Type.
Referenced by CPrintTraversalNodeCallback::Call(), GenerateCode(), and CTraversalMerger::CNodeLabeler::x_AppendDirectNodeLabel().
|
inline |
Definition at line 147 of file traversal_node.hpp.
References m_TypeName.
Referenced by CPrintTraversalNodeCallback::Call(), and CTraversalPatternMatchCallback::x_PatternMatches().
|
inline |
Definition at line 152 of file traversal_node.hpp.
References m_IsTemplate.
Referenced by CGenerateIncludesCallback::Call(), and CTraversalPatternMatchCallback::x_UseRefOrChild().
bool CTraversalNode::Merge | ( | CRef< CTraversalNode > | node_to_merge_into_this, |
EMergeNameAllowed | merge_name_allowed = eMergeNameAllowed_AllowNameChange |
||
) |
Definition at line 477 of file traversal_node.cpp.
References AddCaller(), Clear(), eMergeNameAllowed_AllowNameChange, CRef< C, Locker >::GetPointerOrNull(), m_Callers, m_DoStoreArg, m_FuncName, m_ReferencingUserCalls, NON_CONST_ITERATE, Ref(), and x_MergeNames().
Referenced by CTraversalMerger::x_DoTier().
|
private |
|
inline |
Definition at line 140 of file traversal_node.hpp.
Referenced by AddCaller(), CGenerateCodeCallback::Call(), CAddToNodeSetCallback::Call(), Clear(), CTraversalNode(), CTraversalPatternMatchCallback::CTraversalPatternMatchCallback(), Merge(), x_DepthFirst(), CTraversalPatternMatchCallback::x_DoAttachment(), and CTraversalCodeGenerator::x_PruneEmptyNodes().
void CTraversalNode::RemoveXFromFuncName | ( | void | ) |
Definition at line 470 of file traversal_node.cpp.
References m_FuncName, and NStr::StartsWith().
Referenced by CTraversalCodeGenerator::CTraversalCodeGenerator().
|
inline |
Definition at line 159 of file traversal_node.hpp.
References m_DoStoreArg.
Referenced by CTraversalPatternMatchCallback::x_DoAttachment().
void CTraversalNode::SplitByVarName | ( | void | ) |
Definition at line 377 of file traversal_node.cpp.
References AddCaller(), Clear(), ITERATE, m_Callers, and x_CloneWithoutCallers().
|
private |
Definition at line 654 of file traversal_node.cpp.
References _ASSERT, NStr::IntToString(), ITERATE, m_Callees, m_DoStoreArg, m_FuncName, m_IncludePath, m_InputClassName, m_IsTemplate, m_PostCalleesUserCalls, m_PreCalleesUserCalls, m_ReferencingUserCalls, m_Type, m_TypeName, ms_FuncUniquerInt, NStr::Replace(), and result.
Referenced by SplitByVarName().
|
private |
Definition at line 543 of file traversal_node.cpp.
References CTraversalNode::CDepthFirstCallback::Call(), CTraversalNode::CDepthFirstCallback::eCallType_Cyclic, CTraversalNode::CDepthFirstCallback::eCallType_NonCyclic, fTraversalOpts_AllowCycles, fTraversalOpts_Post, fTraversalOpts_UpCallers, m_Callees, m_Callers, NON_CONST_ITERATE, and Ref().
Referenced by DepthFirst().
Definition at line 688 of file traversal_node.cpp.
References NStr::ReplaceInPlace(), and result.
Referenced by x_LoadDataFromASNNode().
|
private |
Definition at line 592 of file traversal_node.cpp.
References eType_Null, m_FuncName, m_InputClassName, and m_Type.
Referenced by GenerateCode().
|
private |
Definition at line 640 of file traversal_node.cpp.
References eType_Reference, m_InputClassName, and m_Type.
Referenced by GenerateCode().
|
private |
Definition at line 111 of file traversal_node.cpp.
References NStr::EndsWith(), eType_Choice, eType_Enum, eType_Null, eType_Reference, eType_Sequence, eType_UniSequence, NStr::Find(), CTypeStrings::GetCType(), CDataType::GetFullCType(), CDataType::GetFullName(), CTypeStrings::GetNamespace(), CDataType::GetParentType(), CDataType::GetSourceFileName(), CDataType::IsContainer(), CDataType::IsEnumType(), CDataType::IsReference(), CDataType::IsStdType(), m_IncludePath, m_InputClassName, m_IsTemplate, m_Type, m_TypeName, NPOS, CReferenceDataType::Resolve(), NStr::StartsWith(), x_ExtractIncludePathFromFileName(), and x_TemplatizeType().
Referenced by CTraversalNode().
|
staticprivate |
Definition at line 646 of file traversal_node.cpp.
References NStr::EndsWith(), and result.
Referenced by Merge().
|
private |
Definition at line 615 of file traversal_node.cpp.
References NStr::ReplaceInPlace(), result, NStr::ToLower(), and toupper().
Referenced by x_LoadDataFromASNNode().
|
staticprivate |
Definition at line 257 of file traversal_node.hpp.
Referenced by CTraversalNode().
|
private |
Definition at line 231 of file traversal_node.hpp.
Referenced by AddCaller(), Clear(), GenerateCode(), GetCallees(), x_CloneWithoutCallers(), and x_DepthFirst().
|
private |
Definition at line 232 of file traversal_node.hpp.
Referenced by AddCaller(), Clear(), GetCallers(), Merge(), SplitByVarName(), and x_DepthFirst().
|
private |
Definition at line 251 of file traversal_node.hpp.
Referenced by GenerateCode(), GetDoStoreArg(), GetStoredArgVariable(), Merge(), SetDoStoreArg(), and x_CloneWithoutCallers().
|
private |
Definition at line 245 of file traversal_node.hpp.
Referenced by CTraversalNode(), GenerateCode(), GetFuncName(), GetStoredArgVariable(), Merge(), RemoveXFromFuncName(), x_CloneWithoutCallers(), and x_GenerateChildCall().
|
private |
Definition at line 243 of file traversal_node.hpp.
Referenced by CTraversalNode(), GetIncludePath(), x_CloneWithoutCallers(), and x_LoadDataFromASNNode().
|
private |
Definition at line 242 of file traversal_node.hpp.
Referenced by CTraversalNode(), GenerateCode(), GetInputClassName(), x_CloneWithoutCallers(), x_GenerateChildCall(), x_IsSeqFeat(), and x_LoadDataFromASNNode().
|
private |
Definition at line 247 of file traversal_node.hpp.
Referenced by CTraversalNode(), GenerateCode(), IsTemplate(), x_CloneWithoutCallers(), and x_LoadDataFromASNNode().
|
private |
Definition at line 235 of file traversal_node.hpp.
Referenced by AddPostCalleesUserCall(), Clear(), GenerateCode(), GetPostCalleesUserCalls(), and x_CloneWithoutCallers().
|
private |
Definition at line 234 of file traversal_node.hpp.
Referenced by AddPreCalleesUserCall(), Clear(), GenerateCode(), GetPreCalleesUserCalls(), and x_CloneWithoutCallers().
|
private |
Definition at line 237 of file traversal_node.hpp.
Referenced by Clear(), Merge(), and x_CloneWithoutCallers().
|
private |
Definition at line 239 of file traversal_node.hpp.
Referenced by CTraversalNode(), GenerateCode(), GetType(), GetTypeAsString(), x_CloneWithoutCallers(), x_GenerateChildCall(), x_IsSeqFeat(), and x_LoadDataFromASNNode().
|
private |
Definition at line 241 of file traversal_node.hpp.
Referenced by CTraversalNode(), GetTypeName(), x_CloneWithoutCallers(), and x_LoadDataFromASNNode().
|
staticprivate |
Definition at line 267 of file traversal_node.hpp.
Referenced by CTraversalNode(), GetEveryNode(), and ~CTraversalNode().
|
staticprivate |
Definition at line 271 of file traversal_node.hpp.
Referenced by x_CloneWithoutCallers().