ACAV f0ba4b7c9529
Abstract Syntax Tree (AST) visualization tool for C, C++, and Objective-C
Loading...
Searching...
No Matches
acav::AstContext Class Reference

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
AstNodecreateAstNode (AcavJson properties, const SourceRange &range)
 Create a new AST data node.
AstViewNodecreateAstViewNode (AstNode *node)
 Create a new AST view node wrapping data.
AstNodegetOrCreateTypeNode (const void *typePtr, AcavJson properties, const SourceRange &range)
 Get or create deduplicated Type node.
AstNodefindTypeNode (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 SourceLocationIndexgetLocationIndex () 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.

Detailed Description

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.

Definition at line 66 of file AstNode.h.

Constructor & Destructor Documentation

◆ ~AstContext()

acav::AstContext::~AstContext ( )

Definition at line 62 of file AstNode.cpp.

Member Function Documentation

◆ createAstNode()

AstNode * acav::AstContext::createAstNode ( AcavJson properties,
const SourceRange & range )

Create a new AST data node.

Parameters
propertiesNode metadata (kind, name, type, etc.).
rangeSource location range.
Returns
Owned pointer (context manages lifetime).

Definition at line 90 of file AstNode.cpp.

References createAstNode().

Referenced by createAstNode(), and getOrCreateTypeNode().

◆ createAstViewNode()

AstViewNode * acav::AstContext::createAstViewNode ( AstNode * node)

Create a new AST view node wrapping data.

Parameters
nodeData node to wrap.
Returns
Owned pointer (context manages lifetime).

Definition at line 97 of file AstNode.cpp.

References createAstViewNode().

Referenced by createAstViewNode().

◆ finalizeLocationIndex()

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().

◆ findTypeNode()

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().

◆ getAstNodeCount()

std::size_t acav::AstContext::getAstNodeCount ( ) const
inline

Get total number of data nodes.

Definition at line 122 of file AstNode.h.

◆ getAstViewNodeCount()

std::size_t acav::AstContext::getAstViewNodeCount ( ) const
inline

Get total number of view nodes.

Definition at line 124 of file AstNode.h.

◆ getLocationIndex()

const SourceLocationIndex & acav::AstContext::getLocationIndex ( ) const
inline

Get location index for source-to-AST queries.

Definition at line 119 of file AstNode.h.

◆ getOrCreateTypeNode()

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

Parameters
typePtrCanonical Type pointer (must not be nullptr)
propertiesNode properties (kind, type name, etc.)
rangeSource range for this type
Returns
Deduplicated AstNode* (never nullptr)

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().

◆ indexNode()

void acav::AstContext::indexNode ( AstViewNode * node)

Add node to location index.

Parameters
nodeAST 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().


The documentation for this class was generated from the following files: