work in progress - refactoring fmtout
This commit is contained in:
parent
ea9f9b81e1
commit
57c30e4563
@ -69,6 +69,7 @@ libmoo_la_SOURCES = \
|
|||||||
dic.c \
|
dic.c \
|
||||||
err.c \
|
err.c \
|
||||||
exec.c \
|
exec.c \
|
||||||
|
fmt.c \
|
||||||
fmtout.c \
|
fmtout.c \
|
||||||
fmtoutv.h \
|
fmtoutv.h \
|
||||||
gc.c \
|
gc.c \
|
||||||
|
@ -159,12 +159,12 @@ LTLIBRARIES = $(pkglib_LTLIBRARIES)
|
|||||||
am__DEPENDENCIES_1 =
|
am__DEPENDENCIES_1 =
|
||||||
am_libmoo_la_OBJECTS = libmoo_la-bigint.lo libmoo_la-comp.lo \
|
am_libmoo_la_OBJECTS = libmoo_la-bigint.lo libmoo_la-comp.lo \
|
||||||
libmoo_la-debug.lo libmoo_la-decode.lo libmoo_la-dic.lo \
|
libmoo_la-debug.lo libmoo_la-decode.lo libmoo_la-dic.lo \
|
||||||
libmoo_la-err.lo libmoo_la-exec.lo libmoo_la-fmtout.lo \
|
libmoo_la-err.lo libmoo_la-exec.lo libmoo_la-fmt.lo \
|
||||||
libmoo_la-gc.lo libmoo_la-heap.lo libmoo_la-mb8.lo \
|
libmoo_la-fmtout.lo libmoo_la-gc.lo libmoo_la-heap.lo \
|
||||||
libmoo_la-moo.lo libmoo_la-number.lo libmoo_la-obj.lo \
|
libmoo_la-mb8.lo libmoo_la-moo.lo libmoo_la-number.lo \
|
||||||
libmoo_la-pf-basic.lo libmoo_la-pf-sys.lo libmoo_la-pf-utf8.lo \
|
libmoo_la-obj.lo libmoo_la-pf-basic.lo libmoo_la-pf-sys.lo \
|
||||||
libmoo_la-rbt.lo libmoo_la-sym.lo libmoo_la-utf8.lo \
|
libmoo_la-pf-utf8.lo libmoo_la-rbt.lo libmoo_la-sym.lo \
|
||||||
libmoo_la-utf16.lo libmoo_la-utl.lo
|
libmoo_la-utf8.lo libmoo_la-utf16.lo libmoo_la-utl.lo
|
||||||
libmoo_la_OBJECTS = $(am_libmoo_la_OBJECTS)
|
libmoo_la_OBJECTS = $(am_libmoo_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@)
|
||||||
@ -406,6 +406,7 @@ pdfdir = @pdfdir@
|
|||||||
prefix = @prefix@
|
prefix = @prefix@
|
||||||
program_transform_name = @program_transform_name@
|
program_transform_name = @program_transform_name@
|
||||||
psdir = @psdir@
|
psdir = @psdir@
|
||||||
|
runstatedir = @runstatedir@
|
||||||
sbindir = @sbindir@
|
sbindir = @sbindir@
|
||||||
sharedstatedir = @sharedstatedir@
|
sharedstatedir = @sharedstatedir@
|
||||||
srcdir = @srcdir@
|
srcdir = @srcdir@
|
||||||
@ -465,6 +466,7 @@ libmoo_la_SOURCES = \
|
|||||||
dic.c \
|
dic.c \
|
||||||
err.c \
|
err.c \
|
||||||
exec.c \
|
exec.c \
|
||||||
|
fmt.c \
|
||||||
fmtout.c \
|
fmtout.c \
|
||||||
fmtoutv.h \
|
fmtoutv.h \
|
||||||
gc.c \
|
gc.c \
|
||||||
@ -607,6 +609,7 @@ distclean-compile:
|
|||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmoo_la-dic.Plo@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmoo_la-dic.Plo@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmoo_la-err.Plo@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmoo_la-err.Plo@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmoo_la-exec.Plo@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmoo_la-exec.Plo@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmoo_la-fmt.Plo@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmoo_la-fmtout.Plo@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmoo_la-fmtout.Plo@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmoo_la-gc.Plo@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmoo_la-gc.Plo@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmoo_la-heap.Plo@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmoo_la-heap.Plo@am__quote@
|
||||||
@ -699,6 +702,13 @@ libmoo_la-exec.lo: exec.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) $(libmoo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libmoo_la-exec.lo `test -f 'exec.c' || echo '$(srcdir)/'`exec.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) $(libmoo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libmoo_la-exec.lo `test -f 'exec.c' || echo '$(srcdir)/'`exec.c
|
||||||
|
|
||||||
|
libmoo_la-fmt.lo: fmt.c
|
||||||
|
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmoo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libmoo_la-fmt.lo -MD -MP -MF $(DEPDIR)/libmoo_la-fmt.Tpo -c -o libmoo_la-fmt.lo `test -f 'fmt.c' || echo '$(srcdir)/'`fmt.c
|
||||||
|
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libmoo_la-fmt.Tpo $(DEPDIR)/libmoo_la-fmt.Plo
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='fmt.c' object='libmoo_la-fmt.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) $(libmoo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libmoo_la-fmt.lo `test -f 'fmt.c' || echo '$(srcdir)/'`fmt.c
|
||||||
|
|
||||||
libmoo_la-fmtout.lo: fmtout.c
|
libmoo_la-fmtout.lo: fmtout.c
|
||||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmoo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libmoo_la-fmtout.lo -MD -MP -MF $(DEPDIR)/libmoo_la-fmtout.Tpo -c -o libmoo_la-fmtout.lo `test -f 'fmtout.c' || echo '$(srcdir)/'`fmtout.c
|
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmoo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libmoo_la-fmtout.lo -MD -MP -MF $(DEPDIR)/libmoo_la-fmtout.Tpo -c -o libmoo_la-fmtout.lo `test -f 'fmtout.c' || echo '$(srcdir)/'`fmtout.c
|
||||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libmoo_la-fmtout.Tpo $(DEPDIR)/libmoo_la-fmtout.Plo
|
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libmoo_la-fmtout.Tpo $(DEPDIR)/libmoo_la-fmtout.Plo
|
||||||
|
1761
moo/lib/fmt.c
Normal file
1761
moo/lib/fmt.c
Normal file
File diff suppressed because it is too large
Load Diff
@ -427,43 +427,8 @@ static int print_object (moo_t* moo, moo_bitmask_t mask, moo_oop_t oop, moo_outb
|
|||||||
}
|
}
|
||||||
else if (c == moo->_fixed_point_decimal)
|
else if (c == moo->_fixed_point_decimal)
|
||||||
{
|
{
|
||||||
#if 1
|
|
||||||
if (!moo_numtostr(moo, oop, 10 | MOO_NUMTOSTR_NONEWOBJ)) return -1;
|
if (!moo_numtostr(moo, oop, 10 | MOO_NUMTOSTR_NONEWOBJ)) return -1;
|
||||||
if (outbfmt(moo, mask, "%.*js", moo->inttostr.xbuf.len, moo->inttostr.xbuf.ptr) <= -1) return -1;
|
if (outbfmt(moo, mask, "%.*js", moo->inttostr.xbuf.len, moo->inttostr.xbuf.ptr) <= -1) return -1;
|
||||||
#else
|
|
||||||
moo_ooch_t* ptr;
|
|
||||||
moo_oow_t len;
|
|
||||||
moo_ooi_t scale;
|
|
||||||
|
|
||||||
if (!moo_inttostr(moo, ((moo_oop_fpdec_t)oop)->value, 10 | MOO_INTTOSTR_NONEWOBJ)) return -1;
|
|
||||||
|
|
||||||
ptr = moo->inttostr.xbuf.ptr;
|
|
||||||
len = moo->inttostr.xbuf.len;
|
|
||||||
if (ptr[0] == '-')
|
|
||||||
{
|
|
||||||
if (outbfmt(moo, mask, "-") <= -1) return -1;
|
|
||||||
ptr++;
|
|
||||||
len--;
|
|
||||||
}
|
|
||||||
|
|
||||||
scale = MOO_OOP_TO_SMOOI(((moo_oop_fpdec_t)oop)->scale);
|
|
||||||
if (scale >= len)
|
|
||||||
{
|
|
||||||
moo_oow_t i;
|
|
||||||
|
|
||||||
if (outbfmt(moo, mask, "0.") <= -1) return -1;
|
|
||||||
for (i = len; i < scale; i++)
|
|
||||||
{
|
|
||||||
if (outbfmt(moo, mask, "0") <= -1) return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (outbfmt(moo, mask, "%.*js", len, ptr) <= -1) return -1;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (outbfmt(moo, mask, "%.*js.%.*js", len - scale, &ptr[0], scale, &ptr[len - scale]) <= -1) return -1;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
else if (MOO_OBJ_GET_FLAGS_TYPE(oop) == MOO_OBJ_TYPE_CHAR)
|
else if (MOO_OBJ_GET_FLAGS_TYPE(oop) == MOO_OBJ_TYPE_CHAR)
|
||||||
{
|
{
|
||||||
@ -618,6 +583,7 @@ static int print_object (moo_t* moo, moo_bitmask_t mask, moo_oop_t oop, moo_outb
|
|||||||
|
|
||||||
/* ------------------------------------------------------------------------- */
|
/* ------------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
|
||||||
#undef FMTCHAR_IS_BCH
|
#undef FMTCHAR_IS_BCH
|
||||||
#undef FMTCHAR_IS_UCH
|
#undef FMTCHAR_IS_UCH
|
||||||
#undef FMTCHAR_IS_OOCH
|
#undef FMTCHAR_IS_OOCH
|
||||||
@ -655,6 +621,8 @@ static int _logufmtv (moo_t* moo, const moo_uch_t* fmt, moo_fmtout_data_t* data,
|
|||||||
return __logufmtv(moo, fmt, data, ap, moo_logbfmt);
|
return __logufmtv(moo, fmt, data, ap, moo_logbfmt);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
|
||||||
moo_ooi_t moo_logbfmt (moo_t* moo, moo_bitmask_t mask, const moo_bch_t* fmt, ...)
|
moo_ooi_t moo_logbfmt (moo_t* moo, moo_bitmask_t mask, const moo_bch_t* fmt, ...)
|
||||||
{
|
{
|
||||||
int x;
|
int x;
|
||||||
@ -726,7 +694,7 @@ moo_ooi_t moo_logufmt (moo_t* moo, moo_bitmask_t mask, const moo_uch_t* fmt, ...
|
|||||||
|
|
||||||
return (x <= -1)? -1: fo.count;
|
return (x <= -1)? -1: fo.count;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/* --------------------------------------------------------------------------
|
/* --------------------------------------------------------------------------
|
||||||
* ERROR MESSAGE FORMATTING
|
* ERROR MESSAGE FORMATTING
|
||||||
|
@ -422,6 +422,8 @@ typedef struct moo_bcs_t moo_bcs_t;
|
|||||||
# define MOO_SIZEOF_OOCH_T MOO_SIZEOF_BCH_T
|
# define MOO_SIZEOF_OOCH_T MOO_SIZEOF_BCH_T
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
typedef unsigned int moo_bitmask_t;
|
||||||
|
|
||||||
/* =========================================================================
|
/* =========================================================================
|
||||||
* BASIC OOP ENCODING
|
* BASIC OOP ENCODING
|
||||||
* ========================================================================= */
|
* ========================================================================= */
|
||||||
|
@ -29,7 +29,6 @@
|
|||||||
|
|
||||||
#include "moo.h"
|
#include "moo.h"
|
||||||
#include "moo-utl.h"
|
#include "moo-utl.h"
|
||||||
#include <stdarg.h>
|
|
||||||
|
|
||||||
/* you can define this to either 1 or 2 */
|
/* you can define this to either 1 or 2 */
|
||||||
#define MOO_BCODE_LONG_PARAM_SIZE 2
|
#define MOO_BCODE_LONG_PARAM_SIZE 2
|
||||||
|
@ -28,6 +28,7 @@
|
|||||||
#define _MOO_UTL_H_
|
#define _MOO_UTL_H_
|
||||||
|
|
||||||
#include "moo-cmn.h"
|
#include "moo-cmn.h"
|
||||||
|
#include <stdarg.h>
|
||||||
|
|
||||||
/* =========================================================================
|
/* =========================================================================
|
||||||
* DOUBLY LINKED LIST
|
* DOUBLY LINKED LIST
|
||||||
@ -294,6 +295,52 @@ enum moo_cmgr_id_t
|
|||||||
};
|
};
|
||||||
typedef enum moo_cmgr_id_t moo_cmgr_id_t;
|
typedef enum moo_cmgr_id_t moo_cmgr_id_t;
|
||||||
|
|
||||||
|
|
||||||
|
/* =========================================================================
|
||||||
|
* FORMATTED OUTPUT
|
||||||
|
* ========================================================================= */
|
||||||
|
typedef struct moo_fmtout_t moo_fmtout_t;
|
||||||
|
|
||||||
|
typedef int (*moo_fmtout_putbcs_t) (
|
||||||
|
moo_fmtout_t* fmtout,
|
||||||
|
const moo_bch_t* ptr,
|
||||||
|
moo_oow_t len
|
||||||
|
);
|
||||||
|
|
||||||
|
typedef int (*moo_fmtout_putucs_t) (
|
||||||
|
moo_fmtout_t* fmtout,
|
||||||
|
const moo_uch_t* ptr,
|
||||||
|
moo_oow_t len
|
||||||
|
);
|
||||||
|
|
||||||
|
typedef int (*moo_fmtout_putobj_t) (
|
||||||
|
moo_fmtout_t* fmtout,
|
||||||
|
moo_oop_t obj;
|
||||||
|
);
|
||||||
|
|
||||||
|
enum moo_fmtout_fmt_type_t
|
||||||
|
{
|
||||||
|
MOO_FMTOUT_FMT_TYPE_BCH = 0,
|
||||||
|
MOO_FMTOUT_FMT_TYPE_UCH
|
||||||
|
};
|
||||||
|
typedef enum moo_fmtout_fmt_type_t moo_fmtout_fmt_type_t;
|
||||||
|
|
||||||
|
|
||||||
|
struct moo_fmtout_t
|
||||||
|
{
|
||||||
|
moo_oow_t count; /* out */
|
||||||
|
|
||||||
|
moo_fmtout_putbcs_t putbcs; /* in */
|
||||||
|
moo_fmtout_putucs_t putucs; /* in */
|
||||||
|
moo_fmtout_putobj_t putobj; /* in - %O is not handled if it's not set. */
|
||||||
|
moo_bitmask_t mask; /* in */
|
||||||
|
void* ctx; /* in */
|
||||||
|
|
||||||
|
moo_fmtout_fmt_type_t fmt_type;
|
||||||
|
const void* fmt_str;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
#if defined(__cplusplus)
|
#if defined(__cplusplus)
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
@ -805,6 +852,34 @@ MOO_EXPORT moo_oow_t moo_mb8_to_uc (
|
|||||||
moo_uch_t* uc
|
moo_uch_t* uc
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/* =========================================================================
|
||||||
|
* FORMATTED OUTPUT
|
||||||
|
* ========================================================================= */
|
||||||
|
MOO_EXPORT int moo_bfmt_outv (
|
||||||
|
moo_fmtout_t* fmtout,
|
||||||
|
const moo_bch_t* fmt,
|
||||||
|
va_list ap
|
||||||
|
);
|
||||||
|
|
||||||
|
MOO_EXPORT int moo_ufmt_outv (
|
||||||
|
moo_fmtout_t* fmtout,
|
||||||
|
const moo_uch_t* fmt,
|
||||||
|
va_list ap
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
MOO_EXPORT int moo_bfmt_out (
|
||||||
|
moo_fmtout_t* fmtout,
|
||||||
|
const moo_bch_t* fmt,
|
||||||
|
...
|
||||||
|
);
|
||||||
|
|
||||||
|
MOO_EXPORT int moo_ufmt_out (
|
||||||
|
moo_fmtout_t* fmtout,
|
||||||
|
const moo_uch_t* fmt,
|
||||||
|
...
|
||||||
|
);
|
||||||
|
|
||||||
/* =========================================================================
|
/* =========================================================================
|
||||||
* BIT SWAP
|
* BIT SWAP
|
||||||
* ========================================================================= */
|
* ========================================================================= */
|
||||||
|
@ -40,7 +40,6 @@
|
|||||||
|
|
||||||
|
|
||||||
typedef struct moo_mod_t moo_mod_t;
|
typedef struct moo_mod_t moo_mod_t;
|
||||||
typedef unsigned int moo_bitmask_t;
|
|
||||||
|
|
||||||
/* ========================================================================== */
|
/* ========================================================================== */
|
||||||
|
|
||||||
|
1335
moo/t/t-003.c
1335
moo/t/t-003.c
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user