15 #ifndef LLVM_CLANG_BASIC_VISIBILITY_H
16 #define LLVM_CLANG_BASIC_VISIBILITY_H
53 uint8_t visibility_ : 2;
54 uint8_t explicit_ : 1;
56 void setVisibility(
Visibility V,
bool E) { visibility_ = V; explicit_ = E; }
61 : linkage_(L), visibility_(V), explicit_(E) {
116 if (oldVis == newVis && !newExplicit)
121 setVisibility(newVis, newExplicit);
141 #endif // LLVM_CLANG_BASIC_VISIBILITY_H
void setLinkage(Linkage L)
External linkage, which indicates that the entity can be referred to from other translation units...
No linkage, which means that the entity is unique and can only be referred to from within its scope...
void mergeVisibility(Visibility newVis, bool newExplicit)
Merge in the visibility 'newVis'.
Visibility minVisibility(Visibility L, Visibility R)
Linkage
Describes the different kinds of linkage (C++ [basic.link], C99 6.2.2) that an entity may have...
Visibility getVisibility() const
Defines the Linkage enumeration and various utility functions.
Linkage getLinkage() const
Visibility
Describes the different kinds of visibility that a declaration may have.
LinkageInfo(Linkage L, Visibility V, bool E)
void mergeExternalVisibility(Linkage L)
bool isExternallyVisible(Linkage L)
static LinkageInfo external()
Linkage minLinkage(Linkage L1, Linkage L2)
Compute the minimum linkage given two linkages.
External linkage within a unique namespace.
void mergeExternalVisibility(LinkageInfo Other)
void mergeVisibility(LinkageInfo other)
void mergeLinkage(Linkage L)
bool isVisibilityExplicit() const
void mergeLinkage(LinkageInfo other)
Internal linkage, which indicates that the entity can be referred to from within the translation unit...
void merge(LinkageInfo other)
Merge both linkage and visibility.
No linkage according to the standard, but is visible from other translation units because of types de...
void mergeMaybeWithVisibility(LinkageInfo other, bool withVis)
Merge linkage and conditionally merge visibility.
static LinkageInfo none()
static LinkageInfo uniqueExternal()