added qse_fmtintmaxtombs()/qse_fmtintmaxtowcs() and related functions.

changed qse_awk_t to use these new formatting functions.
redefined some primitive types
This commit is contained in:
2011-11-05 00:50:55 +00:00
parent 6ee7a71b8d
commit 226795c03e
11 changed files with 751 additions and 132 deletions

View File

@ -6,7 +6,7 @@ AM_CPPFLAGS = \
-I$(includedir)
bin_PROGRAMS = xma fma pma chr str sll dll lda oht htb rbt fio pio sio time main main2 rex01 env path01 tre01 fmt01
bin_PROGRAMS = xma fma pma chr str sll dll lda oht htb rbt fio pio sio time main main2 rex01 env path01 tre01 fmt01 fmt02
LDFLAGS = -L../../lib/cmn
LDADD = -lqsecmn
@ -33,6 +33,7 @@ env_SOURCES = env.c
path01_SOURCES = path01.c
tre01_SOURCES = tre01.c
fmt01_SOURCES = fmt01.c
fmt02_SOURCES = fmt02.c
if ENABLE_CXX

View File

@ -39,7 +39,7 @@ bin_PROGRAMS = xma$(EXEEXT) fma$(EXEEXT) pma$(EXEEXT) chr$(EXEEXT) \
oht$(EXEEXT) htb$(EXEEXT) rbt$(EXEEXT) fio$(EXEEXT) \
pio$(EXEEXT) sio$(EXEEXT) time$(EXEEXT) main$(EXEEXT) \
main2$(EXEEXT) rex01$(EXEEXT) env$(EXEEXT) path01$(EXEEXT) \
tre01$(EXEEXT) fmt01$(EXEEXT)
tre01$(EXEEXT) fmt01$(EXEEXT) fmt02$(EXEEXT)
subdir = samples/cmn
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
@ -80,6 +80,10 @@ am_fmt01_OBJECTS = fmt01.$(OBJEXT)
fmt01_OBJECTS = $(am_fmt01_OBJECTS)
fmt01_LDADD = $(LDADD)
fmt01_DEPENDENCIES =
am_fmt02_OBJECTS = fmt02.$(OBJEXT)
fmt02_OBJECTS = $(am_fmt02_OBJECTS)
fmt02_LDADD = $(LDADD)
fmt02_DEPENDENCIES =
am_htb_OBJECTS = htb.$(OBJEXT)
htb_OBJECTS = $(am_htb_OBJECTS)
htb_LDADD = $(LDADD)
@ -158,17 +162,18 @@ LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
$(LDFLAGS) -o $@
SOURCES = $(chr_SOURCES) $(dll_SOURCES) $(env_SOURCES) $(fio_SOURCES) \
$(fma_SOURCES) $(fmt01_SOURCES) $(htb_SOURCES) $(lda_SOURCES) \
$(main_SOURCES) $(main2_SOURCES) $(oht_SOURCES) \
$(path01_SOURCES) $(pio_SOURCES) $(pma_SOURCES) $(rbt_SOURCES) \
$(rex01_SOURCES) $(sio_SOURCES) $(sll_SOURCES) $(str_SOURCES) \
$(time_SOURCES) $(tre01_SOURCES) $(xma_SOURCES)
$(fma_SOURCES) $(fmt01_SOURCES) $(fmt02_SOURCES) \
$(htb_SOURCES) $(lda_SOURCES) $(main_SOURCES) $(main2_SOURCES) \
$(oht_SOURCES) $(path01_SOURCES) $(pio_SOURCES) $(pma_SOURCES) \
$(rbt_SOURCES) $(rex01_SOURCES) $(sio_SOURCES) $(sll_SOURCES) \
$(str_SOURCES) $(time_SOURCES) $(tre01_SOURCES) $(xma_SOURCES)
DIST_SOURCES = $(chr_SOURCES) $(dll_SOURCES) $(env_SOURCES) \
$(fio_SOURCES) $(fma_SOURCES) $(fmt01_SOURCES) $(htb_SOURCES) \
$(lda_SOURCES) $(main_SOURCES) $(main2_SOURCES) $(oht_SOURCES) \
$(path01_SOURCES) $(pio_SOURCES) $(pma_SOURCES) $(rbt_SOURCES) \
$(rex01_SOURCES) $(sio_SOURCES) $(sll_SOURCES) $(str_SOURCES) \
$(time_SOURCES) $(tre01_SOURCES) $(xma_SOURCES)
$(fio_SOURCES) $(fma_SOURCES) $(fmt01_SOURCES) \
$(fmt02_SOURCES) $(htb_SOURCES) $(lda_SOURCES) $(main_SOURCES) \
$(main2_SOURCES) $(oht_SOURCES) $(path01_SOURCES) \
$(pio_SOURCES) $(pma_SOURCES) $(rbt_SOURCES) $(rex01_SOURCES) \
$(sio_SOURCES) $(sll_SOURCES) $(str_SOURCES) $(time_SOURCES) \
$(tre01_SOURCES) $(xma_SOURCES)
ETAGS = etags
CTAGS = ctags
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@ -342,6 +347,7 @@ env_SOURCES = env.c
path01_SOURCES = path01.c
tre01_SOURCES = tre01.c
fmt01_SOURCES = fmt01.c
fmt02_SOURCES = fmt02.c
all: all-am
.SUFFIXES:
@ -437,6 +443,9 @@ fma$(EXEEXT): $(fma_OBJECTS) $(fma_DEPENDENCIES)
fmt01$(EXEEXT): $(fmt01_OBJECTS) $(fmt01_DEPENDENCIES)
@rm -f fmt01$(EXEEXT)
$(LINK) $(fmt01_OBJECTS) $(fmt01_LDADD) $(LIBS)
fmt02$(EXEEXT): $(fmt02_OBJECTS) $(fmt02_DEPENDENCIES)
@rm -f fmt02$(EXEEXT)
$(LINK) $(fmt02_OBJECTS) $(fmt02_LDADD) $(LIBS)
htb$(EXEEXT): $(htb_OBJECTS) $(htb_DEPENDENCIES)
@rm -f htb$(EXEEXT)
$(LINK) $(htb_OBJECTS) $(htb_LDADD) $(LIBS)
@ -498,6 +507,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fio.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fma.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fmt01.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fmt02.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/htb.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lda.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main.Po@am__quote@

