From 19b4e697af076f343ae1472d07922fb7a67a03e2 Mon Sep 17 00:00:00 2001 From: hyung-hwan Date: Tue, 8 Jan 2013 15:56:56 +0000 Subject: [PATCH] updated samples and docs --- qse/doc/Makefile.am | 2 + qse/doc/page/awk-embed.md | 57 ++++++- qse/doc/page/mainpage.md | 1 + qse/include/qse/awk/awk.h | 10 +- qse/include/qse/awk/std.h | 6 +- qse/samples/awk/Makefile.am | 33 ++-- qse/samples/awk/Makefile.in | 190 ++++++++++++----------- qse/samples/awk/awk01.c | 1 + qse/samples/awk/awk02.c | 2 +- qse/samples/awk/awk03.c | 55 +++---- qse/samples/awk/awk04.c | 96 +++--------- qse/samples/awk/awk21.cpp | 105 +++++++++++++ qse/samples/awk/{awk06.cpp => awk22.cpp} | 0 qse/samples/awk/{awk07.cpp => awk23.cpp} | 0 qse/samples/awk/{awk08.cpp => awk24.cpp} | 0 qse/samples/awk/{awk12.cpp => awk25.cpp} | 0 qse/samples/awk/{awk13.cpp => awk26.cpp} | 0 qse/samples/awk/{awk14.cpp => awk27.cpp} | 0 18 files changed, 326 insertions(+), 232 deletions(-) create mode 100644 qse/samples/awk/awk21.cpp rename qse/samples/awk/{awk06.cpp => awk22.cpp} (100%) rename qse/samples/awk/{awk07.cpp => awk23.cpp} (100%) rename qse/samples/awk/{awk08.cpp => awk24.cpp} (100%) rename qse/samples/awk/{awk12.cpp => awk25.cpp} (100%) rename qse/samples/awk/{awk13.cpp => awk26.cpp} (100%) rename qse/samples/awk/{awk14.cpp => awk27.cpp} (100%) diff --git a/qse/doc/Makefile.am b/qse/doc/Makefile.am index 06afd951..128db276 100644 --- a/qse/doc/Makefile.am +++ b/qse/doc/Makefile.am @@ -15,3 +15,5 @@ EXTRA_DIST = \ page/sed.doc \ image/qse-logo.png +all: + doxygen diff --git a/qse/doc/page/awk-embed.md b/qse/doc/page/awk-embed.md index 6b18565a..141bbe2a 100644 --- a/qse/doc/page/awk-embed.md +++ b/qse/doc/page/awk-embed.md @@ -1,4 +1,4 @@ -Embedding Guide {#embedding-guide} +QSEAWK Embedding Guide {#awk-embed} ================================================================================ Overview @@ -28,7 +28,7 @@ Embedding QSEAWK involves the following steps in the simplest form: The sample below follows these steps using as many standard layer functions as possible for convenience sake. It simply prints *hello, world* to the console. - \includelineno awk01.c + \includelineno awk01.c Separation of the awk object and the runtime context was devised to deal with such cases as you want to reuse the same script over different data streams. @@ -47,11 +47,52 @@ to override the callback functions implemented by qse_awk_rtx_openstd() partially. This sample redefines the console handler while keeping the file and pipe handler by qse_awk_rtx_openstd(). - \includelineno awk02.c + \includelineno awk02.c +Entry Point +----------- -Changes -------- +A typical AWK program executes BEGIN, patten-action, END blocks. QSEAWK provides +a way to drive a AWK program in a different style. That is, you can execute +a particular user-defined function on demand. It can be useful if you want +to drive an AWK program in an event-driven mannger though you can free to +change the entry point for your preference. The qse_awk_rtx_call() function +used is limited to user-defined functions. It is not able to call built-in +functions like *gsub* or *index*. + + \includelineno awk03.c + +If you want to pass arguments to the function you call with qse_awk_rtx_call(), +you must create values with value creation functions, updates their reference +count, and pass them to qse_awk_rtx_call(). The sample below creates 2 integer +values with qse_awk_rtx_makeintval() and pass them to the *pow* function. + + \includelineno awk04.c + +While qse_awk_rtx_call() looks up a function in the function table by name, +you can find the function in advance and use the information found when +calling a function. qse_awk_rtx_findfun() and qse_awk_rtx_callfun() come +to play a role in this situation. qse_awk_rtx_call() in the sample above +can be translated into 2 separate calls to qse_awk_rtx_findfun() and +qse_awk_rtx_callfun(). You can reduce look-up overhead via these 2 +functions if you have to execute the same function multiple times. + + \includelineno awk05.c + +Global Variables +---------------- + +You can add built-in global variables with qse_awk_addgbl(). +Use qse_awk_getgbl() to get information. + +Built-in Functions +------------------ + +You can add built-in functions with qse_awk_addfnc(). +On the other hand, modular built-in functions reside in a shared object. + +Changes in 0.6.0 +---------------- ### qse_awk_parsestd() ### @@ -63,7 +104,7 @@ In 0.5.6, it accepted a single script. psin.u.str.len = qse_strlen(src); qse_awk_parsestd (awk, &psin, QSE_NULL); -In 0.6.0 or later, it accepts an array of scripts. +In 0.6.X, it accepts an array of scripts. qse_awk_parsestd_t psin[2]; psin[0].type = QSE_AWK_PARSESTD_STR; @@ -73,6 +114,8 @@ In 0.6.0 or later, it accepts an array of scripts. qse_awk_parsestd (awk, psin, QSE_NULL) ### qse_awk_parsestd_t ### + the cmgr field moved from the union member file to the outer structure. - +### 0 upon Opening ### +I/O handlers can return 0 for success upon opening. diff --git a/qse/doc/page/mainpage.md b/qse/doc/page/mainpage.md index 0436bd0b..71434792 100644 --- a/qse/doc/page/mainpage.md +++ b/qse/doc/page/mainpage.md @@ -27,4 +27,5 @@ See the subpages for more information. - @subpage awk "AWK Interpreter" - @subpage sed "SED Stream Editor" - @subpage awk-lang +- @subpage awk-embed diff --git a/qse/include/qse/awk/awk.h b/qse/include/qse/awk/awk.h index 18f23be6..56364475 100644 --- a/qse/include/qse/awk/awk.h +++ b/qse/include/qse/awk/awk.h @@ -1898,7 +1898,7 @@ QSE_EXPORT qse_awk_fun_t* qse_awk_rtx_findfun ( ); /** - * The qse_awk_rtx_callfun() function invokdes an AWK function described by + * The qse_awk_rtx_callfun() function invokes an AWK function described by * the structure pointed to by @a fun. * @sa qse_awk_rtx_call */ @@ -1913,17 +1913,17 @@ QSE_EXPORT qse_awk_val_t* qse_awk_rtx_callfun ( * The qse_awk_rtx_call() function invokes an AWK function named @a name. * However, it is not able to invoke an intrinsic function such as split(). * The #QSE_AWK_PABLOCK option can be turned off to make illegal the BEGIN - * block, the pattern-action blocks, and the END block. + * blocks, the pattern-action blocks, and the END blocks. * * The example shows typical usage of the function. * @code * rtx = qse_awk_rtx_open (awk, 0, rio, QSE_NULL); - * if (rtx != QSE_NULL) + * if (rtx) * { * v = qse_awk_rtx_call (rtx, QSE_T("init"), QSE_NULL, 0); - * if (v != QSE_NULL) qse_awk_rtx_refdownval (rtx, v); + * if (v) qse_awk_rtx_refdownval (rtx, v); * qse_awk_rtx_call (rtx, QSE_T("fini"), QSE_NULL, 0); - * if (v != QSE_NULL) qse_awk_rtx_refdownval (rtx, v); + * if (v) qse_awk_rtx_refdownval (rtx, v); * qse_awk_rtx_close (rtx); * } * @endcode diff --git a/qse/include/qse/awk/std.h b/qse/include/qse/awk/std.h index e8f528fb..baf3c75c 100644 --- a/qse/include/qse/awk/std.h +++ b/qse/include/qse/awk/std.h @@ -49,8 +49,8 @@ */ enum qse_awk_parsestd_type_t { - QSE_AWK_PARSESTD_NULL = 0, /**< invalid type */ - QSE_AWK_PARSESTD_FILE = 1, /**< files */ + QSE_AWK_PARSESTD_NULL = 0, /**< pseudo-value to indicate no script */ + QSE_AWK_PARSESTD_FILE = 1, /**< script file */ QSE_AWK_PARSESTD_STR = 2 /**< length-bounded string */ }; @@ -67,7 +67,7 @@ struct qse_awk_parsestd_t { struct { - /** file path to open. QSE_NULL or '-' for stdin/stdout. */ + /** file path to open. #QSE_NULL or '-' for stdin/stdout. */ const qse_char_t* path; } file; diff --git a/qse/samples/awk/Makefile.am b/qse/samples/awk/Makefile.am index 277f9a56..c9121361 100644 --- a/qse/samples/awk/Makefile.am +++ b/qse/samples/awk/Makefile.am @@ -5,7 +5,7 @@ AM_CPPFLAGS = \ -I$(top_srcdir)/include \ -I$(includedir) -bin_PROGRAMS = awk01 awk02 awk03 awk04 awk09 awk10 awk11 awk15 +bin_PROGRAMS = awk01 awk02 awk03 awk04 awk05 awk09 awk10 awk11 awk15 LDFLAGS = -L../../lib/awk -L../../lib/cmn LDADD = -lqseawk -lqsecmn $(LIBM) @@ -20,6 +20,7 @@ awk01_SOURCES = awk01.c awk02_SOURCES = awk02.c awk03_SOURCES = awk03.c awk04_SOURCES = awk04.c +awk05_SOURCES = awk05.c awk09_SOURCES = awk09.c awk10_SOURCES = awk10.c awk11_SOURCES = awk11.c @@ -29,21 +30,21 @@ if ENABLE_CXX CXXLIB = -lqseawkxx -lqsecmnxx -bin_PROGRAMS += awk05 awk06 awk07 awk08 awk12 awk13 awk14 +bin_PROGRAMS += awk21 awk22 awk23 awk24 awk25 awk26 awk27 -awk05_SOURCES = awk05.cpp -awk06_SOURCES = awk06.cpp -awk07_SOURCES = awk07.cpp -awk08_SOURCES = awk08.cpp -awk12_SOURCES = awk12.cpp -awk13_SOURCES = awk13.cpp -awk14_SOURCES = awk14.cpp +awk21_SOURCES = awk21.cpp +awk22_SOURCES = awk22.cpp +awk23_SOURCES = awk23.cpp +awk24_SOURCES = awk24.cpp +awk25_SOURCES = awk25.cpp +awk26_SOURCES = awk26.cpp +awk27_SOURCES = awk27.cpp -awk05_LDADD = $(CXXLIB) $(LDADD) -awk06_LDADD = $(CXXLIB) $(LDADD) -awk07_LDADD = $(CXXLIB) $(LDADD) -awk08_LDADD = $(CXXLIB) $(LDADD) -awk12_LDADD = $(CXXLIB) $(LDADD) -awk13_LDADD = $(CXXLIB) $(LDADD) -awk14_LDADD = $(CXXLIB) $(LDADD) +awk21_LDADD = $(CXXLIB) $(LDADD) +awk22_LDADD = $(CXXLIB) $(LDADD) +awk23_LDADD = $(CXXLIB) $(LDADD) +awk24_LDADD = $(CXXLIB) $(LDADD) +awk25_LDADD = $(CXXLIB) $(LDADD) +awk26_LDADD = $(CXXLIB) $(LDADD) +awk27_LDADD = $(CXXLIB) $(LDADD) endif diff --git a/qse/samples/awk/Makefile.in b/qse/samples/awk/Makefile.in index 562aa3c4..78285d15 100644 --- a/qse/samples/awk/Makefile.in +++ b/qse/samples/awk/Makefile.in @@ -35,10 +35,10 @@ POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ bin_PROGRAMS = awk01$(EXEEXT) awk02$(EXEEXT) awk03$(EXEEXT) \ - awk04$(EXEEXT) awk09$(EXEEXT) awk10$(EXEEXT) awk11$(EXEEXT) \ - awk15$(EXEEXT) $(am__EXEEXT_1) + awk04$(EXEEXT) awk05$(EXEEXT) awk09$(EXEEXT) awk10$(EXEEXT) \ + awk11$(EXEEXT) awk15$(EXEEXT) $(am__EXEEXT_1) @WCHAR_TRUE@@WIN32_TRUE@am__append_1 = $(UNICOWS_LIBS) -@ENABLE_CXX_TRUE@am__append_2 = awk05 awk06 awk07 awk08 awk12 awk13 awk14 +@ENABLE_CXX_TRUE@am__append_2 = awk21 awk22 awk23 awk24 awk25 awk26 awk27 subdir = samples/awk DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 @@ -54,9 +54,9 @@ mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/qse/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = -@ENABLE_CXX_TRUE@am__EXEEXT_1 = awk05$(EXEEXT) awk06$(EXEEXT) \ -@ENABLE_CXX_TRUE@ awk07$(EXEEXT) awk08$(EXEEXT) awk12$(EXEEXT) \ -@ENABLE_CXX_TRUE@ awk13$(EXEEXT) awk14$(EXEEXT) +@ENABLE_CXX_TRUE@am__EXEEXT_1 = awk21$(EXEEXT) awk22$(EXEEXT) \ +@ENABLE_CXX_TRUE@ awk23$(EXEEXT) awk24$(EXEEXT) awk25$(EXEEXT) \ +@ENABLE_CXX_TRUE@ awk26$(EXEEXT) awk27$(EXEEXT) am__installdirs = "$(DESTDIR)$(bindir)" PROGRAMS = $(bin_PROGRAMS) am_awk01_OBJECTS = awk01.$(OBJEXT) @@ -77,27 +77,10 @@ am_awk04_OBJECTS = awk04.$(OBJEXT) awk04_OBJECTS = $(am_awk04_OBJECTS) awk04_LDADD = $(LDADD) awk04_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2) -am__awk05_SOURCES_DIST = awk05.cpp -@ENABLE_CXX_TRUE@am_awk05_OBJECTS = awk05.$(OBJEXT) +am_awk05_OBJECTS = awk05.$(OBJEXT) awk05_OBJECTS = $(am_awk05_OBJECTS) -am__DEPENDENCIES_3 = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2) -@ENABLE_CXX_TRUE@awk05_DEPENDENCIES = $(am__DEPENDENCIES_1) \ -@ENABLE_CXX_TRUE@ $(am__DEPENDENCIES_3) -am__awk06_SOURCES_DIST = awk06.cpp -@ENABLE_CXX_TRUE@am_awk06_OBJECTS = awk06.$(OBJEXT) -awk06_OBJECTS = $(am_awk06_OBJECTS) -@ENABLE_CXX_TRUE@awk06_DEPENDENCIES = $(am__DEPENDENCIES_1) \ -@ENABLE_CXX_TRUE@ $(am__DEPENDENCIES_3) -am__awk07_SOURCES_DIST = awk07.cpp -@ENABLE_CXX_TRUE@am_awk07_OBJECTS = awk07.$(OBJEXT) -awk07_OBJECTS = $(am_awk07_OBJECTS) -@ENABLE_CXX_TRUE@awk07_DEPENDENCIES = $(am__DEPENDENCIES_1) \ -@ENABLE_CXX_TRUE@ $(am__DEPENDENCIES_3) -am__awk08_SOURCES_DIST = awk08.cpp -@ENABLE_CXX_TRUE@am_awk08_OBJECTS = awk08.$(OBJEXT) -awk08_OBJECTS = $(am_awk08_OBJECTS) -@ENABLE_CXX_TRUE@awk08_DEPENDENCIES = $(am__DEPENDENCIES_1) \ -@ENABLE_CXX_TRUE@ $(am__DEPENDENCIES_3) +awk05_LDADD = $(LDADD) +awk05_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2) am_awk09_OBJECTS = awk09.$(OBJEXT) awk09_OBJECTS = $(am_awk09_OBJECTS) awk09_LDADD = $(LDADD) @@ -110,25 +93,46 @@ am_awk11_OBJECTS = awk11.$(OBJEXT) awk11_OBJECTS = $(am_awk11_OBJECTS) awk11_LDADD = $(LDADD) awk11_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2) -am__awk12_SOURCES_DIST = awk12.cpp -@ENABLE_CXX_TRUE@am_awk12_OBJECTS = awk12.$(OBJEXT) -awk12_OBJECTS = $(am_awk12_OBJECTS) -@ENABLE_CXX_TRUE@awk12_DEPENDENCIES = $(am__DEPENDENCIES_1) \ -@ENABLE_CXX_TRUE@ $(am__DEPENDENCIES_3) -am__awk13_SOURCES_DIST = awk13.cpp -@ENABLE_CXX_TRUE@am_awk13_OBJECTS = awk13.$(OBJEXT) -awk13_OBJECTS = $(am_awk13_OBJECTS) -@ENABLE_CXX_TRUE@awk13_DEPENDENCIES = $(am__DEPENDENCIES_1) \ -@ENABLE_CXX_TRUE@ $(am__DEPENDENCIES_3) -am__awk14_SOURCES_DIST = awk14.cpp -@ENABLE_CXX_TRUE@am_awk14_OBJECTS = awk14.$(OBJEXT) -awk14_OBJECTS = $(am_awk14_OBJECTS) -@ENABLE_CXX_TRUE@awk14_DEPENDENCIES = $(am__DEPENDENCIES_1) \ -@ENABLE_CXX_TRUE@ $(am__DEPENDENCIES_3) am_awk15_OBJECTS = awk15.$(OBJEXT) awk15_OBJECTS = $(am_awk15_OBJECTS) awk15_LDADD = $(LDADD) awk15_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2) +am__awk21_SOURCES_DIST = awk21.cpp +@ENABLE_CXX_TRUE@am_awk21_OBJECTS = awk21.$(OBJEXT) +awk21_OBJECTS = $(am_awk21_OBJECTS) +am__DEPENDENCIES_3 = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2) +@ENABLE_CXX_TRUE@awk21_DEPENDENCIES = $(am__DEPENDENCIES_1) \ +@ENABLE_CXX_TRUE@ $(am__DEPENDENCIES_3) +am__awk22_SOURCES_DIST = awk22.cpp +@ENABLE_CXX_TRUE@am_awk22_OBJECTS = awk22.$(OBJEXT) +awk22_OBJECTS = $(am_awk22_OBJECTS) +@ENABLE_CXX_TRUE@awk22_DEPENDENCIES = $(am__DEPENDENCIES_1) \ +@ENABLE_CXX_TRUE@ $(am__DEPENDENCIES_3) +am__awk23_SOURCES_DIST = awk23.cpp +@ENABLE_CXX_TRUE@am_awk23_OBJECTS = awk23.$(OBJEXT) +awk23_OBJECTS = $(am_awk23_OBJECTS) +@ENABLE_CXX_TRUE@awk23_DEPENDENCIES = $(am__DEPENDENCIES_1) \ +@ENABLE_CXX_TRUE@ $(am__DEPENDENCIES_3) +am__awk24_SOURCES_DIST = awk24.cpp +@ENABLE_CXX_TRUE@am_awk24_OBJECTS = awk24.$(OBJEXT) +awk24_OBJECTS = $(am_awk24_OBJECTS) +@ENABLE_CXX_TRUE@awk24_DEPENDENCIES = $(am__DEPENDENCIES_1) \ +@ENABLE_CXX_TRUE@ $(am__DEPENDENCIES_3) +am__awk25_SOURCES_DIST = awk25.cpp +@ENABLE_CXX_TRUE@am_awk25_OBJECTS = awk25.$(OBJEXT) +awk25_OBJECTS = $(am_awk25_OBJECTS) +@ENABLE_CXX_TRUE@awk25_DEPENDENCIES = $(am__DEPENDENCIES_1) \ +@ENABLE_CXX_TRUE@ $(am__DEPENDENCIES_3) +am__awk26_SOURCES_DIST = awk26.cpp +@ENABLE_CXX_TRUE@am_awk26_OBJECTS = awk26.$(OBJEXT) +awk26_OBJECTS = $(am_awk26_OBJECTS) +@ENABLE_CXX_TRUE@awk26_DEPENDENCIES = $(am__DEPENDENCIES_1) \ +@ENABLE_CXX_TRUE@ $(am__DEPENDENCIES_3) +am__awk27_SOURCES_DIST = awk27.cpp +@ENABLE_CXX_TRUE@am_awk27_OBJECTS = awk27.$(OBJEXT) +awk27_OBJECTS = $(am_awk27_OBJECTS) +@ENABLE_CXX_TRUE@awk27_DEPENDENCIES = $(am__DEPENDENCIES_1) \ +@ENABLE_CXX_TRUE@ $(am__DEPENDENCIES_3) DEFAULT_INCLUDES = depcomp = $(SHELL) $(top_srcdir)/ac/depcomp am__depfiles_maybe = depfiles @@ -152,17 +156,18 @@ CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ SOURCES = $(awk01_SOURCES) $(awk02_SOURCES) $(awk03_SOURCES) \ - $(awk04_SOURCES) $(awk05_SOURCES) $(awk06_SOURCES) \ - $(awk07_SOURCES) $(awk08_SOURCES) $(awk09_SOURCES) \ - $(awk10_SOURCES) $(awk11_SOURCES) $(awk12_SOURCES) \ - $(awk13_SOURCES) $(awk14_SOURCES) $(awk15_SOURCES) + $(awk04_SOURCES) $(awk05_SOURCES) $(awk09_SOURCES) \ + $(awk10_SOURCES) $(awk11_SOURCES) $(awk15_SOURCES) \ + $(awk21_SOURCES) $(awk22_SOURCES) $(awk23_SOURCES) \ + $(awk24_SOURCES) $(awk25_SOURCES) $(awk26_SOURCES) \ + $(awk27_SOURCES) DIST_SOURCES = $(awk01_SOURCES) $(awk02_SOURCES) $(awk03_SOURCES) \ - $(awk04_SOURCES) $(am__awk05_SOURCES_DIST) \ - $(am__awk06_SOURCES_DIST) $(am__awk07_SOURCES_DIST) \ - $(am__awk08_SOURCES_DIST) $(awk09_SOURCES) $(awk10_SOURCES) \ - $(awk11_SOURCES) $(am__awk12_SOURCES_DIST) \ - $(am__awk13_SOURCES_DIST) $(am__awk14_SOURCES_DIST) \ - $(awk15_SOURCES) + $(awk04_SOURCES) $(awk05_SOURCES) $(awk09_SOURCES) \ + $(awk10_SOURCES) $(awk11_SOURCES) $(awk15_SOURCES) \ + $(am__awk21_SOURCES_DIST) $(am__awk22_SOURCES_DIST) \ + $(am__awk23_SOURCES_DIST) $(am__awk24_SOURCES_DIST) \ + $(am__awk25_SOURCES_DIST) $(am__awk26_SOURCES_DIST) \ + $(am__awk27_SOURCES_DIST) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -348,25 +353,26 @@ awk01_SOURCES = awk01.c awk02_SOURCES = awk02.c awk03_SOURCES = awk03.c awk04_SOURCES = awk04.c +awk05_SOURCES = awk05.c awk09_SOURCES = awk09.c awk10_SOURCES = awk10.c awk11_SOURCES = awk11.c awk15_SOURCES = awk15.c @ENABLE_CXX_TRUE@CXXLIB = -lqseawkxx -lqsecmnxx -@ENABLE_CXX_TRUE@awk05_SOURCES = awk05.cpp -@ENABLE_CXX_TRUE@awk06_SOURCES = awk06.cpp -@ENABLE_CXX_TRUE@awk07_SOURCES = awk07.cpp -@ENABLE_CXX_TRUE@awk08_SOURCES = awk08.cpp -@ENABLE_CXX_TRUE@awk12_SOURCES = awk12.cpp -@ENABLE_CXX_TRUE@awk13_SOURCES = awk13.cpp -@ENABLE_CXX_TRUE@awk14_SOURCES = awk14.cpp -@ENABLE_CXX_TRUE@awk05_LDADD = $(CXXLIB) $(LDADD) -@ENABLE_CXX_TRUE@awk06_LDADD = $(CXXLIB) $(LDADD) -@ENABLE_CXX_TRUE@awk07_LDADD = $(CXXLIB) $(LDADD) -@ENABLE_CXX_TRUE@awk08_LDADD = $(CXXLIB) $(LDADD) -@ENABLE_CXX_TRUE@awk12_LDADD = $(CXXLIB) $(LDADD) -@ENABLE_CXX_TRUE@awk13_LDADD = $(CXXLIB) $(LDADD) -@ENABLE_CXX_TRUE@awk14_LDADD = $(CXXLIB) $(LDADD) +@ENABLE_CXX_TRUE@awk21_SOURCES = awk21.cpp +@ENABLE_CXX_TRUE@awk22_SOURCES = awk22.cpp +@ENABLE_CXX_TRUE@awk23_SOURCES = awk23.cpp +@ENABLE_CXX_TRUE@awk24_SOURCES = awk24.cpp +@ENABLE_CXX_TRUE@awk25_SOURCES = awk25.cpp +@ENABLE_CXX_TRUE@awk26_SOURCES = awk26.cpp +@ENABLE_CXX_TRUE@awk27_SOURCES = awk27.cpp +@ENABLE_CXX_TRUE@awk21_LDADD = $(CXXLIB) $(LDADD) +@ENABLE_CXX_TRUE@awk22_LDADD = $(CXXLIB) $(LDADD) +@ENABLE_CXX_TRUE@awk23_LDADD = $(CXXLIB) $(LDADD) +@ENABLE_CXX_TRUE@awk24_LDADD = $(CXXLIB) $(LDADD) +@ENABLE_CXX_TRUE@awk25_LDADD = $(CXXLIB) $(LDADD) +@ENABLE_CXX_TRUE@awk26_LDADD = $(CXXLIB) $(LDADD) +@ENABLE_CXX_TRUE@awk27_LDADD = $(CXXLIB) $(LDADD) all: all-am .SUFFIXES: @@ -458,16 +464,7 @@ awk04$(EXEEXT): $(awk04_OBJECTS) $(awk04_DEPENDENCIES) $(EXTRA_awk04_DEPENDENCIE $(LINK) $(awk04_OBJECTS) $(awk04_LDADD) $(LIBS) awk05$(EXEEXT): $(awk05_OBJECTS) $(awk05_DEPENDENCIES) $(EXTRA_awk05_DEPENDENCIES) @rm -f awk05$(EXEEXT) - $(CXXLINK) $(awk05_OBJECTS) $(awk05_LDADD) $(LIBS) -awk06$(EXEEXT): $(awk06_OBJECTS) $(awk06_DEPENDENCIES) $(EXTRA_awk06_DEPENDENCIES) - @rm -f awk06$(EXEEXT) - $(CXXLINK) $(awk06_OBJECTS) $(awk06_LDADD) $(LIBS) -awk07$(EXEEXT): $(awk07_OBJECTS) $(awk07_DEPENDENCIES) $(EXTRA_awk07_DEPENDENCIES) - @rm -f awk07$(EXEEXT) - $(CXXLINK) $(awk07_OBJECTS) $(awk07_LDADD) $(LIBS) -awk08$(EXEEXT): $(awk08_OBJECTS) $(awk08_DEPENDENCIES) $(EXTRA_awk08_DEPENDENCIES) - @rm -f awk08$(EXEEXT) - $(CXXLINK) $(awk08_OBJECTS) $(awk08_LDADD) $(LIBS) + $(LINK) $(awk05_OBJECTS) $(awk05_LDADD) $(LIBS) awk09$(EXEEXT): $(awk09_OBJECTS) $(awk09_DEPENDENCIES) $(EXTRA_awk09_DEPENDENCIES) @rm -f awk09$(EXEEXT) $(LINK) $(awk09_OBJECTS) $(awk09_LDADD) $(LIBS) @@ -477,18 +474,30 @@ awk10$(EXEEXT): $(awk10_OBJECTS) $(awk10_DEPENDENCIES) $(EXTRA_awk10_DEPENDENCIE awk11$(EXEEXT): $(awk11_OBJECTS) $(awk11_DEPENDENCIES) $(EXTRA_awk11_DEPENDENCIES) @rm -f awk11$(EXEEXT) $(LINK) $(awk11_OBJECTS) $(awk11_LDADD) $(LIBS) -awk12$(EXEEXT): $(awk12_OBJECTS) $(awk12_DEPENDENCIES) $(EXTRA_awk12_DEPENDENCIES) - @rm -f awk12$(EXEEXT) - $(CXXLINK) $(awk12_OBJECTS) $(awk12_LDADD) $(LIBS) -awk13$(EXEEXT): $(awk13_OBJECTS) $(awk13_DEPENDENCIES) $(EXTRA_awk13_DEPENDENCIES) - @rm -f awk13$(EXEEXT) - $(CXXLINK) $(awk13_OBJECTS) $(awk13_LDADD) $(LIBS) -awk14$(EXEEXT): $(awk14_OBJECTS) $(awk14_DEPENDENCIES) $(EXTRA_awk14_DEPENDENCIES) - @rm -f awk14$(EXEEXT) - $(CXXLINK) $(awk14_OBJECTS) $(awk14_LDADD) $(LIBS) awk15$(EXEEXT): $(awk15_OBJECTS) $(awk15_DEPENDENCIES) $(EXTRA_awk15_DEPENDENCIES) @rm -f awk15$(EXEEXT) $(LINK) $(awk15_OBJECTS) $(awk15_LDADD) $(LIBS) +awk21$(EXEEXT): $(awk21_OBJECTS) $(awk21_DEPENDENCIES) $(EXTRA_awk21_DEPENDENCIES) + @rm -f awk21$(EXEEXT) + $(CXXLINK) $(awk21_OBJECTS) $(awk21_LDADD) $(LIBS) +awk22$(EXEEXT): $(awk22_OBJECTS) $(awk22_DEPENDENCIES) $(EXTRA_awk22_DEPENDENCIES) + @rm -f awk22$(EXEEXT) + $(CXXLINK) $(awk22_OBJECTS) $(awk22_LDADD) $(LIBS) +awk23$(EXEEXT): $(awk23_OBJECTS) $(awk23_DEPENDENCIES) $(EXTRA_awk23_DEPENDENCIES) + @rm -f awk23$(EXEEXT) + $(CXXLINK) $(awk23_OBJECTS) $(awk23_LDADD) $(LIBS) +awk24$(EXEEXT): $(awk24_OBJECTS) $(awk24_DEPENDENCIES) $(EXTRA_awk24_DEPENDENCIES) + @rm -f awk24$(EXEEXT) + $(CXXLINK) $(awk24_OBJECTS) $(awk24_LDADD) $(LIBS) +awk25$(EXEEXT): $(awk25_OBJECTS) $(awk25_DEPENDENCIES) $(EXTRA_awk25_DEPENDENCIES) + @rm -f awk25$(EXEEXT) + $(CXXLINK) $(awk25_OBJECTS) $(awk25_LDADD) $(LIBS) +awk26$(EXEEXT): $(awk26_OBJECTS) $(awk26_DEPENDENCIES) $(EXTRA_awk26_DEPENDENCIES) + @rm -f awk26$(EXEEXT) + $(CXXLINK) $(awk26_OBJECTS) $(awk26_LDADD) $(LIBS) +awk27$(EXEEXT): $(awk27_OBJECTS) $(awk27_DEPENDENCIES) $(EXTRA_awk27_DEPENDENCIES) + @rm -f awk27$(EXEEXT) + $(CXXLINK) $(awk27_OBJECTS) $(awk27_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) @@ -501,16 +510,17 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/awk03.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/awk04.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/awk05.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/awk06.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/awk07.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/awk08.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/awk09.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/awk10.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/awk11.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/awk12.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/awk13.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/awk14.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/awk15.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/awk21.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/awk22.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/awk23.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/awk24.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/awk25.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/awk26.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/awk27.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< diff --git a/qse/samples/awk/awk01.c b/qse/samples/awk/awk01.c index 897a83db..4e542d5d 100644 --- a/qse/samples/awk/awk01.c +++ b/qse/samples/awk/awk01.c @@ -19,6 +19,7 @@ int main () goto oops; } + /* prepare a script to parse */ psin[0].type = QSE_AWK_PARSESTD_STR; psin[0].u.str.ptr = script; psin[0].u.str.len = qse_strlen(script); diff --git a/qse/samples/awk/awk02.c b/qse/samples/awk/awk02.c index 60815396..88efa6d7 100644 --- a/qse/samples/awk/awk02.c +++ b/qse/samples/awk/awk02.c @@ -12,7 +12,7 @@ static const qse_char_t* conin = QSE_T("Beth 4.00 0\nDan 3.74 0\nKathy 4.00 10\nMark 5.00 20\nMary 5.50 22\nSusie 4.25 18\n"); static qse_size_t coninpos = 0; -/* i'll store the console output to this buffer */ +/* the console output is stored into this buffer */ static qse_char_t conout[10000]; static qse_size_t conoutpos = 0; diff --git a/qse/samples/awk/awk03.c b/qse/samples/awk/awk03.c index ab259b18..a0011581 100644 --- a/qse/samples/awk/awk03.c +++ b/qse/samples/awk/awk03.c @@ -1,24 +1,3 @@ -/* - * $Id: awk03.c 523 2011-07-25 15:42:35Z hyunghwan.chung $ - * - Copyright 2006-2012 Chung, Hyung-Hwan. - This file is part of QSE. - - QSE is free software: you can redistribute it and/or modify - it under the terms of the GNU Lesser General Public License as - published by the Free Software Foundation, either version 3 of - the License, or (at your option) any later version. - - QSE is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with QSE. If not, see . - */ - -#include #include #include @@ -42,12 +21,10 @@ int main () { qse_awk_t* awk = QSE_NULL; qse_awk_rtx_t* rtx = QSE_NULL; - qse_awk_parsestd_t psin[2]; - int ret, i, opt; - /* create a main processor */ + /* create an awk object */ awk = qse_awk_openstd (0); if (awk == QSE_NULL) { @@ -55,16 +32,20 @@ int main () ret = -1; goto oops; } + /* get the awk's trait */ qse_awk_getopt (awk, QSE_AWK_TRAIT, &opt); - /* don't allow BEGIN, END, pattern-action blocks */ + /* change the trait value to disallow BEGIN, END, pattern-action blocks */ opt &= ~QSE_AWK_PABLOCK; + /* update the trait */ qse_awk_setopt (awk, QSE_AWK_TRAIT, &opt); + /* prepare a script to parse */ psin[0].type = QSE_AWK_PARSESTD_STR; psin[0].u.str.ptr = src; psin[0].u.str.len = qse_strlen(src); psin[1].type = QSE_AWK_PARSESTD_NULL; + /* parse a script */ ret = qse_awk_parsestd (awk, psin, QSE_NULL); if (ret == -1) { @@ -89,13 +70,15 @@ int main () ret = -1; goto oops; } - /* invoke functions as indicated in the array fnc */ + /* call init() initially, followed by 4 calls to main(), + * and a final call to fini() */ for (i = 0; i < QSE_COUNTOF(fnc); i++) { qse_awk_val_t* v; qse_char_t* str; qse_size_t len; + /* call the function */ v = qse_awk_rtx_call (rtx, fnc[i], QSE_NULL, 0); if (v == QSE_NULL) { @@ -104,27 +87,31 @@ int main () ret = -1; goto oops; } + /* convert the return value to a string with duplication */ str = qse_awk_rtx_valtostrdup (rtx, v, &len); + + /* clear the return value */ + qse_awk_rtx_refdownval (rtx, v); + if (str == QSE_NULL) { qse_fprintf (QSE_STDERR, QSE_T("error: %s\n"), qse_awk_rtx_geterrmsg(rtx)); - - qse_awk_rtx_refdownval (rtx, v); ret = -1; goto oops; } + /* print the return value */ qse_printf (QSE_T("return: [%.*s]\n"), (int)len, str); - qse_awk_rtx_freemem (rtx, str); - /* clear the return value */ - qse_awk_rtx_refdownval (rtx, v); + /* destroy the duplicated string */ + qse_awk_rtx_freemem (rtx, str); } oops: /* destroy a runtime context */ - if (rtx != QSE_NULL) qse_awk_rtx_close (rtx); - /* destroy the processor */ - if (awk != QSE_NULL) qse_awk_close (awk); + if (rtx) qse_awk_rtx_close (rtx); + /* destroy the awk object */ + if (awk) qse_awk_close (awk); + return ret; } diff --git a/qse/samples/awk/awk04.c b/qse/samples/awk/awk04.c index 6748836e..6eb280ae 100644 --- a/qse/samples/awk/awk04.c +++ b/qse/samples/awk/awk04.c @@ -1,24 +1,3 @@ -/* - * $Id: awk04.c 523 2011-07-25 15:42:35Z hyunghwan.chung $ - * - Copyright 2006-2012 Chung, Hyung-Hwan. - This file is part of QSE. - - QSE is free software: you can redistribute it and/or modify - it under the terms of the GNU Lesser General Public License as - published by the Free Software Foundation, either version 3 of - the License, or (at your option) any later version. - - QSE is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with QSE. If not, see . - */ - -#include #include #include @@ -35,13 +14,9 @@ int main () qse_size_t len; qse_awk_val_t* rtv = QSE_NULL; qse_awk_val_t* arg[2] = { QSE_NULL, QSE_NULL }; - qse_awk_fun_t* fun; int ret, i, opt; - qse_awk_rtx_valtostr_out_t out; - qse_char_t numbuf[128]; - - /* create a main processor */ + /* create an awk object */ awk = qse_awk_openstd (0); if (awk == QSE_NULL) { @@ -49,18 +24,20 @@ int main () ret = -1; goto oops; } - qse_awk_getopt (awk, QSE_AWK_TRAIT, &opt); - /* don't allow BEGIN, END, pattern-action blocks */ + /* get the awk's trait */ + qse_awk_getopt (awk, QSE_AWK_TRAIT, &opt); + /* change the trait value to disallow BEGIN, END, pattern-action blocks */ opt &= ~QSE_AWK_PABLOCK; - /* enable ** */ - qse_awk_setopt (awk, QSE_AWK_TRAIT, &opt); - + /* update the trait */ + qse_awk_setopt (awk, QSE_AWK_TRAIT, &opt); + /* prepare an awk script to parse */ psin[0].type = QSE_AWK_PARSESTD_STR; psin[0].u.str.ptr = src; psin[0].u.str.len = qse_strlen(src); psin[1].type = QSE_AWK_PARSESTD_NULL; + /* parse the script */ ret = qse_awk_parsestd (awk, psin, QSE_NULL); if (ret == -1) { @@ -73,7 +50,7 @@ int main () rtx = qse_awk_rtx_openstd ( awk, 0, - QSE_T("awk04"), + QSE_T("awk04"), QSE_NULL, /* stdin */ QSE_NULL, /* stdout */ QSE_NULL /* default cmgr */ @@ -85,7 +62,7 @@ int main () ret = -1; goto oops; } - /* invoke the pow function */ + /* create the first argument to the pow function to call */ arg[0] = qse_awk_rtx_makeintval (rtx, 50); if (arg[0] == QSE_NULL) { @@ -95,6 +72,7 @@ int main () } qse_awk_rtx_refupval (rtx, arg[0]); + /* create the second argument to the pow function to call */ arg[1] = qse_awk_rtx_makeintval (rtx, 3); if (arg[1] == QSE_NULL) { @@ -104,6 +82,7 @@ int main () } qse_awk_rtx_refupval (rtx, arg[1]); + /* call the pow function */ rtv = qse_awk_rtx_call (rtx, QSE_T("pow"), arg, 2); if (rtv == QSE_NULL) { @@ -112,7 +91,12 @@ int main () ret = -1; goto oops; } + /* duplicate the return value to a string */ str = qse_awk_rtx_valtostrdup (rtx, rtv, &len); + + /* clear the return value */ + qse_awk_rtx_refdownval (rtx, rtv); + if (str == QSE_NULL) { qse_fprintf (QSE_STDERR, QSE_T("error: %s\n"), @@ -121,52 +105,11 @@ int main () } qse_printf (QSE_T("[%.*s]\n"), (int)len, str); + + /* destroy the duplicated string */ qse_awk_rtx_freemem (rtx, str); - if (rtv) - { - qse_awk_rtx_refdownval (rtx, rtv); - rtv = QSE_NULL; - } - - /* call the function again using different API functions */ - fun = qse_awk_rtx_findfun (rtx, QSE_T("pow")); - if (fun == QSE_NULL) - { - qse_fprintf (QSE_STDERR, QSE_T("error: %s\n"), - qse_awk_rtx_geterrmsg(rtx)); - ret = -1; goto oops; - } - - rtv = qse_awk_rtx_callfun (rtx, fun, arg, 2); - if (rtv == QSE_NULL) - { - qse_fprintf (QSE_STDERR, QSE_T("error: %s\n"), - qse_awk_rtx_geterrmsg(rtx)); - ret = -1; goto oops; - } - - /* Convert a value to a string in a different way */ - out.type = QSE_AWK_RTX_VALTOSTR_CPL; - out.u.cpl.ptr = numbuf; /* used if the value is not a string */ - out.u.cpl.len = QSE_COUNTOF(numbuf); - if (qse_awk_rtx_valtostr (rtx, rtv, &out) <= -1) - { - qse_fprintf (QSE_STDERR, QSE_T("error: %s\n"), - qse_awk_rtx_geterrmsg(rtx)); - ret = -1; goto oops; - } - - qse_printf (QSE_T("[%.*s]\n"), (int)out.u.cpl.len, out.u.cpl.ptr); - oops: - /* clear the return value */ - if (rtv) - { - qse_awk_rtx_refdownval (rtx, rtv); - rtv = QSE_NULL; - } - /* dereference all arguments */ for (i = 0; i < QSE_COUNTOF(arg); i++) { @@ -177,5 +120,6 @@ oops: if (rtx) qse_awk_rtx_close (rtx); /* destroy the processor */ if (awk) qse_awk_close (awk); + return ret; } diff --git a/qse/samples/awk/awk21.cpp b/qse/samples/awk/awk21.cpp new file mode 100644 index 00000000..bbe53a87 --- /dev/null +++ b/qse/samples/awk/awk21.cpp @@ -0,0 +1,105 @@ +/* + * $Id$ + * + Copyright 2006-2012 Chung, Hyung-Hwan. + This file is part of QSE. + + QSE is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation, either version 3 of + the License, or (at your option) any later version. + + QSE is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with QSE. If not, see . + */ + +#include +#include +#include +#include + +#include +#if defined(_WIN32) +# include +#endif + +static void print_error ( + const QSE::StdAwk::loc_t& loc, const QSE::StdAwk::char_t* msg) +{ + if (loc.line > 0 || loc.colm > 0) + qse_fprintf (QSE_STDERR, QSE_T("ERROR: %s at LINE %lu COLUMN %lu\n"), msg, loc.line, loc.colm); + else + qse_fprintf (QSE_STDERR, QSE_T("ERROR: %s\n"), msg); + +} + +static int run_awk (QSE::StdAwk& awk) +{ + // ARGV[0] + if (awk.addArgument (QSE_T("awk05")) <= -1) return -1; + + // ARGV[1] and/or the first console input file + if (awk.addArgument (QSE_T("Makefile")) <= -1) return -1; + + const qse_char_t* script = QSE_T( + "BEGIN { print \">> PRINT ALL LINES WHOSE LENGTH IS GREATER THAN 0\"; }\n" + "length($0) > 0 { print $0; count++; }\n" + "END { print \">> TOTAL\", count, \"LINES\"; }\n" + ); + + QSE::StdAwk::SourceString in (script); + QSE::StdAwk::SourceFile out (QSE_T("awk05.out")); + + // parse the script string and deparse it to awk05.out. + if (awk.parse (in, out) == QSE_NULL) return -1; + + QSE::StdAwk::Value r; + // execute the BEGIN, pattern-action, END blocks. + return awk.loop (&r); +} + +static int awk_main (int argc, qse_char_t* argv[]) +{ + QSE::StdAwk awk; + + int ret = awk.open (); + if (ret >= 0) ret = run_awk (awk); + + if (ret <= -1) + { + QSE::StdAwk::loc_t loc = awk.getErrorLocation(); + print_error (loc, awk.getErrorMessage()); + } + + awk.close (); + return ret; +} + +int qse_main (int argc, qse_achar_t* argv[]) +{ +#if defined(_WIN32) + char locale[100]; + UINT codepage = GetConsoleOutputCP(); + if (codepage == CP_UTF8) + { + /*SetConsoleOUtputCP (CP_UTF8);*/ + qse_setdflcmgrbyid (QSE_CMGR_UTF8); + } + else + { + sprintf (locale, ".%u", (unsigned int)codepage); + setlocale (LC_ALL, locale); + qse_setdflcmgrbyid (QSE_CMGR_SLMB); + } +#else + setlocale (LC_ALL, ""); + qse_setdflcmgrbyid (QSE_CMGR_SLMB); +#endif + + return qse_runmain (argc,argv,awk_main); +} diff --git a/qse/samples/awk/awk06.cpp b/qse/samples/awk/awk22.cpp similarity index 100% rename from qse/samples/awk/awk06.cpp rename to qse/samples/awk/awk22.cpp diff --git a/qse/samples/awk/awk07.cpp b/qse/samples/awk/awk23.cpp similarity index 100% rename from qse/samples/awk/awk07.cpp rename to qse/samples/awk/awk23.cpp diff --git a/qse/samples/awk/awk08.cpp b/qse/samples/awk/awk24.cpp similarity index 100% rename from qse/samples/awk/awk08.cpp rename to qse/samples/awk/awk24.cpp diff --git a/qse/samples/awk/awk12.cpp b/qse/samples/awk/awk25.cpp similarity index 100% rename from qse/samples/awk/awk12.cpp rename to qse/samples/awk/awk25.cpp diff --git a/qse/samples/awk/awk13.cpp b/qse/samples/awk/awk26.cpp similarity index 100% rename from qse/samples/awk/awk13.cpp rename to qse/samples/awk/awk26.cpp diff --git a/qse/samples/awk/awk14.cpp b/qse/samples/awk/awk27.cpp similarity index 100% rename from qse/samples/awk/awk14.cpp rename to qse/samples/awk/awk27.cpp