touched up code
This commit is contained in:
parent
8f985290d0
commit
6916198253
@ -272,6 +272,7 @@
|
|||||||
{
|
{
|
||||||
self.funcs := Dictionary new.
|
self.funcs := Dictionary new.
|
||||||
self.name := aString.
|
self.name := aString.
|
||||||
|
|
||||||
self.handle := self privateOpen: self.name.
|
self.handle := self privateOpen: self.name.
|
||||||
|
|
||||||
"[ self.handle := self privateOpen: self.name ]
|
"[ self.handle := self privateOpen: self.name ]
|
||||||
|
@ -226,27 +226,31 @@
|
|||||||
|
|
||||||
#method(#class) abc
|
#method(#class) abc
|
||||||
{
|
{
|
||||||
<primitive: #abc_integer_add>
|
<primitive: #snd_open>
|
||||||
}
|
}
|
||||||
|
|
||||||
#method(#class) main
|
#method(#class) main
|
||||||
{
|
{
|
||||||
"| ffi |
|
"
|
||||||
|
| ffi |
|
||||||
ffi := FFI new: 'libc.so.6'.
|
ffi := FFI new: 'libc.so.6'.
|
||||||
|
|
||||||
## ffi call: #printf with: #((str '%d') (int 10) (long 20)).
|
## ffi call: #printf with: #((str '%d') (int 10) (long 20)).
|
||||||
ffi call: #printf withSig: 'i|sii' withArgs: #(S'hello world %d %d\n' 11123 9876543).
|
ffi call: #printf withSig: 'i|sii' withArgs: #(S'hello world %d %d\n' 11123 9876543).
|
||||||
## ffi call: #puts withSig: 'i|s' withArgs: #('hello world').
|
## ffi call: #puts withSig: 'i|s' withArgs: #('hello world').
|
||||||
ffi close."
|
ffi close.
|
||||||
|
"
|
||||||
self abc.
|
self abc.
|
||||||
self abc.
|
self abc.
|
||||||
self abc.
|
self abc.
|
||||||
|
"
|
||||||
FFI isNil dump.
|
FFI isNil dump.
|
||||||
FFI notNil dump.
|
FFI notNil dump.
|
||||||
nil isNil dump.
|
nil isNil dump.
|
||||||
nil notNil dump.
|
nil notNil dump.
|
||||||
nil class dump.
|
nil class dump.
|
||||||
nil class class class dump.
|
nil class class class dump.
|
||||||
|
"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,18 +1,18 @@
|
|||||||
AUTOMAKE_OPTIONS = nostdinc
|
AUTOMAKE_OPTIONS = nostdinc
|
||||||
|
|
||||||
CPPFLAGS_ALL_COMMON = \
|
CPPFLAGS_ALL_COMMON = \
|
||||||
-I$(top_builddir)/include \
|
-I$(abs_builddir) \
|
||||||
-I$(top_srcdir)/include \
|
-I$(abs_srcdir) \
|
||||||
-I$(includedir)
|
-I$(includedir)
|
||||||
|
|
||||||
LDFLAGS_ALL_COMMON = -L. -L$(libdir) -version-info 1:0:0 -no-undefined
|
LDFLAGS_ALL_COMMON = -L$(abs_builddir) -L$(libdir)
|
||||||
|
|
||||||
##################################################
|
##################################################
|
||||||
# MAIN LIBRARY
|
# MAIN LIBRARY
|
||||||
##################################################
|
##################################################
|
||||||
|
|
||||||
CPPFLAGS_LIB_COMMON = $(CPPFLAGS_ALL_COMMON) $(LTDLINCL)
|
CPPFLAGS_LIB_COMMON = $(CPPFLAGS_ALL_COMMON) $(LTDLINCL)
|
||||||
LDFLAGS_LIB_COMMON = $(LDFLAGS_ALL_COMMON)
|
LDFLAGS_LIB_COMMON = $(LDFLAGS_ALL_COMMON) -version-info 1:0:0 -no-undefined
|
||||||
LIBADD_LIB_COMMON = $(LIBM) $(LIBLTDL)
|
LIBADD_LIB_COMMON = $(LIBM) $(LIBLTDL)
|
||||||
|
|
||||||
if WIN32
|
if WIN32
|
||||||
@ -31,12 +31,14 @@ pkginclude_HEADERS = \
|
|||||||
stix-cfg.h \
|
stix-cfg.h \
|
||||||
stix-cmn.h \
|
stix-cmn.h \
|
||||||
stix-rbt.h \
|
stix-rbt.h \
|
||||||
|
stix-utl.h \
|
||||||
stix.h
|
stix.h
|
||||||
|
|
||||||
pkglib_LTLIBRARIES = libstix.la
|
pkglib_LTLIBRARIES = libstix.la
|
||||||
libstix_la_SOURCES = \
|
libstix_la_SOURCES = \
|
||||||
stix-prv.h \
|
stix-prv.h \
|
||||||
stix-rbt.c \
|
stix-rbt.c \
|
||||||
|
stix-utl.c \
|
||||||
stix.c \
|
stix.c \
|
||||||
heap.c \
|
heap.c \
|
||||||
gc.c \
|
gc.c \
|
||||||
@ -72,17 +74,17 @@ else
|
|||||||
# DYNAMIC MODULES
|
# DYNAMIC MODULES
|
||||||
##################################################
|
##################################################
|
||||||
|
|
||||||
#CPPFLAGS_MOD_COMMON = $(CPPFLAGS_ALL_COMMON)
|
CPPFLAGS_MOD_COMMON = $(CPPFLAGS_LIB_COMMON)
|
||||||
#LDFLAGS_MOD_COMMON = $(LDFLAGS_ALL_COMMON)
|
LDFLAGS_MOD_COMMON = $(LDFLAGS_LIB_COMMON)
|
||||||
#LIBADD_MOD_COMMON = -lstix
|
LIBADD_MOD_COMMON = -lstix
|
||||||
|
|
||||||
#modexecdir = $(libdir)
|
pkgmodexecdir = $(libdir)
|
||||||
|
|
||||||
#modexec_LTLIBRARIES = libstix-dir.la
|
pkgmodexec_LTLIBRARIES = libstix-snd.la
|
||||||
#ibstix_dir_la_SOURCES = mod-dir.c mod-dir.h
|
libstix_snd_la_SOURCES = mod-snd.c mod-snd.h
|
||||||
#ibstix_dir_la_CPPFLAGS = $(CPPFLAGS_MOD_COMMON)
|
libstix_snd_la_CPPFLAGS = $(CPPFLAGS_MOD_COMMON)
|
||||||
#ibstix_dir_la_LDFLAGS = $(LDFLAGS_MOD_COMMON)
|
libstix_snd_la_LDFLAGS = $(LDFLAGS_MOD_COMMON)
|
||||||
#ibstix_dir_la_LIBADD = $(LIBADD_MOD_COMMON)
|
libstix_snd_la_LIBADD = $(LIBADD_MOD_COMMON)
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
@ -101,21 +101,34 @@ am__uninstall_files_from_dir = { \
|
|||||||
|| { echo " ( cd '$$dir' && rm -f" $$files ")"; \
|
|| { echo " ( cd '$$dir' && rm -f" $$files ")"; \
|
||||||
$(am__cd) "$$dir" && rm -f $$files; }; \
|
$(am__cd) "$$dir" && rm -f $$files; }; \
|
||||||
}
|
}
|
||||||
am__installdirs = "$(DESTDIR)$(pkglibdir)" "$(DESTDIR)$(pkgbindir)" \
|
am__installdirs = "$(DESTDIR)$(pkglibdir)" \
|
||||||
|
"$(DESTDIR)$(pkgmodexecdir)" "$(DESTDIR)$(pkgbindir)" \
|
||||||
"$(DESTDIR)$(pkgincludedir)"
|
"$(DESTDIR)$(pkgincludedir)"
|
||||||
LTLIBRARIES = $(pkglib_LTLIBRARIES)
|
LTLIBRARIES = $(pkglib_LTLIBRARIES) $(pkgmodexec_LTLIBRARIES)
|
||||||
am__DEPENDENCIES_1 =
|
am__DEPENDENCIES_1 =
|
||||||
am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
|
@ENABLE_STATIC_MODULE_FALSE@libstix_snd_la_DEPENDENCIES = \
|
||||||
libstix_la_DEPENDENCIES = $(am__DEPENDENCIES_2)
|
@ENABLE_STATIC_MODULE_FALSE@ $(am__DEPENDENCIES_1)
|
||||||
am_libstix_la_OBJECTS = libstix_la-stix-rbt.lo libstix_la-stix.lo \
|
am__libstix_snd_la_SOURCES_DIST = mod-snd.c mod-snd.h
|
||||||
libstix_la-heap.lo libstix_la-gc.lo libstix_la-obj.lo \
|
@ENABLE_STATIC_MODULE_FALSE@am_libstix_snd_la_OBJECTS = \
|
||||||
libstix_la-sym.lo libstix_la-dic.lo libstix_la-ignite.lo \
|
@ENABLE_STATIC_MODULE_FALSE@ libstix_snd_la-mod-snd.lo
|
||||||
libstix_la-utf8.lo libstix_la-comp.lo libstix_la-exec.lo \
|
libstix_snd_la_OBJECTS = $(am_libstix_snd_la_OBJECTS)
|
||||||
libstix_la-debug.lo
|
|
||||||
libstix_la_OBJECTS = $(am_libstix_la_OBJECTS)
|
|
||||||
AM_V_lt = $(am__v_lt_@AM_V@)
|
AM_V_lt = $(am__v_lt_@AM_V@)
|
||||||
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
|
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
|
||||||
am__v_lt_0 = --silent
|
am__v_lt_0 = --silent
|
||||||
|
libstix_snd_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
|
||||||
|
$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
|
||||||
|
$(AM_CFLAGS) $(CFLAGS) $(libstix_snd_la_LDFLAGS) $(LDFLAGS) -o \
|
||||||
|
$@
|
||||||
|
@ENABLE_STATIC_MODULE_FALSE@am_libstix_snd_la_rpath = -rpath \
|
||||||
|
@ENABLE_STATIC_MODULE_FALSE@ $(pkgmodexecdir)
|
||||||
|
am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
|
||||||
|
libstix_la_DEPENDENCIES = $(am__DEPENDENCIES_2)
|
||||||
|
am_libstix_la_OBJECTS = libstix_la-stix-rbt.lo libstix_la-stix-utl.lo \
|
||||||
|
libstix_la-stix.lo libstix_la-heap.lo libstix_la-gc.lo \
|
||||||
|
libstix_la-obj.lo libstix_la-sym.lo libstix_la-dic.lo \
|
||||||
|
libstix_la-ignite.lo libstix_la-utf8.lo libstix_la-comp.lo \
|
||||||
|
libstix_la-exec.lo libstix_la-debug.lo
|
||||||
|
libstix_la_OBJECTS = $(am_libstix_la_OBJECTS)
|
||||||
libstix_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
|
libstix_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
|
||||||
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
|
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
|
||||||
$(libstix_la_LDFLAGS) $(LDFLAGS) -o $@
|
$(libstix_la_LDFLAGS) $(LDFLAGS) -o $@
|
||||||
@ -152,8 +165,10 @@ am__v_CCLD_0 = @echo " CCLD " $@;
|
|||||||
AM_V_GEN = $(am__v_GEN_@AM_V@)
|
AM_V_GEN = $(am__v_GEN_@AM_V@)
|
||||||
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
|
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
|
||||||
am__v_GEN_0 = @echo " GEN " $@;
|
am__v_GEN_0 = @echo " GEN " $@;
|
||||||
SOURCES = $(libstix_la_SOURCES) $(stix_SOURCES)
|
SOURCES = $(libstix_snd_la_SOURCES) $(libstix_la_SOURCES) \
|
||||||
DIST_SOURCES = $(libstix_la_SOURCES) $(stix_SOURCES)
|
$(stix_SOURCES)
|
||||||
|
DIST_SOURCES = $(am__libstix_snd_la_SOURCES_DIST) \
|
||||||
|
$(libstix_la_SOURCES) $(stix_SOURCES)
|
||||||
am__can_run_installinfo = \
|
am__can_run_installinfo = \
|
||||||
case $$AM_UPDATE_INFO_DIR in \
|
case $$AM_UPDATE_INFO_DIR in \
|
||||||
n|no|NO) false;; \
|
n|no|NO) false;; \
|
||||||
@ -333,30 +348,32 @@ top_builddir = @top_builddir@
|
|||||||
top_srcdir = @top_srcdir@
|
top_srcdir = @top_srcdir@
|
||||||
AUTOMAKE_OPTIONS = nostdinc
|
AUTOMAKE_OPTIONS = nostdinc
|
||||||
CPPFLAGS_ALL_COMMON = \
|
CPPFLAGS_ALL_COMMON = \
|
||||||
-I$(top_builddir)/include \
|
-I$(abs_builddir) \
|
||||||
-I$(top_srcdir)/include \
|
-I$(abs_srcdir) \
|
||||||
-I$(includedir)
|
-I$(includedir)
|
||||||
|
|
||||||
LDFLAGS_ALL_COMMON = -L. -L$(libdir) -version-info 1:0:0 -no-undefined
|
LDFLAGS_ALL_COMMON = -L$(abs_builddir) -L$(libdir)
|
||||||
|
|
||||||
##################################################
|
##################################################
|
||||||
# MAIN LIBRARY
|
# MAIN LIBRARY
|
||||||
##################################################
|
##################################################
|
||||||
CPPFLAGS_LIB_COMMON = $(CPPFLAGS_ALL_COMMON) $(LTDLINCL) \
|
CPPFLAGS_LIB_COMMON = $(CPPFLAGS_ALL_COMMON) $(LTDLINCL) \
|
||||||
$(am__append_1) $(am__append_2)
|
$(am__append_1) $(am__append_2)
|
||||||
LDFLAGS_LIB_COMMON = $(LDFLAGS_ALL_COMMON)
|
LDFLAGS_LIB_COMMON = $(LDFLAGS_ALL_COMMON) -version-info 1:0:0 -no-undefined
|
||||||
LIBADD_LIB_COMMON = $(LIBM) $(LIBLTDL)
|
LIBADD_LIB_COMMON = $(LIBM) $(LIBLTDL)
|
||||||
pkgbindir = $(bindir)
|
pkgbindir = $(bindir)
|
||||||
pkginclude_HEADERS = \
|
pkginclude_HEADERS = \
|
||||||
stix-cfg.h \
|
stix-cfg.h \
|
||||||
stix-cmn.h \
|
stix-cmn.h \
|
||||||
stix-rbt.h \
|
stix-rbt.h \
|
||||||
|
stix-utl.h \
|
||||||
stix.h
|
stix.h
|
||||||
|
|
||||||
pkglib_LTLIBRARIES = libstix.la
|
pkglib_LTLIBRARIES = libstix.la
|
||||||
libstix_la_SOURCES = \
|
libstix_la_SOURCES = \
|
||||||
stix-prv.h \
|
stix-prv.h \
|
||||||
stix-rbt.c \
|
stix-rbt.c \
|
||||||
|
stix-utl.c \
|
||||||
stix.c \
|
stix.c \
|
||||||
heap.c \
|
heap.c \
|
||||||
gc.c \
|
gc.c \
|
||||||
@ -376,6 +393,26 @@ stix_SOURCES = main.c
|
|||||||
stix_CPPFLAGS = $(CPPFLAGS_LIB_COMMON)
|
stix_CPPFLAGS = $(CPPFLAGS_LIB_COMMON)
|
||||||
stix_LDFLAGS = $(LDFLAGS_LIB_COMMON)
|
stix_LDFLAGS = $(LDFLAGS_LIB_COMMON)
|
||||||
stix_LDADD = $(LIBADD_LIB_COMMON) -lstix -ldyncall_s
|
stix_LDADD = $(LIBADD_LIB_COMMON) -lstix -ldyncall_s
|
||||||
|
|
||||||
|
##################################################
|
||||||
|
# STATIC MODULES BUILT INTO MAIN LIBRARY
|
||||||
|
##################################################
|
||||||
|
#libstix_la_SOURCES += \
|
||||||
|
# mod-dir.c mod-dir.h \
|
||||||
|
#libstix_la_LIBADD +=
|
||||||
|
|
||||||
|
##################################################
|
||||||
|
# DYNAMIC MODULES
|
||||||
|
##################################################
|
||||||
|
@ENABLE_STATIC_MODULE_FALSE@CPPFLAGS_MOD_COMMON = $(CPPFLAGS_LIB_COMMON)
|
||||||
|
@ENABLE_STATIC_MODULE_FALSE@LDFLAGS_MOD_COMMON = $(LDFLAGS_LIB_COMMON)
|
||||||
|
@ENABLE_STATIC_MODULE_FALSE@LIBADD_MOD_COMMON = -lstix
|
||||||
|
@ENABLE_STATIC_MODULE_FALSE@pkgmodexecdir = $(libdir)
|
||||||
|
@ENABLE_STATIC_MODULE_FALSE@pkgmodexec_LTLIBRARIES = libstix-snd.la
|
||||||
|
@ENABLE_STATIC_MODULE_FALSE@libstix_snd_la_SOURCES = mod-snd.c mod-snd.h
|
||||||
|
@ENABLE_STATIC_MODULE_FALSE@libstix_snd_la_CPPFLAGS = $(CPPFLAGS_MOD_COMMON)
|
||||||
|
@ENABLE_STATIC_MODULE_FALSE@libstix_snd_la_LDFLAGS = $(LDFLAGS_MOD_COMMON)
|
||||||
|
@ENABLE_STATIC_MODULE_FALSE@libstix_snd_la_LIBADD = $(LIBADD_MOD_COMMON)
|
||||||
all: stix-cfg.h
|
all: stix-cfg.h
|
||||||
$(MAKE) $(AM_MAKEFLAGS) all-am
|
$(MAKE) $(AM_MAKEFLAGS) all-am
|
||||||
|
|
||||||
@ -458,6 +495,40 @@ clean-pkglibLTLIBRARIES:
|
|||||||
echo "rm -f \"$${dir}/so_locations\""; \
|
echo "rm -f \"$${dir}/so_locations\""; \
|
||||||
rm -f "$${dir}/so_locations"; \
|
rm -f "$${dir}/so_locations"; \
|
||||||
done
|
done
|
||||||
|
install-pkgmodexecLTLIBRARIES: $(pkgmodexec_LTLIBRARIES)
|
||||||
|
@$(NORMAL_INSTALL)
|
||||||
|
@list='$(pkgmodexec_LTLIBRARIES)'; test -n "$(pkgmodexecdir)" || list=; \
|
||||||
|
list2=; for p in $$list; do \
|
||||||
|
if test -f $$p; then \
|
||||||
|
list2="$$list2 $$p"; \
|
||||||
|
else :; fi; \
|
||||||
|
done; \
|
||||||
|
test -z "$$list2" || { \
|
||||||
|
echo " $(MKDIR_P) '$(DESTDIR)$(pkgmodexecdir)'"; \
|
||||||
|
$(MKDIR_P) "$(DESTDIR)$(pkgmodexecdir)" || exit 1; \
|
||||||
|
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkgmodexecdir)'"; \
|
||||||
|
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkgmodexecdir)"; \
|
||||||
|
}
|
||||||
|
|
||||||
|
uninstall-pkgmodexecLTLIBRARIES:
|
||||||
|
@$(NORMAL_UNINSTALL)
|
||||||
|
@list='$(pkgmodexec_LTLIBRARIES)'; test -n "$(pkgmodexecdir)" || list=; \
|
||||||
|
for p in $$list; do \
|
||||||
|
$(am__strip_dir) \
|
||||||
|
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkgmodexecdir)/$$f'"; \
|
||||||
|
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkgmodexecdir)/$$f"; \
|
||||||
|
done
|
||||||
|
|
||||||
|
clean-pkgmodexecLTLIBRARIES:
|
||||||
|
-test -z "$(pkgmodexec_LTLIBRARIES)" || rm -f $(pkgmodexec_LTLIBRARIES)
|
||||||
|
@list='$(pkgmodexec_LTLIBRARIES)'; for p in $$list; do \
|
||||||
|
dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
|
||||||
|
test "$$dir" != "$$p" || dir=.; \
|
||||||
|
echo "rm -f \"$${dir}/so_locations\""; \
|
||||||
|
rm -f "$${dir}/so_locations"; \
|
||||||
|
done
|
||||||
|
libstix-snd.la: $(libstix_snd_la_OBJECTS) $(libstix_snd_la_DEPENDENCIES) $(EXTRA_libstix_snd_la_DEPENDENCIES)
|
||||||
|
$(AM_V_CCLD)$(libstix_snd_la_LINK) $(am_libstix_snd_la_rpath) $(libstix_snd_la_OBJECTS) $(libstix_snd_la_LIBADD) $(LIBS)
|
||||||
libstix.la: $(libstix_la_OBJECTS) $(libstix_la_DEPENDENCIES) $(EXTRA_libstix_la_DEPENDENCIES)
|
libstix.la: $(libstix_la_OBJECTS) $(libstix_la_DEPENDENCIES) $(EXTRA_libstix_la_DEPENDENCIES)
|
||||||
$(AM_V_CCLD)$(libstix_la_LINK) -rpath $(pkglibdir) $(libstix_la_OBJECTS) $(libstix_la_LIBADD) $(LIBS)
|
$(AM_V_CCLD)$(libstix_la_LINK) -rpath $(pkglibdir) $(libstix_la_OBJECTS) $(libstix_la_LIBADD) $(LIBS)
|
||||||
install-pkgbinPROGRAMS: $(pkgbin_PROGRAMS)
|
install-pkgbinPROGRAMS: $(pkgbin_PROGRAMS)
|
||||||
@ -525,9 +596,11 @@ distclean-compile:
|
|||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstix_la-ignite.Plo@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstix_la-ignite.Plo@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstix_la-obj.Plo@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstix_la-obj.Plo@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstix_la-stix-rbt.Plo@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstix_la-stix-rbt.Plo@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstix_la-stix-utl.Plo@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstix_la-stix.Plo@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstix_la-stix.Plo@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstix_la-sym.Plo@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstix_la-sym.Plo@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstix_la-utf8.Plo@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstix_la-utf8.Plo@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstix_snd_la-mod-snd.Plo@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stix-main.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stix-main.Po@am__quote@
|
||||||
|
|
||||||
.c.o:
|
.c.o:
|
||||||
@ -551,6 +624,13 @@ distclean-compile:
|
|||||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
|
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
|
||||||
|
|
||||||
|
libstix_snd_la-mod-snd.lo: mod-snd.c
|
||||||
|
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstix_snd_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libstix_snd_la-mod-snd.lo -MD -MP -MF $(DEPDIR)/libstix_snd_la-mod-snd.Tpo -c -o libstix_snd_la-mod-snd.lo `test -f 'mod-snd.c' || echo '$(srcdir)/'`mod-snd.c
|
||||||
|
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libstix_snd_la-mod-snd.Tpo $(DEPDIR)/libstix_snd_la-mod-snd.Plo
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mod-snd.c' object='libstix_snd_la-mod-snd.lo' libtool=yes @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstix_snd_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libstix_snd_la-mod-snd.lo `test -f 'mod-snd.c' || echo '$(srcdir)/'`mod-snd.c
|
||||||
|
|
||||||
libstix_la-stix-rbt.lo: stix-rbt.c
|
libstix_la-stix-rbt.lo: stix-rbt.c
|
||||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstix_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libstix_la-stix-rbt.lo -MD -MP -MF $(DEPDIR)/libstix_la-stix-rbt.Tpo -c -o libstix_la-stix-rbt.lo `test -f 'stix-rbt.c' || echo '$(srcdir)/'`stix-rbt.c
|
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstix_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libstix_la-stix-rbt.lo -MD -MP -MF $(DEPDIR)/libstix_la-stix-rbt.Tpo -c -o libstix_la-stix-rbt.lo `test -f 'stix-rbt.c' || echo '$(srcdir)/'`stix-rbt.c
|
||||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libstix_la-stix-rbt.Tpo $(DEPDIR)/libstix_la-stix-rbt.Plo
|
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libstix_la-stix-rbt.Tpo $(DEPDIR)/libstix_la-stix-rbt.Plo
|
||||||
@ -558,6 +638,13 @@ libstix_la-stix-rbt.lo: stix-rbt.c
|
|||||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstix_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libstix_la-stix-rbt.lo `test -f 'stix-rbt.c' || echo '$(srcdir)/'`stix-rbt.c
|
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstix_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libstix_la-stix-rbt.lo `test -f 'stix-rbt.c' || echo '$(srcdir)/'`stix-rbt.c
|
||||||
|
|
||||||
|
libstix_la-stix-utl.lo: stix-utl.c
|
||||||
|
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstix_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libstix_la-stix-utl.lo -MD -MP -MF $(DEPDIR)/libstix_la-stix-utl.Tpo -c -o libstix_la-stix-utl.lo `test -f 'stix-utl.c' || echo '$(srcdir)/'`stix-utl.c
|
||||||
|
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libstix_la-stix-utl.Tpo $(DEPDIR)/libstix_la-stix-utl.Plo
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='stix-utl.c' object='libstix_la-stix-utl.lo' libtool=yes @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstix_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libstix_la-stix-utl.lo `test -f 'stix-utl.c' || echo '$(srcdir)/'`stix-utl.c
|
||||||
|
|
||||||
libstix_la-stix.lo: stix.c
|
libstix_la-stix.lo: stix.c
|
||||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstix_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libstix_la-stix.lo -MD -MP -MF $(DEPDIR)/libstix_la-stix.Tpo -c -o libstix_la-stix.lo `test -f 'stix.c' || echo '$(srcdir)/'`stix.c
|
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstix_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libstix_la-stix.lo -MD -MP -MF $(DEPDIR)/libstix_la-stix.Tpo -c -o libstix_la-stix.lo `test -f 'stix.c' || echo '$(srcdir)/'`stix.c
|
||||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libstix_la-stix.Tpo $(DEPDIR)/libstix_la-stix.Plo
|
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libstix_la-stix.Tpo $(DEPDIR)/libstix_la-stix.Plo
|
||||||
@ -762,7 +849,7 @@ check-am: all-am
|
|||||||
check: check-am
|
check: check-am
|
||||||
all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(HEADERS) stix-cfg.h
|
all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(HEADERS) stix-cfg.h
|
||||||
installdirs:
|
installdirs:
|
||||||
for dir in "$(DESTDIR)$(pkglibdir)" "$(DESTDIR)$(pkgbindir)" "$(DESTDIR)$(pkgincludedir)"; do \
|
for dir in "$(DESTDIR)$(pkglibdir)" "$(DESTDIR)$(pkgmodexecdir)" "$(DESTDIR)$(pkgbindir)" "$(DESTDIR)$(pkgincludedir)"; do \
|
||||||
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
|
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
|
||||||
done
|
done
|
||||||
install: install-am
|
install: install-am
|
||||||
@ -798,7 +885,8 @@ maintainer-clean-generic:
|
|||||||
clean: clean-am
|
clean: clean-am
|
||||||
|
|
||||||
clean-am: clean-generic clean-libtool clean-pkgbinPROGRAMS \
|
clean-am: clean-generic clean-libtool clean-pkgbinPROGRAMS \
|
||||||
clean-pkglibLTLIBRARIES mostlyclean-am
|
clean-pkglibLTLIBRARIES clean-pkgmodexecLTLIBRARIES \
|
||||||
|
mostlyclean-am
|
||||||
|
|
||||||
distclean: distclean-am
|
distclean: distclean-am
|
||||||
-rm -rf ./$(DEPDIR)
|
-rm -rf ./$(DEPDIR)
|
||||||
@ -825,7 +913,8 @@ install-dvi: install-dvi-am
|
|||||||
|
|
||||||
install-dvi-am:
|
install-dvi-am:
|
||||||
|
|
||||||
install-exec-am: install-pkglibLTLIBRARIES
|
install-exec-am: install-pkglibLTLIBRARIES \
|
||||||
|
install-pkgmodexecLTLIBRARIES
|
||||||
|
|
||||||
install-html: install-html-am
|
install-html: install-html-am
|
||||||
|
|
||||||
@ -866,52 +955,31 @@ ps: ps-am
|
|||||||
ps-am:
|
ps-am:
|
||||||
|
|
||||||
uninstall-am: uninstall-pkgbinPROGRAMS uninstall-pkgincludeHEADERS \
|
uninstall-am: uninstall-pkgbinPROGRAMS uninstall-pkgincludeHEADERS \
|
||||||
uninstall-pkglibLTLIBRARIES
|
uninstall-pkglibLTLIBRARIES uninstall-pkgmodexecLTLIBRARIES
|
||||||
@$(NORMAL_INSTALL)
|
@$(NORMAL_INSTALL)
|
||||||
$(MAKE) $(AM_MAKEFLAGS) uninstall-hook
|
$(MAKE) $(AM_MAKEFLAGS) uninstall-hook
|
||||||
.MAKE: all install-am install-data-am install-strip uninstall-am
|
.MAKE: all install-am install-data-am install-strip uninstall-am
|
||||||
|
|
||||||
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
|
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
|
||||||
clean-libtool clean-pkgbinPROGRAMS clean-pkglibLTLIBRARIES \
|
clean-libtool clean-pkgbinPROGRAMS clean-pkglibLTLIBRARIES \
|
||||||
ctags distclean distclean-compile distclean-generic \
|
clean-pkgmodexecLTLIBRARIES ctags distclean distclean-compile \
|
||||||
distclean-hdr distclean-libtool distclean-tags distdir dvi \
|
distclean-generic distclean-hdr distclean-libtool \
|
||||||
dvi-am html html-am info info-am install install-am \
|
distclean-tags distdir dvi dvi-am html html-am info info-am \
|
||||||
install-data install-data-am install-data-hook install-dvi \
|
install install-am install-data install-data-am \
|
||||||
install-dvi-am install-exec install-exec-am install-html \
|
install-data-hook install-dvi install-dvi-am install-exec \
|
||||||
install-html-am install-info install-info-am install-man \
|
install-exec-am install-html install-html-am install-info \
|
||||||
install-pdf install-pdf-am install-pkgbinPROGRAMS \
|
install-info-am install-man install-pdf install-pdf-am \
|
||||||
install-pkgincludeHEADERS install-pkglibLTLIBRARIES install-ps \
|
install-pkgbinPROGRAMS install-pkgincludeHEADERS \
|
||||||
install-ps-am install-strip installcheck installcheck-am \
|
install-pkglibLTLIBRARIES install-pkgmodexecLTLIBRARIES \
|
||||||
installdirs maintainer-clean maintainer-clean-generic \
|
install-ps install-ps-am install-strip installcheck \
|
||||||
mostlyclean mostlyclean-compile mostlyclean-generic \
|
installcheck-am installdirs maintainer-clean \
|
||||||
mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
|
maintainer-clean-generic mostlyclean mostlyclean-compile \
|
||||||
uninstall-am uninstall-hook uninstall-pkgbinPROGRAMS \
|
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
|
||||||
uninstall-pkgincludeHEADERS uninstall-pkglibLTLIBRARIES
|
tags uninstall uninstall-am uninstall-hook \
|
||||||
|
uninstall-pkgbinPROGRAMS uninstall-pkgincludeHEADERS \
|
||||||
|
uninstall-pkglibLTLIBRARIES uninstall-pkgmodexecLTLIBRARIES
|
||||||
|
|
||||||
|
|
||||||
##################################################
|
|
||||||
# STATIC MODULES BUILT INTO MAIN LIBRARY
|
|
||||||
##################################################
|
|
||||||
#libstix_la_SOURCES += \
|
|
||||||
# mod-dir.c mod-dir.h \
|
|
||||||
#libstix_la_LIBADD +=
|
|
||||||
|
|
||||||
##################################################
|
|
||||||
# DYNAMIC MODULES
|
|
||||||
##################################################
|
|
||||||
|
|
||||||
#CPPFLAGS_MOD_COMMON = $(CPPFLAGS_ALL_COMMON)
|
|
||||||
#LDFLAGS_MOD_COMMON = $(LDFLAGS_ALL_COMMON)
|
|
||||||
#LIBADD_MOD_COMMON = -lstix
|
|
||||||
|
|
||||||
#modexecdir = $(libdir)
|
|
||||||
|
|
||||||
#modexec_LTLIBRARIES = libstix-dir.la
|
|
||||||
#ibstix_dir_la_SOURCES = mod-dir.c mod-dir.h
|
|
||||||
#ibstix_dir_la_CPPFLAGS = $(CPPFLAGS_MOD_COMMON)
|
|
||||||
#ibstix_dir_la_LDFLAGS = $(LDFLAGS_MOD_COMMON)
|
|
||||||
#ibstix_dir_la_LIBADD = $(LIBADD_MOD_COMMON)
|
|
||||||
|
|
||||||
install-data-hook:
|
install-data-hook:
|
||||||
@echo "#ifndef _STIX_CFG_H_" > "$(DESTDIR)$(pkgincludedir)/stix-cfg.h"
|
@echo "#ifndef _STIX_CFG_H_" > "$(DESTDIR)$(pkgincludedir)/stix-cfg.h"
|
||||||
@echo "#define _STIX_CFG_H_" >> "$(DESTDIR)$(pkgincludedir)/stix-cfg.h"
|
@echo "#define _STIX_CFG_H_" >> "$(DESTDIR)$(pkgincludedir)/stix-cfg.h"
|
||||||
|
@ -4224,6 +4224,8 @@ static int add_compiled_method (stix_t* stix)
|
|||||||
|
|
||||||
mth->owner = stix->c->cls.self_oop;
|
mth->owner = stix->c->cls.self_oop;
|
||||||
mth->preamble = STIX_OOP_FROM_SMINT(STIX_METHOD_MAKE_PREAMBLE(preamble_code, preamble_index));
|
mth->preamble = STIX_OOP_FROM_SMINT(STIX_METHOD_MAKE_PREAMBLE(preamble_code, preamble_index));
|
||||||
|
mth->preamble_data[0] = STIX_OOP_FROM_SMINT(0);
|
||||||
|
mth->preamble_data[1] = STIX_OOP_FROM_SMINT(0);
|
||||||
mth->tmpr_count = STIX_OOP_FROM_SMINT(stix->c->mth.tmpr_count);
|
mth->tmpr_count = STIX_OOP_FROM_SMINT(stix->c->mth.tmpr_count);
|
||||||
mth->tmpr_nargs = STIX_OOP_FROM_SMINT(stix->c->mth.tmpr_nargs);
|
mth->tmpr_nargs = STIX_OOP_FROM_SMINT(stix->c->mth.tmpr_nargs);
|
||||||
|
|
||||||
|
@ -1033,6 +1033,7 @@ static int primitive_ffi_open (stix_t* stix, stix_ooi_t nargs)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* TODO: check null-termination... */
|
/* TODO: check null-termination... */
|
||||||
handle = stix->vmprim.mod_open (stix, ((stix_oop_char_t)arg)->slot);
|
handle = stix->vmprim.mod_open (stix, ((stix_oop_char_t)arg)->slot);
|
||||||
if (!handle)
|
if (!handle)
|
||||||
@ -1283,12 +1284,12 @@ printf ("wrong function name...\n");
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
typedef int (*primitive_handler_t) (stix_t* stix, stix_ooi_t nargs);
|
|
||||||
|
|
||||||
struct primitive_t
|
struct primitive_t
|
||||||
{
|
{
|
||||||
stix_ooi_t nargs; /* expected number of arguments */
|
stix_ooi_t nargs; /* expected number of arguments */
|
||||||
primitive_handler_t handler;
|
stix_prim_impl_t handler;
|
||||||
const char* name; /* the name is supposed to be 7-bit ascii only */
|
const char* name; /* the name is supposed to be 7-bit ascii only */
|
||||||
};
|
};
|
||||||
typedef struct primitive_t primitive_t;
|
typedef struct primitive_t primitive_t;
|
||||||
@ -1341,31 +1342,6 @@ int stix_getprimno (stix_t* stix, const stix_ucs_t* name)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
typedef struct stix_prim_mod_t stix_prim_mod_t;
|
|
||||||
|
|
||||||
typedef int (*stix_prim_mod_load_t) (
|
|
||||||
stix_t* stix,
|
|
||||||
stix_prim_mod_t* mod
|
|
||||||
);
|
|
||||||
|
|
||||||
typedef void* (*stix_prim_mod_query_t) (
|
|
||||||
stix_t* stix,
|
|
||||||
stix_prim_mod_t* mod,
|
|
||||||
const stix_uch_t* name
|
|
||||||
);
|
|
||||||
|
|
||||||
typedef void (*stix_prim_mod_unload_t) (
|
|
||||||
stix_t* stix,
|
|
||||||
stix_prim_mod_t* mod
|
|
||||||
);
|
|
||||||
|
|
||||||
struct stix_prim_mod_t
|
|
||||||
{
|
|
||||||
stix_prim_mod_load_t load;
|
|
||||||
stix_prim_mod_unload_t unload;
|
|
||||||
stix_prim_mod_query_t query;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct stix_prim_mod_data_t
|
struct stix_prim_mod_data_t
|
||||||
{
|
{
|
||||||
void* handle;
|
void* handle;
|
||||||
@ -1373,12 +1349,13 @@ struct stix_prim_mod_data_t
|
|||||||
};
|
};
|
||||||
typedef struct stix_prim_mod_data_t stix_prim_mod_data_t;
|
typedef struct stix_prim_mod_data_t stix_prim_mod_data_t;
|
||||||
|
|
||||||
static stix_prim_mod_t* query_primitive_module (stix_t* stix, const stix_uch_t* name, stix_oow_t len)
|
static stix_prim_impl_t query_primitive_module (stix_t* stix, const stix_uch_t* name, stix_oow_t len)
|
||||||
{
|
{
|
||||||
stix_rbt_pair_t* pair;
|
stix_rbt_pair_t* pair;
|
||||||
stix_prim_mod_data_t* mdp;
|
stix_prim_mod_data_t* mdp;
|
||||||
const stix_uch_t* sep;
|
const stix_uch_t* sep;
|
||||||
stix_oow_t mod_name_len;
|
stix_oow_t mod_name_len;
|
||||||
|
stix_prim_impl_t handler;
|
||||||
int n;
|
int n;
|
||||||
|
|
||||||
sep = stix_findchar (name, len, '_');
|
sep = stix_findchar (name, len, '_');
|
||||||
@ -1396,25 +1373,25 @@ static stix_prim_mod_t* query_primitive_module (stix_t* stix, const stix_uch_t*
|
|||||||
stix_prim_mod_load_t load = STIX_NULL;
|
stix_prim_mod_load_t load = STIX_NULL;
|
||||||
|
|
||||||
/* maximum module name length is STIX_MOD_NAME_LEN_MAX.
|
/* maximum module name length is STIX_MOD_NAME_LEN_MAX.
|
||||||
* 17 is decomposed to 15 + 1 + 1.
|
* 16 is decomposed to 14 + 1 + 1.
|
||||||
* 15 for _stix_prim_mod_.
|
* 14 for stix_prim_mod_.
|
||||||
* 1 for _ at the end when stix_prim_mod_xxx_ is attempted.
|
* 1 for _ at the end when stix_prim_mod_xxx_ is attempted.
|
||||||
* 1 for the terminating '\0'.
|
* 1 for the terminating '\0'.
|
||||||
*/
|
*/
|
||||||
stix_uch_t buf[STIX_MOD_NAME_LEN_MAX + 17];
|
stix_uch_t buf[STIX_MOD_NAME_LEN_MAX + 16];
|
||||||
|
|
||||||
/* the terminating null isn't needed in buf here */
|
/* the terminating null isn't needed in buf here */
|
||||||
stix_copybchtouchars (buf, "_stix_prim_mod_", 15);
|
stix_copybchtouchars (buf, "stix_prim_mod_", 14);
|
||||||
|
|
||||||
if (mod_name_len > STIX_COUNTOF(buf) - 17)
|
if (mod_name_len > STIX_COUNTOF(buf) - 16)
|
||||||
{
|
{
|
||||||
/* module name too long */
|
/* module name too long */
|
||||||
stix->errnum = STIX_EINVAL; /* TODO: change the error number to something more specific */
|
stix->errnum = STIX_EINVAL; /* TODO: change the error number to something more specific */
|
||||||
return STIX_NULL;
|
return STIX_NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
stix_copyuchars (&buf[15], name, mod_name_len);
|
stix_copyuchars (&buf[14], name, mod_name_len);
|
||||||
buf[15 + mod_name_len] = '\0';
|
buf[14 + mod_name_len] = '\0';
|
||||||
|
|
||||||
#if defined(STIX_ENABLE_STATIC_MODULE)
|
#if defined(STIX_ENABLE_STATIC_MODULE)
|
||||||
/* attempt to find a statically linked module */
|
/* attempt to find a statically linked module */
|
||||||
@ -1466,7 +1443,7 @@ static stix_prim_mod_t* query_primitive_module (stix_t* stix, const stix_uch_t*
|
|||||||
STIX_MEMSET (&md, 0, STIX_SIZEOF(md));
|
STIX_MEMSET (&md, 0, STIX_SIZEOF(md));
|
||||||
if (stix->vmprim.mod_open && stix->vmprim.mod_getsym && stix->vmprim.mod_close)
|
if (stix->vmprim.mod_open && stix->vmprim.mod_getsym && stix->vmprim.mod_close)
|
||||||
{
|
{
|
||||||
md.handle = stix->vmprim.mod_open (stix, &buf[15]);
|
md.handle = stix->vmprim.mod_open (stix, &buf[14]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (md.handle == STIX_NULL)
|
if (md.handle == STIX_NULL)
|
||||||
@ -1497,15 +1474,27 @@ static stix_prim_mod_t* query_primitive_module (stix_t* stix, const stix_uch_t*
|
|||||||
mdp = (stix_prim_mod_data_t*)STIX_RBT_VPTR(pair);
|
mdp = (stix_prim_mod_data_t*)STIX_RBT_VPTR(pair);
|
||||||
if (load (stix, &mdp->mod) <= -1)
|
if (load (stix, &mdp->mod) <= -1)
|
||||||
{
|
{
|
||||||
|
/* stix->errnum = STIX_ENOENT; TODO: proper error code and handling */
|
||||||
stix_rbt_delete (&stix->pmtable, name, mod_name_len);
|
stix_rbt_delete (&stix->pmtable, name, mod_name_len);
|
||||||
stix->vmprim.mod_close (stix, mdp->handle);
|
stix->vmprim.mod_close (stix, mdp->handle);
|
||||||
return STIX_NULL;
|
return STIX_NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!mdp->mod.query)
|
||||||
|
{
|
||||||
|
/* the module must be at fault */
|
||||||
|
stix->errnum = STIX_EINVAL; /* TODO: proper error code and handling */
|
||||||
|
return STIX_NULL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
done:
|
done:
|
||||||
if (mdp->mod.query (stix, &mdp->mod, sep + 1) == STIX_NULL) return STIX_NULL;
|
if ((handler = mdp->mod.query (stix, &mdp->mod, sep + 1)) == STIX_NULL)
|
||||||
return &mdp->mod;
|
{
|
||||||
|
stix->errnum = STIX_ENOENT; /* TODO: proper error code and handling */
|
||||||
|
return STIX_NULL;
|
||||||
|
}
|
||||||
|
return handler;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ------------------------------------------------------------------------- */
|
/* ------------------------------------------------------------------------- */
|
||||||
@ -2121,7 +2110,7 @@ printf ("]\n");
|
|||||||
if (n >= 1) break;
|
if (n >= 1) break;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* primitive failed */
|
/* primitive handler failed */
|
||||||
if (activate_new_method (stix, newmth) <= -1) goto oops;
|
if (activate_new_method (stix, newmth) <= -1) goto oops;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -2130,7 +2119,7 @@ printf ("]\n");
|
|||||||
{
|
{
|
||||||
stix_ooi_t prim_name_index;
|
stix_ooi_t prim_name_index;
|
||||||
stix_oop_t name;
|
stix_oop_t name;
|
||||||
primitive_handler_t handler;
|
stix_prim_impl_t handler;
|
||||||
|
|
||||||
prim_name_index = STIX_METHOD_GET_PREAMBLE_INDEX(preamble);
|
prim_name_index = STIX_METHOD_GET_PREAMBLE_INDEX(preamble);
|
||||||
DBGOUT_EXEC_1 ("METHOD_PREAMBLE_NAMED_PRIMITIVE %d", (int)prim_name_index);
|
DBGOUT_EXEC_1 ("METHOD_PREAMBLE_NAMED_PRIMITIVE %d", (int)prim_name_index);
|
||||||
@ -2141,11 +2130,19 @@ printf ("]\n");
|
|||||||
STIX_ASSERT (STIX_OBJ_GET_FLAGS_EXTRA(name));
|
STIX_ASSERT (STIX_OBJ_GET_FLAGS_EXTRA(name));
|
||||||
STIX_ASSERT (STIX_CLASSOF(stix,name) == stix->_symbol);
|
STIX_ASSERT (STIX_CLASSOF(stix,name) == stix->_symbol);
|
||||||
|
|
||||||
handler = query_primitive_module (stix, ((stix_oop_char_t)name)->slot, STIX_OBJ_GET_SIZE(name));
|
/* merge two SmallIntegers to get a full pointer */
|
||||||
|
handler = (stix_oow_t)STIX_OOP_TO_SMINT(newmth->preamble_data[0]) << (STIX_OOW_BITS / 2) |
|
||||||
|
(stix_oow_t)STIX_OOP_TO_SMINT(newmth->preamble_data[1]);
|
||||||
|
if (!handler) handler = query_primitive_module (stix, ((stix_oop_char_t)name)->slot, STIX_OBJ_GET_SIZE(name));
|
||||||
|
|
||||||
if (handler)
|
if (handler)
|
||||||
{
|
{
|
||||||
int n;
|
int n;
|
||||||
|
|
||||||
|
/* split a pointer to two OOP fields as SmallIntegers for storing. */
|
||||||
|
newmth->preamble_data[0] = STIX_OOP_FROM_SMINT((stix_oow_t)handler >> (STIX_OOW_BITS / 2));
|
||||||
|
newmth->preamble_data[1] = STIX_OOP_FROM_SMINT((stix_oow_t)handler & STIX_LBMASK(stix_oow_t, STIX_OOW_BITS / 2));
|
||||||
|
|
||||||
stix_pushtmp (stix, (stix_oop_t*)&newmth);
|
stix_pushtmp (stix, (stix_oop_t*)&newmth);
|
||||||
n = handler (stix, b1);
|
n = handler (stix, b1);
|
||||||
stix_poptmp (stix);
|
stix_poptmp (stix);
|
||||||
@ -2153,16 +2150,16 @@ printf ("]\n");
|
|||||||
if (n >= 1) break;
|
if (n >= 1) break;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* primitive failed */
|
|
||||||
|
/* primitive handler failed or not found*/
|
||||||
if (activate_new_method (stix, newmth) <= -1) goto oops;
|
if (activate_new_method (stix, newmth) <= -1) goto oops;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
/* this must not happen */
|
STIX_ASSERT (preamble_code == STIX_METHOD_PREAMBLE_NONE);
|
||||||
|
if (activate_new_method (stix, newmth) <= -1) goto oops;
|
||||||
stix->errnum = STIX_EINTERN;
|
break;
|
||||||
return -1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
break; /* CMD_SEND_MESSAGE */
|
break; /* CMD_SEND_MESSAGE */
|
||||||
|
@ -29,9 +29,28 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <dlfcn.h>
|
|
||||||
|
|
||||||
#include <limits.h>
|
#include <limits.h>
|
||||||
|
|
||||||
|
|
||||||
|
#if defined(_WIN32)
|
||||||
|
# include <windows.h>
|
||||||
|
# include <tchar.h>
|
||||||
|
# if defined(STIX_HAVE_CFG_H)
|
||||||
|
# include <ltdl.h>
|
||||||
|
# define USE_LTDL
|
||||||
|
# endif
|
||||||
|
#elif defined(__OS2__)
|
||||||
|
# define INCL_DOSMODULEMGR
|
||||||
|
# define INCL_DOSPROCESS
|
||||||
|
# define INCL_DOSERRORS
|
||||||
|
# include <os2.h>
|
||||||
|
#elif defined(__DOS__)
|
||||||
|
/* nothing to include */
|
||||||
|
#else
|
||||||
|
# include <unistd.h>
|
||||||
|
# include <ltdl.h>
|
||||||
|
# define USE_LTDL
|
||||||
|
#endif
|
||||||
#include <dlfcn.h>
|
#include <dlfcn.h>
|
||||||
|
|
||||||
#if !defined(STIX_DEFAULT_MODPREFIX)
|
#if !defined(STIX_DEFAULT_MODPREFIX)
|
||||||
@ -196,10 +215,22 @@ static stix_ssize_t input_handler (stix_t* stix, stix_io_cmd_t cmd, stix_io_arg_
|
|||||||
|
|
||||||
static void* mod_open (stix_t* stix, const stix_uch_t* name)
|
static void* mod_open (stix_t* stix, const stix_uch_t* name)
|
||||||
{
|
{
|
||||||
|
#if defined(USE_LTDL)
|
||||||
/* TODO: support various platforms */
|
/* TODO: support various platforms */
|
||||||
stix_bch_t buf[1024]; /* TODO: use a proper path buffer */
|
stix_bch_t buf[1024]; /* TODO: use a proper path buffer */
|
||||||
stix_size_t ucslen, bcslen;
|
stix_size_t ucslen, bcslen;
|
||||||
stix_size_t len;
|
stix_size_t len;
|
||||||
|
void* handle;
|
||||||
|
|
||||||
|
/* TODO: using MODPREFIX isn't a good idean for all kind of modules.
|
||||||
|
* OK to use it for a primitive module.
|
||||||
|
* NOT OK to use it for a FFI target.
|
||||||
|
* Attempting /home/hyung-hwan/xxx/lib/libstix-libc.so.6 followed by libc.so.6 is bad.
|
||||||
|
* Need to accept the type or flags?
|
||||||
|
*
|
||||||
|
* mod_open (stix, "xxxx", STIX_MOD_EXTERNAL);
|
||||||
|
* if external, don't use DEFAULT_MODPERFIX and MODPOSTFIX???
|
||||||
|
*/
|
||||||
|
|
||||||
len = stix_copybcstr (buf, STIX_COUNTOF(buf), STIX_DEFAULT_MODPREFIX);
|
len = stix_copybcstr (buf, STIX_COUNTOF(buf), STIX_DEFAULT_MODPREFIX);
|
||||||
|
|
||||||
@ -208,17 +239,44 @@ static void* mod_open (stix_t* stix, const stix_uch_t* name)
|
|||||||
bcslen = STIX_COUNTOF(buf) - len;
|
bcslen = STIX_COUNTOF(buf) - len;
|
||||||
stix_ucstoutf8 (name, &ucslen, &buf[len], &bcslen);
|
stix_ucstoutf8 (name, &ucslen, &buf[len], &bcslen);
|
||||||
|
|
||||||
|
stix_copybcstr (&buf[bcslen + len], STIX_COUNTOF(buf) - bcslen - len, STIX_DEFAULT_MODPOSTFIX);
|
||||||
|
|
||||||
printf ("MOD_OPEN %s\n", buf);
|
printf ("MOD_OPEN %s\n", buf);
|
||||||
return dlopen (buf, RTLD_NOW);
|
handle = lt_dlopenext (buf);
|
||||||
|
if (!handle)
|
||||||
|
{
|
||||||
|
buf[bcslen + len] = '\0';
|
||||||
|
printf ("MOD_OPEN %s\n", &buf[len]);
|
||||||
|
handle = lt_dlopenext (&buf[len]);
|
||||||
|
}
|
||||||
|
|
||||||
|
printf ("MOD_OPEN RET=>%p\n", handle);
|
||||||
|
return handle;
|
||||||
|
|
||||||
|
#else
|
||||||
|
/* TODO: implemenent this */
|
||||||
|
return STIX_NULL;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static void mod_close (stix_t* stix, void* handle)
|
static void mod_close (stix_t* stix, void* handle)
|
||||||
{
|
{
|
||||||
dlclose (handle);
|
#if defined(USE_LTDL)
|
||||||
|
lt_dlclose (handle);
|
||||||
|
#elif defined(_WIN32)
|
||||||
|
FreeLibrary ((HMODULE)handle);
|
||||||
|
#elif defined(__OS2__)
|
||||||
|
DosFreeModule ((HMODULE)handle);
|
||||||
|
#elif defined(__DOS__) && defined(QSE_ENABLE_DOS_DYNAMIC_MODULE)
|
||||||
|
FreeModule (handle);
|
||||||
|
#else
|
||||||
|
/* nothing to do */
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static void* mod_getsym (stix_t* stix, void* handle, const stix_uch_t* name)
|
static void* mod_getsym (stix_t* stix, void* handle, const stix_uch_t* name)
|
||||||
{
|
{
|
||||||
|
#if defined(USE_LTDL)
|
||||||
stix_bch_t buf[1024]; /* TODO: use a proper buffer. dynamically allocated if conversion result in too a large value */
|
stix_bch_t buf[1024]; /* TODO: use a proper buffer. dynamically allocated if conversion result in too a large value */
|
||||||
stix_size_t ucslen, bcslen;
|
stix_size_t ucslen, bcslen;
|
||||||
void* sym;
|
void* sym;
|
||||||
@ -229,17 +287,17 @@ static void* mod_getsym (stix_t* stix, void* handle, const stix_uch_t* name)
|
|||||||
bcslen = STIX_COUNTOF(buf) - 2;
|
bcslen = STIX_COUNTOF(buf) - 2;
|
||||||
stix_ucstoutf8 (name, &ucslen, &buf[1], &bcslen);
|
stix_ucstoutf8 (name, &ucslen, &buf[1], &bcslen);
|
||||||
printf ("MOD_GETSYM [%s]\n", &buf[1]);
|
printf ("MOD_GETSYM [%s]\n", &buf[1]);
|
||||||
sym = dlsym (handle, &buf[1]);
|
sym = lt_dlsym (handle, &buf[1]);
|
||||||
if (!sym)
|
if (!sym)
|
||||||
{
|
{
|
||||||
printf ("MOD_GETSYM [%s]\n", &buf[0]);
|
printf ("MOD_GETSYM [%s]\n", &buf[0]);
|
||||||
sym = dlsym (handle, &buf[0]);
|
sym = lt_dlsym (handle, &buf[0]);
|
||||||
if (!sym)
|
if (!sym)
|
||||||
{
|
{
|
||||||
buf[bcslen + 1] = '_';
|
buf[bcslen + 1] = '_';
|
||||||
buf[bcslen + 2] = '\0';
|
buf[bcslen + 2] = '\0';
|
||||||
printf ("MOD_GETSYM [%s]\n", &buf[1]);
|
printf ("MOD_GETSYM [%s]\n", &buf[1]);
|
||||||
sym = dlsym (handle, &buf[1]);
|
sym = lt_dlsym (handle, &buf[1]);
|
||||||
if (!sym)
|
if (!sym)
|
||||||
{
|
{
|
||||||
printf ("MOD_GETSYM [%s]\n", &buf[0]);
|
printf ("MOD_GETSYM [%s]\n", &buf[0]);
|
||||||
@ -249,6 +307,10 @@ printf ("MOD_GETSYM [%s]\n", &buf[0]);
|
|||||||
}
|
}
|
||||||
|
|
||||||
return sym;
|
return sym;
|
||||||
|
#else
|
||||||
|
/* TODO: IMPLEMENT THIS */
|
||||||
|
return STIX_NULL;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static char* syntax_error_msg[] =
|
static char* syntax_error_msg[] =
|
||||||
@ -360,6 +422,10 @@ int main (int argc, char* argv[])
|
|||||||
vmprim.mod_close = mod_close;
|
vmprim.mod_close = mod_close;
|
||||||
vmprim.mod_getsym = mod_getsym;
|
vmprim.mod_getsym = mod_getsym;
|
||||||
|
|
||||||
|
#if defined(USE_LTDL)
|
||||||
|
lt_dlinit ();
|
||||||
|
#endif
|
||||||
|
|
||||||
stix = stix_open (&sys_mmgr, STIX_SIZEOF(xtn_t), 512000lu, &vmprim, STIX_NULL);
|
stix = stix_open (&sys_mmgr, STIX_SIZEOF(xtn_t), 512000lu, &vmprim, STIX_NULL);
|
||||||
if (!stix)
|
if (!stix)
|
||||||
{
|
{
|
||||||
@ -502,6 +568,8 @@ printf ("%p\n", a);
|
|||||||
dump_dictionary (stix, stix->sysdic, "System dictionary");
|
dump_dictionary (stix, stix->sysdic, "System dictionary");
|
||||||
stix_close (stix);
|
stix_close (stix);
|
||||||
|
|
||||||
|
#if defined(USE_LTDL)
|
||||||
|
lt_dlexit ();
|
||||||
|
#endif
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* $Id$
|
* $Id$
|
||||||
*
|
*
|
||||||
|
@ -28,6 +28,7 @@
|
|||||||
#define _STIX_PRV_H_
|
#define _STIX_PRV_H_
|
||||||
|
|
||||||
#include "stix.h"
|
#include "stix.h"
|
||||||
|
#include "stix-utl.h"
|
||||||
|
|
||||||
/* you can define this to either 1 or 2 */
|
/* you can define this to either 1 or 2 */
|
||||||
#define STIX_BCODE_LONG_PARAM_SIZE 2
|
#define STIX_BCODE_LONG_PARAM_SIZE 2
|
||||||
@ -857,62 +858,6 @@ stix_size_t stix_hashuchars (
|
|||||||
|
|
||||||
#define stix_hashbchars(ptr,len) stix_hashbytes(ptr,len)
|
#define stix_hashbchars(ptr,len) stix_hashbytes(ptr,len)
|
||||||
|
|
||||||
int stix_equalchars (
|
|
||||||
const stix_uch_t* str1,
|
|
||||||
const stix_uch_t* str2,
|
|
||||||
stix_size_t len
|
|
||||||
);
|
|
||||||
|
|
||||||
int stix_compucstr (
|
|
||||||
const stix_uch_t* str1,
|
|
||||||
const stix_uch_t* str2
|
|
||||||
);
|
|
||||||
|
|
||||||
int stix_compbcstr (
|
|
||||||
const stix_bch_t* str1,
|
|
||||||
const stix_bch_t* str2
|
|
||||||
);
|
|
||||||
|
|
||||||
int stix_compucbcstr (
|
|
||||||
const stix_uch_t* str1,
|
|
||||||
const stix_bch_t* str2
|
|
||||||
);
|
|
||||||
|
|
||||||
int stix_compucxbcstr (
|
|
||||||
const stix_uch_t* str1,
|
|
||||||
stix_size_t len,
|
|
||||||
const stix_bch_t* str2
|
|
||||||
);
|
|
||||||
|
|
||||||
void stix_copyuchars (
|
|
||||||
stix_uch_t* dst,
|
|
||||||
const stix_uch_t* src,
|
|
||||||
stix_size_t len
|
|
||||||
);
|
|
||||||
|
|
||||||
void stix_copybchtouchars (
|
|
||||||
stix_uch_t* dst,
|
|
||||||
const stix_bch_t* src,
|
|
||||||
stix_size_t len
|
|
||||||
);
|
|
||||||
|
|
||||||
stix_uch_t* stix_findchar (
|
|
||||||
const stix_uch_t* ptr,
|
|
||||||
stix_size_t len,
|
|
||||||
stix_uch_t c
|
|
||||||
);
|
|
||||||
|
|
||||||
stix_size_t stix_copyucstr (
|
|
||||||
stix_uch_t* dst,
|
|
||||||
stix_size_t len,
|
|
||||||
const stix_uch_t* src
|
|
||||||
);
|
|
||||||
|
|
||||||
stix_size_t stix_copybcstr (
|
|
||||||
stix_bch_t* dst,
|
|
||||||
stix_size_t len,
|
|
||||||
const stix_bch_t* src
|
|
||||||
);
|
|
||||||
|
|
||||||
/* ========================================================================= */
|
/* ========================================================================= */
|
||||||
/* gc.c */
|
/* gc.c */
|
||||||
|
141
stix/lib/stix-utl.c
Normal file
141
stix/lib/stix-utl.c
Normal file
@ -0,0 +1,141 @@
|
|||||||
|
|
||||||
|
/*
|
||||||
|
* $Id$
|
||||||
|
*
|
||||||
|
Copyright (c) 2014-2015 Chung, Hyung-Hwan. All rights reserved.
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions
|
||||||
|
are met:
|
||||||
|
1. Redistributions of source code must retain the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer.
|
||||||
|
2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer in the
|
||||||
|
documentation and/or other materials provided with the distribution.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR
|
||||||
|
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||||
|
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||||
|
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||||
|
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||||
|
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||||
|
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||||
|
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||||
|
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "stix-utl.h"
|
||||||
|
|
||||||
|
int stix_equalchars (const stix_uch_t* str1, const stix_uch_t* str2, stix_size_t len)
|
||||||
|
{
|
||||||
|
stix_size_t i;
|
||||||
|
|
||||||
|
for (i = 0; i < len; i++)
|
||||||
|
{
|
||||||
|
if (str1[i] != str2[i]) return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int stix_compucstr (const stix_uch_t* str1, const stix_uch_t* str2)
|
||||||
|
{
|
||||||
|
while (*str1 == *str2)
|
||||||
|
{
|
||||||
|
if (*str1 == '\0') return 0;
|
||||||
|
str1++, str2++;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (*str1 > *str2)? 1: -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int stix_compbcstr (const stix_bch_t* str1, const stix_bch_t* str2)
|
||||||
|
{
|
||||||
|
while (*str1 == *str2)
|
||||||
|
{
|
||||||
|
if (*str1 == '\0') return 0;
|
||||||
|
str1++, str2++;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (*str1 > *str2)? 1: -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int stix_compucbcstr (const stix_uch_t* str1, const stix_bch_t* str2)
|
||||||
|
{
|
||||||
|
while (*str1 == *str2)
|
||||||
|
{
|
||||||
|
if (*str1 == '\0') return 0;
|
||||||
|
str1++, str2++;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (*str1 > *str2)? 1: -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int stix_compucxbcstr (const stix_uch_t* str1, stix_size_t len, const stix_bch_t* str2)
|
||||||
|
{
|
||||||
|
const stix_uch_t* end = str1 + len;
|
||||||
|
while (str1 < end && *str2 != '\0' && *str1 == *str2) str1++, str2++;
|
||||||
|
if (str1 == end && *str2 == '\0') return 0;
|
||||||
|
if (*str1 == *str2) return (str1 < end)? 1: -1;
|
||||||
|
return (*str1 > *str2)? 1: -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
void stix_copyuchars (stix_uch_t* dst, const stix_uch_t* src, stix_size_t len)
|
||||||
|
{
|
||||||
|
stix_size_t i;
|
||||||
|
for (i = 0; i < len; i++) dst[i] = src[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
void stix_copybchtouchars (stix_uch_t* dst, const stix_bch_t* src, stix_size_t len)
|
||||||
|
{
|
||||||
|
stix_size_t i;
|
||||||
|
for (i = 0; i < len; i++) dst[i] = src[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
stix_size_t stix_copyucstr (stix_uch_t* dst, stix_size_t len, const stix_uch_t* src)
|
||||||
|
{
|
||||||
|
stix_uch_t* p, * p2;
|
||||||
|
|
||||||
|
p = dst; p2 = dst + len - 1;
|
||||||
|
|
||||||
|
while (p < p2)
|
||||||
|
{
|
||||||
|
if (*src == '\0') break;
|
||||||
|
*p++ = *src++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (len > 0) *p = '\0';
|
||||||
|
return p - dst;
|
||||||
|
}
|
||||||
|
|
||||||
|
stix_size_t stix_copybcstr (stix_bch_t* dst, stix_size_t len, const stix_bch_t* src)
|
||||||
|
{
|
||||||
|
stix_bch_t* p, * p2;
|
||||||
|
|
||||||
|
p = dst; p2 = dst + len - 1;
|
||||||
|
|
||||||
|
while (p < p2)
|
||||||
|
{
|
||||||
|
if (*src == '\0') break;
|
||||||
|
*p++ = *src++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (len > 0) *p = '\0';
|
||||||
|
return p - dst;
|
||||||
|
}
|
||||||
|
|
||||||
|
stix_uch_t* stix_findchar (const stix_uch_t* ptr, stix_size_t len, stix_uch_t c)
|
||||||
|
{
|
||||||
|
const stix_uch_t* end;
|
||||||
|
|
||||||
|
end = ptr + len;
|
||||||
|
while (ptr < end)
|
||||||
|
{
|
||||||
|
if (*ptr == c) return (stix_uch_t*)ptr;
|
||||||
|
ptr++;
|
||||||
|
}
|
||||||
|
|
||||||
|
return STIX_NULL;
|
||||||
|
}
|
||||||
|
|
103
stix/lib/stix-utl.h
Normal file
103
stix/lib/stix-utl.h
Normal file
@ -0,0 +1,103 @@
|
|||||||
|
/*
|
||||||
|
* $Id$
|
||||||
|
*
|
||||||
|
Copyright (c) 2014-2015 Chung, Hyung-Hwan. All rights reserved.
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions
|
||||||
|
are met:
|
||||||
|
1. Redistributions of source code must retain the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer.
|
||||||
|
2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer in the
|
||||||
|
documentation and/or other materials provided with the distribution.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR
|
||||||
|
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||||
|
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||||
|
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||||
|
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||||
|
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||||
|
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||||
|
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||||
|
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _STIX_UTL_H_
|
||||||
|
#define _STIX_UTL_H_
|
||||||
|
|
||||||
|
#include "stix-cmn.h"
|
||||||
|
|
||||||
|
#if defined(__cplusplus)
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/* ========================================================================= */
|
||||||
|
/* stix-utl.c */
|
||||||
|
/* ========================================================================= */
|
||||||
|
int stix_equalchars (
|
||||||
|
const stix_uch_t* str1,
|
||||||
|
const stix_uch_t* str2,
|
||||||
|
stix_size_t len
|
||||||
|
);
|
||||||
|
|
||||||
|
int stix_compucstr (
|
||||||
|
const stix_uch_t* str1,
|
||||||
|
const stix_uch_t* str2
|
||||||
|
);
|
||||||
|
|
||||||
|
int stix_compbcstr (
|
||||||
|
const stix_bch_t* str1,
|
||||||
|
const stix_bch_t* str2
|
||||||
|
);
|
||||||
|
|
||||||
|
int stix_compucbcstr (
|
||||||
|
const stix_uch_t* str1,
|
||||||
|
const stix_bch_t* str2
|
||||||
|
);
|
||||||
|
|
||||||
|
int stix_compucxbcstr (
|
||||||
|
const stix_uch_t* str1,
|
||||||
|
stix_size_t len,
|
||||||
|
const stix_bch_t* str2
|
||||||
|
);
|
||||||
|
|
||||||
|
void stix_copyuchars (
|
||||||
|
stix_uch_t* dst,
|
||||||
|
const stix_uch_t* src,
|
||||||
|
stix_size_t len
|
||||||
|
);
|
||||||
|
|
||||||
|
void stix_copybchtouchars (
|
||||||
|
stix_uch_t* dst,
|
||||||
|
const stix_bch_t* src,
|
||||||
|
stix_size_t len
|
||||||
|
);
|
||||||
|
|
||||||
|
stix_uch_t* stix_findchar (
|
||||||
|
const stix_uch_t* ptr,
|
||||||
|
stix_size_t len,
|
||||||
|
stix_uch_t c
|
||||||
|
);
|
||||||
|
|
||||||
|
stix_size_t stix_copyucstr (
|
||||||
|
stix_uch_t* dst,
|
||||||
|
stix_size_t len,
|
||||||
|
const stix_uch_t* src
|
||||||
|
);
|
||||||
|
|
||||||
|
stix_size_t stix_copybcstr (
|
||||||
|
stix_bch_t* dst,
|
||||||
|
stix_size_t len,
|
||||||
|
const stix_bch_t* src
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
#if defined(__cplusplus)
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
111
stix/lib/stix.c
111
stix/lib/stix.c
@ -208,117 +208,6 @@ stix_size_t stix_hashuchars (const stix_uch_t* ptr, stix_size_t len)
|
|||||||
return stix_hashbytes ((const stix_byte_t *)ptr, len * STIX_SIZEOF(*ptr));
|
return stix_hashbytes ((const stix_byte_t *)ptr, len * STIX_SIZEOF(*ptr));
|
||||||
}
|
}
|
||||||
|
|
||||||
int stix_equalchars (const stix_uch_t* str1, const stix_uch_t* str2, stix_size_t len)
|
|
||||||
{
|
|
||||||
stix_size_t i;
|
|
||||||
|
|
||||||
for (i = 0; i < len; i++)
|
|
||||||
{
|
|
||||||
if (str1[i] != str2[i]) return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
int stix_compucstr (const stix_uch_t* str1, const stix_uch_t* str2)
|
|
||||||
{
|
|
||||||
while (*str1 == *str2)
|
|
||||||
{
|
|
||||||
if (*str1 == '\0') return 0;
|
|
||||||
str1++, str2++;
|
|
||||||
}
|
|
||||||
|
|
||||||
return (*str1 > *str2)? 1: -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
int stix_compbcstr (const stix_bch_t* str1, const stix_bch_t* str2)
|
|
||||||
{
|
|
||||||
while (*str1 == *str2)
|
|
||||||
{
|
|
||||||
if (*str1 == '\0') return 0;
|
|
||||||
str1++, str2++;
|
|
||||||
}
|
|
||||||
|
|
||||||
return (*str1 > *str2)? 1: -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
int stix_compucbcstr (const stix_uch_t* str1, const stix_bch_t* str2)
|
|
||||||
{
|
|
||||||
while (*str1 == *str2)
|
|
||||||
{
|
|
||||||
if (*str1 == '\0') return 0;
|
|
||||||
str1++, str2++;
|
|
||||||
}
|
|
||||||
|
|
||||||
return (*str1 > *str2)? 1: -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
int stix_compucxbcstr (const stix_uch_t* str1, stix_size_t len, const stix_bch_t* str2)
|
|
||||||
{
|
|
||||||
const stix_uch_t* end = str1 + len;
|
|
||||||
while (str1 < end && *str2 != '\0' && *str1 == *str2) str1++, str2++;
|
|
||||||
if (str1 == end && *str2 == '\0') return 0;
|
|
||||||
if (*str1 == *str2) return (str1 < end)? 1: -1;
|
|
||||||
return (*str1 > *str2)? 1: -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
void stix_copyuchars (stix_uch_t* dst, const stix_uch_t* src, stix_size_t len)
|
|
||||||
{
|
|
||||||
stix_size_t i;
|
|
||||||
for (i = 0; i < len; i++) dst[i] = src[i];
|
|
||||||
}
|
|
||||||
|
|
||||||
void stix_copybchtouchars (stix_uch_t* dst, const stix_bch_t* src, stix_size_t len)
|
|
||||||
{
|
|
||||||
stix_size_t i;
|
|
||||||
for (i = 0; i < len; i++) dst[i] = src[i];
|
|
||||||
}
|
|
||||||
|
|
||||||
stix_size_t stix_copyucstr (stix_uch_t* dst, stix_size_t len, const stix_uch_t* src)
|
|
||||||
{
|
|
||||||
stix_uch_t* p, * p2;
|
|
||||||
|
|
||||||
p = dst; p2 = dst + len - 1;
|
|
||||||
|
|
||||||
while (p < p2)
|
|
||||||
{
|
|
||||||
if (*src == '\0') break;
|
|
||||||
*p++ = *src++;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (len > 0) *p = '\0';
|
|
||||||
return p - dst;
|
|
||||||
}
|
|
||||||
|
|
||||||
stix_size_t stix_copybcstr (stix_bch_t* dst, stix_size_t len, const stix_bch_t* src)
|
|
||||||
{
|
|
||||||
stix_bch_t* p, * p2;
|
|
||||||
|
|
||||||
p = dst; p2 = dst + len - 1;
|
|
||||||
|
|
||||||
while (p < p2)
|
|
||||||
{
|
|
||||||
if (*src == '\0') break;
|
|
||||||
*p++ = *src++;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (len > 0) *p = '\0';
|
|
||||||
return p - dst;
|
|
||||||
}
|
|
||||||
|
|
||||||
stix_uch_t* stix_findchar (const stix_uch_t* ptr, stix_size_t len, stix_uch_t c)
|
|
||||||
{
|
|
||||||
const stix_uch_t* end;
|
|
||||||
|
|
||||||
end = ptr + len;
|
|
||||||
while (ptr < end)
|
|
||||||
{
|
|
||||||
if (*ptr == c) return (stix_uch_t*)ptr;
|
|
||||||
ptr++;
|
|
||||||
}
|
|
||||||
|
|
||||||
return STIX_NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
void* stix_allocmem (stix_t* stix, stix_size_t size)
|
void* stix_allocmem (stix_t* stix, stix_size_t size)
|
||||||
{
|
{
|
||||||
|
@ -503,7 +503,7 @@ typedef struct stix_t stix_t;
|
|||||||
/* =========================================================================
|
/* =========================================================================
|
||||||
* VIRTUAL MACHINE PRIMITIVES
|
* VIRTUAL MACHINE PRIMITIVES
|
||||||
* ========================================================================= */
|
* ========================================================================= */
|
||||||
#define STIX_MOD_NAME_LEN_MAX 60
|
#define STIX_MOD_NAME_LEN_MAX 120
|
||||||
|
|
||||||
typedef void* (*stix_mod_open_t) (stix_t* stix, const stix_uch_t* name);
|
typedef void* (*stix_mod_open_t) (stix_t* stix, const stix_uch_t* name);
|
||||||
typedef void (*stix_mod_close_t) (stix_t* stix, void* handle);
|
typedef void (*stix_mod_close_t) (stix_t* stix, void* handle);
|
||||||
@ -541,6 +541,39 @@ struct stix_cb_t
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/* =========================================================================
|
||||||
|
* PRIMITIVE MODULE MANIPULATION
|
||||||
|
* ========================================================================= */
|
||||||
|
typedef int (*stix_prim_impl_t) (stix_t* stix, stix_ooi_t nargs);
|
||||||
|
|
||||||
|
typedef struct stix_prim_mod_t stix_prim_mod_t;
|
||||||
|
|
||||||
|
typedef int (*stix_prim_mod_load_t) (
|
||||||
|
stix_t* stix,
|
||||||
|
stix_prim_mod_t* mod
|
||||||
|
);
|
||||||
|
|
||||||
|
typedef stix_prim_impl_t (*stix_prim_mod_query_t) (
|
||||||
|
stix_t* stix,
|
||||||
|
stix_prim_mod_t* mod,
|
||||||
|
const stix_uch_t* name
|
||||||
|
);
|
||||||
|
|
||||||
|
typedef void (*stix_prim_mod_unload_t) (
|
||||||
|
stix_t* stix,
|
||||||
|
stix_prim_mod_t* mod
|
||||||
|
);
|
||||||
|
|
||||||
|
struct stix_prim_mod_t
|
||||||
|
{
|
||||||
|
stix_prim_mod_unload_t unload;
|
||||||
|
stix_prim_mod_query_t query;
|
||||||
|
void* ctx;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* =========================================================================
|
||||||
|
* STIX VM
|
||||||
|
* ========================================================================= */
|
||||||
#if defined(STIX_INCLUDE_COMPILER)
|
#if defined(STIX_INCLUDE_COMPILER)
|
||||||
typedef struct stix_compiler_t stix_compiler_t;
|
typedef struct stix_compiler_t stix_compiler_t;
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user