View File

@ -3,14 +3,26 @@
static int test_main (int argc, qse_char_t* argv[], qse_char_t* envp[])
{
qse_char_t buf[50];
qse_char_t buf[17];
int bases[] = { 2, 8, 10, 16 };
int flags[] =
{
0,
QSE_FMTULONG_UPPERCASE,
QSE_FMTULONG_FILLRIGHT,
QSE_FMTULONG_UPPERCASE | QSE_FMTULONG_FILLRIGHT
QSE_FMTINTMAX_NOTRUNC | 0,
QSE_FMTINTMAX_NOTRUNC | QSE_FMTINTMAX_UPPERCASE,
QSE_FMTINTMAX_NOTRUNC | QSE_FMTINTMAX_FILLRIGHT,
QSE_FMTINTMAX_NOTRUNC | QSE_FMTINTMAX_UPPERCASE | QSE_FMTINTMAX_PLUSSIGN,
QSE_FMTINTMAX_NOTRUNC | QSE_FMTINTMAX_UPPERCASE | QSE_FMTINTMAX_FILLRIGHT,
QSE_FMTINTMAX_NOTRUNC | QSE_FMTINTMAX_UPPERCASE | QSE_FMTINTMAX_FILLCENTER,
QSE_FMTINTMAX_NOTRUNC | QSE_FMTINTMAX_UPPERCASE | QSE_FMTINTMAX_FILLRIGHT | QSE_FMTINTMAX_PLUSSIGN,
QSE_FMTINTMAX_NOTRUNC | QSE_FMTINTMAX_UPPERCASE | QSE_FMTINTMAX_FILLCENTER | QSE_FMTINTMAX_PLUSSIGN,
QSE_FMTINTMAX_NOTRUNC | QSE_FMTINTMAX_NONULL | 0,
QSE_FMTINTMAX_NOTRUNC | QSE_FMTINTMAX_NONULL | QSE_FMTINTMAX_UPPERCASE,
QSE_FMTINTMAX_NOTRUNC | QSE_FMTINTMAX_NONULL | QSE_FMTINTMAX_FILLRIGHT,
QSE_FMTINTMAX_NOTRUNC | QSE_FMTINTMAX_NONULL | QSE_FMTINTMAX_UPPERCASE | QSE_FMTINTMAX_PLUSSIGN,
QSE_FMTINTMAX_NOTRUNC | QSE_FMTINTMAX_NONULL | QSE_FMTINTMAX_UPPERCASE | QSE_FMTINTMAX_FILLRIGHT,
QSE_FMTINTMAX_NOTRUNC | QSE_FMTINTMAX_NONULL | QSE_FMTINTMAX_UPPERCASE | QSE_FMTINTMAX_FILLCENTER,
QSE_FMTINTMAX_NOTRUNC | QSE_FMTINTMAX_NONULL | QSE_FMTINTMAX_UPPERCASE | QSE_FMTINTMAX_FILLRIGHT | QSE_FMTINTMAX_PLUSSIGN,
QSE_FMTINTMAX_NOTRUNC | QSE_FMTINTMAX_NONULL | QSE_FMTINTMAX_UPPERCASE | QSE_FMTINTMAX_FILLCENTER | QSE_FMTINTMAX_PLUSSIGN
};
int i, j;
int num = 0xF0F3;
@ -19,8 +31,15 @@ static int test_main (int argc, qse_char_t* argv[], qse_char_t* envp[])
{
for (j = 0; j < QSE_COUNTOF(flags); j++)
{
qse_fmtulong (buf, QSE_COUNTOF(buf), num, bases[i] | flags[j], QSE_T('.'));
qse_printf (QSE_T("%8X => [%4d:%04X] [%s]\n"), num, bases[i], flags[j], buf);
int n = qse_fmtuintmax (buf, QSE_COUNTOF(buf), num, bases[i] | flags[j], QSE_T('.'));
if (n <= -1)
{
qse_printf (QSE_T("%8X => [%4d:%04X] ERROR[%d]\n"), num, bases[i], flags[j], n);
}
else
{
qse_printf (QSE_T("%8X => [%4d:%04X] [%.*s][%d]\n"), num, bases[i], flags[j], n, buf, n);
}
}
}

50
qse/samples/cmn/fmt02.c Normal file
View File

@ -0,0 +1,50 @@
#include <qse/cmn/fmt.h>
#include <qse/cmn/main.h>
static int test_main (int argc, qse_char_t* argv[], qse_char_t* envp[])
{
qse_char_t buf[129];
int bases[] = { 2, 8, 10, 16 };
int flags[] =
{
QSE_FMTINTMAX_PLUSSIGN,
QSE_FMTINTMAX_FILLRIGHT | QSE_FMTINTMAX_PLUSSIGN,
QSE_FMTINTMAX_FILLCENTER | QSE_FMTINTMAX_PLUSSIGN
};
int i, j, k;
qse_intmax_t nums[] = { -12345, 12345, 0, QSE_TYPE_MAX(qse_intmax_t) };
/* note that nums[3] may not be printed properly with %d in printf().
* however, the formatting result with qse_fmtintmax() should be printed
* properly.
*/
for (k = 0; k < QSE_COUNTOF(nums) ; k++)
{
for (i = 0; i < QSE_COUNTOF(bases); i++)
{
for (j = 0; j < QSE_COUNTOF(flags); j++)
{
int n = qse_fmtintmax (buf, QSE_COUNTOF(buf), nums[k], bases[i] | flags[j] | QSE_FMTINTMAX_NOTRUNC, QSE_T('.'));
if (n <= -1)
{
qse_printf (QSE_T("%8d => [%4d:%04X] ERROR[%d]\n"), (int)nums[k], bases[i], flags[j], n);
}
else
{
qse_printf (QSE_T("%8d => [%4d:%04X] [%s]\n"), (int)nums[k], bases[i], flags[j], buf);
}
}
}
qse_printf (QSE_T("------------------------------\n"));
}
return 0;
}
int qse_main (int argc, qse_achar_t* argv[], qse_achar_t* envp[])
{
return qse_runmainwithenv (argc, argv, envp, test_main);
}