blob: b340e6e6d9508c0a433199901fe5a199beee296a [file] [log] [blame]
// Part of the Crubit project, under the Apache License v2.0 with LLVM
// Exceptions. See /LICENSE for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
#ifndef CRUBIT_LIFETIME_ANNOTATIONS_POINTEE_TYPE_H_
#define CRUBIT_LIFETIME_ANNOTATIONS_POINTEE_TYPE_H_
#include "clang/AST/Type.h"
#include "clang/AST/TypeLoc.h"
namespace clang {
namespace tidy {
namespace lifetimes {
// If `type` is a pointer or reference type, returns the type of its pointee.
// Otherwise, returns a null type.
// Unlike `type->getPointeeType()`, this returns a null type if `type`, though
// it has a pointee type, is not a type for which we infer lifetimes, such as
// a pointer-to-member type. In other words, this function can be used to
// succinctly answer the question "does `type` have pointee type and do we infer
// lifetimes for it".
clang::QualType PointeeType(clang::QualType type);
// Analogous to `PointeeType` but operates on a `TypeLoc`.
clang::TypeLoc PointeeTypeLoc(clang::TypeLoc type_loc);
} // namespace lifetimes
} // namespace tidy
} // namespace clang
#endif // CRUBIT_LIFETIME_ANNOTATIONS_POINTEE_TYPE_H_