/**
 * @file      nstdc_dlfcn.h
 * @brief     動的リンクを扱うモジュール
 * @author    Nomura Kei
 * @copyright 2003 - 2017  Nomura Kei
 * License: New BSD License (3-cclause BSD license)
 */
#ifndef NSTDC_DLFCN_H
#define NSTDC_DLFCN_H

#include <stddef.h>
#include <stdbool.h>

#include <nstdc.h>
#include <nstdc_os.h>

#ifdef __cplusplus
extern "C" {
#endif

#if (nstdc_is_windows())
/* for Windows	*/
typedef HINSTANCE       nstdc_dl_handle_t;
typedef FARPROC WINAPI  nstdc_dl_func_t;

#else
/* for Posix	*/
typedef void*           nstdc_dl_handle_t;
typedef void*           nstdc_dl_func_t;

#endif	/* if (nstdc_is_windows())	*/


nstdc_dl_handle_t nstdc_dlopen(const char* filename);
char*             nstdc_dlerror(void);
nstdc_dl_func_t   nstdc_dlsym(nstdc_dl_handle_t handle, const char* symbol);
bool              nstdc_dlclose(nstdc_dl_handle_t handle);


#ifdef __cplusplus
}
#endif

#endif	/* NSTDC_DLFCN_H	*/

