51 #define MODULE_HANDLE void *
53 #define MODULE_HANDLE HMODULE
56#define FUNCMAN_NAME_MAX 256
90 #define NEW_FUNCMAN_OBJECT(key, type) {(key), {0}, {0}, NULL, NULL, 0, 0, PTHREAD_MUTEX_INITIALIZER}
92 #define NEW_FUNCMAN_OBJECT(key, type) {(key), {0}, {0}, NULL, NULL, 0, 0, SRWLOCK_INIT}
114#define funcman_get_func(fobj, type) ((type)_funcman_get_func(fobj))
141 const char *configpath);
176 extern int get_lib_path(
char *out_path,
const size_t out_path_sz,
const void *func_addr);
191 extern int get_lib_basename(
char *out_basename,
const size_t out_basename_sz,
192 const void *func_addr);
int get_lib_basename(char *out_basename, const size_t out_basename_sz, const void *func_addr)
指定した関数が所属する共有ライブラリ (.so/.dll) の basename (パスなし・拡張子なし) を取得します。
#define MODULE_HANDLE
Linux/Windows 共通のモジュールハンドル型。
void funcman_dispose(funcman_object *const *fobj_array, const size_t fobj_length)
funcman_object ポインタ配列を解放します。
#define FUNCMAN_NAME_MAX
lib_name / func_name 配列の最大長 (終端 '\0' を含む)。
int funcman_info(funcman_object *const *fobj_array, const size_t fobj_length)
funcman_object ポインタ配列の内容を標準出力に表示します。
int funcman_is_declared_default(funcman_object *fobj)
funcman_object が明示的デフォルトかどうかを返します。
void * _funcman_get_func(funcman_object *fobj)
拡張関数ポインタを返します。この関数は内部用です。
void funcman_init(funcman_object *const *fobj_array, const size_t fobj_length, const char *configpath)
funcman_object ポインタ配列を初期化します。
int get_lib_path(char *out_path, const size_t out_path_sz, const void *func_addr)
指定した関数が所属する共有ライブラリ (.so/.dll) の絶対パスを取得します。
MODULE_HANDLE handle
キャッシュ済みハンドル (NULL = 未ロード)。
char func_name[FUNCMAN_NAME_MAX]
関数シンボル名。[0]=='\0' = 未設定。
int resolved
解決済フラグ (0 = 未解決)。
void * func_ptr
キャッシュ済み関数ポインタ (NULL = 未取得)。
char lib_name[FUNCMAN_NAME_MAX]
拡張子なしライブラリ名。[0]=='\0' = 未設定。
const char * func_key
この関数インスタンスの識別キー。
pthread_mutex_t mutex
ロード処理を保護する mutex (Linux)。