|
ACAV f0ba4b7c9529
Abstract Syntax Tree (AST) visualization tool for C, C++, and Objective-C
|
Memory manager for AST nodes in a translation unit. More...
#include <AstNode.h>
Public Member Functions | |
| AstContext (const AstContext &)=delete | |
| AstContext & | operator= (const AstContext &)=delete |
| AstContext (AstContext &&)=delete | |
| AstContext & | operator= (AstContext &&)=delete |
| AstNode * | createAstNode (AcavJson properties, const SourceRange &range) |
| Create a new AST data node. | |
| AstViewNode * | createAstViewNode (AstNode *node) |
| Create a new AST view node wrapping data. | |
| AstNode * | getOrCreateTypeNode (const void *typePtr, AcavJson properties, const SourceRange &range) |
| Get or create deduplicated Type node. | |
| AstNode * | findTypeNode (const void *typePtr) const |
| Find existing deduplicated Type node (or nullptr). | |
| void | indexNode (AstViewNode *node) |
| Add node to location index. | |
| void | finalizeLocationIndex () |
| Finalize location index (call after all nodes indexed). | |
| const SourceLocationIndex & | getLocationIndex () const |
| Get location index for source-to-AST queries. | |
| std::size_t | getAstNodeCount () const |
| Get total number of data nodes. | |
| std::size_t | getAstViewNodeCount () const |
| Get total number of view nodes. | |
Memory manager for AST nodes in a translation unit.
Owns and tracks all AstNode and AstViewNode objects for one TU. Provides factory methods for node creation. Handles cleanup to avoid stack overflow on deep trees. One AstContext per translation unit, destroyed when TU is closed.
| acav::AstContext::~AstContext | ( | ) |
Definition at line 62 of file AstNode.cpp.
| AstNode * acav::AstContext::createAstNode | ( | AcavJson | properties, |
| const SourceRange & | range ) |
Create a new AST data node.
| properties | Node metadata (kind, name, type, etc.). |
| range | Source location range. |
Definition at line 90 of file AstNode.cpp.
References createAstNode().
Referenced by createAstNode(), and getOrCreateTypeNode().
| AstViewNode * acav::AstContext::createAstViewNode | ( | AstNode * | node | ) |
Create a new AST view node wrapping data.
| node | Data node to wrap. |
Definition at line 97 of file AstNode.cpp.
References createAstViewNode().
Referenced by createAstViewNode().
| void acav::AstContext::finalizeLocationIndex | ( | ) |
Finalize location index (call after all nodes indexed).
Definition at line 142 of file AstNode.cpp.
References finalizeLocationIndex().
Referenced by finalizeLocationIndex().
| AstNode * acav::AstContext::findTypeNode | ( | const void * | typePtr | ) | const |
Find existing deduplicated Type node (or nullptr).
Definition at line 128 of file AstNode.cpp.
References findTypeNode().
Referenced by findTypeNode().
|
inline |
|
inline |
|
inline |
| AstNode * acav::AstContext::getOrCreateTypeNode | ( | const void * | typePtr, |
| AcavJson | properties, | ||
| const SourceRange & | range ) |
Get or create deduplicated Type node.
Uses canonical Type pointer as identity key. Multiple QualTypes referring to the same canonical type will map to the same AstNode.
Example: const int* p1; // QualType 1 int const* p2; // QualType 2 // Both have same canonical type → same AstNode
| typePtr | Canonical Type pointer (must not be nullptr) |
| properties | Node properties (kind, type name, etc.) |
| range | Source range for this type |
Thread-safety: Not thread-safe. Must be called from same thread as AstContext.
Definition at line 103 of file AstNode.cpp.
References createAstNode(), and getOrCreateTypeNode().
Referenced by getOrCreateTypeNode().
| void acav::AstContext::indexNode | ( | AstViewNode * | node | ) |
Add node to location index.
| node | AST view node to index Called during AST construction to build source-to-AST mapping |
Definition at line 136 of file AstNode.cpp.
References indexNode().
Referenced by indexNode().