Package jnr.ffi

Class Platform

java.lang.Object
jnr.ffi.Platform
Direct Known Subclasses:
Platform.Supported, Platform.Unsupported

public abstract class Platform extends Object
  • Field Details

    • LOCALE

      private static final Locale LOCALE
    • os

      private final Platform.OS os
    • cpu

      private final Platform.CPU cpu
    • addressSize

      private final int addressSize
    • longSize

      private final int longSize
    • libPattern

      protected final Pattern libPattern
  • Constructor Details

  • Method Details

    • determineOS

      private static Platform.OS determineOS()
      Determines the operating system jffi is running on
      Returns:
      An member of the OS enum.
    • determinePlatform

      private static Platform determinePlatform(Platform.OS os)
      Determines the Platform that best describes the OS
      Parameters:
      os - The operating system.
      Returns:
      An instance of Platform
    • determinePlatform

      private static Platform determinePlatform()
    • determineCPU

      private static Platform.CPU determineCPU()
    • calculateAddressSize

      private static int calculateAddressSize(Platform.CPU cpu)
    • getNativePlatform

      public static Platform getNativePlatform()
      Gets the native Platform
      Returns:
      The current platform.
    • getPlatform

      @Deprecated public static Platform getPlatform()
      Deprecated.
    • getOS

      public final Platform.OS getOS()
      Gets the current Operating System.
      Returns:
      A OS value representing the current Operating System.
    • getCPU

      public final Platform.CPU getCPU()
      Gets the current processor architecture the JVM is running on.
      Returns:
      A CPU value representing the current processor architecture.
    • isBSD

      public final boolean isBSD()
    • isUnix

      public final boolean isUnix()
    • longSize

      public final int longSize()
      Deprecated.
      Use Runtime.longSize() instead.
      Gets the size of a C 'long' on the native platform.
      Returns:
      the size of a long in bits
    • addressSize

      public final int addressSize()
      Deprecated.
      Gets the size of a C address/pointer on the native platform.
      Returns:
      the size of a pointer in bits
    • is32Bit

      public final boolean is32Bit()
      Returns:
      true if this platform is 32 bit, else false Note: do not use this to determine long size, instead use Runtime.longSize()
    • is64Bit

      public final boolean is64Bit()
      Returns:
      true if this platform is 64 bit, else false Note: do not use this to determine long size, instead use Runtime.longSize()
    • isLittleEndian

      public final boolean isLittleEndian()
      Returns true if the current platform is little endian
      Returns:
      true if little endian, false otherwise or if cannot determine
    • isBigEndian

      public final boolean isBigEndian()
      Returns true if the current platform is big endian
      Returns:
      true if big endian, false otherwise or if cannot determine
    • getOSName

      public final String getOSName()
      Returns:
      the String representing the OS name from the System property os.name or null if none was found This is not the same as getOS() which returns the Platform.OS. For example: Mac OS X is the Platform.OS.DARWIN Platform.OS but returns "Mac OS X" from this method
    • getName

      public String getName()
      Gets the name of this Platform.
      Returns:
      The name of this platform.
    • getVersion

      public String getVersion()
      Gets the version of this platform as specified by the system property "os.version"
      Returns:
      the String representing the version of this platform, or null if none could be found
    • getVersionNumbers

      private List<String> getVersionNumbers()
      Returns:
      the list of version numbers found from getVersion() or an empty list if none were found
    • getVersionMajor

      public int getVersionMajor()
      Gets the number representing the major version of this platform This uses the first number from getVersion()
      Returns:
      the number representing the major version of this platform or -1 if none was found
    • getVersionMinor

      public int getVersionMinor()
      Gets the number representing the minor version of this platform This uses the second number from getVersion()
      Returns:
      the number representing the minor version of this platform or -1 if none was found
    • getStandardCLibraryName

      public String getStandardCLibraryName()
      Returns the platform specific standard C library name
      Returns:
      The standard C library name
    • mapLibraryName

      public String mapLibraryName(String libName)
      Maps from a generic library name (e.g. "c") to the platform specific library name.
      Parameters:
      libName - The library name to map
      Returns:
      The mapped library name.
    • locateLibrary

      public String locateLibrary(String libName, List<String> libraryPath)
      Searches through a list of directories for a native library.
      Parameters:
      libName - the base name (e.g. "c") of the library to locate
      libraryPath - the list of directories to search
      Returns:
      the path of the library
    • locateLibrary

      public String locateLibrary(String libName, List<String> libraryPaths, Map<LibraryOption,Object> options)
      Searches through a list of directories for a native library.
      Parameters:
      libName - the base name (e.g. "c") of the library to locate
      libraryPaths - the list of directories to search
      options - map of LibraryOptions to customize search behavior such as LibraryOption.PreferCustomPaths
      Returns:
      the path of the library
    • libraryLocations

      public List<String> libraryLocations(String libName, List<String> additionalPaths)
      Returns a list of absolute paths to the found locations of a library with the base name libName, if the returned list is empty then the library could not be found and will fail to be loaded as a result. Even if a library is found, this does not guarantee that it will successfully be loaded, it only guarantees that the reason for the failure was not that it was not found.
      Parameters:
      libName - the base name (e.g. "c") of the library to locate
      additionalPaths - additional paths to search, these take precedence over default paths, (as is the behavior in LibraryLoader) pass null to only search in the default paths
      Returns:
      the list of absolute paths where the library was found
    • startsWithIgnoreCase

      private static boolean startsWithIgnoreCase(String s1, String s2)
    • equalsIgnoreCase

      private static boolean equalsIgnoreCase(String s1, String s2)