changing code to improve the compiler

This commit is contained in:
hyung-hwan 2021-01-09 16:53:35 +00:00
parent 24b96e4c29
commit 5d05984664
7 changed files with 196 additions and 116 deletions

View File

@ -64,6 +64,7 @@ libhcl_la_SOURCES = \
hcl-utl.h \
hcl-prv.h \
bigint.c \
cnode.c \
comp.c \
debug.c \
decode.c \
@ -82,7 +83,7 @@ libhcl_la_SOURCES = \
prim.c \
print.c \
rbt.c \
read.c \
read2.c \
sym.c \
utf8.c \
utl.c \

View File

@ -150,14 +150,14 @@ am__DEPENDENCIES_1 =
am__DEPENDENCIES_5 = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2) \
$(am__DEPENDENCIES_3) $(am__DEPENDENCIES_4)
libhcl_la_DEPENDENCIES = $(am__DEPENDENCIES_5) $(am__append_6)
am_libhcl_la_OBJECTS = libhcl_la-bigint.lo libhcl_la-comp.lo \
libhcl_la-debug.lo libhcl_la-decode.lo libhcl_la-dic.lo \
libhcl_la-err.lo libhcl_la-exec.lo libhcl_la-fmt.lo \
libhcl_la-gc.lo libhcl_la-hcl.lo libhcl_la-heap.lo \
libhcl_la-number.lo libhcl_la-obj.lo libhcl_la-opt.lo \
libhcl_la-prim.lo libhcl_la-print.lo libhcl_la-rbt.lo \
libhcl_la-read.lo libhcl_la-sym.lo libhcl_la-utf8.lo \
libhcl_la-utl.lo libhcl_la-xma.lo
am_libhcl_la_OBJECTS = libhcl_la-bigint.lo libhcl_la-cnode.lo \
libhcl_la-comp.lo libhcl_la-debug.lo libhcl_la-decode.lo \
libhcl_la-dic.lo libhcl_la-err.lo libhcl_la-exec.lo \
libhcl_la-fmt.lo libhcl_la-gc.lo libhcl_la-hcl.lo \
libhcl_la-heap.lo libhcl_la-number.lo libhcl_la-obj.lo \
libhcl_la-opt.lo libhcl_la-prim.lo libhcl_la-print.lo \
libhcl_la-rbt.lo libhcl_la-read2.lo libhcl_la-sym.lo \
libhcl_la-utf8.lo libhcl_la-utl.lo libhcl_la-xma.lo
libhcl_la_OBJECTS = $(am_libhcl_la_OBJECTS)
AM_V_lt = $(am__v_lt_@AM_V@)
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
@ -196,7 +196,8 @@ DEFAULT_INCLUDES =
depcomp = $(SHELL) $(top_srcdir)/ac/depcomp
am__maybe_remake_depfiles = depfiles
am__depfiles_remade = ./$(DEPDIR)/libhcl_la-bigint.Plo \
./$(DEPDIR)/libhcl_la-comp.Plo ./$(DEPDIR)/libhcl_la-debug.Plo \
./$(DEPDIR)/libhcl_la-cnode.Plo ./$(DEPDIR)/libhcl_la-comp.Plo \
./$(DEPDIR)/libhcl_la-debug.Plo \
./$(DEPDIR)/libhcl_la-decode.Plo ./$(DEPDIR)/libhcl_la-dic.Plo \
./$(DEPDIR)/libhcl_la-err.Plo ./$(DEPDIR)/libhcl_la-exec.Plo \
./$(DEPDIR)/libhcl_la-fmt.Plo ./$(DEPDIR)/libhcl_la-gc.Plo \
@ -204,7 +205,7 @@ am__depfiles_remade = ./$(DEPDIR)/libhcl_la-bigint.Plo \
./$(DEPDIR)/libhcl_la-number.Plo ./$(DEPDIR)/libhcl_la-obj.Plo \
./$(DEPDIR)/libhcl_la-opt.Plo ./$(DEPDIR)/libhcl_la-prim.Plo \
./$(DEPDIR)/libhcl_la-print.Plo ./$(DEPDIR)/libhcl_la-rbt.Plo \
./$(DEPDIR)/libhcl_la-read.Plo ./$(DEPDIR)/libhcl_la-sym.Plo \
./$(DEPDIR)/libhcl_la-read2.Plo ./$(DEPDIR)/libhcl_la-sym.Plo \
./$(DEPDIR)/libhcl_la-utf8.Plo ./$(DEPDIR)/libhcl_la-utl.Plo \
./$(DEPDIR)/libhcl_la-xma.Plo \
./$(DEPDIR)/libhclx_la-cb-impl.Plo \
@ -436,6 +437,7 @@ libhcl_la_SOURCES = \
hcl-utl.h \
hcl-prv.h \
bigint.c \
cnode.c \
comp.c \
debug.c \
decode.c \
@ -454,7 +456,7 @@ libhcl_la_SOURCES = \
prim.c \
print.c \
rbt.c \
read.c \
read2.c \
sym.c \
utf8.c \
utl.c \
@ -572,6 +574,7 @@ distclean-compile:
-rm -f *.tab.c
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhcl_la-bigint.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhcl_la-cnode.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhcl_la-comp.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhcl_la-debug.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhcl_la-decode.Plo@am__quote@ # am--include-marker
@ -588,7 +591,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhcl_la-prim.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhcl_la-print.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhcl_la-rbt.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhcl_la-read.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhcl_la-read2.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhcl_la-sym.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhcl_la-utf8.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhcl_la-utl.Plo@am__quote@ # am--include-marker
@ -637,6 +640,13 @@ libhcl_la-bigint.lo: bigint.c
@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) $(libhcl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhcl_la-bigint.lo `test -f 'bigint.c' || echo '$(srcdir)/'`bigint.c
libhcl_la-cnode.lo: cnode.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhcl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhcl_la-cnode.lo -MD -MP -MF $(DEPDIR)/libhcl_la-cnode.Tpo -c -o libhcl_la-cnode.lo `test -f 'cnode.c' || echo '$(srcdir)/'`cnode.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhcl_la-cnode.Tpo $(DEPDIR)/libhcl_la-cnode.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='cnode.c' object='libhcl_la-cnode.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) $(libhcl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhcl_la-cnode.lo `test -f 'cnode.c' || echo '$(srcdir)/'`cnode.c
libhcl_la-comp.lo: comp.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhcl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhcl_la-comp.lo -MD -MP -MF $(DEPDIR)/libhcl_la-comp.Tpo -c -o libhcl_la-comp.lo `test -f 'comp.c' || echo '$(srcdir)/'`comp.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhcl_la-comp.Tpo $(DEPDIR)/libhcl_la-comp.Plo
@ -749,12 +759,12 @@ libhcl_la-rbt.lo: rbt.c
@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) $(libhcl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhcl_la-rbt.lo `test -f 'rbt.c' || echo '$(srcdir)/'`rbt.c
libhcl_la-read.lo: read.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhcl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhcl_la-read.lo -MD -MP -MF $(DEPDIR)/libhcl_la-read.Tpo -c -o libhcl_la-read.lo `test -f 'read.c' || echo '$(srcdir)/'`read.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhcl_la-read.Tpo $(DEPDIR)/libhcl_la-read.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='read.c' object='libhcl_la-read.lo' libtool=yes @AMDEPBACKSLASH@
libhcl_la-read2.lo: read2.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhcl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhcl_la-read2.lo -MD -MP -MF $(DEPDIR)/libhcl_la-read2.Tpo -c -o libhcl_la-read2.lo `test -f 'read2.c' || echo '$(srcdir)/'`read2.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhcl_la-read2.Tpo $(DEPDIR)/libhcl_la-read2.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='read2.c' object='libhcl_la-read2.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) $(libhcl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhcl_la-read.lo `test -f 'read.c' || echo '$(srcdir)/'`read.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) $(libhcl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhcl_la-read2.lo `test -f 'read2.c' || echo '$(srcdir)/'`read2.c
libhcl_la-sym.lo: sym.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhcl_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhcl_la-sym.lo -MD -MP -MF $(DEPDIR)/libhcl_la-sym.Tpo -c -o libhcl_la-sym.lo `test -f 'sym.c' || echo '$(srcdir)/'`sym.c
@ -982,6 +992,7 @@ clean-am: clean-generic clean-libtool clean-pkglibLTLIBRARIES \
distclean: distclean-am
-rm -f ./$(DEPDIR)/libhcl_la-bigint.Plo
-rm -f ./$(DEPDIR)/libhcl_la-cnode.Plo
-rm -f ./$(DEPDIR)/libhcl_la-comp.Plo
-rm -f ./$(DEPDIR)/libhcl_la-debug.Plo
-rm -f ./$(DEPDIR)/libhcl_la-decode.Plo
@ -998,7 +1009,7 @@ distclean: distclean-am
-rm -f ./$(DEPDIR)/libhcl_la-prim.Plo
-rm -f ./$(DEPDIR)/libhcl_la-print.Plo
-rm -f ./$(DEPDIR)/libhcl_la-rbt.Plo
-rm -f ./$(DEPDIR)/libhcl_la-read.Plo
-rm -f ./$(DEPDIR)/libhcl_la-read2.Plo
-rm -f ./$(DEPDIR)/libhcl_la-sym.Plo
-rm -f ./$(DEPDIR)/libhcl_la-utf8.Plo
-rm -f ./$(DEPDIR)/libhcl_la-utl.Plo
@ -1056,6 +1067,7 @@ installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -f ./$(DEPDIR)/libhcl_la-bigint.Plo
-rm -f ./$(DEPDIR)/libhcl_la-cnode.Plo
-rm -f ./$(DEPDIR)/libhcl_la-comp.Plo
-rm -f ./$(DEPDIR)/libhcl_la-debug.Plo
-rm -f ./$(DEPDIR)/libhcl_la-decode.Plo
@ -1072,7 +1084,7 @@ maintainer-clean: maintainer-clean-am
-rm -f ./$(DEPDIR)/libhcl_la-prim.Plo
-rm -f ./$(DEPDIR)/libhcl_la-print.Plo
-rm -f ./$(DEPDIR)/libhcl_la-rbt.Plo
-rm -f ./$(DEPDIR)/libhcl_la-read.Plo
-rm -f ./$(DEPDIR)/libhcl_la-read2.Plo
-rm -f ./$(DEPDIR)/libhcl_la-sym.Plo
-rm -f ./$(DEPDIR)/libhcl_la-utf8.Plo
-rm -f ./$(DEPDIR)/libhcl_la-utl.Plo

View File

@ -24,6 +24,8 @@
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include "hcl-prv.h"
static hcl_cnode_t* make_cnode (hcl_t* hcl, hcl_cnode_type_t type, const hcl_ioloc_t* loc, hcl_oow_t extra_space)
{
hcl_cnode_t* cnode;
@ -59,20 +61,59 @@ hcl_cnode_t* hcl_makecnodecharlit (hcl_t* hcl, const hcl_ioloc_t* loc, const hcl
return c;
}
hcl_cnode_t* hcl_makecnodenumlit (hcl_t* hcl, const hcl_ioloc_t* loc, const hcl_ooch_t* ptr, hcl_oow_t len)
{
hcl_cnode_t* c = make_cnode(hcl, HCL_CNODE_NUMLIT, loc, HCL_SIZEOF(*ptr) * (len + 1));
if (HCL_UNLIKELY(!c)) return HCL_NULL;
c->u.numlit.ptr = (hcl_ooch_t*)(c + 1);
c->u.numlit.len = len;
hcl_copy_oochars (c->u.numlit.ptr, ptr, len);
c->u.numlit.ptr[len] = '\0';
return c;
}
hcl_cnode_t* hcl_makecnoderadnumlit (hcl_t* hcl, const hcl_ioloc_t* loc, const hcl_ooch_t* ptr, hcl_oow_t len)
{
hcl_cnode_t* c = make_cnode(hcl, HCL_CNODE_RADNUMLIT, loc, HCL_SIZEOF(*ptr) * (len + 1));
if (HCL_UNLIKELY(!c)) return HCL_NULL;
c->u.radnumlit.ptr = (hcl_ooch_t*)(c + 1);
c->u.radnumlit.len = len;
hcl_copy_oochars (c->u.radnumlit.ptr, ptr, len);
c->u.radnumlit.ptr[len] = '\0';
return c;
}
hcl_cnode_t* hcl_makecnodefpdeclit (hcl_t* hcl, const hcl_ioloc_t* loc, const hcl_ooch_t* ptr, hcl_oow_t len)
{
hcl_cnode_t* c = make_cnode(hcl, HCL_CNODE_FPDECLIT, loc, HCL_SIZEOF(*ptr) * (len + 1));
if (HCL_UNLIKELY(!c)) return HCL_NULL;
c->u.fpdeclit.ptr = (hcl_ooch_t*)(c + 1);
c->u.fpdeclit.len = len;
hcl_copy_oochars (c->u.fpdeclit.ptr, ptr, len);
c->u.fpdeclit.ptr[len] = '\0';
return c;
}
hcl_cnode_t* hcl_makecnodestrlit (hcl_t* hcl, const hcl_ioloc_t* loc, const hcl_ooch_t* ptr, hcl_oow_t len)
{
hcl_cnode_t* c = make_cnode(hcl, HCL_CNODE_STRLIT, loc, HCL_SIZEOF(*ptr) * (len + 1));
if (HCL_UNLIKELY(!c)) return HCL_NULL;
c->u.strlit.ptr = (hawk_ooch_t*)(c + 1);
c->u.strlit.ptr = (hcl_ooch_t*)(c + 1);
c->u.strlit.len = len;
hawk_copy_bchars (c->u.strlit.ptr, c->u.strlit.len, ptr, len);
hcl_copy_oochars (c->u.strlit.ptr, ptr, len);
c->u.strlit.ptr[len] = '\0';
return c;
}
hcl_cnode_t* hcl_makecnodeerrlit (hcl_t* hcl, const hcl_ioloc_t* loc, hcl_ooi_t v)
{
hcl_cnode_t* c = make_cnode(hcl, HCL_CNODE_ERRLIT, loc, HCL_SIZEOF(*ptr) * (len + 1));
hcl_cnode_t* c = make_cnode(hcl, HCL_CNODE_ERRLIT, loc, 0);
if (HCL_UNLIKELY(!c)) return HCL_NULL;
c->u.errlit.v = v;

View File

@ -235,6 +235,21 @@ struct hcl_cnode_t
hcl_oow_t len;
} strlit;
struct
{
hcl_ooch_t* ptr;
hcl_oow_t len;
} numlit;
struct
{
hcl_ooch_t* ptr;
hcl_oow_t len;
} radnumlit;
struct
{
hcl_ooch_t* ptr;
hcl_oow_t len;
} fpdeclit;
struct
{
hcl_ooi_t v;
} errlit;
@ -1210,6 +1225,19 @@ int hcl_emitbyteinstruction (
hcl_oob_t bc
);
/* ========================================================================= */
/* cnode.c */
/* ========================================================================= */
hcl_cnode_t* hcl_makecnodenil (hcl_t* hcl, const hcl_ioloc_t* loc);
hcl_cnode_t* hcl_makecnodetrue (hcl_t* hcl, const hcl_ioloc_t* loc);
hcl_cnode_t* hcl_makecnodefalse (hcl_t* hcl, const hcl_ioloc_t* loc);
hcl_cnode_t* hcl_makecnodecharlit (hcl_t* hcl, const hcl_ioloc_t* loc, const hcl_ooch_t ch);
hcl_cnode_t* hcl_makecnodestrlit (hcl_t* hcl, const hcl_ioloc_t* loc, const hcl_ooch_t* ptr, hcl_oow_t len);
hcl_cnode_t* hcl_makecnodenumlit (hcl_t* hcl, const hcl_ioloc_t* loc, const hcl_ooch_t* ptr, hcl_oow_t len);
hcl_cnode_t* hcl_makecnoderadnumlit (hcl_t* hcl, const hcl_ioloc_t* loc, const hcl_ooch_t* ptr, hcl_oow_t len);
hcl_cnode_t* hcl_makecnodefpdeclit (hcl_t* hcl, const hcl_ioloc_t* loc, const hcl_ooch_t* ptr, hcl_oow_t len);
hcl_cnode_t* hcl_makecnodeerrlit (hcl_t* hcl, const hcl_ioloc_t* loc, hcl_ooi_t v);
#if defined(__cplusplus)
}
#endif

View File

@ -26,11 +26,9 @@
#include "hcl-prv.h"
static int begin_include (hcl_t* hcl);
static int end_include (hcl_t* hcl);
#define BUFFER_ALIGN 128
#define BALIT_BUFFER_ALIGN 128
#define SALIT_BUFFER_ALIGN 128
@ -45,7 +43,7 @@ static struct voca_t
{
hcl_oow_t len;
hcl_ooch_t str[11];
} vocas[] =
} vocas[] =
{
{ 8, { '#','i','n','c','l','u','d','e' } },
{ 11, { '#','\\','b','a','c','k','s','p','a','c','e' } },
@ -122,13 +120,13 @@ static int string_to_ooi (hcl_t* hcl, hcl_oocs_t* str, int radixed, hcl_ooi_t* n
{
HCL_ASSERT (hcl, ptr < end);
if (*ptr != '#')
if (*ptr != '#')
{
hcl_seterrbfmt (hcl, HCL_EINVAL, "radixed number not starting with # - %*.js", str->len, str->ptr);
return -1;
}
ptr++; /* skip '#' */
if (*ptr == 'x') base = 16;
else if (*ptr == 'o') base = 8;
else if (*ptr == 'b') base = 2;
@ -147,7 +145,7 @@ static int string_to_ooi (hcl_t* hcl, hcl_oocs_t* str, int radixed, hcl_ooi_t* n
while (ptr < end && (v = CHAR_TO_NUM(*ptr, base)) < base)
{
value = value * base + v;
if (value < old_value)
if (value < old_value)
{
/* overflow must have occurred */
hcl_seterrbfmt (hcl, HCL_ERANGE, "number too big - %.*js", str->len, str->ptr);
@ -214,13 +212,13 @@ static hcl_oop_t string_to_num (hcl_t* hcl, hcl_oocs_t* str, int radixed)
{
HCL_ASSERT (hcl, ptr < end);
if (*ptr != '#')
if (*ptr != '#')
{
hcl_seterrbfmt(hcl, HCL_EINVAL, "radixed number not starting with # - %.*js", str->len, str->ptr);
return HCL_NULL;
}
ptr++; /* skip '#' */
if (*ptr == 'x') base = 16;
else if (*ptr == 'o') base = 8;
else if (*ptr == 'b') base = 2;
@ -438,12 +436,12 @@ static int get_char (hcl_t* hcl)
return 0;
}
if (hcl->c->curinp->b.state == -1)
if (hcl->c->curinp->b.state == -1)
{
hcl->c->curinp->b.state = 0;
return -1;
}
else if (hcl->c->curinp->b.state == 1)
else if (hcl->c->curinp->b.state == 1)
{
hcl->c->curinp->b.state = 0;
goto return_eof;
@ -463,7 +461,7 @@ static int get_char (hcl_t* hcl)
hcl->c->lxc = hcl->c->curinp->lxc;
/* indicate that EOF has been read. lxc.c is also set to EOF. */
return 0;
return 0;
}
hcl->c->curinp->b.pos = 0;
@ -476,9 +474,9 @@ static int get_char (hcl_t* hcl)
* to be read is still in the buffer (hcl->c->curinp->buf).
* hcl->cu->curinp->colm has been incremented when the previous
* character has been read. */
if (hcl->c->curinp->line > 1 && hcl->c->curinp->colm == 2 && hcl->c->curinp->nl != hcl->c->curinp->lxc.c)
if (hcl->c->curinp->line > 1 && hcl->c->curinp->colm == 2 && hcl->c->curinp->nl != hcl->c->curinp->lxc.c)
{
/* most likely, it's the second character in '\r\n' or '\n\r'
/* most likely, it's the second character in '\r\n' or '\n\r'
* sequence. let's not update the line and column number. */
/*hcl->c->curinp->colm = 1;*/
}
@ -516,13 +514,13 @@ static int skip_comment (hcl_t* hcl)
/* attempt to handle #! or ## */
lc = hcl->c->lxc; /* save the last character */
lc = hcl->c->lxc; /* save the last character */
GET_CHAR_TO (hcl, c); /* read a following character */
if (c == '!' || c == '#')
if (c == '!' || c == '#')
{
single_line_comment:
do
do
{
GET_CHAR_TO (hcl, c);
if (c == HCL_OOCI_EOF)
@ -534,7 +532,7 @@ static int skip_comment (hcl_t* hcl)
GET_CHAR (hcl); /* keep the first meaningful character in lxc */
break;
}
}
}
while (1);
return 1; /* single line comment led by ## or #! or ; */
@ -574,9 +572,9 @@ static int get_string (hcl_t* hcl, hcl_ooch_t end_char, hcl_ooch_t esc_char, int
/* more octal digits */
c_acc = c_acc * 8 + c - '0';
digit_count++;
if (digit_count >= escaped)
if (digit_count >= escaped)
{
/* should i limit the max to 0xFF/0377?
/* should i limit the max to 0xFF/0377?
* if (c_acc > 0377) c_acc = 0377;*/
ADD_TOKEN_CHAR (hcl, c_acc);
escaped = 0;
@ -595,7 +593,7 @@ static int get_string (hcl_t* hcl, hcl_ooch_t end_char, hcl_ooch_t esc_char, int
{
c_acc = c_acc * 16 + c - '0';
digit_count++;
if (digit_count >= escaped)
if (digit_count >= escaped)
{
ADD_TOKEN_CHAR (hcl, c_acc);
escaped = 0;
@ -606,7 +604,7 @@ static int get_string (hcl_t* hcl, hcl_ooch_t end_char, hcl_ooch_t esc_char, int
{
c_acc = c_acc * 16 + c - 'A' + 10;
digit_count++;
if (digit_count >= escaped)
if (digit_count >= escaped)
{
ADD_TOKEN_CHAR (hcl, c_acc);
escaped = 0;
@ -617,7 +615,7 @@ static int get_string (hcl_t* hcl, hcl_ooch_t end_char, hcl_ooch_t esc_char, int
{
c_acc = c_acc * 16 + c - 'a' + 10;
digit_count++;
if (digit_count >= escaped)
if (digit_count >= escaped)
{
ADD_TOKEN_CHAR (hcl, c_acc);
escaped = 0;
@ -630,7 +628,7 @@ static int get_string (hcl_t* hcl, hcl_ooch_t end_char, hcl_ooch_t esc_char, int
rc = (escaped == 2)? 'x':
(escaped == 4)? 'u': 'U';
if (digit_count == 0)
if (digit_count == 0)
ADD_TOKEN_CHAR (hcl, rc);
else ADD_TOKEN_CHAR (hcl, c_acc);
@ -660,7 +658,7 @@ static int get_string (hcl_t* hcl, hcl_ooch_t end_char, hcl_ooch_t esc_char, int
else if (c == 'r') c = '\r';
else if (c == 't') c = '\t';
else if (c == 'v') c = '\v';
else if (c >= '0' && c <= '7' && !regex)
else if (c >= '0' && c <= '7' && !regex)
{
/* i don't support the octal notation for a regular expression.
* it conflicts with the backreference notation between \1 and \7 inclusive. */
@ -669,7 +667,7 @@ static int get_string (hcl_t* hcl, hcl_ooch_t end_char, hcl_ooch_t esc_char, int
c_acc = c - '0';
continue;
}
else if (c == 'x')
else if (c == 'x')
{
escaped = 2;
digit_count = 0;
@ -686,7 +684,7 @@ static int get_string (hcl_t* hcl, hcl_ooch_t end_char, hcl_ooch_t esc_char, int
}
#endif
#if (HCL_SIZEOF_OOCH_T >= 4)
else if (c == 'U')
else if (c == 'U')
{
escaped = 8;
digit_count = 0;
@ -694,12 +692,12 @@ static int get_string (hcl_t* hcl, hcl_ooch_t end_char, hcl_ooch_t esc_char, int
continue;
}
#endif
else if (regex)
else if (regex)
{
/* if the following character doesn't compose a proper
* escape sequence, keep the escape character.
* an unhandled escape sequence can be handled
* outside this function since the escape character
* escape sequence, keep the escape character.
* an unhandled escape sequence can be handled
* outside this function since the escape character
* is preserved.*/
ADD_TOKEN_CHAR (hcl, esc_char);
}
@ -724,7 +722,7 @@ static int get_radix_number (hcl_t* hcl, hcl_ooci_t rc, int radix)
if (CHAR_TO_NUM(c, radix) >= radix)
{
hcl_setsynerrbfmt (hcl, HCL_SYNERR_NUMLIT, TOKEN_LOC(hcl), TOKEN_NAME(hcl),
hcl_setsynerrbfmt (hcl, HCL_SYNERR_NUMLIT, TOKEN_LOC(hcl), TOKEN_NAME(hcl),
"no digit after radix specifier in %.*js", hcl->c->tok.name.len, hcl->c->tok.name.ptr);
return -1;
}
@ -767,7 +765,7 @@ static int get_sharp_token (hcl_t* hcl)
/*
* #bBBBB binary
* #oOOOO octal
* #oOOOO octal
* #xXXXX hexadecimal
* #eDDD error
* #pHHH smptr
@ -824,7 +822,7 @@ static int get_sharp_token (hcl_t* hcl)
{
ADD_TOKEN_CHAR (hcl, c);
GET_CHAR_TO (hcl, c);
}
}
while (!is_delimiter(c));
if (TOKEN_NAME_LEN(hcl) >= 4)
@ -855,7 +853,7 @@ static int get_sharp_token (hcl_t* hcl)
c = c * 16 + CHAR_TO_NUM(hcl->c->tok.name.ptr[i], 16); /* don't care if it is for 'p' */
}
}
#if (HCL_SIZEOF_OOCH_T >= 2)
else if (TOKEN_NAME_CHAR(hcl, 2) == 'u')
@ -948,7 +946,7 @@ static int get_sharp_token (hcl_t* hcl)
break;
default:
if (is_delimiter(c))
if (is_delimiter(c))
{
/* EOF, whitespace, etc */
hcl_setsynerrbfmt (hcl, HCL_SYNERR_HASHLIT, TOKEN_LOC(hcl), TOKEN_NAME(hcl),
@ -962,7 +960,7 @@ static int get_sharp_token (hcl_t* hcl)
{
ADD_TOKEN_CHAR (hcl, c);
GET_CHAR_TO (hcl, c);
}
}
while (!is_delimiter(c));
if (does_token_name_match (hcl, VOCA_INCLUDE))
@ -986,7 +984,7 @@ static int get_sharp_token (hcl_t* hcl)
static hcl_iotok_type_t classify_ident_token (hcl_t* hcl, const hcl_oocs_t* v)
{
hcl_oow_t i;
struct
struct
{
hcl_oow_t len;
hcl_ooch_t name[10];
@ -1014,13 +1012,13 @@ static int get_token (hcl_t* hcl)
retry:
GET_CHAR (hcl);
do
do
{
/* skip spaces */
while (is_spacechar(hcl->c->lxc.c)) GET_CHAR (hcl);
/* the first character after the last space is in hcl->c->lxc */
if ((n = skip_comment(hcl)) <= -1) return -1;
}
}
while (n >= 1);
/* clear the token name, reset its location */
@ -1075,7 +1073,7 @@ retry:
SET_TOKEN_TYPE (hcl, HCL_IOTOK_RBRACE);
break;
case '|':
case '|':
ADD_TOKEN_CHAR (hcl, c);
SET_TOKEN_TYPE (hcl, HCL_IOTOK_VBAR);
break;
@ -1109,7 +1107,7 @@ retry:
SET_TOKEN_TYPE (hcl, HCL_IOTOK_CHARLIT);
break;
case '#':
case '#':
if (get_sharp_token(hcl) <= -1) return -1;
break;
@ -1117,7 +1115,7 @@ retry:
case '-':
oldc = c;
GET_CHAR_TO (hcl, c);
if(is_digitchar(c))
if(is_digitchar(c))
{
unget_char (hcl, &hcl->c->lxc);
c = oldc;
@ -1153,7 +1151,7 @@ retry:
goto ident;
}
}
else
else
{
unget_char (hcl, &hcl->c->lxc);
c = oldc;
@ -1211,7 +1209,7 @@ retry:
hcl_iotok_type_t type;
type = classify_ident_token(hcl, TOKEN_NAME(hcl));
if (type != HCL_IOTOK_IDENT)
if (type != HCL_IOTOK_IDENT)
{
SET_TOKEN_TYPE (hcl, type);
unget_char (hcl, &hcl->c->lxc);
@ -1240,7 +1238,7 @@ retry:
seg.ptr = &TOKEN_NAME_CHAR(hcl,start);
seg.len = TOKEN_NAME_LEN(hcl) - start;
if (classify_ident_token(hcl, &seg) != HCL_IOTOK_IDENT)
if (classify_ident_token(hcl, &seg) != HCL_IOTOK_IDENT)
{
hcl_setsynerr (hcl, HCL_SYNERR_MSEGIDENT, TOKEN_LOC(hcl), TOKEN_NAME(hcl));
return -1;
@ -1334,7 +1332,7 @@ static int begin_include (hcl_t* hcl)
/*arg->nl = '\0';*/
arg->includer = hcl->c->curinp;
if (hcl->c->reader(hcl, HCL_IO_OPEN, arg) <= -1)
if (hcl->c->reader(hcl, HCL_IO_OPEN, arg) <= -1)
{
hcl_setsynerrbfmt (hcl, HCL_SYNERR_INCLUDE, TOKEN_LOC(hcl), TOKEN_NAME(hcl), "unable to include %js", io_name);
goto oops;
@ -1354,13 +1352,13 @@ static int begin_include (hcl_t* hcl)
hcl->c->curinp = arg;
/* hcl->c->depth.incl++; */
/* read in the first character in the included file.
/* read in the first character in the included file.
* so the next call to get_token() sees the character read
* from this file. */
if (get_token(hcl) <= -1)
if (get_token(hcl) <= -1)
{
end_include (hcl);
/* i don't jump to oops since i've called
end_include (hcl);
/* i don't jump to oops since i've called
* end_include() which frees hcl->c->curinp/arg */
return -1;
}
@ -1386,8 +1384,8 @@ static int end_include (hcl_t* hcl)
/* if closing has failed, still destroy the
* sio structure first as normal and return
* the failure below. this way, the caller
* does not call HCL_IO_CLOSE on
* the failure below. this way, the caller
* does not call HCL_IO_CLOSE on
* hcl->c->curinp again. */
cur = hcl->c->curinp;
@ -1415,16 +1413,16 @@ static HCL_INLINE hcl_oop_t enter_list (hcl_t* hcl, int flagv)
/* upon entering a list, it pushes a frame of 4 slots.
* rsa[0] stores the first element in the list.
* rsa[1] stores the last element in the list.
* both are updated in chain_to_list() as items are added.
* both are updated in chain_to_list() as items are added.
* rsa[2] stores the flag value.
* rsa[3] stores the pointer to the previous top frame.
* rsa[3] stores the pointer to the previous top frame.
* rsa[4] stores the number of elements in the list */
rsa = (hcl_oop_oop_t)hcl_makearray(hcl, 5, 0);
if (!rsa) return HCL_NULL;
rsa->slot[2] = HCL_SMOOI_TO_OOP(flagv);
rsa->slot[3] = hcl->c->r.s; /* push */
hcl->c->r.s = (hcl_oop_t)rsa;
hcl->c->r.s = (hcl_oop_t)rsa;
rsa->slot[4] = HCL_SMOOI_TO_OOP(0);
@ -1500,8 +1498,8 @@ done:
*oldflagv = fv;
if (HCL_IS_NIL(hcl,hcl->c->r.s))
{
/* the stack is empty after popping.
* it is back to the top level.
/* the stack is empty after popping.
* it is back to the top level.
* the top level can never be quoted. */
*flagv = 0;
}
@ -1523,13 +1521,13 @@ done:
case HCL_CONCODE_ARRAY:
return (hcl_oop_t)hcl_makearray(hcl, 0, 0);
case HCL_CONCODE_BYTEARRAY:
return (hcl_oop_t)hcl_makebytearray(hcl, HCL_NULL, 0);
return (hcl_oop_t)hcl_makebytearray(hcl, HCL_NULL, 0);
case HCL_CONCODE_DIC:
return (hcl_oop_t)hcl_makedic(hcl, 100); /* TODO: default dictionary size for empty definition? */
/* NOTE: empty xlist will get translated to #nil.
* this is useful when used in the lambda expression to express an empty argument. also in defun.
* (lambda () ...) is equivalent to (lambda #nil ...)
* (lambda () ...) is equivalent to (lambda #nil ...)
* (defun x() ...) */
}
}
@ -1582,7 +1580,7 @@ static HCL_INLINE int can_comma_list (hcl_t* hcl)
{
if (count & 1) return 0;
}
else if (LIST_FLAG_GET_CONCODE(flagv) != HCL_CONCODE_ARRAY &&
else if (LIST_FLAG_GET_CONCODE(flagv) != HCL_CONCODE_ARRAY &&
LIST_FLAG_GET_CONCODE(flagv) != HCL_CONCODE_BYTEARRAY)
{
return 0;
@ -1650,11 +1648,11 @@ static hcl_oop_t chain_to_list (hcl_t* hcl, hcl_oop_t obj)
if (flagv & CLOSED)
{
/* the list has already been closed and cannot add more items
/* the list has already been closed and cannot add more items
* for instance, see this faulty expression [1 2 . 3 4 ].
* you can have only 1 item after the period. this condition
* can only be triggered by a wrong qlist where a period is
* allowed. so i can safely hard-code the error code to
* allowed. so i can safely hard-code the error code to
* HCL_SYNERR_RBRACK. */
hcl_setsynerr (hcl, HCL_SYNERR_RBRACK, TOKEN_LOC(hcl), TOKEN_NAME(hcl));
return HCL_NULL;
@ -1686,7 +1684,7 @@ static hcl_oop_t chain_to_list (hcl_t* hcl, hcl_oop_t obj)
if ((flagv & JSON) && count > 0 && !(flagv & (COMMAED | COLONED)))
{
/* there is no separator between array/dictionary elements
/* there is no separator between array/dictionary elements
* for instance, [1 2] { 10 20 } */
hcl_setsynerr (hcl, HCL_SYNERR_NOSEP, TOKEN_LOC(hcl), HCL_NULL);
return HCL_NULL;
@ -1760,7 +1758,7 @@ static int get_symbol_array_literal (hcl_t* hcl, hcl_oop_t* xlit)
hcl_oow_t i;
/* if the program is not buggy, salit.size must be 0 here. */
HCL_ASSERT (hcl, hcl->c->r.salit.size == 0);
HCL_ASSERT (hcl, hcl->c->r.salit.size == 0);
hcl->c->r.salit.size = 0; /* i want to set it to 0 in case it's buggy */
HCL_ASSERT (hcl, TOKEN_TYPE(hcl) == HCL_IOTOK_VBAR);
@ -1812,13 +1810,13 @@ static int read_object (hcl_t* hcl)
/* this function read an s-expression non-recursively
* by manipulating its own stack. */
int level = 0, array_level = 0, flagv = 0;
int level = 0, array_level = 0, flagv = 0;
hcl_oop_t obj;
while (1)
{
redo:
switch (TOKEN_TYPE(hcl))
switch (TOKEN_TYPE(hcl))
{
default:
hcl_setsynerr (hcl, HCL_SYNERR_ILTOK, TOKEN_LOC(hcl), TOKEN_NAME(hcl));
@ -1876,7 +1874,7 @@ static int read_object (hcl_t* hcl)
return -1;
}
/* push some data to simulate recursion into
/* push some data to simulate recursion into
* a list literal or an array literal */
if (enter_list(hcl, flagv) == HCL_NULL) return -1;
level++;
@ -1891,9 +1889,9 @@ static int read_object (hcl_t* hcl)
{
/* cannot have a period:
* 1. at the top level - not inside ()
* 2. at the beginning of a list
* 2. at the beginning of a list
* 3. inside an #(), #[], #{}, () */
hcl_setsynerr (hcl, HCL_SYNERR_DOTBANNED, TOKEN_LOC(hcl), HCL_NULL);
hcl_setsynerr (hcl, HCL_SYNERR_DOTBANNED, TOKEN_LOC(hcl), HCL_NULL);
return -1;
}
@ -1903,7 +1901,7 @@ static int read_object (hcl_t* hcl)
case HCL_IOTOK_COLON:
if (level <= 0 || !can_colon_list(hcl))
{
hcl_setsynerr (hcl, HCL_SYNERR_COLONBANNED, TOKEN_LOC(hcl), HCL_NULL);
hcl_setsynerr (hcl, HCL_SYNERR_COLONBANNED, TOKEN_LOC(hcl), HCL_NULL);
return -1;
}
@ -1913,7 +1911,7 @@ static int read_object (hcl_t* hcl)
case HCL_IOTOK_COMMA:
if (level <= 0 || !can_comma_list(hcl))
{
hcl_setsynerr (hcl, HCL_SYNERR_COMMABANNED, TOKEN_LOC(hcl), HCL_NULL);
hcl_setsynerr (hcl, HCL_SYNERR_COMMABANNED, TOKEN_LOC(hcl), HCL_NULL);
return -1;
}
@ -1924,7 +1922,7 @@ static int read_object (hcl_t* hcl)
case HCL_IOTOK_RBRACK: /* bytearray #[], array[] */
case HCL_IOTOK_RBRACE: /* dictionary {} */
{
static struct
static struct
{
int closer;
hcl_synerrnum_t synerr;
@ -1942,7 +1940,7 @@ static int read_object (hcl_t* hcl)
if (level <= 0)
{
hcl_setsynerr (hcl, HCL_SYNERR_UNBALPBB, TOKEN_LOC(hcl), HCL_NULL);
hcl_setsynerr (hcl, HCL_SYNERR_UNBALPBB, TOKEN_LOC(hcl), HCL_NULL);
return -1;
}
@ -1957,21 +1955,21 @@ static int read_object (hcl_t* hcl)
#if 0
if ((flagv & QUOTED) || level <= 0)
{
/* the right parenthesis can never appear while
* 'quoted' is true. 'quoted' is set to false when
* entering a normal list. 'quoted' is set to true
/* the right parenthesis can never appear while
* 'quoted' is true. 'quoted' is set to false when
* entering a normal list. 'quoted' is set to true
* when entering a quoted list. a quoted list does
* not have an explicit right parenthesis.
* so the right parenthesis can only pair up with
* so the right parenthesis can only pair up with
* the left parenthesis for the normal list.
*
* For example, '(1 2 3 ') 5 6)
*
* this condition is triggerred when the first ) is
* this condition is triggerred when the first ) is
* met after the second quote.
*
* also it is illegal to have the right parenthesis
* with no opening(left) parenthesis, which is
* also it is illegal to have the right parenthesis
* with no opening(left) parenthesis, which is
* indicated by level<=0.
*/
hcl_setsynerr (hcl, HCL_SYNERR_LPAREN, TOKEN_LOC(hcl), TOKEN_NAME(hcl));
@ -2083,14 +2081,14 @@ static int read_object (hcl_t* hcl)
obj = hcl_makesymbol(hcl, TOKEN_NAME_PTR(hcl), TOKEN_NAME_LEN(hcl));
if (obj && !hcl_getatsysdic(hcl, obj))
{
/* query the module for information if it is the first time
/* query the module for information if it is the first time
* when the dotted symbol is seen */
hcl_pfbase_t* pfbase;
hcl_mod_t* mod;
hcl_oop_t val;
unsigned int kernel_bits;
pfbase = hcl_querymod(hcl, TOKEN_NAME_PTR(hcl), TOKEN_NAME_LEN(hcl), &mod);
if (!pfbase)
{
@ -2151,7 +2149,7 @@ static int read_object (hcl_t* hcl)
/* if so, append the element read into the quote list */
if (chain_to_list(hcl, obj) == HCL_NULL) return -1;
/* exit out of the quoted list. the quoted list can have
/* exit out of the quoted list. the quoted list can have
* one element only. */
obj = leave_list(hcl, &flagv, &oldflagv);
@ -2178,7 +2176,7 @@ static int read_object (hcl_t* hcl)
HCL_ASSERT (hcl, level == 0);
HCL_ASSERT (hcl, array_level == 0);
hcl->c->r.e = obj;
hcl->c->r.e = obj;
return 0;
}
@ -2195,7 +2193,7 @@ static HCL_INLINE int __read (hcl_t* hcl)
hcl_oop_t hcl_read (hcl_t* hcl)
{
HCL_ASSERT (hcl, hcl->c && hcl->c->reader);
HCL_ASSERT (hcl, hcl->c && hcl->c->reader);
if (__read(hcl) <= -1) return HCL_NULL;
return hcl->c->r.e;
}
@ -2306,7 +2304,7 @@ int hcl_attachio (hcl_t* hcl, hcl_ioimpl_t reader, hcl_ioimpl_t printer)
if (!cbp) return -1;
hcl->c = (hcl_compiler_t*)hcl_callocmem(hcl, HCL_SIZEOF(*hcl->c));
if (!hcl->c)
if (!hcl->c)
{
hcl_deregcb (hcl, cbp);
return -1;
@ -2338,7 +2336,7 @@ int hcl_attachio (hcl_t* hcl, hcl_ioimpl_t reader, hcl_ioimpl_t printer)
hcl->c->reader = reader;
hcl->c->nungots = 0;
/* The name field and the includer field are HCL_NULL
/* The name field and the includer field are HCL_NULL
* for the main stream */
HCL_MEMSET (&hcl->c->inarg, 0, HCL_SIZEOF(hcl->c->inarg));
hcl->c->inarg.line = 1;
@ -2350,18 +2348,18 @@ int hcl_attachio (hcl_t* hcl, hcl_ioimpl_t reader, hcl_ioimpl_t printer)
HCL_MEMSET (&hcl->c->outarg, 0, HCL_SIZEOF(hcl->c->outarg));
n = hcl->c->printer(hcl, HCL_IO_OPEN, &hcl->c->outarg);
if (n <= -1)
if (n <= -1)
{
hcl->c->reader (hcl, HCL_IO_CLOSE, &hcl->c->inarg);
goto oops;
}
/* the stream is open. set it as the current input stream */
hcl->c->curinp = &hcl->c->inarg;
return 0;
oops:
if (cbp)
if (cbp)
{
hcl_deregcb (hcl, cbp);
hcl_freemem (hcl, hcl->c);
@ -2386,7 +2384,7 @@ void hcl_flushio (hcl_t* hcl)
void hcl_detachio (hcl_t* hcl)
{
/* an error occurred and control has reached here
* probably, some included files might not have been
* probably, some included files might not have been
* closed. close them */
if (hcl->c)

View File

@ -15,7 +15,7 @@ if ENABLE_STATIC_MODULE
##################################################
# STATIC MODULES BUILT INTO MAIN LIBRARY
##################################################
LDFLAGS_COMMON =-L$(libdir) -version-info 1:0:0 -no-undefined
LDFLAGS_COMMON =-L$(libdir)
LIBADD_COMMON =
noinst_LTLIBRARIES =

View File

@ -391,7 +391,7 @@ CFLAGS_COMMON =
##################################################
# STATIC MODULES BUILT INTO MAIN LIBRARY
##################################################
@ENABLE_STATIC_MODULE_TRUE@LDFLAGS_COMMON = -L$(libdir) -version-info 1:0:0 -no-undefined
@ENABLE_STATIC_MODULE_TRUE@LDFLAGS_COMMON = -L$(libdir)
@ENABLE_STATIC_MODULE_FALSE@LIBADD_COMMON = -lhcl
@ENABLE_STATIC_MODULE_TRUE@LIBADD_COMMON =
@ENABLE_STATIC_MODULE_TRUE@noinst_LTLIBRARIES = libhcl-arr.la \