/*
* This file is part of libbluray
* Copyright (C) 2009-2010 Obliter0n
* Copyright (C) 2009-2010 John Stebbins
*
* This library 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.1 of the License, or (at your option) any later version.
*
* This library 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 this library. If not, see
* .
*/
#ifndef DL_H_
#define DL_H_
#include "util/attributes.h"
#include
/*
* function pointer types
*/
#ifdef __cplusplus
typedef void (*fptr_void)(...);
typedef int (*fptr_int)(...);
typedef int32_t (*fptr_int32)(...);
typedef void* (*fptr_p_void)(...);
#else
typedef void (*fptr_void)();
typedef int (*fptr_int)();
typedef int32_t (*fptr_int32)();
typedef void* (*fptr_p_void)();
#endif
/*
* Macro to call function without return value
*/
#define DL_CALL(lib,func,...) \
do { \
fptr_p_void fptr; \
*(void **)(&fptr) = dl_dlsym(lib, #func); \
if (fptr) { \
fptr(__VA_ARGS__); \
} \
} while (0)
// We don't bother aliasing dlopen to dlopen_posix, since only one
// of the .C files will be compiled and linked, the right one for the
// platform.
// Note the dlopen takes just the name part. "aacs", internally we
// translate to "libaacs.so" "libaacs.dylib" or "aacs.dll".
BD_PRIVATE void *dl_dlopen ( const char* path, const char *version );
BD_PRIVATE void *dl_dlsym ( void* handle, const char* symbol );
BD_PRIVATE int dl_dlclose ( void* handle );
/*
* Installation path of currently running libbluray.so
* returns NULL if unknown.
*
* This function is used to help finding libbluray.jar if location
* is not given in LIBBLURAY_CP environment variable.
*/
BD_PRIVATE const char *dl_get_path(void);
#endif /* DL_H_ */