/* * CDIJNIWrapper.java * * Copyright (c) 2002-2016 Alexei Drummond, Andrew Rambaut and Marc Suchard * * This file is part of BEAST. * See the NOTICE file distributed with this work for additional * information regarding copyright ownership and licensing. * * BEAST 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 * of the License, or (at your option) any later version. * * BEAST 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. * * You should have received a copy of the GNU Lesser General Public * License along with BEAST; if not, write to the * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, * Boston, MA 02110-1301 USA */ package dr.evomodel.treedatalikelihood.continuous.cdi; /** * Created by msuchard on 9/14/16. */ public class CDIJNIWrapper { public static final String LIBRARY_NAME = getPlatformSpecificLibraryName(); /** * private constructor to enforce singleton instance */ private CDIJNIWrapper() { } public native String getVersion(); public native String getCitation(); public native ResourceDetails[] getResourceList(); // public native int createInstance( // int tipCount, // int partialsBufferCount, // int compactBufferCount, // int stateCount, // int patternCount, // int eigenBufferCount, // int matrixBufferCount, // int categoryCount, // int scaleBufferCount, // final int[] resourceList, // int resourceCount, // long preferenceFlags, // long requirementFlags, // InstanceDetails returnInfo); // // public native int finalize(int instance); // /* Library loading routines */ private static String getPlatformSpecificLibraryName() { String osName = System.getProperty("os.name").toLowerCase(); String osArch = System.getProperty("os.arch").toLowerCase(); if (osName.startsWith("windows")) { if(osArch.equals("x86")||osArch.equals("i386")) return "cdi32"; if(osArch.startsWith("amd64")||osArch.startsWith("x86_64")) return "cdi64"; } return "cdi-jni"; } public static void loadCDILibrary() throws UnsatisfiedLinkError { String path = ""; if (System.getProperty("cdi.library.path") != null) { path = System.getProperty("cdi.library.path"); if (path.length() > 0 && !path.endsWith("/")) { path += "/"; } } System.loadLibrary(path + LIBRARY_NAME); INSTANCE = new CDIJNIWrapper(); } public static CDIJNIWrapper INSTANCE; }