Package com.kenai.jffi
Class Platform
- java.lang.Object
-
- com.kenai.jffi.Platform
-
- Direct Known Subclasses:
Platform.Darwin
,Platform.Default
,Platform.Windows
public abstract class Platform extends java.lang.Object
Convenience class to interrogate the system about various platform-specific details.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static class
Platform.ArchHolder
static class
Platform.CPU
The common names of cpu architectures.private static class
Platform.Darwin
APlatform
subclass representing the MacOS system.private static class
Platform.Default
static class
Platform.OS
The common names of operating systems.private static class
Platform.SingletonHolder
Holds a single, lazily loaded instance ofPlatform
private static class
Platform.Windows
APlatform
subclass representing the Windows system.
-
Field Summary
Fields Modifier and Type Field Description private int
javaVersionMajor
private static java.util.Locale
LOCALE
private Platform.OS
os
-
Constructor Summary
Constructors Modifier Constructor Description private
Platform(Platform.OS os)
Constructs a newPlatform
instance.
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description long
addressMask()
Gets the 32/64bit mask of a C address/pointer on the native platform.int
addressSize()
Gets the size of a C address/pointer on the native platform.private static Platform.OS
determineOS()
Determines the operating system jffi is running onprivate static Platform
determinePlatform(Platform.OS os)
Determines thePlatform
that best describes theOS
Platform.CPU
getCPU()
Gets the current processor architecture the JVM is running on.int
getJavaMajorVersion()
Gets the version of the Java Virtual Machine (JVM) jffi is running on.java.lang.String
getLibraryNamePattern()
Gets the regex string used to match platform-specific librariesjava.lang.String
getName()
Gets the name of thisPlatform
.Platform.OS
getOS()
Gets the current Operating System.static Platform
getPlatform()
Gets the currentPlatform
boolean
isSupported()
Checks if the current platform is supported by JFFI.abstract int
longSize()
Gets the size of a C 'long' on the native platform.java.lang.String
mapLibraryName(java.lang.String libName)
Maps from a generic library name (e.g.private static Platform
newDarwinPlatform()
private static Platform
newDefaultPlatform(Platform.OS os)
private static Platform
newWindowsPlatform()
private static boolean
startsWithIgnoreCase(java.lang.String s1, java.lang.String s2)
-
-
-
Field Detail
-
LOCALE
private static final java.util.Locale LOCALE
-
os
private final Platform.OS os
-
javaVersionMajor
private final int javaVersionMajor
-
-
Constructor Detail
-
Platform
private Platform(Platform.OS os)
Constructs a newPlatform
instance.- Parameters:
os
- The current operating system.
-
-
Method Detail
-
determineOS
private static final Platform.OS determineOS()
Determines the operating system jffi is running on- Returns:
- An member of the
OS
enum.
-
determinePlatform
private static final Platform determinePlatform(Platform.OS os)
Determines thePlatform
that best describes theOS
- Parameters:
os
- The operating system.- Returns:
- An instance of
Platform
-
newDarwinPlatform
private static Platform newDarwinPlatform()
-
newWindowsPlatform
private static Platform newWindowsPlatform()
-
newDefaultPlatform
private static Platform newDefaultPlatform(Platform.OS os)
-
getPlatform
public static final Platform getPlatform()
Gets the currentPlatform
- Returns:
- The current platform.
-
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.
-
getJavaMajorVersion
public final int getJavaMajorVersion()
Gets the version of the Java Virtual Machine (JVM) jffi is running on.- Returns:
- A number representing the java version. e.g. 5 for java 1.5, 6 for java 1.6
-
longSize
public abstract int longSize()
Gets the size of a C 'long' on the native platform.- Returns:
- the size of a long in bits
-
addressSize
public final int addressSize()
Gets the size of a C address/pointer on the native platform.- Returns:
- the size of a pointer in bits
-
addressMask
public final long addressMask()
Gets the 32/64bit mask of a C address/pointer on the native platform.- Returns:
- the size of a pointer in bits
-
getName
public java.lang.String getName()
Gets the name of thisPlatform
.- Returns:
- The name of this platform.
-
mapLibraryName
public java.lang.String mapLibraryName(java.lang.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.
-
getLibraryNamePattern
public java.lang.String getLibraryNamePattern()
Gets the regex string used to match platform-specific libraries- Returns:
-
isSupported
public boolean isSupported()
Checks if the current platform is supported by JFFI.- Returns:
true
if the platform is supported, else false.
-
startsWithIgnoreCase
private static boolean startsWithIgnoreCase(java.lang.String s1, java.lang.String s2)
-
-