clang API Documentation

Classes | Namespaces | Functions
ASTContext.h File Reference

Defines the clang::ASTContext interface. More...

#include "clang/AST/ASTTypeTraits.h"
#include "clang/AST/CanonicalType.h"
#include "clang/AST/CommentCommandTraits.h"
#include "clang/AST/Decl.h"
#include "clang/AST/ExternalASTSource.h"
#include "clang/AST/NestedNameSpecifier.h"
#include "clang/AST/PrettyPrinter.h"
#include "clang/AST/RawCommentList.h"
#include "clang/AST/TemplateName.h"
#include "clang/AST/Type.h"
#include "clang/Basic/AddressSpaces.h"
#include "clang/Basic/IdentifierTable.h"
#include "clang/Basic/LangOptions.h"
#include "clang/Basic/OperatorKinds.h"
#include "clang/Basic/PartialDiagnostic.h"
#include "clang/Basic/SanitizerBlacklist.h"
#include "clang/Basic/VersionTuple.h"
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/FoldingSet.h"
#include "llvm/ADT/IntrusiveRefCntPtr.h"
#include "llvm/ADT/SmallPtrSet.h"
#include "llvm/ADT/TinyPtrVector.h"
#include "llvm/Support/Allocator.h"
#include <memory>
#include <vector>
Include dependency graph for ASTContext.h:

Go to the source code of this file.

Classes

struct  clang::TypeInfo
class  clang::ASTContext
 Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic analysis of a file. More...
class  clang::ASTContext::CanonicalTemplateTemplateParm
 Representation of a "canonical" template template parameter that is used in canonical template names.
class  clang::ASTContext::RawCommentAndCacheFlags
class  clang::ASTContext::import_iterator
 Iterator that visits import declarations.
struct  clang::ASTContext::SectionInfo

Namespaces

namespace  llvm
namespace  clang
namespace  clang::Builtin
namespace  clang::comments

Functions

static Selector clang::GetNullarySelector (StringRef name, ASTContext &Ctx)
 Utility function for constructing a nullary selector.
static Selector clang::GetUnarySelector (StringRef name, ASTContext &Ctx)
 Utility function for constructing an unary selector.
void * operator new (size_t Bytes, const clang::ASTContext &C, size_t Alignment)
 Placement new for using the ASTContext's allocator.
void operator delete (void *Ptr, const clang::ASTContext &C, size_t)
 Placement delete companion to the new above.
void * operator new[] (size_t Bytes, const clang::ASTContext &C, size_t Alignment=8)
void operator delete[] (void *Ptr, const clang::ASTContext &C, size_t)
 Placement delete[] companion to the new[] above.

Detailed Description

Defines the clang::ASTContext interface.

Definition in file ASTContext.h.


Function Documentation

void operator delete ( void *  Ptr,
const clang::ASTContext C,
size_t   
) [inline]

Placement delete companion to the new above.

This operator is just a companion to the new above. There is no way of invoking it directly; see the new operator for more details. This operator is called implicitly by the compiler if a placement new expression using the ASTContext throws in the object constructor.

Definition at line 2418 of file ASTContext.h.

References clang::ASTContext::Deallocate().

Referenced by clang::PreprocessedEntity::operator delete().

void operator delete[] ( void *  Ptr,
const clang::ASTContext C,
size_t   
) [inline]

Placement delete[] companion to the new[] above.

This operator is just a companion to the new[] above. There is no way of invoking it directly; see the new[] operator for more details. This operator is called implicitly by the compiler if a placement new[] expression using the ASTContext throws in the object constructor.

Definition at line 2456 of file ASTContext.h.

References clang::ASTContext::Deallocate().

void* operator new ( size_t  Bytes,
const clang::ASTContext C,
size_t  Alignment 
) [inline]

Placement new for using the ASTContext's allocator.

This placement form of operator new uses the ASTContext's allocator for obtaining memory.

IMPORTANT: These are also declared in clang/AST/AttrIterator.h! Any changes here need to also be made there.

We intentionally avoid using a nothrow specification here so that the calls to this operator will not perform a null check on the result -- the underlying allocator never returns null pointers.

Usage looks like this (assuming there's an ASTContext 'Context' in scope):

 // Default alignment (8)
 IntegerLiteral *Ex = new (Context) IntegerLiteral(arguments);
 // Specific alignment
 IntegerLiteral *Ex2 = new (Context, 4) IntegerLiteral(arguments);

Memory allocated through this placement new operator does not need to be explicitly freed, as ASTContext will free all of this memory when it gets destroyed. Please note that you cannot use delete on the pointer.

Parameters:
BytesThe number of bytes to allocate. Calculated by the compiler.
CThe ASTContext that provides the allocator.
AlignmentThe alignment of the allocated memory (if the underlying allocator supports it).
Returns:
The allocated memory. Could be NULL.

Definition at line 2408 of file ASTContext.h.

References clang::ASTContext::Allocate().

void* operator new[] ( size_t  Bytes,
const clang::ASTContext C,
size_t  Alignment = 8 
) [inline]

This placement form of operator new[] uses the ASTContext's allocator for obtaining memory.

We intentionally avoid using a nothrow specification here so that the calls to this operator will not perform a null check on the result -- the underlying allocator never returns null pointers.

Usage looks like this (assuming there's an ASTContext 'Context' in scope):

 // Default alignment (8)
 char *data = new (Context) char[10];
 // Specific alignment
 char *data = new (Context, 4) char[10];

Memory allocated through this placement new[] operator does not need to be explicitly freed, as ASTContext will free all of this memory when it gets destroyed. Please note that you cannot use delete on the pointer.

Parameters:
BytesThe number of bytes to allocate. Calculated by the compiler.
CThe ASTContext that provides the allocator.
AlignmentThe alignment of the allocated memory (if the underlying allocator supports it).
Returns:
The allocated memory. Could be NULL.

Definition at line 2445 of file ASTContext.h.

References clang::ASTContext::Allocate().