implementing mod-ffi
This commit is contained in:
@ -199,6 +199,10 @@ libhawk_la_SOURCES += \
|
||||
mod-sys.c mod-sys.h
|
||||
libhawk_la_LIBADD += $(SOCKET_LIBS)
|
||||
|
||||
if ENABLE_MOD_FFI
|
||||
libhawk_la_LIBADD += ../mod/libhawk-ffi.la
|
||||
endif
|
||||
|
||||
if ENABLE_MOD_MYSQL
|
||||
libhawk_la_LIBADD += ../mod/libhawk-mysql.la
|
||||
endif
|
||||
|
@ -106,12 +106,13 @@ host_triplet = @host@
|
||||
@ENABLE_STATIC_MODULE_TRUE@ mod-sys.c mod-sys.h
|
||||
|
||||
@ENABLE_STATIC_MODULE_TRUE@am__append_10 = $(SOCKET_LIBS)
|
||||
@ENABLE_MOD_MYSQL_TRUE@@ENABLE_STATIC_MODULE_TRUE@am__append_11 = ../mod/libhawk-mysql.la
|
||||
@ENABLE_MOD_UCI_TRUE@@ENABLE_STATIC_MODULE_TRUE@am__append_12 = ../mod/libhawk-uci.la
|
||||
@ENABLE_MOD_FFI_TRUE@@ENABLE_STATIC_MODULE_TRUE@am__append_11 = ../mod/libhawk-ffi.la
|
||||
@ENABLE_MOD_MYSQL_TRUE@@ENABLE_STATIC_MODULE_TRUE@am__append_12 = ../mod/libhawk-mysql.la
|
||||
@ENABLE_MOD_UCI_TRUE@@ENABLE_STATIC_MODULE_TRUE@am__append_13 = ../mod/libhawk-uci.la
|
||||
|
||||
#pkglibdir = $(libdir)
|
||||
#pkglib_LTLIBRARIES =
|
||||
@ENABLE_STATIC_MODULE_FALSE@am__append_13 = libhawk-hawk.la \
|
||||
@ENABLE_STATIC_MODULE_FALSE@am__append_14 = libhawk-hawk.la \
|
||||
@ENABLE_STATIC_MODULE_FALSE@ libhawk-math.la libhawk-str.la \
|
||||
@ENABLE_STATIC_MODULE_FALSE@ libhawk-sys.la
|
||||
subdir = lib
|
||||
@ -225,7 +226,7 @@ libhawk_sys_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
|
||||
libhawk_la_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
|
||||
$(am__DEPENDENCIES_2) $(am__DEPENDENCIES_3) \
|
||||
$(am__DEPENDENCIES_4) $(am__DEPENDENCIES_5) $(am__append_11) \
|
||||
$(am__append_12)
|
||||
$(am__append_12) $(am__append_13)
|
||||
am__libhawk_la_SOURCES_DIST = hawk.h hawk-arr.h hawk-chr.h hawk-cmn.h \
|
||||
hawk-dir.h hawk-ecs.h hawk-fmt.h hawk-gem.h hawk-htb.h \
|
||||
hawk-map.h hawk-rbt.h hawk-pack1.h hawk-utl.h hawk-std.h \
|
||||
@ -597,7 +598,7 @@ pkginclude_HEADERS = hawk.h hawk-arr.h hawk-chr.h hawk-cmn.h \
|
||||
hawk-dir.h hawk-ecs.h hawk-fmt.h hawk-gem.h hawk-htb.h \
|
||||
hawk-map.h hawk-rbt.h hawk-pack1.h hawk-utl.h hawk-std.h \
|
||||
hawk-tre.h hawk-unpack.h hawk-xma.h $(am__append_7)
|
||||
pkglib_LTLIBRARIES = libhawk.la $(am__append_13)
|
||||
pkglib_LTLIBRARIES = libhawk.la $(am__append_14)
|
||||
libhawk_la_SOURCES = $(pkginclude_HEADERS) arr.c chr.c dir.c ecs-imp.h \
|
||||
ecs.c err-prv.h err.c err-sys.c fmt-imp.h fmt.c fnc-prv.h \
|
||||
fnc.c htb.c gem.c gem-skad.c gem-nwif.c gem-nwif2.c hawk-prv.h \
|
||||
@ -619,7 +620,7 @@ libhawk_la_CXXFLAGS = $(CXXFLAGS_ALL_COMMON)
|
||||
libhawk_la_LDFLAGS = $(LDFLAGS_ALL_COMMON) -version-info 1:0:0 -no-undefined
|
||||
libhawk_la_LIBADD = $(LIBM) $(SOCKET_LIBS) $(am__append_4) \
|
||||
$(am__append_5) $(am__append_6) $(am__append_10) \
|
||||
$(am__append_11) $(am__append_12)
|
||||
$(am__append_11) $(am__append_12) $(am__append_13)
|
||||
@ENABLE_CXX_FALSE@libhawk_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
|
||||
@ENABLE_CXX_FALSE@ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) \
|
||||
@ENABLE_CXX_FALSE@ $(CFLAGS) $(libhawk_la_LDFLAGS) $(LDFLAGS) -o $@
|
||||
|
@ -693,6 +693,9 @@
|
||||
/* use libunwind for backtracing stack frames */
|
||||
#undef HAWK_ENABLE_LIBUNWIND
|
||||
|
||||
/* build mod/ffi */
|
||||
#undef HAWK_ENABLE_MOD_FFI
|
||||
|
||||
/* build mod/mysql */
|
||||
#undef HAWK_ENABLE_MOD_MYSQL
|
||||
|
||||
|
@ -608,3 +608,32 @@ int hawk_buildrex (hawk_t* hawk, const hawk_ooch_t* ptn, hawk_oow_t len, hawk_tr
|
||||
{
|
||||
return hawk_gem_buildrex(hawk_getgem(hawk), ptn, len, !(hawk->opt.trait & HAWK_REXBOUND), code, icode);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* ------------------------------------------------------------------------ */
|
||||
|
||||
int hawk_finmodsymfnc (hawk_t* hawk, hawk_mod_fnc_tab_t* fnctab, hawk_oow_t count, const hawk_ooch_t* name, hawk_oow_t namelen, hawk_mod_sym_t* sym)
|
||||
{
|
||||
int n;
|
||||
|
||||
/* binary search */
|
||||
/* [NOTE] this algorithm is underflow safe with hawk_oow_t types */
|
||||
hawk_oow_t base, mid, lim;
|
||||
|
||||
for (base = 0, lim = count; lim > 0; lim >>= 1)
|
||||
{
|
||||
mid = base + (lim >> 1);
|
||||
n = hawk_comp_oochars_oocstr(name, namelen, fnctab[mid].name);
|
||||
if (n == 0)
|
||||
{
|
||||
sym->type = HAWK_MOD_FNC;
|
||||
sym->u.fnc = fnctab[mid].info;
|
||||
return 0;
|
||||
}
|
||||
if (n > 0) { base = mid + 1; lim--; }
|
||||
}
|
||||
|
||||
hawk_seterrbfmt (hawk, HAWK_NULL, HAWK_ENOENT, "'%js' not found", name);
|
||||
return -1;
|
||||
}
|
||||
|
@ -1046,6 +1046,14 @@ struct hawk_mod_sym_t
|
||||
} u;
|
||||
};
|
||||
|
||||
/* ------------------------------------------------------------------------ */
|
||||
|
||||
typedef struct hawk_mod_fnc_tab_t hawk_mod_fnc_tab_t;
|
||||
struct hawk_mod_fnc_tab_t
|
||||
{
|
||||
const hawk_ooch_t* name;
|
||||
hawk_mod_sym_fnc_t info;
|
||||
};
|
||||
|
||||
/* ------------------------------------------------------------------------ */
|
||||
|
||||
|
@ -7373,6 +7373,10 @@ int hawk_putsrcoochars (hawk_t* hawk, const hawk_ooch_t* str, hawk_oow_t len)
|
||||
#include "mod-str.h"
|
||||
#include "mod-sys.h"
|
||||
|
||||
#if defined(HAWK_ENABLE_MOD_FFI)
|
||||
#include "../mod/mod-ffi.h"
|
||||
#endif
|
||||
|
||||
#if defined(HAWK_ENABLE_MOD_MYSQL)
|
||||
#include "../mod/mod-mysql.h"
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user