A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://clang.llvm.org/doxygen/ParseHLSL_8cpp_source.html below:

clang: lib/Parse/ParseHLSL.cpp Source File

20using namespace clang

;

33 if

(isa<CXXRecordDecl, RecordDecl, FunctionDecl, VarDecl>(

D

))

37 if

(isa<HLSLBufferDecl, NamespaceDecl>(

D

)) {

38 P

.Diag(

D

->

getLocation

(), diag::err_invalid_declaration_in_hlsl_buffer)

45 P

.Diag(

D

->

getLocation

(), diag::err_invalid_declaration_in_hlsl_buffer)

52

assert((Tok.

is

(tok::kw_cbuffer) || Tok.

is

(tok::kw_tbuffer)) &&

53 "Not a cbuffer or tbuffer!"

);

54 bool

IsCBuffer = Tok.

is

(tok::kw_cbuffer);

57 if

(!Tok.

is

(tok::identifier)) {

58 Diag

(Tok, diag::err_expected) << tok::identifier;

66

MaybeParseHLSLAnnotations(Attrs,

nullptr

);

70 if

(

T

.consumeOpen()) {

71 Diag

(Tok, diag::err_expected) << tok::l_brace;

77 T

.getOpenLocation());

79 while

(Tok.

isNot

(tok::r_brace) && Tok.

isNot

(tok::eof)) {

85

ParseExternalDeclaration(DeclAttrs, EmptyDeclSpecAttrs);

89

DeclEnd =

T

.getCloseLocation();

97

DeclEnd =

T

.getCloseLocation();

113

std::string FixedArg = ArgStr.str() +

Num

.str();

114 P

.Diag(ArgLoc, diag::err_hlsl_separate_attr_arg_and_number)

123 bool

CouldBeBitField) {

125

assert(Tok.

is

(tok::colon) &&

"Not a HLSL Annotation"

);

126 Token

OldToken = Tok;

130 if

(Tok.

is

(tok::kw_register))

132 else if

(Tok.

is

(tok::identifier))

136 if

(CouldBeBitField) {

137

UnconsumeToken(OldToken);

152 case

ParsedAttr::AT_HLSLResourceBinding: {

153 if

(ExpectAndConsume(tok::l_paren, diag::err_expected_lparen_after)) {

157 if

(!Tok.

is

(tok::identifier)) {

164

ArgExprs.push_back(ParseIdentifierLoc());

167 if

(SlotStr.size() == 1 && Tok.

is

(tok::numeric_constant))

171 if

(Tok.

is

(tok::comma)) {

173 if

(!Tok.

is

(tok::identifier)) {

180

ArgExprs.push_back(ParseIdentifierLoc());

183 if

(SpaceStr ==

"space"

&& Tok.

is

(tok::numeric_constant))

187 if

(ExpectAndConsume(tok::r_paren, diag::err_expected)) {

192 case

ParsedAttr::AT_HLSLPackOffset: {

195 if

(ExpectAndConsume(tok::l_paren, diag::err_expected_lparen_after)) {

200 if

(!Tok.

is

(tok::identifier)) {

207 if

(OffsetStr[0] !=

'c'

) {

213

OffsetStr = OffsetStr.substr(1);

214 unsigned

SubComponent = 0;

215 if

(!OffsetStr.empty()) {

217 if

(OffsetStr.getAsInteger(10, SubComponent)) {

219

diag::err_hlsl_unsupported_register_number);

224 unsigned

Component = 0;

227 if

(Tok.

is

(tok::period)) {

229 if

(!Tok.

is

(tok::identifier)) {

238 if

(ComponentStr.size() != 1) {

239 Diag

(ComponentLoc, diag::err_hlsl_unsupported_component)

244 switch

(ComponentStr[0]) {

262 Diag

(ComponentLoc, diag::err_hlsl_unsupported_component)

272

Ctx, llvm::APInt(SizeTySize, SubComponent), SizeTy, SubComponentLoc));

274

Ctx, llvm::APInt(SizeTySize, Component), SizeTy, ComponentLoc));

275 if

(ExpectAndConsume(tok::r_paren, diag::err_expected)) {

281 Diag

(

Loc

, diag::err_unknown_hlsl_semantic) << II;

283 case

ParsedAttr::AT_HLSLSV_GroupThreadID:

284 case

ParsedAttr::AT_HLSLSV_GroupID:

285 case

ParsedAttr::AT_HLSLSV_GroupIndex:

286 case

ParsedAttr::AT_HLSLSV_DispatchThreadID:

289

llvm_unreachable(

"invalid HLSL Annotation"

);

294

ArgExprs.size(), ParsedAttr::Form::HLSLAnnotation());

static bool validateDeclsInsideHLSLBuffer(Parser::DeclGroupPtrTy DG, SourceLocation BufferLoc, bool IsCBuffer, Parser &P)

static void fixSeparateAttrArgAndNumber(StringRef ArgStr, SourceLocation ArgLoc, Token Tok, ArgsVector &ArgExprs, Parser &P, ASTContext &Ctx, Preprocessor &PP)

This file declares semantic analysis for HLSL constructs.

Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...

CanQualType getSizeType() const

Return the unique type for "size_t" (C99 7.17), defined in <stddef.h>.

uint64_t getTypeSize(QualType T) const

Return the size of the specified (complete) type T, in bits.

@ AS_HLSLAnnotation

<vardecl> : <annotation>

Kind getParsedKind() const

RAII class that helps handle the parsing of an open/close delimiter pair, such as braces { ....

Decl - This represents one declaration (or definition), e.g.

SourceLocation getLocation() const

static FixItHint CreateReplacement(CharSourceRange RemoveRange, StringRef Code)

Create a code modification hint that replaces the given source range with the given code string.

One of these records is kept for each identifier that is lexed.

StringRef getName() const

Return the actual identifier string.

static IntegerLiteral * Create(const ASTContext &C, const llvm::APInt &V, QualType type, SourceLocation l)

Returns a new integer literal with value 'V' and type 'type'.

Wrapper for void* pointer.

ParsedAttributes - A collection of parsed attributes.

ParsedAttr * addNew(IdentifierInfo *attrName, SourceRange attrRange, IdentifierInfo *scopeName, SourceLocation scopeLoc, ArgsUnion *args, unsigned numArgs, ParsedAttr::Form form, SourceLocation ellipsisLoc=SourceLocation())

Add attribute with expression arguments.

Parser - This implements a parser for the C family of languages.

DiagnosticBuilder Diag(SourceLocation Loc, unsigned DiagID)

SourceLocation ConsumeToken()

ConsumeToken - Consume the current 'peek token' and lex the next one.

OpaquePtr< DeclGroupRef > DeclGroupPtrTy

Scope * getCurScope() const

bool SkipUntil(tok::TokenKind T, SkipUntilFlags Flags=static_cast< SkipUntilFlags >(0))

SkipUntil - Read tokens until we get to the specified token, then consume it (unless StopBeforeMatch ...

@ StopAtSemi

Stop skipping at semicolon.

Engages in a tight little dance with the lexer to efficiently preprocess tokens.

IdentifierInfo * getIdentifierInfo(StringRef Name) const

Return information about the specified preprocessor identifier token.

A (possibly-)qualified type.

@ DeclScope

This is a scope that can contain a declaration.

void ActOnFinishBuffer(Decl *Dcl, SourceLocation RBrace)

Decl * ActOnStartBuffer(Scope *BufferScope, bool CBuffer, SourceLocation KwLoc, IdentifierInfo *Ident, SourceLocation IdentLoc, SourceLocation LBrace)

ASTContext & getASTContext() const

void ProcessDeclAttributeList(Scope *S, Decl *D, const ParsedAttributesView &AttrList, const ProcessDeclAttributeOptions &Options=ProcessDeclAttributeOptions())

ProcessDeclAttributeList - Apply all the decl attributes in the specified attribute list to the speci...

Encodes a location in the source.

SourceLocation getLocWithOffset(IntTy Offset) const

Return a source location with the specified offset from this SourceLocation.

A trivial tuple used to represent a source range.

Token - This structure provides full information about a lexed token.

IdentifierInfo * getIdentifierInfo() const

SourceLocation getEndLoc() const

SourceLocation getLocation() const

Return a source location identifier for the specified offset in the current file.

unsigned getLength() const

bool is(tok::TokenKind K) const

is/isNot - Predicates to check if this token is a specific kind, as in "if (Tok.is(tok::l_brace)) {....

bool isNot(tok::TokenKind K) const

const char * getLiteralData() const

getLiteralData - For a literal token (numeric constant, string, etc), this returns a pointer to the s...

The JSON file list parser is used to communicate input to InstallAPI.

llvm::PointerUnion< Expr *, IdentifierLoc * > ArgsUnion

A union of the various pointer types that can be passed to an ParsedAttr as an argument.

@ Result

The result type of a method or function.

const FunctionProtoType * T

Wraps an identifier and optional source location for the identifier.

static IdentifierLoc * create(ASTContext &Ctx, SourceLocation Loc, IdentifierInfo *Ident)


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4