com.jogamp.common.os

## Interface DynamicLibraryBundleInfo

-     public interface DynamicLibraryBundleInfo

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static boolean` | `DEBUG`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `List<String>` | `getGlueLibNames()` If a `SecurityManager` is installed, user needs link permissions for the named libraries.
    `RunnableExecutor` | `getLibLoaderExecutor()` Returns a suitable `RunnableExecutor` implementation, which is being used to load the `tool` and `glue` native libraries.
    `List<String>` | `getToolGetProcAddressFuncNameList()` May return the native libraries
    `List<List<String>>` | `getToolLibNames()` If a `SecurityManager` is installed, user needs link permissions for the named libraries.
    `boolean` | `shallLinkGlobal()`
    `boolean` | `shallLookupGlobal()` If method returns `true` and if a `SecurityManager` is installed, user needs link permissions for all libraries, i.e.
    `long` | `toolGetProcAddress(long toolGetProcAddressHandle, String funcName)` May implement the lookup function using the Tools facility. The actual function pointer is provided to allow proper bootstrapping of the ProcAddressTable, using one of the provided function names by `getToolGetProcAddressFuncNameList()`.
    `boolean` | `useToolGetProcAdressFirst(String funcName)`

- - ### Field Detail

    - #### DEBUG

          static final boolean DEBUG

  - ### Method Detail

    - #### getToolLibNames

          List<List<String>> getToolLibNames()

      If a `SecurityManager` is installed, user needs link permissions for the named libraries.
      Returns:
        a list of Tool library names or alternative library name lists.
        - GL/GLU example Unix: [ [ "libGL.so.1", "libGL.so", "GL" ], [ "libGLU.so", "GLU" ] ]
        - GL/GLU example Windows: [ "OpenGL32", "GLU32" ]
        - Cg/CgGL example: [ [ "libCg.so", "Cg" ], [ "libCgGL.so", "CgGL" ] ]

    - #### getGlueLibNames

          List<String> getGlueLibNames()

      If a `SecurityManager` is installed, user needs link permissions for the named libraries.
      Returns:
        a list of Glue library names.
        - GL: [ "nativewindow_x11", "jogl_gl2es12", "jogl_desktop" ]
        - NEWT: [ "nativewindow_x11", "newt" ]
        - Cg: [ "nativewindow_x11", "jogl_cg" ]
        Only the last entry is crucial, ie all other are optional preload dependencies and may generate errors, which are ignored.

    - #### getToolGetProcAddressFuncNameList

          List<String> getToolGetProcAddressFuncNameList()

      May return the native libraries

          GetProcAddressFunc

      names, the first found function is being used.
      This could be eg:

           glXGetProcAddressARB, glXGetProcAddressARB

      .
      If your Tool does not has this facility, just return null.
      See Also:
        `toolGetProcAddress(long, String)`

    - #### toolGetProcAddress

          long toolGetProcAddress(long toolGetProcAddressHandle,
                                String funcName)

      May implement the lookup function using the Tools facility.
      The actual function pointer is provided to allow proper bootstrapping of the ProcAddressTable, using one of the provided function names by `getToolGetProcAddressFuncNameList()`.

    - #### useToolGetProcAdressFirst

          boolean useToolGetProcAdressFirst(String funcName)

      Parameters:
        `funcName` -
      Returns:
        true if `toolGetProcAddress(long, String)` shall be tried before the system loader for the given function lookup. Otherwise false. Default is true.

    - #### shallLinkGlobal

          boolean shallLinkGlobal()

      Returns:
        true if the native library symbols shall be made available for symbol resolution of subsequently loaded libraries.

    - #### shallLookupGlobal

          boolean shallLookupGlobal()

      If method returns `true` and if a `SecurityManager` is installed, user needs link permissions for all libraries, i.e. for `new RuntimePermission("loadLibrary.*");`!
      Returns:
        true if the dynamic symbol lookup shall happen system wide, over all loaded libraries. Otherwise only the loaded native libraries are used for lookup, which shall be the default.

    - #### getLibLoaderExecutor

          RunnableExecutor getLibLoaderExecutor()

      Returns a suitable `RunnableExecutor` implementation, which is being used to load the `tool` and `glue` native libraries.

      This allows the generic `DynamicLibraryBundle` implementation to load the native libraries on a designated thread.

      An implementation may return `DynamicLibraryBundle.getDefaultRunnableExecutor()`.