1 /* -*- c-basic-offset: 2 -*- */
2 /*
3   Copyright(C) 2010-2016 Brazil
4 
5   This library is free software; you can redistribute it and/or
6   modify it under the terms of the GNU Lesser General Public
7   License version 2.1 as published by the Free Software Foundation.
8 
9   This library is distributed in the hope that it will be useful,
10   but WITHOUT ANY WARRANTY; without even the implied warranty of
11   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12   Lesser General Public License for more details.
13 
14   You should have received a copy of the GNU Lesser General Public
15   License along with this library; if not, write to the Free Software
16   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1335  USA
17 */
18 
19 #pragma once
20 
21 #include "grn.h"
22 #include "grn_ctx.h"
23 #include "grn_store.h"
24 
25 #ifdef __cplusplus
26 extern "C" {
27 #endif
28 
29 #ifdef WIN32
30 typedef HINSTANCE grn_dl;
31 typedef FARPROC grn_dl_symbol;
32 
33 #else
34 typedef void * grn_dl;
35 typedef void * grn_dl_symbol;
36 #endif
37 
38 typedef struct _grn_plugin grn_plugin;
39 
40 struct _grn_plugin {
41   char path[PATH_MAX];
42   grn_dl dl;
43   grn_plugin_func init_func;
44   grn_plugin_func register_func;
45   grn_plugin_func unregister_func;
46   grn_plugin_func fin_func;
47   int refcount;
48 };
49 
50 void grn_plugin_init_from_env(void);
51 grn_rc grn_plugins_init(void);
52 grn_rc grn_plugins_fin(void);
53 grn_id grn_plugin_open(grn_ctx *ctx, const char *filename);
54 grn_rc grn_plugin_close(grn_ctx *ctx, grn_id id);
55 grn_id grn_plugin_reference(grn_ctx *ctx, const char *filename);
56 const char *grn_plugin_path(grn_ctx *ctx, grn_id id);
57 char *grn_plugin_find_path(grn_ctx *ctx, const char *name);
58 void grn_plugin_ensure_registered(grn_ctx *ctx, grn_obj *proc);
59 
60 #ifdef __cplusplus
61 }
62 #endif
63