added qse_sio_putmbsf(), qse_sio_putwcsf(), qse_sio_putstrf()

This commit is contained in:
hyung-hwan 2013-10-19 03:39:10 +00:00
parent 35e9b1777f
commit bd3502f7e9
9 changed files with 129 additions and 53 deletions

View File

@ -302,6 +302,24 @@ QSE_EXPORT qse_ssize_t qse_sio_putwcsn (
qse_size_t size qse_size_t size
); );
QSE_EXPORT qse_ssize_t qse_sio_putmbsf (
qse_sio_t* sio,
const qse_mchar_t* fmt,
...
);
QSE_EXPORT qse_ssize_t qse_sio_putwcsf (
qse_sio_t* sio,
const qse_wchar_t* fmt,
...
);
QSE_EXPORT qse_ssize_t qse_sio_putstrf (
qse_sio_t* sio,
const qse_char_t* fmt,
...
);
#if defined(QSE_CHAR_IS_MCHAR) #if defined(QSE_CHAR_IS_MCHAR)
# define qse_sio_putc(sio,c) qse_sio_putmb(sio,c) # define qse_sio_putc(sio,c) qse_sio_putmb(sio,c)
# define qse_sio_putstr(sio,str) qse_sio_putmbs(sio,str) # define qse_sio_putstr(sio,str) qse_sio_putmbs(sio,str)

View File

@ -9,9 +9,11 @@ lib_LTLIBRARIES = libqsecmn.la
noinst_HEADERS = \ noinst_HEADERS = \
cp949.h \ cp949.h \
cp950.h \ cp950.h \
fmt.h \
fmt-intmax.h \
fmt-print.h \
fs.h \ fs.h \
mem.h \ mem.h \
printf.h \
str-join.h \ str-join.h \
str-subst.h \ str-subst.h \
syscall.h \ syscall.h \
@ -37,7 +39,8 @@ libqsecmn_la_SOURCES = \
htb.c \ htb.c \
fio.c \ fio.c \
fma.c \ fma.c \
fmt.c \ fmt-intmax.c \
fmt-print.c \
fs.c \ fs.c \
fs-err.c \ fs-err.c \
fs-move.c \ fs-move.c \
@ -64,7 +67,6 @@ libqsecmn_la_SOURCES = \
pma.c \ pma.c \
rbt.c \ rbt.c \
rex.c \ rex.c \
printf.c \
sio.c \ sio.c \
sll.c \ sll.c \
slmb.c \ slmb.c \

View File

@ -87,11 +87,11 @@ am__DEPENDENCIES_1 =
libqsecmn_la_DEPENDENCIES = $(am__DEPENDENCIES_1) libqsecmn_la_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__libqsecmn_la_SOURCES_DIST = alg-base64.c alg-rand.c alg-search.c \ am__libqsecmn_la_SOURCES_DIST = alg-base64.c alg-rand.c alg-search.c \
alg-sort.c assert.c chr.c dir.c dll.c env.c gdl.c htb.c fio.c \ alg-sort.c assert.c chr.c dir.c dll.c env.c gdl.c htb.c fio.c \
fma.c fmt.c fs.c fs-err.c fs-move.c glob.c hton.c ipad.c lda.c \ fma.c fmt-intmax.c fmt-print.c fs.c fs-err.c fs-move.c glob.c \
main.c mb8.c mbwc.c mbwc-str.c mem.c mux.c nwad.c nwad-skad.c \ hton.c ipad.c lda.c main.c mb8.c mbwc.c mbwc-str.c mem.c mux.c \
nwif.c nwif-cfg.c nwio.c oht.c opt.c path-basename.c \ nwad.c nwad-skad.c nwif.c nwif-cfg.c nwio.c oht.c opt.c \
path-canon.c pio.c pma.c rbt.c rex.c printf.c sio.c sll.c \ path-basename.c path-canon.c pio.c pma.c rbt.c rex.c sio.c \
slmb.c stdio.c str-beg.c str-cat.c str-chr.c str-cnv.c \ sll.c slmb.c stdio.c str-beg.c str-cat.c str-chr.c str-cnv.c \
str-cmp.c str-cpy.c str-del.c str-dup.c str-dynm.c str-dynw.c \ str-cmp.c str-cpy.c str-del.c str-dup.c str-dynm.c str-dynw.c \
str-end.c str-excl.c str-fcpy.c str-fnmat.c str-incl.c \ str-end.c str-excl.c str-fcpy.c str-fnmat.c str-incl.c \
str-join.c str-len.c str-pac.c str-pbrk.c str-put.c str-rev.c \ str-join.c str-len.c str-pac.c str-pbrk.c str-put.c str-rev.c \
@ -104,21 +104,21 @@ am__libqsecmn_la_SOURCES_DIST = alg-base64.c alg-rand.c alg-search.c \
@ENABLE_XCMGRS_TRUE@am__objects_2 = cp949.lo cp950.lo @ENABLE_XCMGRS_TRUE@am__objects_2 = cp949.lo cp950.lo
am_libqsecmn_la_OBJECTS = alg-base64.lo alg-rand.lo alg-search.lo \ am_libqsecmn_la_OBJECTS = alg-base64.lo alg-rand.lo alg-search.lo \
alg-sort.lo assert.lo chr.lo dir.lo dll.lo env.lo gdl.lo \ alg-sort.lo assert.lo chr.lo dir.lo dll.lo env.lo gdl.lo \
htb.lo fio.lo fma.lo fmt.lo fs.lo fs-err.lo fs-move.lo glob.lo \ htb.lo fio.lo fma.lo fmt-intmax.lo fmt-print.lo fs.lo \
hton.lo ipad.lo lda.lo main.lo mb8.lo mbwc.lo mbwc-str.lo \ fs-err.lo fs-move.lo glob.lo hton.lo ipad.lo lda.lo main.lo \
mem.lo mux.lo nwad.lo nwad-skad.lo nwif.lo nwif-cfg.lo nwio.lo \ mb8.lo mbwc.lo mbwc-str.lo mem.lo mux.lo nwad.lo nwad-skad.lo \
oht.lo opt.lo path-basename.lo path-canon.lo pio.lo pma.lo \ nwif.lo nwif-cfg.lo nwio.lo oht.lo opt.lo path-basename.lo \
rbt.lo rex.lo printf.lo sio.lo sll.lo slmb.lo stdio.lo \ path-canon.lo pio.lo pma.lo rbt.lo rex.lo sio.lo sll.lo \
str-beg.lo str-cat.lo str-chr.lo str-cnv.lo str-cmp.lo \ slmb.lo stdio.lo str-beg.lo str-cat.lo str-chr.lo str-cnv.lo \
str-cpy.lo str-del.lo str-dup.lo str-dynm.lo str-dynw.lo \ str-cmp.lo str-cpy.lo str-del.lo str-dup.lo str-dynm.lo \
str-end.lo str-excl.lo str-fcpy.lo str-fnmat.lo str-incl.lo \ str-dynw.lo str-end.lo str-excl.lo str-fcpy.lo str-fnmat.lo \
str-join.lo str-len.lo str-pac.lo str-pbrk.lo str-put.lo \ str-incl.lo str-join.lo str-len.lo str-pac.lo str-pbrk.lo \
str-rev.lo str-rot.lo str-set.lo str-spl.lo str-spn.lo \ str-put.lo str-rev.lo str-rot.lo str-set.lo str-spl.lo \
str-str.lo str-subst.lo str-tok.lo str-trm.lo str-word.lo \ str-spn.lo str-str.lo str-subst.lo str-tok.lo str-trm.lo \
task.lo time.lo tio.lo tre.lo tre-ast.lo tre-compile.lo \ str-word.lo task.lo time.lo tio.lo tre.lo tre-ast.lo \
tre-match-backtrack.lo tre-match-parallel.lo tre-parse.lo \ tre-compile.lo tre-match-backtrack.lo tre-match-parallel.lo \
tre-stack.lo uri.lo utf8.lo xma.lo $(am__objects_1) \ tre-parse.lo tre-stack.lo uri.lo utf8.lo xma.lo \
$(am__objects_2) $(am__objects_1) $(am__objects_2)
libqsecmn_la_OBJECTS = $(am_libqsecmn_la_OBJECTS) libqsecmn_la_OBJECTS = $(am_libqsecmn_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@)
@ -367,9 +367,11 @@ lib_LTLIBRARIES = libqsecmn.la $(am__append_3)
noinst_HEADERS = \ noinst_HEADERS = \
cp949.h \ cp949.h \
cp950.h \ cp950.h \
fmt.h \
fmt-intmax.h \
fmt-print.h \
fs.h \ fs.h \
mem.h \ mem.h \
printf.h \
str-join.h \ str-join.h \
str-subst.h \ str-subst.h \
syscall.h \ syscall.h \
@ -382,19 +384,20 @@ noinst_HEADERS = \
tre-stack.h tre-stack.h
libqsecmn_la_SOURCES = alg-base64.c alg-rand.c alg-search.c alg-sort.c \ libqsecmn_la_SOURCES = alg-base64.c alg-rand.c alg-search.c alg-sort.c \
assert.c chr.c dir.c dll.c env.c gdl.c htb.c fio.c fma.c fmt.c \ assert.c chr.c dir.c dll.c env.c gdl.c htb.c fio.c fma.c \
fs.c fs-err.c fs-move.c glob.c hton.c ipad.c lda.c main.c \ fmt-intmax.c fmt-print.c fs.c fs-err.c fs-move.c glob.c hton.c \
mb8.c mbwc.c mbwc-str.c mem.c mux.c nwad.c nwad-skad.c nwif.c \ ipad.c lda.c main.c mb8.c mbwc.c mbwc-str.c mem.c mux.c nwad.c \
nwif-cfg.c nwio.c oht.c opt.c path-basename.c path-canon.c \ nwad-skad.c nwif.c nwif-cfg.c nwio.c oht.c opt.c \
pio.c pma.c rbt.c rex.c printf.c sio.c sll.c slmb.c stdio.c \ path-basename.c path-canon.c pio.c pma.c rbt.c rex.c sio.c \
str-beg.c str-cat.c str-chr.c str-cnv.c str-cmp.c str-cpy.c \ sll.c slmb.c stdio.c str-beg.c str-cat.c str-chr.c str-cnv.c \
str-del.c str-dup.c str-dynm.c str-dynw.c str-end.c str-excl.c \ str-cmp.c str-cpy.c str-del.c str-dup.c str-dynm.c str-dynw.c \
str-fcpy.c str-fnmat.c str-incl.c str-join.c str-len.c \ str-end.c str-excl.c str-fcpy.c str-fnmat.c str-incl.c \
str-pac.c str-pbrk.c str-put.c str-rev.c str-rot.c str-set.c \ str-join.c str-len.c str-pac.c str-pbrk.c str-put.c str-rev.c \
str-spl.c str-spn.c str-str.c str-subst.c str-tok.c str-trm.c \ str-rot.c str-set.c str-spl.c str-spn.c str-str.c str-subst.c \
str-word.c task.c time.c tio.c tre.c tre-ast.c tre-compile.c \ str-tok.c str-trm.c str-word.c task.c time.c tio.c tre.c \
tre-match-backtrack.c tre-match-parallel.c tre-parse.c \ tre-ast.c tre-compile.c tre-match-backtrack.c \
tre-stack.c uri.c utf8.c xma.c $(am__append_1) $(am__append_2) tre-match-parallel.c tre-parse.c tre-stack.c uri.c utf8.c \
xma.c $(am__append_1) $(am__append_2)
libqsecmn_la_LDFLAGS = -version-info 1:0:0 -no-undefined libqsecmn_la_LDFLAGS = -version-info 1:0:0 -no-undefined
libqsecmn_la_LIBADD = $(SOCKET_LIBS) libqsecmn_la_LIBADD = $(SOCKET_LIBS)
@ENABLE_CXX_TRUE@libqsecmnxx_la_SOURCES = \ @ENABLE_CXX_TRUE@libqsecmnxx_la_SOURCES = \
@ -493,7 +496,8 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/env.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/env.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fio.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fio.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fma.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fma.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fmt.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fmt-intmax.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fmt-print.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fs-err.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fs-err.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fs-move.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fs-move.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fs.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fs.Plo@am__quote@
@ -520,7 +524,6 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/path-canon.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/path-canon.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pio.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pio.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pma.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pma.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/printf.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rbt.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rbt.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rex.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sio.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sio.Plo@am__quote@

