/[svn]/linuxsampler/trunk/src/common/DynamicLibraries.h
ViewVC logotype

Annotation of /linuxsampler/trunk/src/common/DynamicLibraries.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2124 - (hide annotations) (download) (as text)
Sat Sep 18 09:24:41 2010 UTC (13 years, 8 months ago) by schoenebeck
File MIME type: text/x-c++hdr
File size: 2490 byte(s)
* implemented support for internal LADSPA effects (work in progress)

1 schoenebeck 2124 /*
2     Copyright (C) 2010 Christian Schoenebeck
3     */
4    
5     #ifndef LS_DYNAMIC_LIBRARIES_H
6     #define LS_DYNAMIC_LIBRARIES_H
7    
8     #include "Exception.h"
9     #include <string>
10    
11     namespace LinuxSampler {
12    
13     /**
14     * Function signature for callback functions used with function
15     * DynamicLibrariesSearch() .
16     *
17     * @param filename - full qualified filename of DLL
18     * @param hDLL - handle of opened DLL
19     * @param pFunction - pointer to requested function of DLL
20     * @param pCustom - (optional) custom data
21     */
22     typedef void DynamicLibrariesSearchCallbackFunction(
23     String filename, void* hDLL, void* pFunction, void* pCustom
24     );
25    
26     /**
27     * Search and load DLLs in the directory given by @a dir . For each DLL found,
28     * the library function supplied by @a funct is tried to be loaded and on
29     * success for each such DLL, the callback function @a pCallback is called.
30     *
31     * @e Note: This function leaves all DLLs open! You should close them once you
32     * don't need them anymore by calling DynamicLibraryClose() .
33     *
34     * @param dir - DLL directory
35     * @param funct - entry function to be loaded for each DLL
36     * @param pCallback - callback function which is called for each DLL found
37     * @param pCustom - (optional) arbitrary data passed to the callback function
38     * @throws Exception - if supplied directory cannot be opened
39     * @returns amount of DLLs loaded successfully
40     */
41     int DynamicLibrariesSearch(String dir, String funct, DynamicLibrariesSearchCallbackFunction* pCallback, void* pCustom = NULL) throw (Exception);
42    
43     /**
44     * Load the DLL given by @a filename . A DLL can be opened multiple times. A
45     * reference count is used in this case.
46     *
47     * @param filename - DLL to be loaded
48     * @returns handle to opened DLL or NULL on error
49     */
50     void* DynamicLibraryOpen(String filename);
51    
52     /**
53     * Retrieve symbol (e.g. function or data structure) with name @a symbol of
54     * DLL @a hDLL .
55     *
56     * @param hDLL - handle of DLL
57     * @param symbol - name of symbol to be accessed
58     * @returns pointer to requested symbol or NULL on error
59     */
60     void* DynamicLibraryGetSymbol(void* hDLL, String symbol);
61    
62     /**
63     * Unload the DLL given by @a hDLL , previously opened by e.g.
64     * DynamicLibrariesSearch() or DynamicLibraryOpen() . If the DLL was opened
65     * multiple times, then just the reference count is decremented and finally when
66     * the reference count reached zero, the library is freed from memory.
67     *
68     * @param hDLL - handle of DLL to be closed
69     */
70     void DynamicLibraryClose(void* hDLL);
71    
72     } // namespace LinuxSampler
73    
74     #endif // LS_DYNAMIC_LIBRARIES_H

  ViewVC Help
Powered by ViewVC