49 lines
1.5 KiB
C
49 lines
1.5 KiB
C
|
//===--- Visibility.h - Visibility enumeration and utilities ----*- C++ -*-===//
|
||
|
//
|
||
|
// The LLVM Compiler Infrastructure
|
||
|
//
|
||
|
// This file is distributed under the University of Illinois Open Source
|
||
|
// License. See LICENSE.TXT for details.
|
||
|
//
|
||
|
//===----------------------------------------------------------------------===//
|
||
|
//
|
||
|
// This file defines the Visibility enumeration and various utility
|
||
|
// functions.
|
||
|
//
|
||
|
//===----------------------------------------------------------------------===//
|
||
|
#ifndef LLVM_CLANG_BASIC_VISIBILITY_H
|
||
|
#define LLVM_CLANG_BASIC_VISIBILITY_H
|
||
|
|
||
|
namespace clang {
|
||
|
|
||
|
/// \link Describes the different kinds of visibility that a
|
||
|
/// declaration may have. Visibility determines how a declaration
|
||
|
/// interacts with the dynamic linker. It may also affect whether the
|
||
|
/// symbol can be found by runtime symbol lookup APIs.
|
||
|
///
|
||
|
/// Visibility is not described in any language standard and
|
||
|
/// (nonetheless) sometimes has odd behavior. Not all platforms
|
||
|
/// support all visibility kinds.
|
||
|
enum Visibility {
|
||
|
/// Objects with "hidden" visibility are not seen by the dynamic
|
||
|
/// linker.
|
||
|
HiddenVisibility,
|
||
|
|
||
|
/// Objects with "protected" visibility are seen by the dynamic
|
||
|
/// linker but always dynamically resolve to an object within this
|
||
|
/// shared object.
|
||
|
ProtectedVisibility,
|
||
|
|
||
|
/// Objects with "default" visibility are seen by the dynamic linker
|
||
|
/// and act like normal objects.
|
||
|
DefaultVisibility
|
||
|
};
|
||
|
|
||
|
inline Visibility minVisibility(Visibility L, Visibility R) {
|
||
|
return L < R ? L : R;
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
#endif // LLVM_CLANG_BASIC_VISIBILITY_H
|