1 //===-- HostInfo.h ----------------------------------------------*- C++ -*-===// 2 // 3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4 // See https://llvm.org/LICENSE.txt for license information. 5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6 // 7 //===----------------------------------------------------------------------===// 8 9 #ifndef LLDB_HOST_HOSTINFO_H 10 #define LLDB_HOST_HOSTINFO_H 11 12 /// \class HostInfo HostInfo.h "lldb/Host/HostInfo.h" 13 /// A class that provides host computer information. 14 /// 15 /// HostInfo is a class that answers information about the host operating 16 /// system. Note that HostInfo is NOT intended to be used to manipulate or 17 /// control the operating system. 18 /// 19 /// HostInfo is implemented in an OS-specific class (for example 20 /// HostInfoWindows) in a separate file, and then typedefed to HostInfo here. 21 /// Users of the class reference it as HostInfo::method(). 22 /// 23 /// Not all hosts provide the same functionality. It is important that 24 /// methods only be implemented at the lowest level at which they make sense. 25 /// It should be up to the clients of the class to ensure that they not 26 /// attempt to call a method which doesn't make sense for a particular 27 /// platform. For example, when implementing a method that only makes sense 28 /// on a posix-compliant system, implement it on HostInfoPosix, and not on 29 /// HostInfoBase with a default implementation. This way, users of HostInfo 30 /// are required to think about the implications of calling a particular 31 /// method and if used in a context where the method doesn't make sense, will 32 /// generate a compiler error. 33 /// 34 35 #if defined(_WIN32) 36 #include "lldb/Host/windows/HostInfoWindows.h" 37 #define HOST_INFO_TYPE HostInfoWindows 38 #elif defined(__linux__) || defined(__EMSCRIPTEN__) 39 #if defined(__ANDROID__) 40 #include "lldb/Host/android/HostInfoAndroid.h" 41 #define HOST_INFO_TYPE HostInfoAndroid 42 #else 43 #include "lldb/Host/linux/HostInfoLinux.h" 44 #define HOST_INFO_TYPE HostInfoLinux 45 #endif 46 #elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) 47 #include "lldb/Host/freebsd/HostInfoFreeBSD.h" 48 #define HOST_INFO_TYPE HostInfoFreeBSD 49 #elif defined(__NetBSD__) 50 #include "lldb/Host/netbsd/HostInfoNetBSD.h" 51 #define HOST_INFO_TYPE HostInfoNetBSD 52 #elif defined(__OpenBSD__) 53 #include "lldb/Host/openbsd/HostInfoOpenBSD.h" 54 #define HOST_INFO_TYPE HostInfoOpenBSD 55 #elif defined(__APPLE__) 56 #include "lldb/Host/macosx/HostInfoMacOSX.h" 57 #define HOST_INFO_TYPE HostInfoMacOSX 58 #else 59 #include "lldb/Host/posix/HostInfoPosix.h" 60 #define HOST_INFO_TYPE HostInfoPosix 61 #endif 62 63 namespace lldb_private { 64 typedef HOST_INFO_TYPE HostInfo; 65 } 66 67 #undef HOST_INFO_TYPE 68 69 #endif 70