Visibility.h revision 245431
150476Speter//===--- Visibility.h - Visibility enumeration and utilities ----*- C++ -*-===// 229585Sjulian// 329585Sjulian// The LLVM Compiler Infrastructure 429585Sjulian// 529585Sjulian// This file is distributed under the University of Illinois Open Source 629585Sjulian// License. See LICENSE.TXT for details. 729585Sjulian// 829585Sjulian//===----------------------------------------------------------------------===// 929585Sjulian/// 1029585Sjulian/// \file 1129585Sjulian/// \brief Defines the clang::Visibility enumeration and various utility 1229585Sjulian/// functions. 1329585Sjulian/// 1429585Sjulian//===----------------------------------------------------------------------===// 1529585Sjulian#ifndef LLVM_CLANG_BASIC_VISIBILITY_H 1629585Sjulian#define LLVM_CLANG_BASIC_VISIBILITY_H 1729585Sjulian 1829585Sjuliannamespace clang { 1929585Sjulian 2029585Sjulian/// \brief Describes the different kinds of visibility that a declaration 2129585Sjulian/// may have. 2229585Sjulian/// 2329594Sjulian/// Visibility determines how a declaration interacts with the dynamic 2429594Sjulian/// linker. It may also affect whether the symbol can be found by runtime 2529594Sjulian/// symbol lookup APIs. 2629594Sjulian/// 2729594Sjulian/// Visibility is not described in any language standard and 2829594Sjulian/// (nonetheless) sometimes has odd behavior. Not all platforms 2929594Sjulian/// support all visibility kinds. 3029594Sjulianenum Visibility { 3129594Sjulian /// Objects with "hidden" visibility are not seen by the dynamic 3229594Sjulian /// linker. 3329594Sjulian HiddenVisibility, 3429594Sjulian 3529585Sjulian /// Objects with "protected" visibility are seen by the dynamic 3629585Sjulian /// linker but always dynamically resolve to an object within this 3729585Sjulian /// shared object. 3829585Sjulian ProtectedVisibility, 3929585Sjulian 4029594Sjulian /// Objects with "default" visibility are seen by the dynamic linker 4129594Sjulian /// and act like normal objects. 4229594Sjulian DefaultVisibility 4329594Sjulian}; 4429594Sjulian 4529594Sjulianinline Visibility minVisibility(Visibility L, Visibility R) { 4629594Sjulian return L < R ? L : R; 4729585Sjulian} 4829585Sjulian 4929585Sjulian} 5029594Sjulian 5129594Sjulian#endif // LLVM_CLANG_BASIC_VISIBILITY_H 5229594Sjulian