diff options
author | Sven Gothel <[email protected]> | 2011-08-31 03:23:30 +0200 |
---|---|---|
committer | Sven Gothel <[email protected]> | 2011-08-31 03:23:30 +0200 |
commit | cfb9e118e020707842e6b5136b07f5ab149540c1 (patch) | |
tree | a2c7e875e87c0a7f8d7faa3ed6b81ab1290abd50 | |
parent | 4a75b64107e157ff1db3991cf89bf8d856ddc0e6 (diff) |
DynamicLibraryBundle*: Use generics for better spec / Drop Iterator in favor for int/size() for less temp objects
-rwxr-xr-x | src/java/com/jogamp/common/os/DynamicLibraryBundle.java | 54 | ||||
-rw-r--r-- | src/java/com/jogamp/common/os/DynamicLibraryBundleInfo.java | 6 |
2 files changed, 26 insertions, 34 deletions
diff --git a/src/java/com/jogamp/common/os/DynamicLibraryBundle.java b/src/java/com/jogamp/common/os/DynamicLibraryBundle.java index 8e072fd..23e1714 100755 --- a/src/java/com/jogamp/common/os/DynamicLibraryBundle.java +++ b/src/java/com/jogamp/common/os/DynamicLibraryBundle.java @@ -28,7 +28,10 @@ package com.jogamp.common.os; -import java.util.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashSet; +import java.util.List; import com.jogamp.common.jvm.JNILibLoaderBase; @@ -55,18 +58,18 @@ public class DynamicLibraryBundle implements DynamicLookupHelper { private DynamicLibraryBundleInfo info; - private List/*<List<String>>*/ toolLibNames; + private List<List<String>> toolLibNames; private boolean[] toolLibLoaded; private int toolLibLoadedNumber; - protected List/*<NativeLibrary>*/ nativeLibraries; + protected List<NativeLibrary> nativeLibraries; - private List/*<String>*/ glueLibNames; + private List<String> glueLibNames; private boolean[] glueLibLoaded; private int glueLibLoadedNumber; private long toolGetProcAddressHandle; - private HashSet toolGetProcAddressFuncNameSet; - private List toolGetProcAddressFuncNameList; + private HashSet<String> toolGetProcAddressFuncNameSet; + private List<String> toolGetProcAddressFuncNameList; public DynamicLibraryBundle(DynamicLibraryBundleInfo info) { if(null==info) { @@ -77,16 +80,16 @@ public class DynamicLibraryBundle implements DynamicLookupHelper { System.err.println(Thread.currentThread().getName()+" - DynamicLibraryBundle.init start with: "+info.getClass().getName()); Thread.dumpStack(); } - nativeLibraries = new ArrayList(); + nativeLibraries = new ArrayList<NativeLibrary>(); toolLibNames = info.getToolLibNames(); glueLibNames = info.getGlueLibNames(); loadLibraries(); toolGetProcAddressFuncNameList = info.getToolGetProcAddressFuncNameList(); if(null!=toolGetProcAddressFuncNameList) { - toolGetProcAddressFuncNameSet = new HashSet(toolGetProcAddressFuncNameList); + toolGetProcAddressFuncNameSet = new HashSet<String>(toolGetProcAddressFuncNameList); toolGetProcAddressHandle = getToolGetProcAddressHandle(); } else { - toolGetProcAddressFuncNameSet = new HashSet(); + toolGetProcAddressFuncNameSet = new HashSet<String>(); toolGetProcAddressHandle = 0; } if(DEBUG) { @@ -166,8 +169,8 @@ public class DynamicLibraryBundle implements DynamicLookupHelper { return 0; } long aptr = 0; - for(Iterator iter=toolGetProcAddressFuncNameList.iterator(); 0==aptr && iter.hasNext(); ) { - String name = (String) iter.next(); + for (int i=0; i < toolGetProcAddressFuncNameList.size(); i++) { + final String name = toolGetProcAddressFuncNameList.get(i); aptr = dynamicLookupFunctionOnLibs(name); if(DEBUG) { System.err.println("getToolGetProcAddressHandle: "+name+" -> 0x"+Long.toHexString(aptr)); @@ -176,9 +179,9 @@ public class DynamicLibraryBundle implements DynamicLookupHelper { return aptr; } - protected NativeLibrary loadFirstAvailable(List/*<String>*/ libNames, ClassLoader loader, boolean global) { - for (Iterator iter = libNames.iterator(); iter.hasNext(); ) { - NativeLibrary lib = NativeLibrary.open((String) iter.next(), loader, global); + protected NativeLibrary loadFirstAvailable(List<String> libNames, ClassLoader loader, boolean global) { + for (int i=0; i < libNames.size(); i++) { + final NativeLibrary lib = NativeLibrary.open(libNames.get(i), loader, global); if (lib != null) { return lib; } @@ -216,18 +219,8 @@ public class DynamicLibraryBundle implements DynamicLookupHelper { ClassLoader loader = getClass().getClassLoader(); NativeLibrary lib = null; - i=0; - for(Iterator iter = toolLibNames.iterator(); iter.hasNext(); i++) { - Object listObj = iter.next(); - List/*<String>*/ libNames = null; - if(listObj instanceof List) { - libNames = (List) listObj; - } else if(listObj instanceof String) { - libNames = new ArrayList(); - libNames.add((String)listObj); - } else { - throw new RuntimeException("List element "+i+" must be either a List or String: "+toolLibNames); - } + for (i=0; i < toolLibNames.size(); i++) { + final List<String> libNames = toolLibNames.get(i); if( null != libNames && libNames.size() > 0 ) { lib = loadFirstAvailable(libNames, loader, info.shallLinkGlobal()); if ( null == lib ) { @@ -252,9 +245,8 @@ public class DynamicLibraryBundle implements DynamicLookupHelper { } glueLibLoadedNumber = 0; - i=0; - for(Iterator iter = glueLibNames.iterator(); iter.hasNext(); i++) { - String libName = (String) iter.next(); + for (i=0; i < glueLibNames.size(); i++) { + final String libName = glueLibNames.get(i); boolean ignoreError = true; boolean res; try { @@ -291,8 +283,8 @@ public class DynamicLibraryBundle implements DynamicLookupHelper { addr = NativeLibrary.dynamicLookupFunctionGlobal(funcName); } // Look up this function name in all known libraries - for (Iterator iter = nativeLibraries.iterator(); 0==addr && iter.hasNext(); ) { - lib = (NativeLibrary) iter.next(); + for (int i=0; 0==addr && i < nativeLibraries.size(); i++) { + lib = nativeLibraries.get(i); addr = lib.dynamicLookupFunction(funcName); } if(DEBUG_LOOKUP) { diff --git a/src/java/com/jogamp/common/os/DynamicLibraryBundleInfo.java b/src/java/com/jogamp/common/os/DynamicLibraryBundleInfo.java index 081bac8..ca486bf 100644 --- a/src/java/com/jogamp/common/os/DynamicLibraryBundleInfo.java +++ b/src/java/com/jogamp/common/os/DynamicLibraryBundleInfo.java @@ -40,7 +40,7 @@ public interface DynamicLibraryBundleInfo { * <li>Cg/CgGL example: [ [ "libCg.so", "Cg" ], [ "libCgGL.so", "CgGL" ] ] </li> * </pre> */ - public List getToolLibNames(); + public List<List<String>> getToolLibNames(); /** @return a list of Glue library names.<br> * <ul> @@ -51,14 +51,14 @@ public interface DynamicLibraryBundleInfo { * Only the last entry is crucial, ie all other are optional preload dependencies and may generate errors, * which are ignored. */ - public List/*<String>*/ getGlueLibNames(); + public List<String> getGlueLibNames(); /** May return the native libraries <pre>GetProcAddressFunc</pre> names, the first found function is being used.<br> * This could be eg: <pre> glXGetProcAddressARB, glXGetProcAddressARB </pre>.<br> * If your Tool does not has this facility, just return null. * @see #toolGetProcAddress(long, String) */ - public List getToolGetProcAddressFuncNameList() ; + public List<String> getToolGetProcAddressFuncNameList() ; /** May implement the lookup function using the Tools facility.<br> * The actual function pointer is provided to allow proper bootstrapping of the ProcAddressTable, |