| | 66 | |
|---|
| | 67 | //****************************************************************************** |
|---|
| | 68 | |
|---|
| | 69 | /** |
|---|
| | 70 | * The MissingProcCallback allows the app to handle the case of missing symbols. By default, |
|---|
| | 71 | * a SharedLibProcLoadException is thrown. However, if a the app determines that |
|---|
| | 72 | * particular symbol is not needed, the callback can return true. This will cause |
|---|
| | 73 | * the shared library to continue loading. Returning false will cause the exception |
|---|
| | 74 | * to be thrown. |
|---|
| | 75 | */ |
|---|
| | 76 | typedef bool function(char[] libName, char[] procName) MissingProcCallback; |
|---|
| | 77 | |
|---|
| | 78 | private MissingProcCallback missingProcCallback; |
|---|
| | 79 | |
|---|
| | 80 | package void Derelict_HandleMissingProc(char[] libName, char[] procName) |
|---|
| | 81 | { |
|---|
| | 82 | bool result = false; |
|---|
| | 83 | if(missingProcCallback !== null) |
|---|
| | 84 | result = missingProcCallback(libName, procName); |
|---|
| | 85 | if(!result) |
|---|
| | 86 | throw new SharedLibProcLoadException(libName, procName); |
|---|
| | 87 | } |
|---|
| | 88 | |
|---|
| | 89 | void Derelict_SetMissingProcCallback(MissingProcCallback callback) |
|---|
| | 90 | { |
|---|
| | 91 | missingProcCallback = callback; |
|---|
| | 92 | } |
|---|