003 File Manager
Current Path:
/usr/src/contrib/llvm-project/clang/include/clang/Sema
usr
/
src
/
contrib
/
llvm-project
/
clang
/
include
/
clang
/
Sema
/
📁
..
📄
AnalysisBasedWarnings.h
(2.72 KB)
📄
CXXFieldCollector.h
(2.5 KB)
📄
CleanupInfo.h
(1.28 KB)
📄
CodeCompleteConsumer.h
(41.13 KB)
📄
CodeCompleteOptions.h
(1.85 KB)
📄
DeclSpec.h
(98.42 KB)
📄
DelayedDiagnostic.h
(10.8 KB)
📄
Designator.h
(6.43 KB)
📄
ExternalSemaSource.h
(9.7 KB)
📄
IdentifierResolver.h
(6.46 KB)
📄
Initialization.h
(48.15 KB)
📄
Lookup.h
(25.5 KB)
📄
MultiplexExternalSemaSource.h
(15.39 KB)
📄
ObjCMethodList.h
(2.21 KB)
📄
Overload.h
(41.57 KB)
📄
Ownership.h
(9.58 KB)
📄
ParsedAttr.h
(39.62 KB)
📄
ParsedTemplate.h
(9.9 KB)
📄
Scope.h
(17.01 KB)
📄
ScopeInfo.h
(36.31 KB)
📄
Sema.h
(569.19 KB)
📄
SemaConcept.h
(5.51 KB)
📄
SemaConsumer.h
(1.49 KB)
📄
SemaDiagnostic.h
(501 B)
📄
SemaFixItUtils.h
(3.21 KB)
📄
SemaInternal.h
(12.72 KB)
📄
SemaLambda.h
(1.28 KB)
📄
Template.h
(23.11 KB)
📄
TemplateDeduction.h
(12.2 KB)
📄
TemplateInstCallback.h
(2.55 KB)
📄
TypoCorrection.h
(15.04 KB)
📄
Weak.h
(1.54 KB)
Editing: CXXFieldCollector.h
//===- CXXFieldCollector.h - Utility class for C++ class semantic analysis ===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // // This file provides CXXFieldCollector that is used during parsing & semantic // analysis of C++ classes. // //===----------------------------------------------------------------------===// #ifndef LLVM_CLANG_SEMA_CXXFIELDCOLLECTOR_H #define LLVM_CLANG_SEMA_CXXFIELDCOLLECTOR_H #include "clang/Basic/LLVM.h" #include "llvm/ADT/SmallVector.h" namespace clang { class FieldDecl; /// CXXFieldCollector - Used to keep track of CXXFieldDecls during parsing of /// C++ classes. class CXXFieldCollector { /// Fields - Contains all FieldDecls collected during parsing of a C++ /// class. When a nested class is entered, its fields are appended to the /// fields of its parent class, when it is exited its fields are removed. SmallVector<FieldDecl*, 32> Fields; /// FieldCount - Each entry represents the number of fields collected during /// the parsing of a C++ class. When a nested class is entered, a new field /// count is pushed, when it is exited, the field count is popped. SmallVector<size_t, 4> FieldCount; // Example: // // class C { // int x,y; // class NC { // int q; // // At this point, Fields contains [x,y,q] decls and FieldCount contains // // [2,1]. // }; // int z; // // At this point, Fields contains [x,y,z] decls and FieldCount contains // // [3]. // }; public: /// StartClass - Called by Sema::ActOnStartCXXClassDef. void StartClass() { FieldCount.push_back(0); } /// Add - Called by Sema::ActOnCXXMemberDeclarator. void Add(FieldDecl *D) { Fields.push_back(D); ++FieldCount.back(); } /// getCurNumField - The number of fields added to the currently parsed class. size_t getCurNumFields() const { assert(!FieldCount.empty() && "no currently-parsed class"); return FieldCount.back(); } /// getCurFields - Pointer to array of fields added to the currently parsed /// class. FieldDecl **getCurFields() { return &*(Fields.end() - getCurNumFields()); } /// FinishClass - Called by Sema::ActOnFinishCXXClassDef. void FinishClass() { Fields.resize(Fields.size() - getCurNumFields()); FieldCount.pop_back(); } }; } // end namespace clang #endif
Upload File
Create Folder