View File

@ -30,7 +30,7 @@
#define char_t qse_mchar_t #define char_t qse_mchar_t
#define fmt_uintmax fmt_unsigned_to_mbs #define fmt_uintmax fmt_unsigned_to_mbs
#define strlen(x) qse_mbslen(x) #define strlen(x) qse_mbslen(x)
#include "fmt.h" #include "fmt-intmax.h"
#undef T #undef T
#undef char_t #undef char_t
@ -41,7 +41,7 @@
#define char_t qse_wchar_t #define char_t qse_wchar_t
#define fmt_uintmax fmt_unsigned_to_wcs #define fmt_uintmax fmt_unsigned_to_wcs
#define strlen(x) qse_wcslen(x) #define strlen(x) qse_wcslen(x)
#include "fmt.h" #include "fmt-intmax.h"
/* ==================== multibyte ===================================== */ /* ==================== multibyte ===================================== */

View File

@ -153,19 +153,19 @@ static int put_mchar (qse_mchar_t c, void *arg)
static const qse_mchar_t m_hex2ascii[] = QSE_MT("0123456789abcdefghijklmnopqrstuvwxyz"); static const qse_mchar_t m_hex2ascii[] = QSE_MT("0123456789abcdefghijklmnopqrstuvwxyz");
#define hex2ascii(hex) (m_hex2ascii[hex]) #define hex2ascii(hex) (m_hex2ascii[hex])
#include "printf.h" #include "fmt-print.h"
int qse_mprintf (const char_t *fmt, ...) qse_ssize_t qse_mprintf (const char_t *fmt, ...)
{ {
va_list ap; va_list ap;
int n; qse_ssize_t n;
va_start (ap, fmt); va_start (ap, fmt);
n = qse_mxprintf (fmt, put_mchar, put_wchar, QSE_NULL, ap); n = qse_mxprintf (fmt, put_mchar, put_wchar, QSE_NULL, ap);
va_end (ap); va_end (ap);
return n; return n;
} }
int qse_mvprintf (const char_t* fmt, va_list ap) qse_ssize_t qse_mvprintf (const char_t* fmt, va_list ap)
{ {
return qse_mxprintf (fmt, put_mchar, put_wchar, QSE_NULL, ap); return qse_mxprintf (fmt, put_mchar, put_wchar, QSE_NULL, ap);
} }
@ -194,19 +194,19 @@ int qse_mvprintf (const char_t* fmt, va_list ap)
static const qse_wchar_t w_hex2ascii[] = QSE_WT("0123456789abcdefghijklmnopqrstuvwxyz"); static const qse_wchar_t w_hex2ascii[] = QSE_WT("0123456789abcdefghijklmnopqrstuvwxyz");
#define hex2ascii(hex) (w_hex2ascii[hex]) #define hex2ascii(hex) (w_hex2ascii[hex])
#include "printf.h" #include "fmt-print.h"
int qse_wprintf (const char_t *fmt, ...) qse_ssize_t qse_wprintf (const char_t *fmt, ...)
{ {
va_list ap; va_list ap;
int n; qse_ssize_t n;
va_start (ap, fmt); va_start (ap, fmt);
n = qse_wxprintf (fmt, put_wchar, put_mchar, QSE_NULL, ap); n = qse_wxprintf (fmt, put_wchar, put_mchar, QSE_NULL, ap);
va_end (ap); va_end (ap);
return n; return n;
} }
int qse_wvprintf (const char_t* fmt, va_list ap) qse_ssize_t qse_wvprintf (const char_t* fmt, va_list ap)
{ {
return qse_wxprintf (fmt, put_wchar, put_mchar, QSE_NULL, ap); return qse_wxprintf (fmt, put_wchar, put_mchar, QSE_NULL, ap);
} }

