clang 10.0.0git

Public Member Functions | Static Public Member Functions | Friends | List of all members
clang::FunctionType::ExtParameterInfo Class Reference

Interesting information about a specific parameter that can't simply be reflected in parameter's type. More...

`#include "clang/AST/Type.h"`

## Public Member Functions
| ExtParameterInfo ()=default
ParameterABI | getABI () const
| Return the ABI treatment of this parameter. More...
ExtParameterInfo | withABI (ParameterABI kind) const
bool | isConsumed () const
| Is this parameter considered "consumed" by Objective-C ARC? Consumed parameters must have retainable object type. More...
ExtParameterInfo | withIsConsumed (bool consumed) const
bool | hasPassObjectSize () const
ExtParameterInfo | withHasPassObjectSize () const
bool | isNoEscape () const
ExtParameterInfo | withIsNoEscape (bool NoEscape) const
unsigned char | getOpaqueValue () const

## Static Public Member Functions
static ExtParameterInfo | getFromOpaqueValue (unsigned char data)

## Friends
bool | operator== (ExtParameterInfo lhs, ExtParameterInfo rhs)
bool | operator!= (ExtParameterInfo lhs, ExtParameterInfo rhs)

## Detailed Description

Interesting information about a specific parameter that can't simply be reflected in parameter's type.

This is only used by FunctionProtoType but is in FunctionType to make this class available during the specification of the bases of FunctionProtoType.

It makes sense to model language features this way when there's some sort of parameter-specific override (such as an attribute) that affects how the function is called. For example, the ARC ns_consumed attribute changes whether a parameter is passed at +0 (the default) or +1 (ns_consumed). This must be reflected in the function type, but isn't really a change to the parameter type.

One serious disadvantage of modelling language features this way is that they generally do not work with language features that attempt to destructure types. For example, template argument deduction will not be able to match a parameter declared as T (*)(U) against an argument of type void (*)(attribute((ns_consumed)) id) because the substitution of T=void, U=id into the former will not produce the latter.

Definition at line 3448 of file Type.h.

## Constructor & Destructor Documentation

## ◆ ExtParameterInfo()

clang::FunctionType::ExtParameterInfo::ExtParameterInfo | ( |  | ) |
| default

## Member Function Documentation

## ◆ getABI()

ParameterABI clang::FunctionType::ExtParameterInfo::getABI | ( |  | ) | const
| inline

Return the ABI treatment of this parameter.

Definition at line 3461 of file Type.h.

Referenced by clang::CodeGen::CodeGenModule::ConstructAttributeList(), and clang::getParameterABISpelling().

## ◆ getFromOpaqueValue()

static ExtParameterInfo clang::FunctionType::ExtParameterInfo::getFromOpaqueValue | ( | unsigned char | data | ) |
| inline static

Definition at line 3498 of file Type.h.

Referenced by clang::serialization::DataStreamBasicReader< ASTRecordReader >::readExtParameterInfo().

## ◆ getOpaqueValue()

unsigned char clang::FunctionType::ExtParameterInfo::getOpaqueValue | ( |  | ) | const
| inline

Definition at line 3497 of file Type.h.

Referenced by clang::FunctionProtoType::isTemplateVariadic(), and clang::serialization::DataStreamBasicWriter< ASTRecordWriter >::writeExtParameterInfo().

## ◆ hasPassObjectSize()

bool clang::FunctionType::ExtParameterInfo::hasPassObjectSize | ( |  | ) | const
| inline

Definition at line 3480 of file Type.h.

## ◆ isConsumed()

bool clang::FunctionType::ExtParameterInfo::isConsumed | ( |  | ) | const
| inline

Is this parameter considered "consumed" by Objective-C ARC? Consumed parameters must have retainable object type.

Definition at line 3470 of file Type.h.

## ◆ isNoEscape()

bool clang::FunctionType::ExtParameterInfo::isNoEscape | ( |  | ) | const
| inline

Definition at line 3487 of file Type.h.

Referenced by clang::Sema::CheckOverridingFunctionAttributes(), clang::CodeGen::CodeGenModule::ConstructAttributeList(), and clang::ASTContext::mergeExtParameterInfo().

## ◆ withABI()

ExtParameterInfo clang::FunctionType::ExtParameterInfo::withABI | ( | ParameterABI | kind | ) | const
| inline

Definition at line 3462 of file Type.h.

## ◆ withHasPassObjectSize()

ExtParameterInfo clang::FunctionType::ExtParameterInfo::withHasPassObjectSize | ( |  | ) | const
| inline

Definition at line 3481 of file Type.h.

## ◆ withIsConsumed()

ExtParameterInfo clang::FunctionType::ExtParameterInfo::withIsConsumed | ( | bool | consumed | ) | const
| inline

Definition at line 3471 of file Type.h.

## ◆ withIsNoEscape()

ExtParameterInfo clang::FunctionType::ExtParameterInfo::withIsNoEscape | ( | bool | NoEscape | ) | const
| inline

Definition at line 3488 of file Type.h.

Referenced by clang::CodeGen::CodeGenTypes::arrangeObjCMessageSendSignature(), and clang::ASTContext::mergeExtParameterInfo().

## Friends And Related Function Documentation

## ◆ operator!=

bool operator!= | ( | ExtParameterInfo | lhs,
|  | ExtParameterInfo | rhs
| ) |  |
| friend

Definition at line 3508 of file Type.h.

## ◆ operator==

bool operator== | ( | ExtParameterInfo | lhs,
|  | ExtParameterInfo | rhs
| ) |  |
| friend

Definition at line 3504 of file Type.h.

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

- include/clang/AST/Type.h