1 /* 2 * Copyright 2016-2022 The OSHI Project Contributors 3 * SPDX-License-Identifier: MIT 4 */ 5 package oshi; 6 7 /** 8 * An enumeration of supported operating systems. The order of declaration matches the osType constants in the JNA 9 * Platform class. 10 */ 11 public enum PlatformEnum { 12 /** 13 * macOS 14 */ 15 MACOS("macOS"), 16 /** 17 * A flavor of Linux 18 */ 19 LINUX("Linux"), 20 /** 21 * Microsoft Windows 22 */ 23 WINDOWS("Windows"), 24 /** 25 * Solaris (SunOS) 26 */ 27 SOLARIS("Solaris"), 28 /** 29 * FreeBSD 30 */ 31 FREEBSD("FreeBSD"), 32 /** 33 * OpenBSD 34 */ 35 OPENBSD("OpenBSD"), 36 /** 37 * Windows Embedded Compact 38 */ 39 WINDOWSCE("Windows CE"), 40 /** 41 * IBM AIX 42 */ 43 AIX("AIX"), 44 /** 45 * Android 46 */ 47 ANDROID("Android"), 48 /** 49 * GNU operating system 50 */ 51 GNU("GNU"), 52 /** 53 * Debian GNU/kFreeBSD 54 */ 55 KFREEBSD("kFreeBSD"), 56 /** 57 * NetBSD 58 */ 59 NETBSD("NetBSD"), 60 /** 61 * An unspecified system 62 */ 63 UNKNOWN("Unknown"); 64 65 private final String name; 66 67 PlatformEnum(String name) { 68 this.name = name; 69 } 70 71 /** 72 * Gets the friendly name of the platform 73 * 74 * @return the friendly name of the platform 75 */ 76 public String getName() { 77 return this.name; 78 } 79 80 /** 81 * Gets the friendly name of the specified JNA Platform type 82 * 83 * @param osType The constant returned from JNA's {@link com.sun.jna.Platform#getOSType()} method. 84 * @return the friendly name of the specified JNA Platform type 85 */ 86 public static String getName(int osType) { 87 return getValue(osType).getName(); 88 } 89 90 /** 91 * Gets the value corresponding to the specified JNA Platform type 92 * 93 * @param osType The constant returned from JNA's {@link com.sun.jna.Platform#getOSType()} method. 94 * @return the value corresponding to the specified JNA Platform type 95 */ 96 public static PlatformEnum getValue(int osType) { 97 if (osType < 0 || osType >= UNKNOWN.ordinal()) { 98 return UNKNOWN; 99 } 100 return values()[osType]; 101 } 102 }