View File

@ -95,7 +95,7 @@ static char_t* sprintn (char_t* nbuf, qse_uintmax_t num, int base, int *lenp, in
outcnt++; \ outcnt++; \
} while (0) } while (0)
int xprintf (const char_t* fmt, int (*put_char)(char_t, void*), int (*put_ochar) (ochar_t, void*), void *arg, va_list ap) qse_ssize_t xprintf (const char_t* fmt, int (*put_char)(char_t, void*), int (*put_ochar) (ochar_t, void*), void *arg, va_list ap)
{ {
char_t nbuf[MAXNBUF]; char_t nbuf[MAXNBUF];
const char_t* p, * percent; const char_t* p, * percent;
@ -106,7 +106,7 @@ int xprintf (const char_t* fmt, int (*put_char)(char_t, void*), int (*put_ochar)
int lm_flag, lm_dflag, flagc, numlen; int lm_flag, lm_dflag, flagc, numlen;
qse_uintmax_t num = 0; qse_uintmax_t num = 0;
int stop = 0; int stop = 0;
int outcnt = 0; qse_ssize_t outcnt = 0;
struct struct
{ {
@ -740,7 +740,7 @@ oops:
QSE_MMGR_FREE (QSE_MMGR_GETDFL(), fltfmt.ptr); QSE_MMGR_FREE (QSE_MMGR_GETDFL(), fltfmt.ptr);
if (fltout.ptr != fltout.sbuf) if (fltout.ptr != fltout.sbuf)
QSE_MMGR_FREE (QSE_MMGR_GETDFL(), fltout.ptr); QSE_MMGR_FREE (QSE_MMGR_GETDFL(), fltout.ptr);
return -1; return (qse_ssize_t)-1;
} }
#undef PUT_CHAR #undef PUT_CHAR
#undef PUT_OCHAR #undef PUT_OCHAR

View File

@ -20,6 +20,7 @@
#include <qse/cmn/sio.h> #include <qse/cmn/sio.h>
#include "mem.h" #include "mem.h"
#include "fmt.h"
#if defined(_WIN32) #if defined(_WIN32)
# include <windows.h> /* for the UGLY hack */ # include <windows.h> /* for the UGLY hack */
@ -580,6 +581,56 @@ qse_ssize_t qse_sio_putwcsn (
return n; return n;
} }
static int put_wchar (qse_wchar_t c, void *arg)
{
return qse_sio_putwc (arg, c);
}
static int put_mchar (qse_mchar_t c, void *arg)
{
return qse_sio_putmb (arg, c);
}
qse_ssize_t qse_sio_putmbsf (qse_sio_t* sio, const qse_mchar_t* fmt, ...)
{
va_list ap;
qse_ssize_t x;
va_start (ap, fmt);
x = qse_mxprintf (fmt, put_mchar, put_wchar, sio, ap);
va_end (ap);
return x;
}
qse_ssize_t qse_sio_putwcsf (qse_sio_t* sio, const qse_wchar_t* fmt, ...)
{
va_list ap;
qse_ssize_t x;
va_start (ap, fmt);
x = qse_wxprintf (fmt, put_wchar, put_mchar, sio, ap);
va_end (ap);
return x;
}
qse_ssize_t qse_sio_putstrf (qse_sio_t* sio, const qse_char_t* fmt, ...)
{
va_list ap;
qse_ssize_t x;
va_start (ap, fmt);
#if defined(QSE_CHAR_IS_MCHAR)
x = qse_mxprintf (fmt, put_mchar, put_wchar, sio, ap);
#else
x = qse_wxprintf (fmt, put_wchar, put_mchar, sio, ap);
#endif
va_end (ap);
return x;
}
int qse_sio_getpos (qse_sio_t* sio, qse_sio_pos_t* pos) int qse_sio_getpos (qse_sio_t* sio, qse_sio_pos_t* pos)
{ {
qse_fio_off_t off; qse_fio_off_t off;
@ -667,4 +718,3 @@ static qse_ssize_t file_output (
return 0; return 0;
} }

View File

@ -49,6 +49,7 @@ static int test1 (void)
QSE_MMGR_GETDFL(), 0, QSE_SIO_STDOUT, QSE_MMGR_GETDFL(), 0, QSE_SIO_STDOUT,
QSE_SIO_WRITE | QSE_SIO_IGNOREMBWCERR); QSE_SIO_WRITE | QSE_SIO_IGNOREMBWCERR);
qse_sio_putwcs (out, unistr); qse_sio_putwcs (out, unistr);
qse_sio_putwcsf (out, QSE_WT ("[%.*s] [%.*s]\n"), (int)qse_wcslen(unistr) - 1, unistr, (int)qse_wcslen(unistr) - 1, unistr);
qse_sio_close (out); qse_sio_close (out);
return 0; return 0;
} }
@ -86,6 +87,8 @@ static int test2 (void)
qse_wcstombs (unistr, &wlen, mbsbuf, &mlen); qse_wcstombs (unistr, &wlen, mbsbuf, &mlen);
qse_sio_putmbs (out, mbsbuf); qse_sio_putmbs (out, mbsbuf);
qse_sio_putmbsf (out, QSE_MT ("[%.*s] [%.*s]\n"), (int)qse_mbslen(mbsbuf) - 1, mbsbuf, (int)qse_mbslen(mbsbuf) - 1, mbsbuf);
qse_sio_close (out); qse_sio_close (out);
return 0; return 0;
} }