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

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

#include <Type.h>

Public Member Functions

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

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 3094 of file Type.h.

Constructor & Destructor Documentation

clang::FunctionProtoType::ExtParameterInfo::ExtParameterInfo ( )
inline

Definition at line 3101 of file Type.h.

Member Function Documentation

ParameterABI clang::FunctionProtoType::ExtParameterInfo::getABI ( ) const
inline
static ExtParameterInfo clang::FunctionProtoType::ExtParameterInfo::getFromOpaqueValue ( unsigned char  data)
inlinestatic

Definition at line 3129 of file Type.h.

unsigned char clang::FunctionProtoType::ExtParameterInfo::getOpaqueValue ( ) const
inline

Definition at line 3128 of file Type.h.

bool clang::FunctionProtoType::ExtParameterInfo::isConsumed ( ) const
inline

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

Definition at line 3115 of file Type.h.

ExtParameterInfo clang::FunctionProtoType::ExtParameterInfo::withABI ( ParameterABI  kind) const
inline

Definition at line 3107 of file Type.h.

ExtParameterInfo clang::FunctionProtoType::ExtParameterInfo::withIsConsumed ( bool  consumed) const
inline

Definition at line 3118 of file Type.h.

Friends And Related Function Documentation

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

Definition at line 3138 of file Type.h.

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

Definition at line 3135 of file Type.h.


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