14 #ifndef LLVM_CLANG_BASIC_VISIBILITY_H 15 #define LLVM_CLANG_BASIC_VISIBILITY_H 54 uint8_t visibility_ : 2;
55 uint8_t explicit_ : 1;
57 void setVisibility(
Visibility V,
bool E) { visibility_ =
V; explicit_ = E; }
62 : linkage_(L), visibility_(V), explicit_(E) {
120 if (oldVis == newVis && !newExplicit)
125 setVisibility(newVis, newExplicit);
145 #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...
Objects with "hidden" visibility are not seen by the dynamic linker.
void mergeVisibility(Visibility newVis, bool newExplicit)
Merge in the visibility 'newVis'.
Visibility getVisibility() const
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...
Objects with "default" visibility are seen by the dynamic linker and act like normal objects...
Visibility
Describes the different kinds of visibility that a declaration may have.
LinkageInfo(Linkage L, Visibility V, bool E)
Defines the Linkage enumeration and various utility functions.
void mergeExternalVisibility(Linkage L)
Linkage getLinkage() const
Objects with "protected" visibility are seen by the dynamic linker but always dynamically resolve to ...
bool isExternallyVisible(Linkage L)
static LinkageInfo visible_none()
static LinkageInfo external()
Linkage minLinkage(Linkage L1, Linkage L2)
Compute the minimum linkage given two linkages.
Dataflow Directional Tag Classes.
External linkage within a unique namespace.
void mergeExternalVisibility(LinkageInfo Other)
void mergeVisibility(LinkageInfo other)
bool isVisibilityExplicit() const
void mergeLinkage(Linkage L)
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()