/*
* This library is free software; you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by the
* Free Software Foundation; either version 2.1 of the License, or (at
* your option) any later version. This library is distributed in the
* hope that it will be useful, but WITHOUT ANY WARRANTY; without even
* the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
* PURPOSE. See the GNU Lesser General Public License for more details.
*/
package com.sun.jna;
/** Provide simplified platform information. */
public final class Platform
{
public static final int UNSPECIFIED = -1;
public static final int MAC = 0;
public static final int LINUX = 1;
public static final int WINDOWS = 2;
public static final int SOLARIS = 3;
public static final int FREEBSD = 4;
public static final int OPENBSD = 5;
public static final int WINDOWSCE = 6;
private static final int osType;
static
{
String osName = System.getProperty("os.name");
if (osName.startsWith("Linux"))
{
osType = LINUX;
}
else if (osName.startsWith("Mac") || osName.startsWith("Darwin"))
{
osType = MAC;
}
else if (osName.startsWith("Windows CE"))
{
osType = WINDOWSCE;
}
else if (osName.startsWith("Windows"))
{
osType = WINDOWS;
}
else if (osName.startsWith("Solaris") || osName.startsWith("SunOS"))
{
osType = SOLARIS;
}
else if (osName.startsWith("FreeBSD"))
{
osType = FREEBSD;
}
else if (osName.startsWith("OpenBSD"))
{
osType = OPENBSD;
}
else
{
osType = UNSPECIFIED;
}
}
private Platform()
{
}
public static final int getOSType()
{
return osType;
}
public static final boolean isMac()
{
return osType == MAC;
}
public static final boolean isLinux()
{
return osType == LINUX;
}
public static final boolean isWindowsCE()
{
return osType == WINDOWSCE;
}
public static final boolean isWindows()
{
return osType == WINDOWS || osType == WINDOWSCE;
}
public static final boolean isSolaris()
{
return osType == SOLARIS;
}
public static final boolean isFreeBSD()
{
return osType == FREEBSD;
}
public static final boolean isOpenBSD()
{
return osType == OPENBSD;
}
public static final boolean isX11()
{
// TODO: check filesystem for /usr/X11 or some other X11-specific test
return !Platform.isWindows() && !Platform.isMac();
}
public static final boolean deleteNativeLibraryAfterVMExit()
{
return false;// osType == WINDOWS;
}
public static final boolean hasRuntimeExec()
{
if (isWindowsCE() && "J9".equals(System.getProperty("java.vm.name")))
return false;
return true;
}
public static final boolean is64Bit()
{
String model = System.getProperty("sun.arch.data.model");
if (model != null)
return "64".equals(model);
String arch = System.getProperty("os.arch").toLowerCase();
if ("x86_64".equals(arch) || "ppc64".equals(arch) || "sparcv9".equals(arch) || "amd64".equals(arch))
{
return true;
}
return Native.POINTER_SIZE == 8;
}
}