From 4803bd861ad61097fdb58b4bc936740cb30ff1c0 Mon Sep 17 00:00:00 2001 From: hyung-hwan Date: Sun, 21 Dec 2008 21:35:07 +0000 Subject: [PATCH] initial import --- qse/README | 1 + qse/ase.bdsgroup | 22 - qse/ase.dsw | 137 - qse/ase.sln | 247 - qse/build.xml | 6 +- qse/change.log | 122 - qse/cmd/awk/Awk.cpp | 298 +- qse/cmd/awk/aseawk++.bdsproj | 261 - qse/cmd/awk/aseawk++.vcproj | 440 -- qse/cmd/awk/aseawk.bdsproj | 262 - qse/cmd/awk/aseawk.vcproj | 395 -- qse/cmd/awk/asetestawk++.dsp | 102 - qse/cmd/awk/asetestawk.dsp | 102 - qse/cmd/awk/awk.c | 448 +- qse/cmd/awk/descrip.mms | 13 - qse/cmd/awk/makefile.in | 4 +- qse/cmd/awk/manifest | 2 +- qse/cmd/awk/msw-bcc.mak | 115 - qse/cmd/awk/msw-cl.mak | 118 - qse/cmd/com/Awk.cs | 420 -- qse/cmd/com/AwkExtioConsole.cls | 32 - qse/cmd/com/AwkForm.Designer.cs | 381 -- qse/cmd/com/AwkForm.cs | 87 - qse/cmd/com/AwkForm.frm | 557 -- qse/cmd/com/AwkForm.frx | Bin 17 -> 0 bytes qse/cmd/com/AwkForm.resx | 123 - qse/cmd/com/Program.cs | 20 - qse/cmd/com/Properties/AssemblyInfo.cs | 33 - qse/cmd/com/Properties/Resources.Designer.cs | 63 - qse/cmd/com/Properties/Resources.resx | 117 - qse/cmd/com/Properties/Settings.Designer.cs | 26 - qse/cmd/com/Properties/Settings.settings | 7 - qse/cmd/com/StdAwk.cs | 60 - qse/cmd/com/asecom.csproj | 108 - qse/cmd/com/asecom.vbp | 39 - qse/cmd/com/asecom.vbw | 2 - qse/cmd/com/awk.js | 72 - qse/cmd/com/awk.vbs | 30 - qse/cmd/lsp/aselsp.vcproj | 436 -- qse/cmd/lsp/asetestlsp.dsp | 102 - qse/cmd/lsp/descrip.mms | 13 - qse/cmd/lsp/lsp.c | 188 +- qse/cmd/lsp/makefile.in | 4 +- qse/cmd/lsp/makefile.msw.bcc | 19 - qse/cmd/lsp/makefile.msw.cl | 17 - qse/cmd/makefile.in | 2 +- qse/cmd/net/Awk.cs | 216 - qse/cmd/net/AwkForm.Designer.cs | 384 -- qse/cmd/net/AwkForm.cs | Bin 13312 -> 0 bytes qse/cmd/net/AwkForm.resx | 123 - qse/cmd/net/Program.cs | 20 - qse/cmd/net/Properties/AssemblyInfo.cs | 33 - qse/cmd/net/Properties/Resources.Designer.cs | 63 - qse/cmd/net/Properties/Resources.resx | 117 - qse/cmd/net/Properties/Settings.Designer.cs | 26 - qse/cmd/net/Properties/Settings.settings | 7 - qse/cmd/net/asenet.csproj | 102 - qse/cmd/stx/makefile.bcc | 21 - qse/cmd/stx/makefile.cl | 20 - qse/cmd/tgp/makefile.in | 4 +- qse/cmd/tgp/tgp.c | 154 +- qse/com/Awk.cpp | 1530 ----- qse/com/Awk.h | 201 - qse/com/Awk.rgs | 25 - qse/com/AwkExtio.cpp | 70 - qse/com/AwkExtio.h | 53 - qse/com/AwkExtio.rgs | 26 - qse/com/Buffer.cpp | 51 - qse/com/Buffer.h | 40 - qse/com/Buffer.rgs | 26 - qse/com/asecom.cpp | 78 - qse/com/asecom.def | 9 - qse/com/asecom.dsp | 207 - qse/com/asecom.idl | 339 -- qse/com/asecom.rc | 121 - qse/com/asecom.vcproj | 775 --- qse/com/aseps.def | 11 - qse/com/aseps.mk | 16 - qse/com/awk_cp.h | 637 -- qse/com/resource.h | 19 - qse/com/stdafx.cpp | 18 - qse/com/stdafx.h | 29 - qse/configure | 98 +- qse/configure.ac | 74 +- qse/doc/doxyfile | 243 - qse/doc/en/ase-assert.man | 15 - qse/doc/en/ase.man | 51 - qse/doc/en/awk-embed.man | 209 - qse/doc/en/awk-lang.man | 204 - qse/doc/en/awk-ref.man | 93 - qse/doc/en/license.man | 19 - qse/doc/en/lsp-embed.man | 22 - qse/doc/en/quickstart.man | 177 - qse/doc/imgs/awk-srcio-read.dia | Bin 1999 -> 0 bytes qse/doc/imgs/awk-srcio-read.png | Bin 3225 -> 0 bytes qse/doc/imgs/awk-srcio-write.dia | Bin 2011 -> 0 bytes qse/doc/imgs/awk-srcio-write.png | Bin 3247 -> 0 bytes qse/doc/ko/ase.man | 27 - qse/doc/ko/license.man | 19 - qse/doc/ko/quickstart.man | 116 - qse/include/ase/awk/awk.h | 1210 ---- qse/include/ase/cmn/chr.h | 97 - qse/include/ase/cmn/dll.h | 260 - qse/include/ase/cmn/fio.h | 152 - qse/include/ase/cmn/io.h | 74 - qse/include/ase/cmn/lda.h | 477 -- qse/include/ase/cmn/map.h | 566 -- qse/include/ase/cmn/opt.h | 63 - qse/include/ase/cmn/rex.h | 94 - qse/include/ase/cmn/sio.h | 142 - qse/include/ase/cmn/sll.h | 582 -- qse/include/ase/cmn/str.h | 476 -- qse/include/ase/cmn/time.h | 134 - qse/include/ase/cmn/tio.h | 299 - qse/include/ase/conf_msw.h | 64 - qse/include/ase/lsp/lsp.h | 134 - qse/include/ase/macros.h | 171 - qse/include/ase/tgp/tgp.h | 40 - qse/include/ase/types.h | 439 -- qse/include/ase/utl/http.h | 66 - qse/include/ase/utl/main.h | 37 - qse/include/ase/utl/stdio.h | 88 - qse/include/makefile.am | 2 +- qse/include/makefile.in | 4 +- qse/include/{ase => qse}/awk/Awk.hpp | 444 +- qse/include/{ase => qse}/awk/StdAwk.hpp | 10 +- qse/include/qse/awk/awk.h | 1210 ++++ qse/include/{ase => qse}/awk/makefile.am | 2 +- qse/include/{ase => qse}/awk/makefile.in | 10 +- qse/include/qse/cmn/chr.h | 97 + qse/include/qse/cmn/dll.h | 260 + qse/include/qse/cmn/fio.h | 152 + qse/include/qse/cmn/io.h | 74 + qse/include/qse/cmn/lda.h | 477 ++ qse/include/{ase => qse}/cmn/makefile.am | 2 +- qse/include/{ase => qse}/cmn/makefile.in | 10 +- qse/include/qse/cmn/map.h | 566 ++ qse/include/{ase => qse}/cmn/mem.h | 88 +- qse/include/qse/cmn/opt.h | 63 + qse/include/qse/cmn/rex.h | 94 + qse/include/qse/cmn/sio.h | 142 + qse/include/qse/cmn/sll.h | 582 ++ qse/include/qse/cmn/str.h | 476 ++ qse/include/qse/cmn/time.h | 134 + qse/include/qse/cmn/tio.h | 299 + qse/include/qse/conf_msw.h | 64 + qse/include/{ase => qse}/conf_vms.h | 64 +- qse/include/{ase => qse}/config.h.in | 158 +- qse/include/qse/lsp/lsp.h | 134 + qse/include/{ase => qse}/lsp/makefile.am | 2 +- qse/include/{ase => qse}/lsp/makefile.in | 10 +- qse/include/qse/macros.h | 171 + qse/include/{ase => qse}/makefile.am | 6 +- qse/include/{ase => qse}/makefile.in | 14 +- qse/include/{ase => qse}/pack1.h | 0 qse/include/{ase => qse}/pack2.h | 0 qse/include/{ase => qse}/tgp/makefile.am | 2 +- qse/include/{ase => qse}/tgp/makefile.in | 10 +- qse/include/qse/tgp/tgp.h | 40 + qse/include/qse/types.h | 439 ++ qse/include/{ase => qse}/unpack.h | 0 qse/include/qse/utl/http.h | 66 + qse/include/qse/utl/main.h | 37 + qse/include/{ase => qse}/utl/makefile.am | 2 +- qse/include/{ase => qse}/utl/makefile.in | 10 +- qse/include/qse/utl/stdio.h | 88 + qse/java/AseAwk.java | 745 --- qse/java/AseAwkApplet-id.html | 91 - qse/java/AseAwkApplet-ko.html | 84 - qse/java/AseAwkApplet.html | 85 - qse/java/AseAwkApplet.java | 38 - qse/java/AseAwkApplet.js | 5 - qse/java/AseAwkPanel.java | 976 --- qse/java/ase/awk/Argument.java | 80 - qse/java/ase/awk/Awk.java | 459 -- qse/java/ase/awk/Clearable.java | 13 - qse/java/ase/awk/Console.java | 30 - qse/java/ase/awk/Context.java | 115 - qse/java/ase/awk/Exception.java | 184 - qse/java/ase/awk/Extio.java | 80 - qse/java/ase/awk/File.java | 20 - qse/java/ase/awk/IO.java | 46 - qse/java/ase/awk/Pipe.java | 18 - qse/java/ase/awk/Return.java | 184 - qse/java/ase/awk/StdAwk.java | 451 -- qse/java/ase/awk/makefile.in | 248 - qse/java/makefile.in | 98 - qse/lib/awk/Awk.cpp | 918 +-- qse/lib/awk/StdAwk.cpp | 140 +- qse/lib/awk/aseawk++.bdsproj | 265 - qse/lib/awk/aseawk++.dsp | 122 - qse/lib/awk/aseawk++.vcproj | 376 -- qse/lib/awk/aseawk.bdsproj | 275 - qse/lib/awk/aseawk.dsp | 186 - qse/lib/awk/aseawk.vcproj | 800 --- qse/lib/awk/aseawk_jni.dsp | 113 - qse/lib/awk/aseawk_jni.vcproj | 442 -- qse/lib/awk/awk.c | 458 +- qse/lib/awk/awk.h | 310 +- qse/lib/awk/awk.txt | 8 +- qse/lib/awk/descrip.mms | 25 - qse/lib/awk/err.c | 458 +- qse/lib/awk/extio.c | 602 +- qse/lib/awk/extio.h | 46 +- qse/lib/awk/func.c | 1212 ++-- qse/lib/awk/func.h | 26 +- qse/lib/awk/generrcode-java.awk | 34 - qse/lib/awk/generrcode-net.awk | 34 - qse/lib/awk/generrcode.awk | 6 +- qse/lib/awk/genoptcode.awk | 6 +- qse/lib/awk/jni-dmc.def | 41 - qse/lib/awk/jni.c | 2851 --------- qse/lib/awk/jni.def | 40 - qse/lib/awk/jni.h | 88 - qse/lib/awk/makefile.in | 2 +- qse/lib/awk/misc.c | 422 +- qse/lib/awk/misc.h | 50 +- qse/lib/awk/msw-bcc.mak | 208 - qse/lib/awk/msw-cl.mak | 219 - qse/lib/awk/msw-dmc.mak | 155 - qse/lib/awk/parse.c | 4020 ++++++------ qse/lib/awk/parse.h | 18 +- qse/lib/awk/rec.c | 338 +- qse/lib/awk/run.c | 5750 +++++++++--------- qse/lib/awk/run.h | 106 +- qse/lib/awk/std.c | 722 +-- qse/lib/awk/tree.c | 1086 ++-- qse/lib/awk/tree.h | 474 +- qse/lib/awk/val.c | 1086 ++-- qse/lib/cmn/asecmn.bdsproj | 250 - qse/lib/cmn/asecmn.dsp | 132 - qse/lib/cmn/asecmn.vcproj | 528 -- qse/lib/cmn/chr.c | 72 +- qse/lib/cmn/chr.h | 88 +- qse/lib/cmn/chr_cnv.c | 18 +- qse/lib/cmn/descrip.mms | 21 - qse/lib/cmn/dll.c | 142 +- qse/lib/cmn/fio.c | 160 +- qse/lib/cmn/lda.c | 278 +- qse/lib/cmn/makefile.in | 2 +- qse/lib/cmn/map.c | 356 +- qse/lib/cmn/mem.c | 222 +- qse/lib/cmn/mem.h | 40 +- qse/lib/cmn/msw-bcc.mak | 75 - qse/lib/cmn/msw-cl.mak | 71 - qse/lib/cmn/msw-dmc.mak | 62 - qse/lib/cmn/opt.c | 80 +- qse/lib/cmn/rex.c | 1076 ++-- qse/lib/cmn/sio.c | 236 +- qse/lib/cmn/sll.c | 192 +- qse/lib/cmn/str_bas.c | 322 +- qse/lib/cmn/str_cnv.c | 148 +- qse/lib/cmn/str_dyn.c | 168 +- qse/lib/cmn/time.c | 70 +- qse/lib/cmn/tio.c | 170 +- qse/lib/cmn/tio_get.c | 98 +- qse/lib/cmn/tio_put.c | 102 +- qse/lib/lsp/aselsp.dsp | 180 - qse/lib/lsp/aselsp.vcproj | 903 --- qse/lib/lsp/descrip.mms | 28 - qse/lib/lsp/env.c | 110 +- qse/lib/lsp/env.h | 60 +- qse/lib/lsp/err.c | 82 +- qse/lib/lsp/eval.c | 314 +- qse/lib/lsp/lsp.c | 222 +- qse/lib/lsp/lsp.h | 64 +- qse/lib/lsp/makefile.in | 2 +- qse/lib/lsp/makefile.msw.bcc | 21 - qse/lib/lsp/makefile.msw.cl | 24 - qse/lib/lsp/mem.c | 540 +- qse/lib/lsp/mem.h | 110 +- qse/lib/lsp/misc.c | 186 +- qse/lib/lsp/misc.h | 12 +- qse/lib/lsp/name.c | 86 +- qse/lib/lsp/name.h | 38 +- qse/lib/lsp/obj.h | 182 +- qse/lib/lsp/prim.c | 510 +- qse/lib/lsp/prim.h | 72 +- qse/lib/lsp/prim_compar.c | 120 +- qse/lib/lsp/prim_let.c | 112 +- qse/lib/lsp/prim_math.c | 278 +- qse/lib/lsp/prim_prog.c | 32 +- qse/lib/lsp/print.c | 134 +- qse/lib/lsp/read.c | 300 +- qse/lib/makefile.in | 2 +- qse/lib/stx/array.c | 18 + qse/lib/stx/array.h | 21 + qse/lib/stx/bootstrp.c | 676 ++ qse/lib/stx/bootstrp.h | 21 + qse/lib/stx/bytecode.c | 193 + qse/{ => lib}/stx/bytecode.h | 8 +- qse/lib/stx/class.c | 168 + qse/lib/stx/class.h | 81 + qse/lib/stx/context.c | 75 + qse/lib/stx/context.h | 43 + qse/lib/stx/dict.c | 190 + qse/lib/stx/dict.h | 42 + qse/{ => lib}/stx/interp.c | 178 +- qse/{ => lib}/stx/interp.h | 8 +- qse/{ => lib}/stx/kernel/Object.st | 0 qse/{ => lib}/stx/makefile.in | 0 qse/lib/stx/memory.c | 98 + qse/lib/stx/memory.h | 26 + qse/{ => lib}/stx/method.h | 36 +- qse/lib/stx/misc.c | 70 + qse/lib/stx/misc.h | 63 + qse/lib/stx/name.c | 146 + qse/lib/stx/name.h | 39 + qse/lib/stx/object.c | 246 + qse/lib/stx/object.h | 40 + qse/lib/stx/parser.c | 1608 +++++ qse/lib/stx/parser.h | 107 + qse/{ => lib}/stx/stx.bnf | 0 qse/lib/stx/stx.c | 70 + qse/lib/stx/stx.h | 163 + qse/{ => lib}/stx/stx.txt | 6 +- qse/lib/stx/symbol.c | 102 + qse/lib/stx/symbol.h | 40 + qse/lib/stx/token.c | 77 + qse/lib/stx/token.h | 66 + qse/lib/tgp/makefile.in | 2 +- qse/lib/tgp/tgp.c | 156 +- qse/lib/tgp/tgp.h | 28 +- qse/lib/utl/aseutl.bdsproj | 249 - qse/lib/utl/aseutl.dsp | 135 - qse/lib/utl/aseutl.vcproj | 460 -- qse/lib/utl/assert.c | 22 +- qse/lib/utl/descrip.mms | 18 - qse/lib/utl/http.c | 144 +- qse/lib/utl/main.c | 24 +- qse/lib/utl/makefile.in | 4 +- qse/lib/utl/msw-bcc.mak | 63 - qse/lib/utl/msw-cl.mak | 59 - qse/lib/utl/msw-dmc.mak | 50 - qse/lib/utl/stdio.c | 210 +- qse/makefile.in | 4 +- qse/net/AssemblyInfo.cpp | 40 - qse/net/Awk.cpp | 1198 ---- qse/net/Awk.hpp | 830 --- qse/net/StdAwk.cpp | 363 -- qse/net/StdAwk.hpp | 54 - qse/net/Stdafx.cpp | 5 - qse/net/Stdafx.h | 7 - qse/net/app.ico | Bin 1078 -> 0 bytes qse/net/app.rc | 63 - qse/net/asenet.cpp | 9 - qse/net/asenet.h | 17 - qse/net/asenet.vcproj | 442 -- qse/net/misc.cpp | 57 - qse/net/misc.h | 20 - qse/net/resource.h | 3 - qse/rel/doc.awk | 369 -- qse/rel/lic.awk | 21 - qse/rel/rel.sh | 145 - qse/rel/unix2dos.awk | 2 - qse/stx/array.c | 18 - qse/stx/array.h | 21 - qse/stx/bootstrp.c | 676 -- qse/stx/bootstrp.h | 21 - qse/stx/bytecode.c | 193 - qse/stx/class.c | 168 - qse/stx/class.h | 81 - qse/stx/context.c | 75 - qse/stx/context.h | 43 - qse/stx/dict.c | 190 - qse/stx/dict.h | 42 - qse/stx/makefile.bcc | 21 - qse/stx/makefile.cl | 23 - qse/stx/memory.c | 98 - qse/stx/memory.h | 26 - qse/stx/misc.c | 70 - qse/stx/misc.h | 63 - qse/stx/name.c | 146 - qse/stx/name.h | 39 - qse/stx/object.c | 246 - qse/stx/object.h | 40 - qse/stx/parser.c | 1608 ----- qse/stx/parser.h | 107 - qse/stx/stx.c | 70 - qse/stx/stx.h | 163 - qse/stx/symbol.c | 102 - qse/stx/symbol.h | 40 - qse/stx/token.c | 77 - qse/stx/token.h | 66 - 384 files changed, 24572 insertions(+), 53621 deletions(-) create mode 100644 qse/README delete mode 100644 qse/ase.bdsgroup delete mode 100644 qse/ase.dsw delete mode 100644 qse/ase.sln delete mode 100644 qse/change.log delete mode 100644 qse/cmd/awk/aseawk++.bdsproj delete mode 100644 qse/cmd/awk/aseawk++.vcproj delete mode 100644 qse/cmd/awk/aseawk.bdsproj delete mode 100644 qse/cmd/awk/aseawk.vcproj delete mode 100644 qse/cmd/awk/asetestawk++.dsp delete mode 100644 qse/cmd/awk/asetestawk.dsp delete mode 100644 qse/cmd/awk/descrip.mms delete mode 100644 qse/cmd/awk/msw-bcc.mak delete mode 100644 qse/cmd/awk/msw-cl.mak delete mode 100644 qse/cmd/com/Awk.cs delete mode 100644 qse/cmd/com/AwkExtioConsole.cls delete mode 100644 qse/cmd/com/AwkForm.Designer.cs delete mode 100644 qse/cmd/com/AwkForm.cs delete mode 100644 qse/cmd/com/AwkForm.frm delete mode 100644 qse/cmd/com/AwkForm.frx delete mode 100644 qse/cmd/com/AwkForm.resx delete mode 100644 qse/cmd/com/Program.cs delete mode 100644 qse/cmd/com/Properties/AssemblyInfo.cs delete mode 100644 qse/cmd/com/Properties/Resources.Designer.cs delete mode 100644 qse/cmd/com/Properties/Resources.resx delete mode 100644 qse/cmd/com/Properties/Settings.Designer.cs delete mode 100644 qse/cmd/com/Properties/Settings.settings delete mode 100644 qse/cmd/com/StdAwk.cs delete mode 100644 qse/cmd/com/asecom.csproj delete mode 100644 qse/cmd/com/asecom.vbp delete mode 100644 qse/cmd/com/asecom.vbw delete mode 100644 qse/cmd/com/awk.js delete mode 100644 qse/cmd/com/awk.vbs delete mode 100644 qse/cmd/lsp/aselsp.vcproj delete mode 100644 qse/cmd/lsp/asetestlsp.dsp delete mode 100644 qse/cmd/lsp/descrip.mms delete mode 100644 qse/cmd/lsp/makefile.msw.bcc delete mode 100644 qse/cmd/lsp/makefile.msw.cl delete mode 100644 qse/cmd/net/Awk.cs delete mode 100644 qse/cmd/net/AwkForm.Designer.cs delete mode 100644 qse/cmd/net/AwkForm.cs delete mode 100644 qse/cmd/net/AwkForm.resx delete mode 100644 qse/cmd/net/Program.cs delete mode 100644 qse/cmd/net/Properties/AssemblyInfo.cs delete mode 100644 qse/cmd/net/Properties/Resources.Designer.cs delete mode 100644 qse/cmd/net/Properties/Resources.resx delete mode 100644 qse/cmd/net/Properties/Settings.Designer.cs delete mode 100644 qse/cmd/net/Properties/Settings.settings delete mode 100644 qse/cmd/net/asenet.csproj delete mode 100644 qse/cmd/stx/makefile.bcc delete mode 100644 qse/cmd/stx/makefile.cl delete mode 100644 qse/com/Awk.cpp delete mode 100644 qse/com/Awk.h delete mode 100644 qse/com/Awk.rgs delete mode 100644 qse/com/AwkExtio.cpp delete mode 100644 qse/com/AwkExtio.h delete mode 100644 qse/com/AwkExtio.rgs delete mode 100644 qse/com/Buffer.cpp delete mode 100644 qse/com/Buffer.h delete mode 100644 qse/com/Buffer.rgs delete mode 100644 qse/com/asecom.cpp delete mode 100644 qse/com/asecom.def delete mode 100644 qse/com/asecom.dsp delete mode 100644 qse/com/asecom.idl delete mode 100644 qse/com/asecom.rc delete mode 100644 qse/com/asecom.vcproj delete mode 100644 qse/com/aseps.def delete mode 100644 qse/com/aseps.mk delete mode 100644 qse/com/awk_cp.h delete mode 100644 qse/com/resource.h delete mode 100644 qse/com/stdafx.cpp delete mode 100644 qse/com/stdafx.h delete mode 100644 qse/doc/doxyfile delete mode 100644 qse/doc/en/ase-assert.man delete mode 100644 qse/doc/en/ase.man delete mode 100644 qse/doc/en/awk-embed.man delete mode 100644 qse/doc/en/awk-lang.man delete mode 100644 qse/doc/en/awk-ref.man delete mode 100644 qse/doc/en/license.man delete mode 100644 qse/doc/en/lsp-embed.man delete mode 100644 qse/doc/en/quickstart.man delete mode 100644 qse/doc/imgs/awk-srcio-read.dia delete mode 100644 qse/doc/imgs/awk-srcio-read.png delete mode 100644 qse/doc/imgs/awk-srcio-write.dia delete mode 100644 qse/doc/imgs/awk-srcio-write.png delete mode 100644 qse/doc/ko/ase.man delete mode 100644 qse/doc/ko/license.man delete mode 100644 qse/doc/ko/quickstart.man delete mode 100644 qse/include/ase/awk/awk.h delete mode 100644 qse/include/ase/cmn/chr.h delete mode 100644 qse/include/ase/cmn/dll.h delete mode 100644 qse/include/ase/cmn/fio.h delete mode 100644 qse/include/ase/cmn/io.h delete mode 100644 qse/include/ase/cmn/lda.h delete mode 100644 qse/include/ase/cmn/map.h delete mode 100644 qse/include/ase/cmn/opt.h delete mode 100644 qse/include/ase/cmn/rex.h delete mode 100644 qse/include/ase/cmn/sio.h delete mode 100644 qse/include/ase/cmn/sll.h delete mode 100644 qse/include/ase/cmn/str.h delete mode 100644 qse/include/ase/cmn/time.h delete mode 100644 qse/include/ase/cmn/tio.h delete mode 100644 qse/include/ase/conf_msw.h delete mode 100644 qse/include/ase/lsp/lsp.h delete mode 100644 qse/include/ase/macros.h delete mode 100644 qse/include/ase/tgp/tgp.h delete mode 100644 qse/include/ase/types.h delete mode 100644 qse/include/ase/utl/http.h delete mode 100644 qse/include/ase/utl/main.h delete mode 100644 qse/include/ase/utl/stdio.h rename qse/include/{ase => qse}/awk/Awk.hpp (75%) rename qse/include/{ase => qse}/awk/StdAwk.hpp (95%) create mode 100644 qse/include/qse/awk/awk.h rename qse/include/{ase => qse}/awk/makefile.am (74%) rename qse/include/{ase => qse}/awk/makefile.in (98%) create mode 100644 qse/include/qse/cmn/chr.h create mode 100644 qse/include/qse/cmn/dll.h create mode 100644 qse/include/qse/cmn/fio.h create mode 100644 qse/include/qse/cmn/io.h create mode 100644 qse/include/qse/cmn/lda.h rename qse/include/{ase => qse}/cmn/makefile.am (76%) rename qse/include/{ase => qse}/cmn/makefile.in (98%) create mode 100644 qse/include/qse/cmn/map.h rename qse/include/{ase => qse}/cmn/mem.h (66%) create mode 100644 qse/include/qse/cmn/opt.h create mode 100644 qse/include/qse/cmn/rex.h create mode 100644 qse/include/qse/cmn/sio.h create mode 100644 qse/include/qse/cmn/sll.h create mode 100644 qse/include/qse/cmn/str.h create mode 100644 qse/include/qse/cmn/time.h create mode 100644 qse/include/qse/cmn/tio.h create mode 100644 qse/include/qse/conf_msw.h rename qse/include/{ase => qse}/conf_vms.h (59%) rename qse/include/{ase => qse}/config.h.in (89%) create mode 100644 qse/include/qse/lsp/lsp.h rename qse/include/{ase => qse}/lsp/makefile.am (56%) rename qse/include/{ase => qse}/lsp/makefile.in (98%) create mode 100644 qse/include/qse/macros.h rename qse/include/{ase => qse}/makefile.am (69%) rename qse/include/{ase => qse}/makefile.in (97%) rename qse/include/{ase => qse}/pack1.h (100%) rename qse/include/{ase => qse}/pack2.h (100%) rename qse/include/{ase => qse}/tgp/makefile.am (56%) rename qse/include/{ase => qse}/tgp/makefile.in (98%) create mode 100644 qse/include/qse/tgp/tgp.h create mode 100644 qse/include/qse/types.h rename qse/include/{ase => qse}/unpack.h (100%) create mode 100644 qse/include/qse/utl/http.h create mode 100644 qse/include/qse/utl/main.h rename qse/include/{ase => qse}/utl/makefile.am (63%) rename qse/include/{ase => qse}/utl/makefile.in (98%) create mode 100644 qse/include/qse/utl/stdio.h delete mode 100644 qse/java/AseAwk.java delete mode 100644 qse/java/AseAwkApplet-id.html delete mode 100644 qse/java/AseAwkApplet-ko.html delete mode 100644 qse/java/AseAwkApplet.html delete mode 100644 qse/java/AseAwkApplet.java delete mode 100644 qse/java/AseAwkApplet.js delete mode 100644 qse/java/AseAwkPanel.java delete mode 100644 qse/java/ase/awk/Argument.java delete mode 100644 qse/java/ase/awk/Awk.java delete mode 100644 qse/java/ase/awk/Clearable.java delete mode 100644 qse/java/ase/awk/Console.java delete mode 100644 qse/java/ase/awk/Context.java delete mode 100644 qse/java/ase/awk/Exception.java delete mode 100644 qse/java/ase/awk/Extio.java delete mode 100644 qse/java/ase/awk/File.java delete mode 100644 qse/java/ase/awk/IO.java delete mode 100644 qse/java/ase/awk/Pipe.java delete mode 100644 qse/java/ase/awk/Return.java delete mode 100644 qse/java/ase/awk/StdAwk.java delete mode 100644 qse/java/ase/awk/makefile.in delete mode 100644 qse/java/makefile.in delete mode 100644 qse/lib/awk/aseawk++.bdsproj delete mode 100644 qse/lib/awk/aseawk++.dsp delete mode 100644 qse/lib/awk/aseawk++.vcproj delete mode 100644 qse/lib/awk/aseawk.bdsproj delete mode 100644 qse/lib/awk/aseawk.dsp delete mode 100644 qse/lib/awk/aseawk.vcproj delete mode 100644 qse/lib/awk/aseawk_jni.dsp delete mode 100644 qse/lib/awk/aseawk_jni.vcproj delete mode 100644 qse/lib/awk/descrip.mms delete mode 100644 qse/lib/awk/generrcode-java.awk delete mode 100644 qse/lib/awk/generrcode-net.awk delete mode 100644 qse/lib/awk/jni-dmc.def delete mode 100644 qse/lib/awk/jni.c delete mode 100644 qse/lib/awk/jni.def delete mode 100644 qse/lib/awk/jni.h delete mode 100644 qse/lib/awk/msw-bcc.mak delete mode 100644 qse/lib/awk/msw-cl.mak delete mode 100644 qse/lib/awk/msw-dmc.mak delete mode 100644 qse/lib/cmn/asecmn.bdsproj delete mode 100644 qse/lib/cmn/asecmn.dsp delete mode 100644 qse/lib/cmn/asecmn.vcproj delete mode 100644 qse/lib/cmn/descrip.mms delete mode 100644 qse/lib/cmn/msw-bcc.mak delete mode 100644 qse/lib/cmn/msw-cl.mak delete mode 100644 qse/lib/cmn/msw-dmc.mak delete mode 100644 qse/lib/lsp/aselsp.dsp delete mode 100644 qse/lib/lsp/aselsp.vcproj delete mode 100644 qse/lib/lsp/descrip.mms delete mode 100644 qse/lib/lsp/makefile.msw.bcc delete mode 100644 qse/lib/lsp/makefile.msw.cl create mode 100644 qse/lib/stx/array.c create mode 100644 qse/lib/stx/array.h create mode 100644 qse/lib/stx/bootstrp.c create mode 100644 qse/lib/stx/bootstrp.h create mode 100644 qse/lib/stx/bytecode.c rename qse/{ => lib}/stx/bytecode.h (91%) create mode 100644 qse/lib/stx/class.c create mode 100644 qse/lib/stx/class.h create mode 100644 qse/lib/stx/context.c create mode 100644 qse/lib/stx/context.h create mode 100644 qse/lib/stx/dict.c create mode 100644 qse/lib/stx/dict.h rename qse/{ => lib}/stx/interp.c (57%) rename qse/{ => lib}/stx/interp.h (51%) rename qse/{ => lib}/stx/kernel/Object.st (100%) rename qse/{ => lib}/stx/makefile.in (100%) create mode 100644 qse/lib/stx/memory.c create mode 100644 qse/lib/stx/memory.h rename qse/{ => lib}/stx/method.h (58%) create mode 100644 qse/lib/stx/misc.c create mode 100644 qse/lib/stx/misc.h create mode 100644 qse/lib/stx/name.c create mode 100644 qse/lib/stx/name.h create mode 100644 qse/lib/stx/object.c create mode 100644 qse/lib/stx/object.h create mode 100644 qse/lib/stx/parser.c create mode 100644 qse/lib/stx/parser.h rename qse/{ => lib}/stx/stx.bnf (100%) create mode 100644 qse/lib/stx/stx.c create mode 100644 qse/lib/stx/stx.h rename qse/{ => lib}/stx/stx.txt (97%) create mode 100644 qse/lib/stx/symbol.c create mode 100644 qse/lib/stx/symbol.h create mode 100644 qse/lib/stx/token.c create mode 100644 qse/lib/stx/token.h delete mode 100644 qse/lib/utl/aseutl.bdsproj delete mode 100644 qse/lib/utl/aseutl.dsp delete mode 100644 qse/lib/utl/aseutl.vcproj delete mode 100644 qse/lib/utl/descrip.mms delete mode 100644 qse/lib/utl/msw-bcc.mak delete mode 100644 qse/lib/utl/msw-cl.mak delete mode 100644 qse/lib/utl/msw-dmc.mak delete mode 100644 qse/net/AssemblyInfo.cpp delete mode 100644 qse/net/Awk.cpp delete mode 100644 qse/net/Awk.hpp delete mode 100644 qse/net/StdAwk.cpp delete mode 100644 qse/net/StdAwk.hpp delete mode 100644 qse/net/Stdafx.cpp delete mode 100644 qse/net/Stdafx.h delete mode 100644 qse/net/app.ico delete mode 100644 qse/net/app.rc delete mode 100644 qse/net/asenet.cpp delete mode 100644 qse/net/asenet.h delete mode 100644 qse/net/asenet.vcproj delete mode 100644 qse/net/misc.cpp delete mode 100644 qse/net/misc.h delete mode 100644 qse/net/resource.h delete mode 100644 qse/rel/doc.awk delete mode 100644 qse/rel/lic.awk delete mode 100755 qse/rel/rel.sh delete mode 100644 qse/rel/unix2dos.awk delete mode 100644 qse/stx/array.c delete mode 100644 qse/stx/array.h delete mode 100644 qse/stx/bootstrp.c delete mode 100644 qse/stx/bootstrp.h delete mode 100644 qse/stx/bytecode.c delete mode 100644 qse/stx/class.c delete mode 100644 qse/stx/class.h delete mode 100644 qse/stx/context.c delete mode 100644 qse/stx/context.h delete mode 100644 qse/stx/dict.c delete mode 100644 qse/stx/dict.h delete mode 100644 qse/stx/makefile.bcc delete mode 100644 qse/stx/makefile.cl delete mode 100644 qse/stx/memory.c delete mode 100644 qse/stx/memory.h delete mode 100644 qse/stx/misc.c delete mode 100644 qse/stx/misc.h delete mode 100644 qse/stx/name.c delete mode 100644 qse/stx/name.h delete mode 100644 qse/stx/object.c delete mode 100644 qse/stx/object.h delete mode 100644 qse/stx/parser.c delete mode 100644 qse/stx/parser.h delete mode 100644 qse/stx/stx.c delete mode 100644 qse/stx/stx.h delete mode 100644 qse/stx/symbol.c delete mode 100644 qse/stx/symbol.h delete mode 100644 qse/stx/token.c delete mode 100644 qse/stx/token.h diff --git a/qse/README b/qse/README new file mode 100644 index 00000000..a3db0cfd --- /dev/null +++ b/qse/README @@ -0,0 +1 @@ +QSE diff --git a/qse/ase.bdsgroup b/qse/ase.bdsgroup deleted file mode 100644 index 4f8bb1e6..00000000 --- a/qse/ase.bdsgroup +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - cmn\asecmn.bdsproj - awk\aseawk.bdsproj - awk\aseawk++.bdsproj - utl\aseutl.bdsproj - cmd\awk\aseawk.bdsproj - cmd\awk\aseawk++.bdsproj - asecmn.lib aseawk.lib aseawk++.lib aseutl.lib aseawk.exe aseawk++.exe - - - - diff --git a/qse/ase.dsw b/qse/ase.dsw deleted file mode 100644 index 8326f8fe..00000000 --- a/qse/ase.dsw +++ /dev/null @@ -1,137 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 6.00 -# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! - -############################################################################### - -Project: "asecmn"=.\cmn\asecmn.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "aseutl"=.\utl\aseutl.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "aseawk"=.\awk\aseawk.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "aseawk_jni"=.\awk\aseawk_jni.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "aseawk++"=.\awk\aseawk++.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "asecom"=.\com\asecom.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "asetestawk"=.\cmd\awk\asetestawk.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "asetestawk++"=.\cmd\awk\asetestawk++.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "aselsp"=.\lsp\aselsp.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "asetestlsp"=.\cmd\lsp\asetestlsp.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### - diff --git a/qse/ase.sln b/qse/ase.sln deleted file mode 100644 index e9fff566..00000000 --- a/qse/ase.sln +++ /dev/null @@ -1,247 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 9.00 -# Visual Studio 2005 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "asecmn", "cmn\asecmn.vcproj", "{17621C83-40C9-4305-BAF9-132E250B5FE3}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "aseutl", "utl\aseutl.vcproj", "{C3EBBFAE-9D08-4FA2-8B0E-D09BEBF84EDD}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "aseawk", "awk\aseawk.vcproj", "{5F2E77D5-1485-48D1-9371-987BC55FEE83}" - ProjectSection(ProjectDependencies) = postProject - {17621C83-40C9-4305-BAF9-132E250B5FE3} = {17621C83-40C9-4305-BAF9-132E250B5FE3} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "aseawk_jni", "awk\aseawk_jni.vcproj", "{23B58791-FD44-4F95-9F77-34E4AF45A296}" - ProjectSection(ProjectDependencies) = postProject - {5F2E77D5-1485-48D1-9371-987BC55FEE83} = {5F2E77D5-1485-48D1-9371-987BC55FEE83} - {C3EBBFAE-9D08-4FA2-8B0E-D09BEBF84EDD} = {C3EBBFAE-9D08-4FA2-8B0E-D09BEBF84EDD} - {17621C83-40C9-4305-BAF9-132E250B5FE3} = {17621C83-40C9-4305-BAF9-132E250B5FE3} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "asecom", "com\asecom.vcproj", "{963AF7B5-12E6-42B6-8CBE-89136C1A109B}" - ProjectSection(ProjectDependencies) = postProject - {5F2E77D5-1485-48D1-9371-987BC55FEE83} = {5F2E77D5-1485-48D1-9371-987BC55FEE83} - {C3EBBFAE-9D08-4FA2-8B0E-D09BEBF84EDD} = {C3EBBFAE-9D08-4FA2-8B0E-D09BEBF84EDD} - {17621C83-40C9-4305-BAF9-132E250B5FE3} = {17621C83-40C9-4305-BAF9-132E250B5FE3} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "aseawk", "cmd\awk\aseawk.vcproj", "{57F1E1D0-28B6-42BF-BAFB-045AEE2DCF4F}" - ProjectSection(ProjectDependencies) = postProject - {5F2E77D5-1485-48D1-9371-987BC55FEE83} = {5F2E77D5-1485-48D1-9371-987BC55FEE83} - {C3EBBFAE-9D08-4FA2-8B0E-D09BEBF84EDD} = {C3EBBFAE-9D08-4FA2-8B0E-D09BEBF84EDD} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "aselsp", "lsp\aselsp.vcproj", "{42FE7CED-34B7-45C8-92C9-8856E16640D2}" - ProjectSection(ProjectDependencies) = postProject - {17621C83-40C9-4305-BAF9-132E250B5FE3} = {17621C83-40C9-4305-BAF9-132E250B5FE3} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "aselsp", "cmd\lsp\aselsp.vcproj", "{868702B0-CB6B-4F1D-B98A-32193347EFAF}" - ProjectSection(ProjectDependencies) = postProject - {42FE7CED-34B7-45C8-92C9-8856E16640D2} = {42FE7CED-34B7-45C8-92C9-8856E16640D2} - {C3EBBFAE-9D08-4FA2-8B0E-D09BEBF84EDD} = {C3EBBFAE-9D08-4FA2-8B0E-D09BEBF84EDD} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "aseawk++", "awk\aseawk++.vcproj", "{E7A8B741-4E9D-4ED4-9F77-E7F637A678A5}" - ProjectSection(ProjectDependencies) = postProject - {5F2E77D5-1485-48D1-9371-987BC55FEE83} = {5F2E77D5-1485-48D1-9371-987BC55FEE83} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "aseawk++", "cmd\awk\aseawk++.vcproj", "{3BEA6CFE-C158-4BFB-B5FB-ED85251E3F98}" - ProjectSection(ProjectDependencies) = postProject - {C3EBBFAE-9D08-4FA2-8B0E-D09BEBF84EDD} = {C3EBBFAE-9D08-4FA2-8B0E-D09BEBF84EDD} - {E7A8B741-4E9D-4ED4-9F77-E7F637A678A5} = {E7A8B741-4E9D-4ED4-9F77-E7F637A678A5} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "asenet", "net\asenet.vcproj", "{A63E9DF9-1D47-4D81-834C-1D40406C18C4}" - ProjectSection(ProjectDependencies) = postProject - {E7A8B741-4E9D-4ED4-9F77-E7F637A678A5} = {E7A8B741-4E9D-4ED4-9F77-E7F637A678A5} - {C3EBBFAE-9D08-4FA2-8B0E-D09BEBF84EDD} = {C3EBBFAE-9D08-4FA2-8B0E-D09BEBF84EDD} - EndProjectSection -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "asenet", "cmd\net\asenet.csproj", "{7CC01C3D-FC1A-4587-868A-7FC4449B3F8B}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "cmd", "cmd", "{8A2F5860-6563-4617-BCE0-460F915007F8}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "asecom", "cmd\com\asecom.csproj", "{F14B75D8-3ED7-4621-B5B9-E96A80B5D809}" - ProjectSection(ProjectDependencies) = postProject - {963AF7B5-12E6-42B6-8CBE-89136C1A109B} = {963AF7B5-12E6-42B6-8CBE-89136C1A109B} - EndProjectSection -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Debug|Win32 = Debug|Win32 - Debug|x64 = Debug|x64 - Release|Any CPU = Release|Any CPU - Release|Win32 = Release|Win32 - Release|x64 = Release|x64 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {17621C83-40C9-4305-BAF9-132E250B5FE3}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {17621C83-40C9-4305-BAF9-132E250B5FE3}.Debug|Any CPU.Build.0 = Debug|Win32 - {17621C83-40C9-4305-BAF9-132E250B5FE3}.Debug|Win32.ActiveCfg = Debug|Win32 - {17621C83-40C9-4305-BAF9-132E250B5FE3}.Debug|Win32.Build.0 = Debug|Win32 - {17621C83-40C9-4305-BAF9-132E250B5FE3}.Debug|x64.ActiveCfg = Debug|x64 - {17621C83-40C9-4305-BAF9-132E250B5FE3}.Debug|x64.Build.0 = Debug|x64 - {17621C83-40C9-4305-BAF9-132E250B5FE3}.Release|Any CPU.ActiveCfg = Release|Win32 - {17621C83-40C9-4305-BAF9-132E250B5FE3}.Release|Any CPU.Build.0 = Release|Win32 - {17621C83-40C9-4305-BAF9-132E250B5FE3}.Release|Win32.ActiveCfg = Release|Win32 - {17621C83-40C9-4305-BAF9-132E250B5FE3}.Release|Win32.Build.0 = Release|Win32 - {17621C83-40C9-4305-BAF9-132E250B5FE3}.Release|x64.ActiveCfg = Release|x64 - {17621C83-40C9-4305-BAF9-132E250B5FE3}.Release|x64.Build.0 = Release|x64 - {C3EBBFAE-9D08-4FA2-8B0E-D09BEBF84EDD}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {C3EBBFAE-9D08-4FA2-8B0E-D09BEBF84EDD}.Debug|Any CPU.Build.0 = Debug|Win32 - {C3EBBFAE-9D08-4FA2-8B0E-D09BEBF84EDD}.Debug|Win32.ActiveCfg = Debug|Win32 - {C3EBBFAE-9D08-4FA2-8B0E-D09BEBF84EDD}.Debug|Win32.Build.0 = Debug|Win32 - {C3EBBFAE-9D08-4FA2-8B0E-D09BEBF84EDD}.Debug|x64.ActiveCfg = Debug|x64 - {C3EBBFAE-9D08-4FA2-8B0E-D09BEBF84EDD}.Debug|x64.Build.0 = Debug|x64 - {C3EBBFAE-9D08-4FA2-8B0E-D09BEBF84EDD}.Release|Any CPU.ActiveCfg = Release|Win32 - {C3EBBFAE-9D08-4FA2-8B0E-D09BEBF84EDD}.Release|Any CPU.Build.0 = Release|Win32 - {C3EBBFAE-9D08-4FA2-8B0E-D09BEBF84EDD}.Release|Win32.ActiveCfg = Release|Win32 - {C3EBBFAE-9D08-4FA2-8B0E-D09BEBF84EDD}.Release|Win32.Build.0 = Release|Win32 - {C3EBBFAE-9D08-4FA2-8B0E-D09BEBF84EDD}.Release|x64.ActiveCfg = Release|x64 - {C3EBBFAE-9D08-4FA2-8B0E-D09BEBF84EDD}.Release|x64.Build.0 = Release|x64 - {5F2E77D5-1485-48D1-9371-987BC55FEE83}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {5F2E77D5-1485-48D1-9371-987BC55FEE83}.Debug|Any CPU.Build.0 = Debug|Win32 - {5F2E77D5-1485-48D1-9371-987BC55FEE83}.Debug|Win32.ActiveCfg = Debug|Win32 - {5F2E77D5-1485-48D1-9371-987BC55FEE83}.Debug|Win32.Build.0 = Debug|Win32 - {5F2E77D5-1485-48D1-9371-987BC55FEE83}.Debug|x64.ActiveCfg = Debug|x64 - {5F2E77D5-1485-48D1-9371-987BC55FEE83}.Debug|x64.Build.0 = Debug|x64 - {5F2E77D5-1485-48D1-9371-987BC55FEE83}.Release|Any CPU.ActiveCfg = Release|Win32 - {5F2E77D5-1485-48D1-9371-987BC55FEE83}.Release|Any CPU.Build.0 = Release|Win32 - {5F2E77D5-1485-48D1-9371-987BC55FEE83}.Release|Win32.ActiveCfg = Release|Win32 - {5F2E77D5-1485-48D1-9371-987BC55FEE83}.Release|Win32.Build.0 = Release|Win32 - {5F2E77D5-1485-48D1-9371-987BC55FEE83}.Release|x64.ActiveCfg = Release|x64 - {5F2E77D5-1485-48D1-9371-987BC55FEE83}.Release|x64.Build.0 = Release|x64 - {23B58791-FD44-4F95-9F77-34E4AF45A296}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {23B58791-FD44-4F95-9F77-34E4AF45A296}.Debug|Any CPU.Build.0 = Debug|Win32 - {23B58791-FD44-4F95-9F77-34E4AF45A296}.Debug|Win32.ActiveCfg = Debug|Win32 - {23B58791-FD44-4F95-9F77-34E4AF45A296}.Debug|Win32.Build.0 = Debug|Win32 - {23B58791-FD44-4F95-9F77-34E4AF45A296}.Debug|x64.ActiveCfg = Debug|x64 - {23B58791-FD44-4F95-9F77-34E4AF45A296}.Debug|x64.Build.0 = Debug|x64 - {23B58791-FD44-4F95-9F77-34E4AF45A296}.Release|Any CPU.ActiveCfg = Release|Win32 - {23B58791-FD44-4F95-9F77-34E4AF45A296}.Release|Any CPU.Build.0 = Release|Win32 - {23B58791-FD44-4F95-9F77-34E4AF45A296}.Release|Win32.ActiveCfg = Release|Win32 - {23B58791-FD44-4F95-9F77-34E4AF45A296}.Release|Win32.Build.0 = Release|Win32 - {23B58791-FD44-4F95-9F77-34E4AF45A296}.Release|x64.ActiveCfg = Release|x64 - {23B58791-FD44-4F95-9F77-34E4AF45A296}.Release|x64.Build.0 = Release|x64 - {963AF7B5-12E6-42B6-8CBE-89136C1A109B}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {963AF7B5-12E6-42B6-8CBE-89136C1A109B}.Debug|Any CPU.Build.0 = Debug|Win32 - {963AF7B5-12E6-42B6-8CBE-89136C1A109B}.Debug|Win32.ActiveCfg = Debug|Win32 - {963AF7B5-12E6-42B6-8CBE-89136C1A109B}.Debug|Win32.Build.0 = Debug|Win32 - {963AF7B5-12E6-42B6-8CBE-89136C1A109B}.Debug|x64.ActiveCfg = Debug|x64 - {963AF7B5-12E6-42B6-8CBE-89136C1A109B}.Debug|x64.Build.0 = Debug|x64 - {963AF7B5-12E6-42B6-8CBE-89136C1A109B}.Release|Any CPU.ActiveCfg = Release|Win32 - {963AF7B5-12E6-42B6-8CBE-89136C1A109B}.Release|Any CPU.Build.0 = Release|Win32 - {963AF7B5-12E6-42B6-8CBE-89136C1A109B}.Release|Win32.ActiveCfg = Release|Win32 - {963AF7B5-12E6-42B6-8CBE-89136C1A109B}.Release|Win32.Build.0 = Release|Win32 - {963AF7B5-12E6-42B6-8CBE-89136C1A109B}.Release|x64.ActiveCfg = Release|x64 - {963AF7B5-12E6-42B6-8CBE-89136C1A109B}.Release|x64.Build.0 = Release|x64 - {57F1E1D0-28B6-42BF-BAFB-045AEE2DCF4F}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {57F1E1D0-28B6-42BF-BAFB-045AEE2DCF4F}.Debug|Any CPU.Build.0 = Debug|Win32 - {57F1E1D0-28B6-42BF-BAFB-045AEE2DCF4F}.Debug|Win32.ActiveCfg = Debug|Win32 - {57F1E1D0-28B6-42BF-BAFB-045AEE2DCF4F}.Debug|Win32.Build.0 = Debug|Win32 - {57F1E1D0-28B6-42BF-BAFB-045AEE2DCF4F}.Debug|x64.ActiveCfg = Debug|x64 - {57F1E1D0-28B6-42BF-BAFB-045AEE2DCF4F}.Debug|x64.Build.0 = Debug|x64 - {57F1E1D0-28B6-42BF-BAFB-045AEE2DCF4F}.Release|Any CPU.ActiveCfg = Release|Win32 - {57F1E1D0-28B6-42BF-BAFB-045AEE2DCF4F}.Release|Any CPU.Build.0 = Release|Win32 - {57F1E1D0-28B6-42BF-BAFB-045AEE2DCF4F}.Release|Win32.ActiveCfg = Release|Win32 - {57F1E1D0-28B6-42BF-BAFB-045AEE2DCF4F}.Release|Win32.Build.0 = Release|Win32 - {57F1E1D0-28B6-42BF-BAFB-045AEE2DCF4F}.Release|x64.ActiveCfg = Release|x64 - {57F1E1D0-28B6-42BF-BAFB-045AEE2DCF4F}.Release|x64.Build.0 = Release|x64 - {42FE7CED-34B7-45C8-92C9-8856E16640D2}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {42FE7CED-34B7-45C8-92C9-8856E16640D2}.Debug|Any CPU.Build.0 = Debug|Win32 - {42FE7CED-34B7-45C8-92C9-8856E16640D2}.Debug|Win32.ActiveCfg = Debug|Win32 - {42FE7CED-34B7-45C8-92C9-8856E16640D2}.Debug|Win32.Build.0 = Debug|Win32 - {42FE7CED-34B7-45C8-92C9-8856E16640D2}.Debug|x64.ActiveCfg = Debug|x64 - {42FE7CED-34B7-45C8-92C9-8856E16640D2}.Debug|x64.Build.0 = Debug|x64 - {42FE7CED-34B7-45C8-92C9-8856E16640D2}.Release|Any CPU.ActiveCfg = Release|Win32 - {42FE7CED-34B7-45C8-92C9-8856E16640D2}.Release|Any CPU.Build.0 = Release|Win32 - {42FE7CED-34B7-45C8-92C9-8856E16640D2}.Release|Win32.ActiveCfg = Release|Win32 - {42FE7CED-34B7-45C8-92C9-8856E16640D2}.Release|Win32.Build.0 = Release|Win32 - {42FE7CED-34B7-45C8-92C9-8856E16640D2}.Release|x64.ActiveCfg = Release|x64 - {42FE7CED-34B7-45C8-92C9-8856E16640D2}.Release|x64.Build.0 = Release|x64 - {868702B0-CB6B-4F1D-B98A-32193347EFAF}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {868702B0-CB6B-4F1D-B98A-32193347EFAF}.Debug|Any CPU.Build.0 = Debug|Win32 - {868702B0-CB6B-4F1D-B98A-32193347EFAF}.Debug|Win32.ActiveCfg = Debug|Win32 - {868702B0-CB6B-4F1D-B98A-32193347EFAF}.Debug|Win32.Build.0 = Debug|Win32 - {868702B0-CB6B-4F1D-B98A-32193347EFAF}.Debug|x64.ActiveCfg = Debug|x64 - {868702B0-CB6B-4F1D-B98A-32193347EFAF}.Debug|x64.Build.0 = Debug|x64 - {868702B0-CB6B-4F1D-B98A-32193347EFAF}.Release|Any CPU.ActiveCfg = Release|Win32 - {868702B0-CB6B-4F1D-B98A-32193347EFAF}.Release|Any CPU.Build.0 = Release|Win32 - {868702B0-CB6B-4F1D-B98A-32193347EFAF}.Release|Win32.ActiveCfg = Release|Win32 - {868702B0-CB6B-4F1D-B98A-32193347EFAF}.Release|Win32.Build.0 = Release|Win32 - {868702B0-CB6B-4F1D-B98A-32193347EFAF}.Release|x64.ActiveCfg = Release|x64 - {868702B0-CB6B-4F1D-B98A-32193347EFAF}.Release|x64.Build.0 = Release|x64 - {E7A8B741-4E9D-4ED4-9F77-E7F637A678A5}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {E7A8B741-4E9D-4ED4-9F77-E7F637A678A5}.Debug|Any CPU.Build.0 = Debug|Win32 - {E7A8B741-4E9D-4ED4-9F77-E7F637A678A5}.Debug|Win32.ActiveCfg = Debug|Win32 - {E7A8B741-4E9D-4ED4-9F77-E7F637A678A5}.Debug|Win32.Build.0 = Debug|Win32 - {E7A8B741-4E9D-4ED4-9F77-E7F637A678A5}.Debug|x64.ActiveCfg = Debug|x64 - {E7A8B741-4E9D-4ED4-9F77-E7F637A678A5}.Debug|x64.Build.0 = Debug|x64 - {E7A8B741-4E9D-4ED4-9F77-E7F637A678A5}.Release|Any CPU.ActiveCfg = Release|Win32 - {E7A8B741-4E9D-4ED4-9F77-E7F637A678A5}.Release|Any CPU.Build.0 = Release|Win32 - {E7A8B741-4E9D-4ED4-9F77-E7F637A678A5}.Release|Win32.ActiveCfg = Release|Win32 - {E7A8B741-4E9D-4ED4-9F77-E7F637A678A5}.Release|Win32.Build.0 = Release|Win32 - {E7A8B741-4E9D-4ED4-9F77-E7F637A678A5}.Release|x64.ActiveCfg = Release|x64 - {E7A8B741-4E9D-4ED4-9F77-E7F637A678A5}.Release|x64.Build.0 = Release|x64 - {3BEA6CFE-C158-4BFB-B5FB-ED85251E3F98}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {3BEA6CFE-C158-4BFB-B5FB-ED85251E3F98}.Debug|Any CPU.Build.0 = Debug|Win32 - {3BEA6CFE-C158-4BFB-B5FB-ED85251E3F98}.Debug|Win32.ActiveCfg = Debug|Win32 - {3BEA6CFE-C158-4BFB-B5FB-ED85251E3F98}.Debug|Win32.Build.0 = Debug|Win32 - {3BEA6CFE-C158-4BFB-B5FB-ED85251E3F98}.Debug|x64.ActiveCfg = Debug|x64 - {3BEA6CFE-C158-4BFB-B5FB-ED85251E3F98}.Debug|x64.Build.0 = Debug|x64 - {3BEA6CFE-C158-4BFB-B5FB-ED85251E3F98}.Release|Any CPU.ActiveCfg = Release|Win32 - {3BEA6CFE-C158-4BFB-B5FB-ED85251E3F98}.Release|Any CPU.Build.0 = Release|Win32 - {3BEA6CFE-C158-4BFB-B5FB-ED85251E3F98}.Release|Win32.ActiveCfg = Release|Win32 - {3BEA6CFE-C158-4BFB-B5FB-ED85251E3F98}.Release|Win32.Build.0 = Release|Win32 - {3BEA6CFE-C158-4BFB-B5FB-ED85251E3F98}.Release|x64.ActiveCfg = Release|x64 - {3BEA6CFE-C158-4BFB-B5FB-ED85251E3F98}.Release|x64.Build.0 = Release|x64 - {A63E9DF9-1D47-4D81-834C-1D40406C18C4}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {A63E9DF9-1D47-4D81-834C-1D40406C18C4}.Debug|Any CPU.Build.0 = Debug|Win32 - {A63E9DF9-1D47-4D81-834C-1D40406C18C4}.Debug|Win32.ActiveCfg = Debug|Win32 - {A63E9DF9-1D47-4D81-834C-1D40406C18C4}.Debug|Win32.Build.0 = Debug|Win32 - {A63E9DF9-1D47-4D81-834C-1D40406C18C4}.Debug|x64.ActiveCfg = Debug|x64 - {A63E9DF9-1D47-4D81-834C-1D40406C18C4}.Debug|x64.Build.0 = Debug|x64 - {A63E9DF9-1D47-4D81-834C-1D40406C18C4}.Release|Any CPU.ActiveCfg = Release|Win32 - {A63E9DF9-1D47-4D81-834C-1D40406C18C4}.Release|Any CPU.Build.0 = Release|Win32 - {A63E9DF9-1D47-4D81-834C-1D40406C18C4}.Release|Win32.ActiveCfg = Release|Win32 - {A63E9DF9-1D47-4D81-834C-1D40406C18C4}.Release|Win32.Build.0 = Release|Win32 - {A63E9DF9-1D47-4D81-834C-1D40406C18C4}.Release|x64.ActiveCfg = Release|x64 - {A63E9DF9-1D47-4D81-834C-1D40406C18C4}.Release|x64.Build.0 = Release|x64 - {7CC01C3D-FC1A-4587-868A-7FC4449B3F8B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {7CC01C3D-FC1A-4587-868A-7FC4449B3F8B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7CC01C3D-FC1A-4587-868A-7FC4449B3F8B}.Debug|Win32.ActiveCfg = Debug|Any CPU - {7CC01C3D-FC1A-4587-868A-7FC4449B3F8B}.Debug|Win32.Build.0 = Debug|Any CPU - {7CC01C3D-FC1A-4587-868A-7FC4449B3F8B}.Debug|x64.ActiveCfg = Debug|Any CPU - {7CC01C3D-FC1A-4587-868A-7FC4449B3F8B}.Debug|x64.Build.0 = Debug|Any CPU - {7CC01C3D-FC1A-4587-868A-7FC4449B3F8B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {7CC01C3D-FC1A-4587-868A-7FC4449B3F8B}.Release|Any CPU.Build.0 = Release|Any CPU - {7CC01C3D-FC1A-4587-868A-7FC4449B3F8B}.Release|Win32.ActiveCfg = Release|Any CPU - {7CC01C3D-FC1A-4587-868A-7FC4449B3F8B}.Release|Win32.Build.0 = Release|Any CPU - {7CC01C3D-FC1A-4587-868A-7FC4449B3F8B}.Release|x64.ActiveCfg = Release|Any CPU - {7CC01C3D-FC1A-4587-868A-7FC4449B3F8B}.Release|x64.Build.0 = Release|Any CPU - {F14B75D8-3ED7-4621-B5B9-E96A80B5D809}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F14B75D8-3ED7-4621-B5B9-E96A80B5D809}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F14B75D8-3ED7-4621-B5B9-E96A80B5D809}.Debug|Win32.ActiveCfg = Debug|Any CPU - {F14B75D8-3ED7-4621-B5B9-E96A80B5D809}.Debug|Win32.Build.0 = Debug|Any CPU - {F14B75D8-3ED7-4621-B5B9-E96A80B5D809}.Debug|x64.ActiveCfg = Debug|Any CPU - {F14B75D8-3ED7-4621-B5B9-E96A80B5D809}.Debug|x64.Build.0 = Debug|Any CPU - {F14B75D8-3ED7-4621-B5B9-E96A80B5D809}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F14B75D8-3ED7-4621-B5B9-E96A80B5D809}.Release|Any CPU.Build.0 = Release|Any CPU - {F14B75D8-3ED7-4621-B5B9-E96A80B5D809}.Release|Win32.ActiveCfg = Release|Any CPU - {F14B75D8-3ED7-4621-B5B9-E96A80B5D809}.Release|Win32.Build.0 = Release|Any CPU - {F14B75D8-3ED7-4621-B5B9-E96A80B5D809}.Release|x64.ActiveCfg = Release|Any CPU - {F14B75D8-3ED7-4621-B5B9-E96A80B5D809}.Release|x64.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(NestedProjects) = preSolution - {868702B0-CB6B-4F1D-B98A-32193347EFAF} = {8A2F5860-6563-4617-BCE0-460F915007F8} - {3BEA6CFE-C158-4BFB-B5FB-ED85251E3F98} = {8A2F5860-6563-4617-BCE0-460F915007F8} - {7CC01C3D-FC1A-4587-868A-7FC4449B3F8B} = {8A2F5860-6563-4617-BCE0-460F915007F8} - {57F1E1D0-28B6-42BF-BAFB-045AEE2DCF4F} = {8A2F5860-6563-4617-BCE0-460F915007F8} - {F14B75D8-3ED7-4621-B5B9-E96A80B5D809} = {8A2F5860-6563-4617-BCE0-460F915007F8} - EndGlobalSection -EndGlobal diff --git a/qse/build.xml b/qse/build.xml index be80012e..95bc9dd7 100644 --- a/qse/build.xml +++ b/qse/build.xml @@ -60,9 +60,9 @@ - - - + + + diff --git a/qse/change.log b/qse/change.log deleted file mode 100644 index 791021dc..00000000 --- a/qse/change.log +++ /dev/null @@ -1,122 +0,0 @@ -[0.3.4] - -* enhanced the AWK interpreter to be more compatible to AWK - - no more semicolon needed to terminate a statement with ASE_AWK_NEWLINE on. -* removed the ASE_AWK_STRCONCAT option. -* added the ASE_AWK_BXOR option. - -[0.3.3] - -* enhanced the AWK interpreter to allow multiple BEGIN/END blocks. -* enhanced the parser to handle ("abc" ++ k) as ("abc" . ++k) when - ASE_AWK_IMPLICIT is on. - -* fixed a memory leak bug in the following context. - BEGIN { - d = 90; - x[30] = d; - /* Reference count for d was not properly decremented - * when a map slot is assigned with the same value as - * the previous value. */ - x[30] = d; - } - -* fixed a control-flow bug in the following context. - function error() { exit (1); } - function getx() - { - if (x == 2) error(); - return x++; - } - function gety() { return y++; } - BEGIN { - x = 0; - y = 0; - print getx() + gety(); - print getx() + gety(); - /* this following line should not have been printed as - * exit() is executed in getx(). */ - print getx() + gety(); - print getx() + gety(); - } - -* redefined the variable scope -* removed ASE_AWK_UNIQUEFN and ASE_AWK_SHADING by refining the scoping rule -* fixed a bug in handling >> when ASE_AWK_SHIFT is off - -* added ASE_AWK_EVARRED -* added five operators - <<=, >>=, &=, ^=, |= - -[0.3.2] - -* fixed a build problem for x64 target in MSVC2005 - -[0.3.1] - -* added to the awk interpreter the capibility to manipulate global variables - - added ase_awk_addglobal, ase_awk_delglobal (awk/parse.c) - - added Awk::addGlobal, Awk::deleteGlobal (awk/Awk.hpp, awk/Awk.cpp) - - added Awk::Run::setGlobal, Awk::Run::getGlobal (awk/Awk.hpp, awk/Awk.cpp) - - added Awk::AddGlobal, Awk::DeleteGlobal (net/Awk.hpp, net/Awk.cpp) - - added Awk::Run::SetGlobal, Awk::Run::GetGlobal (net/Awk.hpp, net/Awk.cpp) - - enhanced ase_awk_getglobalname -* added three new options - ASE_AWK_RESET, ASE_AWK_MAPTOVAR, ASE_AWK_PABLOCK - -* enhanced Awk::dispatchFunction to set a more accurate error code (awk/Awk.cpp) -* enhanced the JNI binding to integrate most of the changes so far. - -* fixed a bug - - memory leak if a null statement or a block with no statements are - present in an AWK program. (awk/parse.c) - - memery leak if a return value is set by an intrinsic function - but it ends up with an error. (awk/run.c - eval_call) - -* changed the access modifier for the Awk::Source::Source from public - to protected. -* renamed ase_awk_addbfn & ase_awk_delbfn to ase_awk_addfunc & ase_awk_delfunc - respectively. - -* started the source code documentation of awk/Awk.hpp. -* enhanded test programs. - -[0.3.0] - -* added ase_awk_setword to enable customization of keywords and - intrinsic function names. -* added ase_awk_seterrmsg to set the error message to be any string given -* added setWord/unsetWord method to the awk c++ class (awk/Awk.cpp) -* added setErrorString method to the awk c++ class (awk/Awk.cpp) -* added setWord/unsetWord method to the awk java class (awk/Awk.java) -* added the error code ASE_AWK_ELXDIG to indicate a wrong digit in - octal number tokenization. -* added setWord/unsetWord method to the awk com module (com/Awk.cpp) -* added the .NET interface to the awk interpreter (net/Awk.cpp net/StdAwk.cpp) - -* changed the wrong macro name WIN32 to _WIN32 in utl/stdio.h -* changed test/awk/Awk.cpp to include an option(-w) to utilize - the setWord method. -* changed test/awk/AseAwk.java to include an option(-w) to utilize - the setWord method. - -* enhanced awk/map.c to support automatic rehashing - -[0.2.0] - -* fixed bug (nextofile shown as nextfile in source output) -* fixed bug (nextofile not allowed in the BEGIN and END block) -* fixed bug (ASE_MALLOC/ASE_FREE defined wrongly causing sample programs - to crash in the debug mode when compiled with MSVC/C++. -* fixed bug (the first character of the next record lost when RS are - multiple characters) -* fixed bug (the last field of the last record lost when RS are - multiple characters) - -* added awk c++ classes (awk/Awk.hpp awk/Awk.cpp awk/StdAwk.hpp awk/StdAwk.cpp) -* added c++ sample program (test/awk/Awk.cpp) - -* changed test/awk/AseAwk.java to be funtionally identical to test/awk/Awk.cpp -* changed the way to invoke the main function (utl/main.h utl/main.c) - -[0.1.0] - -* initial release diff --git a/qse/cmd/awk/Awk.cpp b/qse/cmd/awk/Awk.cpp index af44e98c..e5cb65a6 100644 --- a/qse/cmd/awk/Awk.cpp +++ b/qse/cmd/awk/Awk.cpp @@ -2,10 +2,10 @@ * $Id: Awk.cpp 341 2008-08-20 10:58:19Z baconevi $ */ -#include -#include -#include -#include +#include +#include +#include +#include #include #include @@ -30,11 +30,11 @@ static bool verbose = false; class TestAwk: public ASE::StdAwk { public: - TestAwk (): srcInName(ASE_NULL), srcOutName(ASE_NULL), + TestAwk (): srcInName(QSE_NULL), srcOutName(QSE_NULL), numConInFiles(0), numConOutFiles(0) { #ifdef _WIN32 - heap = ASE_NULL; + heap = QSE_NULL; #endif } @@ -46,9 +46,9 @@ public: int open () { #ifdef _WIN32 - ASE_ASSERT (heap == ASE_NULL); + QSE_ASSERT (heap == QSE_NULL); heap = ::HeapCreate (0, 1000000, 1000000); - if (heap == ASE_NULL) return -1; + if (heap == QSE_NULL) return -1; #endif #if defined(_MSC_VER) && (_MSC_VER<1400) @@ -60,21 +60,21 @@ public: { #ifdef _WIN32 HeapDestroy (heap); - heap = ASE_NULL; + heap = QSE_NULL; #endif return -1; } - idLastSleep = addGlobal (ASE_T("LAST_SLEEP")); + idLastSleep = addGlobal (QSE_T("LAST_SLEEP")); if (idLastSleep == -1) goto failure; - if (addFunction (ASE_T("sleep"), 1, 1, + if (addFunction (QSE_T("sleep"), 1, 1, (FunctionHandler)&TestAwk::sleep) == -1) goto failure; - if (addFunction (ASE_T("sumintarray"), 1, 1, + if (addFunction (QSE_T("sumintarray"), 1, 1, (FunctionHandler)&TestAwk::sumintarray) == -1) goto failure; - if (addFunction (ASE_T("arrayindices"), 1, 1, + if (addFunction (QSE_T("arrayindices"), 1, 1, (FunctionHandler)&TestAwk::arrayindices) == -1) goto failure; return 0; @@ -87,7 +87,7 @@ public: #ifdef _WIN32 HeapDestroy (heap); - heap = ASE_NULL; + heap = QSE_NULL; #endif return -1; } @@ -104,10 +104,10 @@ public: numConOutFiles = 0; #ifdef _WIN32 - if (heap != ASE_NULL) + if (heap != QSE_NULL) { HeapDestroy (heap); - heap = ASE_NULL; + heap = QSE_NULL; } #endif } @@ -125,8 +125,8 @@ public: /*Argument arg; if (run.getGlobal(idLastSleep, arg) == 0) - ase_printf (ASE_T("GOOD: [%d]\n"), (int)arg.toInt()); - else { ase_printf (ASE_T("BAD:\n")); } + qse_printf (QSE_T("GOOD: [%d]\n"), (int)arg.toInt()); + else { qse_printf (QSE_T("BAD:\n")); } */ if (run.setGlobal (idLastSleep, x) == -1) return -1; @@ -189,7 +189,7 @@ public: int addConsoleInput (const char_t* file) { - if (numConInFiles < ASE_COUNTOF(conInFile)) + if (numConInFiles < QSE_COUNTOF(conInFile)) { conInFile[numConInFiles++] = file; return 0; @@ -200,7 +200,7 @@ public: int addConsoleOutput (const char_t* file) { - if (numConOutFiles < ASE_COUNTOF(conOutFile)) + if (numConOutFiles < QSE_COUNTOF(conOutFile)) { conOutFile[numConOutFiles++] = file; return 0; @@ -224,7 +224,7 @@ protected: void onRunStart (Run& run) { - if (verbose) ase_printf (ASE_T("*** awk run started ***\n")); + if (verbose) qse_printf (QSE_T("*** awk run started ***\n")); } void onRunEnd (Run& run) @@ -233,11 +233,11 @@ protected: if (err != ERR_NOERR) { - ase_fprintf (stderr, ASE_T("cannot run: LINE[%d] %s\n"), + qse_fprintf (stderr, QSE_T("cannot run: LINE[%d] %s\n"), run.getErrorLine(), run.getErrorMessage()); } - if (verbose) ase_printf (ASE_T("*** awk run ended ***\n")); + if (verbose) qse_printf (QSE_T("*** awk run ended ***\n")); } void onRunReturn (Run& run, const Argument& ret) @@ -246,39 +246,39 @@ protected: { size_t len; const char_t* ptr = ret.toStr (&len); - ase_printf (ASE_T("*** return [%.*s] ***\n"), (int)len, ptr); + qse_printf (QSE_T("*** return [%.*s] ***\n"), (int)len, ptr); } } int openSource (Source& io) { Source::Mode mode = io.getMode(); - FILE* fp = ASE_NULL; + FILE* fp = QSE_NULL; if (mode == Source::READ) { - if (srcInName == ASE_NULL) + if (srcInName == QSE_NULL) { io.setHandle (stdin); return 0; } - if (srcInName[0] == ASE_T('\0')) fp = stdin; - else fp = ase_fopen (srcInName, ASE_T("r")); + if (srcInName[0] == QSE_T('\0')) fp = stdin; + else fp = qse_fopen (srcInName, QSE_T("r")); } else if (mode == Source::WRITE) { - if (srcOutName == ASE_NULL) + if (srcOutName == QSE_NULL) { io.setHandle (stdout); return 0; } - if (srcOutName[0] == ASE_T('\0')) fp = stdout; - else fp = ase_fopen (srcOutName, ASE_T("w")); + if (srcOutName[0] == QSE_T('\0')) fp = stdout; + else fp = qse_fopen (srcOutName, QSE_T("w")); } - if (fp == ASE_NULL) return -1; + if (fp == QSE_NULL) return -1; io.setHandle (fp); return 1; } @@ -289,7 +289,7 @@ protected: FILE* fp = (FILE*)io.getHandle(); if (fp == stdout || fp == stderr) fflush (fp); if (fp != stdin && fp != stdout && fp != stderr) fclose (fp); - io.setHandle (ASE_NULL); + io.setHandle (QSE_NULL); return 0; } @@ -300,15 +300,15 @@ protected: while (n < (ssize_t)len) { - ase_cint_t c = ase_fgetc (fp); - if (c == ASE_CHAR_EOF) + qse_cint_t c = qse_fgetc (fp); + if (c == QSE_CHAR_EOF) { - if (ase_ferror(fp)) n = -1; + if (qse_ferror(fp)) n = -1; break; } buf[n++] = c; - if (c == ASE_T('\n')) break; + if (c == QSE_T('\n')) break; } return n; @@ -321,15 +321,15 @@ protected: while (left > 0) { - if (*buf == ASE_T('\0')) + if (*buf == QSE_T('\0')) { - if (ase_fputc (*buf, fp) == ASE_CHAR_EOF) return -1; + if (qse_fputc (*buf, fp) == QSE_CHAR_EOF) return -1; left -= 1; buf += 1; } else { - int chunk = (left > ASE_TYPE_MAX(int))? ASE_TYPE_MAX(int): (int)left; - int n = ase_fprintf (fp, ASE_T("%.*s"), chunk, buf); + int chunk = (left > QSE_TYPE_MAX(int))? QSE_TYPE_MAX(int): (int)left; + int n = qse_fprintf (fp, QSE_T("%.*s"), chunk, buf); if (n < 0 || n > chunk) return -1; left -= n; buf += n; } @@ -346,8 +346,8 @@ protected: #else ASE::StdAwk::Console::Mode mode = io.getMode(); #endif - FILE* fp = ASE_NULL; - const char_t* fn = ASE_NULL; + FILE* fp = QSE_NULL; + const char_t* fn = QSE_NULL; switch (mode) { @@ -360,7 +360,7 @@ protected: else { fn = conInFile[0]; - fp = ase_fopen (fn, ASE_T("r")); + fp = qse_fopen (fn, QSE_T("r")); } break; @@ -373,7 +373,7 @@ protected: else { fn = conOutFile[0]; - fp = ase_fopen (fn, ASE_T("w")); + fp = qse_fopen (fn, QSE_T("w")); } break; } @@ -381,8 +381,8 @@ protected: if (fp == NULL) return -1; ConTrack* t = (ConTrack*) - ase_awk_alloc (awk, ASE_SIZEOF(ConTrack)); - if (t == ASE_NULL) + qse_awk_alloc (awk, QSE_SIZEOF(ConTrack)); + if (t == QSE_NULL) { if (fp != stdin && fp != stdout) fclose (fp); return -1; @@ -391,12 +391,12 @@ protected: t->handle = fp; t->nextConIdx = 1; - if (fn != ASE_NULL) + if (fn != QSE_NULL) { if (io.setFileName(fn) == -1) { if (fp != stdin && fp != stdout) fclose (fp); - ase_awk_free (awk, t); + qse_awk_free (awk, t); return -1; } } @@ -413,7 +413,7 @@ protected: if (fp == stdout || fp == stderr) fflush (fp); if (fp != stdin && fp != stdout && fp != stderr) fclose (fp); - ase_awk_free (awk, t); + qse_awk_free (awk, t); return 0; } @@ -425,15 +425,15 @@ protected: while (n < (ssize_t)len) { - ase_cint_t c = ase_fgetc (fp); - if (c == ASE_CHAR_EOF) + qse_cint_t c = qse_fgetc (fp); + if (c == QSE_CHAR_EOF) { - if (ase_ferror(fp)) return -1; + if (qse_ferror(fp)) return -1; if (t->nextConIdx >= numConInFiles) break; const char_t* fn = conInFile[t->nextConIdx]; - FILE* nfp = ase_fopen (fn, ASE_T("r")); - if (nfp == ASE_NULL) return -1; + FILE* nfp = qse_fopen (fn, QSE_T("r")); + if (nfp == QSE_NULL) return -1; if (io.setFileName(fn) == -1 || io.setFNR(0) == -1) { @@ -451,7 +451,7 @@ protected: } buf[n++] = c; - if (c == ASE_T('\n')) break; + if (c == QSE_T('\n')) break; } return n; @@ -465,15 +465,15 @@ protected: while (left > 0) { - if (*buf == ASE_T('\0')) + if (*buf == QSE_T('\0')) { - if (ase_fputc (*buf, fp) == ASE_CHAR_EOF) return -1; + if (qse_fputc (*buf, fp) == QSE_CHAR_EOF) return -1; left -= 1; buf += 1; } else { - int chunk = (left > ASE_TYPE_MAX(int))? ASE_TYPE_MAX(int): (int)left; - int n = ase_fprintf (fp, ASE_T("%.*s"), chunk, buf); + int chunk = (left > QSE_TYPE_MAX(int))? QSE_TYPE_MAX(int): (int)left; + int n = qse_fprintf (fp, QSE_T("%.*s"), chunk, buf); if (n < 0 || n > chunk) return -1; left -= n; buf += n; } @@ -498,8 +498,8 @@ protected: #endif ConTrack* t = (ConTrack*)io.getHandle(); FILE* ofp = t->handle; - FILE* nfp = ASE_NULL; - const char_t* fn = ASE_NULL; + FILE* nfp = QSE_NULL; + const char_t* fn = QSE_NULL; switch (mode) { @@ -510,7 +510,7 @@ protected: #endif if (t->nextConIdx >= numConInFiles) return 0; fn = conInFile[t->nextConIdx]; - nfp = ase_fopen (fn, ASE_T("r")); + nfp = qse_fopen (fn, QSE_T("r")); break; #if defined(_MSC_VER) && (_MSC_VER<1400) @@ -520,13 +520,13 @@ protected: #endif if (t->nextConIdx >= numConOutFiles) return 0; fn = conOutFile[t->nextConIdx]; - nfp = ase_fopen (fn, ASE_T("w")); + nfp = qse_fopen (fn, QSE_T("w")); break; } - if (nfp == ASE_NULL) return -1; + if (nfp == QSE_NULL) return -1; - if (fn != ASE_NULL) + if (fn != QSE_NULL) { if (io.setFileName (fn) == -1) { @@ -597,113 +597,113 @@ private: }; #ifndef NDEBUG -void ase_assert_abort (void) +void qse_assert_abort (void) { abort (); } -void ase_assert_printf (const ase_char_t* fmt, ...) +void qse_assert_printf (const qse_char_t* fmt, ...) { va_list ap; #ifdef _WIN32 int n; - ase_char_t buf[1024]; + qse_char_t buf[1024]; #endif va_start (ap, fmt); #if defined(_WIN32) - n = _vsntprintf (buf, ASE_COUNTOF(buf), fmt, ap); - if (n < 0) buf[ASE_COUNTOF(buf)-1] = ASE_T('\0'); + n = _vsntprintf (buf, QSE_COUNTOF(buf), fmt, ap); + if (n < 0) buf[QSE_COUNTOF(buf)-1] = QSE_T('\0'); #if defined(_MSC_VER) && (_MSC_VER<1400) MessageBox (NULL, buf, - ASE_T("Assertion Failure"), MB_OK|MB_ICONERROR); + QSE_T("Assertion Failure"), MB_OK|MB_ICONERROR); #else MessageBox (NULL, buf, - ASE_T("\uB2DD\uAE30\uB9AC \uC870\uB610"), MB_OK|MB_ICONERROR); + QSE_T("\uB2DD\uAE30\uB9AC \uC870\uB610"), MB_OK|MB_ICONERROR); #endif #else - ase_vprintf (fmt, ap); + qse_vprintf (fmt, ap); #endif va_end (ap); } #endif -static void print_error (const ase_char_t* msg) +static void print_error (const qse_char_t* msg) { - ase_printf (ASE_T("Error: %s\n"), msg); + qse_printf (QSE_T("Error: %s\n"), msg); } static struct { - const ase_char_t* name; + const qse_char_t* name; TestAwk::Option opt; } otab[] = { - { ASE_T("implicit"), TestAwk::OPT_IMPLICIT }, - { ASE_T("explicit"), TestAwk::OPT_EXPLICIT }, - { ASE_T("bxor"), TestAwk::OPT_BXOR }, - { ASE_T("shift"), TestAwk::OPT_SHIFT }, - { ASE_T("idiv"), TestAwk::OPT_IDIV }, - { ASE_T("extio"), TestAwk::OPT_EXTIO }, - { ASE_T("newline"), TestAwk::OPT_NEWLINE }, - { ASE_T("baseone"), TestAwk::OPT_BASEONE }, - { ASE_T("stripspaces"), TestAwk::OPT_STRIPSPACES }, - { ASE_T("nextofile"), TestAwk::OPT_NEXTOFILE }, - { ASE_T("crlf"), TestAwk::OPT_CRLF }, - { ASE_T("argstomain"), TestAwk::OPT_ARGSTOMAIN }, - { ASE_T("reset"), TestAwk::OPT_RESET }, - { ASE_T("maptovar"), TestAwk::OPT_MAPTOVAR }, - { ASE_T("pablock"), TestAwk::OPT_PABLOCK } + { QSE_T("implicit"), TestAwk::OPT_IMPLICIT }, + { QSE_T("explicit"), TestAwk::OPT_EXPLICIT }, + { QSE_T("bxor"), TestAwk::OPT_BXOR }, + { QSE_T("shift"), TestAwk::OPT_SHIFT }, + { QSE_T("idiv"), TestAwk::OPT_IDIV }, + { QSE_T("extio"), TestAwk::OPT_EXTIO }, + { QSE_T("newline"), TestAwk::OPT_NEWLINE }, + { QSE_T("baseone"), TestAwk::OPT_BASEONE }, + { QSE_T("stripspaces"), TestAwk::OPT_STRIPSPACES }, + { QSE_T("nextofile"), TestAwk::OPT_NEXTOFILE }, + { QSE_T("crlf"), TestAwk::OPT_CRLF }, + { QSE_T("argstomain"), TestAwk::OPT_ARGSTOMAIN }, + { QSE_T("reset"), TestAwk::OPT_RESET }, + { QSE_T("maptovar"), TestAwk::OPT_MAPTOVAR }, + { QSE_T("pablock"), TestAwk::OPT_PABLOCK } }; -static void print_usage (const ase_char_t* argv0) +static void print_usage (const qse_char_t* argv0) { - const ase_char_t* base; + const qse_char_t* base; int j; - base = ase_strrchr(argv0, ASE_T('/')); - if (base == ASE_NULL) base = ase_strrchr(argv0, ASE_T('\\')); - if (base == ASE_NULL) base = argv0; else base++; + base = qse_strrchr(argv0, QSE_T('/')); + if (base == QSE_NULL) base = qse_strrchr(argv0, QSE_T('\\')); + if (base == QSE_NULL) base = argv0; else base++; - ase_printf (ASE_T("Usage: %s [-m main] [-si file]? [-so file]? [-ci file]* [-co file]* [-a arg]* [-w o:n]* \n"), base); - ase_printf (ASE_T(" -m main Specify the main function name\n")); - ase_printf (ASE_T(" -si file Specify the input source file\n")); - ase_printf (ASE_T(" The source code is read from stdin when it is not specified\n")); - ase_printf (ASE_T(" -so file Specify the output source file\n")); - ase_printf (ASE_T(" The deparsed code is not output when is it not specified\n")); - ase_printf (ASE_T(" -ci file Specify the input console file\n")); - ase_printf (ASE_T(" -co file Specify the output console file\n")); - ase_printf (ASE_T(" -a str Specify an argument\n")); - ase_printf (ASE_T(" -w o:n Specify an old and new word pair\n")); - ase_printf (ASE_T(" o - an original word\n")); - ase_printf (ASE_T(" n - the new word to replace the original\n")); - ase_printf (ASE_T(" -v Print extra messages\n")); + qse_printf (QSE_T("Usage: %s [-m main] [-si file]? [-so file]? [-ci file]* [-co file]* [-a arg]* [-w o:n]* \n"), base); + qse_printf (QSE_T(" -m main Specify the main function name\n")); + qse_printf (QSE_T(" -si file Specify the input source file\n")); + qse_printf (QSE_T(" The source code is read from stdin when it is not specified\n")); + qse_printf (QSE_T(" -so file Specify the output source file\n")); + qse_printf (QSE_T(" The deparsed code is not output when is it not specified\n")); + qse_printf (QSE_T(" -ci file Specify the input console file\n")); + qse_printf (QSE_T(" -co file Specify the output console file\n")); + qse_printf (QSE_T(" -a str Specify an argument\n")); + qse_printf (QSE_T(" -w o:n Specify an old and new word pair\n")); + qse_printf (QSE_T(" o - an original word\n")); + qse_printf (QSE_T(" n - the new word to replace the original\n")); + qse_printf (QSE_T(" -v Print extra messages\n")); - ase_printf (ASE_T("\nYou may specify the following options to change the behavior of the interpreter.\n")); - for (j = 0; j < ASE_COUNTOF(otab); j++) + qse_printf (QSE_T("\nYou may specify the following options to change the behavior of the interpreter.\n")); + for (j = 0; j < QSE_COUNTOF(otab); j++) { - ase_printf (ASE_T(" -%-20s -no%-20s\n"), otab[j].name, otab[j].name); + qse_printf (QSE_T(" -%-20s -no%-20s\n"), otab[j].name, otab[j].name); } } -static int awk_main (int argc, ase_char_t* argv[]) +static int awk_main (int argc, qse_char_t* argv[]) { TestAwk awk; int mode = 0; - const ase_char_t* mainfn = NULL; - const ase_char_t* srcin = ASE_T(""); - const ase_char_t* srcout = NULL; - const ase_char_t* args[256]; - ase_size_t nargs = 0; - ase_size_t nsrcins = 0; - ase_size_t nsrcouts = 0; + const qse_char_t* mainfn = NULL; + const qse_char_t* srcin = QSE_T(""); + const qse_char_t* srcout = NULL; + const qse_char_t* args[256]; + qse_size_t nargs = 0; + qse_size_t nsrcins = 0; + qse_size_t nsrcouts = 0; if (awk.open() == -1) { - ase_fprintf (stderr, ASE_T("cannot open awk\n")); + qse_fprintf (stderr, QSE_T("cannot open awk\n")); return -1; } @@ -711,28 +711,28 @@ static int awk_main (int argc, ase_char_t* argv[]) { if (mode == 0) { - if (ase_strcmp(argv[i], ASE_T("-si")) == 0) mode = 1; - else if (ase_strcmp(argv[i], ASE_T("-so")) == 0) mode = 2; - else if (ase_strcmp(argv[i], ASE_T("-ci")) == 0) mode = 3; - else if (ase_strcmp(argv[i], ASE_T("-co")) == 0) mode = 4; - else if (ase_strcmp(argv[i], ASE_T("-a")) == 0) mode = 5; - else if (ase_strcmp(argv[i], ASE_T("-m")) == 0) mode = 6; - else if (ase_strcmp(argv[i], ASE_T("-w")) == 0) mode = 7; - else if (ase_strcmp(argv[i], ASE_T("-v")) == 0) + if (qse_strcmp(argv[i], QSE_T("-si")) == 0) mode = 1; + else if (qse_strcmp(argv[i], QSE_T("-so")) == 0) mode = 2; + else if (qse_strcmp(argv[i], QSE_T("-ci")) == 0) mode = 3; + else if (qse_strcmp(argv[i], QSE_T("-co")) == 0) mode = 4; + else if (qse_strcmp(argv[i], QSE_T("-a")) == 0) mode = 5; + else if (qse_strcmp(argv[i], QSE_T("-m")) == 0) mode = 6; + else if (qse_strcmp(argv[i], QSE_T("-w")) == 0) mode = 7; + else if (qse_strcmp(argv[i], QSE_T("-v")) == 0) { verbose = true; } else { - if (argv[i][0] == ASE_T('-')) + if (argv[i][0] == QSE_T('-')) { int j; - if (argv[i][1] == ASE_T('n') && argv[i][2] == ASE_T('o')) + if (argv[i][1] == QSE_T('n') && argv[i][2] == QSE_T('o')) { - for (j = 0; j < ASE_COUNTOF(otab); j++) + for (j = 0; j < QSE_COUNTOF(otab); j++) { - if (ase_strcmp(&argv[i][3], otab[j].name) == 0) + if (qse_strcmp(&argv[i][3], otab[j].name) == 0) { awk.setOption (awk.getOption() & ~otab[j].opt); goto ok_valid; @@ -741,9 +741,9 @@ static int awk_main (int argc, ase_char_t* argv[]) } else { - for (j = 0; j < ASE_COUNTOF(otab); j++) + for (j = 0; j < QSE_COUNTOF(otab); j++) { - if (ase_strcmp(&argv[i][1], otab[j].name) == 0) + if (qse_strcmp(&argv[i][1], otab[j].name) == 0) { awk.setOption (awk.getOption() | otab[j].opt); goto ok_valid; @@ -761,7 +761,7 @@ static int awk_main (int argc, ase_char_t* argv[]) } else { - if (argv[i][0] == ASE_T('-')) + if (argv[i][0] == QSE_T('-')) { print_usage (argv[0]); return -1; @@ -795,7 +795,7 @@ static int awk_main (int argc, ase_char_t* argv[]) { if (awk.addConsoleInput (argv[i]) == -1) { - print_error (ASE_T("too many console inputs")); + print_error (QSE_T("too many console inputs")); return -1; } @@ -805,7 +805,7 @@ static int awk_main (int argc, ase_char_t* argv[]) { if (awk.addConsoleOutput (argv[i]) == -1) { - print_error (ASE_T("too many console outputs")); + print_error (QSE_T("too many console outputs")); return -1; } @@ -813,7 +813,7 @@ static int awk_main (int argc, ase_char_t* argv[]) } else if (mode == 5) // argument mode { - if (nargs >= ASE_COUNTOF(args)) + if (nargs >= QSE_COUNTOF(args)) { print_usage (argv[0]); return -1; @@ -835,17 +835,17 @@ static int awk_main (int argc, ase_char_t* argv[]) } else if (mode == 7) // word replacement { - const ase_char_t* p; - ase_size_t l; + const qse_char_t* p; + qse_size_t l; - p = ase_strchr(argv[i], ASE_T(':')); - if (p == ASE_NULL) + p = qse_strchr(argv[i], QSE_T(':')); + if (p == QSE_NULL) { print_usage (argv[0]); return -1; } - l = ase_strlen (argv[i]); + l = qse_strlen (argv[i]); awk.setWord ( argv[i], p - argv[i], @@ -866,7 +866,7 @@ static int awk_main (int argc, ase_char_t* argv[]) if (awk.parse (srcin, srcout) == -1) { - ase_fprintf (stderr, ASE_T("cannot parse: LINE[%d] %s\n"), + qse_fprintf (stderr, QSE_T("cannot parse: LINE[%d] %s\n"), awk.getErrorLine(), awk.getErrorMessage()); awk.close (); return -1; @@ -876,7 +876,7 @@ static int awk_main (int argc, ase_char_t* argv[]) if (awk.run (mainfn, args, nargs) == -1) { - ase_fprintf (stderr, ASE_T("cannot run: LINE[%d] %s\n"), + qse_fprintf (stderr, QSE_T("cannot run: LINE[%d] %s\n"), awk.getErrorLine(), awk.getErrorMessage()); awk.close (); return -1; @@ -886,7 +886,7 @@ static int awk_main (int argc, ase_char_t* argv[]) return 0; } -extern "C" int ase_main (int argc, ase_achar_t* argv[]) +extern "C" int qse_main (int argc, qse_achar_t* argv[]) { int n; @@ -897,7 +897,7 @@ extern "C" int ase_main (int argc, ase_achar_t* argv[]) _CrtSetDbgFlag (_CRTDBG_LEAK_CHECK_DF | _CRTDBG_ALLOC_MEM_DF); #endif - n = ase_runmain (argc,argv,awk_main); + n = qse_runmain (argc,argv,awk_main); #if defined(__linux) && defined(_DEBUG) muntrace (); diff --git a/qse/cmd/awk/aseawk++.bdsproj b/qse/cmd/awk/aseawk++.bdsproj deleted file mode 100644 index 60cbe9c6..00000000 --- a/qse/cmd/awk/aseawk++.bdsproj +++ /dev/null @@ -1,261 +0,0 @@ - - - - - - - - - - - - Awk.cpp - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - False - False - 1 - 0 - 0 - 0 - False - False - False - False - False - 1033 - 1252 - - - - - 1.0.0.0 - - - - - - 1.0.0.0 - - - - - - - arg.awk "" - - True - C:\projects\ase\cmd\awk - - - - - - False - - False - - True - False - - - Borland InterBase Express Components - Intraweb 8.0 Design Package for Borland Development Studio 2006 - Internet Direct Version 9 (Indy) Property and Component Editors - Borland C++Builder Office XP Servers Package - Borland Sample Controls Design Time Package - Borland C++Builder Internet Explorer 5 Components Package - TeeChart Components - - - - - - - - - - - mkdir $(PROJECTDIR)..\release\bin -mkdir $(PROJECTDIR)..\debug\bin - - - - - diff --git a/qse/cmd/awk/aseawk++.vcproj b/qse/cmd/awk/aseawk++.vcproj deleted file mode 100644 index 5228d265..00000000 --- a/qse/cmd/awk/aseawk++.vcproj +++ /dev/null @@ -1,440 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/qse/cmd/awk/aseawk.bdsproj b/qse/cmd/awk/aseawk.bdsproj deleted file mode 100644 index fcce37b1..00000000 --- a/qse/cmd/awk/aseawk.bdsproj +++ /dev/null @@ -1,262 +0,0 @@ - - - - - - - - - - - - awk.c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - False - False - 1 - 0 - 0 - 0 - False - False - False - False - False - 1033 - 1252 - - - - - 1.0.0.0 - - - - - - 1.0.0.0 - - - - - - - -f arg.awk "" - - True - C:\projects\ase\test\awk - - - - - - False - - False - - True - False - - - Borland InterBase Express Components - Intraweb 8.0 Design Package for Borland Development Studio 2006 - Internet Direct Version 9 (Indy) Property and Component Editors - Borland C++Builder Office XP Servers Package - Borland Sample Controls Design Time Package - Borland C++Builder Internet Explorer 5 Components Package - TeeChart Components - - - - - - - - - - - mkdir $(PROJECTDIR)..\release\bin -mkdir $(PROJECTDIR)..\debug\bin - - - - - diff --git a/qse/cmd/awk/aseawk.vcproj b/qse/cmd/awk/aseawk.vcproj deleted file mode 100644 index 5f16b0d6..00000000 --- a/qse/cmd/awk/aseawk.vcproj +++ /dev/null @@ -1,395 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/qse/cmd/awk/asetestawk++.dsp b/qse/cmd/awk/asetestawk++.dsp deleted file mode 100644 index d256e4e6..00000000 --- a/qse/cmd/awk/asetestawk++.dsp +++ /dev/null @@ -1,102 +0,0 @@ -# Microsoft Developer Studio Project File - Name="asetestawk++" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=asetestawk++ - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "asetestawk++.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "asetestawk++.mak" CFG="asetestawk++ - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "asetestawk++ - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "asetestawk++ - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "asetestawk++ - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "../../release/bin" -# PROP Intermediate_Dir "release/cpp" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\.." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_UNICODE" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 asecmn.lib aseawk.lib aseawk++.lib aseutl.lib user32.lib kernel32.lib /nologo /subsystem:console /machine:I386 /out:"../../release/bin/aseawk++.exe" /libpath:"../../release/lib" - -!ELSEIF "$(CFG)" == "asetestawk++ - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "../../debug/bin" -# PROP Intermediate_Dir "debug/cpp" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "..\..\.." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_UNICODE" /FR /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 asecmn.lib aseawk.lib aseawk++.lib aseutl.lib user32.lib kernel32.lib /nologo /subsystem:console /debug /machine:I386 /out:"../../debug/bin/aseawk++.exe" /pdbtype:sept /libpath:"../../debug/lib" - -!ENDIF - -# Begin Target - -# Name "asetestawk++ - Win32 Release" -# Name "asetestawk++ - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=.\Awk.cpp -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/qse/cmd/awk/asetestawk.dsp b/qse/cmd/awk/asetestawk.dsp deleted file mode 100644 index f3ba3803..00000000 --- a/qse/cmd/awk/asetestawk.dsp +++ /dev/null @@ -1,102 +0,0 @@ -# Microsoft Developer Studio Project File - Name="asetestawk" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=asetestawk - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "asetestawk.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "asetestawk.mak" CFG="asetestawk - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "asetestawk - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "asetestawk - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "asetestawk - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "../../release/bin" -# PROP Intermediate_Dir "release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\.." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_UNICODE" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 asecmn.lib aseawk.lib aseutl.lib user32.lib kernel32.lib /nologo /subsystem:console /machine:I386 /out:"../../release/bin/aseawk.exe" /libpath:"../../release/lib" - -!ELSEIF "$(CFG)" == "asetestawk - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "../../debug/bin" -# PROP Intermediate_Dir "debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "..\..\.." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_UNICODE" /FR /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 asecmn.lib aseawk.lib aseutl.lib user32.lib kernel32.lib /nologo /subsystem:console /debug /machine:I386 /out:"../../debug/bin/aseawk.exe" /pdbtype:sept /libpath:"../../debug/lib" - -!ENDIF - -# Begin Target - -# Name "asetestawk - Win32 Release" -# Name "asetestawk - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=.\awk.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/qse/cmd/awk/awk.c b/qse/cmd/awk/awk.c index 25e505ee..21abe571 100644 --- a/qse/cmd/awk/awk.c +++ b/qse/cmd/awk/awk.c @@ -2,14 +2,14 @@ * $Id: awk.c 499 2008-12-16 09:42:48Z baconevi $ */ -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include -#include -#include +#include +#include #include #include @@ -33,17 +33,17 @@ #include #endif -static ase_awk_t* app_awk = NULL; -static ase_awk_run_t* app_run = NULL; +static qse_awk_t* app_awk = NULL; +static qse_awk_run_t* app_run = NULL; static int app_debug = 0; -static void dprint (const ase_char_t* fmt, ...) +static void dprint (const qse_char_t* fmt, ...) { if (app_debug) { va_list ap; va_start (ap, fmt); - ase_vfprintf (stderr, fmt, ap); + qse_vfprintf (stderr, fmt, ap); va_end (ap); } } @@ -55,7 +55,7 @@ static BOOL WINAPI stop_run (DWORD ctrl_type) if (ctrl_type == CTRL_C_EVENT || ctrl_type == CTRL_CLOSE_EVENT) { - ase_awk_stop (app_run); + qse_awk_stop (app_run); return TRUE; } @@ -65,86 +65,86 @@ static BOOL WINAPI stop_run (DWORD ctrl_type) static void stop_run (int sig) { signal (SIGINT, SIG_IGN); - ase_awk_stop (app_run); + qse_awk_stop (app_run); signal (SIGINT, stop_run); } #endif -static void on_run_start (ase_awk_run_t* run, void* custom) +static void on_run_start (qse_awk_run_t* run, void* custom) { app_run = run; - dprint (ASE_T("[AWK ABOUT TO START]\n")); + dprint (QSE_T("[AWK ABOUT TO START]\n")); } -static ase_map_walk_t print_awk_value ( - ase_map_t* map, ase_map_pair_t* pair, void* arg) +static qse_map_walk_t print_awk_value ( + qse_map_t* map, qse_map_pair_t* pair, void* arg) { - ase_awk_run_t* run = (ase_awk_run_t*)arg; - ase_char_t* str; - ase_size_t len; + qse_awk_run_t* run = (qse_awk_run_t*)arg; + qse_char_t* str; + qse_size_t len; - str = ase_awk_valtostr (run, ASE_MAP_VPTR(pair), 0, ASE_NULL, &len); - if (str == ASE_NULL) + str = qse_awk_valtostr (run, QSE_MAP_VPTR(pair), 0, QSE_NULL, &len); + if (str == QSE_NULL) { - dprint (ASE_T("***OUT OF MEMORY***\n")); + dprint (QSE_T("***OUT OF MEMORY***\n")); } else { - dprint (ASE_T("%.*s = %.*s\n"), - (int)ASE_MAP_KLEN(pair), ASE_MAP_KPTR(pair), + dprint (QSE_T("%.*s = %.*s\n"), + (int)QSE_MAP_KLEN(pair), QSE_MAP_KPTR(pair), (int)len, str); - ase_awk_free (ase_awk_getrunawk(run), str); + qse_awk_free (qse_awk_getrunawk(run), str); } - return ASE_MAP_WALK_FORWARD; + return QSE_MAP_WALK_FORWARD; } static void on_run_statement ( - ase_awk_run_t* run, ase_size_t line, void* custom) + qse_awk_run_t* run, qse_size_t line, void* custom) { /*dprint (L"running %d\n", (int)line);*/ } static void on_run_return ( - ase_awk_run_t* run, ase_awk_val_t* ret, void* custom) + qse_awk_run_t* run, qse_awk_val_t* ret, void* custom) { - ase_size_t len; - ase_char_t* str; + qse_size_t len; + qse_char_t* str; - if (ret == ase_awk_val_nil) + if (ret == qse_awk_val_nil) { - dprint (ASE_T("[RETURN] - ***nil***\n")); + dprint (QSE_T("[RETURN] - ***nil***\n")); } else { - str = ase_awk_valtostr (run, ret, 0, ASE_NULL, &len); - if (str == ASE_NULL) + str = qse_awk_valtostr (run, ret, 0, QSE_NULL, &len); + if (str == QSE_NULL) { - dprint (ASE_T("[RETURN] - ***OUT OF MEMORY***\n")); + dprint (QSE_T("[RETURN] - ***OUT OF MEMORY***\n")); } else { - dprint (ASE_T("[RETURN] - [%.*s]\n"), (int)len, str); - ase_awk_free (ase_awk_getrunawk(run), str); + dprint (QSE_T("[RETURN] - [%.*s]\n"), (int)len, str); + qse_awk_free (qse_awk_getrunawk(run), str); } } - dprint (ASE_T("[NAMED VARIABLES]\n")); - ase_map_walk (ase_awk_getrunnvmap(run), print_awk_value, run); - dprint (ASE_T("[END NAMED VARIABLES]\n")); + dprint (QSE_T("[NAMED VARIABLES]\n")); + qse_map_walk (qse_awk_getrunnvmap(run), print_awk_value, run); + dprint (QSE_T("[END NAMED VARIABLES]\n")); } -static void on_run_end (ase_awk_run_t* run, int errnum, void* data) +static void on_run_end (qse_awk_run_t* run, int errnum, void* data) { - if (errnum != ASE_AWK_ENOERR) + if (errnum != QSE_AWK_ENOERR) { - dprint (ASE_T("[AWK ENDED WITH AN ERROR]\n")); - ase_printf (ASE_T("RUN ERROR: CODE [%d] LINE [%u] %s\n"), + dprint (QSE_T("[AWK ENDED WITH AN ERROR]\n")); + qse_printf (QSE_T("RUN ERROR: CODE [%d] LINE [%u] %s\n"), errnum, - (unsigned int)ase_awk_getrunerrlin(run), - ase_awk_getrunerrmsg(run)); + (unsigned int)qse_awk_getrunerrlin(run), + qse_awk_getrunerrmsg(run)); } - else dprint (ASE_T("[AWK ENDED SUCCESSFULLY]\n")); + else dprint (QSE_T("[AWK ENDED SUCCESSFULLY]\n")); app_run = NULL; } @@ -152,65 +152,65 @@ static void on_run_end (ase_awk_run_t* run, int errnum, void* data) /* TODO: remove otab... */ static struct { - const ase_char_t* name; + const qse_char_t* name; int opt; } otab[] = { - { ASE_T("implicit"), ASE_AWK_IMPLICIT }, - { ASE_T("explicit"), ASE_AWK_EXPLICIT }, - { ASE_T("bxor"), ASE_AWK_BXOR }, - { ASE_T("shift"), ASE_AWK_SHIFT }, - { ASE_T("idiv"), ASE_AWK_IDIV }, - { ASE_T("extio"), ASE_AWK_EXTIO }, - { ASE_T("newline"), ASE_AWK_NEWLINE }, - { ASE_T("baseone"), ASE_AWK_BASEONE }, - { ASE_T("stripspaces"), ASE_AWK_STRIPSPACES }, - { ASE_T("nextofile"), ASE_AWK_NEXTOFILE }, - { ASE_T("crfl"), ASE_AWK_CRLF }, - { ASE_T("argstomain"), ASE_AWK_ARGSTOMAIN }, - { ASE_T("reset"), ASE_AWK_RESET }, - { ASE_T("maptovar"), ASE_AWK_MAPTOVAR }, - { ASE_T("pablock"), ASE_AWK_PABLOCK } + { QSE_T("implicit"), QSE_AWK_IMPLICIT }, + { QSE_T("explicit"), QSE_AWK_EXPLICIT }, + { QSE_T("bxor"), QSE_AWK_BXOR }, + { QSE_T("shift"), QSE_AWK_SHIFT }, + { QSE_T("idiv"), QSE_AWK_IDIV }, + { QSE_T("extio"), QSE_AWK_EXTIO }, + { QSE_T("newline"), QSE_AWK_NEWLINE }, + { QSE_T("baseone"), QSE_AWK_BASEONE }, + { QSE_T("stripspaces"), QSE_AWK_STRIPSPACES }, + { QSE_T("nextofile"), QSE_AWK_NEXTOFILE }, + { QSE_T("crfl"), QSE_AWK_CRLF }, + { QSE_T("argstomain"), QSE_AWK_ARGSTOMAIN }, + { QSE_T("reset"), QSE_AWK_RESET }, + { QSE_T("maptovar"), QSE_AWK_MAPTOVAR }, + { QSE_T("pablock"), QSE_AWK_PABLOCK } }; -static void print_usage (const ase_char_t* argv0) +static void print_usage (const qse_char_t* argv0) { int j; - ase_printf (ASE_T("Usage: %s [options] -f sourcefile [ -- ] [datafile]*\n"), argv0); - ase_printf (ASE_T(" %s [options] [ -- ] sourcestring [datafile]*\n"), argv0); - ase_printf (ASE_T("Where options are:\n")); - ase_printf (ASE_T(" -h print this message\n")); - ase_printf (ASE_T(" -d show extra information\n")); - ase_printf (ASE_T(" -f/--file sourcefile set the source script file\n")); - ase_printf (ASE_T(" -o/--deparsed-file deparsedfile set the deparsing output file\n")); - ase_printf (ASE_T(" -F/--field-separator string set a field separator(FS)\n")); + qse_printf (QSE_T("Usage: %s [options] -f sourcefile [ -- ] [datafile]*\n"), argv0); + qse_printf (QSE_T(" %s [options] [ -- ] sourcestring [datafile]*\n"), argv0); + qse_printf (QSE_T("Where options are:\n")); + qse_printf (QSE_T(" -h print this message\n")); + qse_printf (QSE_T(" -d show extra information\n")); + qse_printf (QSE_T(" -f/--file sourcefile set the source script file\n")); + qse_printf (QSE_T(" -o/--deparsed-file deparsedfile set the deparsing output file\n")); + qse_printf (QSE_T(" -F/--field-separator string set a field separator(FS)\n")); - ase_printf (ASE_T("\nYou may specify the following options to change the behavior of the interpreter.\n")); - for (j = 0; j < ASE_COUNTOF(otab); j++) + qse_printf (QSE_T("\nYou may specify the following options to change the behavior of the interpreter.\n")); + for (j = 0; j < QSE_COUNTOF(otab); j++) { - ase_printf (ASE_T(" -%-20s -no%-20s\n"), otab[j].name, otab[j].name); + qse_printf (QSE_T(" -%-20s -no%-20s\n"), otab[j].name, otab[j].name); } } static int bfn_sleep ( - ase_awk_run_t* run, const ase_char_t* fnm, ase_size_t fnl) + qse_awk_run_t* run, const qse_char_t* fnm, qse_size_t fnl) { - ase_size_t nargs; - ase_awk_val_t* a0; - ase_long_t lv; - ase_real_t rv; - ase_awk_val_t* r; + qse_size_t nargs; + qse_awk_val_t* a0; + qse_long_t lv; + qse_real_t rv; + qse_awk_val_t* r; int n; - nargs = ase_awk_getnargs (run); - ASE_ASSERT (nargs == 1); + nargs = qse_awk_getnargs (run); + QSE_ASSERT (nargs == 1); - a0 = ase_awk_getarg (run, 0); + a0 = qse_awk_getarg (run, 0); - n = ase_awk_valtonum (run, a0, &lv, &rv); + n = qse_awk_valtonum (run, a0, &lv, &rv); if (n == -1) return -1; - if (n == 1) lv = (ase_long_t)rv; + if (n == 1) lv = (qse_long_t)rv; #ifdef _WIN32 Sleep ((DWORD)(lv * 1000)); @@ -219,127 +219,127 @@ static int bfn_sleep ( n = sleep (lv); #endif - r = ase_awk_makeintval (run, n); - if (r == ASE_NULL) + r = qse_awk_makeintval (run, n); + if (r == QSE_NULL) { - ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM); + qse_awk_setrunerrnum (run, QSE_AWK_ENOMEM); return -1; } - ase_awk_setretval (run, r); + qse_awk_setretval (run, r); return 0; } static void out_of_memory (void) { - ase_fprintf (ASE_STDERR, ASE_T("Error: out of memory\n")); + qse_fprintf (QSE_STDERR, QSE_T("Error: out of memory\n")); } struct argout_t { void* isp; /* input source files or string */ int ist; /* input source type */ - ase_size_t isfl; /* the number of input source files */ - ase_char_t* osf; /* output source file */ - ase_char_t** icf; /* input console files */ - ase_size_t icfl; /* the number of input console files */ - ase_map_t* vm; /* global variable map */ + qse_size_t isfl; /* the number of input source files */ + qse_char_t* osf; /* output source file */ + qse_char_t** icf; /* input console files */ + qse_size_t icfl; /* the number of input console files */ + qse_map_t* vm; /* global variable map */ }; -static int handle_args (int argc, ase_char_t* argv[], struct argout_t* ao) +static int handle_args (int argc, qse_char_t* argv[], struct argout_t* ao) { - static ase_opt_lng_t lng[] = + static qse_opt_lng_t lng[] = { - { ASE_T("implicit"), 0 }, - { ASE_T("explicit"), 0 }, - { ASE_T("bxor"), 0 }, - { ASE_T("shift"), 0 }, - { ASE_T("idiv"), 0 }, - { ASE_T("extio"), 0 }, - { ASE_T("newline"), 0 }, - { ASE_T("baseone"), 0 }, - { ASE_T("stripspaces"), 0 }, - { ASE_T("nextofile"), 0 }, - { ASE_T("crlf"), 0 }, - { ASE_T("argstomain"), 0 }, - { ASE_T("reset"), 0 }, - { ASE_T("maptovar"), 0 }, - { ASE_T("pablock"), 0 }, + { QSE_T("implicit"), 0 }, + { QSE_T("explicit"), 0 }, + { QSE_T("bxor"), 0 }, + { QSE_T("shift"), 0 }, + { QSE_T("idiv"), 0 }, + { QSE_T("extio"), 0 }, + { QSE_T("newline"), 0 }, + { QSE_T("baseone"), 0 }, + { QSE_T("stripspaces"), 0 }, + { QSE_T("nextofile"), 0 }, + { QSE_T("crlf"), 0 }, + { QSE_T("argstomain"), 0 }, + { QSE_T("reset"), 0 }, + { QSE_T("maptovar"), 0 }, + { QSE_T("pablock"), 0 }, - { ASE_T(":main"), ASE_T('m') }, - { ASE_T(":file"), ASE_T('f') }, - { ASE_T(":field-separator"), ASE_T('F') }, - { ASE_T(":deparsed-file"), ASE_T('o') }, - { ASE_T(":assign"), ASE_T('v') }, + { QSE_T(":main"), QSE_T('m') }, + { QSE_T(":file"), QSE_T('f') }, + { QSE_T(":field-separator"), QSE_T('F') }, + { QSE_T(":deparsed-file"), QSE_T('o') }, + { QSE_T(":assign"), QSE_T('v') }, - { ASE_T("help"), ASE_T('h') } + { QSE_T("help"), QSE_T('h') } }; - static ase_opt_t opt = + static qse_opt_t opt = { - ASE_T("hdm:f:F:o:v:"), + QSE_T("hdm:f:F:o:v:"), lng }; - ase_cint_t c; + qse_cint_t c; - ase_size_t isfc = 16; /* the capacity of isf */ - ase_size_t isfl = 0; /* number of input source files */ + qse_size_t isfc = 16; /* the capacity of isf */ + qse_size_t isfl = 0; /* number of input source files */ - ase_size_t icfc = 0; /* the capacity of icf */ - ase_size_t icfl = 0; /* the number of input console files */ + qse_size_t icfc = 0; /* the capacity of icf */ + qse_size_t icfl = 0; /* the number of input console files */ - ase_char_t** isf = ASE_NULL; /* input source files */ - ase_char_t* osf = ASE_NULL; /* output source file */ - ase_char_t** icf = ASE_NULL; /* input console files */ + qse_char_t** isf = QSE_NULL; /* input source files */ + qse_char_t* osf = QSE_NULL; /* output source file */ + qse_char_t** icf = QSE_NULL; /* input console files */ - ase_map_t* vm = ASE_NULL; /* global variable map */ + qse_map_t* vm = QSE_NULL; /* global variable map */ - isf = (ase_char_t**) malloc (ASE_SIZEOF(*isf) * isfc); - if (isf == ASE_NULL) + isf = (qse_char_t**) malloc (QSE_SIZEOF(*isf) * isfc); + if (isf == QSE_NULL) { out_of_memory (); ABORT (oops); } - vm = ase_map_open (ASE_NULL, 0, 30, 70); - if (vm == ASE_NULL) + vm = qse_map_open (QSE_NULL, 0, 30, 70); + if (vm == QSE_NULL) { out_of_memory (); ABORT (oops); } - ase_map_setcopier (vm, ASE_MAP_KEY, ASE_MAP_COPIER_INLINE); - ase_map_setcopier (vm, ASE_MAP_VAL, ASE_MAP_COPIER_INLINE); - ase_map_setscale (vm, ASE_MAP_KEY, ASE_SIZEOF(ase_char_t)); - ase_map_setscale (vm, ASE_MAP_VAL, ASE_SIZEOF(ase_char_t)); + qse_map_setcopier (vm, QSE_MAP_KEY, QSE_MAP_COPIER_INLINE); + qse_map_setcopier (vm, QSE_MAP_VAL, QSE_MAP_COPIER_INLINE); + qse_map_setscale (vm, QSE_MAP_KEY, QSE_SIZEOF(qse_char_t)); + qse_map_setscale (vm, QSE_MAP_VAL, QSE_SIZEOF(qse_char_t)); - while ((c = ase_getopt (argc, argv, &opt)) != ASE_CHAR_EOF) + while ((c = qse_getopt (argc, argv, &opt)) != QSE_CHAR_EOF) { switch (c) { case 0: - ase_printf (ASE_T(">>> [%s] [%s]\n"), opt.lngopt, opt.arg); + qse_printf (QSE_T(">>> [%s] [%s]\n"), opt.lngopt, opt.arg); break; - case ASE_T('h'): + case QSE_T('h'): print_usage (argv[0]); - if (isf != ASE_NULL) free (isf); - if (vm != ASE_NULL) ase_map_close (vm); + if (isf != QSE_NULL) free (isf); + if (vm != QSE_NULL) qse_map_close (vm); return 1; - case ASE_T('d'): + case QSE_T('d'): { app_debug = 1; break; } - case ASE_T('f'): + case QSE_T('f'): { - if (isfl >= isfc-1) /* -1 for last ASE_NULL */ + if (isfl >= isfc-1) /* -1 for last QSE_NULL */ { - ase_char_t** tmp; - tmp = (ase_char_t**) realloc (isf, ASE_SIZEOF(*isf)*(isfc+16)); - if (tmp == ASE_NULL) + qse_char_t** tmp; + tmp = (qse_char_t**) realloc (isf, QSE_SIZEOF(*isf)*(isfc+16)); + if (tmp == QSE_NULL) { out_of_memory (); ABORT (oops); @@ -353,30 +353,30 @@ static int handle_args (int argc, ase_char_t* argv[], struct argout_t* ao) break; } - case ASE_T('F'): + case QSE_T('F'): { - ase_printf (ASE_T("[field separator] = %s\n"), opt.arg); + qse_printf (QSE_T("[field separator] = %s\n"), opt.arg); break; } - case ASE_T('o'): + case QSE_T('o'): { osf = opt.arg; break; } - case ASE_T('v'): + case QSE_T('v'): { - ase_char_t* eq = ase_strchr(opt.arg, ASE_T('=')); - if (eq == ASE_NULL) + qse_char_t* eq = qse_strchr(opt.arg, QSE_T('=')); + if (eq == QSE_NULL) { /* INVALID VALUE... */ ABORT (oops); } - *eq = ASE_T('\0'); + *eq = QSE_T('\0'); - if (ase_map_upsert (vm, opt.arg, ase_strlen(opt.arg)+1, eq, ase_strlen(eq)+1) == ASE_NULL) + if (qse_map_upsert (vm, opt.arg, qse_strlen(opt.arg)+1, eq, qse_strlen(eq)+1) == QSE_NULL) { out_of_memory (); ABORT (oops); @@ -384,29 +384,29 @@ static int handle_args (int argc, ase_char_t* argv[], struct argout_t* ao) break; } - case ASE_T('?'): + case QSE_T('?'): { if (opt.lngopt) { - ase_printf (ASE_T("Error: illegal option - %s\n"), opt.lngopt); + qse_printf (QSE_T("Error: illegal option - %s\n"), opt.lngopt); } else { - ase_printf (ASE_T("Error: illegal option - %c\n"), opt.opt); + qse_printf (QSE_T("Error: illegal option - %c\n"), opt.opt); } ABORT (oops); } - case ASE_T(':'): + case QSE_T(':'): { if (opt.lngopt) { - ase_printf (ASE_T("Error: bad argument for %s\n"), opt.lngopt); + qse_printf (QSE_T("Error: bad argument for %s\n"), opt.lngopt); } else { - ase_printf (ASE_T("Error: bad argument for %c\n"), opt.opt); + qse_printf (QSE_T("Error: bad argument for %c\n"), opt.opt); } ABORT (oops); @@ -417,7 +417,7 @@ static int handle_args (int argc, ase_char_t* argv[], struct argout_t* ao) } } - isf[isfl] = ASE_NULL; + isf[isfl] = QSE_NULL; if (isfl <= 0) { @@ -428,19 +428,19 @@ static int handle_args (int argc, ase_char_t* argv[], struct argout_t* ao) } /* the source code is the string, not from the file */ - ao->ist = ASE_AWK_PARSE_STRING; + ao->ist = QSE_AWK_PARSE_STRING; ao->isp = argv[opt.ind++]; } else { - ao->ist = ASE_AWK_PARSE_FILES; + ao->ist = QSE_AWK_PARSE_FILES; ao->isp = isf; } /* the remaining arguments are input console file names */ icfc = (opt.ind >= argc)? 2: (argc - opt.ind + 1); - icf = (ase_char_t**) malloc (ASE_SIZEOF(*icf)*icfc); - if (icf == ASE_NULL) + icf = (qse_char_t**) malloc (QSE_SIZEOF(*icf)*icfc); + if (icf == QSE_NULL) { out_of_memory (); ABORT (oops); @@ -450,13 +450,13 @@ static int handle_args (int argc, ase_char_t* argv[], struct argout_t* ao) { /* no input(console) file names are specified. * the standard input becomes the input console */ - icf[icfl++] = ASE_T(""); + icf[icfl++] = QSE_T(""); } else { do { icf[icfl++] = argv[opt.ind++]; } while (opt.ind < argc); } - icf[icfl] = ASE_NULL; + icf[icfl] = QSE_NULL; ao->osf = osf; ao->icf = icf; @@ -466,64 +466,64 @@ static int handle_args (int argc, ase_char_t* argv[], struct argout_t* ao) return 0; oops: - if (vm != ASE_NULL) ase_map_close (vm); - if (icf != ASE_NULL) free (icf); - if (isf != ASE_NULL) free (isf); + if (vm != QSE_NULL) qse_map_close (vm); + if (icf != QSE_NULL) free (icf); + if (isf != QSE_NULL) free (isf); return -1; } -static ase_awk_t* open_awk (void) +static qse_awk_t* open_awk (void) { - ase_awk_t* awk; + qse_awk_t* awk; - awk = ase_awk_opensimple (0); - if (awk == ASE_NULL) + awk = qse_awk_opensimple (0); + if (awk == QSE_NULL) { - ase_printf (ASE_T("ERROR: cannot open awk\n")); - return ASE_NULL; + qse_printf (QSE_T("ERROR: cannot open awk\n")); + return QSE_NULL; } /* TODO: get depth from command line */ - ase_awk_setmaxdepth ( - awk, ASE_AWK_DEPTH_BLOCK_PARSE | ASE_AWK_DEPTH_EXPR_PARSE, 50); - ase_awk_setmaxdepth ( - awk, ASE_AWK_DEPTH_BLOCK_RUN | ASE_AWK_DEPTH_EXPR_RUN, 500); + qse_awk_setmaxdepth ( + awk, QSE_AWK_DEPTH_BLOCK_PARSE | QSE_AWK_DEPTH_EXPR_PARSE, 50); + qse_awk_setmaxdepth ( + awk, QSE_AWK_DEPTH_BLOCK_RUN | QSE_AWK_DEPTH_EXPR_RUN, 500); /* - ase_awk_seterrstr (awk, ASE_AWK_EGBLRED, - ASE_T("\uC804\uC5ED\uBCC0\uC218 \'%.*s\'\uAC00 \uC7AC\uC815\uC758 \uB418\uC5C8\uC2B5\uB2C8\uB2E4")); - ase_awk_seterrstr (awk, ASE_AWK_EAFNRED, - ASE_T("\uD568\uC218 \'%.*s\'\uAC00 \uC7AC\uC815\uC758 \uB418\uC5C8\uC2B5\uB2C8\uB2E4")); + qse_awk_seterrstr (awk, QSE_AWK_EGBLRED, + QSE_T("\uC804\uC5ED\uBCC0\uC218 \'%.*s\'\uAC00 \uC7AC\uC815\uC758 \uB418\uC5C8\uC2B5\uB2C8\uB2E4")); + qse_awk_seterrstr (awk, QSE_AWK_EAFNRED, + QSE_T("\uD568\uC218 \'%.*s\'\uAC00 \uC7AC\uC815\uC758 \uB418\uC5C8\uC2B5\uB2C8\uB2E4")); */ - /*ase_awk_setkeyword (awk, ASE_T("func"), 4, ASE_T("FX"), 2);*/ + /*qse_awk_setkeyword (awk, QSE_T("func"), 4, QSE_T("FX"), 2);*/ - if (ase_awk_addfunc (awk, - ASE_T("sleep"), 5, 0, - 1, 1, ASE_NULL, bfn_sleep) == ASE_NULL) + if (qse_awk_addfunc (awk, + QSE_T("sleep"), 5, 0, + 1, 1, QSE_NULL, bfn_sleep) == QSE_NULL) { - ase_awk_close (awk); - ase_printf (ASE_T("ERROR: cannot add function 'sleep'\n")); - return ASE_NULL; + qse_awk_close (awk); + qse_printf (QSE_T("ERROR: cannot add function 'sleep'\n")); + return QSE_NULL; } return awk; } -static int awk_main (int argc, ase_char_t* argv[]) +static int awk_main (int argc, qse_char_t* argv[]) { - ase_awk_t* awk; + qse_awk_t* awk; - ase_awk_runcbs_t runcbs; + qse_awk_runcbs_t runcbs; int i, file_count = 0; - const ase_char_t* mfn = ASE_NULL; + const qse_char_t* mfn = QSE_NULL; int mode = 0; int runarg_count = 0; - ase_awk_runarg_t runarg[128]; + qse_awk_runarg_t runarg[128]; int deparse = 0; struct argout_t ao; - ase_memset (&ao, 0, ASE_SIZEOF(ao)); + qse_memset (&ao, 0, QSE_SIZEOF(ao)); i = handle_args (argc, argv, &ao); if (i == -1) @@ -537,20 +537,20 @@ static int awk_main (int argc, ase_char_t* argv[]) runarg[runarg_count].len = 0; awk = open_awk (); - if (awk == ASE_NULL) return -1; + if (awk == QSE_NULL) return -1; app_awk = awk; - if (ase_awk_parsesimple (awk, ao.isp, ao.ist, ao.osf) == -1) + if (qse_awk_parsesimple (awk, ao.isp, ao.ist, ao.osf) == -1) { - ase_printf ( - ASE_T("PARSE ERROR: CODE [%d] LINE [%u] %s\n"), - ase_awk_geterrnum(awk), - (unsigned int)ase_awk_geterrlin(awk), - ase_awk_geterrmsg(awk) + qse_printf ( + QSE_T("PARSE ERROR: CODE [%d] LINE [%u] %s\n"), + qse_awk_geterrnum(awk), + (unsigned int)qse_awk_geterrlin(awk), + qse_awk_geterrmsg(awk) ); - ase_awk_close (awk); + qse_awk_close (awk); return -1; } @@ -564,32 +564,32 @@ static int awk_main (int argc, ase_char_t* argv[]) runcbs.on_statement = on_run_statement; runcbs.on_return = on_run_return; runcbs.on_end = on_run_end; - runcbs.data = ASE_NULL; + runcbs.data = QSE_NULL; - if (ase_awk_runsimple (awk, ao.icf, &runcbs) == -1) + if (qse_awk_runsimple (awk, ao.icf, &runcbs) == -1) { - ase_printf ( - ASE_T("RUN ERROR: CODE [%d] LINE [%u] %s\n"), - ase_awk_geterrnum(awk), - (unsigned int)ase_awk_geterrlin(awk), - ase_awk_geterrmsg(awk) + qse_printf ( + QSE_T("RUN ERROR: CODE [%d] LINE [%u] %s\n"), + qse_awk_geterrnum(awk), + (unsigned int)qse_awk_geterrlin(awk), + qse_awk_geterrmsg(awk) ); - ase_awk_close (awk); + qse_awk_close (awk); return -1; } - ase_awk_close (awk); + qse_awk_close (awk); - if (ao.ist == ASE_AWK_PARSE_FILES && ao.isp != ASE_NULL) free (ao.isp); - if (ao.osf != ASE_NULL) free (ao.osf); - if (ao.icf != ASE_NULL) free (ao.icf); - if (ao.vm != ASE_NULL) ase_map_close (ao.vm); + if (ao.ist == QSE_AWK_PARSE_FILES && ao.isp != QSE_NULL) free (ao.isp); + if (ao.osf != QSE_NULL) free (ao.osf); + if (ao.icf != QSE_NULL) free (ao.icf); + if (ao.vm != QSE_NULL) qse_map_close (ao.vm); return 0; } -int ase_main (int argc, ase_achar_t* argv[]) +int qse_main (int argc, qse_achar_t* argv[]) { int n; @@ -597,7 +597,7 @@ int ase_main (int argc, ase_achar_t* argv[]) _CrtSetDbgFlag (_CRTDBG_LEAK_CHECK_DF | _CRTDBG_ALLOC_MEM_DF); #endif - n = ase_runmain (argc, argv, awk_main); + n = qse_runmain (argc, argv, awk_main); #if defined(_WIN32) && defined(_DEBUG) /*#if defined(_MSC_VER) diff --git a/qse/cmd/awk/descrip.mms b/qse/cmd/awk/descrip.mms deleted file mode 100644 index e8da0186..00000000 --- a/qse/cmd/awk/descrip.mms +++ /dev/null @@ -1,13 +0,0 @@ -# -# OpenVMS MMS/MMK -# - -objects = awk.obj - -CFLAGS = /include="../../.." -#CFLAGS = /pointer_size=long /include="../../.." - -aseawk.exe : $(objects) - link /executable=aseawk.exe $(objects),[-.-.awk]aseawk/library,[-.-.utl]aseutl/library,[-.-.cmn]asecmn/library - -awk.obj depends_on awk.c diff --git a/qse/cmd/awk/makefile.in b/qse/cmd/awk/makefile.in index d44b853e..d2a7994b 100644 --- a/qse/cmd/awk/makefile.in +++ b/qse/cmd/awk/makefile.in @@ -41,7 +41,7 @@ am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/include/ase/config.h +CONFIG_HEADER = $(top_builddir)/include/qse/config.h CONFIG_CLEAN_FILES = @ENABLE_CXX_TRUE@am__EXEEXT_1 = aseawk++$(EXEEXT) am__installdirs = "$(DESTDIR)$(bindir)" @@ -61,7 +61,7 @@ aseawk___OBJECTS = $(am_aseawk___OBJECTS) aseawk___LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(aseawk___LDFLAGS) $(LDFLAGS) -o $@ -DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include/ase +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include/qse depcomp = $(SHELL) $(top_srcdir)/autoconf/depcomp am__depfiles_maybe = depfiles COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ diff --git a/qse/cmd/awk/manifest b/qse/cmd/awk/manifest index 73fc04a3..1f820fc1 100644 --- a/qse/cmd/awk/manifest +++ b/qse/cmd/awk/manifest @@ -1 +1 @@ -Main-Class: AseAwk +Main-Class: QseAwk diff --git a/qse/cmd/awk/msw-bcc.mak b/qse/cmd/awk/msw-bcc.mak deleted file mode 100644 index b0c754aa..00000000 --- a/qse/cmd/awk/msw-bcc.mak +++ /dev/null @@ -1,115 +0,0 @@ - -# ilink32.exe link.exe -# -aa /subsystem:windows -# -ap /subsystem:console -# -ad /subsystem:native -# -# -Tpe -# -Tpd /dll -NAME = aseawk - -!ifndef MODE -MODE = release -!endif - -CC = bcc32 -CXX = bcc32 -LD = ilink32 -JAVAC = javac -JAR = jar - -CFLAGS = -WM -WU -RT- -w -q -I..\..\.. -CXXFLAGS = -WM -WU -RT- -w -q -I..\..\.. -LDFLAGS = -ap -Tpe -Gn -c -q -L..\..\$(MODE)\lib -L\progra~1\borland\bds\4.0\lib -LIBS = asecmn.lib aseawk.lib aseutl.lib import32.lib cw32mt.lib -LIBS_CXX = $(LIBS) "aseawk++.lib" -STARTUP = c0x32w.obj - -JAVACFLAGS = -classpath ..\..\$(MODE)\lib\aseawk.jar;. -Xlint:unchecked - -OUT_DIR = ..\..\$(MODE)\bin -OUT_FILE_BIN = $(OUT_DIR)\$(NAME).exe -OUT_FILE_BIN_CXX = "$(OUT_DIR)\$(NAME)++.exe" -OUT_FILE_JAR = $(OUT_DIR)\$(NAME).jar - -TMP_DIR = $(MODE) -TMP_DIR_CXX = $(TMP_DIR)\cxx -TMP_DIR_JAR = $(TMP_DIR)\java - -OBJ_FILES_BIN = $(TMP_DIR)\awk.obj -OBJ_FILES_BIN_CXX = $(TMP_DIR_CXX)\Awk.obj - -OBJ_FILES_JAR = \ - $(TMP_DIR_JAR)\AseAwk.class \ - $(TMP_DIR_JAR)\AseAwkPanel.class \ - $(TMP_DIR_JAR)\AseAwkApplet.class - -TARGETS = bin - -!if "$(JAVA_HOME)" != "" -TARGETS = $(TARGETS) jar -!endif - -!IF "$(MODE)" == "debug" -CFLAGS = $(CFLAGS) -D_DEBUG -DDEBUG -CXXFLAGS = $(CXXFLAGS) -D_DEBUG -DDEBUG -!ELSEIF "$(MODE)" == "release" -CFLAGS = $(CFLAGS) -DNDEBUG -O2 -CXXFLAGS = $(CXXFLAGS) -DNDEBUG -O2 -!ELSE -CFLAGS = $(CFLAGS) -CXXFLAGS = $(CXXFLAGS) -!ENDIF - -all: $(TARGETS) - -bin: $(OUT_FILE_BIN) $(OUT_FILE_BIN_CXX) - -jar: $(OUT_FILE_JAR) - -$(OUT_FILE_BIN): $(TMP_DIR) $(OUT_DIR) $(OBJ_FILES_BIN) - $(LD) $(LDFLAGS) $(STARTUP) $(OBJ_FILES_BIN),$@,,$(LIBS),, - -$(OUT_FILE_BIN_CXX): $(TMP_DIR_CXX) $(OUT_FILE_BIN) $(OBJ_FILES_BIN_CXX) - $(LD) $(LDFLAGS) $(STARTUP) $(OBJ_FILES_BIN_CXX),$@,,$(LIBS_CXX),, - -$(OUT_FILE_JAR): $(TMP_DIR_JAR) $(OBJ_FILES_JAR) - $(JAR) -xvf ..\..\$(MODE)\lib\aseawk.jar - $(JAR) -cvfm $(OUT_FILE_JAR) manifest ase -C $(TMP_DIR_JAR) . - -$(TMP_DIR)\awk.obj: awk.c - $(CC) $(CFLAGS) -o$@ -c awk.c - -$(TMP_DIR_CXX)\Awk.obj: Awk.cpp - $(CC) $(CXXFLAGS) -o$@ -c Awk.cpp - -$(TMP_DIR_JAR)\AseAwk.class: AseAwk.java - $(JAVAC) $(JAVACFLAGS) -d $(TMP_DIR_JAR) AseAwk.java - -$(TMP_DIR_JAR)\AseAwkApplet.class: AseAwkApplet.java - $(JAVAC) $(JAVACFLAGS) -d $(TMP_DIR_JAR) AseAwkApplet.java - -$(TMP_DIR_JAR)\AseAwkPanel.class: AseAwkPanel.java - $(JAVAC) $(JAVACFLAGS) -d $(TMP_DIR_JAR) AseAwkPanel.java - -$(OUT_DIR): - -md $(OUT_DIR) - -$(TMP_DIR): - -md $(TMP_DIR) - -$(TMP_DIR_CXX): $(TMP_DIR) - -md $(TMP_DIR_CXX) - -$(TMP_DIR_JAR): $(TMP_DIR) - -md $(TMP_DIR_JAR) - -clean: - -del $(OUT_FILE_BIN) - -del $(OUT_FILE_BIN_CXX) - -del $(OBJ_FILES_BIN) - -del $(OBJ_FILES_BIN_CXX) - -del $(OUT_FILE_JAR) - -del $(OBJ_FILES_JAR) - -del $(TMP_DIR)\*.class - diff --git a/qse/cmd/awk/msw-cl.mak b/qse/cmd/awk/msw-cl.mak deleted file mode 100644 index e30a910e..00000000 --- a/qse/cmd/awk/msw-cl.mak +++ /dev/null @@ -1,118 +0,0 @@ -NAME = aseawk -MODE = release - -CC = cl -CXX = cl -LD = link -JAVAC = javac -JAR = jar - -CFLAGS = /nologo /W3 -I..\..\.. -CXXFLAGS = /nologo /W3 -I..\..\.. -JAVACFLAGS = -classpath ..\..\$(MODE)\lib\aseawk.jar;. -Xlint:unchecked - -LDFLAGS = /libpath:..\..\$(MODE)\lib -LIBS = asecmn.lib aseawk.lib aseutl.lib kernel32.lib user32.lib -LIBS_CXX = $(LIBS) aseawk++.lib - -!IF "$(MODE)" == "debug" -CFLAGS = $(CFLAGS) -D_DEBUG -DDEBUG /MTd /Zi -CXXFLAGS = $(CXXFLAGS) -D_DEBUG -DDEBUG /MTd /Zi -!ELSEIF "$(MODE)" == "release" -CFLAGS = $(CFLAGS) -DNDEBUG /MT /O2 -CXXFLAGS = $(CXXFLAGS) -DNDEBUG /MT /O2 -!ELSE -CFLAGS = $(CFLAGS) /MT -CXXFLAGS = $(CXXFLAGS) /MT -!ENDIF - -!if !defined(CPU) || "$(CPU)" == "" -CPU = $(PROCESSOR_ARCHITECTURE) -!endif - -!if "$(CPU)" == "" -CPU = i386 -!endif - -!if "$(CPU)" == "IA64" || "$(CPU)" == "AMD64" -# comment out the following line if you encounter this link error. -# LINK : fatal error LNK1181: cannot open input file 'bufferoverflowu.lib' -LIBS = $(LIBS) bufferoverflowu.lib -!endif - -OUT_DIR = ..\..\$(MODE)\bin -OUT_FILE_BIN = $(OUT_DIR)\$(NAME).exe -OUT_FILE_BIN_CXX = $(OUT_DIR)\$(NAME)++.exe -OUT_FILE_JAR = $(OUT_DIR)\$(NAME).jar - -TMP_DIR = $(MODE) -TMP_DIR_CXX = $(TMP_DIR)\cxx -TMP_DIR_JAR = $(TMP_DIR)\java - -OBJ_FILES_BIN = $(TMP_DIR)\awk.obj -OBJ_FILES_BIN_CXX = $(TMP_DIR_CXX)\Awk.obj - -OBJ_FILES_JAR = \ - $(TMP_DIR_JAR)\AseAwk.class \ - $(TMP_DIR_JAR)\AseAwkPanel.class \ - $(TMP_DIR_JAR)\AseAwkApplet.class - -TARGETS = bin - -!if "$(JAVA_HOME)" != "" -TARGETS = $(TARGETS) jar -!endif - - -all: $(TARGETS) - -bin: $(OUT_FILE_BIN) $(OUT_FILE_BIN_CXX) - -jar: $(OUT_FILE_JAR) - - -$(OUT_FILE_BIN): $(TMP_DIR) $(OUT_DIR) $(OBJ_FILES_BIN) - $(LD) /nologo /out:$@ $(LDFLAGS) $(LIBS) $(OBJ_FILES_BIN) - -$(OUT_FILE_BIN_CXX): $(TMP_DIR_CXX) $(OUT_FILE_BIN) $(OBJ_FILES_BIN_CXX) - $(LD) /nologo /out:$@ $(LDFLAGS) $(LIBS_CXX) $(OBJ_FILES_BIN_CXX) - -$(OUT_FILE_JAR): $(TMP_DIR_JAR) $(OBJ_FILES_JAR) - $(JAR) -xvf ..\..\$(MODE)\lib\aseawk.jar - $(JAR) -cvfm $(OUT_FILE_JAR) manifest ase -C $(TMP_DIR_JAR) . - -$(TMP_DIR)\awk.obj: awk.c - $(CC) $(CFLAGS) /Fo$@ /c awk.c - -$(TMP_DIR_CXX)\Awk.obj: Awk.cpp - $(CC) $(CXXFLAGS) /Fo$@ /c Awk.cpp - -$(TMP_DIR_JAR)\AseAwk.class: AseAwk.java - $(JAVAC) $(JAVACFLAGS) -d $(TMP_DIR_JAR) AseAwk.java - -$(TMP_DIR_JAR)\AseAwkApplet.class: AseAwkApplet.java - $(JAVAC) $(JAVACFLAGS) -d $(TMP_DIR_JAR) AseAwkApplet.java - -$(TMP_DIR_JAR)\AseAwkPanel.class: AseAwkPanel.java - $(JAVAC) $(JAVACFLAGS) -d $(TMP_DIR_JAR) AseAwkPanel.java - -$(OUT_DIR): - -md $(OUT_DIR) - -$(TMP_DIR): - -md $(TMP_DIR) - -$(TMP_DIR_CXX): $(TMP_DIR) - -md $(TMP_DIR_CXX) - -$(TMP_DIR_JAR): $(TMP_DIR) - -md $(TMP_DIR_JAR) - -clean: - -del $(OUT_FILE_BIN) - -del $(OUT_FILE_BIN_CXX) - -del $(OBJ_FILES_BIN) - -del $(OBJ_FILES_BIN_CXX) - -del $(OUT_FILE_JAR) - -del $(OBJ_FILES_JAR) - -del $(TMP_DIR)\*.class diff --git a/qse/cmd/com/Awk.cs b/qse/cmd/com/Awk.cs deleted file mode 100644 index 58b1e7fc..00000000 --- a/qse/cmd/com/Awk.cs +++ /dev/null @@ -1,420 +0,0 @@ -/* - * $Id: Awk.cs,v 1.4 2007/09/30 15:12:20 bacon Exp $ - */ - -using System; -using System.Collections.Generic; -using System.Text; -using System.IO; - -using COM = System.Runtime.InteropServices.ComTypes; - -namespace ase.com -{ - public class Awk : ASECOM.IAwkEvents - { - private ASECOM.Awk awk; - - private int cookie = -1; - private COM.IConnectionPoint icp; - - private Stream sourceInputStream = null; - private Stream sourceOutputStream = null; - private StreamReader sourceInputReader; - private StreamWriter sourceOutputWriter; - - private Stream consoleInputStream = null; - private Stream consoleOutputStream = null; - private StreamReader consoleInputReader; - private StreamWriter consoleOutputWriter; - - public delegate object FunctionHandler (object[] args); - private System.Collections.Hashtable funcTable; - - char[] consoleInputBuffer = new char[1024]; - - public Awk() - { - this.funcTable = new System.Collections.Hashtable(); - - this.awk = new ASECOM.Awk(); - this.awk.UseLongLong = true; - //this.awk.UseCrlf = true; - - COM.IConnectionPointContainer icpc = - (COM.IConnectionPointContainer)awk; - Guid g = typeof(ASECOM.IAwkEvents).GUID; - - try - { - icpc.FindConnectionPoint(ref g, out icp); - icp.Advise(this, out this.cookie); - } - catch (System.Runtime.InteropServices.COMException) - { - this.cookie = -1; - //System.Windows.Forms.MessageBox.Show(ex.Message); - } - } - - /*~Awk() - { - if (cookie != -1 && icp != null) - { - try - { - icp.Unadvise(cookie); - cookie = -1; - } - catch (System.Runtime.InteropServices.COMException ex) - { - System.Windows.Forms.MessageBox.Show(ex.Message); - } - } - }*/ - - public int ErrorCode - { - get { return awk.ErrorCode; } - } - - public int ErrorLine - { - get { return awk.ErrorLine; } - } - - public string ErrorMessage - { - get { return awk.ErrorMessage; } - } - - public bool ImplicitVariable - { - get { return awk.ImplicitVariable; } - set { awk.ImplicitVariable = value; } - } - - public bool ExplicitVariable - { - get { return awk.ExplicitVariable; } - set { awk.ExplicitVariable = value; } - } - - public bool ShiftOperators - { - get { return awk.ShiftOperators; } - set { awk.ShiftOperators = value; } - } - - public bool IdivOperator - { - get { return awk.IdivOperator; } - set { awk.IdivOperator = value; } - } - - public bool ConcatString - { - get { return awk.ConcatString; } - set { awk.ConcatString = value; } - } - - public bool SupportExtio - { - get { return awk.SupportExtio; } - set { awk.SupportExtio = value; } - } - - public bool SupportBlockless - { - get { return awk.SupportBlockless; } - set { awk.SupportBlockless = value; } - } - - public bool BaseOne - { - get { return awk.BaseOne; } - set { awk.BaseOne = value; } - } - - public bool StripSpaces - { - get { return awk.StripSpaces; } - set { awk.StripSpaces = value; } - } - - public bool EnableNextofile - { - get { return awk.EnableNextofile; } - set { awk.EnableNextofile = value; } - } - - public bool Usecrlf - { - get { return awk.UseCrlf; } - set { awk.UseCrlf = value; } - } - - public bool EnableReset - { - get { return awk.EnableReset; } - set { awk.EnableReset = value; } - } - - public bool AllowMapToVar - { - get { return awk.AllowMapToVar; } - set { awk.AllowMapToVar = value; } - } - - public string EntryPoint - { - get { return awk.EntryPoint; } - set { awk.EntryPoint = value; } - } - - public bool ArgumentsToEntryPoint - { - get { return awk.ArgumentsToEntryPoint; } - set { awk.ArgumentsToEntryPoint = value; } - } - - public bool Debug - { - get { return awk.Debug; } - set { awk.Debug = value; } - } - - /* this property doesn't need to be available to the public - * as it can be always true in .NET environment. However, - * it is kept private here for reference */ - private bool UseLongLong - { - get { return awk.UseLongLong; } - set { awk.UseLongLong = value; } - } - - public int MaxDepthForBlockParse - { - get { return awk.MaxDepthForBlockParse; } - set { awk.MaxDepthForBlockParse = value; } - } - - public int MaxDepthForBlockRun - { - get { return awk.MaxDepthForBlockRun; } - set { awk.MaxDepthForBlockRun = value; } - } - - public int MaxDepthForExprParse - { - get { return awk.MaxDepthForExprParse; } - set { awk.MaxDepthForExprParse = value; } - } - - public int MaxDepthForExprRun - { - get { return awk.MaxDepthForExprRun; } - set { awk.MaxDepthForExprRun = value; } - } - - public int MaxDepthForRexBuild - { - get { return awk.MaxDepthForRexBuild; } - set { awk.MaxDepthForRexBuild = value; } - } - - public int MaxDepthForRexMatch - { - get { return awk.MaxDepthForRexMatch; } - set { awk.MaxDepthForRexMatch = value; } - } - - public virtual bool AddFunction(string name, int minArgs, int maxArgs, FunctionHandler handler) - { - if (funcTable.ContainsKey(name)) return false; - - funcTable.Add(name, handler); - if (!awk.AddFunction(name, minArgs, maxArgs)) - { - funcTable.Remove(name); - return false; - } - - return true; - } - - public virtual bool DeleteFunction(string name) - { - if (!funcTable.ContainsKey(name)) return false; - - if (awk.DeleteFunction(name)) - { - funcTable.Remove(name); - return true; - } - - return false; - } - - public virtual bool Parse() - { - return awk.Parse(); - } - - public virtual bool Run () - { - return awk.Run(null); - } - - public virtual bool Run(string[] args) - { - return awk.Run(args); - } - - public Stream SourceInputStream - { - get { return this.sourceInputStream; } - set { this.sourceInputStream = value; } - } - - public Stream SourceOutputStream - { - get { return this.sourceOutputStream; } - set { this.sourceOutputStream = value; } - } - - public Stream ConsoleInputStream - { - get { return this.consoleInputStream; } - set { this.consoleInputStream = value; } - } - - public Stream ConsoleOutputStream - { - get { return this.consoleOutputStream; } - set { this.consoleOutputStream = value; } - } - - public virtual int OpenSource(ASECOM.AwkSourceMode mode) - { - if (mode == ASECOM.AwkSourceMode.AWK_SOURCE_READ) - { - if (this.sourceInputStream == null) return 0; - this.sourceInputReader = new StreamReader (this.sourceInputStream); - return 1; - } - else if (mode == ASECOM.AwkSourceMode.AWK_SOURCE_WRITE) - { - if (this.sourceOutputStream == null) return 0; - this.sourceOutputWriter = new StreamWriter (this.sourceOutputStream); - return 1; - } - - return -1; - } - - public virtual int CloseSource(ASECOM.AwkSourceMode mode) - { - if (mode == ASECOM.AwkSourceMode.AWK_SOURCE_READ) - { - this.sourceInputReader.Close (); - return 0; - } - else if (mode == ASECOM.AwkSourceMode.AWK_SOURCE_WRITE) - { - this.sourceOutputWriter.Close (); - return 0; - } - - return -1; - } - - public virtual int ReadSource(ASECOM.Buffer buf) - { - buf.Value = this.sourceInputReader.ReadLine(); - if (buf.Value == null) return 0; - return buf.Value.Length; - } - - public virtual int WriteSource(ASECOM.Buffer buf) - { - this.sourceOutputWriter.Write(buf.Value); - return buf.Value.Length; - } - - public virtual int OpenExtio(ASECOM.AwkExtio extio) - { - if (extio.Mode == ASECOM.AwkExtioMode.AWK_EXTIO_CONSOLE_READ) - { - if (this.consoleInputStream == null) return 0; - this.consoleInputReader = new StreamReader(this.consoleInputStream); - return 1; - } - else if (extio.Mode == ASECOM.AwkExtioMode.AWK_EXTIO_CONSOLE_WRITE) - { - if (this.consoleOutputStream == null) return 0; - this.consoleOutputWriter = new StreamWriter(this.consoleOutputStream); - return 1; - } - - return -1; - } - - public virtual int CloseExtio(ASECOM.AwkExtio extio) - { - if (extio.Mode == ASECOM.AwkExtioMode.AWK_EXTIO_CONSOLE_READ) - { - this.consoleInputReader.Close(); - return 0; - } - else if (extio.Mode == ASECOM.AwkExtioMode.AWK_EXTIO_CONSOLE_WRITE) - { - this.consoleOutputWriter.Close(); - return 0; - } - - return -1; - } - - public virtual int ReadExtio(ASECOM.AwkExtio extio, ASECOM.Buffer buf) - { - if (extio.Mode == ASECOM.AwkExtioMode.AWK_EXTIO_CONSOLE_READ) - { - int n = this.consoleInputReader.Read(consoleInputBuffer, 0, consoleInputBuffer.Length); - if (n == 0) return 0; - buf.Value = new string(consoleInputBuffer, 0, n); - return buf.Value.Length; - } - - return -1; - } - - public virtual int WriteExtio(ASECOM.AwkExtio extio, ASECOM.Buffer buf) - { - if (extio.Mode == ASECOM.AwkExtioMode.AWK_EXTIO_CONSOLE_WRITE) - { - this.consoleOutputWriter.Write(buf.Value); - return buf.Value.Length; - } - - return -1; - } - - public virtual int FlushExtio(ASECOM.AwkExtio extio) - { - return -1; - } - - public virtual int NextExtio(ASECOM.AwkExtio extio) - { - return 1; - } - - public virtual object HandleFunction(string name, object argarray) - { - FunctionHandler handler = (FunctionHandler)funcTable[name]; - return handler((object[])argarray); - } - - } -} diff --git a/qse/cmd/com/AwkExtioConsole.cls b/qse/cmd/com/AwkExtioConsole.cls deleted file mode 100644 index e50d409a..00000000 --- a/qse/cmd/com/AwkExtioConsole.cls +++ /dev/null @@ -1,32 +0,0 @@ -VERSION 1.0 CLASS -BEGIN - MultiUse = -1 'True - Persistable = 0 'NotPersistable - DataBindingBehavior = 0 'vbNone - DataSourceBehavior = 0 'vbNone - MTSTransactionMode = 0 'NotAnMTSObject -END -Attribute VB_Name = "AwkExtioConsole" -Attribute VB_GlobalNameSpace = False -Attribute VB_Creatable = True -Attribute VB_PredeclaredId = False -Attribute VB_Exposed = False -Private m_eof As Boolean - -Private Sub Class_Initialize() - m_eof = False - 'MsgBox "AwkExtio Initializeing" -End Sub - -Private Sub Class_Terminate() - 'MsgBox "AwkExtio Terminating..." -End Sub - -Public Property Let EOF(v As Boolean) - m_eof = v -End Property - -Public Property Get EOF() As Boolean - EOF = m_eof -End Property - diff --git a/qse/cmd/com/AwkForm.Designer.cs b/qse/cmd/com/AwkForm.Designer.cs deleted file mode 100644 index cdc0a755..00000000 --- a/qse/cmd/com/AwkForm.Designer.cs +++ /dev/null @@ -1,381 +0,0 @@ -namespace ase.com -{ - partial class AwkForm - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - this.tbxSourceInput = new System.Windows.Forms.TextBox(); - this.btnRun = new System.Windows.Forms.Button(); - this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); - this.panel1 = new System.Windows.Forms.Panel(); - this.label1 = new System.Windows.Forms.Label(); - this.panel3 = new System.Windows.Forms.Panel(); - this.tbxSourceOutput = new System.Windows.Forms.TextBox(); - this.label2 = new System.Windows.Forms.Label(); - this.panel4 = new System.Windows.Forms.Panel(); - this.tbxConsoleInput = new System.Windows.Forms.TextBox(); - this.label3 = new System.Windows.Forms.Label(); - this.panel5 = new System.Windows.Forms.Panel(); - this.tbxConsoleOutput = new System.Windows.Forms.TextBox(); - this.label4 = new System.Windows.Forms.Label(); - this.statusStrip1 = new System.Windows.Forms.StatusStrip(); - this.cbxEntryPoint = new System.Windows.Forms.ComboBox(); - this.panel2 = new System.Windows.Forms.Panel(); - this.groupBox2 = new System.Windows.Forms.GroupBox(); - this.groupBox1 = new System.Windows.Forms.GroupBox(); - this.chkPassArgumentsToEntryPoint = new System.Windows.Forms.CheckBox(); - this.btnClearAllArguments = new System.Windows.Forms.Button(); - this.btnAddArgument = new System.Windows.Forms.Button(); - this.tbxArgument = new System.Windows.Forms.TextBox(); - this.lbxArguments = new System.Windows.Forms.ListBox(); - this.tableLayoutPanel1.SuspendLayout(); - this.panel1.SuspendLayout(); - this.panel3.SuspendLayout(); - this.panel4.SuspendLayout(); - this.panel5.SuspendLayout(); - this.panel2.SuspendLayout(); - this.groupBox2.SuspendLayout(); - this.groupBox1.SuspendLayout(); - this.SuspendLayout(); - // - // tbxSourceInput - // - this.tbxSourceInput.Dock = System.Windows.Forms.DockStyle.Fill; - this.tbxSourceInput.Location = new System.Drawing.Point(0, 19); - this.tbxSourceInput.Multiline = true; - this.tbxSourceInput.Name = "tbxSourceInput"; - this.tbxSourceInput.ScrollBars = System.Windows.Forms.ScrollBars.Both; - this.tbxSourceInput.Size = new System.Drawing.Size(240, 230); - this.tbxSourceInput.TabIndex = 1; - this.tbxSourceInput.WordWrap = false; - // - // btnRun - // - this.btnRun.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.btnRun.Location = new System.Drawing.Point(78, 302); - this.btnRun.Name = "btnRun"; - this.btnRun.Size = new System.Drawing.Size(75, 23); - this.btnRun.TabIndex = 2; - this.btnRun.Text = "Run"; - this.btnRun.UseVisualStyleBackColor = true; - this.btnRun.Click += new System.EventHandler(this.btnRun_Click); - // - // tableLayoutPanel1 - // - this.tableLayoutPanel1.ColumnCount = 2; - this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); - this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); - this.tableLayoutPanel1.Controls.Add(this.panel1, 0, 0); - this.tableLayoutPanel1.Controls.Add(this.panel3, 1, 0); - this.tableLayoutPanel1.Controls.Add(this.panel4, 0, 1); - this.tableLayoutPanel1.Controls.Add(this.panel5, 1, 1); - this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill; - this.tableLayoutPanel1.Location = new System.Drawing.Point(157, 0); - this.tableLayoutPanel1.Name = "tableLayoutPanel1"; - this.tableLayoutPanel1.RowCount = 2; - this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F)); - this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F)); - this.tableLayoutPanel1.Size = new System.Drawing.Size(492, 510); - this.tableLayoutPanel1.TabIndex = 2; - // - // panel1 - // - this.panel1.Controls.Add(this.tbxSourceInput); - this.panel1.Controls.Add(this.label1); - this.panel1.Dock = System.Windows.Forms.DockStyle.Fill; - this.panel1.Location = new System.Drawing.Point(3, 3); - this.panel1.Name = "panel1"; - this.panel1.Size = new System.Drawing.Size(240, 249); - this.panel1.TabIndex = 5; - // - // label1 - // - this.label1.AutoSize = true; - this.label1.Dock = System.Windows.Forms.DockStyle.Top; - this.label1.Location = new System.Drawing.Point(0, 0); - this.label1.Name = "label1"; - this.label1.Padding = new System.Windows.Forms.Padding(0, 3, 0, 3); - this.label1.Size = new System.Drawing.Size(68, 19); - this.label1.TabIndex = 2; - this.label1.Text = "Source Input"; - // - // panel3 - // - this.panel3.Controls.Add(this.tbxSourceOutput); - this.panel3.Controls.Add(this.label2); - this.panel3.Dock = System.Windows.Forms.DockStyle.Fill; - this.panel3.Location = new System.Drawing.Point(249, 3); - this.panel3.Name = "panel3"; - this.panel3.Size = new System.Drawing.Size(240, 249); - this.panel3.TabIndex = 6; - // - // tbxSourceOutput - // - this.tbxSourceOutput.Dock = System.Windows.Forms.DockStyle.Fill; - this.tbxSourceOutput.Location = new System.Drawing.Point(0, 19); - this.tbxSourceOutput.Multiline = true; - this.tbxSourceOutput.Name = "tbxSourceOutput"; - this.tbxSourceOutput.ReadOnly = true; - this.tbxSourceOutput.ScrollBars = System.Windows.Forms.ScrollBars.Both; - this.tbxSourceOutput.Size = new System.Drawing.Size(240, 230); - this.tbxSourceOutput.TabIndex = 2; - this.tbxSourceOutput.WordWrap = false; - // - // label2 - // - this.label2.AutoSize = true; - this.label2.Dock = System.Windows.Forms.DockStyle.Top; - this.label2.Location = new System.Drawing.Point(0, 0); - this.label2.Name = "label2"; - this.label2.Padding = new System.Windows.Forms.Padding(0, 3, 0, 3); - this.label2.Size = new System.Drawing.Size(76, 19); - this.label2.TabIndex = 0; - this.label2.Text = "Source Output"; - // - // panel4 - // - this.panel4.Controls.Add(this.tbxConsoleInput); - this.panel4.Controls.Add(this.label3); - this.panel4.Dock = System.Windows.Forms.DockStyle.Fill; - this.panel4.Location = new System.Drawing.Point(3, 258); - this.panel4.Name = "panel4"; - this.panel4.Size = new System.Drawing.Size(240, 249); - this.panel4.TabIndex = 7; - // - // tbxConsoleInput - // - this.tbxConsoleInput.Dock = System.Windows.Forms.DockStyle.Fill; - this.tbxConsoleInput.Location = new System.Drawing.Point(0, 19); - this.tbxConsoleInput.Multiline = true; - this.tbxConsoleInput.Name = "tbxConsoleInput"; - this.tbxConsoleInput.ScrollBars = System.Windows.Forms.ScrollBars.Both; - this.tbxConsoleInput.Size = new System.Drawing.Size(240, 230); - this.tbxConsoleInput.TabIndex = 3; - this.tbxConsoleInput.WordWrap = false; - // - // label3 - // - this.label3.AutoSize = true; - this.label3.Dock = System.Windows.Forms.DockStyle.Top; - this.label3.Location = new System.Drawing.Point(0, 0); - this.label3.Name = "label3"; - this.label3.Padding = new System.Windows.Forms.Padding(0, 3, 0, 3); - this.label3.Size = new System.Drawing.Size(72, 19); - this.label3.TabIndex = 0; - this.label3.Text = "Console Input"; - // - // panel5 - // - this.panel5.Controls.Add(this.tbxConsoleOutput); - this.panel5.Controls.Add(this.label4); - this.panel5.Dock = System.Windows.Forms.DockStyle.Fill; - this.panel5.Location = new System.Drawing.Point(249, 258); - this.panel5.Name = "panel5"; - this.panel5.Size = new System.Drawing.Size(240, 249); - this.panel5.TabIndex = 8; - // - // tbxConsoleOutput - // - this.tbxConsoleOutput.Dock = System.Windows.Forms.DockStyle.Fill; - this.tbxConsoleOutput.Location = new System.Drawing.Point(0, 19); - this.tbxConsoleOutput.Multiline = true; - this.tbxConsoleOutput.Name = "tbxConsoleOutput"; - this.tbxConsoleOutput.ReadOnly = true; - this.tbxConsoleOutput.ScrollBars = System.Windows.Forms.ScrollBars.Both; - this.tbxConsoleOutput.Size = new System.Drawing.Size(240, 230); - this.tbxConsoleOutput.TabIndex = 4; - this.tbxConsoleOutput.WordWrap = false; - // - // label4 - // - this.label4.AutoSize = true; - this.label4.Dock = System.Windows.Forms.DockStyle.Top; - this.label4.Location = new System.Drawing.Point(0, 0); - this.label4.Name = "label4"; - this.label4.Padding = new System.Windows.Forms.Padding(0, 3, 0, 3); - this.label4.Size = new System.Drawing.Size(80, 19); - this.label4.TabIndex = 0; - this.label4.Text = "Console Output"; - // - // statusStrip1 - // - this.statusStrip1.Location = new System.Drawing.Point(0, 510); - this.statusStrip1.Name = "statusStrip1"; - this.statusStrip1.Size = new System.Drawing.Size(649, 22); - this.statusStrip1.TabIndex = 3; - this.statusStrip1.Text = "statusStrip1"; - // - // cbxEntryPoint - // - this.cbxEntryPoint.Dock = System.Windows.Forms.DockStyle.Fill; - this.cbxEntryPoint.FormattingEnabled = true; - this.cbxEntryPoint.Location = new System.Drawing.Point(3, 16); - this.cbxEntryPoint.Name = "cbxEntryPoint"; - this.cbxEntryPoint.Size = new System.Drawing.Size(147, 21); - this.cbxEntryPoint.TabIndex = 1; - // - // panel2 - // - this.panel2.AutoScroll = true; - this.panel2.Controls.Add(this.btnRun); - this.panel2.Controls.Add(this.groupBox2); - this.panel2.Controls.Add(this.groupBox1); - this.panel2.Dock = System.Windows.Forms.DockStyle.Left; - this.panel2.Location = new System.Drawing.Point(0, 0); - this.panel2.Name = "panel2"; - this.panel2.Size = new System.Drawing.Size(157, 510); - this.panel2.TabIndex = 5; - // - // groupBox2 - // - this.groupBox2.Controls.Add(this.cbxEntryPoint); - this.groupBox2.Location = new System.Drawing.Point(0, 4); - this.groupBox2.Name = "groupBox2"; - this.groupBox2.Size = new System.Drawing.Size(153, 45); - this.groupBox2.TabIndex = 1; - this.groupBox2.TabStop = false; - this.groupBox2.Text = "Entry Point"; - // - // groupBox1 - // - this.groupBox1.AutoSize = true; - this.groupBox1.Controls.Add(this.chkPassArgumentsToEntryPoint); - this.groupBox1.Controls.Add(this.btnClearAllArguments); - this.groupBox1.Controls.Add(this.btnAddArgument); - this.groupBox1.Controls.Add(this.tbxArgument); - this.groupBox1.Controls.Add(this.lbxArguments); - this.groupBox1.Location = new System.Drawing.Point(0, 51); - this.groupBox1.Name = "groupBox1"; - this.groupBox1.Size = new System.Drawing.Size(158, 245); - this.groupBox1.TabIndex = 0; - this.groupBox1.TabStop = false; - this.groupBox1.Text = "Arguments"; - // - // chkPassArgumentsToEntryPoint - // - this.chkPassArgumentsToEntryPoint.AutoSize = true; - this.chkPassArgumentsToEntryPoint.Location = new System.Drawing.Point(6, 209); - this.chkPassArgumentsToEntryPoint.Name = "chkPassArgumentsToEntryPoint"; - this.chkPassArgumentsToEntryPoint.Size = new System.Drawing.Size(146, 17); - this.chkPassArgumentsToEntryPoint.TabIndex = 4; - this.chkPassArgumentsToEntryPoint.Text = "Arguments To Entry Point"; - this.chkPassArgumentsToEntryPoint.UseVisualStyleBackColor = true; - // - // btnClearAllArguments - // - this.btnClearAllArguments.Location = new System.Drawing.Point(3, 181); - this.btnClearAllArguments.Name = "btnClearAllArguments"; - this.btnClearAllArguments.Size = new System.Drawing.Size(145, 22); - this.btnClearAllArguments.TabIndex = 3; - this.btnClearAllArguments.Text = "Clear All"; - this.btnClearAllArguments.UseVisualStyleBackColor = true; - this.btnClearAllArguments.Click += new System.EventHandler(this.btnClearAllArguments_Click); - // - // btnAddArgument - // - this.btnAddArgument.Location = new System.Drawing.Point(87, 154); - this.btnAddArgument.Name = "btnAddArgument"; - this.btnAddArgument.Size = new System.Drawing.Size(61, 22); - this.btnAddArgument.TabIndex = 2; - this.btnAddArgument.Text = "Add"; - this.btnAddArgument.UseVisualStyleBackColor = true; - this.btnAddArgument.Click += new System.EventHandler(this.btnAddArgument_Click); - // - // tbxArgument - // - this.tbxArgument.Location = new System.Drawing.Point(3, 155); - this.tbxArgument.Name = "tbxArgument"; - this.tbxArgument.Size = new System.Drawing.Size(83, 20); - this.tbxArgument.TabIndex = 1; - // - // lbxArguments - // - this.lbxArguments.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.lbxArguments.FormattingEnabled = true; - this.lbxArguments.Location = new System.Drawing.Point(3, 16); - this.lbxArguments.Name = "lbxArguments"; - this.lbxArguments.Size = new System.Drawing.Size(151, 134); - this.lbxArguments.TabIndex = 0; - // - // AwkForm - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(649, 532); - this.Controls.Add(this.tableLayoutPanel1); - this.Controls.Add(this.panel2); - this.Controls.Add(this.statusStrip1); - this.Name = "AwkForm"; - this.Text = "ASE.COM.AWK"; - this.tableLayoutPanel1.ResumeLayout(false); - this.panel1.ResumeLayout(false); - this.panel1.PerformLayout(); - this.panel3.ResumeLayout(false); - this.panel3.PerformLayout(); - this.panel4.ResumeLayout(false); - this.panel4.PerformLayout(); - this.panel5.ResumeLayout(false); - this.panel5.PerformLayout(); - this.panel2.ResumeLayout(false); - this.panel2.PerformLayout(); - this.groupBox2.ResumeLayout(false); - this.groupBox1.ResumeLayout(false); - this.groupBox1.PerformLayout(); - this.ResumeLayout(false); - this.PerformLayout(); - - } - - #endregion - - private System.Windows.Forms.TextBox tbxSourceInput; - private System.Windows.Forms.Button btnRun; - private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; - private System.Windows.Forms.TextBox tbxSourceOutput; - private System.Windows.Forms.TextBox tbxConsoleInput; - private System.Windows.Forms.TextBox tbxConsoleOutput; - private System.Windows.Forms.StatusStrip statusStrip1; - private System.Windows.Forms.ComboBox cbxEntryPoint; - private System.Windows.Forms.Panel panel2; - private System.Windows.Forms.GroupBox groupBox1; - private System.Windows.Forms.Button btnClearAllArguments; - private System.Windows.Forms.Button btnAddArgument; - private System.Windows.Forms.TextBox tbxArgument; - private System.Windows.Forms.ListBox lbxArguments; - private System.Windows.Forms.CheckBox chkPassArgumentsToEntryPoint; - private System.Windows.Forms.GroupBox groupBox2; - private System.Windows.Forms.Panel panel1; - private System.Windows.Forms.Label label1; - private System.Windows.Forms.Panel panel3; - private System.Windows.Forms.Label label2; - private System.Windows.Forms.Panel panel4; - private System.Windows.Forms.Label label3; - private System.Windows.Forms.Panel panel5; - private System.Windows.Forms.Label label4; - } -} diff --git a/qse/cmd/com/AwkForm.cs b/qse/cmd/com/AwkForm.cs deleted file mode 100644 index 3b35fe0f..00000000 --- a/qse/cmd/com/AwkForm.cs +++ /dev/null @@ -1,87 +0,0 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.Text; -using System.Windows.Forms; -using System.IO; - -namespace ase.com -{ - public partial class AwkForm : Form - { - public AwkForm() - { - InitializeComponent(); - } - - private void btnRun_Click(object sender, EventArgs e) - { - Awk awk = new StdAwk (); - - //System.Text.Encoding.Default - awk.SourceInputStream = new MemoryStream (UnicodeEncoding.UTF8.GetBytes(tbxSourceInput.Text)); - awk.SourceOutputStream = new MemoryStream(); - - awk.ConsoleInputStream = new MemoryStream(UnicodeEncoding.UTF8.GetBytes(tbxConsoleInput.Text)); - awk.ConsoleOutputStream = new MemoryStream(); - - tbxSourceOutput.Text = ""; - tbxConsoleOutput.Text = ""; - - if (!awk.Parse()) - { - MessageBox.Show(awk.ErrorMessage); - } - else - { - MemoryStream s = (MemoryStream)awk.SourceOutputStream; - tbxSourceOutput.Text = UnicodeEncoding.UTF8.GetString(s.GetBuffer()); - - awk.EntryPoint = cbxEntryPoint.Text; - awk.ArgumentsToEntryPoint = chkPassArgumentsToEntryPoint.Checked; - - bool n; - int nargs = lbxArguments.Items.Count; - if (nargs > 0) - { - string[] args = new string[nargs]; - for (int i = 0; i < nargs; i++) - args[i] = lbxArguments.Items[i].ToString(); - n = awk.Run(args); - } - else n = awk.Run(); - - if (!n) - { - MessageBox.Show(awk.ErrorMessage); - } - else - { - MemoryStream c = (MemoryStream)awk.ConsoleOutputStream; - tbxConsoleOutput.Text = UnicodeEncoding.UTF8.GetString(c.GetBuffer()); - } - } - - //awk.Close(); - } - - - private void btnAddArgument_Click(object sender, EventArgs e) - { - if (tbxArgument.Text.Length > 0) - { - lbxArguments.Items.Add(tbxArgument.Text); - tbxArgument.Text = ""; - tbxArgument.Focus(); - } - } - - private void btnClearAllArguments_Click(object sender, EventArgs e) - { - lbxArguments.Items.Clear(); - } - - } -} diff --git a/qse/cmd/com/AwkForm.frm b/qse/cmd/com/AwkForm.frm deleted file mode 100644 index 8bd2930f..00000000 --- a/qse/cmd/com/AwkForm.frm +++ /dev/null @@ -1,557 +0,0 @@ -VERSION 5.00 -Begin VB.Form AwkForm - BorderStyle = 1 'Fixed Single - Caption = "ASE.COM.AWK" - ClientHeight = 8100 - ClientLeft = 45 - ClientTop = 330 - ClientWidth = 12900 - LinkTopic = "AwkForm" - MaxButton = 0 'False - MinButton = 0 'False - ScaleHeight = 8100 - ScaleWidth = 12900 - StartUpPosition = 3 'Windows Default - Begin VB.CommandButton btnClearAll - Caption = "Clear All" - Height = 375 - Left = 240 - TabIndex = 14 - Top = 4560 - Width = 2295 - End - Begin VB.CommandButton btnAddArgument - Caption = "Add" - Height = 375 - Left = 1920 - TabIndex = 12 - Top = 4080 - Width = 615 - End - Begin VB.TextBox txtArgument - Height = 375 - Left = 240 - TabIndex = 11 - Top = 4080 - Width = 1575 - End - Begin VB.ListBox lstArguments - Height = 2595 - Left = 240 - TabIndex = 10 - Top = 1320 - Width = 2295 - End - Begin VB.ComboBox EntryPoint - Height = 315 - ItemData = "AwkForm.frx":0000 - Left = 240 - List = "AwkForm.frx":0007 - TabIndex = 9 - Top = 480 - Width = 2295 - End - Begin VB.TextBox ConsoleIn - BeginProperty Font - Name = "Courier New" - Size = 9 - Charset = 0 - Weight = 400 - Underline = 0 'False - Italic = 0 'False - Strikethrough = 0 'False - EndProperty - Height = 3735 - Left = 2760 - MultiLine = -1 'True - ScrollBars = 3 'Both - TabIndex = 2 - Top = 4320 - Width = 5055 - End - Begin VB.TextBox SourceIn - BeginProperty Font - Name = "Courier New" - Size = 9 - Charset = 0 - Weight = 400 - Underline = 0 'False - Italic = 0 'False - Strikethrough = 0 'False - EndProperty - Height = 3615 - Left = 2760 - MultiLine = -1 'True - ScrollBars = 3 'Both - TabIndex = 0 - Top = 360 - Width = 5055 - End - Begin VB.TextBox SourceOut - BeginProperty Font - Name = "Courier New" - Size = 9 - Charset = 0 - Weight = 400 - Underline = 0 'False - Italic = 0 'False - Strikethrough = 0 'False - EndProperty - Height = 3615 - Left = 7920 - Locked = -1 'True - MultiLine = -1 'True - ScrollBars = 3 'Both - TabIndex = 1 - Top = 360 - Width = 4935 - End - Begin VB.CommandButton btnExecute - Caption = "Execute" - Height = 375 - Left = 1440 - TabIndex = 5 - Top = 7680 - Width = 1215 - End - Begin VB.TextBox ConsoleOut - BeginProperty Font - Name = "Courier New" - Size = 9 - Charset = 0 - Weight = 400 - Underline = 0 'False - Italic = 0 'False - Strikethrough = 0 'False - EndProperty - Height = 3735 - Left = 7920 - MultiLine = -1 'True - ScrollBars = 3 'Both - TabIndex = 3 - Top = 4320 - Width = 4935 - End - Begin VB.Frame Frame1 - Caption = "Arguments" - Height = 4335 - Left = 120 - TabIndex = 13 - Top = 1080 - Width = 2535 - Begin VB.CheckBox chkPassToEntryPoint - Caption = "Pass To Entry Point" - Height = 255 - Left = 360 - TabIndex = 16 - Top = 3960 - Width = 1815 - End - End - Begin VB.Frame Frame2 - Caption = "Entry Point" - Height = 855 - Left = 120 - TabIndex = 15 - Top = 120 - Width = 2535 - End - Begin VB.Label Label4 - Caption = "Console Out" - Height = 255 - Left = 7920 - TabIndex = 8 - Top = 4080 - Width = 3735 - End - Begin VB.Label Label3 - Caption = "Console In" - Height = 255 - Left = 2760 - TabIndex = 7 - Top = 4080 - Width = 3735 - End - Begin VB.Label Label2 - Caption = "Source Out" - Height = 255 - Left = 7920 - TabIndex = 6 - Top = 120 - Width = 3735 - End - Begin VB.Label Label1 - Caption = "Source In" - Height = 255 - Left = 2760 - TabIndex = 4 - Top = 120 - Width = 2415 - End -End -Attribute VB_Name = "AwkForm" -Attribute VB_GlobalNameSpace = False -Attribute VB_Creatable = False -Attribute VB_PredeclaredId = True -Attribute VB_Exposed = False -Option Explicit -Option Base 0 -Dim source_first As Boolean -Public WithEvents Awk As ASECOM.Awk -Attribute Awk.VB_VarHelpID = -1 - -Private Sub btnAddArgument_Click() - Dim arg As String - - arg = txtArgument.Text - If Len(arg) > 0 Then - lstArguments.AddItem (arg) - txtArgument.Text = "" - txtArgument.SetFocus - End If -End Sub - -Private Sub btnClearAll_Click() - lstArguments.Clear -End Sub - -Private Sub btnExecute_Click() - - source_first = True - - ConsoleOut.Text = "" - SourceOut.Text = "" - - Set Awk = New ASECOM.Awk - - 'Awk.SetWord "BEGIN", "xxx" - 'Awk.SetWord "END", "yyy" - 'Awk.SetWord "length", "len" - 'Awk.UnsetWord "END" - - Awk.ExplicitVariable = True - Awk.ImplicitVariable = True - Awk.UseCrlf = True - Awk.IdivOperator = True - Awk.ShiftOperators = True - - Awk.MaxDepthForBlockParse = 20 - Awk.MaxDepthForBlockRun = 30 - Awk.MaxDepthForExprParse = 20 - Awk.MaxDepthForExprRun = 30 - 'Awk.MaxDepthForRexBuild = 10 - 'Awk.MaxDepthForRexMatch = 10 - - Awk.UseLongLong = False - Awk.Debug = True - - If Not Awk.AddFunction("sin", 1, 1) Then - MsgBox "Cannot add builtin function - " + Awk.ErrorMessage - Exit Sub - End If - If Not Awk.AddFunction("cos", 1, 1) Then - MsgBox "Cannot add builtin function - " + Awk.ErrorMessage - Exit Sub - End If - Call Awk.AddFunction("tan", 1, 1) - Call Awk.AddFunction("sqrt", 1, 1) - Call Awk.AddFunction("trim", 1, 1) - 'Call Awk.DeleteFunction("tan") - - If Not Awk.Parse() Then - MsgBox "PARSE ERROR [" + Str(Awk.ErrorLine) + "]" + Awk.ErrorMessage - Else - Dim n As Boolean - - Awk.EntryPoint = Trim(EntryPoint.Text) - - If lstArguments.ListCount = 0 Then - n = Awk.Run(Null) - Else - ReDim Args(lstArguments.ListCount - 1) As String - Dim i As Integer - - Awk.ArgumentsToEntryPoint = chkPassToEntryPoint.value - - For i = 0 To lstArguments.ListCount - 1 - Args(i) = lstArguments.List(i) - Next i - - n = Awk.Run(Args) - End If - - If Not n Then - MsgBox "RUN ERROR [" + Str(Awk.ErrorLine) + "]" + Awk.ErrorMessage - End If - End If - - Set Awk = Nothing - -End Sub - -Function Awk_OpenSource(ByVal mode As ASECOM.AwkSourceMode) As Long - Awk_OpenSource = 1 -End Function - -Function Awk_CloseSource(ByVal mode As ASECOM.AwkSourceMode) As Long - Awk_CloseSource = 0 -End Function - -Function Awk_ReadSource(ByVal buf As ASECOM.Buffer) As Long - If source_first Then - buf.value = SourceIn.Text - Awk_ReadSource = Len(buf.value) - source_first = False - Else - Awk_ReadSource = 0 - End If -End Function - -Function Awk_WriteSource(ByVal buf As ASECOM.Buffer) As Long - Dim value As String - Dim l As Integer - - value = buf.value - l = Len(value) - SourceOut.Text = SourceOut.Text + value - Awk_WriteSource = Len(value) -End Function - -Function Awk_OpenExtio(ByVal extio As ASECOM.AwkExtio) As Long - Awk_OpenExtio = -1 - - Select Case extio.Type - Case ASECOM.AWK_EXTIO_CONSOLE - If extio.mode = ASECOM.AWK_EXTIO_CONSOLE_READ Then - extio.Handle = New AwkExtioConsole - With extio.Handle - .EOF = False - End With - Awk_OpenExtio = 1 - ElseIf extio.mode = ASECOM.AWK_EXTIO_CONSOLE_WRITE Then - extio.Handle = New AwkExtioConsole - With extio.Handle - .EOF = False - End With - Awk_OpenExtio = 1 - End If - - Case ASECOM.AWK_EXTIO_FILE - If extio.mode = ASECOM.AWK_EXTIO_FILE_READ Then - extio.Handle = FreeFile - On Error GoTo ErrorTrap - Open extio.name For Input As #extio.Handle - On Error GoTo 0 - Awk_OpenExtio = 1 - ElseIf extio.mode = ASECOM.AWK_EXTIO_FILE_WRITE Then - extio.Handle = FreeFile - On Error GoTo ErrorTrap - Open extio.name For Output As #extio.Handle - On Error GoTo 0 - Awk_OpenExtio = 1 - ElseIf extio.mode = ASECOM.AWK_EXTIO_FILE_APPEND Then - extio.Handle = FreeFile - On Error GoTo ErrorTrap - Open extio.name For Append As #extio.Handle - On Error GoTo 0 - Awk_OpenExtio = 1 - End If - - Case ASECOM.AWK_EXTIO_PIPE - Awk_OpenExtio = -1 - Case ASECOM.AWK_EXTIO_COPROC - Awk_OpenExtio = -1 - End Select - - Exit Function - -ErrorTrap: - Exit Function -End Function - -Function Awk_CloseExtio(ByVal extio As ASECOM.AwkExtio) As Long - Awk_CloseExtio = -1 - - Select Case extio.Type - Case ASECOM.AWK_EXTIO_CONSOLE - If extio.mode = ASECOM.AWK_EXTIO_CONSOLE_READ Or _ - extio.mode = ASECOM.AWK_EXTIO_CONSOLE_WRITE Then - extio.Handle = Nothing - Awk_CloseExtio = 0 - End If - Case ASECOM.AWK_EXTIO_FILE - If extio.mode = ASECOM.AWK_EXTIO_FILE_READ Or _ - extio.mode = ASECOM.AWK_EXTIO_FILE_WRITE Or _ - extio.mode = ASECOM.AWK_EXTIO_FILE_APPEND Then - Close #extio.Handle - Awk_CloseExtio = 0 - End If - Case ASECOM.AWK_EXTIO_PIPE - Awk_CloseExtio = -1 - Case ASECOM.AWK_EXTIO_COPROC - Awk_CloseExtio = -1 - End Select - -End Function - -Function Awk_ReadExtio(ByVal extio As ASECOM.AwkExtio, ByVal buf As ASECOM.Buffer) As Long - Awk_ReadExtio = -1 - - Select Case extio.Type - Case ASECOM.AWK_EXTIO_CONSOLE - If extio.mode = ASECOM.AWK_EXTIO_CONSOLE_READ Then - Awk_ReadExtio = ReadExtioConsole(extio, buf) - End If - - Case ASECOM.AWK_EXTIO_FILE - If extio.mode = ASECOM.AWK_EXTIO_FILE_READ Then - Awk_ReadExtio = ReadExtioFile(extio, buf) - End If - - Case ASECOM.AWK_EXTIO_PIPE - Awk_ReadExtio = -1 - Case ASECOM.AWK_EXTIO_COPROC - Awk_ReadExtio = -1 - End Select - -End Function - -Function Awk_WriteExtio(ByVal extio As ASECOM.AwkExtio, ByVal buf As ASECOM.Buffer) As Long - Awk_WriteExtio = -1 - - Select Case extio.Type - Case ASECOM.AWK_EXTIO_CONSOLE - If extio.mode = ASECOM.AWK_EXTIO_CONSOLE_WRITE Then - Awk_WriteExtio = WriteExtioConsole(extio, buf) - End If - Case ASECOM.AWK_EXTIO_FILE - If extio.mode = ASECOM.AWK_EXTIO_FILE_WRITE Or _ - extio.mode = ASECOM.AWK_EXTIO_FILE_APPEND Then - Awk_WriteExtio = WriteExtioFile(extio, buf) - End If - Case ASECOM.AWK_EXTIO_PIPE - Awk_WriteExtio = -1 - Case ASECOM.AWK_EXTIO_COPROC - Awk_WriteExtio = -1 - End Select -End Function - -Function ReadExtioConsole(ByVal extio As ASECOM.AwkExtio, ByVal buf As ASECOM.Buffer) As Long - Dim value As String - - If Not extio.Handle.EOF Then - value = ConsoleIn.Text - extio.Handle.EOF = True - buf.value = value - ReadExtioConsole = Len(value) - Else - ReadExtioConsole = 0 - End If -End Function - -Function ReadExtioFile(ByVal extio As ASECOM.AwkExtio, ByVal buf As ASECOM.Buffer) As Long - Dim value As String - - If EOF(extio.Handle) Then - ReadExtioFile = 0 - Exit Function - End If - - On Error GoTo ErrorTrap - Line Input #extio.Handle, value - On Error GoTo 0 - - value = value + vbCrLf - - buf.value = value - ReadExtioFile = Len(buf.value) - Exit Function - -ErrorTrap: - ReadExtioFile = -1 - Exit Function -End Function - -Function WriteExtioConsole(ByVal extio As ASECOM.AwkExtio, ByVal buf As ASECOM.Buffer) As Long - Dim value As String - - value = buf.value - ConsoleOut.Text = ConsoleOut.Text + value - WriteExtioConsole = Len(value) -End Function - -Function WriteExtioFile(ByVal extio As ASECOM.AwkExtio, ByVal buf As ASECOM.Buffer) As Long - Dim value As String - - WriteExtioFile = -1 - - value = buf.value - On Error GoTo ErrorTrap - Print #extio.Handle, value; - On Error GoTo 0 - WriteExtioFile = Len(value) - - Exit Function - -ErrorTrap: - Exit Function -End Function - -Function Awk_HandleBuiltinFunction(ByVal name As String, ByVal Args As Variant) As Variant - - If name = "sin" Then - If IsNull(Args(0)) Then - Awk_HandleBuiltinFunction = Sin(0) - ElseIf IsNumeric(Args(0)) Then - Awk_HandleBuiltinFunction = Sin(Args(0)) - Else - Awk_HandleBuiltinFunction = Sin(Val(Args(0))) - End If - ElseIf name = "cos" Then - If TypeName(Args(0)) = "Long" Or TypeName(Args(0)) = "Double" Then - Awk_HandleBuiltinFunction = Cos(Args(0)) - ElseIf TypeName(Args(0)) = "String" Then - Awk_HandleBuiltinFunction = Cos(Val(Args(0))) - ElseIf TypeName(Args(0)) = "Null" Then - Awk_HandleBuiltinFunction = Cos(0) - End If - ElseIf name = "tan" Then - If TypeName(Args(0)) = "Long" Or TypeName(Args(0)) = "Double" Then - Awk_HandleBuiltinFunction = Tan(Args(0)) - ElseIf TypeName(Args(0)) = "String" Then - Awk_HandleBuiltinFunction = Tan(Val(Args(0))) - ElseIf TypeName(Args(0)) = "Null" Then - Awk_HandleBuiltinFunction = Tan(0) - End If - ElseIf name = "sqrt" Then - If IsNull(Args(0)) Then - Awk_HandleBuiltinFunction = Sqr(0) - ElseIf IsNumeric(Args(0)) Then - Awk_HandleBuiltinFunction = Sqr(Args(0)) - Else - Awk_HandleBuiltinFunction = Sqr(Val(Args(0))) - End If - ElseIf name = "trim" Then - Awk_HandleBuiltinFunction = Trim(Args(0)) - End If - - 'Dim i As Integer - 'Dim xxx As String - - 'MsgBox name - - 'For i = LBound(args) To UBound(args) - ' xxx = xxx & "," & args(i) - 'Next i - - 'MsgBox xxx -End Function - - -Private Sub Form_Load() - SourceIn.Text = "" - SourceOut.Text = "" - ConsoleIn.Text = "" - ConsoleOut.Text = "" -End Sub - diff --git a/qse/cmd/com/AwkForm.frx b/qse/cmd/com/AwkForm.frx deleted file mode 100644 index 9dd42b079c0b8610de851272b68bc1e88ab4f9fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17 WcmZQ%U}j)sFkob00m9tG%sc=F#R231 diff --git a/qse/cmd/com/AwkForm.resx b/qse/cmd/com/AwkForm.resx deleted file mode 100644 index b9c202bf..00000000 --- a/qse/cmd/com/AwkForm.resx +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 17, 17 - - \ No newline at end of file diff --git a/qse/cmd/com/Program.cs b/qse/cmd/com/Program.cs deleted file mode 100644 index 30c37071..00000000 --- a/qse/cmd/com/Program.cs +++ /dev/null @@ -1,20 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Windows.Forms; - -namespace ase.com -{ - static class Program - { - /// - /// The main entry point for the application. - /// - [STAThread] - static void Main() - { - Application.EnableVisualStyles(); - Application.SetCompatibleTextRenderingDefault(false); - Application.Run(new AwkForm()); - } - } -} diff --git a/qse/cmd/com/Properties/AssemblyInfo.cs b/qse/cmd/com/Properties/AssemblyInfo.cs deleted file mode 100644 index 12f96f5d..00000000 --- a/qse/cmd/com/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,33 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("ase.com")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("ase.com")] -[assembly: AssemblyCopyright("© 2007 Hyung-Hwan Chung, All rights reserved.")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("7cd62543-7cf6-4b69-90b9-be0becdbfa19")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/qse/cmd/com/Properties/Resources.Designer.cs b/qse/cmd/com/Properties/Resources.Designer.cs deleted file mode 100644 index 28b47fda..00000000 --- a/qse/cmd/com/Properties/Resources.Designer.cs +++ /dev/null @@ -1,63 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:2.0.50727.42 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace ase.com.Properties { - using System; - - - /// - /// A strongly-typed resource class, for looking up localized strings, etc. - /// - // This class was auto-generated by the StronglyTypedResourceBuilder - // class via a tool like ResGen or Visual Studio. - // To add or remove a member, edit your .ResX file then rerun ResGen - // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "2.0.0.0")] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - internal class Resources { - - private static global::System.Resources.ResourceManager resourceMan; - - private static global::System.Globalization.CultureInfo resourceCulture; - - [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - internal Resources() { - } - - /// - /// Returns the cached ResourceManager instance used by this class. - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Resources.ResourceManager ResourceManager { - get { - if (object.ReferenceEquals(resourceMan, null)) { - global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ase.com.Properties.Resources", typeof(Resources).Assembly); - resourceMan = temp; - } - return resourceMan; - } - } - - /// - /// Overrides the current thread's CurrentUICulture property for all - /// resource lookups using this strongly typed resource class. - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture { - get { - return resourceCulture; - } - set { - resourceCulture = value; - } - } - } -} diff --git a/qse/cmd/com/Properties/Resources.resx b/qse/cmd/com/Properties/Resources.resx deleted file mode 100644 index af7dbebb..00000000 --- a/qse/cmd/com/Properties/Resources.resx +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - \ No newline at end of file diff --git a/qse/cmd/com/Properties/Settings.Designer.cs b/qse/cmd/com/Properties/Settings.Designer.cs deleted file mode 100644 index 9af5934d..00000000 --- a/qse/cmd/com/Properties/Settings.Designer.cs +++ /dev/null @@ -1,26 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:2.0.50727.42 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace ase.test.Properties { - - - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "8.0.0.0")] - internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { - - private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); - - public static Settings Default { - get { - return defaultInstance; - } - } - } -} diff --git a/qse/cmd/com/Properties/Settings.settings b/qse/cmd/com/Properties/Settings.settings deleted file mode 100644 index 39645652..00000000 --- a/qse/cmd/com/Properties/Settings.settings +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/qse/cmd/com/StdAwk.cs b/qse/cmd/com/StdAwk.cs deleted file mode 100644 index c543ec6f..00000000 --- a/qse/cmd/com/StdAwk.cs +++ /dev/null @@ -1,60 +0,0 @@ -/* - * $Id: StdAwk.cs,v 1.2 2007/09/18 14:30:41 bacon Exp $ - */ - -using System; -using System.Collections.Generic; -using System.Text; - -namespace ase.com -{ - public class StdAwk: Awk - { - public StdAwk(): base () - { - AddFunction("sin", 1, 1, new FunctionHandler(handleSin)); - AddFunction("cos", 1, 1, new FunctionHandler(handleCos)); - AddFunction("tan", 1, 1, new FunctionHandler(handleTan)); - } - - protected virtual object handleSin(object[] args) - { - if (args[0] is System.Double) - { - return System.Math.Sin((double)args[0]); - } - else if (args[0] is System.Int32) - { - return System.Math.Sin((double)(int)args[0]); - } - else if (args[0] is System.Int64) - { - return System.Math.Sin((double)(long)args[0]); - } - else if (args[0] is string) - { - double t; - - /* TODO: atoi */ - try { t = System.Double.Parse((string)args[0]); } - catch (System.Exception) { t = 0; } - - return System.Math.Sin(t); - } - else - { - return System.Math.Sin(0.0); - } - } - - protected virtual object handleCos(object[] args) - { - return 0; - } - - protected virtual object handleTan(object[] args) - { - return 0; - } - } -} diff --git a/qse/cmd/com/asecom.csproj b/qse/cmd/com/asecom.csproj deleted file mode 100644 index ad65d3c8..00000000 --- a/qse/cmd/com/asecom.csproj +++ /dev/null @@ -1,108 +0,0 @@ - - - Debug - AnyCPU - 8.0.50727 - 2.0 - {F14B75D8-3ED7-4621-B5B9-E96A80B5D809} - WinExe - Properties - ase.com - ase.com - - - true - full - false - ..\..\Debug\bin\ - DEBUG;TRACE - prompt - 4 - false - - - pdbonly - true - ..\..\Release\bin\ - TRACE - prompt - 4 - - - true - bin\x64\Debug\ - DEBUG;TRACE - full - x64 - prompt - - - bin\x64\Release\ - TRACE - true - pdbonly - x64 - prompt - - - - - - - - - - - - - Form - - - AwkForm.cs - - - - - Designer - AwkForm.cs - - - ResXFileCodeGenerator - Resources.Designer.cs - Designer - - - True - Resources.resx - True - - - SettingsSingleFileGenerator - Settings.Designer.cs - - - True - Settings.settings - True - - - - - - {F9C69806-16A1-4162-998A-876B33C470BF} - 1 - 0 - 0 - tlbimp - False - - - - - diff --git a/qse/cmd/com/asecom.vbp b/qse/cmd/com/asecom.vbp deleted file mode 100644 index afc9ea5a..00000000 --- a/qse/cmd/com/asecom.vbp +++ /dev/null @@ -1,39 +0,0 @@ -Type=Exe -Reference=*\G{00020430-0000-0000-C000-000000000046}#2.0#0#..\..\..\..\..\WINDOWS\System32\stdole2.tlb#OLE Automation -Reference=*\G{F9C69806-16A1-4162-998A-876B33C470BF}#1.0#0#..\..\debug\lib\asecom.dll#ASE 1.0 Type Library -Form=AwkForm.frm -Class=AwkExtioConsole; AwkExtioConsole.cls -IconForm="AwkForm" -Startup="AwkForm" -HelpFile="" -Title="ASECOM" -ExeName32="asecom.exe" -Command32="" -Name="ASETESTCOM" -HelpContextID="0" -CompatibleMode="0" -MajorVer=1 -MinorVer=0 -RevisionVer=0 -AutoIncrementVer=0 -ServerSupportFiles=0 -VersionProductName="ASE.COM" -CompilationType=0 -OptimizationType=0 -FavorPentiumPro(tm)=0 -CodeViewDebugInfo=0 -NoAliasing=0 -BoundsCheck=0 -OverflowCheck=0 -FlPointCheck=0 -FDIVCheck=0 -UnroundedFP=0 -StartMode=0 -Unattended=0 -Retained=0 -ThreadPerObject=0 -MaxNumberOfThreads=1 -DebugStartupOption=0 - -[MS Transaction Server] -AutoRefresh=1 diff --git a/qse/cmd/com/asecom.vbw b/qse/cmd/com/asecom.vbw deleted file mode 100644 index a068e5db..00000000 --- a/qse/cmd/com/asecom.vbw +++ /dev/null @@ -1,2 +0,0 @@ -AwkForm = 13, 12, 735, 661, , 22, 22, 753, 640, C -AwkExtioConsole = 0, 0, 547, 460, C diff --git a/qse/cmd/com/awk.js b/qse/cmd/com/awk.js deleted file mode 100644 index 0323c738..00000000 --- a/qse/cmd/com/awk.js +++ /dev/null @@ -1,72 +0,0 @@ -var awk, first, n - -first = true - -function awk_OpenSource (mode) -{ - WScript.echo ("OpenSource - mode:" + mode); - return 1; -} - -function awk_CloseSource (mode) -{ - WScript.echo ("CloseSource - mode:" + mode); - return 0; -} - -function awk_ReadSource (buf) -{ - WScript.echo ("ReadSource - buf: [" + buf.Value + "]"); - if (first) - { - buf.Value = "BEGIN {print 1; print 2;}" - first = false - return buf.Value.length; - } - else return 0; -} - -function awk_WriteSource (buf) -{ - //WScript.echo ("WriteSource - cnt: " + cnt) - WScript.echo (buf.Value); - return buf.Value.length; -} - -function awk_OpenExtio (extio) -{ - WScript.echo ("OpenExtio - type: " + extio.Type + " mode: " + extio.Mode + " name: [" + extio.Name + "]"); - return 1; -} - -function awk_CloseExtio (extio) -{ - WScript.echo ("CloseExtio"); - return 0; -} - -function awk_WriteExtio (extio, buf) -{ - WScript.echo (buf.Value); - return buf.Value.length; -} - -awk = WScript.CreateObject("ASE.Awk"); -WScript.ConnectObject (awk, "awk_"); - - -n = awk.Parse(); -if (n == -1) -{ - WScript.echo ("parse failed"); - WScript.quit (1); -} - -n = awk.Run (); -if (n == -1) -{ - WScript.echo ("run failed"); - WScript.quit (1); -} - - diff --git a/qse/cmd/com/awk.vbs b/qse/cmd/com/awk.vbs deleted file mode 100644 index c3a4c077..00000000 --- a/qse/cmd/com/awk.vbs +++ /dev/null @@ -1,30 +0,0 @@ -dim awk, first - -first = true - -function awk_OpenSource (mode) - WScript.echo ("OpenSource - mode:" & mode) - awk_OpenSource = 1 -end function - -function awk_CloseSource (mode) - WScript.echo ("CloseSource - mode:" & mode) - awk_CloseSource = 0 -end function - -function awk_ReadSource (buf, cnt) - WScript.echo ("ReadSource - cnt: " & cnt) - if first then - buf.Value = "BEGIN {print 1;}" - first = false - awk_ReadSource = len(buf.Value) - else - awk_ReadSource = 0 - end if -end function - -set awk = WScript.CreateObject("ASE.Awk") -call WScript.ConnectObject (awk, "awk_") - -WScript.echo awk.Parse -set awk = nothing diff --git a/qse/cmd/lsp/aselsp.vcproj b/qse/cmd/lsp/aselsp.vcproj deleted file mode 100644 index 48861e5f..00000000 --- a/qse/cmd/lsp/aselsp.vcproj +++ /dev/null @@ -1,436 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/qse/cmd/lsp/asetestlsp.dsp b/qse/cmd/lsp/asetestlsp.dsp deleted file mode 100644 index 182ef86c..00000000 --- a/qse/cmd/lsp/asetestlsp.dsp +++ /dev/null @@ -1,102 +0,0 @@ -# Microsoft Developer Studio Project File - Name="asetestlsp" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=asetestlsp - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "asetestlsp.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "asetestlsp.mak" CFG="asetestlsp - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "asetestlsp - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "asetestlsp - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "asetestlsp - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "../../release/bin" -# PROP Intermediate_Dir "release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\.." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_UNICODE" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 aselsp.lib asecmn.lib aseutl.lib user32.lib kernel32.lib /nologo /subsystem:console /machine:I386 /out:"../../release/bin/aselsp.exe" /libpath:"../../release/lib" - -!ELSEIF "$(CFG)" == "asetestlsp - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "../../debug/bin" -# PROP Intermediate_Dir "debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "..\..\.." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_UNICODE" /FR /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 aselsp.lib asecmn.lib aseutl.lib user32.lib kernel32.lib /nologo /subsystem:console /debug /machine:I386 /out:"../../debug/bin/aselsp.exe" /pdbtype:sept /libpath:"../../debug/lib" - -!ENDIF - -# Begin Target - -# Name "asetestlsp - Win32 Release" -# Name "asetestlsp - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=.\lsp.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/qse/cmd/lsp/descrip.mms b/qse/cmd/lsp/descrip.mms deleted file mode 100644 index 52184002..00000000 --- a/qse/cmd/lsp/descrip.mms +++ /dev/null @@ -1,13 +0,0 @@ -# -# OpenVMS MMS/MMK -# - -objects = lsp.obj - -CFLAGS = /include="../../.." -#CFLAGS = /pointer_size=long /include="../../.." - -aselsp.exe : $(objects) - link /executable=aselsp.exe $(objects),[-.-.lsp]aselsp/library - -lsp.obj depends_on lsp.c diff --git a/qse/cmd/lsp/lsp.c b/qse/cmd/lsp/lsp.c index 3f36f354..5e334a32 100644 --- a/qse/cmd/lsp/lsp.c +++ b/qse/cmd/lsp/lsp.c @@ -2,15 +2,15 @@ * $Id: lsp.c,v 1.5 2007/05/16 09:15:14 bacon Exp $ */ -#include +#include -#include -#include -#include -#include +#include +#include +#include +#include -#include -#include +#include +#include #include #include @@ -29,32 +29,32 @@ #include #endif -static ase_ssize_t get_input ( - int cmd, void* arg, ase_char_t* data, ase_size_t size) +static qse_ssize_t get_input ( + int cmd, void* arg, qse_char_t* data, qse_size_t size) { switch (cmd) { - case ASE_LSP_IO_OPEN: - case ASE_LSP_IO_CLOSE: + case QSE_LSP_IO_OPEN: + case QSE_LSP_IO_CLOSE: return 0; - case ASE_LSP_IO_READ: + case QSE_LSP_IO_READ: { /* - if (ase_fgets (data, size, stdin) == ASE_NULL) + if (qse_fgets (data, size, stdin) == QSE_NULL) { if (ferror(stdin)) return -1; return 0; } - return ase_lsp_strlen(data); + return qse_lsp_strlen(data); */ - ase_cint_t c; + qse_cint_t c; if (size <= 0) return -1; - c = ase_fgetc (stdin); + c = qse_fgetc (stdin); - if (c == ASE_CHAR_EOF) + if (c == QSE_CHAR_EOF) { if (ferror(stdin)) return -1; return 0; @@ -68,19 +68,19 @@ static ase_ssize_t get_input ( return -1; } -static ase_ssize_t put_output ( - int cmd, void* arg, ase_char_t* data, ase_size_t size) +static qse_ssize_t put_output ( + int cmd, void* arg, qse_char_t* data, qse_size_t size) { switch (cmd) { - case ASE_LSP_IO_OPEN: - case ASE_LSP_IO_CLOSE: + case QSE_LSP_IO_OPEN: + case QSE_LSP_IO_CLOSE: return 0; - case ASE_LSP_IO_WRITE: + case QSE_LSP_IO_WRITE: { - int n = ase_fprintf ( - stdout, ASE_T("%.*s"), size, data); + int n = qse_fprintf ( + stdout, QSE_T("%.*s"), size, data); if (n < 0) return -1; return size; @@ -98,7 +98,7 @@ struct prmfns_data_t }; #endif -static void* custom_lsp_malloc (void* custom, ase_size_t n) +static void* custom_lsp_malloc (void* custom, qse_size_t n) { #ifdef _WIN32 return HeapAlloc (((prmfns_data_t*)custom)->heap, 0, n); @@ -107,7 +107,7 @@ static void* custom_lsp_malloc (void* custom, ase_size_t n) #endif } -static void* custom_lsp_realloc (void* custom, void* ptr, ase_size_t n) +static void* custom_lsp_realloc (void* custom, void* ptr, qse_size_t n) { #ifdef _WIN32 /* HeapReAlloc behaves differently from realloc */ @@ -130,74 +130,74 @@ static void custom_lsp_free (void* custom, void* ptr) } static int custom_lsp_sprintf ( - void* custom, ase_char_t* buf, ase_size_t size, - const ase_char_t* fmt, ...) + void* custom, qse_char_t* buf, qse_size_t size, + const qse_char_t* fmt, ...) { int n; va_list ap; va_start (ap, fmt); - n = ase_vsprintf (buf, size, fmt, ap); + n = qse_vsprintf (buf, size, fmt, ap); va_end (ap); return n; } -static void custom_lsp_dprintf (void* custom, const ase_char_t* fmt, ...) +static void custom_lsp_dprintf (void* custom, const qse_char_t* fmt, ...) { va_list ap; va_start (ap, fmt); - ase_vfprintf (stderr, fmt, ap); + qse_vfprintf (stderr, fmt, ap); va_end (ap); } static int opt_memsize = 1000; static int opt_meminc = 1000; -static void print_usage (const ase_char_t* argv0) +static void print_usage (const qse_char_t* argv0) { - ase_fprintf (ASE_STDERR, - ASE_T("Usage: %s [options]\n"), argv0); - ase_fprintf (ASE_STDERR, - ASE_T(" -h print this message\n")); - ase_fprintf (ASE_STDERR, - ASE_T(" -m integer number of memory cells\n")); - ase_fprintf (ASE_STDERR, - ASE_T(" -i integer number of memory cell increments\n")); + qse_fprintf (QSE_STDERR, + QSE_T("Usage: %s [options]\n"), argv0); + qse_fprintf (QSE_STDERR, + QSE_T(" -h print this message\n")); + qse_fprintf (QSE_STDERR, + QSE_T(" -m integer number of memory cells\n")); + qse_fprintf (QSE_STDERR, + QSE_T(" -i integer number of memory cell increments\n")); } -static int handle_args (int argc, ase_char_t* argv[]) +static int handle_args (int argc, qse_char_t* argv[]) { - ase_opt_t opt; - ase_cint_t c; + qse_opt_t opt; + qse_cint_t c; - ase_memset (&opt, 0, ASE_SIZEOF(opt)); - opt.str = ASE_T("hm:i:"); + qse_memset (&opt, 0, QSE_SIZEOF(opt)); + opt.str = QSE_T("hm:i:"); - while ((c = ase_getopt (argc, argv, &opt)) != ASE_CHAR_EOF) + while ((c = qse_getopt (argc, argv, &opt)) != QSE_CHAR_EOF) { switch (c) { - case ASE_T('h'): + case QSE_T('h'): print_usage (argv[0]); return -1; - case ASE_T('m'): - opt_memsize = ase_strtoi(opt.arg); + case QSE_T('m'): + opt_memsize = qse_strtoi(opt.arg); break; - case ASE_T('i'): - opt_meminc = ase_strtoi(opt.arg); + case QSE_T('i'): + opt_meminc = qse_strtoi(opt.arg); break; - case ASE_T('?'): - ase_fprintf (ASE_STDERR, ASE_T("Error: illegal option - %c\n"), opt.opt); + case QSE_T('?'): + qse_fprintf (QSE_STDERR, QSE_T("Error: illegal option - %c\n"), opt.opt); print_usage (argv[0]); return -1; - case ASE_T(':'): - ase_fprintf (ASE_STDERR, ASE_T("Error: missing argument for %c\n"), opt.opt); + case QSE_T(':'): + qse_fprintf (QSE_STDERR, QSE_T("Error: missing argument for %c\n"), opt.opt); print_usage (argv[0]); return -1; } @@ -205,31 +205,31 @@ static int handle_args (int argc, ase_char_t* argv[]) if (opt.ind < argc) { - ase_printf (ASE_T("Error: redundant argument - %s\n"), argv[opt.ind]); + qse_printf (QSE_T("Error: redundant argument - %s\n"), argv[opt.ind]); print_usage (argv[0]); return -1; } if (opt_memsize <= 0) { - ase_printf (ASE_T("Error: invalid memory size given\n")); + qse_printf (QSE_T("Error: invalid memory size given\n")); return -1; } return 0; } -int lsp_main (int argc, ase_char_t* argv[]) +int lsp_main (int argc, qse_char_t* argv[]) { - ase_lsp_t* lsp; - ase_lsp_obj_t* obj; - ase_lsp_prmfns_t prmfns; + qse_lsp_t* lsp; + qse_lsp_obj_t* obj; + qse_lsp_prmfns_t prmfns; #ifdef _WIN32 prmfns_data_t prmfns_data; #endif if (handle_args (argc, argv) == -1) return -1; - ase_memset (&prmfns, 0, ASE_SIZEOF(prmfns)); + qse_memset (&prmfns, 0, QSE_SIZEOF(prmfns)); prmfns.mmgr.alloc = custom_lsp_malloc; prmfns.mmgr.realloc = custom_lsp_realloc; @@ -238,83 +238,83 @@ int lsp_main (int argc, ase_char_t* argv[]) prmfns_data.heap = HeapCreate (0, 1000000, 1000000); if (prmfns_data.heap == NULL) { - ase_printf (ASE_T("Error: cannot create an lsp heap\n")); + qse_printf (QSE_T("Error: cannot create an lsp heap\n")); return -1; } prmfns.mmgr.data = &prmfns_data; #else - prmfns.mmgr.data = ASE_NULL; + prmfns.mmgr.data = QSE_NULL; #endif /* TODO: change prmfns ...... lsp_oepn... etc */ - ase_memcpy (&prmfns.ccls, ASE_CCLS_GETDFL(), ASE_SIZEOF(prmfns.ccls)); + qse_memcpy (&prmfns.ccls, QSE_CCLS_GETDFL(), QSE_SIZEOF(prmfns.ccls)); prmfns.misc.sprintf = custom_lsp_sprintf; prmfns.misc.dprintf = custom_lsp_dprintf; - prmfns.misc.data = ASE_NULL; + prmfns.misc.data = QSE_NULL; - lsp = ase_lsp_open (&prmfns, opt_memsize, opt_meminc); - if (lsp == ASE_NULL) + lsp = qse_lsp_open (&prmfns, opt_memsize, opt_meminc); + if (lsp == QSE_NULL) { #ifdef _WIN32 HeapDestroy (prmfns_data.heap); #endif - ase_printf (ASE_T("Error: cannot create a lsp instance\n")); + qse_printf (QSE_T("Error: cannot create a lsp instance\n")); return -1; } - ase_printf (ASE_T("ASELSP 0.0001\n")); + qse_printf (QSE_T("ASELSP 0.0001\n")); - ase_lsp_attinput (lsp, get_input, ASE_NULL); - ase_lsp_attoutput (lsp, put_output, ASE_NULL); + qse_lsp_attinput (lsp, get_input, QSE_NULL); + qse_lsp_attoutput (lsp, put_output, QSE_NULL); while (1) { - ase_printf (ASE_T("ASELSP $ ")); - ase_fflush (stdout); + qse_printf (QSE_T("ASELSP $ ")); + qse_fflush (stdout); - obj = ase_lsp_read (lsp); - if (obj == ASE_NULL) + obj = qse_lsp_read (lsp); + if (obj == QSE_NULL) { int errnum; - const ase_char_t* errmsg; + const qse_char_t* errmsg; - ase_lsp_geterror (lsp, &errnum, &errmsg); + qse_lsp_geterror (lsp, &errnum, &errmsg); - if (errnum != ASE_LSP_EEND && - errnum != ASE_LSP_EEXIT) + if (errnum != QSE_LSP_EEND && + errnum != QSE_LSP_EEXIT) { - ase_printf ( - ASE_T("error in read: [%d] %s\n"), + qse_printf ( + QSE_T("error in read: [%d] %s\n"), errnum, errmsg); } /* TODO: change the following check */ - if (errnum < ASE_LSP_ESYNTAX) break; + if (errnum < QSE_LSP_ESYNTAX) break; continue; } - if ((obj = ase_lsp_eval (lsp, obj)) != ASE_NULL) + if ((obj = qse_lsp_eval (lsp, obj)) != QSE_NULL) { - ase_lsp_print (lsp, obj); - ase_printf (ASE_T("\n")); + qse_lsp_print (lsp, obj); + qse_printf (QSE_T("\n")); } else { int errnum; - const ase_char_t* errmsg; + const qse_char_t* errmsg; - ase_lsp_geterror (lsp, &errnum, &errmsg); - if (errnum == ASE_LSP_EEXIT) break; + qse_lsp_geterror (lsp, &errnum, &errmsg); + if (errnum == QSE_LSP_EEXIT) break; - ase_printf ( - ASE_T("error in eval: [%d] %s\n"), + qse_printf ( + QSE_T("error in eval: [%d] %s\n"), errnum, errmsg); } } - ase_lsp_close (lsp); + qse_lsp_close (lsp); #ifdef _WIN32 HeapDestroy (prmfns_data.heap); @@ -322,7 +322,7 @@ int lsp_main (int argc, ase_char_t* argv[]) return 0; } -int ase_main (int argc, ase_achar_t* argv[]) +int qse_main (int argc, qse_achar_t* argv[]) { int n; @@ -330,7 +330,7 @@ int ase_main (int argc, ase_achar_t* argv[]) mtrace (); #endif - n = ase_runmain (argc, argv, lsp_main); + n = qse_runmain (argc, argv, lsp_main); #if defined(__linux) && defined(_DEBUG) muntrace (); diff --git a/qse/cmd/lsp/makefile.in b/qse/cmd/lsp/makefile.in index 71610f1c..c4319b60 100644 --- a/qse/cmd/lsp/makefile.in +++ b/qse/cmd/lsp/makefile.in @@ -40,7 +40,7 @@ am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/include/ase/config.h +CONFIG_HEADER = $(top_builddir)/include/qse/config.h CONFIG_CLEAN_FILES = am__installdirs = "$(DESTDIR)$(bindir)" binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) @@ -52,7 +52,7 @@ aselsp_DEPENDENCIES = $(am__DEPENDENCIES_1) aselsp_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(aselsp_LDFLAGS) \ $(LDFLAGS) -o $@ -DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include/ase +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include/qse depcomp = $(SHELL) $(top_srcdir)/autoconf/depcomp am__depfiles_maybe = depfiles COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ diff --git a/qse/cmd/lsp/makefile.msw.bcc b/qse/cmd/lsp/makefile.msw.bcc deleted file mode 100644 index 5892cc91..00000000 --- a/qse/cmd/lsp/makefile.msw.bcc +++ /dev/null @@ -1,19 +0,0 @@ -CC = bcc32 -LD = ilink32 -CFLAGS = -I..\..\.. -LDFLAGS = -L..\..\cmn -L..\..\lsp -L..\..\utl -LIBS = import32.lib cw32mt.lib asecmn.lib aselsp.lib aseutl.lib -STARTUP = c0x32w.obj - -all: aselsp - -aselsp: lsp.obj - $(LD) $(LDFLAGS) $(STARTUP) lsp.obj,$@.exe,,$(LIBS),, - -clean: - del $(OBJS) *.obj $(OUT) - -.SUFFIXES: .c .obj -.c.obj: - $(CC) $(CFLAGS) -c $< - diff --git a/qse/cmd/lsp/makefile.msw.cl b/qse/cmd/lsp/makefile.msw.cl deleted file mode 100644 index d9d6821b..00000000 --- a/qse/cmd/lsp/makefile.msw.cl +++ /dev/null @@ -1,17 +0,0 @@ -CC = cl -CFLAGS = /nologo /MT /GX /W3 /GR- -I..\..\.. -LDFLAGS = /libpath:..\..\cmn /libpath:..\..\lsp /libpath:..\..\utl -LIBS = asecmn.lib aselsp.lib aseutl.lib user32.lib - -all: aselsp - -aselsp: lsp.obj - link /nologo /out:$@.exe $(LDFLAGS) $(LIBS) lsp.obj - -clean: - del $(OBJS) *.obj lsp.exe - -.SUFFIXES: .c .obj -.c.obj: - $(CC) /c $(CFLAGS) $< - diff --git a/qse/cmd/makefile.in b/qse/cmd/makefile.in index 1e6bef8f..b3bf765b 100644 --- a/qse/cmd/makefile.in +++ b/qse/cmd/makefile.in @@ -38,7 +38,7 @@ am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/include/ase/config.h +CONFIG_HEADER = $(top_builddir)/include/qse/config.h CONFIG_CLEAN_FILES = SOURCES = DIST_SOURCES = diff --git a/qse/cmd/net/Awk.cs b/qse/cmd/net/Awk.cs deleted file mode 100644 index 5ea9b907..00000000 --- a/qse/cmd/net/Awk.cs +++ /dev/null @@ -1,216 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace ase.net -{ - public class Awk : ASE.Net.StdAwk - { - System.Windows.Forms.TextBox sourceInput; - System.Windows.Forms.TextBox sourceOutput; - - System.Windows.Forms.TextBox consoleInput; - System.Windows.Forms.TextBox consoleOutput; - - System.ComponentModel.ISynchronizeInvoke si; - - public Awk(System.ComponentModel.ISynchronizeInvoke si) - { - this.si = si; - SetSourceOutputHandlers += SetSourceOutput; - SetConsoleOutputHandlers += SetConsoleOutput; - - AddFunction("sleep", 1, 1, Sleep); - } - - public bool Parse( - System.Windows.Forms.TextBox sourceInput, - System.Windows.Forms.TextBox sourceOutput) - { - this.sourceInput = sourceInput; - this.sourceOutput = sourceOutput; - return base.Parse(); - } - - public bool Run( - System.Windows.Forms.TextBox consoleInput, - System.Windows.Forms.TextBox consoleOutput, - string main, string[] args) - { - this.consoleInput = consoleInput; - this.consoleOutput = consoleOutput; - return base.Run (main, args); - } - - protected bool Sleep(Context ctx, string name, Argument[] args, Return ret) - { - System.Threading.Thread.Sleep((int)(args[0].LongValue*1000)); - return ret.Set(0); - } - - protected override int OpenSource(ASE.Net.StdAwk.Source source) - { - //System.IO.FileMode mode; - //System.IO.FileAccess access; - - if (source.Mode.Equals(ASE.Net.StdAwk.Source.MODE.READ)) - { - //mode = System.IO.FileMode.Open; - //access = System.IO.FileAccess.Read; - //fs = new System.IO.FileStream("t.awk", mode, access); - - if (sourceInput == null) return -1; - - System.IO.MemoryStream ms = new System.IO.MemoryStream (UnicodeEncoding.UTF8.GetBytes(sourceInput.Text)); - source.Handle = new System.IO.StreamReader(ms); - return 1; - } - else if (source.Mode.Equals(ASE.Net.StdAwk.Source.MODE.WRITE)) - { - //mode = System.IO.FileMode.Create; - //access = System.IO.FileAccess.Write; - //fs = new System.IO.FileStream("t.out", mode, access); - - if (sourceOutput == null) return -1; - System.IO.MemoryStream ms = new System.IO.MemoryStream (); - source.Handle = new System.IO.StreamWriter(ms); - return 1; - } - - return -1; - } - - public delegate void SetSourceOutputHandler(string text); - public delegate void SetConsoleOutputHandler(string text); - - public event SetSourceOutputHandler SetSourceOutputHandlers; - public event SetConsoleOutputHandler SetConsoleOutputHandlers; - - private void SetSourceOutput(string text) - { - sourceOutput.Text = text; - } - - private void SetConsoleOutput(string text) - { - consoleOutput.Text = text; - } - - protected override int CloseSource(ASE.Net.StdAwk.Source source) - { - if (source.Mode.Equals(ASE.Net.StdAwk.Source.MODE.READ)) - { - System.IO.StreamReader sr = (System.IO.StreamReader)source.Handle; - sr.Close(); - return 0; - } - else if (source.Mode.Equals(ASE.Net.StdAwk.Source.MODE.WRITE)) - { - System.IO.StreamWriter sw = (System.IO.StreamWriter)source.Handle; - sw.Flush(); - - System.IO.MemoryStream ms = (System.IO.MemoryStream)sw.BaseStream; - sw.Close(); - - // MSDN: This method(GetBuffer) works when the memory stream is closed. - //sourceOutput.Text = UnicodeEncoding.UTF8.GetString(ms.GetBuffer()); - if (si != null && si.InvokeRequired) - si.Invoke(SetSourceOutputHandlers, new object[] { UnicodeEncoding.UTF8.GetString(ms.GetBuffer()) }); - else SetSourceOutput (UnicodeEncoding.UTF8.GetString(ms.GetBuffer())); - - return 0; - } - - return -1; - } - - protected override int ReadSource(ASE.Net.StdAwk.Source source, char[] buf, int len) - { - System.IO.StreamReader sr = (System.IO.StreamReader)source.Handle; - return sr.Read(buf, 0, len); - } - - protected override int WriteSource(ASE.Net.StdAwk.Source source, char[] buf, int len) - { - System.IO.StreamWriter sw = (System.IO.StreamWriter)source.Handle; - sw.Write(buf, 0, len); - return len; - } - - protected override int OpenConsole(ASE.Net.StdAwk.Console console) - { - if (console.Mode.Equals(ASE.Net.StdAwk.Console.MODE.READ)) - { - if (consoleInput == null) return -1; - - System.IO.MemoryStream ms = new System.IO.MemoryStream(UnicodeEncoding.UTF8.GetBytes(consoleInput.Text)); - console.Handle = new System.IO.StreamReader(ms); - return 1; - } - else if (console.Mode.Equals(ASE.Net.StdAwk.Console.MODE.WRITE)) - { - if (consoleOutput == null) return -1; - System.IO.MemoryStream ms = new System.IO.MemoryStream(); - console.Handle = new System.IO.StreamWriter(ms); - return 1; - } - - return -1; - } - - protected override int CloseConsole(ASE.Net.StdAwk.Console console) - { - if (console.Mode.Equals(ASE.Net.StdAwk.Console.MODE.READ)) - { - System.IO.StreamReader sr = (System.IO.StreamReader)console.Handle; - sr.Close(); - return 0; - } - else if (console.Mode.Equals(ASE.Net.StdAwk.Console.MODE.WRITE)) - { - System.IO.StreamWriter sw = (System.IO.StreamWriter)console.Handle; - sw.Flush(); - - System.IO.MemoryStream ms = (System.IO.MemoryStream)sw.BaseStream; - sw.Close(); - - // MSDN: This method(GetBuffer) works when the memory stream is closed. - //consoleOutput.Text = UnicodeEncoding.UTF8.GetString(ms.GetBuffer()); - if (si != null && si.InvokeRequired) - si.Invoke(SetConsoleOutputHandlers, new object[] { UnicodeEncoding.UTF8.GetString(ms.GetBuffer()) }); - else SetConsoleOutput(UnicodeEncoding.UTF8.GetString(ms.GetBuffer())); - - return 0; - } - - return -1; - } - - protected override int ReadConsole(ASE.Net.StdAwk.Console console, char[] buf, int len) - { - System.IO.StreamReader sr = (System.IO.StreamReader)console.Handle; - return sr.Read(buf, 0, len); - } - - protected override int WriteConsole(ASE.Net.StdAwk.Console console, char[] buf, int len) - { - System.IO.StreamWriter sw = (System.IO.StreamWriter)console.Handle; - sw.Write(buf, 0, len); - sw.Flush(); - return len; - } - - protected override int FlushConsole(ASE.Net.StdAwk.Console console) - { - System.IO.StreamWriter sw = (System.IO.StreamWriter)console.Handle; - sw.Flush(); - return 0; - } - - protected override int NextConsole(ASE.Net.StdAwk.Console console) - { - return 0; - } - } - -} diff --git a/qse/cmd/net/AwkForm.Designer.cs b/qse/cmd/net/AwkForm.Designer.cs deleted file mode 100644 index 11823d1b..00000000 --- a/qse/cmd/net/AwkForm.Designer.cs +++ /dev/null @@ -1,384 +0,0 @@ -namespace ase.net -{ - partial class AwkForm - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - this.tbxSourceInput = new System.Windows.Forms.TextBox(); - this.btnRun = new System.Windows.Forms.Button(); - this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); - this.panel1 = new System.Windows.Forms.Panel(); - this.label1 = new System.Windows.Forms.Label(); - this.panel3 = new System.Windows.Forms.Panel(); - this.tbxSourceOutput = new System.Windows.Forms.TextBox(); - this.label2 = new System.Windows.Forms.Label(); - this.panel4 = new System.Windows.Forms.Panel(); - this.tbxConsoleInput = new System.Windows.Forms.TextBox(); - this.label3 = new System.Windows.Forms.Label(); - this.panel5 = new System.Windows.Forms.Panel(); - this.tbxConsoleOutput = new System.Windows.Forms.TextBox(); - this.label4 = new System.Windows.Forms.Label(); - this.statusStrip1 = new System.Windows.Forms.StatusStrip(); - this.cbxEntryPoint = new System.Windows.Forms.ComboBox(); - this.panel2 = new System.Windows.Forms.Panel(); - this.clbOptions = new System.Windows.Forms.CheckedListBox(); - this.groupBox2 = new System.Windows.Forms.GroupBox(); - this.groupBox1 = new System.Windows.Forms.GroupBox(); - this.btnClearAllArguments = new System.Windows.Forms.Button(); - this.btnAddArgument = new System.Windows.Forms.Button(); - this.tbxArgument = new System.Windows.Forms.TextBox(); - this.lbxArguments = new System.Windows.Forms.ListBox(); - this.tableLayoutPanel1.SuspendLayout(); - this.panel1.SuspendLayout(); - this.panel3.SuspendLayout(); - this.panel4.SuspendLayout(); - this.panel5.SuspendLayout(); - this.panel2.SuspendLayout(); - this.groupBox2.SuspendLayout(); - this.groupBox1.SuspendLayout(); - this.SuspendLayout(); - // - // tbxSourceInput - // - this.tbxSourceInput.Dock = System.Windows.Forms.DockStyle.Fill; - this.tbxSourceInput.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tbxSourceInput.Location = new System.Drawing.Point(0, 19); - this.tbxSourceInput.Multiline = true; - this.tbxSourceInput.Name = "tbxSourceInput"; - this.tbxSourceInput.ScrollBars = System.Windows.Forms.ScrollBars.Both; - this.tbxSourceInput.Size = new System.Drawing.Size(240, 230); - this.tbxSourceInput.TabIndex = 1; - this.tbxSourceInput.WordWrap = false; - // - // btnRun - // - this.btnRun.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.btnRun.Location = new System.Drawing.Point(78, 484); - this.btnRun.Name = "btnRun"; - this.btnRun.Size = new System.Drawing.Size(75, 23); - this.btnRun.TabIndex = 2; - this.btnRun.Text = "Run"; - this.btnRun.UseVisualStyleBackColor = true; - this.btnRun.Click += new System.EventHandler(this.btnRun_Click); - // - // tableLayoutPanel1 - // - this.tableLayoutPanel1.ColumnCount = 2; - this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); - this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); - this.tableLayoutPanel1.Controls.Add(this.panel1, 0, 0); - this.tableLayoutPanel1.Controls.Add(this.panel3, 1, 0); - this.tableLayoutPanel1.Controls.Add(this.panel4, 0, 1); - this.tableLayoutPanel1.Controls.Add(this.panel5, 1, 1); - this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill; - this.tableLayoutPanel1.Location = new System.Drawing.Point(157, 0); - this.tableLayoutPanel1.Name = "tableLayoutPanel1"; - this.tableLayoutPanel1.RowCount = 2; - this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F)); - this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F)); - this.tableLayoutPanel1.Size = new System.Drawing.Size(492, 510); - this.tableLayoutPanel1.TabIndex = 2; - // - // panel1 - // - this.panel1.Controls.Add(this.tbxSourceInput); - this.panel1.Controls.Add(this.label1); - this.panel1.Dock = System.Windows.Forms.DockStyle.Fill; - this.panel1.Location = new System.Drawing.Point(3, 3); - this.panel1.Name = "panel1"; - this.panel1.Size = new System.Drawing.Size(240, 249); - this.panel1.TabIndex = 5; - // - // label1 - // - this.label1.AutoSize = true; - this.label1.Dock = System.Windows.Forms.DockStyle.Top; - this.label1.Location = new System.Drawing.Point(0, 0); - this.label1.Name = "label1"; - this.label1.Padding = new System.Windows.Forms.Padding(0, 3, 0, 3); - this.label1.Size = new System.Drawing.Size(68, 19); - this.label1.TabIndex = 2; - this.label1.Text = "Source Input"; - // - // panel3 - // - this.panel3.Controls.Add(this.tbxSourceOutput); - this.panel3.Controls.Add(this.label2); - this.panel3.Dock = System.Windows.Forms.DockStyle.Fill; - this.panel3.Location = new System.Drawing.Point(249, 3); - this.panel3.Name = "panel3"; - this.panel3.Size = new System.Drawing.Size(240, 249); - this.panel3.TabIndex = 6; - // - // tbxSourceOutput - // - this.tbxSourceOutput.Dock = System.Windows.Forms.DockStyle.Fill; - this.tbxSourceOutput.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tbxSourceOutput.Location = new System.Drawing.Point(0, 19); - this.tbxSourceOutput.Multiline = true; - this.tbxSourceOutput.Name = "tbxSourceOutput"; - this.tbxSourceOutput.ReadOnly = true; - this.tbxSourceOutput.ScrollBars = System.Windows.Forms.ScrollBars.Both; - this.tbxSourceOutput.Size = new System.Drawing.Size(240, 230); - this.tbxSourceOutput.TabIndex = 2; - this.tbxSourceOutput.WordWrap = false; - // - // label2 - // - this.label2.AutoSize = true; - this.label2.Dock = System.Windows.Forms.DockStyle.Top; - this.label2.Location = new System.Drawing.Point(0, 0); - this.label2.Name = "label2"; - this.label2.Padding = new System.Windows.Forms.Padding(0, 3, 0, 3); - this.label2.Size = new System.Drawing.Size(76, 19); - this.label2.TabIndex = 0; - this.label2.Text = "Source Output"; - // - // panel4 - // - this.panel4.Controls.Add(this.tbxConsoleInput); - this.panel4.Controls.Add(this.label3); - this.panel4.Dock = System.Windows.Forms.DockStyle.Fill; - this.panel4.Location = new System.Drawing.Point(3, 258); - this.panel4.Name = "panel4"; - this.panel4.Size = new System.Drawing.Size(240, 249); - this.panel4.TabIndex = 7; - // - // tbxConsoleInput - // - this.tbxConsoleInput.Dock = System.Windows.Forms.DockStyle.Fill; - this.tbxConsoleInput.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tbxConsoleInput.Location = new System.Drawing.Point(0, 19); - this.tbxConsoleInput.Multiline = true; - this.tbxConsoleInput.Name = "tbxConsoleInput"; - this.tbxConsoleInput.ScrollBars = System.Windows.Forms.ScrollBars.Both; - this.tbxConsoleInput.Size = new System.Drawing.Size(240, 230); - this.tbxConsoleInput.TabIndex = 3; - this.tbxConsoleInput.WordWrap = false; - // - // label3 - // - this.label3.AutoSize = true; - this.label3.Dock = System.Windows.Forms.DockStyle.Top; - this.label3.Location = new System.Drawing.Point(0, 0); - this.label3.Name = "label3"; - this.label3.Padding = new System.Windows.Forms.Padding(0, 3, 0, 3); - this.label3.Size = new System.Drawing.Size(72, 19); - this.label3.TabIndex = 0; - this.label3.Text = "Console Input"; - // - // panel5 - // - this.panel5.Controls.Add(this.tbxConsoleOutput); - this.panel5.Controls.Add(this.label4); - this.panel5.Dock = System.Windows.Forms.DockStyle.Fill; - this.panel5.Location = new System.Drawing.Point(249, 258); - this.panel5.Name = "panel5"; - this.panel5.Size = new System.Drawing.Size(240, 249); - this.panel5.TabIndex = 8; - // - // tbxConsoleOutput - // - this.tbxConsoleOutput.Dock = System.Windows.Forms.DockStyle.Fill; - this.tbxConsoleOutput.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tbxConsoleOutput.Location = new System.Drawing.Point(0, 19); - this.tbxConsoleOutput.Multiline = true; - this.tbxConsoleOutput.Name = "tbxConsoleOutput"; - this.tbxConsoleOutput.ReadOnly = true; - this.tbxConsoleOutput.ScrollBars = System.Windows.Forms.ScrollBars.Both; - this.tbxConsoleOutput.Size = new System.Drawing.Size(240, 230); - this.tbxConsoleOutput.TabIndex = 4; - this.tbxConsoleOutput.WordWrap = false; - // - // label4 - // - this.label4.AutoSize = true; - this.label4.Dock = System.Windows.Forms.DockStyle.Top; - this.label4.Location = new System.Drawing.Point(0, 0); - this.label4.Name = "label4"; - this.label4.Padding = new System.Windows.Forms.Padding(0, 3, 0, 3); - this.label4.Size = new System.Drawing.Size(80, 19); - this.label4.TabIndex = 0; - this.label4.Text = "Console Output"; - // - // statusStrip1 - // - this.statusStrip1.Location = new System.Drawing.Point(0, 510); - this.statusStrip1.Name = "statusStrip1"; - this.statusStrip1.Size = new System.Drawing.Size(649, 22); - this.statusStrip1.TabIndex = 3; - this.statusStrip1.Text = "statusStrip1"; - // - // cbxEntryPoint - // - this.cbxEntryPoint.Dock = System.Windows.Forms.DockStyle.Fill; - this.cbxEntryPoint.FormattingEnabled = true; - this.cbxEntryPoint.Location = new System.Drawing.Point(3, 16); - this.cbxEntryPoint.Name = "cbxEntryPoint"; - this.cbxEntryPoint.Size = new System.Drawing.Size(147, 21); - this.cbxEntryPoint.TabIndex = 1; - // - // panel2 - // - this.panel2.AutoScroll = true; - this.panel2.Controls.Add(this.clbOptions); - this.panel2.Controls.Add(this.btnRun); - this.panel2.Controls.Add(this.groupBox2); - this.panel2.Controls.Add(this.groupBox1); - this.panel2.Dock = System.Windows.Forms.DockStyle.Left; - this.panel2.Location = new System.Drawing.Point(0, 0); - this.panel2.Name = "panel2"; - this.panel2.Size = new System.Drawing.Size(157, 510); - this.panel2.TabIndex = 5; - // - // clbOptions - // - this.clbOptions.FormattingEnabled = true; - this.clbOptions.Location = new System.Drawing.Point(0, 279); - this.clbOptions.Name = "clbOptions"; - this.clbOptions.Size = new System.Drawing.Size(157, 199); - this.clbOptions.TabIndex = 3; - // - // groupBox2 - // - this.groupBox2.Controls.Add(this.cbxEntryPoint); - this.groupBox2.Location = new System.Drawing.Point(0, 4); - this.groupBox2.Name = "groupBox2"; - this.groupBox2.Size = new System.Drawing.Size(153, 45); - this.groupBox2.TabIndex = 1; - this.groupBox2.TabStop = false; - this.groupBox2.Text = "Entry Point"; - // - // groupBox1 - // - this.groupBox1.AutoSize = true; - this.groupBox1.Controls.Add(this.btnClearAllArguments); - this.groupBox1.Controls.Add(this.btnAddArgument); - this.groupBox1.Controls.Add(this.tbxArgument); - this.groupBox1.Controls.Add(this.lbxArguments); - this.groupBox1.Location = new System.Drawing.Point(0, 51); - this.groupBox1.Name = "groupBox1"; - this.groupBox1.Size = new System.Drawing.Size(154, 222); - this.groupBox1.TabIndex = 0; - this.groupBox1.TabStop = false; - this.groupBox1.Text = "Arguments"; - // - // btnClearAllArguments - // - this.btnClearAllArguments.Location = new System.Drawing.Point(3, 181); - this.btnClearAllArguments.Name = "btnClearAllArguments"; - this.btnClearAllArguments.Size = new System.Drawing.Size(145, 22); - this.btnClearAllArguments.TabIndex = 3; - this.btnClearAllArguments.Text = "Clear All"; - this.btnClearAllArguments.UseVisualStyleBackColor = true; - this.btnClearAllArguments.Click += new System.EventHandler(this.btnClearAllArguments_Click); - // - // btnAddArgument - // - this.btnAddArgument.Location = new System.Drawing.Point(87, 154); - this.btnAddArgument.Name = "btnAddArgument"; - this.btnAddArgument.Size = new System.Drawing.Size(61, 22); - this.btnAddArgument.TabIndex = 2; - this.btnAddArgument.Text = "Add"; - this.btnAddArgument.UseVisualStyleBackColor = true; - this.btnAddArgument.Click += new System.EventHandler(this.btnAddArgument_Click); - // - // tbxArgument - // - this.tbxArgument.Location = new System.Drawing.Point(3, 155); - this.tbxArgument.Name = "tbxArgument"; - this.tbxArgument.Size = new System.Drawing.Size(83, 20); - this.tbxArgument.TabIndex = 1; - // - // lbxArguments - // - this.lbxArguments.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.lbxArguments.FormattingEnabled = true; - this.lbxArguments.Location = new System.Drawing.Point(3, 16); - this.lbxArguments.Name = "lbxArguments"; - this.lbxArguments.Size = new System.Drawing.Size(147, 134); - this.lbxArguments.TabIndex = 0; - // - // AwkForm - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(649, 532); - this.Controls.Add(this.tableLayoutPanel1); - this.Controls.Add(this.panel2); - this.Controls.Add(this.statusStrip1); - this.Name = "AwkForm"; - this.Text = "ASE.NET.AWK"; - this.Load += new System.EventHandler(this.AwkForm_Load); - this.tableLayoutPanel1.ResumeLayout(false); - this.panel1.ResumeLayout(false); - this.panel1.PerformLayout(); - this.panel3.ResumeLayout(false); - this.panel3.PerformLayout(); - this.panel4.ResumeLayout(false); - this.panel4.PerformLayout(); - this.panel5.ResumeLayout(false); - this.panel5.PerformLayout(); - this.panel2.ResumeLayout(false); - this.panel2.PerformLayout(); - this.groupBox2.ResumeLayout(false); - this.groupBox1.ResumeLayout(false); - this.groupBox1.PerformLayout(); - this.ResumeLayout(false); - this.PerformLayout(); - - } - - #endregion - - private System.Windows.Forms.TextBox tbxSourceInput; - private System.Windows.Forms.Button btnRun; - private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; - private System.Windows.Forms.TextBox tbxSourceOutput; - private System.Windows.Forms.TextBox tbxConsoleInput; - private System.Windows.Forms.TextBox tbxConsoleOutput; - private System.Windows.Forms.StatusStrip statusStrip1; - private System.Windows.Forms.ComboBox cbxEntryPoint; - private System.Windows.Forms.Panel panel2; - private System.Windows.Forms.GroupBox groupBox1; - private System.Windows.Forms.Button btnClearAllArguments; - private System.Windows.Forms.Button btnAddArgument; - private System.Windows.Forms.TextBox tbxArgument; - private System.Windows.Forms.ListBox lbxArguments; - private System.Windows.Forms.GroupBox groupBox2; - private System.Windows.Forms.Panel panel1; - private System.Windows.Forms.Label label1; - private System.Windows.Forms.Panel panel3; - private System.Windows.Forms.Label label2; - private System.Windows.Forms.Panel panel4; - private System.Windows.Forms.Label label3; - private System.Windows.Forms.Panel panel5; - private System.Windows.Forms.Label label4; - private System.Windows.Forms.CheckedListBox clbOptions; - } -} diff --git a/qse/cmd/net/AwkForm.cs b/qse/cmd/net/AwkForm.cs deleted file mode 100644 index cf45e6732b227645aadc2deafacc895aa6dc738b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13312 zcmd5?OK%%h6u#TxS4=HIoff%;B`+y2ibc{?ad}8pRi%krOjEnqX`2$@H-N;?=!zX% zBpypP>{#+UfbY9!j_*BpX5yK|LCA7qkMFtnJiqgp`RDJaZstaA>>j$@4crTSJ90z! z*uCvu!K?1qo?CYlcZk=}?So>3Z)4E*+znhA<2}W-{YJYyc27Jt>5kksJ|BSoa3Sr6 z+r#?32J5C+^}LXBkzBWN_A&NdwC)qX-vPLN?&W?TpQg~;Y$0Xe?G$UM;W2o7j5BA@ z!X7j>gdO(qZ3tabk4N4PC;o4SHBa4r=!Uw@J;f9&MxZ#v_kH{&?F^q+!Pg_FT;=X9 zT+?qnH*>ltcb$TJ+MTu>LjTqmdhWLS3~Pqi{h-jJy_SQHD{}WP-eYh{-w+*UIIHRe z;gHgj(>ltmkUW*$%GY%(^L0V4%=N*`Xs)4=`w}wHbFI&jI`Eny4(L~+Sw_Y#GM;secano1RXh?DW0LE8~3z&@ugO8ywKed*E$&3SU*L!+u|TjfpR$ z+LZ_#Vt>XMeexMj9u=OkSUXmu)@x7OyDY!e`dRmFqPZ?KdIZZV8Zwq2y4NAQy}l2f zJehk;wf=_Cm*5#AX|cYVtx{}}h>DRQK5vl@bGK+kvvZp0lyX&hp|z@>7j#K0JZtQG zb6U6V-W9tq+9l?71O9T_F7wqY{jzIyTCR#AFG20D++|B9lgJO~!W9Awb>X=vP(!)mLyjWG3xlR36$3HGf)hsUs_p4asm zSfW zb@0B5w?tUI9INHqMG>Ue-}tnOYwqLkMw?%JHY_EACK zCsL20rL+0VGHn`1MBvQI9IRt&oT_M$cxN^B*!$_x|4hmI6CYbI8w5gO$|~)@DUG_2|1fubWnJgHQVJDqMzL;J%FA-{jn!GFddf749v#^zxEkcvqM}-;x6-eGxd2; zYt1h7DqO`HzvJ#g+7rB~g%R}2{J8JyBw`rr-xux{ti&qV)<|C`rv~3&j7*Aol#Er6 zt>XjAsb^)tk!wX3w6ZUfOMB0=%9Wy4org)a>BYepWB-j;id|$i|7s^~ z_v5OSV$aaWrJ1bU--ek=4;?WvatxcZUuRV#9>`9asPzb5!?+ybFXO43R_;zR0{%2~WJ-Sv(6uGXjGi57E=RJ-DzvaiOC{KlGf1g!@fif=xE zu4tuh5h*$9P@%sLY2@2G`2Pmv)0bSoiYg%9E%u4D{+0-~oQUOvR2evs3Q4SX$>3n_ zUc*Z)O6vzJ@50hwAm5H42N5XdiMYnyECqc*@kQ)YJml?9v5HI#-vJ2;GdL@;o zyjSQEs4e0LXGnGR4C}yMyms(r1-pj-tH_v}#o3qLtGIpz*0>CbzWw#(kH7z%PX7 z-t^UV*&Abxu!c&z9ah0ambkv+d@cA^jBVChVLz$3>-Lggo9x3V2vuj9v+!$^-9!dk z%u6++c-%{LME_MBiZztGuked#u;)JZ{5%EEslMXc zsk*b{)$?;hl)y}*f%QH9HO(t$cjq>mDOwH!mvIb_LS47Q= zSx>6lnAhN$YOR3ITRwJJ?MUaqS%K~;-e0D%6NmIS}@}6JFY0E30zlds5g^@@?=Z&Z>2W(!new&AzstsNy4@2zHRs zSas4S^~)3DjUacyx7D#~K{>jEHFvSHsb*z8=kF7rZxlVsb!O;7^~~7b8LT+L>(KLT@j)t_ zE^J3j(~{wiK^6Mh6*2zN|EoG4URMpIz8Wy@63$(m(PAqqQUx4Q+4)~RsEmV(Khy&) zaenNKBU$deSse!)uo%1?^sJJ4+1UACp{IDG#kVTtj5V(JPpob&c2@0M_C<@F_FEiJ z>QkHzPCO!qh>X{%4=&dlRlTkB3`Fs|JN}G9McY(z%@I|1SA%5gXK|0TfjHySAF&p4 zkNrUpX+=hQJL|py+)1CxvFEBSbk{}G+f`KC2c^7q(bHVP&@@|y`=@R1@-)l7BC8^J z{pqRI7jY{Xmfl&;icC>HhfnD2qYjv%gRy6+^)yR0wIbt-edH9DtT#A)kE^AWqWW$udq7S^`25yQAOW9G zIE1ZqFXbhDmL}#my#ub?5Lw!u8fW@getMV8_W1;vNGpD*-(uP0)j=XzAHK&F)-tKI zR@*m=^Mh_Ir+j{iH8bx>a0(eFF=ZK8ABHGM;~?dunKna*ejW~EJ+rH?^qHET5YJG_wmIV;)$CSGLttO1*pz z=_8V<+Gs3LU99(q`w3f^?+oy2!)2NJqPZ1+qqR3%avD=!ESKVweW1z!Z@GiiPOsHF zEZ;Y&MSABB5T*~bZl}{S_3}AfM|5w2yEa~_G#6{-Rd99#7N+*LVdZeIvl%8<(JxIk$d diff --git a/qse/cmd/net/AwkForm.resx b/qse/cmd/net/AwkForm.resx deleted file mode 100644 index b9c202bf..00000000 --- a/qse/cmd/net/AwkForm.resx +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 17, 17 - - \ No newline at end of file diff --git a/qse/cmd/net/Program.cs b/qse/cmd/net/Program.cs deleted file mode 100644 index 16d6648a..00000000 --- a/qse/cmd/net/Program.cs +++ /dev/null @@ -1,20 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Windows.Forms; - -namespace ase.net -{ - static class Program - { - /// - /// The main entry point for the application. - /// - [STAThread] - static void Main() - { - Application.EnableVisualStyles(); - Application.SetCompatibleTextRenderingDefault(false); - Application.Run(new AwkForm()); - } - } -} diff --git a/qse/cmd/net/Properties/AssemblyInfo.cs b/qse/cmd/net/Properties/AssemblyInfo.cs deleted file mode 100644 index 0c47af84..00000000 --- a/qse/cmd/net/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,33 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("asenet")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("asenet")] -[assembly: AssemblyCopyright("Copyright © 2007")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("ceaa9e15-13fb-4248-a906-14965d5019c3")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/qse/cmd/net/Properties/Resources.Designer.cs b/qse/cmd/net/Properties/Resources.Designer.cs deleted file mode 100644 index a010fb20..00000000 --- a/qse/cmd/net/Properties/Resources.Designer.cs +++ /dev/null @@ -1,63 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:2.0.50727.832 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace ase.net.Properties { - using System; - - - /// - /// A strongly-typed resource class, for looking up localized strings, etc. - /// - // This class was auto-generated by the StronglyTypedResourceBuilder - // class via a tool like ResGen or Visual Studio. - // To add or remove a member, edit your .ResX file then rerun ResGen - // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "2.0.0.0")] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - internal class Resources { - - private static global::System.Resources.ResourceManager resourceMan; - - private static global::System.Globalization.CultureInfo resourceCulture; - - [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - internal Resources() { - } - - /// - /// Returns the cached ResourceManager instance used by this class. - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Resources.ResourceManager ResourceManager { - get { - if (object.ReferenceEquals(resourceMan, null)) { - global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ase.net.Properties.Resources", typeof(Resources).Assembly); - resourceMan = temp; - } - return resourceMan; - } - } - - /// - /// Overrides the current thread's CurrentUICulture property for all - /// resource lookups using this strongly typed resource class. - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture { - get { - return resourceCulture; - } - set { - resourceCulture = value; - } - } - } -} diff --git a/qse/cmd/net/Properties/Resources.resx b/qse/cmd/net/Properties/Resources.resx deleted file mode 100644 index af7dbebb..00000000 --- a/qse/cmd/net/Properties/Resources.resx +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - \ No newline at end of file diff --git a/qse/cmd/net/Properties/Settings.Designer.cs b/qse/cmd/net/Properties/Settings.Designer.cs deleted file mode 100644 index 9dfd2cf8..00000000 --- a/qse/cmd/net/Properties/Settings.Designer.cs +++ /dev/null @@ -1,26 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:2.0.50727.832 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace ase.net.Properties { - - - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "8.0.0.0")] - internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { - - private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); - - public static Settings Default { - get { - return defaultInstance; - } - } - } -} diff --git a/qse/cmd/net/Properties/Settings.settings b/qse/cmd/net/Properties/Settings.settings deleted file mode 100644 index 39645652..00000000 --- a/qse/cmd/net/Properties/Settings.settings +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/qse/cmd/net/asenet.csproj b/qse/cmd/net/asenet.csproj deleted file mode 100644 index b01278b9..00000000 --- a/qse/cmd/net/asenet.csproj +++ /dev/null @@ -1,102 +0,0 @@ - - - Debug - AnyCPU - 8.0.50727 - 2.0 - {7CC01C3D-FC1A-4587-868A-7FC4449B3F8B} - WinExe - Properties - ase.net - ase.net - - - true - full - false - ..\..\Debug\bin\ - DEBUG;TRACE - prompt - 4 - - - pdbonly - true - ..\..\Release\bin\ - TRACE - prompt - 4 - - - true - bin\x64\Debug\ - DEBUG;TRACE - full - x64 - prompt - - - bin\x64\Release\ - TRACE - true - pdbonly - x64 - prompt - - - - - - - - - - - - - Form - - - AwkForm.cs - - - - - AwkForm.cs - Designer - - - ResXFileCodeGenerator - Resources.Designer.cs - Designer - - - True - Resources.resx - True - - - SettingsSingleFileGenerator - Settings.Designer.cs - - - True - Settings.settings - True - - - - - {A63E9DF9-1D47-4D81-834C-1D40406C18C4} - asenet - - - - - diff --git a/qse/cmd/stx/makefile.bcc b/qse/cmd/stx/makefile.bcc deleted file mode 100644 index f4e2a7da..00000000 --- a/qse/cmd/stx/makefile.bcc +++ /dev/null @@ -1,21 +0,0 @@ -CC = bcc32 -CFLAGS = -I..\..\.. -LDFLAGS = -L..\..\..\xp\bas -L..\..\..\xp\stx -LIBS = import32.lib cw32mt.lib xpbas.lib xpstx.lib -STARTUP = c0x32w.obj - -all: stx parser - -stx: stx.obj - ilink32 $(LDFLAGS) $(STARTUP) stx.obj,stx.exe,,$(LIBS),, - -parser: parser.obj - ilink32 $(LDFLAGS) $(STARTUP) parser.obj,parser.exe,,$(LIBS),, - -clean: - del $(OBJS) *.obj $(OUT) - -.SUFFIXES: .c .obj -.c.obj: - $(CC) $(CFLAGS) -c $< - diff --git a/qse/cmd/stx/makefile.cl b/qse/cmd/stx/makefile.cl deleted file mode 100644 index 2a717481..00000000 --- a/qse/cmd/stx/makefile.cl +++ /dev/null @@ -1,20 +0,0 @@ -CC = cl -CFLAGS = /nologo /MT /GX /W3 /GR- -I..\..\.. -LDFLAGS = /libpath:..\..\cmn /libpath:..\..\stx -LIBS = asecmn.lib asestx.lib - -all: stx parser - -stx: stx.obj - link /nologo /out:stx.exe $(LDFLAGS) $(LIBS) stx.obj - -parser: parser.obj - link /nologo /out:parser.exe $(LDFLAGS) $(LIBS) parser.obj - -clean: - del $(OBJS) *.obj stx.exe parser.exe - -.SUFFIXES: .c .obj -.c.obj: - $(CC) /c $(CFLAGS) $< - diff --git a/qse/cmd/tgp/makefile.in b/qse/cmd/tgp/makefile.in index f272d8ca..a5ef97bb 100644 --- a/qse/cmd/tgp/makefile.in +++ b/qse/cmd/tgp/makefile.in @@ -40,7 +40,7 @@ am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/include/ase/config.h +CONFIG_HEADER = $(top_builddir)/include/qse/config.h CONFIG_CLEAN_FILES = am__installdirs = "$(DESTDIR)$(bindir)" binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) @@ -51,7 +51,7 @@ asetgp_DEPENDENCIES = asetgp_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(asetgp_LDFLAGS) \ $(LDFLAGS) -o $@ -DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include/ase +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include/qse depcomp = $(SHELL) $(top_srcdir)/autoconf/depcomp am__depfiles_maybe = depfiles COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ diff --git a/qse/cmd/tgp/tgp.c b/qse/cmd/tgp/tgp.c index abb7e293..399510db 100644 --- a/qse/cmd/tgp/tgp.c +++ b/qse/cmd/tgp/tgp.c @@ -2,15 +2,15 @@ * $Id: tgp.c,v 1.5 2007/05/16 09:15:14 bacon Exp $ */ -#include +#include -#include -#include +#include +#include -#include -#include -#include -#include +#include +#include +#include +#include #include #include @@ -29,59 +29,59 @@ #include #endif -static void print_usage (const ase_char_t* argv0) +static void print_usage (const qse_char_t* argv0) { - ase_fprintf (ASE_STDERR, - ASE_T("Usage: %s [options] [file]\n"), argv0); - ase_fprintf (ASE_STDERR, - ASE_T(" -h print this message\n")); + qse_fprintf (QSE_STDERR, + QSE_T("Usage: %s [options] [file]\n"), argv0); + qse_fprintf (QSE_STDERR, + QSE_T(" -h print this message\n")); - ase_fprintf (ASE_STDERR, - ASE_T(" -u user id\n")); - ase_fprintf (ASE_STDERR, - ASE_T(" -g group id\n")); - ase_fprintf (ASE_STDERR, - ASE_T(" -r chroot\n")); - ase_fprintf (ASE_STDERR, - ASE_T(" -U enable upload\n")); + qse_fprintf (QSE_STDERR, + QSE_T(" -u user id\n")); + qse_fprintf (QSE_STDERR, + QSE_T(" -g group id\n")); + qse_fprintf (QSE_STDERR, + QSE_T(" -r chroot\n")); + qse_fprintf (QSE_STDERR, + QSE_T(" -U enable upload\n")); } -static int handle_args (int argc, ase_char_t* argv[]) +static int handle_args (int argc, qse_char_t* argv[]) { - ase_opt_t opt; - ase_cint_t c; + qse_opt_t opt; + qse_cint_t c; - ase_memset (&opt, 0, ASE_SIZEOF(opt)); - opt.str = ASE_T("hu:g:r:"); + qse_memset (&opt, 0, QSE_SIZEOF(opt)); + opt.str = QSE_T("hu:g:r:"); - while ((c = ase_getopt (argc, argv, &opt)) != ASE_CHAR_EOF) + while ((c = qse_getopt (argc, argv, &opt)) != QSE_CHAR_EOF) { switch (c) { - case ASE_T('h'): + case QSE_T('h'): print_usage (argv[0]); return -1; - case ASE_T('?'): - ase_fprintf (ASE_STDERR, ASE_T("Error: illegal option - %c\n"), opt.opt); + case QSE_T('?'): + qse_fprintf (QSE_STDERR, QSE_T("Error: illegal option - %c\n"), opt.opt); print_usage (argv[0]); return -1; - case ASE_T(':'): - ase_fprintf (ASE_STDERR, ASE_T("Error: missing argument for %c\n"), opt.opt); + case QSE_T(':'): + qse_fprintf (QSE_STDERR, QSE_T("Error: missing argument for %c\n"), opt.opt); print_usage (argv[0]); return -1; - case ASE_T('u'): + case QSE_T('u'): //opt.arg; break; - case ASE_T('g'): + case QSE_T('g'): //opt.arg; break; - case ASE_T('r'): + case QSE_T('r'): //opt.arg; break; - case ASE_T('U'): + case QSE_T('U'): //opt.arg; break; } @@ -89,7 +89,7 @@ static int handle_args (int argc, ase_char_t* argv[]) if (opt.ind < argc) { - ase_printf (ASE_T("Error: redundant argument - %s\n"), argv[opt.ind]); + qse_printf (QSE_T("Error: redundant argument - %s\n"), argv[opt.ind]); print_usage (argv[0]); return -1; } @@ -99,70 +99,70 @@ static int handle_args (int argc, ase_char_t* argv[]) typedef struct xin_t { - const ase_char_t* name; - ASE_FILE* fp; + const qse_char_t* name; + QSE_FILE* fp; } xin_t; typedef struct xout_t { - const ase_char_t* name; - ASE_FILE* fp; + const qse_char_t* name; + QSE_FILE* fp; } xout_t; -static int io_in (int cmd, void* arg, ase_char_t* buf, int len) +static int io_in (int cmd, void* arg, qse_char_t* buf, int len) { xin_t* xin = (xin_t*)arg; switch (cmd) { - case ASE_TGP_IO_OPEN: - xin->fp = (xin->name == ASE_NULL)? - ASE_STDIN: - ase_fopen(xin->name,ASE_T("r")); + case QSE_TGP_IO_OPEN: + xin->fp = (xin->name == QSE_NULL)? + QSE_STDIN: + qse_fopen(xin->name,QSE_T("r")); return (xin->fp == NULL)? -1: 0; - case ASE_TGP_IO_CLOSE: - if (xin->name != ASE_NULL) ase_fclose (xin->fp); + case QSE_TGP_IO_CLOSE: + if (xin->name != QSE_NULL) qse_fclose (xin->fp); return 0; - case ASE_TGP_IO_READ: - if (ase_fgets (buf, len, xin->fp) == ASE_NULL) return 0; - return ase_strlen(buf); + case QSE_TGP_IO_READ: + if (qse_fgets (buf, len, xin->fp) == QSE_NULL) return 0; + return qse_strlen(buf); } return -1; } -static int io_out (int cmd, void* arg, ase_char_t* buf, int len) +static int io_out (int cmd, void* arg, qse_char_t* buf, int len) { xout_t* xout = (xout_t*)arg; switch (cmd) { - case ASE_TGP_IO_OPEN: - xout->fp = (xout->name == ASE_NULL)? - ASE_STDOUT: - ase_fopen(xout->name,ASE_T("r")); + case QSE_TGP_IO_OPEN: + xout->fp = (xout->name == QSE_NULL)? + QSE_STDOUT: + qse_fopen(xout->name,QSE_T("r")); return (xout->fp == NULL)? -1: 0; - case ASE_TGP_IO_CLOSE: - if (xout->name != ASE_NULL) ase_fclose (xout->fp); + case QSE_TGP_IO_CLOSE: + if (xout->name != QSE_NULL) qse_fclose (xout->fp); return 0; - case ASE_TGP_IO_WRITE: - ase_fprintf (xout->fp, ASE_T("%.*s"), len, buf); + case QSE_TGP_IO_WRITE: + qse_fprintf (xout->fp, QSE_T("%.*s"), len, buf); return len; } return -1; } -int tgp_main (int argc, ase_char_t* argv[]) +int tgp_main (int argc, qse_char_t* argv[]) { - ase_tgp_t* tgp; + qse_tgp_t* tgp; xin_t xin; xout_t xout; @@ -171,36 +171,36 @@ int tgp_main (int argc, ase_char_t* argv[]) if (handle_args (argc, argv) == -1) return -1; - tgp = ase_tgp_open (ASE_MMGR_GETDFL()); - if (tgp == ASE_NULL) + tgp = qse_tgp_open (QSE_MMGR_GETDFL()); + if (tgp == QSE_NULL) { - ase_fprintf (ASE_STDERR, - ASE_T("Error: cannot create a tgp instance\n")); + qse_fprintf (QSE_STDERR, + QSE_T("Error: cannot create a tgp instance\n")); return -1; } - xin.name = ASE_T("x.tgp"); - xout.name = ASE_NULL; + xin.name = QSE_T("x.tgp"); + xout.name = QSE_NULL; - ase_tgp_attachin (tgp, io_in, &xin); - ase_tgp_attachout (tgp, io_out, &xout); + qse_tgp_attachin (tgp, io_in, &xin); + qse_tgp_attachout (tgp, io_out, &xout); /* - ase_tgp_setexecin (tgp, io, ); - ase_tgp_setexecout (tgp, io, ); + qse_tgp_setexecin (tgp, io, ); + qse_tgp_setexecout (tgp, io, ); */ - if (ase_tgp_run (tgp) == -1) + if (qse_tgp_run (tgp) == -1) { - ase_fprintf (ASE_STDERR, - ASE_T("Error: cannot run a tgp instance\n")); + qse_fprintf (QSE_STDERR, + QSE_T("Error: cannot run a tgp instance\n")); ret = -1; } - ase_tgp_close (tgp); + qse_tgp_close (tgp); return ret; } -int ase_main (int argc, ase_achar_t* argv[]) +int qse_main (int argc, qse_achar_t* argv[]) { int n; @@ -208,7 +208,7 @@ int ase_main (int argc, ase_achar_t* argv[]) mtrace (); #endif - n = ase_runmain (argc, argv, tgp_main); + n = qse_runmain (argc, argv, tgp_main); #if defined(__linux) && defined(_DEBUG) muntrace (); diff --git a/qse/com/Awk.cpp b/qse/com/Awk.cpp deleted file mode 100644 index 4e783d1e..00000000 --- a/qse/com/Awk.cpp +++ /dev/null @@ -1,1530 +0,0 @@ -/* - * $Id: Awk.cpp 117 2008-03-03 11:20:05Z baconevi $ - * - * {License} - */ - -#include "stdafx.h" -#include "asecom.h" -#include "Awk.h" -#include "AwkExtio.h" -#include "Buffer.h" -#include -#include -#include -#include -#include - -#include -#include -#include - -#ifdef _MSC_VER -#pragma warning (disable: 4996) -#endif - -#define DBGOUT(x) do { if (debug) OutputDebugString (x); } while(0) -#define DBGOUT2(awk,x) do { if (awk->debug) OutputDebugString (x); } while(0) - -STDMETHODIMP CAwk::InterfaceSupportsErrorInfo(REFIID riid) -{ - static const IID* arr[] = - { - &IID_IAwk, - }; - - for (int i=0;inext; - free (word_list); - word_list = next; - } - - while (bfn_list != NULL) - { - bfn_t* next = bfn_list->next; - free (bfn_list); - bfn_list = next; - } - - if (entry_point != NULL) SysFreeString (entry_point); - - if (write_extio_buf != NULL) write_extio_buf->Release (); - if (write_src_buf != NULL) write_src_buf->Release (); - if (read_src_buf != NULL) read_src_buf->Release (); - - if (handle != NULL) - { - ase_awk_close (handle); - handle = NULL; - DBGOUT (_T("closed awk")); - } -} - -#ifndef NDEBUG -void ase_assert_abort (void) -{ - abort (); -} - -void ase_assert_printf (const ase_char_t* fmt, ...) -{ - va_list ap; - int n; - ase_char_t buf[1024]; - - va_start (ap, fmt); - n = _vsntprintf (buf, ASE_COUNTOF(buf), fmt, ap); - if (n < 0) buf[ASE_COUNTOF(buf)-1] = ASE_T('\0'); - - MessageBox (NULL, buf, ASE_T("Assertion Failure"), MB_OK|MB_ICONERROR); - va_end (ap); -} -#endif - -static void* custom_awk_malloc (void* custom, ase_size_t n) -{ - return malloc (n); -} - -static void* custom_awk_realloc (void* custom, void* ptr, ase_size_t n) -{ - return realloc (ptr, n); -} - -static void custom_awk_free (void* custom, void* ptr) -{ - free (ptr); -} - -ase_bool_t custom_awk_isupper (void* custom, ase_cint_t c) -{ - return ase_isupper (c); -} - -ase_bool_t custom_awk_islower (void* custom, ase_cint_t c) -{ - return ase_islower (c); -} - -ase_bool_t custom_awk_isalpha (void* custom, ase_cint_t c) -{ - return ase_isalpha (c); -} - -ase_bool_t custom_awk_isdigit (void* custom, ase_cint_t c) -{ - return ase_isdigit (c); -} - -ase_bool_t custom_awk_isxdigit (void* custom, ase_cint_t c) -{ - return ase_isxdigit (c); -} - -ase_bool_t custom_awk_isalnum (void* custom, ase_cint_t c) -{ - return ase_isalnum (c); -} - -ase_bool_t custom_awk_isspace (void* custom, ase_cint_t c) -{ - return ase_isspace (c); -} - -ase_bool_t custom_awk_isprint (void* custom, ase_cint_t c) -{ - return ase_isprint (c); -} - -ase_bool_t custom_awk_isgraph (void* custom, ase_cint_t c) -{ - return ase_isgraph (c); -} - -ase_bool_t custom_awk_iscntrl (void* custom, ase_cint_t c) -{ - return ase_iscntrl (c); -} - -ase_bool_t custom_awk_ispunct (void* custom, ase_cint_t c) -{ - return ase_ispunct (c); -} - -ase_cint_t custom_awk_toupper (void* custom, ase_cint_t c) -{ - return ase_toupper (c); -} - -ase_cint_t custom_awk_tolower (void* custom, ase_cint_t c) -{ - return ase_tolower (c); -} - -static ase_real_t custom_awk_pow (void* custom, ase_real_t x, ase_real_t y) -{ - return pow (x, y); -} - - -static int custom_awk_sprintf ( - void* custom, ase_char_t* buf, ase_size_t size, - const ase_char_t* fmt, ...) -{ - int n; - - va_list ap; - va_start (ap, fmt); - n = ase_vsprintf (buf, size, fmt, ap); - va_end (ap); - - return n; -} - -static void custom_awk_dprintf (void* custom, const ase_char_t* fmt, ...) -{ - va_list ap; - va_start (ap, fmt); - _vftprintf (stderr, fmt, ap); - va_end (ap); -} - -static ase_ssize_t read_source ( - int cmd, void* arg, ase_char_t* data, ase_size_t count) -{ - CAwk* awk = (CAwk*)arg; - - if (cmd == ASE_AWK_IO_OPEN) - { - return (ase_ssize_t)awk->Fire_OpenSource (AWK_SOURCE_READ); - } - else if (cmd == ASE_AWK_IO_CLOSE) - { - return (ase_ssize_t)awk->Fire_CloseSource (AWK_SOURCE_READ); - } - else if (cmd == ASE_AWK_IO_READ) - { - if (awk->read_src_buf == NULL) - { - HRESULT hr = CoCreateInstance ( - CLSID_Buffer, NULL, CLSCTX_ALL, - IID_IBuffer, (void**)&awk->read_src_buf); - if (FAILED(hr)) - { - DBGOUT2 (awk, _T("cannot create source input buffer")); - return -1; - } - - awk->read_src_pos = 0; - awk->read_src_len = 0; - } - - CBuffer* tmp = (CBuffer*)awk->read_src_buf; - - if (awk->read_src_pos >= awk->read_src_len) - { - INT n = awk->Fire_ReadSource (awk->read_src_buf); - if (n <= 0) return (ase_ssize_t)n; - - if (SysStringLen(tmp->str) < (UINT)n) return -1; - awk->read_src_pos = 0; - awk->read_src_len = n; - } - - ASE_ASSERT (awk->read_src_pos < awk->read_src_len); - - BSTR str = tmp->str; - INT left = awk->read_src_len - awk->read_src_pos; - if (left > (ase_ssize_t)count) - { - memcpy (data, - ((TCHAR*)str)+awk->read_src_pos, - count * ASE_SIZEOF(ase_char_t)); - awk->read_src_pos += count; - return count; - } - else - { - memcpy (data, - ((TCHAR*)str)+awk->read_src_pos, - left * ASE_SIZEOF(ase_char_t)); - awk->read_src_pos = 0; - awk->read_src_len = 0; - return (ase_ssize_t)left; - } - } - - return -1; -} - -static ase_ssize_t write_source ( - int cmd, void* arg, ase_char_t* data, ase_size_t count) -{ - CAwk* awk = (CAwk*)arg; - - if (cmd == ASE_AWK_IO_OPEN) - { - return (ase_ssize_t)awk->Fire_OpenSource (AWK_SOURCE_WRITE); - } - else if (cmd == ASE_AWK_IO_CLOSE) - { - return (ase_ssize_t)awk->Fire_CloseSource (AWK_SOURCE_WRITE); - } - else if (cmd == ASE_AWK_IO_WRITE) - { - HRESULT hr; - - if (awk->write_src_buf == NULL) - { - hr = CoCreateInstance ( - CLSID_Buffer, NULL, CLSCTX_ALL, - IID_IBuffer, (void**)&awk->write_src_buf); - if (FAILED(hr)) - { - DBGOUT2 (awk, _T("cannot create source output buffer")); - return -1; - } - } - - CBuffer* tmp = (CBuffer*)awk->write_src_buf; - if (tmp->PutValue (data, count) == FALSE) - { - DBGOUT2 (awk, _T("cannot set source output buffer")); - return -1; - } - - INT n = awk->Fire_WriteSource (awk->write_src_buf); - if (n > (INT)count) return -1; - return (ase_ssize_t)n; - } - - return -1; -} - -static int handle_bfn ( - ase_awk_run_t* run, const ase_char_t* fnm, ase_size_t fnl) -{ - CAwk* awk = (CAwk*)ase_awk_getruncustomdata (run); - long nargs = (long)ase_awk_getnargs (run); - ase_awk_val_t* v; - - SAFEARRAY* aa; - SAFEARRAYBOUND bound[1]; - - bound[0].lLbound = 0; - bound[0].cElements = nargs; - - aa = SafeArrayCreate (VT_VARIANT, ASE_COUNTOF(bound), bound); - if (aa == NULL) - { - ase_char_t buf[128]; - _sntprintf (buf, ASE_COUNTOF(buf), - _T("out of memory in creating argument array for '%.*s'"), - fnl, fnm); - //TODO: ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, buf); - return -1; - } - - for (long i = 0; i < nargs; i++) - { - VARIANT arg; - - VariantInit (&arg); - - v = ase_awk_getarg (run, i); - - if (v->type == ASE_AWK_VAL_INT) - { - if (awk->use_longlong) - { - arg.vt = VT_I8; - arg.llVal = ((ase_awk_val_int_t*)v)->val; - } - else - { - arg.vt = VT_I4; - arg.lVal = (LONG)((ase_awk_val_int_t*)v)->val; - } - } - else if (v->type == ASE_AWK_VAL_REAL) - { - arg.vt = VT_R8; - arg.dblVal = ((ase_awk_val_real_t*)v)->val; - } - else if (v->type == ASE_AWK_VAL_STR) - { - BSTR tmp = SysAllocStringLen ( - ((ase_awk_val_str_t*)v)->buf, - ((ase_awk_val_str_t*)v)->len); - - if (arg.bstrVal == NULL) - { - VariantClear (&arg); - SafeArrayDestroy (aa); - - ase_char_t buf[128]; - _sntprintf (buf, ASE_COUNTOF(buf), - _T("out of memory in handling '%.*s'"), - fnl, fnm); - //TODO: ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, buf); - return -1; - } - - arg.vt = VT_BSTR; - arg.bstrVal = tmp; - } - else if (v->type == ASE_AWK_VAL_NIL) - { - arg.vt = VT_NULL; - } - - HRESULT hr = SafeArrayPutElement (aa, &i, &arg); - if (hr != S_OK) - { - VariantClear (&arg); - SafeArrayDestroy (aa); - - ase_char_t buf[128]; - _sntprintf (buf, ASE_COUNTOF(buf), - _T("out of memory in handling '%.*s'"), - fnl, fnm); - //TODO: ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, buf); - return -1; - } - - VariantClear (&arg); - } - - BSTR name = SysAllocStringLen (fnm, fnl); - if (name == NULL) - { - SafeArrayDestroy (aa); - - ase_char_t buf[128]; - _sntprintf (buf, ASE_COUNTOF(buf), - _T("out of memory in handling '%.*s'"), - fnl, fnm); - //TODO: ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, buf); - - return -1; - } - - ase_awk_val_t* ret; - int n = awk->Fire_HandleFunction (run, name, aa, &ret); - if (n == 1) - { - ase_char_t buf[128]; - _sntprintf (buf, ASE_COUNTOF(buf), - _T("out of memory in handling '%.*s'"), - fnl, fnm); - //TODO: ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, buf); - return -1; - } - else if (n == 2) - { - ase_char_t buf[128]; - _sntprintf (buf, ASE_COUNTOF(buf), - _T("no handler for '%.*s'"), - fnl, fnm); - //TODO: ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, buf); - return -1; - } - else if (n == 3) - { - ase_char_t buf[128]; - _sntprintf (buf, ASE_COUNTOF(buf), - _T("return value not supported for '%.*s'"), - fnl, fnm); - //TODO: ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, buf); - return -1; - } - - /* name and aa are destroyed in HandleFunction */ - //SafeArrayDestroy (aa); - //SysFreeString (name); - - ase_awk_setretval (run, ret); - return 0; -} - -HRESULT CAwk::Parse (VARIANT_BOOL* ret) -{ - if (handle == NULL) - { - ase_awk_prmfns_t prmfns; - - memset (&prmfns, 0, sizeof(prmfns)); - - prmfns.mmgr.malloc = custom_awk_malloc; - prmfns.mmgr.realloc = custom_awk_realloc; - prmfns.mmgr.free = custom_awk_free; - - prmfns.ccls.is_upper = custom_awk_isupper; - prmfns.ccls.is_lower = custom_awk_islower; - prmfns.ccls.is_alpha = custom_awk_isalpha; - prmfns.ccls.is_digit = custom_awk_isdigit; - prmfns.ccls.is_xdigit = custom_awk_isxdigit; - prmfns.ccls.is_alnum = custom_awk_isalnum; - prmfns.ccls.is_space = custom_awk_isspace; - prmfns.ccls.is_print = custom_awk_isprint; - prmfns.ccls.is_graph = custom_awk_isgraph; - prmfns.ccls.is_cntrl = custom_awk_iscntrl; - prmfns.ccls.is_punct = custom_awk_ispunct; - prmfns.ccls.to_upper = custom_awk_toupper; - prmfns.ccls.to_lower = custom_awk_tolower; - - prmfns.misc.pow = custom_awk_pow; - prmfns.misc.sprintf = custom_awk_sprintf; - prmfns.misc.dprintf = custom_awk_dprintf; - - handle = ase_awk_open (&prmfns, NULL); - if (handle == NULL) - { - errlin = 0; - ase_strxcpy ( - errmsg, ASE_COUNTOF(errmsg), - ase_awk_geterrstr(NULL, ASE_AWK_ENOMEM)); - - *ret = VARIANT_FALSE; - - DBGOUT (_T("cannot open awk")); - return S_OK; - } - else DBGOUT (_T("opened awk successfully")); - } - - ase_awk_setoption (handle, option); - - ase_awk_setmaxdepth (handle, - ASE_AWK_DEPTH_BLOCK_PARSE, max_depth.block.parse); - ase_awk_setmaxdepth (handle, - ASE_AWK_DEPTH_BLOCK_RUN, max_depth.block.run); - ase_awk_setmaxdepth (handle, - ASE_AWK_DEPTH_EXPR_PARSE, max_depth.expr.parse); - ase_awk_setmaxdepth (handle, - ASE_AWK_DEPTH_EXPR_RUN, max_depth.expr.run); - ase_awk_setmaxdepth (handle, - ASE_AWK_DEPTH_REX_BUILD, max_depth.rex.build); - ase_awk_setmaxdepth (handle, - ASE_AWK_DEPTH_REX_MATCH, max_depth.rex.match); - - ase_awk_clrbfn (handle); - - for (bfn_t* bfn = bfn_list; bfn != NULL; bfn = bfn->next) - { - if (ase_awk_addfunc ( - handle, bfn->name.ptr, bfn->name.len, 0, - bfn->min_args, bfn->max_args, NULL, - handle_bfn) == NULL) - { - const ase_char_t* msg; - - DBGOUT (_T("cannot add the builtin function")); - - ase_awk_geterror (handle, &errnum, &errlin, &msg); - ase_strxcpy (errmsg, ASE_COUNTOF(errmsg), msg); - - *ret = VARIANT_FALSE; - return S_OK; - } - } - - ase_awk_setword (handle, NULL, 0, NULL, 0); - for (word_t* word = word_list; word != NULL; word = word->next) - { - if (ase_awk_setword (handle, - word->ow.ptr, word->ow.len, - word->nw.ptr, word->nw.len) == -1) - { - const ase_char_t* msg; - - DBGOUT (_T("cannot set the word")); - - ase_awk_geterror (handle, &errnum, &errlin, &msg); - ase_strxcpy (errmsg, ASE_COUNTOF(errmsg), msg); - - *ret = VARIANT_FALSE; - return S_OK; - } - } - - ase_awk_srcios_t srcios; - - srcios.in = read_source; - srcios.out = write_source; - srcios.custom_data = this; - - if (ase_awk_parse (handle, &srcios) == -1) - { - const ase_char_t* msg; - - ase_awk_geterror (handle, &errnum, &errlin, &msg); - ase_strxcpy (errmsg, ASE_COUNTOF(errmsg), msg); - - DBGOUT (_T("cannot parse the source code")); - - *ret = VARIANT_FALSE; - return S_OK; - } - else DBGOUT (_T("parsed the source code successfully")); - - *ret = VARIANT_TRUE; - return S_OK; -} - -static ase_ssize_t process_extio ( - int cmd, void* arg, ase_char_t* data, ase_size_t size) -{ - ase_awk_extio_t* epa = (ase_awk_extio_t*)arg; - CAwk* awk = (CAwk*)epa->custom_data; - - if (cmd == ASE_AWK_IO_OPEN) - { - IAwkExtio* extio; - CAwkExtio* extio2; - IBuffer* read_buf; - - HRESULT hr = CoCreateInstance ( - CLSID_AwkExtio, NULL, CLSCTX_ALL, - IID_IAwkExtio, (void**)&extio); - if (FAILED(hr)) - { - DBGOUT2 (awk, _T("cannot create extio")); - return -1; - } - - hr = CoCreateInstance ( - CLSID_Buffer, NULL, CLSCTX_ALL, - IID_IBuffer, (void**)&read_buf); - if (FAILED(hr)) - { - DBGOUT2 (awk, _T("cannot create extio input buffer")); - extio->Release (); - return -1; - } - - extio2 = (CAwkExtio*)extio; - if (extio2->PutName (epa->name) == FALSE) - { - read_buf->Release (); - extio->Release (); - DBGOUT2 (awk, _T("cannot set the name of the extio input buffer")); - return -1; - } - extio2->type = (AwkExtioType)(epa->type & 0xFF); - extio2->mode = (AwkExtioMode)(epa->mode); - - read_buf->AddRef (); - extio2->read_buf = read_buf; - extio2->read_buf_pos = 0; - extio2->read_buf_len = 0; - - INT n = awk->Fire_OpenExtio (extio); - if (n >= 0) - { - extio->AddRef (); - epa->handle = extio; - } - - read_buf->Release (); - extio->Release (); - return n; - } - else if (cmd == ASE_AWK_IO_CLOSE) - { - IAwkExtio* extio; - CAwkExtio* extio2; - - extio = (IAwkExtio*)epa->handle; - extio2 = (CAwkExtio*)extio; - - ASE_ASSERT (extio != NULL); - - INT n = awk->Fire_CloseExtio (extio); - if (n >= 0) - { - extio2->read_buf->Release(); - extio->Release(); - epa->handle = NULL; - } - - return n; - } - else if (cmd == ASE_AWK_IO_READ) - { - IAwkExtio* extio; - CAwkExtio* extio2; - - extio = (IAwkExtio*)epa->handle; - extio2 = (CAwkExtio*)extio; - - ASE_ASSERT (extio != NULL); - - CBuffer* tmp = (CBuffer*)extio2->read_buf; - if (extio2->read_buf_pos >= extio2->read_buf_len) - { - INT n = awk->Fire_ReadExtio (extio, extio2->read_buf); - if (n <= 0) return (ase_ssize_t)n; - - if (SysStringLen(tmp->str) < (UINT)n) return -1; - extio2->read_buf_pos = 0; - extio2->read_buf_len = n; - } - - ASE_ASSERT (extio2->read_buf_pos < extio2->read_buf_len); - - BSTR str = tmp->str; - INT left = extio2->read_buf_len - extio2->read_buf_pos; - if (left > (ase_ssize_t)size) - { - memcpy (data, - ((TCHAR*)str)+extio2->read_buf_pos, - size * ASE_SIZEOF(ase_char_t)); - extio2->read_buf_pos += size; - return size; - } - else - { - memcpy (data, - ((TCHAR*)str)+extio2->read_buf_pos, - left * ASE_SIZEOF(ase_char_t)); - extio2->read_buf_pos = 0; - extio2->read_buf_len = 0; - return (ase_ssize_t)left; - } - } - else if (cmd == ASE_AWK_IO_WRITE) - { - HRESULT hr; - IAwkExtio* extio = (IAwkExtio*)epa->handle; - ASE_ASSERT (extio != NULL); - - if (awk->write_extio_buf == NULL) - { - hr = CoCreateInstance ( - CLSID_Buffer, NULL, CLSCTX_ALL, - IID_IBuffer, (void**)&awk->write_extio_buf); - if (FAILED(hr)) - { - DBGOUT2 (awk, _T("cannot create extio output buffer")); - return -1; - } - } - - CBuffer* tmp = (CBuffer*)awk->write_extio_buf; - if (tmp->PutValue (data, size) == FALSE) return -1; - - INT n = awk->Fire_WriteExtio (extio, awk->write_extio_buf); - if (n > (INT)size) return -1; - return (ase_ssize_t)n; - } - else if (cmd == ASE_AWK_IO_FLUSH) - { - IAwkExtio* extio = (IAwkExtio*)epa->handle; - ASE_ASSERT (extio != NULL); - return awk->Fire_FlushExtio (extio); - } - else if (cmd == ASE_AWK_IO_NEXT) - { - IAwkExtio* extio = (IAwkExtio*)epa->handle; - ASE_ASSERT (extio != NULL); - return awk->Fire_NextExtio (extio); - } - - return -1; -} - -HRESULT CAwk::Run (VARIANT argarray, VARIANT_BOOL* ret) -{ - const ase_char_t* entry = NULL; - ase_awk_runarg_t* runarg; - long nrunargs; - - if (handle == NULL) - { - errnum = ASE_AWK_EINTERN; - errlin = 0; - _tcscpy (errmsg, _T("parse not called yet")); - - *ret = VARIANT_FALSE; - return S_OK; - } - - ase_awk_runios_t runios; - runios.pipe = NULL; - runios.coproc = NULL; - runios.file = process_extio; - runios.console = process_extio; - runios.custom_data = this; - - if (entry_point != NULL && - SysStringLen(entry_point) > 0) entry = entry_point; - - if (argarray.vt == VT_EMPTY || argarray.vt == VT_NULL) - { - /* no run-time argument specified */ - runarg = NULL; - } - else if (argarray.vt == (VT_ARRAY|VT_BSTR)) - { - SAFEARRAY* sa = argarray.parray; - UINT dim = SafeArrayGetDim (sa); - if (dim != 1) - { - /* arguments should not be multi-dimensional */ - errnum = ASE_AWK_EINTERN; - errlin = 0; - _tcscpy (errmsg, _T("multi-dimensional run-time argument array not allowed")); - - *ret = VARIANT_FALSE; - return S_OK; - } - - long lbound, ubound; - SafeArrayGetLBound (sa, 1, &lbound); - SafeArrayGetUBound (sa, 1, &ubound); - - nrunargs = ubound - lbound + 1; - runarg = (ase_awk_runarg_t*) malloc (sizeof(*runarg) * (nrunargs+1)); - if (runarg == NULL) - { - errnum = ASE_AWK_ENOMEM; - errlin = 0; - ase_strxcpy ( - errmsg, ASE_COUNTOF(errmsg), - ase_awk_geterrstr(NULL, errnum)); - - *ret = VARIANT_FALSE; - return S_OK; - } - - long i, j; - for (i = lbound, j = 0; i <= ubound; i++, j++) - { - BSTR bstr; - HRESULT hr = SafeArrayGetElement (sa, &i, (void**)&bstr); - if (FAILED(hr)) - { - errnum = ASE_AWK_EINTERN; - errlin = 0; - _tcscpy (errmsg, _T("cannot get run-time argument array element")); - - for (long i = 0; i < j; i++) SysFreeString (runarg[i].ptr); - free (runarg); - - *ret = VARIANT_FALSE; - return S_OK; - } - - runarg[j].ptr = bstr; - runarg[j].len = SysStringLen (bstr); - } - - runarg[j].ptr = NULL; - runarg[j].len = 0; - } - else - { - errnum = ASE_AWK_EINTERN; - errlin = 0; - _tcscpy (errmsg, _T("invalid arguments")); - - *ret = VARIANT_FALSE; - return S_OK; - } - - if (ase_awk_run (handle, entry, &runios, NULL, runarg, this) == -1) - { - const ase_char_t* msg; - - ase_awk_geterror (handle, &errnum, &errlin, &msg); - ase_strxcpy (errmsg, ASE_COUNTOF(errmsg), msg); - - DBGOUT (_T("cannot run the program")); - - if (runarg != NULL) - { - for (long j = 0; j < nrunargs; j++) SysFreeString (runarg[j].ptr); - free (runarg); - } - - *ret = VARIANT_FALSE; - return S_OK; - } - else DBGOUT (_T("run the program successfully")); - - - if (runarg != NULL) - { - for (long j = 0; j < nrunargs; j++) SysFreeString (runarg[j].ptr); - free (runarg); - } - - *ret = VARIANT_TRUE; - return S_OK; -} - - -STDMETHODIMP CAwk::AddGlobal (BSTR name, VARIANT_BOOL* ret) -{ - // TODO: - *ret = VARIANT_FALSE; - return S_OK; -} - -STDMETHODIMP CAwk::DeleteGlobal (BSTR name, VARIANT_BOOL* ret) -{ - // TODO: - *ret = VARIANT_FALSE; - return S_OK; -} - -STDMETHODIMP CAwk::AddFunction ( - BSTR name, int minArgs, int maxArgs, VARIANT_BOOL* ret) -{ - bfn_t* bfn; - size_t name_len = SysStringLen(name); - - for (bfn = bfn_list; bfn != NULL; bfn = bfn->next) - { - if (ase_strxncmp ( - bfn->name.ptr, bfn->name.len, - name, name_len) == 0) - { - errnum = ASE_AWK_EEXIST; - errlin = 0; - _sntprintf ( - errmsg, ASE_COUNTOF(errmsg), - _T("'%.*s' added already"), - bfn->name.len, bfn->name.ptr); - - *ret = VARIANT_FALSE; - return S_OK; - } - } - - bfn = (bfn_t*)malloc (sizeof(bfn_t) + name_len*sizeof(TCHAR)); - if (bfn == NULL) - { - errnum = ASE_AWK_ENOMEM; - errlin = 0; - ase_strxcpy ( - errmsg, ASE_COUNTOF(errmsg), - ase_awk_geterrstr(NULL, errnum)); - - *ret = VARIANT_FALSE; - return S_OK; - } - - bfn->name.len = name_len; - bfn->name.ptr = (TCHAR*)(bfn + 1); - memcpy (bfn->name.ptr, name, sizeof(TCHAR) * bfn->name.len); - - bfn->min_args = minArgs; - bfn->max_args = maxArgs; - bfn->next = bfn_list; - bfn_list = bfn; - - *ret = VARIANT_TRUE; - return S_OK; -} - -STDMETHODIMP CAwk::DeleteFunction (BSTR name, VARIANT_BOOL* ret) -{ - size_t name_len = SysStringLen(name); - bfn_t* bfn, * next, * prev = NULL; - - for (bfn = bfn_list; bfn != NULL; bfn = next) - { - next = bfn->next; - - if (ase_strxncmp ( - bfn->name.ptr, bfn->name.len, - name, name_len) == 0) - { - free (bfn); - - if (prev == NULL) bfn_list = next; - else prev->next = next; - - *ret = VARIANT_TRUE; - return S_OK; - } - - prev = bfn; - } - - errnum = ASE_AWK_ENOENT; - errlin = 0; - ase_strxcpy ( - errmsg, ASE_COUNTOF(errmsg), - ase_awk_geterrstr(NULL, errnum)); - - *ret = VARIANT_FALSE; - return S_OK; -} - -STDMETHODIMP CAwk::SetWord (BSTR ow, BSTR nw, VARIANT_BOOL* ret) -{ - word_t* word; - size_t ow_len = SysStringLen(ow); - size_t nw_len = SysStringLen(nw); - - for (word = word_list; word != NULL; word = word->next) - { - if (ase_strxncmp ( - word->ow.ptr, word->ow.len, - ow, ow_len) == 0) - { - errnum = ASE_AWK_EEXIST; - errlin = 0; - _sntprintf ( - errmsg, ASE_COUNTOF(errmsg), - _T("'%.*s' added already"), - word->ow.len, word->ow.ptr); - - *ret = VARIANT_FALSE; - return S_OK; - } - } - - word = (word_t*)malloc (sizeof(word_t)+(ow_len+nw_len)*sizeof(TCHAR)); - if (word == NULL) - { - errnum = ASE_AWK_ENOMEM; - errlin = 0; - ase_strxcpy ( - errmsg, ASE_COUNTOF(errmsg), - ase_awk_geterrstr(NULL, errnum)); - - *ret = VARIANT_FALSE; - return S_OK; - } - - word->ow.len = ow_len; - word->ow.ptr = (TCHAR*)(word+1); - word->nw.len = nw_len; - word->nw.ptr = word->ow.ptr + word->ow.len; - - memcpy (word->ow.ptr, ow, sizeof(TCHAR)*word->ow.len); - memcpy (word->nw.ptr, nw, sizeof(TCHAR)*word->nw.len); - - word->next = word_list; - word_list = word; - - *ret = VARIANT_TRUE; - return S_OK; -} - -STDMETHODIMP CAwk::UnsetWord (BSTR ow, VARIANT_BOOL* ret) -{ - size_t ow_len = SysStringLen(ow); - word_t* word, * next, * prev = NULL; - - for (word = word_list; word != NULL; word = next) - { - next = word->next; - - if (ase_strxncmp ( - word->ow.ptr, word->ow.len, - ow, ow_len) == 0) - { - free (word); - - if (prev == NULL) word_list = next; - else prev->next = next; - - *ret = VARIANT_TRUE; - return S_OK; - } - - prev = word; - } - - errnum = ASE_AWK_ENOENT; - errlin = 0; - ase_strxcpy ( - errmsg, ASE_COUNTOF(errmsg), - ase_awk_geterrstr(NULL, errnum)); - - *ret = VARIANT_FALSE; - return S_OK; -} - -STDMETHODIMP CAwk::UnsetAllWords (VARIANT_BOOL* ret) -{ - while (word_list != NULL) - { - word_t* next = word_list->next; - free (word_list); - word_list = next; - } - - *ret = VARIANT_TRUE; - return S_OK; -} - -STDMETHODIMP CAwk::get_ErrorCode(int *pVal) -{ - *pVal = errnum; - return S_OK; -} - -STDMETHODIMP CAwk::get_ErrorLine(int *pVal) -{ - *pVal = errlin; - return S_OK; -} - -STDMETHODIMP CAwk::get_ErrorMessage(BSTR *pVal) -{ - BSTR tmp = SysAllocStringLen (errmsg, _tcslen(errmsg)); - if (tmp == NULL) return E_OUTOFMEMORY; - *pVal = tmp; - return S_OK; -} - -STDMETHODIMP CAwk::get_ImplicitVariable(VARIANT_BOOL *pVal) -{ - if (handle != NULL) option = ase_awk_getoption (handle); - *pVal = (option & ASE_AWK_IMPLICIT) == 1; - return S_OK; -} - -STDMETHODIMP CAwk::put_ImplicitVariable(VARIANT_BOOL newVal) -{ - if (newVal) option = option | ASE_AWK_IMPLICIT; - else option = option & ~ASE_AWK_IMPLICIT; - if (handle != NULL) ase_awk_setoption (handle, option); - return S_OK; -} - -STDMETHODIMP CAwk::get_ExplicitVariable(VARIANT_BOOL *pVal) -{ - if (handle != NULL) option = ase_awk_getoption (handle); - *pVal = (option & ASE_AWK_EXPLICIT) == 1; - return S_OK; -} - -STDMETHODIMP CAwk::put_ExplicitVariable(VARIANT_BOOL newVal) -{ - if (newVal) option = option | ASE_AWK_EXPLICIT; - else option = option & ~ASE_AWK_EXPLICIT; - if (handle != NULL) ase_awk_setoption (handle, option); - return S_OK; -} - -STDMETHODIMP CAwk::get_ShiftOperators(VARIANT_BOOL *pVal) -{ - if (handle != NULL) option = ase_awk_getoption (handle); - *pVal = (option & ASE_AWK_SHIFT) == 1; - return S_OK; -} - -STDMETHODIMP CAwk::put_ShiftOperators(VARIANT_BOOL newVal) -{ - if (newVal) option = option | ASE_AWK_SHIFT; - else option = option & ~ASE_AWK_SHIFT; - if (handle != NULL) ase_awk_setoption (handle, option); - return S_OK; -} - -STDMETHODIMP CAwk::get_IdivOperator(VARIANT_BOOL *pVal) -{ - if (handle != NULL) option = ase_awk_getoption (handle); - *pVal = (option & ASE_AWK_IDIV) == 1; - return S_OK; -} - -STDMETHODIMP CAwk::put_IdivOperator(VARIANT_BOOL newVal) -{ - if (newVal) option = option | ASE_AWK_IDIV; - else option = option & ~ASE_AWK_IDIV; - if (handle != NULL) ase_awk_setoption (handle, option); - return S_OK; -} - -STDMETHODIMP CAwk::get_ConcatString(VARIANT_BOOL *pVal) -{ - if (handle != NULL) option = ase_awk_getoption (handle); - *pVal = (option & ASE_AWK_STRCONCAT) == 1; - return S_OK; -} - -STDMETHODIMP CAwk::put_ConcatString(VARIANT_BOOL newVal) -{ - if (newVal) option = option | ASE_AWK_STRCONCAT; - else option = option & ~ASE_AWK_STRCONCAT; - if (handle != NULL) ase_awk_setoption (handle, option); - return S_OK; -} - -STDMETHODIMP CAwk::get_SupportExtio(VARIANT_BOOL *pVal) -{ - if (handle != NULL) option = ase_awk_getoption (handle); - *pVal = (option & ASE_AWK_EXTIO) == 1; - return S_OK; -} - -STDMETHODIMP CAwk::put_SupportExtio(VARIANT_BOOL newVal) -{ - if (newVal) option = option | ASE_AWK_EXTIO; - else option = option & ~ASE_AWK_EXTIO; - if (handle != NULL) ase_awk_setoption (handle, option); - return S_OK; -} - -STDMETHODIMP CAwk::get_SupportBlockless(VARIANT_BOOL *pVal) -{ - if (handle != NULL) option = ase_awk_getoption (handle); - *pVal = (option & ASE_AWK_BLOCKLESS) == 1; - return S_OK; -} - -STDMETHODIMP CAwk::put_SupportBlockless(VARIANT_BOOL newVal) -{ - if (newVal) option = option | ASE_AWK_BLOCKLESS; - else option = option & ~ASE_AWK_BLOCKLESS; - if (handle != NULL) ase_awk_setoption (handle, option); - return S_OK; -} - -STDMETHODIMP CAwk::get_BaseOne(VARIANT_BOOL *pVal) -{ - if (handle != NULL) option = ase_awk_getoption (handle); - *pVal = (option & ASE_AWK_BASEONE) == 1; - return S_OK; -} - -STDMETHODIMP CAwk::put_BaseOne(VARIANT_BOOL newVal) -{ - if (newVal) option = option | ASE_AWK_BASEONE; - else option = option & ~ASE_AWK_BASEONE; - if (handle != NULL) ase_awk_setoption (handle, option); - return S_OK; -} - -STDMETHODIMP CAwk::get_StripSpaces(VARIANT_BOOL *pVal) -{ - if (handle != NULL) option = ase_awk_getoption (handle); - *pVal = (option & ASE_AWK_STRIPSPACES) == 1; - return S_OK; -} - -STDMETHODIMP CAwk::put_StripSpaces(VARIANT_BOOL newVal) -{ - if (newVal) option = option | ASE_AWK_STRIPSPACES; - else option = option & ~ASE_AWK_STRIPSPACES; - if (handle != NULL) ase_awk_setoption (handle, option); - return S_OK; -} - -STDMETHODIMP CAwk::get_EnableNextofile(VARIANT_BOOL *pVal) -{ - if (handle != NULL) option = ase_awk_getoption (handle); - *pVal = (option & ASE_AWK_NEXTOFILE) == 1; - return S_OK; -} - -STDMETHODIMP CAwk::put_EnableNextofile(VARIANT_BOOL newVal) -{ - if (newVal) option = option | ASE_AWK_NEXTOFILE; - else option = option & ~ASE_AWK_NEXTOFILE; - if (handle != NULL) ase_awk_setoption (handle, option); - return S_OK; -} - -STDMETHODIMP CAwk::get_UseCrlf(VARIANT_BOOL *pVal) -{ - if (handle != NULL) option = ase_awk_getoption (handle); - *pVal = (option & ASE_AWK_CRLF) == 1; - return S_OK; -} - -STDMETHODIMP CAwk::put_UseCrlf(VARIANT_BOOL newVal) -{ - if (newVal) option = option | ASE_AWK_CRLF; - else option = option & ~ASE_AWK_CRLF; - if (handle != NULL) ase_awk_setoption (handle, option); - return S_OK; -} - -STDMETHODIMP CAwk::get_ArgumentsToEntryPoint(VARIANT_BOOL *pVal) -{ - if (handle != NULL) option = ase_awk_getoption (handle); - *pVal = (option & ASE_AWK_ARGSTOMAIN) == 1; - return S_OK; -} - -STDMETHODIMP CAwk::put_ArgumentsToEntryPoint(VARIANT_BOOL newVal) -{ - if (newVal) option = option | ASE_AWK_ARGSTOMAIN; - else option = option & ~ASE_AWK_ARGSTOMAIN; - if (handle != NULL) ase_awk_setoption (handle, option); - return S_OK; -} - -STDMETHODIMP CAwk::get_EnableReset(VARIANT_BOOL *pVal) -{ - if (handle != NULL) option = ase_awk_getoption (handle); - *pVal = (option & ASE_AWK_RESET) == 1; - return S_OK; -} - -STDMETHODIMP CAwk::put_EnableReset(VARIANT_BOOL newVal) -{ - if (newVal) option = option | ASE_AWK_RESET; - else option = option & ~ASE_AWK_RESET; - if (handle != NULL) ase_awk_setoption (handle, option); - return S_OK; -} - -STDMETHODIMP CAwk::get_AllowMapToVar(VARIANT_BOOL *pVal) -{ - if (handle != NULL) option = ase_awk_getoption (handle); - *pVal = (option & ASE_AWK_MAPTOVAR) == 1; - return S_OK; -} - -STDMETHODIMP CAwk::put_AllowMapToVar(VARIANT_BOOL newVal) -{ - if (newVal) option = option | ASE_AWK_MAPTOVAR; - else option = option & ~ASE_AWK_MAPTOVAR; - if (handle != NULL) ase_awk_setoption (handle, option); - return S_OK; -} - -STDMETHODIMP CAwk::get_SupportPatternActionBlock(VARIANT_BOOL *pVal) -{ - if (handle != NULL) option = ase_awk_getoption (handle); - *pVal = (option & ASE_AWK_PABLOCK) == 1; - return S_OK; -} - -STDMETHODIMP CAwk::put_SupportPatternActionBlock(VARIANT_BOOL newVal) -{ - if (newVal) option = option | ASE_AWK_PABLOCK; - else option = option & ~ASE_AWK_PABLOCK; - if (handle != NULL) ase_awk_setoption (handle, option); - return S_OK; -} - -STDMETHODIMP CAwk::get_MaxDepthForBlockParse(int *pVal) -{ - if (handle != NULL) - { - max_depth.block.parse = - ase_awk_getmaxdepth (handle, ASE_AWK_DEPTH_BLOCK_PARSE); - } - *pVal = max_depth.block.parse; - return S_OK; -} - -STDMETHODIMP CAwk::put_MaxDepthForBlockParse(int newVal) -{ - max_depth.block.parse = newVal; - if (handle != NULL) - { - ase_awk_setmaxdepth (handle, - ASE_AWK_DEPTH_BLOCK_PARSE, max_depth.block.parse); - } - return S_OK; -} - -STDMETHODIMP CAwk::get_MaxDepthForBlockRun(int *pVal) -{ - if (handle != NULL) - { - max_depth.block.run = - ase_awk_getmaxdepth (handle, ASE_AWK_DEPTH_BLOCK_RUN); - } - *pVal = max_depth.block.run; - return S_OK; -} - -STDMETHODIMP CAwk::put_MaxDepthForBlockRun(int newVal) -{ - max_depth.block.run = newVal; - if (handle != NULL) - { - ase_awk_setmaxdepth (handle, - ASE_AWK_DEPTH_BLOCK_RUN, max_depth.block.run); - } - return S_OK; -} - -STDMETHODIMP CAwk::get_MaxDepthForExprParse(int *pVal) -{ - if (handle != NULL) - { - max_depth.expr.parse = - ase_awk_getmaxdepth (handle, ASE_AWK_DEPTH_EXPR_PARSE); - } - *pVal = max_depth.expr.parse; - return S_OK; -} - -STDMETHODIMP CAwk::put_MaxDepthForExprParse(int newVal) -{ - max_depth.expr.parse = newVal; - if (handle != NULL) - { - ase_awk_setmaxdepth (handle, - ASE_AWK_DEPTH_EXPR_PARSE, max_depth.expr.parse); - } - return S_OK; -} - -STDMETHODIMP CAwk::get_MaxDepthForExprRun(int *pVal) -{ - if (handle != NULL) - { - max_depth.expr.run = - ase_awk_getmaxdepth (handle, ASE_AWK_DEPTH_EXPR_RUN); - } - *pVal = max_depth.expr.run; - return S_OK; -} - -STDMETHODIMP CAwk::put_MaxDepthForExprRun(int newVal) -{ - max_depth.expr.run = newVal; - if (handle != NULL) - { - ase_awk_setmaxdepth (handle, - ASE_AWK_DEPTH_EXPR_RUN, max_depth.expr.run); - } - return S_OK; -} - -STDMETHODIMP CAwk::get_MaxDepthForRexBuild(int *pVal) -{ - if (handle != NULL) - { - max_depth.rex.build = - ase_awk_getmaxdepth (handle, ASE_AWK_DEPTH_REX_BUILD); - } - *pVal = max_depth.rex.build; - return S_OK; -} - -STDMETHODIMP CAwk::put_MaxDepthForRexBuild(int newVal) -{ - max_depth.rex.build = newVal; - if (handle != NULL) - { - ase_awk_setmaxdepth (handle, - ASE_AWK_DEPTH_REX_BUILD, max_depth.rex.build); - } - return S_OK; -} - -STDMETHODIMP CAwk::get_MaxDepthForRexMatch(int *pVal) -{ - if (handle != NULL) - { - max_depth.rex.match = - ase_awk_getmaxdepth (handle, ASE_AWK_DEPTH_REX_MATCH); - } - *pVal = max_depth.rex.match; - return S_OK; -} - -STDMETHODIMP CAwk::put_MaxDepthForRexMatch(int newVal) -{ - max_depth.rex.match = newVal; - if (handle != NULL) - { - ase_awk_setmaxdepth (handle, - ASE_AWK_DEPTH_REX_MATCH, max_depth.rex.match); - } - return S_OK; -} - -STDMETHODIMP CAwk::get_EntryPoint(BSTR *pVal) -{ - if (entry_point == NULL) *pVal = NULL; - else - { - BSTR tmp = SysAllocStringLen ( - entry_point, SysStringLen(entry_point)); - if (tmp == NULL) return E_OUTOFMEMORY; - *pVal = tmp; - } - - return S_OK; -} - -STDMETHODIMP CAwk::put_EntryPoint(BSTR newVal) -{ - if (entry_point != NULL) SysFreeString (entry_point); - if (newVal == NULL) entry_point = newVal; - else - { - entry_point = SysAllocStringLen (newVal, SysStringLen(newVal)); - if (entry_point == NULL) return E_OUTOFMEMORY; - } - - return S_OK; -} - -STDMETHODIMP CAwk::get_Debug(VARIANT_BOOL *pVal) -{ - *pVal = debug; - return S_OK; -} - -STDMETHODIMP CAwk::put_Debug(VARIANT_BOOL newVal) -{ - debug = newVal; - return S_OK; -} - -STDMETHODIMP CAwk::get_UseLongLong(VARIANT_BOOL *pVal) -{ - *pVal = use_longlong; - return S_OK; -} - -STDMETHODIMP CAwk::put_UseLongLong(VARIANT_BOOL newVal) -{ - use_longlong = newVal; - return S_OK; -} diff --git a/qse/com/Awk.h b/qse/com/Awk.h deleted file mode 100644 index 61254511..00000000 --- a/qse/com/Awk.h +++ /dev/null @@ -1,201 +0,0 @@ -/* - * $Id: Awk.h 117 2008-03-03 11:20:05Z baconevi $ - * - * {License} - */ - -#ifndef _ASE_COM_AWK_H_ -#define _ASE_COM_AWK_H_ - -#if _MSC_VER > 1000 -#pragma once -#endif - -#include "resource.h" -#include "asecom.h" -#include -#include -#include "awk_cp.h" - -///////////////////////////////////////////////////////////////////////////// -// CAwk - -class CAwk : - public IDispatchImpl, - public ISupportErrorInfo, - /*public CComObjectRoot,*/ - public CComObjectRootEx, - public CComCoClass, - public IConnectionPointContainerImpl, - public IProvideClassInfo2Impl<&CLSID_Awk, &DIID_IAwkEvents, &LIBID_ASECOM>, - public CProxyIAwkEvents< CAwk > - -{ -public: - ase_awk_t* handle; - int option; - int errnum; - ase_size_t errlin; - ase_char_t errmsg[256]; - - struct - { - struct - { - int parse; - int run; - } block; - struct - { - int parse; - int run; - } expr; - struct - { - int build; - int match; - } rex; - } max_depth; - - IBuffer* read_src_buf; - IBuffer* write_src_buf; - ase_size_t read_src_pos; - ase_size_t read_src_len; - - IBuffer* write_extio_buf; - - struct bfn_t - { - struct - { - TCHAR* ptr; - size_t len; - } name; - size_t min_args; - size_t max_args; - struct bfn_t* next; - } * bfn_list; - - struct word_t - { - struct - { - TCHAR* ptr; - size_t len; - } ow; - - struct - { - TCHAR* ptr; - size_t len; - } nw; - - struct word_t* next; - } * word_list; - - BSTR entry_point; - VARIANT_BOOL debug; - VARIANT_BOOL use_longlong; -public: - CAwk(); - ~CAwk (); - -BEGIN_COM_MAP(CAwk) - COM_INTERFACE_ENTRY(IDispatch) - COM_INTERFACE_ENTRY(IAwk) - COM_INTERFACE_ENTRY(ISupportErrorInfo) - COM_INTERFACE_ENTRY_IMPL(IConnectionPointContainer) - COM_INTERFACE_ENTRY(IProvideClassInfo) - COM_INTERFACE_ENTRY(IProvideClassInfo2) -END_COM_MAP() - -BEGIN_CONNECTION_POINT_MAP(CAwk) -CONNECTION_POINT_ENTRY(DIID_IAwkEvents) -END_CONNECTION_POINT_MAP() - -//DECLARE_NOT_AGGREGATABLE(CAwk) -// Remove the comment from the line above if you don't want your object to -// support aggregation. - -DECLARE_REGISTRY_RESOURCEID(IDR_AWK) -// ISupportsErrorInfo - STDMETHOD(InterfaceSupportsErrorInfo)(REFIID riid); - -// IAwk -public: - STDMETHOD(get_UseLongLong)(/*[out, retval]*/ VARIANT_BOOL *pVal); - STDMETHOD(put_UseLongLong)(/*[in]*/ VARIANT_BOOL newVal); - STDMETHOD(get_Debug)(/*[out, retval]*/ VARIANT_BOOL *pVal); - STDMETHOD(put_Debug)(/*[in]*/ VARIANT_BOOL newVal); - STDMETHOD(get_EntryPoint)(/*[out, retval]*/ BSTR *pVal); - STDMETHOD(put_EntryPoint)(/*[in]*/ BSTR newVal); - STDMETHOD(get_MaxDepthForRexMatch)(/*[out, retval]*/ int *pVal); - STDMETHOD(put_MaxDepthForRexMatch)(/*[in]*/ int newVal); - STDMETHOD(get_MaxDepthForRexBuild)(/*[out, retval]*/ int *pVal); - STDMETHOD(put_MaxDepthForRexBuild)(/*[in]*/ int newVal); - STDMETHOD(get_MaxDepthForExprRun)(/*[out, retval]*/ int *pVal); - STDMETHOD(put_MaxDepthForExprRun)(/*[in]*/ int newVal); - STDMETHOD(get_MaxDepthForExprParse)(/*[out, retval]*/ int *pVal); - STDMETHOD(put_MaxDepthForExprParse)(/*[in]*/ int newVal); - STDMETHOD(get_MaxDepthForBlockRun)(/*[out, retval]*/ int *pVal); - STDMETHOD(put_MaxDepthForBlockRun)(/*[in]*/ int newVal); - STDMETHOD(get_MaxDepthForBlockParse)(/*[out, retval]*/ int *pVal); - STDMETHOD(put_MaxDepthForBlockParse)(/*[in]*/ int newVal); - STDMETHOD(get_SupportPatternActionBlock)(/*[out, retval]*/ VARIANT_BOOL *pVal); - STDMETHOD(put_SupportPatternActionBlock)(/*[in]*/ VARIANT_BOOL newVal); - STDMETHOD(get_AllowMapToVar)(/*[out, retval]*/ VARIANT_BOOL *pVal); - STDMETHOD(put_AllowMapToVar)(/*[in]*/ VARIANT_BOOL newVal); - STDMETHOD(get_EnableReset)(/*[out, retval]*/ VARIANT_BOOL *pVal); - STDMETHOD(put_EnableReset)(/*[in]*/ VARIANT_BOOL newVal); - STDMETHOD(get_ArgumentsToEntryPoint)(/*[out, retval]*/ VARIANT_BOOL *pVal); - STDMETHOD(put_ArgumentsToEntryPoint)(/*[in]*/ VARIANT_BOOL newVal); - STDMETHOD(get_UseCrlf)(/*[out, retval]*/ VARIANT_BOOL *pVal); - STDMETHOD(put_UseCrlf)(/*[in]*/ VARIANT_BOOL newVal); - STDMETHOD(get_EnableNextofile)(/*[out, retval]*/ VARIANT_BOOL *pVal); - STDMETHOD(put_EnableNextofile)(/*[in]*/ VARIANT_BOOL newVal); - STDMETHOD(get_StripSpaces)(/*[out, retval]*/ VARIANT_BOOL *pVal); - STDMETHOD(put_StripSpaces)(/*[in]*/ VARIANT_BOOL newVal); - STDMETHOD(get_BaseOne)(/*[out, retval]*/ VARIANT_BOOL *pVal); - STDMETHOD(put_BaseOne)(/*[in]*/ VARIANT_BOOL newVal); - STDMETHOD(get_SupportBlockless)(/*[out, retval]*/ VARIANT_BOOL *pVal); - STDMETHOD(put_SupportBlockless)(/*[in]*/ VARIANT_BOOL newVal); - STDMETHOD(get_SupportExtio)(/*[out, retval]*/ VARIANT_BOOL *pVal); - STDMETHOD(put_SupportExtio)(/*[in]*/ VARIANT_BOOL newVal); - STDMETHOD(get_ConcatString)(/*[out, retval]*/ VARIANT_BOOL *pVal); - STDMETHOD(put_ConcatString)(/*[in]*/ VARIANT_BOOL newVal); - STDMETHOD(get_IdivOperator)(/*[out, retval]*/ VARIANT_BOOL *pVal); - STDMETHOD(put_IdivOperator)(/*[in]*/ VARIANT_BOOL newVal); - STDMETHOD(get_ShiftOperators)(/*[out, retval]*/ VARIANT_BOOL *pVal); - STDMETHOD(put_ShiftOperators)(/*[in]*/ VARIANT_BOOL newVal); - STDMETHOD(get_ExplicitVariable)(/*[out, retval]*/ VARIANT_BOOL *pVal); - STDMETHOD(put_ExplicitVariable)(/*[in]*/ VARIANT_BOOL newVal); - STDMETHOD(get_ImplicitVariable)(/*[out, retval]*/ VARIANT_BOOL *pVal); - STDMETHOD(put_ImplicitVariable)(/*[in]*/ VARIANT_BOOL newVal); - STDMETHOD(get_ErrorMessage)(/*[out, retval]*/ BSTR *pVal); - STDMETHOD(get_ErrorLine)(/*[out, retval]*/ int *pVal); - STDMETHOD(get_ErrorCode)(/*[out, retval]*/ int *pVal); - - HRESULT __stdcall UnsetAllWords ( - /*[out, retval]*/ VARIANT_BOOL* ret); - HRESULT __stdcall UnsetWord ( - /*[in]*/ BSTR ow, /*[out, retval]*/ VARIANT_BOOL* ret); - HRESULT __stdcall SetWord ( - /*[in]*/ BSTR ow, /*[in]*/ BSTR nw, /*[out, retval]*/ VARIANT_BOOL* ret); - - HRESULT __stdcall DeleteFunction ( - /*[in]*/ BSTR name, /*[out, retval]*/ VARIANT_BOOL* ret); - HRESULT __stdcall AddFunction ( - /*[in]*/ BSTR name, /*[in]*/ int minArgs, - /*[in]*/ int maxArgs, /*[out, retval]*/ VARIANT_BOOL* ret); - - HRESULT __stdcall DeleteGlobal ( - /*[in]*/ BSTR name, /*[out, retval]*/ VARIANT_BOOL* ret); - HRESULT __stdcall AddGlobal ( - /*[in]*/ BSTR name, /*[out, retval]*/ VARIANT_BOOL* ret); - - HRESULT __stdcall Parse (/*[out, retval]*/ VARIANT_BOOL* ret); - HRESULT __stdcall Run ( - /*[in]*/ VARIANT argarray, /*[out, retval]*/ VARIANT_BOOL* ret); -}; - -#endif diff --git a/qse/com/Awk.rgs b/qse/com/Awk.rgs deleted file mode 100644 index 14991e89..00000000 --- a/qse/com/Awk.rgs +++ /dev/null @@ -1,25 +0,0 @@ -HKCR -{ - ASE.Awk.1 = s 'ASE Awk Class' - { - CLSID = s '{AD863B53-F5EC-45C3-8B1C-6AC678227DC8}' - } - ASE.Awk = s 'ASE Awk Class' - { - CLSID = s '{AD863B53-F5EC-45C3-8B1C-6AC678227DC8}' - } - NoRemove CLSID - { - ForceRemove {AD863B53-F5EC-45C3-8B1C-6AC678227DC8} = s 'ASE Awk Class' - { - ProgID = s 'ASE.Awk.1' - VersionIndependentProgID = s 'ASE.Awk' - ForceRemove 'Programmable' - InprocServer32 = s '%MODULE%' - { - val ThreadingModel = s 'Apartment' - } - 'TypeLib' = s '{F9C69806-16A1-4162-998A-876B33C470BF}' - } - } -} diff --git a/qse/com/AwkExtio.cpp b/qse/com/AwkExtio.cpp deleted file mode 100644 index c0316ed0..00000000 --- a/qse/com/AwkExtio.cpp +++ /dev/null @@ -1,70 +0,0 @@ -/* - * $Id: AwkExtio.cpp 117 2008-03-03 11:20:05Z baconevi $ - * - * {License} - */ - -#include "stdafx.h" -#include "asecom.h" -#include "AwkExtio.h" - -#include -///////////////////////////////////////////////////////////////////////////// -// CAwkExtio - -CAwkExtio::CAwkExtio (): name (NULL) -{ - VariantInit (&handle); -} - -CAwkExtio::~CAwkExtio () -{ - if (name != NULL) SysFreeString (name); - VariantClear (&handle); -} - -STDMETHODIMP CAwkExtio::get_Name (BSTR *pVal) -{ - if (name == NULL) *pVal = name; - else - { - BSTR tmp = SysAllocStringLen (name, SysStringLen(name)); - if (tmp == NULL) return E_OUTOFMEMORY; - *pVal = tmp; - } - - return S_OK; -} - -BOOL CAwkExtio::PutName (const TCHAR* val) -{ - if (name != NULL) SysFreeString (name); - name = SysAllocString (val); - return (name == NULL)? FALSE: TRUE; -} - -STDMETHODIMP CAwkExtio::get_Type(AwkExtioType *pVal) -{ - *pVal = type; - return S_OK; -} - -STDMETHODIMP CAwkExtio::get_Mode(AwkExtioMode *pVal) -{ - *pVal = mode; - return S_OK; -} - -STDMETHODIMP CAwkExtio::get_Handle (VARIANT *pVal) -{ - VariantClear (pVal); - VariantCopy (pVal, &handle); - return S_OK; -} - -STDMETHODIMP CAwkExtio::put_Handle (VARIANT newVal) -{ - VariantClear (&handle); - VariantCopy (&handle, &newVal); - return S_OK; -} diff --git a/qse/com/AwkExtio.h b/qse/com/AwkExtio.h deleted file mode 100644 index e82cdff7..00000000 --- a/qse/com/AwkExtio.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - * $Id: AwkExtio.h 117 2008-03-03 11:20:05Z baconevi $ - * - * {License} - */ - -#ifndef _ASE_COM_AWKEXTIO_H_ -#define _ASE_COM_AWKEXTIO_H_ - -#include "resource.h" -#include - -///////////////////////////////////////////////////////////////////////////// -// CAwkExtio -class ATL_NO_VTABLE CAwkExtio : - public CComObjectRootEx, - public CComCoClass, - public IDispatchImpl -{ -public: - BSTR name; - AwkExtioType type; - AwkExtioMode mode; - VARIANT handle; - - IBuffer* read_buf; - ase_size_t read_buf_pos; - ase_size_t read_buf_len; - - BOOL PutName (const TCHAR* val); - - CAwkExtio (); - ~CAwkExtio (); - -DECLARE_REGISTRY_RESOURCEID(IDR_AWKEXTIO) - -DECLARE_PROTECT_FINAL_CONSTRUCT() - -BEGIN_COM_MAP(CAwkExtio) - COM_INTERFACE_ENTRY(IAwkExtio) - COM_INTERFACE_ENTRY(IDispatch) -END_COM_MAP() - -// IAwkExtio -public: - STDMETHOD(get_Handle)(/*[out, retval]*/ VARIANT *pVal); - STDMETHOD(put_Handle)(/*[in]*/ VARIANT newVal); - STDMETHOD(get_Mode)(/*[out, retval]*/ AwkExtioMode *pVal); - STDMETHOD(get_Type)(/*[out, retval]*/ AwkExtioType *pVal); - STDMETHOD(get_Name)(/*[out, retval]*/ BSTR *pVal); -}; - -#endif //__AWKEXTIO_H_ diff --git a/qse/com/AwkExtio.rgs b/qse/com/AwkExtio.rgs deleted file mode 100644 index 25dd5757..00000000 --- a/qse/com/AwkExtio.rgs +++ /dev/null @@ -1,26 +0,0 @@ -HKCR -{ - ASE.AwkExtio.1 = s 'ASE AwkExtio Class' - { - CLSID = s '{F52F065A-5FD4-4F4D-AFEA-F5E446B16383}' - } - ASE.AwkExtio = s 'ASE AwkExtio Class' - { - CLSID = s '{F52F065A-5FD4-4F4D-AFEA-F5E446B16383}' - CurVer = s 'ASE.AwkExtio.1' - } - NoRemove CLSID - { - ForceRemove {F52F065A-5FD4-4F4D-AFEA-F5E446B16383} = s 'ASE AwkExtio Class' - { - ProgID = s 'ASE.AwkExtio.1' - VersionIndependentProgID = s 'ASE.AwkExtio' - ForceRemove 'Programmable' - InprocServer32 = s '%MODULE%' - { - val ThreadingModel = s 'Apartment' - } - 'TypeLib' = s '{F9C69806-16A1-4162-998A-876B33C470BF}' - } - } -} diff --git a/qse/com/Buffer.cpp b/qse/com/Buffer.cpp deleted file mode 100644 index 0e80a1fc..00000000 --- a/qse/com/Buffer.cpp +++ /dev/null @@ -1,51 +0,0 @@ -/* - * $Id: Buffer.cpp 117 2008-03-03 11:20:05Z baconevi $ - * - * {License} - */ - -#include "stdafx.h" -#include "Buffer.h" - -CBuffer::CBuffer () -{ - str = NULL; -} - -CBuffer::~CBuffer () -{ - if (str != NULL) SysFreeString (str); -} - -STDMETHODIMP CBuffer::get_Value (BSTR *pVal) -{ - if (str == NULL) *pVal = NULL; - else - { - BSTR tmp = SysAllocStringLen(str, SysStringLen(str)); - if (tmp == NULL) return E_OUTOFMEMORY; - *pVal = tmp; - } - - return S_OK; -} - -STDMETHODIMP CBuffer::put_Value (BSTR newVal) -{ - if (str != NULL) SysFreeString (str); - if (newVal == NULL) str = newVal; - else - { - str = SysAllocStringLen (newVal, SysStringLen(newVal)); - if (str == NULL) return E_OUTOFMEMORY; - } - - return S_OK; -} - -BOOL CBuffer::PutValue (const TCHAR* val, SIZE_T len) -{ - if (str != NULL) SysFreeString (str); - str = SysAllocStringLen (val, len); - return (str == NULL)? FALSE: TRUE; -} diff --git a/qse/com/Buffer.h b/qse/com/Buffer.h deleted file mode 100644 index 6e7dc169..00000000 --- a/qse/com/Buffer.h +++ /dev/null @@ -1,40 +0,0 @@ -/* - * $Id: Buffer.h 117 2008-03-03 11:20:05Z baconevi $ - * - * {License} - */ - -#ifndef _ASE_COM_BUFFER_H_ -#define _ASE_COM_BUFFER_H_ - -#include "resource.h" -#include "asecom.h" - -class ATL_NO_VTABLE CBuffer : - public CComObjectRootEx, - public CComCoClass, - public IDispatchImpl -{ -public: - BSTR str; - BOOL PutValue (const TCHAR* val, SIZE_T len); - -public: - CBuffer (); - ~CBuffer (); - -DECLARE_REGISTRY_RESOURCEID(IDR_BUFFER) - -DECLARE_PROTECT_FINAL_CONSTRUCT() - -BEGIN_COM_MAP(CBuffer) - COM_INTERFACE_ENTRY(IBuffer) - COM_INTERFACE_ENTRY(IDispatch) -END_COM_MAP() - -public: - STDMETHOD(get_Value)(/*[out, retval]*/ BSTR *pVal); - STDMETHOD(put_Value)(/*[in]*/ BSTR newVal); -}; - -#endif diff --git a/qse/com/Buffer.rgs b/qse/com/Buffer.rgs deleted file mode 100644 index e4ffa37e..00000000 --- a/qse/com/Buffer.rgs +++ /dev/null @@ -1,26 +0,0 @@ -HKCR -{ - ASE.Buffer.1 = s 'ASE Buffer Class' - { - CLSID = s '{866B79A7-7628-4808-8AE7-784BE2491C80}' - } - ASE.Buffer = s 'ASE Buffer Class' - { - CLSID = s '{866B79A7-7628-4808-8AE7-784BE2491C80}' - CurVer = s 'ASE.Buffer.1' - } - NoRemove CLSID - { - ForceRemove {866B79A7-7628-4808-8AE7-784BE2491C80} = s 'ASE Buffer Class' - { - ProgID = s 'ASE.Buffer.1' - VersionIndependentProgID = s 'ASE.Buffer' - ForceRemove 'Programmable' - InprocServer32 = s '%MODULE%' - { - val ThreadingModel = s 'Apartment' - } - 'TypeLib' = s '{F9C69806-16A1-4162-998A-876B33C470BF}' - } - } -} diff --git a/qse/com/asecom.cpp b/qse/com/asecom.cpp deleted file mode 100644 index 72a8804f..00000000 --- a/qse/com/asecom.cpp +++ /dev/null @@ -1,78 +0,0 @@ -/* - * $Id: asecom.cpp 117 2008-03-03 11:20:05Z baconevi $ - * - * {License} - */ - -// Note: Proxy/Stub Information -// To build a separate proxy/stub DLL, -// run nmake -f aseps.mk in the project directory. - -#include "stdafx.h" -#include "resource.h" -#include -#include "asecom.h" - -#include "asecom_i.c" -#include "Awk.h" -#include "Buffer.h" -#include "AwkExtio.h" - -CComModule _Module; - -BEGIN_OBJECT_MAP(ObjectMap) -OBJECT_ENTRY(CLSID_Awk, CAwk) -OBJECT_ENTRY(CLSID_Buffer, CBuffer) -OBJECT_ENTRY(CLSID_AwkExtio, CAwkExtio) -END_OBJECT_MAP() - -///////////////////////////////////////////////////////////////////////////// -// DLL Entry Point - -extern "C" -BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID /*lpReserved*/) -{ - if (dwReason == DLL_PROCESS_ATTACH) - { - _Module.Init(ObjectMap, hInstance, &LIBID_ASECOM); - DisableThreadLibraryCalls(hInstance); - } - else if (dwReason == DLL_PROCESS_DETACH) - _Module.Term(); - return TRUE; // ok -} - -///////////////////////////////////////////////////////////////////////////// -// Used to determine whether the DLL can be unloaded by OLE - -STDAPI DllCanUnloadNow(void) -{ - return (_Module.GetLockCount()==0) ? S_OK : S_FALSE; -} - -///////////////////////////////////////////////////////////////////////////// -// Returns a class factory to create an object of the requested type - -STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv) -{ - return _Module.GetClassObject(rclsid, riid, ppv); -} - -///////////////////////////////////////////////////////////////////////////// -// DllRegisterServer - Adds entries to the system registry - -STDAPI DllRegisterServer(void) -{ - // registers object, typelib and all interfaces in typelib - return _Module.RegisterServer(TRUE); -} - -///////////////////////////////////////////////////////////////////////////// -// DllUnregisterServer - Removes entries from the system registry - -STDAPI DllUnregisterServer(void) -{ - return _Module.UnregisterServer(TRUE); -} - - diff --git a/qse/com/asecom.def b/qse/com/asecom.def deleted file mode 100644 index 66d3ab70..00000000 --- a/qse/com/asecom.def +++ /dev/null @@ -1,9 +0,0 @@ -; ase.def : Declares the module parameters. - -LIBRARY "asecom.dll" - -EXPORTS - DllCanUnloadNow @1 PRIVATE - DllGetClassObject @2 PRIVATE - DllRegisterServer @3 PRIVATE - DllUnregisterServer @4 PRIVATE diff --git a/qse/com/asecom.dsp b/qse/com/asecom.dsp deleted file mode 100644 index ece491be..00000000 --- a/qse/com/asecom.dsp +++ /dev/null @@ -1,207 +0,0 @@ -# Microsoft Developer Studio Project File - Name="asecom" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 - -CFG=asecom - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "asecom.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "asecom.mak" CFG="asecom - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "asecom - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE "asecom - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "asecom - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "../debug/lib" -# PROP Intermediate_Dir "debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MTd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_USRDLL" /D "_UNICODE" /Yu"stdafx.h" /FD /GZ /c -# ADD CPP /nologo /MTd /W3 /Gm /ZI /Od /I "../.." /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_USRDLL" /D "_UNICODE" /FR /Yu"stdafx.h" /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo /o"debug/asecom.bsc" -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept -# ADD LINK32 aseawk.lib asecmn.lib aseutl.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /implib:"debug/asecom.lib" /pdbtype:sept /libpath:"$(OutDir)" -# Begin Custom Build - Performing registration -IntDir=.\debug -OutDir=.\../debug/lib -TargetPath=\projects\ase\debug\lib\asecom.dll -InputPath=\projects\ase\debug\lib\asecom.dll -SOURCE="$(InputPath)" - -"$(IntDir)\regsvr32.trg" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - copy .\asecom.tlb "$(OUTDIR)\asecom.tlb" - if "%OS%"=="" goto NOTNT - if not "%OS%"=="Windows_NT" goto NOTNT - regsvr32 /s /c "$(TargetPath)" - echo regsvr32 exec. time > "$(IntDir)\regsvr32.trg" - goto end - :NOTNT - echo Warning : Cannot register DLL on Windows 95 - :end - -# End Custom Build - -!ELSEIF "$(CFG)" == "asecom - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "../release/lib" -# PROP Intermediate_Dir "release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MT /W3 /O1 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_USRDLL" /D "_UNICODE" /D "_ATL_STATIC_REGISTRY" /D "_ATL_MIN_CRT" /Yu"stdafx.h" /FD /c -# ADD CPP /nologo /MT /W3 /O1 /I "../.." /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_USRDLL" /D "_UNICODE" /D "_ATL_STATIC_REGISTRY" /Yu"stdafx.h" /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo /o"release/awk.bsc" -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 -# ADD LINK32 aseawk.lib asecmn.lib aseutl.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 /implib:"release/asecom.lib" /libpath:"$(OutDir)" -# Begin Custom Build - Performing registration -IntDir=.\release -OutDir=.\../release/lib -TargetPath=\projects\ase\release\lib\asecom.dll -InputPath=\projects\ase\release\lib\asecom.dll -SOURCE="$(InputPath)" - -"$(IntDir)\regsvr32.trg" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - copy .\asecom.tlb "$(OUTDIR)\asecom.tlb" - if "%OS%"=="" goto NOTNT - if not "%OS%"=="Windows_NT" goto NOTNT - regsvr32 /s /c "$(TargetPath)" - echo regsvr32 exec. time > "$(IntDir)\regsvr32.trg" - goto end - :NOTNT - echo Warning : Cannot register DLL on Windows 95 - :end - -# End Custom Build - -!ENDIF - -# Begin Target - -# Name "asecom - Win32 Debug" -# Name "asecom - Win32 Release" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=.\asecom.cpp -# End Source File -# Begin Source File - -SOURCE=.\asecom.def -# End Source File -# Begin Source File - -SOURCE=.\asecom.idl -# ADD MTL /tlb ".\asecom.tlb" /h "asecom.h" /iid "asecom_i.c" /Oicf -# End Source File -# Begin Source File - -SOURCE=.\asecom.rc -# End Source File -# Begin Source File - -SOURCE=.\Awk.cpp -# End Source File -# Begin Source File - -SOURCE=.\AwkExtio.cpp -# End Source File -# Begin Source File - -SOURCE=.\Buffer.cpp -# End Source File -# Begin Source File - -SOURCE=.\stdafx.cpp -# ADD CPP /Yc"stdafx.h" -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# Begin Source File - -SOURCE=.\Awk.h -# End Source File -# Begin Source File - -SOURCE=.\awk_cp.h -# End Source File -# Begin Source File - -SOURCE=.\AwkExtio.h -# End Source File -# Begin Source File - -SOURCE=.\Buffer.h -# End Source File -# Begin Source File - -SOURCE=.\resource.h -# End Source File -# Begin Source File - -SOURCE=.\stdafx.h -# End Source File -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# Begin Source File - -SOURCE=.\Awk.rgs -# End Source File -# Begin Source File - -SOURCE=.\AwkExtio.rgs -# End Source File -# Begin Source File - -SOURCE=.\Buffer.rgs -# End Source File -# End Group -# End Target -# End Project diff --git a/qse/com/asecom.idl b/qse/com/asecom.idl deleted file mode 100644 index a802628c..00000000 --- a/qse/com/asecom.idl +++ /dev/null @@ -1,339 +0,0 @@ -/* - * $Id: asecom.idl,v 1.10 2007/10/10 13:22:12 bacon Exp $ - */ - -import "oaidl.idl"; -import "ocidl.idl"; - -/* IAwk */ -[ - object, - uuid(05BC1C9F-7C4E-4F77-B186-2E0FD26C0641), - dual, - helpstring("ASE Awk Interface"), - pointer_default(unique) -] -interface IAwk : IDispatch -{ - [id(1), helpstring("method Parse")] - HRESULT Parse([out,retval] VARIANT_BOOL* ret); - - [id(2), helpstring("method Run")] - HRESULT Run([in] VARIANT argarray, [out,retval] VARIANT_BOOL* ret); - - [id(3), helpstring("method AddGlobal")] - HRESULT AddGlobal([in] BSTR name, [out,retval] VARIANT_BOOL* ret); - - [id(4), helpstring("method DeleteGlobal")] - HRESULT DeleteGlobal([in] BSTR name, [out,retval] VARIANT_BOOL* ret); - - [id(5), helpstring("method AddFunction")] - HRESULT AddFunction([in] BSTR name, [in] int minArgs, [in] int maxArgs, [out,retval] VARIANT_BOOL* ret); - - [id(6), helpstring("method DeleteFunction")] - HRESULT DeleteFunction([in] BSTR name, [out,retval] VARIANT_BOOL* ret); - - - [id(7), helpstring("method SetWord")] - HRESULT SetWord([in] BSTR ow, [in] BSTR nw, [out,retval] VARIANT_BOOL* ret); - - [id(8), helpstring("method UnsetWord")] - HRESULT UnsetWord([in] BSTR ow, [out,retval] VARIANT_BOOL* ret); - - [id(9), helpstring("method UnsetAllWords")] - HRESULT UnsetAllWords([out,retval] VARIANT_BOOL* ret); - - [propget, id(10), helpstring("property ErrorCode")] - HRESULT ErrorCode([out,retval] int *pVal); - - [propget, id(11), helpstring("property ErrorLine")] - HRESULT ErrorLine([out,retval] int *pVal); - - [propget, id(12), helpstring("property ErrorMessage")] - HRESULT ErrorMessage([out,retval] BSTR *pVal); - - [propget, id(13), helpstring("property ImplicitVariable")] - HRESULT ImplicitVariable([out,retval] VARIANT_BOOL *pVal); - [propput, id(13), helpstring("property ImplicitVariable")] - HRESULT ImplicitVariable([in] VARIANT_BOOL newVal); - - [propget, id(14), helpstring("property ExplicitVariable")] - HRESULT ExplicitVariable([out,retval] VARIANT_BOOL *pVal); - [propput, id(14), helpstring("property ExplicitVariable")] - HRESULT ExplicitVariable([in] VARIANT_BOOL newVal); - - [propget, id(17), helpstring("property ShiftOperators")] - HRESULT ShiftOperators([out,retval] VARIANT_BOOL *pVal); - [propput, id(17), helpstring("property ShiftOperators")] - HRESULT ShiftOperators([in] VARIANT_BOOL newVal); - - [propget, id(18), helpstring("property IdivOperator")] - HRESULT IdivOperator([out,retval] VARIANT_BOOL *pVal); - [propput, id(18), helpstring("property IdivOperator")] - HRESULT IdivOperator([in] VARIANT_BOOL newVal); - - [propget, id(19), helpstring("property ConcatString")] - HRESULT ConcatString([out,retval] VARIANT_BOOL *pVal); - [propput, id(19), helpstring("property ConcatString")] - HRESULT ConcatString([in] VARIANT_BOOL newVal); - - [propget, id(20), helpstring("property SupportExtio")] - HRESULT SupportExtio([out,retval] VARIANT_BOOL *pVal); - [propput, id(20), helpstring("property SupportExtio")] - HRESULT SupportExtio([in] VARIANT_BOOL newVal); - - [propget, id(21), helpstring("property SupportBlockless")] - HRESULT SupportBlockless([out,retval] VARIANT_BOOL *pVal); - [propput, id(21), helpstring("property SupportBlockless")] - HRESULT SupportBlockless([in] VARIANT_BOOL newVal); - - [propget, id(22), helpstring("property BaseOne")] - HRESULT BaseOne([out,retval] VARIANT_BOOL *pVal); - [propput, id(22), helpstring("property BaseOne")] - HRESULT BaseOne([in] VARIANT_BOOL newVal); - - [propget, id(23), helpstring("property StripSpaces")] - HRESULT StripSpaces([out,retval] VARIANT_BOOL *pVal); - [propput, id(23), helpstring("property StripSpaces")] - HRESULT StripSpaces([in] VARIANT_BOOL newVal); - - [propget, id(24), helpstring("property EnableNextofile")] - HRESULT EnableNextofile([out,retval] VARIANT_BOOL *pVal); - [propput, id(24), helpstring("property EnableNextofile")] - HRESULT EnableNextofile([in] VARIANT_BOOL newVal); - - [propget, id(25), helpstring("property UseCrlf")] - HRESULT UseCrlf([out,retval] VARIANT_BOOL *pVal); - [propput, id(25), helpstring("property UseCrlf")] - HRESULT UseCrlf([in] VARIANT_BOOL newVal); - - [propget, id(26), helpstring("property ArgumentsToEntryPoint")] - HRESULT ArgumentsToEntryPoint([out,retval] VARIANT_BOOL *pVal); - [propput, id(26), helpstring("property ArgumentsToEntryPoint")] - HRESULT ArgumentsToEntryPoint([in] VARIANT_BOOL newVal); - - [propget, id(27), helpstring("property EnableReset")] - HRESULT EnableReset([out,retval] VARIANT_BOOL *pVal); - [propput, id(27), helpstring("property EnableReset")] - HRESULT EnableReset([in] VARIANT_BOOL newVal); - - [propget, id(28), helpstring("property AllowMapToVar")] - HRESULT AllowMapToVar([out,retval] VARIANT_BOOL *pVal); - [propput, id(28), helpstring("property AllowMapToVar")] - HRESULT AllowMapToVar([in] VARIANT_BOOL newVal); - - [propget, id(29), helpstring("property SupportPatternActionBlock")] - HRESULT SupportPatternActionBlock([out,retval] VARIANT_BOOL *pVal); - [propput, id(29), helpstring("property SupportPatternActioinBlock")] - HRESULT SupportPatternActionBlock([in] VARIANT_BOOL newVal); - - [propget, id(30), helpstring("property MaxDepthForBlockParse")] - HRESULT MaxDepthForBlockParse([out,retval] int *pVal); - [propput, id(30), helpstring("property MaxDepthForBlockParse")] - HRESULT MaxDepthForBlockParse([in] int newVal); - - [propget, id(31), helpstring("property MaxDepthForBlockRun")] - HRESULT MaxDepthForBlockRun([out,retval] int *pVal); - [propput, id(31), helpstring("property MaxDepthForBlockRun")] - HRESULT MaxDepthForBlockRun([in] int newVal); - - [propget, id(32), helpstring("property MaxDepthForExprParse")] - HRESULT MaxDepthForExprParse([out,retval] int *pVal); - [propput, id(32), helpstring("property MaxDepthForExprParse")] - HRESULT MaxDepthForExprParse([in] int newVal); - - [propget, id(33), helpstring("property MaxDepthForExprRun")] - HRESULT MaxDepthForExprRun([out,retval] int *pVal); - [propput, id(33), helpstring("property MaxDepthForExprRun")] - HRESULT MaxDepthForExprRun([in] int newVal); - - [propget, id(34), helpstring("property MaxDepthForRexBuild")] - HRESULT MaxDepthForRexBuild([out,retval] int *pVal); - [propput, id(34), helpstring("property MaxDepthForRexBuild")] - HRESULT MaxDepthForRexBuild([in] int newVal); - - [propget, id(35), helpstring("property MaxDepthForRexMatch")] - HRESULT MaxDepthForRexMatch([out,retval] int *pVal); - [propput, id(35), helpstring("property MaxDepthForRexMatch")] - HRESULT MaxDepthForRexMatch([in] int newVal); - - [propget, id(36), helpstring("property EntryPoint")] - HRESULT EntryPoint([out,retval] BSTR *pVal); - [propput, id(36), helpstring("property EntryPoint")] - HRESULT EntryPoint([in] BSTR newVal); - - [propget, id(37), helpstring("property Debug")] - HRESULT Debug([out,retval] VARIANT_BOOL *pVal); - [propput, id(37), helpstring("property Debug")] - HRESULT Debug([in] VARIANT_BOOL newVal); - - [propget, id(38), helpstring("property UseLongLong")] - HRESULT UseLongLong([out,retval] VARIANT_BOOL *pVal); - [propput, id(38), helpstring("property UseLongLong")] - HRESULT UseLongLong([in] VARIANT_BOOL newVal); -}; - -/* ASECOM */ -[ - uuid(F9C69806-16A1-4162-998A-876B33C470BF), - version(1.0), - helpstring("ASECOM 1.0 Type Library") -] -library ASECOM -{ - importlib("stdole32.tlb"); - importlib("stdole2.tlb"); - - [helpstring("Awk source mode")] - typedef [v1_enum] enum AwkSourceMode - { - AWK_SOURCE_READ = 0, - AWK_SOURCE_WRITE = 1 - } AwkSourceMode; - - [helpstring("AwkExtio type")] - typedef [v1_enum] enum AwkExtioType - { - AWK_EXTIO_PIPE = 0, - AWK_EXTIO_COPROC = 1, - AWK_EXTIO_FILE = 2, - AWK_EXTIO_CONSOLE = 3 - } AwkExtioType; - - [helpstring("AwkExtio mode")] - typedef [v1_enum] enum AwkExtioMode - { - AWK_EXTIO_PIPE_READ = 0, - AWK_EXTIO_PIPE_WRITE = 1, - - AWK_EXTIO_COPROC_READ = 0, - AWK_EXTIO_COPROC_WRITE = 1, - AWK_EXTIO_COPROC_RDWR = 2, - - AWK_EXTIO_FILE_READ = 0, - AWK_EXTIO_FILE_WRITE = 1, - AWK_EXTIO_FILE_APPEND = 2, - - AWK_EXTIO_CONSOLE_READ = 0, - AWK_EXTIO_CONSOLE_WRITE = 1 - } AwkExtioMode; - - /* IBuffer */ - [ - object, - uuid(AD5EA986-37E9-410E-A78E-21799104293A), - dual, - helpstring("IBuffer Interface"), - pointer_default(unique) - ] - interface IBuffer : IDispatch - { - [propget, id(1), helpstring("property Value")] - HRESULT Value([out,retval] BSTR *pVal); - - [propput, id(1), helpstring("property Value")] - HRESULT Value([in] BSTR newVal); - }; - - /* IAwkExtio */ - [ - object, - uuid(BE0B91FF-9944-4DFC-A55B-1FE14E24AFEE), - dual, - helpstring("IAwkExtio Interface"), - pointer_default(unique) - ] - interface IAwkExtio : IDispatch - { - [propget, id(1), helpstring("property Name")] - HRESULT Name([out,retval] BSTR *pVal); - - [propget, id(2), helpstring("property Type")] - HRESULT Type([out,retval] AwkExtioType *pVal); - - [propget, id(3), helpstring("property Mode")] - HRESULT Mode([out,retval] AwkExtioMode *pVal); - - [propget, id(4), helpstring("property Handle")] - HRESULT Handle([out,retval] VARIANT *pVal); - [propput, id(4), helpstring("property Handle")] - HRESULT Handle([in] VARIANT newVal); - }; - - /* IAwkEvents */ - [ - uuid(1351DC8F-10AD-4C40-A2FA-9A2E89C27AC8), - helpstring("ASE Awk Events Interface") - ] - dispinterface IAwkEvents - { - properties: - methods: - [id(1), helpstring("open the source code")] - HRESULT OpenSource([in] AwkSourceMode mode, [out,retval] int* ret); - - [id(2), helpstring("close the source code")] - HRESULT CloseSource([in] AwkSourceMode mode, [out,retval] int* ret); - - [id(3), helpstring("read the source code")] - HRESULT ReadSource([in] IBuffer* buf, [out,retval] int* ret); - - [id(4), helpstring("write the source code")] - HRESULT WriteSource([in] IBuffer* buf, [out,retval] int* ret); - - [id(5), helpstring("method OpenExtio")] - HRESULT OpenExtio([in] IAwkExtio* extio, [out,retval] int* ret); - - [id(6), helpstring("method CloseExtio")] - HRESULT CloseExtio([in] IAwkExtio* extio, [out,retval] int* ret); - - [id(7), helpstring("method ReadExtio")] - HRESULT ReadExtio([in] IAwkExtio* extio, [in] IBuffer* buf, [out,retval] int* ret); - - [id(8), helpstring("method WriteExtio")] - HRESULT WriteExtio([in] IAwkExtio* extio, [in] IBuffer* buf, [out,retval] int* ret); - - [id(9), helpstring("method FlushExtio")] - HRESULT FlushExtio([in] IAwkExtio* extio, [out,retval] int* ret); - - [id(10), helpstring("method NextExtio")] - HRESULT NextExtio([in] IAwkExtio* extio, [out,retval] int* ret); - - [id(11), helpstring("method HandleFunction")] - HRESULT HandleFunction([in] BSTR name, [in] VARIANT argarray, [out,retval] VARIANT* ret); - - /*[id(12), helpstring("method OnClose")] - HRESULT OnClose([out,retval] int* ret);*/ - }; - - /* Awk */ - [ - uuid(AD863B53-F5EC-45C3-8B1C-6AC678227DC8), - helpstring("ASE Awk Class") - ] - coclass Awk - { - [default] interface IAwk; - [default,source] dispinterface IAwkEvents; - }; - - /* AwkExtio */ - [ - uuid(F52F065A-5FD4-4F4D-AFEA-F5E446B16383), - helpstring("ASE AwkExtio Class") - ] - coclass AwkExtio - { - [default] interface IAwkExtio; - }; - - /* Buffer */ - [ - uuid(866B79A7-7628-4808-8AE7-784BE2491C80), - helpstring("ASE Buffer Class") - ] - coclass Buffer - { - [default] interface IBuffer; - }; -}; diff --git a/qse/com/asecom.rc b/qse/com/asecom.rc deleted file mode 100644 index 440179cb..00000000 --- a/qse/com/asecom.rc +++ /dev/null @@ -1,121 +0,0 @@ -// Microsoft Visual C++ generated resource script. -// -#include "resource.h" - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#include "winres.h" - -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// English (U.S.) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) -#ifdef _WIN32 -LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US -#pragma code_page(1252) -#endif //_WIN32 - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE -BEGIN - "resource.h\0" -END - -2 TEXTINCLUDE -BEGIN - "#include ""winres.h""\r\n" - "\0" -END - -3 TEXTINCLUDE -BEGIN - "1 TYPELIB ""asecom.tlb""\r\n" - "\0" -END - -#endif // APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// -// Version -// - -VS_VERSION_INFO VERSIONINFO - FILEVERSION 1,0,0,0 - PRODUCTVERSION 1,0,0,0 - FILEFLAGSMASK 0x3fL -#ifdef _DEBUG - FILEFLAGS 0x1L -#else - FILEFLAGS 0x0L -#endif - FILEOS 0x4L - FILETYPE 0x2L - FILESUBTYPE 0x0L -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "040904b0" - BEGIN - VALUE "FileDescription", "ASE.COM" - VALUE "FileVersion", "1, 0, 0, 0" - VALUE "InternalName", "ASECOM" - VALUE "LegalCopyright", "Hyung-Hwan Chung. All rights reserved" - VALUE "OriginalFilename", "asecom.dll" - VALUE "ProductName", "ASE.COM" - VALUE "ProductVersion", "1, 0, 0, 0" - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x409, 1200 - END -END - - -///////////////////////////////////////////////////////////////////////////// -// -// REGISTRY -// - -IDR_AWK REGISTRY "Awk.rgs" -IDR_AWKEXTIO REGISTRY "AwkExtio.rgs" -IDR_BUFFER REGISTRY "Buffer.rgs" - -///////////////////////////////////////////////////////////////////////////// -// -// String Table -// - -STRINGTABLE -BEGIN - IDS_PROJNAME "ASE COM Project" -END - -#endif // English (U.S.) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// -1 TYPELIB "asecom.tlb" - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - diff --git a/qse/com/asecom.vcproj b/qse/com/asecom.vcproj deleted file mode 100644 index 860fca95..00000000 --- a/qse/com/asecom.vcproj +++ /dev/null @@ -1,775 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/qse/com/aseps.def b/qse/com/aseps.def deleted file mode 100644 index 291123a5..00000000 --- a/qse/com/aseps.def +++ /dev/null @@ -1,11 +0,0 @@ - -LIBRARY "asePS" - -DESCRIPTION 'Proxy/Stub DLL' - -EXPORTS - DllGetClassObject @1 PRIVATE - DllCanUnloadNow @2 PRIVATE - GetProxyDllInfo @3 PRIVATE - DllRegisterServer @4 PRIVATE - DllUnregisterServer @5 PRIVATE diff --git a/qse/com/aseps.mk b/qse/com/aseps.mk deleted file mode 100644 index 5093ad12..00000000 --- a/qse/com/aseps.mk +++ /dev/null @@ -1,16 +0,0 @@ - -aseps.dll: dlldata.obj ase_p.obj ase_i.obj - link /dll /out:aseps.dll /def:aseps.def /entry:DllMain dlldata.obj ase_p.obj ase_i.obj \ - kernel32.lib rpcndr.lib rpcns4.lib rpcrt4.lib oleaut32.lib uuid.lib \ - -.c.obj: - cl /c /Ox /DWIN32 /D_WIN32_WINNT=0x0400 /DREGISTER_PROXY_DLL \ - $< - -clean: - @del aseps.dll - @del aseps.lib - @del aseps.exp - @del dlldata.obj - @del ase_p.obj - @del ase_i.obj diff --git a/qse/com/awk_cp.h b/qse/com/awk_cp.h deleted file mode 100644 index f841cb5d..00000000 --- a/qse/com/awk_cp.h +++ /dev/null @@ -1,637 +0,0 @@ -/* - * $Id: awk_cp.h 117 2008-03-03 11:20:05Z baconevi $ - * - * {License} - */ - -#ifndef _AWK_CP_H_ -#define _AWK_CP_H_ - -template -class CProxyIAwkEvents: - public IConnectionPointImpl -{ -public: - INT Fire_OpenSource(INT mode) - { - T* pT = static_cast(this); - int i, nconns = m_vec.GetSize(); - CComVariant args[1], ret; - - for (i = 0; i < nconns; i++) - { - pT->Lock(); - CComPtr sp = m_vec.GetAt(i); - pT->Unlock(); - - IDispatch* pDispatch = - reinterpret_cast(sp.p); - if (pDispatch == NULL) continue; - - VariantClear (&ret); - VariantClear (&args[0]); - - args[0] = mode; - - DISPPARAMS disp = { args, NULL, 1, 0 }; - HRESULT hr = pDispatch->Invoke ( - 0x1, IID_NULL, LOCALE_USER_DEFAULT, - DISPATCH_METHOD, &disp, &ret, NULL, NULL); - if (FAILED(hr)) continue; - - if (ret.vt == VT_EMPTY) - { - /* probably, the handler has not been implemeted*/ - continue; - } - - hr = ret.ChangeType (VT_I4); - if (FAILED(hr)) - { - /* TODO: set the error code properly... */ - /* invalid value returned... */ - return -1; - } - - return ret.lVal; - } - - return -1; - } - - INT Fire_CloseSource(INT mode) - { - T* pT = static_cast(this); - int i, nconns = m_vec.GetSize(); - CComVariant args[1], ret; - - for (i = 0; i < nconns; i++) - { - pT->Lock(); - CComPtr sp = m_vec.GetAt(i); - pT->Unlock(); - - IDispatch* pDispatch = - reinterpret_cast(sp.p); - if (pDispatch == NULL) continue; - - VariantClear (&ret); - VariantClear (&args[0]); - - args[0] = mode; - - DISPPARAMS disp = { args, NULL, 1, 0 }; - HRESULT hr = pDispatch->Invoke ( - 0x2, IID_NULL, LOCALE_USER_DEFAULT, - DISPATCH_METHOD, &disp, &ret, NULL, NULL); - if (FAILED(hr)) continue; - - if (ret.vt == VT_EMPTY) - { - /* probably, the handler has not been implemeted*/ - continue; - } - - hr = ret.ChangeType (VT_I4); - if (FAILED(hr)) - { - /* TODO: set the error code properly... */ - /* invalid value returned... */ - return -1; - } - - return ret.lVal; - } - - return -1; - } - - INT Fire_ReadSource (IBuffer* buf) - { - T* pT = static_cast(this); - int i, nconns = m_vec.GetSize(); - CComVariant args[1], ret; - - for (i = 0; i < nconns; i++) - { - pT->Lock(); - CComPtr sp = m_vec.GetAt(i); - pT->Unlock(); - - IDispatch* pDispatch = - reinterpret_cast(sp.p); - if (pDispatch == NULL) continue; - - VariantClear (&ret); - VariantClear (&args[0]); - - args[0] = (IUnknown*)buf; - - DISPPARAMS disp = { args, NULL, 1, 0 }; - HRESULT hr = pDispatch->Invoke ( - 0x3, IID_NULL, LOCALE_USER_DEFAULT, - DISPATCH_METHOD, &disp, &ret, NULL, NULL); - if (FAILED(hr)) - { - continue; - } - - if (ret.vt == VT_EMPTY) - { - /* probably, the handler has not been implemeted*/ - continue; - } - - hr = ret.ChangeType (VT_I4); - if (FAILED(hr)) - { - /* TODO: set the error code properly... */ - /* invalid value returned... */ - return -1; - } - - return ret.lVal; - } - - /* no event handler attached for the source code read. */ - /* TODO: set error code ... */ - return -1; - } - - INT Fire_WriteSource (IBuffer* buf) - { - T* pT = static_cast(this); - int i, nconns = m_vec.GetSize(); - CComVariant args[1], ret; - - for (i = 0; i < nconns; i++) - { - pT->Lock(); - CComPtr sp = m_vec.GetAt(i); - pT->Unlock(); - - IDispatch* pDispatch = - reinterpret_cast(sp.p); - if (pDispatch == NULL) continue; - - VariantClear (&ret); - VariantClear (&args[0]); - - args[0] = (IUnknown*)buf; - - DISPPARAMS disp = { args, NULL, 1, 0 }; - HRESULT hr = pDispatch->Invoke ( - 0x4, IID_NULL, LOCALE_USER_DEFAULT, - DISPATCH_METHOD, &disp, &ret, NULL, NULL); - if (FAILED(hr)) - { - continue; - } - - if (ret.vt == VT_EMPTY) - { - /* probably, the handler has not been implemeted*/ - continue; - } - - hr = ret.ChangeType (VT_I4); - if (FAILED(hr)) - { - /* TODO: set the error code properly... */ - /* invalid value returned... */ - return -1; - } - - return ret.lVal; - } - - /* no event handler attached for the source code write. - * make the operation succeed by returning the reqested - * data length. */ - CComBSTR bstr; - buf->get_Value (&bstr); - return bstr.Length(); - } - - INT Fire_OpenExtio (IAwkExtio* extio) - { - T* pT = static_cast(this); - int i, nconns = m_vec.GetSize(); - CComVariant args[1], ret; - - for (i = 0; i < nconns; i++) - { - pT->Lock(); - CComPtr sp = m_vec.GetAt(i); - pT->Unlock(); - - IDispatch* pDispatch = - reinterpret_cast(sp.p); - if (pDispatch == NULL) continue; - - VariantClear (&ret); - VariantClear (&args[0]); - - args[0] = (IUnknown*)extio; - - DISPPARAMS disp = { args, NULL, 1, 0 }; - HRESULT hr = pDispatch->Invoke ( - 0x5, IID_NULL, LOCALE_USER_DEFAULT, - DISPATCH_METHOD, &disp, &ret, NULL, NULL); - if (FAILED(hr)) continue; - - if (ret.vt == VT_EMPTY) - { - /* probably, the handler has not been implemeted*/ - continue; - } - - hr = ret.ChangeType (VT_I4); - if (FAILED(hr)) - { - /* TODO: set the error code properly... */ - /* invalid value returned... */ - return -1; - } - - return ret.lVal; - } - - return -1; - } - - INT Fire_CloseExtio (IAwkExtio* extio) - { - T* pT = static_cast(this); - int i, nconns = m_vec.GetSize(); - CComVariant args[1], ret; - - for (i = 0; i < nconns; i++) - { - pT->Lock(); - CComPtr sp = m_vec.GetAt(i); - pT->Unlock(); - - IDispatch* pDispatch = - reinterpret_cast(sp.p); - if (pDispatch == NULL) continue; - - VariantClear (&ret); - VariantClear (&args[0]); - - args[0] = (IUnknown*)extio; - - DISPPARAMS disp = { args, NULL, 1, 0 }; - HRESULT hr = pDispatch->Invoke ( - 0x6, IID_NULL, LOCALE_USER_DEFAULT, - DISPATCH_METHOD, &disp, &ret, NULL, NULL); - if (FAILED(hr)) continue; - - if (ret.vt == VT_EMPTY) - { - /* probably, the handler has not been implemeted*/ - continue; - } - - hr = ret.ChangeType (VT_I4); - if (FAILED(hr)) - { - /* TODO: set the error code properly... */ - /* invalid value returned... */ - return -1; - } - - return ret.lVal; - } - - return -1; - } - - INT Fire_ReadExtio (IAwkExtio* extio, IBuffer* buf) - { - T* pT = static_cast(this); - int i, nconns = m_vec.GetSize(); - CComVariant args[2], ret; - - for (i = 0; i < nconns; i++) - { - pT->Lock(); - CComPtr sp = m_vec.GetAt(i); - pT->Unlock(); - - IDispatch* pDispatch = - reinterpret_cast(sp.p); - if (pDispatch == NULL) continue; - - VariantClear (&ret); - VariantClear (&args[0]); - VariantClear (&args[1]); - - args[1] = (IUnknown*)extio; - args[0] = (IUnknown*)buf; - - DISPPARAMS disp = { args, NULL, 2, 0 }; - HRESULT hr = pDispatch->Invoke ( - 0x7, IID_NULL, LOCALE_USER_DEFAULT, - DISPATCH_METHOD, &disp, &ret, NULL, NULL); - if (FAILED(hr)) - { - continue; - } - - if (ret.vt == VT_EMPTY) - { - /* probably, the handler has not been implemeted*/ - continue; - } - - hr = ret.ChangeType (VT_I4); - if (FAILED(hr)) - { - /* TODO: set the error code properly... */ - /* invalid value returned... */ - return -1; - } - - return ret.lVal; - } - - return -1; - } - - INT Fire_WriteExtio (IAwkExtio* extio, IBuffer* buf) - { - T* pT = static_cast(this); - int i, nconns = m_vec.GetSize(); - CComVariant args[2], ret; - - for (i = 0; i < nconns; i++) - { - pT->Lock(); - CComPtr sp = m_vec.GetAt(i); - pT->Unlock(); - - IDispatch* pDispatch = - reinterpret_cast(sp.p); - if (pDispatch == NULL) continue; - - VariantClear (&ret); - VariantClear (&args[0]); - VariantClear (&args[1]); - - args[1] = (IUnknown*)extio; - args[0] = (IUnknown*)buf; - - DISPPARAMS disp = { args, NULL, 2, 0 }; - HRESULT hr = pDispatch->Invoke ( - 0x8, IID_NULL, LOCALE_USER_DEFAULT, - DISPATCH_METHOD, &disp, &ret, NULL, NULL); - if (FAILED(hr)) - { - continue; - } - - if (ret.vt == VT_EMPTY) - { - /* probably, the handler has not been implemeted*/ - continue; - } - - hr = ret.ChangeType (VT_I4); - if (FAILED(hr)) - { - /* TODO: set the error code properly... */ - /* invalid value returned... */ - return -1; - } - - return ret.lVal; - } - - return -1; - } - - - INT Fire_FlushExtio (IAwkExtio* extio) - { - T* pT = static_cast(this); - int i, nconns = m_vec.GetSize(); - CComVariant args[1], ret; - - for (i = 0; i < nconns; i++) - { - pT->Lock(); - CComPtr sp = m_vec.GetAt(i); - pT->Unlock(); - - IDispatch* pDispatch = - reinterpret_cast(sp.p); - if (pDispatch == NULL) continue; - - VariantClear (&ret); - VariantClear (&args[0]); - - args[0] = (IUnknown*)extio; - - DISPPARAMS disp = { args, NULL, 1, 0 }; - HRESULT hr = pDispatch->Invoke ( - 0x9, IID_NULL, LOCALE_USER_DEFAULT, - DISPATCH_METHOD, &disp, &ret, NULL, NULL); - if (FAILED(hr)) continue; - - if (ret.vt == VT_EMPTY) - { - /* probably, the handler has not been implemeted*/ - continue; - } - - hr = ret.ChangeType (VT_I4); - if (FAILED(hr)) - { - /* TODO: set the error code properly... */ - /* invalid value returned... */ - return -1; - } - - return ret.lVal; - } - - return -1; - } - - INT Fire_NextExtio (IAwkExtio* extio) - { - T* pT = static_cast(this); - int i, nconns = m_vec.GetSize(); - CComVariant args[1], ret; - - for (i = 0; i < nconns; i++) - { - pT->Lock(); - CComPtr sp = m_vec.GetAt(i); - pT->Unlock(); - - IDispatch* pDispatch = - reinterpret_cast(sp.p); - if (pDispatch == NULL) continue; - - VariantClear (&ret); - VariantClear (&args[0]); - - args[0] = (IUnknown*)extio; - - DISPPARAMS disp = { args, NULL, 1, 0 }; - HRESULT hr = pDispatch->Invoke ( - 0xA, IID_NULL, LOCALE_USER_DEFAULT, - DISPATCH_METHOD, &disp, &ret, NULL, NULL); - if (FAILED(hr)) continue; - - if (ret.vt == VT_EMPTY) - { - /* probably, the handler has not been implemeted*/ - continue; - } - - hr = ret.ChangeType (VT_I4); - if (FAILED(hr)) - { - /* TODO: set the error code properly... */ - /* invalid value returned... */ - return -1; - } - - return ret.lVal; - } - - return -1; - } - - int Fire_HandleFunction ( - ase_awk_run_t* run, BSTR name, SAFEARRAY* argarray, ase_awk_val_t** retv) - { - T* pT = static_cast(this); - int i, nconns = m_vec.GetSize(); - CComVariant ret; - VARIANT args[2]; - ase_awk_val_t* v; - - VariantInit (&args[0]); - VariantInit (&args[1]); - - args[1].vt = VT_BSTR; - args[1].bstrVal = name; - - args[0].vt = VT_ARRAY | VT_VARIANT; - args[0].parray = argarray; - - for (i = 0; i < nconns; i++) - { - pT->Lock(); - CComPtr sp = m_vec.GetAt(i); - pT->Unlock(); - - IDispatch* pDispatch = - reinterpret_cast(sp.p); - if (pDispatch == NULL) continue; - - VariantClear (&ret); - - DISPPARAMS disp = { args, NULL, 2, 0 }; - HRESULT hr = pDispatch->Invoke ( - 0xB, IID_NULL, LOCALE_USER_DEFAULT, - DISPATCH_METHOD, &disp, &ret, NULL, NULL); - if (FAILED(hr)) continue; - - if (ret.vt == VT_EMPTY) - { - /* probably, the handler has not been implemeted*/ - continue; - } - - VariantClear (&args[1]); - VariantClear (&args[0]); - - if (ret.vt == VT_I1) - v = ase_awk_makeintval (run, ret.cVal); - else if (ret.vt == VT_I2) - v = ase_awk_makeintval (run, ret.iVal); - else if (ret.vt == VT_I4) - v = ase_awk_makeintval (run, ret.lVal); - else if (ret.vt == VT_I8) - v = ase_awk_makeintval (run, ret.llVal); - else if (ret.vt == VT_UI1) - v = ase_awk_makeintval (run, ret.bVal); - else if (ret.vt == VT_UI2) - v = ase_awk_makeintval (run, ret.uiVal); - else if (ret.vt == VT_UI4) - v = ase_awk_makeintval (run, ret.ulVal); - else if (ret.vt == VT_UI8) - v = ase_awk_makeintval (run, ret.ullVal); - else if (ret.vt == VT_INT) - v = ase_awk_makeintval (run, ret.intVal); - else if (ret.vt == VT_UINT) - v = ase_awk_makeintval (run, ret.uintVal); - else if (ret.vt == VT_BOOL) - v = ase_awk_makeintval (run, ((ret.boolVal == 0)? 0: 1)); - else if (ret.vt == VT_R4) - v = ase_awk_makerealval (run, ret.fltVal); - else if (ret.vt == VT_R8) - v = ase_awk_makerealval (run, ret.dblVal); - else if (ret.vt == VT_BSTR) - v = ase_awk_makestrval (run, ret.bstrVal, SysStringLen(ret.bstrVal)); - else if (ret.vt == VT_NULL) - - v = ase_awk_val_nil; - else return 3; /* wrong return value */ - - if (v == ASE_NULL) return 1; /* out of memory */ - - *retv = v; - return 0; /* success */ - } - - VariantClear (&args[1]); - VariantClear (&args[0]); - return 2; /* no proper handler */ - } - - INT Fire_OnClose () - { - T* pT = static_cast(this); - int i, nconns = m_vec.GetSize(); - CComVariant ret; - - for (i = 0; i < nconns; i++) - { - pT->Lock(); - CComPtr sp = m_vec.GetAt(i); - pT->Unlock(); - - IDispatch* pDispatch = reinterpret_cast(sp.p); - if (pDispatch == NULL) continue; - - VariantClear (&ret); - - HRESULT hr = pDispatch->Invoke( - 0xC, IID_NULL, LOCALE_USER_DEFAULT, - DISPATCH_METHOD, NULL, &ret, NULL, NULL); - - if (FAILED(hr)) continue; - if (ret.vt == VT_EMPTY) continue; - - hr = ret.ChangeType (VT_I4); - if (FAILED(hr)) - { - /* TODO: set the error code properly... */ - /* invalid value returned... */ - return -1; - } - - return ret.lVal; - } - - return -1; - } -}; - -#endif diff --git a/qse/com/resource.h b/qse/com/resource.h deleted file mode 100644 index 77c83f7a..00000000 --- a/qse/com/resource.h +++ /dev/null @@ -1,19 +0,0 @@ -//{{NO_DEPENDENCIES}} -// Microsoft Developer Studio generated include file. -// Used by asecom.rc -// -#define IDS_PROJNAME 100 -#define IDR_AWK 101 -#define IDR_AWKEXTIO 102 -#define IDR_BUFFER 103 - -// Next default values for new objects -// -#ifdef APSTUDIO_INVOKED -#ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 201 -#define _APS_NEXT_COMMAND_VALUE 32768 -#define _APS_NEXT_CONTROL_VALUE 201 -#define _APS_NEXT_SYMED_VALUE 105 -#endif -#endif diff --git a/qse/com/stdafx.cpp b/qse/com/stdafx.cpp deleted file mode 100644 index dcd7a176..00000000 --- a/qse/com/stdafx.cpp +++ /dev/null @@ -1,18 +0,0 @@ -/* - * $Id: stdafx.cpp 117 2008-03-03 11:20:05Z baconevi $ - * - * {License} - */ - -// stdafx.cpp : source file that includes just the standard includes -// stdafx.pch will be the pre-compiled header -// stdafx.obj will contain the pre-compiled type information - -#include "stdafx.h" - -#ifdef _ATL_STATIC_REGISTRY -#include -#include -#endif - -#include diff --git a/qse/com/stdafx.h b/qse/com/stdafx.h deleted file mode 100644 index 36ca81d4..00000000 --- a/qse/com/stdafx.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - * $Id: stdafx.h 117 2008-03-03 11:20:05Z baconevi $ - * - * {License} - */ - -#ifndef _ASE_COM_STDAFX_H_ -#define _ASE_COM_STDAFX_H_ - -#if _MSC_VER > 1000 -#pragma once -#endif // _MSC_VER > 1000 - -#define STRICT -#ifndef _WIN32_WINNT -#define _WIN32_WINNT 0x0400 -#endif -#define _ATL_APARTMENT_THREADED - -#include -//You may derive a class from CComModule and use it if you want to override -//something, but do not change the name of _Module -extern CComModule _Module; -#include - -//{{AFX_INSERT_LOCATION}} -// Microsoft Visual C++ will insert additional declarations immediately before the previous line. - -#endif diff --git a/qse/configure b/qse/configure index 31613a0e..6bdd3839 100755 --- a/qse/configure +++ b/qse/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.61 for ase 0.5.0. +# Generated by GNU Autoconf 2.61 for qse 0.5.0. # # Report bugs to . # @@ -726,10 +726,10 @@ MAKEFLAGS= SHELL=${CONFIG_SHELL-/bin/sh} # Identity of this package. -PACKAGE_NAME='ase' -PACKAGE_TARNAME='ase' +PACKAGE_NAME='qse' +PACKAGE_TARNAME='qse' PACKAGE_VERSION='0.5.0' -PACKAGE_STRING='ase 0.5.0' +PACKAGE_STRING='qse 0.5.0' PACKAGE_BUGREPORT='bacon@abiyo.net' # Factoring default headers for most tests. @@ -1408,7 +1408,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures ase 0.5.0 to adapt to many kinds of systems. +\`configure' configures qse 0.5.0 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1456,7 +1456,7 @@ Fine tuning of the installation directories: --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] - --docdir=DIR documentation root [DATAROOTDIR/doc/ase] + --docdir=DIR documentation root [DATAROOTDIR/doc/qse] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] @@ -1478,7 +1478,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of ase 0.5.0:";; + short | recursive ) echo "Configuration of qse 0.5.0:";; esac cat <<\_ACEOF @@ -1588,7 +1588,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -ase configure 0.5.0 +qse configure 0.5.0 generated by GNU Autoconf 2.61 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, @@ -1602,7 +1602,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by ase $as_me 0.5.0, which was +It was created by qse $as_me 0.5.0, which was generated by GNU Autoconf 2.61. Invocation command line was $ $0 $@ @@ -1955,7 +1955,7 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $ ac_compiler_gnu=$ac_cv_c_compiler_gnu -ac_config_headers="$ac_config_headers include/ase/config.h" +ac_config_headers="$ac_config_headers include/qse/config.h" ac_aux_dir= for ac_dir in autoconf "$srcdir"/autoconf; do @@ -2301,7 +2301,7 @@ fi # Define the identity of the package. - PACKAGE='ase' + PACKAGE='qse' VERSION='0.5.0' @@ -20442,8 +20442,8 @@ fi # fi #fi -CFLAGS="$CFLAGS -D_LARGEFILE64_SOURCE -DASE_HAVE_CONFIG_H" -CXXFLAGS="$CXXFLAGS -D_LARGEFILE64_SOURCE -DASE_HAVE_CONFIG_H" +CFLAGS="$CFLAGS -D_LARGEFILE64_SOURCE -DQSE_HAVE_CONFIG_H" +CXXFLAGS="$CXXFLAGS -D_LARGEFILE64_SOURCE -DQSE_HAVE_CONFIG_H" LIBM= case $host in @@ -27813,103 +27813,103 @@ _ACEOF cat >>confdefs.h <<_ACEOF -#define ASE_SIZEOF_CHAR ${ac_cv_sizeof_char} +#define QSE_SIZEOF_CHAR ${ac_cv_sizeof_char} _ACEOF cat >>confdefs.h <<_ACEOF -#define ASE_SIZEOF_SHORT ${ac_cv_sizeof_short} +#define QSE_SIZEOF_SHORT ${ac_cv_sizeof_short} _ACEOF cat >>confdefs.h <<_ACEOF -#define ASE_SIZEOF_INT ${ac_cv_sizeof_int} +#define QSE_SIZEOF_INT ${ac_cv_sizeof_int} _ACEOF cat >>confdefs.h <<_ACEOF -#define ASE_SIZEOF_LONG ${ac_cv_sizeof_long} +#define QSE_SIZEOF_LONG ${ac_cv_sizeof_long} _ACEOF cat >>confdefs.h <<_ACEOF -#define ASE_SIZEOF_LONG_LONG ${ac_cv_sizeof_long_long} +#define QSE_SIZEOF_LONG_LONG ${ac_cv_sizeof_long_long} _ACEOF cat >>confdefs.h <<_ACEOF -#define ASE_SIZEOF___INT8 ${ac_cv_sizeof___int8} +#define QSE_SIZEOF___INT8 ${ac_cv_sizeof___int8} _ACEOF cat >>confdefs.h <<_ACEOF -#define ASE_SIZEOF___INT16 ${ac_cv_sizeof___int16} +#define QSE_SIZEOF___INT16 ${ac_cv_sizeof___int16} _ACEOF cat >>confdefs.h <<_ACEOF -#define ASE_SIZEOF___INT32 ${ac_cv_sizeof___int32} +#define QSE_SIZEOF___INT32 ${ac_cv_sizeof___int32} _ACEOF cat >>confdefs.h <<_ACEOF -#define ASE_SIZEOF___INT64 ${ac_cv_sizeof___int64} +#define QSE_SIZEOF___INT64 ${ac_cv_sizeof___int64} _ACEOF cat >>confdefs.h <<_ACEOF -#define ASE_SIZEOF___INT128 ${ac_cv_sizeof___int128} +#define QSE_SIZEOF___INT128 ${ac_cv_sizeof___int128} _ACEOF cat >>confdefs.h <<_ACEOF -#define ASE_SIZEOF_VOID_P ${ac_cv_sizeof_void_p} +#define QSE_SIZEOF_VOID_P ${ac_cv_sizeof_void_p} _ACEOF cat >>confdefs.h <<_ACEOF -#define ASE_SIZEOF_FLOAT ${ac_cv_sizeof_float} +#define QSE_SIZEOF_FLOAT ${ac_cv_sizeof_float} _ACEOF cat >>confdefs.h <<_ACEOF -#define ASE_SIZEOF_DOUBLE ${ac_cv_sizeof_double} +#define QSE_SIZEOF_DOUBLE ${ac_cv_sizeof_double} _ACEOF cat >>confdefs.h <<_ACEOF -#define ASE_SIZEOF_LONG_DOUBLE ${ac_cv_sizeof_long_double} +#define QSE_SIZEOF_LONG_DOUBLE ${ac_cv_sizeof_long_double} _ACEOF cat >>confdefs.h <<_ACEOF -#define ASE_SIZEOF_WCHAR_T ${ac_cv_sizeof_wchar_t} +#define QSE_SIZEOF_WCHAR_T ${ac_cv_sizeof_wchar_t} _ACEOF cat >>confdefs.h <<_ACEOF -#define ASE_VERSION "${VERSION}" +#define QSE_VERSION "${VERSION}" _ACEOF cat >>confdefs.h <<_ACEOF -#define ASE_VERSION_MAJOR $(echo ${VERSION} | cut -d. -f1) +#define QSE_VERSION_MAJOR $(echo ${VERSION} | cut -d. -f1) _ACEOF cat >>confdefs.h <<_ACEOF -#define ASE_VERSION_MINOR $(echo ${VERSION} | cut -d. -f2) +#define QSE_VERSION_MINOR $(echo ${VERSION} | cut -d. -f2) _ACEOF cat >>confdefs.h <<_ACEOF -#define ASE_VERSION_PATCH $(echo ${VERSION} | cut -d. -f3) +#define QSE_VERSION_PATCH $(echo ${VERSION} | cut -d. -f3) _ACEOF cat >>confdefs.h <<_ACEOF -#define ASE_AUTHOR "${PACKAGE_BUGREPORT}" +#define QSE_AUTHOR "${PACKAGE_BUGREPORT}" _ACEOF @@ -28136,19 +28136,19 @@ case $ac_cv_c_bigendian in yes) cat >>confdefs.h <<\_ACEOF -#define ASE_ENDIAN_BIG +#define QSE_ENDIAN_BIG _ACEOF ;; no) cat >>confdefs.h <<\_ACEOF -#define ASE_ENDIAN_LITTLE +#define QSE_ENDIAN_LITTLE _ACEOF ;; *) cat >>confdefs.h <<\_ACEOF -#define ASE_ENDIAN_UNKNOWN +#define QSE_ENDIAN_UNKNOWN _ACEOF ;; esac @@ -28166,13 +28166,13 @@ if test "${enable_wchar_is}" = "yes" then cat >>confdefs.h <<\_ACEOF -#define ASE_CHAR_IS_WCHAR +#define QSE_CHAR_IS_WCHAR _ACEOF else cat >>confdefs.h <<\_ACEOF -#define ASE_CHAR_IS_MCHAR +#define QSE_CHAR_IS_MCHAR _ACEOF fi @@ -28188,7 +28188,7 @@ if test "${enable_syscall_is}" = "yes" then cat >>confdefs.h <<\_ACEOF -#define ASE_USE_SYSCALL +#define QSE_USE_SYSCALL _ACEOF fi @@ -28446,7 +28446,7 @@ CJFLAGS=$CJFLAGS BUILD_CJ=$BUILD_CJ -ac_config_files="$ac_config_files makefile include/makefile include/ase/makefile include/ase/cmn/makefile include/ase/awk/makefile include/ase/lsp/makefile include/ase/tgp/makefile include/ase/utl/makefile lib/makefile lib/cmn/makefile lib/awk/makefile lib/lsp/makefile lib/tgp/makefile lib/utl/makefile cmd/makefile cmd/awk/makefile cmd/lsp/makefile cmd/tgp/makefile" +ac_config_files="$ac_config_files makefile include/makefile include/qse/makefile include/qse/cmn/makefile include/qse/awk/makefile include/qse/lsp/makefile include/qse/tgp/makefile include/qse/utl/makefile lib/makefile lib/cmn/makefile lib/awk/makefile lib/lsp/makefile lib/tgp/makefile lib/utl/makefile cmd/makefile cmd/awk/makefile cmd/lsp/makefile cmd/tgp/makefile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure @@ -28872,7 +28872,7 @@ exec 6>&1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by ase $as_me 0.5.0, which was +This file was extended by qse $as_me 0.5.0, which was generated by GNU Autoconf 2.61. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -28925,7 +28925,7 @@ Report bugs to ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF ac_cs_version="\\ -ase config.status 0.5.0 +qse config.status 0.5.0 configured by $0, generated by GNU Autoconf 2.61, with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" @@ -29039,16 +29039,16 @@ cat >>$CONFIG_STATUS <<\_ACEOF for ac_config_target in $ac_config_targets do case $ac_config_target in - "include/ase/config.h") CONFIG_HEADERS="$CONFIG_HEADERS include/ase/config.h" ;; + "include/qse/config.h") CONFIG_HEADERS="$CONFIG_HEADERS include/qse/config.h" ;; "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "makefile") CONFIG_FILES="$CONFIG_FILES makefile" ;; "include/makefile") CONFIG_FILES="$CONFIG_FILES include/makefile" ;; - "include/ase/makefile") CONFIG_FILES="$CONFIG_FILES include/ase/makefile" ;; - "include/ase/cmn/makefile") CONFIG_FILES="$CONFIG_FILES include/ase/cmn/makefile" ;; - "include/ase/awk/makefile") CONFIG_FILES="$CONFIG_FILES include/ase/awk/makefile" ;; - "include/ase/lsp/makefile") CONFIG_FILES="$CONFIG_FILES include/ase/lsp/makefile" ;; - "include/ase/tgp/makefile") CONFIG_FILES="$CONFIG_FILES include/ase/tgp/makefile" ;; - "include/ase/utl/makefile") CONFIG_FILES="$CONFIG_FILES include/ase/utl/makefile" ;; + "include/qse/makefile") CONFIG_FILES="$CONFIG_FILES include/qse/makefile" ;; + "include/qse/cmn/makefile") CONFIG_FILES="$CONFIG_FILES include/qse/cmn/makefile" ;; + "include/qse/awk/makefile") CONFIG_FILES="$CONFIG_FILES include/qse/awk/makefile" ;; + "include/qse/lsp/makefile") CONFIG_FILES="$CONFIG_FILES include/qse/lsp/makefile" ;; + "include/qse/tgp/makefile") CONFIG_FILES="$CONFIG_FILES include/qse/tgp/makefile" ;; + "include/qse/utl/makefile") CONFIG_FILES="$CONFIG_FILES include/qse/utl/makefile" ;; "lib/makefile") CONFIG_FILES="$CONFIG_FILES lib/makefile" ;; "lib/cmn/makefile") CONFIG_FILES="$CONFIG_FILES lib/cmn/makefile" ;; "lib/awk/makefile") CONFIG_FILES="$CONFIG_FILES lib/awk/makefile" ;; diff --git a/qse/configure.ac b/qse/configure.ac index 8a29f204..c5df3498 100644 --- a/qse/configure.ac +++ b/qse/configure.ac @@ -1,6 +1,6 @@ -AC_PREREQ(2.59) -AC_INIT([ase],[0.5.0],[bacon@abiyo.net]) -AC_CONFIG_HEADER([include/ase/config.h]) +dnl AC_PREREQ(2.59) +AC_INIT([qse],[0.5.0],[bacon@abiyo.net]) +AC_CONFIG_HEADER([include/qse/config.h]) AC_CONFIG_AUX_DIR(autoconf) dnl uses CC and CPP for compilation tests with .c test programs. @@ -67,8 +67,8 @@ dnl overrides the default CFLAGS setting #fi dnl make visible the 64bit interface to the file system -CFLAGS="$CFLAGS -D_LARGEFILE64_SOURCE -DASE_HAVE_CONFIG_H" -CXXFLAGS="$CXXFLAGS -D_LARGEFILE64_SOURCE -DASE_HAVE_CONFIG_H" +CFLAGS="$CFLAGS -D_LARGEFILE64_SOURCE -DQSE_HAVE_CONFIG_H" +CXXFLAGS="$CXXFLAGS -D_LARGEFILE64_SOURCE -DQSE_HAVE_CONFIG_H" dnl Checks for the math library (is -lm needed?) AC_CHECK_LIBM @@ -116,32 +116,32 @@ AC_CHECK_SIZEOF(double) AC_CHECK_SIZEOF(long double) AC_CHECK_SIZEOF(wchar_t) -AC_DEFINE_UNQUOTED(ASE_SIZEOF_CHAR, ${ac_cv_sizeof_char}, [sizeof(char)]) -AC_DEFINE_UNQUOTED(ASE_SIZEOF_SHORT, ${ac_cv_sizeof_short}, [sizeof(short)]) -AC_DEFINE_UNQUOTED(ASE_SIZEOF_INT, ${ac_cv_sizeof_int}, [sizeof(int)]) -AC_DEFINE_UNQUOTED(ASE_SIZEOF_LONG, ${ac_cv_sizeof_long}, [sizeof(long)]) -AC_DEFINE_UNQUOTED(ASE_SIZEOF_LONG_LONG, ${ac_cv_sizeof_long_long}, [sizeof(long long)]) -AC_DEFINE_UNQUOTED(ASE_SIZEOF___INT8, ${ac_cv_sizeof___int8}, [sizeof(__int8)]) -AC_DEFINE_UNQUOTED(ASE_SIZEOF___INT16, ${ac_cv_sizeof___int16}, [sizeof(__int16)]) -AC_DEFINE_UNQUOTED(ASE_SIZEOF___INT32, ${ac_cv_sizeof___int32}, [sizeof(__int32)]) -AC_DEFINE_UNQUOTED(ASE_SIZEOF___INT64, ${ac_cv_sizeof___int64}, [sizeof(__int64)]) -AC_DEFINE_UNQUOTED(ASE_SIZEOF___INT128, ${ac_cv_sizeof___int128}, [sizeof(__int128)]) -AC_DEFINE_UNQUOTED(ASE_SIZEOF_VOID_P, ${ac_cv_sizeof_void_p}, [sizeof(void*)]) -AC_DEFINE_UNQUOTED(ASE_SIZEOF_FLOAT, ${ac_cv_sizeof_float}, [sizeof(float)]) -AC_DEFINE_UNQUOTED(ASE_SIZEOF_DOUBLE, ${ac_cv_sizeof_double}, [sizeof(double)]) -AC_DEFINE_UNQUOTED(ASE_SIZEOF_LONG_DOUBLE, ${ac_cv_sizeof_long_double}, [sizeof(long double)]) -AC_DEFINE_UNQUOTED(ASE_SIZEOF_WCHAR_T, ${ac_cv_sizeof_wchar_t}, [sizeof(wchar_t)]) +AC_DEFINE_UNQUOTED(QSE_SIZEOF_CHAR, ${ac_cv_sizeof_char}, [sizeof(char)]) +AC_DEFINE_UNQUOTED(QSE_SIZEOF_SHORT, ${ac_cv_sizeof_short}, [sizeof(short)]) +AC_DEFINE_UNQUOTED(QSE_SIZEOF_INT, ${ac_cv_sizeof_int}, [sizeof(int)]) +AC_DEFINE_UNQUOTED(QSE_SIZEOF_LONG, ${ac_cv_sizeof_long}, [sizeof(long)]) +AC_DEFINE_UNQUOTED(QSE_SIZEOF_LONG_LONG, ${ac_cv_sizeof_long_long}, [sizeof(long long)]) +AC_DEFINE_UNQUOTED(QSE_SIZEOF___INT8, ${ac_cv_sizeof___int8}, [sizeof(__int8)]) +AC_DEFINE_UNQUOTED(QSE_SIZEOF___INT16, ${ac_cv_sizeof___int16}, [sizeof(__int16)]) +AC_DEFINE_UNQUOTED(QSE_SIZEOF___INT32, ${ac_cv_sizeof___int32}, [sizeof(__int32)]) +AC_DEFINE_UNQUOTED(QSE_SIZEOF___INT64, ${ac_cv_sizeof___int64}, [sizeof(__int64)]) +AC_DEFINE_UNQUOTED(QSE_SIZEOF___INT128, ${ac_cv_sizeof___int128}, [sizeof(__int128)]) +AC_DEFINE_UNQUOTED(QSE_SIZEOF_VOID_P, ${ac_cv_sizeof_void_p}, [sizeof(void*)]) +AC_DEFINE_UNQUOTED(QSE_SIZEOF_FLOAT, ${ac_cv_sizeof_float}, [sizeof(float)]) +AC_DEFINE_UNQUOTED(QSE_SIZEOF_DOUBLE, ${ac_cv_sizeof_double}, [sizeof(double)]) +AC_DEFINE_UNQUOTED(QSE_SIZEOF_LONG_DOUBLE, ${ac_cv_sizeof_long_double}, [sizeof(long double)]) +AC_DEFINE_UNQUOTED(QSE_SIZEOF_WCHAR_T, ${ac_cv_sizeof_wchar_t}, [sizeof(wchar_t)]) -AC_DEFINE_UNQUOTED(ASE_VERSION, "${VERSION}", [package version]) -AC_DEFINE_UNQUOTED(ASE_VERSION_MAJOR, $(echo ${VERSION} | cut -d. -f1), [major version number]) -AC_DEFINE_UNQUOTED(ASE_VERSION_MINOR, $(echo ${VERSION} | cut -d. -f2), [minor version number]) -AC_DEFINE_UNQUOTED(ASE_VERSION_PATCH, $(echo ${VERSION} | cut -d. -f3), [patch level]) -AC_DEFINE_UNQUOTED(ASE_AUTHOR,"${PACKAGE_BUGREPORT}", [author's email address]) +AC_DEFINE_UNQUOTED(QSE_VERSION, "${VERSION}", [package version]) +AC_DEFINE_UNQUOTED(QSE_VERSION_MAJOR, $(echo ${VERSION} | cut -d. -f1), [major version number]) +AC_DEFINE_UNQUOTED(QSE_VERSION_MINOR, $(echo ${VERSION} | cut -d. -f2), [minor version number]) +AC_DEFINE_UNQUOTED(QSE_VERSION_PATCH, $(echo ${VERSION} | cut -d. -f3), [patch level]) +AC_DEFINE_UNQUOTED(QSE_AUTHOR,"${PACKAGE_BUGREPORT}", [author's email address]) AC_C_BIGENDIAN( - [AC_DEFINE([ASE_ENDIAN_BIG],[],[Big Endian])], - [AC_DEFINE([ASE_ENDIAN_LITTLE],[],[Little Endian])], - [AC_DEFINE([ASE_ENDIAN_UNKNOWN],[],[Unknown Endian])]) + [AC_DEFINE([QSE_ENDIAN_BIG],[],[Big Endian])], + [AC_DEFINE([QSE_ENDIAN_LITTLE],[],[Little Endian])], + [AC_DEFINE([QSE_ENDIAN_UNKNOWN],[],[Unknown Endian])]) dnl define extra options AC_ARG_ENABLE([wchar], [AC_HELP_STRING([--enable-wchar], @@ -150,9 +150,9 @@ AC_ARG_ENABLE([wchar], [AC_HELP_STRING([--enable-wchar], test "${ac_cv_sizeof_wchar_t}" = "0" && enable_wchar_is=no if test "${enable_wchar_is}" = "yes" then - AC_DEFINE([ASE_CHAR_IS_WCHAR],[],[char is wchar]) + AC_DEFINE([QSE_CHAR_IS_WCHAR],[],[char is wchar]) else - AC_DEFINE([ASE_CHAR_IS_MCHAR],[],[char is mchar]) + AC_DEFINE([QSE_CHAR_IS_MCHAR],[],[char is mchar]) fi AC_ARG_ENABLE([syscall], [AC_HELP_STRING([--enable-syscall], @@ -160,7 +160,7 @@ AC_ARG_ENABLE([syscall], [AC_HELP_STRING([--enable-syscall], enable_syscall_is=$enableval,enable_syscall_is=no) if test "${enable_syscall_is}" = "yes" then - AC_DEFINE([ASE_USE_SYSCALL],[],[use the syscall() function]) + AC_DEFINE([QSE_USE_SYSCALL],[],[use the syscall() function]) fi AC_ARG_ENABLE([debug], [AC_HELP_STRING([--enable-debug], @@ -304,12 +304,12 @@ AC_SUBST(BUILD_CJ, $BUILD_CJ) AC_CONFIG_FILES([ makefile include/makefile - include/ase/makefile - include/ase/cmn/makefile - include/ase/awk/makefile - include/ase/lsp/makefile - include/ase/tgp/makefile - include/ase/utl/makefile + include/qse/makefile + include/qse/cmn/makefile + include/qse/awk/makefile + include/qse/lsp/makefile + include/qse/tgp/makefile + include/qse/utl/makefile lib/makefile lib/cmn/makefile lib/awk/makefile diff --git a/qse/doc/doxyfile b/qse/doc/doxyfile deleted file mode 100644 index ee57f0ff..00000000 --- a/qse/doc/doxyfile +++ /dev/null @@ -1,243 +0,0 @@ -# Doxyfile 1.4.6 - -#--------------------------------------------------------------------------- -# Project related configuration options -#--------------------------------------------------------------------------- -PROJECT_NAME = ase -PROJECT_NUMBER = -OUTPUT_DIRECTORY = ./api -CREATE_SUBDIRS = NO -OUTPUT_LANGUAGE = English -USE_WINDOWS_ENCODING = YES -BRIEF_MEMBER_DESC = YES -REPEAT_BRIEF = YES -ABBREVIATE_BRIEF = "The $name class" \ - "The $name widget" \ - "The $name file" \ - is \ - provides \ - specifies \ - contains \ - represents \ - a \ - an \ - the -ALWAYS_DETAILED_SEC = NO -INLINE_INHERITED_MEMB = NO -FULL_PATH_NAMES = YES -STRIP_FROM_PATH = ../include -STRIP_FROM_INC_PATH = -SHORT_NAMES = NO -JAVADOC_AUTOBRIEF = YES -MULTILINE_CPP_IS_BRIEF = NO -DETAILS_AT_TOP = NO -INHERIT_DOCS = YES -SEPARATE_MEMBER_PAGES = NO -TAB_SIZE = 8 -ALIASES = -OPTIMIZE_OUTPUT_FOR_C = NO -OPTIMIZE_OUTPUT_JAVA = NO -BUILTIN_STL_SUPPORT = NO -DISTRIBUTE_GROUP_DOC = NO -SUBGROUPING = YES -#--------------------------------------------------------------------------- -# Build related configuration options -#--------------------------------------------------------------------------- -EXTRACT_ALL = NO -EXTRACT_PRIVATE = NO -EXTRACT_STATIC = YES -EXTRACT_LOCAL_CLASSES = YES -EXTRACT_LOCAL_METHODS = NO -HIDE_UNDOC_MEMBERS = YES -HIDE_UNDOC_CLASSES = YES -HIDE_FRIEND_COMPOUNDS = NO -HIDE_IN_BODY_DOCS = NO -INTERNAL_DOCS = NO -CASE_SENSE_NAMES = NO -HIDE_SCOPE_NAMES = NO -SHOW_INCLUDE_FILES = YES -INLINE_INFO = YES -SORT_MEMBER_DOCS = YES -SORT_BRIEF_DOCS = NO -SORT_BY_SCOPE_NAME = NO -GENERATE_TODOLIST = YES -GENERATE_TESTLIST = YES -GENERATE_BUGLIST = YES -GENERATE_DEPRECATEDLIST= YES -ENABLED_SECTIONS = -MAX_INITIALIZER_LINES = 30 -SHOW_USED_FILES = YES -SHOW_DIRECTORIES = NO -FILE_VERSION_FILTER = -#--------------------------------------------------------------------------- -# configuration options related to warning and progress messages -#--------------------------------------------------------------------------- -QUIET = NO -WARNINGS = YES -WARN_IF_UNDOCUMENTED = YES -WARN_IF_DOC_ERROR = YES -WARN_NO_PARAMDOC = NO -WARN_FORMAT = "$file:$line: $text" -WARN_LOGFILE = -#--------------------------------------------------------------------------- -# configuration options related to the input files -#--------------------------------------------------------------------------- -INPUT = ../include/ase -FILE_PATTERNS = *.h \ - *.hxx \ - *.hpp \ - *.h++ \ - *.java -RECURSIVE = YES -EXCLUDE = ../net \ - ../com \ - ../stx \ - ../test/awk \ - ../test/net \ - ../test/com \ - ../test/stx -EXCLUDE_SYMLINKS = NO -EXCLUDE_PATTERNS = -EXAMPLE_PATH = -EXAMPLE_PATTERNS = * -EXAMPLE_RECURSIVE = NO -IMAGE_PATH = imgs -INPUT_FILTER = -FILTER_PATTERNS = -FILTER_SOURCE_FILES = NO -#--------------------------------------------------------------------------- -# configuration options related to source browsing -#--------------------------------------------------------------------------- -SOURCE_BROWSER = YES -INLINE_SOURCES = NO -STRIP_CODE_COMMENTS = YES -REFERENCED_BY_RELATION = NO -REFERENCES_RELATION = NO -USE_HTAGS = NO -VERBATIM_HEADERS = NO -#--------------------------------------------------------------------------- -# configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- -ALPHABETICAL_INDEX = NO -COLS_IN_ALPHA_INDEX = 5 -IGNORE_PREFIX = -#--------------------------------------------------------------------------- -# configuration options related to the HTML output -#--------------------------------------------------------------------------- -GENERATE_HTML = YES -HTML_OUTPUT = html -HTML_FILE_EXTENSION = .html -HTML_HEADER = -HTML_FOOTER = -HTML_STYLESHEET = -HTML_ALIGN_MEMBERS = YES -GENERATE_HTMLHELP = NO -CHM_FILE = -HHC_LOCATION = -GENERATE_CHI = NO -BINARY_TOC = NO -TOC_EXPAND = NO -DISABLE_INDEX = NO -ENUM_VALUES_PER_LINE = 4 -GENERATE_TREEVIEW = NO -TREEVIEW_WIDTH = 250 -#--------------------------------------------------------------------------- -# configuration options related to the LaTeX output -#--------------------------------------------------------------------------- -GENERATE_LATEX = NO -LATEX_OUTPUT = latex -LATEX_CMD_NAME = latex -MAKEINDEX_CMD_NAME = makeindex -COMPACT_LATEX = NO -PAPER_TYPE = a4wide -EXTRA_PACKAGES = -LATEX_HEADER = -PDF_HYPERLINKS = NO -USE_PDFLATEX = NO -LATEX_BATCHMODE = NO -LATEX_HIDE_INDICES = NO -#--------------------------------------------------------------------------- -# configuration options related to the RTF output -#--------------------------------------------------------------------------- -GENERATE_RTF = NO -RTF_OUTPUT = rtf -COMPACT_RTF = NO -RTF_HYPERLINKS = NO -RTF_STYLESHEET_FILE = -RTF_EXTENSIONS_FILE = -#--------------------------------------------------------------------------- -# configuration options related to the man page output -#--------------------------------------------------------------------------- -GENERATE_MAN = NO -MAN_OUTPUT = man -MAN_EXTENSION = .3 -MAN_LINKS = NO -#--------------------------------------------------------------------------- -# configuration options related to the XML output -#--------------------------------------------------------------------------- -GENERATE_XML = NO -XML_OUTPUT = xml -XML_SCHEMA = -XML_DTD = -XML_PROGRAMLISTING = YES -#--------------------------------------------------------------------------- -# configuration options for the AutoGen Definitions output -#--------------------------------------------------------------------------- -GENERATE_AUTOGEN_DEF = NO -#--------------------------------------------------------------------------- -# configuration options related to the Perl module output -#--------------------------------------------------------------------------- -GENERATE_PERLMOD = NO -PERLMOD_LATEX = NO -PERLMOD_PRETTY = YES -PERLMOD_MAKEVAR_PREFIX = -#--------------------------------------------------------------------------- -# Configuration options related to the preprocessor -#--------------------------------------------------------------------------- -ENABLE_PREPROCESSING = YES -MACRO_EXPANSION = NO -EXPAND_ONLY_PREDEF = NO -SEARCH_INCLUDES = YES -INCLUDE_PATH = -INCLUDE_FILE_PATTERNS = -PREDEFINED = -EXPAND_AS_DEFINED = -SKIP_FUNCTION_MACROS = YES -#--------------------------------------------------------------------------- -# Configuration::additions related to external references -#--------------------------------------------------------------------------- -TAGFILES = -GENERATE_TAGFILE = -ALLEXTERNALS = NO -EXTERNAL_GROUPS = YES -PERL_PATH = /usr/bin/perl -#--------------------------------------------------------------------------- -# Configuration options related to the dot tool -#--------------------------------------------------------------------------- -CLASS_DIAGRAMS = YES -HIDE_UNDOC_RELATIONS = YES -HAVE_DOT = NO -CLASS_GRAPH = YES -COLLABORATION_GRAPH = YES -GROUP_GRAPHS = YES -UML_LOOK = NO -TEMPLATE_RELATIONS = NO -INCLUDE_GRAPH = YES -INCLUDED_BY_GRAPH = YES -CALL_GRAPH = NO -GRAPHICAL_HIERARCHY = YES -DIRECTORY_GRAPH = YES -DOT_IMAGE_FORMAT = png -DOT_PATH = -DOTFILE_DIRS = -MAX_DOT_GRAPH_WIDTH = 1024 -MAX_DOT_GRAPH_HEIGHT = 1024 -MAX_DOT_GRAPH_DEPTH = 1000 -DOT_TRANSPARENT = NO -DOT_MULTI_TARGETS = NO -GENERATE_LEGEND = YES -DOT_CLEANUP = YES -#--------------------------------------------------------------------------- -# Configuration::additions related to the search engine -#--------------------------------------------------------------------------- -SEARCHENGINE = NO diff --git a/qse/doc/en/ase-assert.man b/qse/doc/en/ase-assert.man deleted file mode 100644 index 1e54f916..00000000 --- a/qse/doc/en/ase-assert.man +++ /dev/null @@ -1,15 +0,0 @@ -.title assert - -= Assertion == - -The library provides a couple of macros to replace the standard assert macro. -ASE_ASSERT and ASE_ASSERTX - -These macros requires linking with libaseutl.a unless you define ase_assert_puts yourself. - -= ase_assert_puts = - -You may define your own output function for assertion output. - -Include: ase/cmn/macros.h -Link: libaseutl.a diff --git a/qse/doc/en/ase.man b/qse/doc/en/ase.man deleted file mode 100644 index 4e377099..00000000 --- a/qse/doc/en/ase.man +++ /dev/null @@ -1,51 +0,0 @@ -.title ASE - -= ASE = - -ASE is a programming library implementing various programming languages and text utilities for embedding purposes. The library is developed in the C programming language and provides the JNI binding to JAVA, the COM and .NET interface. - -{{{ - _____ _____ _____ - /\ \ /\ \ /\ \ - /::\ \ /::\ \ /::\ \ - /::::\ \ /::::\ \ /::::\ \ - /::::::\ \ /::::::\ \ /::::::\ \ - /:::/\:::\ \ /:::/\:::\ \ /:::/\:::\ \ - /:::/__\:::\ \ /:::/__\:::\ \ /:::/__\:::\ \ - /::::\ \:::\ \ \:::\ \:::\ \ /::::\ \:::\ \ - /::::::\ \:::\ \ ___\:::\ \:::\ \ /::::::\ \:::\ \ - /:::/\:::\ \:::\ \ /\ \:::\ \:::\ \ /:::/\:::\ \:::\ \ - /:::/ \:::\ \:::\____\/::\ \:::\ \:::\____\/:::/__\:::\ \:::\____\ - \::/ \:::\ /:::/ /\:::\ \:::\ \::/ /\:::\ \:::\ \::/ / - \/____/ \:::\/:::/ / \:::\ \:::\ \/____/ \:::\ \:::\ \/____/ - \::::::/ / \:::\ \:::\ \ \:::\ \:::\ \ - \::::/ / \:::\ \:::\____\ \:::\ \:::\____\ - /:::/ / \:::\ /:::/ / \:::\ \::/ / - /:::/ / \:::\/:::/ / \:::\ \/____/ - /:::/ / \::::::/ / \:::\ \ - /:::/ / \::::/ / \:::\____\ - \::/ / \::/ / \::/ / - \/____/ \/____/ \/____/ - -}}} - -== Download == - -Download the library source code from the following links. - -[[[ -* {Google Code,http://abiyo.googlecode.com/} -]]] - -== Documentation == - -[[[ -* {Quickstart,quickstart.html} -* {AWK Embedder's guide,awk-embed.html} -* {LISP Embedder's guide,lsp-embed.html} -* {Frequently Asked Questions,faq.html} -]]] - -== Licensing == - -ASE is distributed under a {BSD license,license.html} and is free for all uses. diff --git a/qse/doc/en/awk-embed.man b/qse/doc/en/awk-embed.man deleted file mode 100644 index 6798c0f8..00000000 --- a/qse/doc/en/awk-embed.man +++ /dev/null @@ -1,209 +0,0 @@ -.title Embedding ASEAWK -.tabstop 6 - -= ASEAWK = -ASE provides an embeddable processor of a dialect of the AWK programming language. The language implemented is slightly different from {the version developed by Brian W. Kernighan, http://cm.bell-labs.com/cm/cs/awkbook/index.html} and has been adjusted to the author's preference. - -== Overview == -To embed the awk interpreter to an application, the developer should provide the following routines. - - * System functions including memory management - * Source code I/O functions - * I/O functions to interface with the console, files, and pipes. - -The following code fragment illustrates the basic steps of embedding the processor. - -{{{ -1) #include - -2) ase_awk_t* awk; -3) awk = ase_awk_open (...); -4) if (ase_awk_parse (awk, ...) == -1) - { - /* parse error */ - } - else - { -5) if (ase_awk_run (awk, ...) == -1) - { - /* run-time error */ - } - } -6) ase_awk_close (awk); -}}} - -((( -* Most of the functions and data types needed are defined in the header file ##=ase/awk/awk.h=##. -* ##=ase_awk_t=## represents the processor. However, the internal representation is not exposed. -* ##=ase_awk_open=## creates the processor instance. -* ##=ase_awk_parse=## parses an AWK script. -* ##=ase_awk_run=## executes the script parsed. -* ##=ase_awk_close=## destroys the processor instance. -))) - -More detailed description is available {here,awk-mini-en.html}. You may refer to other sample files such as ##=ase/test/awk/awk.c=## and ##=ase/awk/jni.c=##. - -== Primitive Functions == -A set of primitive functions is needed to create an instance of the AWK processor. A primitive function is a user-defined function to help the library perform system-dependent operations such as memory allocation, character class handling. - -{{{ -typedef struct ase_awk_prmfns_t ase_awk_prmfns_t; - -struct ase_awk_prmfns_t -{ - ase_mmgr_t mmgr; - ase_ccls_t ccls; - - struct - { - ase_awk_pow_t pow; - ase_awk_sprintf_t sprintf; - ase_awk_dprintf_t dprintf; - void* custom_data; - } misc; -}; -}}} - -A caller of ##=ase_awk_open=## should fill in most of the fields of a ##=ase_awk_prmfns_t=## structure and pass the structure to it. The function pointers in the miscellaneous group labeled [misc] is defined as follows: - -{{{ -/* returns the value of x raised to the power of y */ -typedef ase_real_t (*ase_awk_pow_t) (void* custom, ase_real_t x, ase_real_t y); - -/* similar to snprintf of the standard C library. */ -typedef int (*ase_awk_sprintf_t) (void* custom, ase_char_t* buf, ase_size_t size, const ase_char_t* fmt, ...); - -/* similar to printf of the standard C library. called by a few uncommonly - * used output functions usually for debugging purpose */ -typedef void (*ase_awk_dprintf_t) (void* custom, const ase_char_t* fmt, ...); -}}} - -The fourth field of the group is passed to its member functions as the first argument on invocation. The function pointed by the ##=sprintf=## field should ensure that the resuliting string is null-terminated and ##=%s=## and ##=%c=## are accepted for the ##=ase_char_t*=## and ##=ase_char_t=## type respectively regardless the character mode. - -The memory manager group labeled [mmgr] and the character class group labled [ccls] are defined as follows: - -{{{ -typedef void* (*ase_malloc_t) (void* custom, ase_size_t n); -typedef void* (*ase_realloc_t) (void* custom, void* ptr, ase_size_t n); -typedef void (*ase_free_t) (void* custom, void* ptr); - -typedef ase_bool_t (*ase_isccls_t) (void* custom, ase_cint_t c); -typedef ase_cint_t (*ase_toccls_t) (void* custom, ase_cint_t c); - -struct ase_mmgr_t -{ - ase_malloc_t malloc; - ase_realloc_t realloc; - ase_free_t free; - void* custom_data; -}; - -struct ase_ccls_t -{ - ase_isccls_t is_upper; - ase_isccls_t is_lower; - ase_isccls_t is_alpha; - ase_isccls_t is_digit; - ase_isccls_t is_xdigit; - ase_isccls_t is_alnum; - ase_isccls_t is_space; - ase_isccls_t is_print; - ase_isccls_t is_graph; - ase_isccls_t is_cntrl; - ase_isccls_t is_punct; - ase_toccls_t to_upper; - ase_toccls_t to_lower; - void* custom_data; -}; -}}} - -The functions in these groups perform the memory operations and character class related operations respectively. They follow the style of the memory allocation functions and character class handling functions of the standard C library except that they accept a pointer to the user-defined data as the first argument, thus providing more flexibility. The pointer to the user-defined data is specified into the ##=custom_data=## field of each group. The ##=realloc=## field, however, can be ##=ASE_NULL=##, in which case the functions pointed by the free and the malloc field replace the role of the function pointed by the ##=realloc=## field. - -== Source IO Handler == - -The source code is handled by a source input handler provided by the user. The optional source code output handler can be provided to have the internal parse tree converted back to the source code. - -The source code handler is defined as follows: - -{{{ -typedef ase_ssize_t (*ase_awk_io_t) (int cmd, void* custom, ase_char_t* data, ase_size_t count); - -typedef struct ase_awk_srcios_t ase_awk_srcios_t; - -struct ase_awk_srcios_t -{ - ase_awk_io_t in; /* source input */ - ase_awk_io_t out; /* source output */ - void* custom_data; -}; -}}} - -The ##=in=## field of the ase_awk_srcios_t is mandatory and should be filled in. The ##=out=## field can be set to ##=ASE_NULL=## or can point to a source output handling function. The ##=custom_data=## field is passed to the source handlers as the second argument. The first parameter ##=cmd=## of the source input handler is one of ##=ASE_AWK_IO_OPEN=##, ##=ASE_AWK_IO_CLOSE=##, ##=ASE_AWK_IO_READ=##. The first parameter ##=cmd=## of the source output handler is one of ##=ASE_AWK_IO_OPEN=##, ##=ASE_AWK_IO_CLOSE=##, ##=ASE_AWK_IO_WRITE=##. The third parameter ##=data=## and the fourth parameter ##=count=## are the pointer to the buffer to read data into and its size if the first parameter ##=cmd=## is ##=ASE_AWK_IO_READ=## while they are the pointer to the data and its size if ##=cmd=## is ##=ASE_AWK_IO_WRITE=##. - -The source handler should return a negative value for an error and zero or a positive value otherwise. However, there is a subtle difference in the meaning of the return value depending on the value of the first parameter ##=cmd=##. - -When ##=cmd=## is ##=ASE_AWK_IO_OPEN=##, the return value of -1 and 1 indicates the failure and the success respectively. In addition, the return value of 0 indicates that the operation is successful but has reached the end of the stream. The library calls the handler with ##=ASE_AWK_IO_CLOSE=## for deinitialization if the return value is 0 or 1. When ##=cmd=## is ##=ASE_AWK_IO_CLOSE=##, the return value of -1 and 0 indicate the failure and the success respectively. When ##=cmd=## is ##=ASE_AWK_IO_READ=## or ##=ASE_AWK_IO_WRITE=##, the return value of -1 indicates the failure, 0 the end of the stream, and other positive values the number of characters read or written. - -The typical source handler will look as follows: -{{{ -ase_ssize_t awk_srcio_in (int cmd, void* arg, ase_char_t* data, ase_size_t size) -{ - if (cmd == ASE_AWK_IO_OPEN) - { - /* open the stream */ - return 1; - } - else if (cmd == ASE_AWK_IO_CLOSE) - { - /* close the stream */ - return 0; - } - else if (cmd == ASE_AWK_IO_READ) - { - /* read the stream */ - return the number of characters read; - } - - return -1; -} - -ase_ssize_t awk_srcio_out (int cmd, void* arg, ase_char_t* data, ase_size_t size) -{ - if (cmd == ASE_AWK_IO_OPEN) - { - /* open the stream */ - return 1; - } - else if (cmd == ASE_AWK_IO_CLOSE) - { - /* close the stream after flushing it */ - return 0; - } - else if (cmd == ASE_AWK_IO_WRITE) - { - /* write the stream */ - return the number of characters written; - } - - return -1; -} -}}} - -Once you have the source handler ready, you can fill in the fields of a ##=ase_awk_srcios_t=## structure and pass it to the call of ##=ase_awk_parse=##. - -{{{ -ase_awk_srcios_t srcios; - -srcios.in = awk_srcio_in; -srcios.out = awk_srcio_out; -srcios.custom_data = point to the extra information necessary; - -if (ase_awk_parse (awk, &srcios) == -1) -{ - /* handle error */ -} -}}} - -== External IO Handler == - -External IO handlers should be provided to support the AWK's built-in IO facilities. diff --git a/qse/doc/en/awk-lang.man b/qse/doc/en/awk-lang.man deleted file mode 100644 index 89bb7e0f..00000000 --- a/qse/doc/en/awk-lang.man +++ /dev/null @@ -1,204 +0,0 @@ -.title AWK Language -.tabstop 6 - -Most of the AWK language features are supported. This documents shows notable language features that might be different from other implementations. - -== Variable == - -A local variable and a global variable are supported if ASE_AWK_EXPLICIT is enabled. ASE_AWK_IMPLICIT is to enable a named variable. You may enable both options to support both types of variables. Either should be enabled for the language to be useful, however. - -A local variable can be declared at the top of each block before any statements are encountered. A global variable can be declared in any places outside a function and a pattern-action block. - -{{{ -global a, b; -global c; - -BEGIN { - local x, y; - a = 30; x = 30; x = a + 40; print x; } -} -}}} - -{{| -! Code -! Description -|- -| function a() { } - BEGIN { ##-a=20;-## } -| A function and a named variable cannot have the same name. A named variable requires ASE_AWK_IMPLICIT to be enabled. -|- -| function a() { } - - BEGIN { - local a; - a = 20; - } -| A local variable can shade the same function name. The deparsed output shows this. - - function a () - { - } - BEGIN { - local __l0; - __l0 = 20; - } - - Local variable declaration requires ASE_AWK_EXPLICIT, though. -|- -| global a; - function ##-a()-## { } - - function a() { } - global ##-a-##; -| A function and a global variable cannot have the same name. -|- -| function fn () { - x = 20; - return x; - } - - global x; - - BEGIN { - x = 30; - print fn (); - print x; - } - -| A global variable is visible after it is declared to the remaining part of the program. x inside fn is x named variable while x in BEGIN is a global variable. - - global __g17; - function fn () - { - x = 20; - return x; - } - BEGIN { - __g17 = 30; - print fn (); - print __g17; - } -|- -| global x; - BEGIN { - x = 1; - { - local x; - x = 2; - { - local x; - x = 3; - print x; - } - print x; - } - print x; - } -| A local variable can shade a global variable and a local variable at outer scope. - - global __g17; - - BEGIN { - local __l0, __l1; - __g17 = 1; - { - __l0 = 2; - { - __l1 = 3; - print __l1; - } - print __l0; - } - print __g17; - } -|}} - - -== Parameter == - -A parameter name can shade a enclosing function name. The following table shows the details. - -{{| -! Code -! Description -|- -| function f(f) { print f; } -| A parameter name can be the same as the enclosing function name. -|- -| function f(f) { ##-f("hello")-##; } -| A resursive call to the function f is not possible as the third f is the parameter f. -|- -| function fn(f) { - f = 20; - } - BEGIN { - f = 50; - fn(100); - print f; - } -| 50 is printed. The parameter f in fn doesn't affect the named variable f in BEGIN. The deparsed output shows this clearly. - - function fn (__p0) - { - __p0 = 20; - } - BEGIN { - f = 50; - fn (100); - print f; - } -|}} - -== Statement Terminator == -A statement must end with a semicolon. A new-line character is treated as whitespace. For this reason, no line continuator, a backslash, is supported. - -{{{ -BEGIN { print "hello, world"; } -}}} - - -== Function == -A blank is allowed between a function name and a left parenthesis. The left bracket for function body doesn't have to be on the same line as the function name and parameters. - -{{{ -function fn (x, y) -{ - return x + y; -} -BEGIN { print fn (10, 20); } -}}} - -== Return == -A return statement is allowed in BEGIN and END. -{{{ -END { return 20; } -}}} - -== Pattern-Action Block == -ASE_AWK_BLOCKLESS enables the use of a action-less pattern-action block. Turning it off changes the parser behaviour to treat a block not following any patterns, BEGIN, END. - -{{{ -BEGIN -{ print "hello"; } -{ print "hello2"; } -}}} - -In the code snippet above, the first block is associated with BEGIN while the second block is a patternless pattern-action block that matches any lines of input. It is the same as the following. - -{{{ -BEGIN { - print "hello"; -} - -{ - print "hello2"; -} -}}} - -== Shift Operators == - -Turning on ASE_AWK_SHIFT enables the use of the shift operator for bit shifting. >> and << are the right and the left shift operator respectively. - -{{{ -BEGIN { print (0xFFFF >> 2); print 0x00FF << 2; } -}}} diff --git a/qse/doc/en/awk-ref.man b/qse/doc/en/awk-ref.man deleted file mode 100644 index f192fdfc..00000000 --- a/qse/doc/en/awk-ref.man +++ /dev/null @@ -1,93 +0,0 @@ -.title Introduction To ASE AWK - -== OVERVIEW == - -=== What is it? === -'''''ASE AWK''''' is an embeddable implementation of the AWK programming language. It is composed of a set of C functions to help programmers embed the AWK interpreter to their own applications easily. - -=== What does it do? === -'''''ASE AWK''''' can do most of the things that other existing AWK interpreters can do. - -=== Differences with other implementations === -There exist a number of AWK interpreters available. Most of Unix/Linux operating systems come with an AWK interpreter. - -== DESCRIPTION == - -=== Interpreter === -Multiple instances of interpreters can be created in a single application and each instance of the interpreter created maintains its own state in the data structure pointed at by its handle of the type ''ase_awk_t''. - - * ase_awk_t - an abstract type to an interpreter object. - * ase_awk_open - creates an interpreter object. - * ase_awk_close - destroys the interprer object created by ase_awk_open. - -{{{ -ase_awk_t* ase_awk_open (void); -void ase_awk_close (ase_awk_t* awk); -}}} - -The interpreter provides two distinct functionalites in large; the parser and the executor. The parser transforms the source code into the internal parse tree and the executor evaluates the parse tree and runs the code. - -{{{ -int ase_awk_parse (ase_awk_t* awk); -int ase_awk_run (ase_awk_t* awk, ase_awk_io_t txtio, void* txtio_arg); -}}} - -=== IO Handlers === -'''''ASE AWK''''' does not provide any built-in IO handling routines. Instead, it requires users to provide them. 4 different IO streams should be provided to take full advantage of the interpreter. - - * Source code input - * Source code output - * Data input - * Data output - -{{{ -enum -{ - XP_AWK_INPUT_OPEN = 0, - XP_AWK_INPUT_CLOSE = 1, - XP_AWK_INPUT_NEXT = 2, - XP_AWK_INPUT_DATA = 3, - - XP_AWK_OUTPUT_OPEN = 4, - XP_AWK_OUTPUT_CLOSE = 5, - XP_AWK_OUTPUT_NEXT = 6, - XP_AWK_OUTPUT_DATA = 7 -}; - -typedef ase_ssize_t (*ase_awk_io_t) (int cmd, void* arg, ase_char_t* data, ase_size_t count); -}}} - -=== Miscellaneous Functions === -'''''ASE AWK''''' provides extra utility routines as well as the interpreter. These routines used by the interpreter can be accessed from the interested applications directly without regard to the interpreter. - -==== String ==== - -==== Conversion ==== - * ase_awk_strtolong - convert a numeric string to an integer of the ase_long_t type. - * ase_awk_strtoreal - convert a numeric string to a decimal number of the ase_real_t type. - -{{{ -ase_long_t ase_awk_strtolong (const ase_char_t* str, int base, const ase_char_t** endptr); -ase_real_t ase_awk_strtoreal (const ase_char_t* str); -}}} - -==== Regular Expression ==== -The regular expression routines built into the interpreter can replace other regular expression libraries available. By utilizing this, the application can have the identical regular expression functionalities as the embedded AWK interpreter. - -{{{ -ase_awk_rex_t* ase_awk_rex_open (ase_awk_rex_t* rex); -void ase_awk_rex_close (ase_awk_rex_t* rex); -}}} - -=== User-defined Built-in Functions === -Custom built-in functions can be added to the interpreter. This requires the deeper look into the internals of the interpreter. - -== EXAMPLE == -{{{ -#include - -int ase_main () -{ - return 0; -} -}}} diff --git a/qse/doc/en/license.man b/qse/doc/en/license.man deleted file mode 100644 index 2b2ed8e1..00000000 --- a/qse/doc/en/license.man +++ /dev/null @@ -1,19 +0,0 @@ -.title ASE License Agreement - -Software License Agreement (BSD License) - -Copyright (c) 2006-2007, Hyung-Hwan Chung -All rights reserved. - -Redistribution and use of this software in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - -[[[ -* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - -* Neither the name of the copyright owner nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. -]]] - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT OWNER AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - diff --git a/qse/doc/en/lsp-embed.man b/qse/doc/en/lsp-embed.man deleted file mode 100644 index f36a3cc2..00000000 --- a/qse/doc/en/lsp-embed.man +++ /dev/null @@ -1,22 +0,0 @@ - -= ASELSP = - -ASELSP is an implementation of a lisp-like language for embedding purposes. - -== Types == - -[[[ -* ase_lsp_t -* ase_lsp_io_t -* ase_lsp_obj_t -]]] - -== Functions == - -[[[ -* ase_lsp_open -* ase_lsp_close -* ase_lsp_read -* ase_lsp_eval -* ase_lsp_print -]]] diff --git a/qse/doc/en/quickstart.man b/qse/doc/en/quickstart.man deleted file mode 100644 index 1110accb..00000000 --- a/qse/doc/en/quickstart.man +++ /dev/null @@ -1,177 +0,0 @@ -.title ASE Quick Start Guide - -= ASE Quick Start Guide = - -The first step in using this library is to build it. This document shows how to build the core library on various operating systems. - -== Source Code Directories == - -The source code is organized in the following directory structure. - -{{{ -ase +- cmn .................... contains common functions and macros. - +- utl .................... contains more general-purpose utillity - | functions and macros. - +- awk .................... implementation of the awk processor. - +- lsp .................... implementation of the lisp processor. - +- com .................... COM wrapper of the processors. - +- cmd +- awk ............. contains test programs for the awk processor. - +- lsp ............. contains test programs for the lisp processor. - +- com ............. contains test programs for the COM module. -}}} - -== Unix/Linux == - -You may run the [[configure]] script on most of the supported operation systems to set up the build environment and then run the [[make]] utility. - -{{{ -$ ./configure -$ make -}}} - -The [[make]] utility visits each module subdirectory and build binary files. The library files are placed in the [[release/lib]] directory and the executable files in the [[release/bin]] directory. - -If you appened the option [[--enable-debug]] to the [[configure]] script, the files would be located in [[debug/lib]] and [[debug/bin]] directory. Besides, it sets up the environment to be more debugging friendly. - -{{{ -$ ./configure --enable-debug -$ make -}}} - -The following table shows the output locations of generated files. - -{{| -! Mode -! Executable Files -! Library Files -! Include Files -|- -| release -| ${ase}/release/bin -| ${ase}/release/lib -| ${ase}/release/inc -|- -| debug -| ${ase)/debug/bin -| $(ase)/debug/lib -| ${ase}/debug/inc -|}} - -* ${ase} - the top level directory - -If you have preference for a particular compiler and the flags, you may explicitly specify them when you run the [[configure]] script. Here are presented a few such examples. - -{{| -! -! 32 Bits -! 64 Bits -|- -| HP-UX B.11.23 (PA-RISC) -| ./configure -build=hppa-hp-hpux -| ./configure -build=hppa64-hp-hpux -| HP-UX B.11.23 (IA64) -| ./configure -build=ia64-hp-hpux -| ./configure -build=ia64-hp-hpux -|}} - -{{| -! -! 32 Bits -! 64 Bits -|- -| HP-UX B.11.23 -| CC=cc CFLAGS="-O2 +DD32" LDFLAGS="+DD32" CXX=aCC CXXFLAGS="-O2 +DD32" ./configure -| CC=cc CFLAGS="-O2 +DD64" LDFLAGS="+DD64" CXX=aCC CXXFLAGS="-O2 +DD64" ./configure -|- -| SCO OpenServer 5.0.7 -| CC=cc CFLAGS="-Xc -a ansi -O2" ./configure -| -|- -| Solaris 10 -| CC=gcc CFLAGS="-Wall -O2" CXX=g++ CXXFLAGS="-Wall -O2" ./configure -| CC=gcc CFLAGS="-Wall -O2 -m64" CXX=g++ CXXFLAGS="-Wall -O2 -m64" LDFLAGS="-m64" ./configure -|- -| OpenWRT mipsel -| CC=mipsel-linux-uclibc-gcc CXX=mipsel-linux-uclibc-g++ LD=mipsel-linux-uclibc-ld ./configure --host=mips --disable-wchar -| -|- -| CellSDK 3.0 -| CC=ppu-gcc CXX=ppu-g++ RANLIB=ppu-ranlib AR=ppu-ar CFLAGS="-m64 -mabi=altivec -maltivec" CXXFLAGS="-m64 -mabi=altivec -maltivec" ./configure --host=ppc64 -| CC=spu-gcc CXX=spu-g++ RANLIB=spu-ranlib AR=spu-ar ./configure --host=ppc -|}} - -The JNI library for JAVA is built automatically if required JNI header files are detected by the [[configure]] script. Make sure that the [[javac]] command is included in the [[PATH]] environment variable. The JAVA class files are built with the [[javac]] command detected as well. The {ant,http://ant.apache.org} utility from the Apache Software Foundataion can be used to build the java class files. The [[build.xml]] file is provided at the top-level directory. - -== OpenVMS == - -You may use the [[mms]] command or the [[mmk]] command to build the library. No counterpart for the [[configure]] script is provided. As no top-level build script is provided, you have to run the command in each directory that you want to build the library in. - -Let's build the AWK library and its test program, for instance. - -{{{ -set default [.ase.cmn] -mms -set default [-.awk] -mms -set default [-.utl] -mms -set default [-.test.awk] -mms -}}} - -For those who are not familar with OpenVMS, here is one of the ways how to run the test program. - -{{{ -; define the foreign command. -aseawk :== $DISK$GEIN_SYS:[USERS.BACON.ASE.TEST.AWK]aseawk.exe -; run the command. -aseawk -f hello.awk -}}} - -== MS-Windows == - -You may use the Visual Studio 6 or later to open the project. But you need Visual Studio 2003 or later to build the .NET related projects. Otherwise, open the command-line build environment and use the [[make]] utility. - -A set of make scripts is provided to support the Microsoft build environement and the Borland build environment. The script for the Miscrosoft build environment is named [[msw-cl.mak]] while it is [[msw-bcc.mak]] for the Borland counterpart. - -If you are building the AWK library and the test program, this is probably what you have to do. - -{{{ -cd ase\cmn -nmake /f msw-cl.mak -cd ..\awk -nmake /f msw-cl.mak -cd ..\utl -nmake /f msw-cl.mak -cd ..\test\awk -nmake /f msw-cl.mak -}}} - -However, The COM module can only be built within the Visual Studio environment. After having built the COM module, you may open [[ase/test/com/asecom.vbp]] for testing. - - -== Extra Features == - -unicode -keyword replacement -error string customization - -== Languages == - -{{| -! Language -! Status -! Bindings -|- -| AWK -| Beta-1 -| C,C++,Java,.Net -|- -| LISP -| Experimental -| C -|- -| Javascript -| Planned -| C -|}} diff --git a/qse/doc/imgs/awk-srcio-read.dia b/qse/doc/imgs/awk-srcio-read.dia deleted file mode 100644 index 9abed5d80734fbfa6acec6db0e941efbefa311ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1999 zcmV;=2Qc^_iwFP!000003+-K7kDE9YexF}~QfZ%32V=~obf#*nR=ZNAm3G>fzCj(uHilVU2z@}l!x~junpPV0V zF>W}2+;Gvj;ktm%p79 zz4w>*91WSbT6%B{f(bsK9^9?xkho!(6>Vxft#Y$jQ?Hlp+ICF#R*9_B5Wf9HqTKzb zJxxpb7n~!`K`(@hf60>O>3#LXhvmwSsPtC)6h2P&vV(~Z&$*ubEf@QzoDuWJpzo-I zHsSLqLQ}Pz?=f1`xn3;Fo+H+HJ8*sS?AOKXF z<6L$?fs+(e^WfDZ){1!Uiq;2%T{~(KMh=OZa*?|^_X5`c^Ws#m(Sm!Kd0vQk6+X-> zv}`j`pA%(cJ5G_L%N+!8H_wzj(n$mImTc;JB9*EIyOOF6Hzc?Xx6zW+sM`~iP^T}# zfL4V}-k0v|wdX&vmf1l(kz)FkU>5_S?9xApe^02lv=1Tn{1zO|jLL7vkc%(1U(g~v zRzV8}7@`!xpswS7(aIC3#agXfAf`m!U`?vOQW9*}6(Zu4jHqJ5IyRr}iL5)b!M@A} zAy;Zk+*^>bnx=3kx9+L5VK+6&;gH=7!ES=xUXtBda~;8MD{Oj9~f4&HM8-d1#+^; z?;10rt9hEjnTgdK(`|Hr);1f4Y7)AVScSrycTN5g?ptIoe7jBh}^9Nw7w9TSH!7YR|C&MR0~43 zR_ut4NgvMHU}=QMs-&tb8M>y;X4P_2Zb4N!tiXrg6(5Xq@BtRD)klH{y?5bKUR1;v zANEmHOBn+oD$}aI8!Qk)AVgb)fISdG;fxR`S6aqUIDrAeJb{8OP_hCcge_=Hb-;C* zRh?CZozcdm(AfIorAabM)!!9Xq1;1xK{S%|GJ99m$3qd+43BE*;&I^-4s{cdFFYPZNpw_F@Pfy< z1K0qLJ2TcE1vluelFdtjo&YuhY+d){djXp{G_ZY7YJDmoP3aG5T5?-o!(0K4#el$M zLeDaQmXrpdOE|4bw^0yFvM7w=|0sf^LCCErDobgUq9~a|QB>VCe$pm&NB@D~2=#{} zGf@~^!H7jL0b(mN%LFjfGsfk>(OW3+h(8{cMxj8XOGKmIXB(gf&{X9sj?x$?6GzYl z*><*&M*@yc4nqM*mk3C`tI#1zm`MkaCm^LUG@vF53F-hPn?CHv1!<%|Txtni8six| z<!b7`aeV*aA)nB>_my!%zUyB?6K@Kp{g?B?&R#G6o~jNhu)d zNwFmo+eiYAP7Xo=N3R)&1lZMgr9d``$ z9BYJl6XLCLJPQ5x>hxQSr&9N>i--D@t7K#DEk(&rvzVO!=tAdI#AB(&W2wbssRe1C zB26?f+>VGY3=D1&h000tc)Mo$y diff --git a/qse/doc/imgs/awk-srcio-read.png b/qse/doc/imgs/awk-srcio-read.png deleted file mode 100644 index 5bfba30af7f72505844f4280272381784e11d795..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3225 zcmZvfc{tQv|Hr?~Z3si%w<24JTTvssvK3`tx(UgavW7-vxRV)DwA|Wk5i?1aEQ2tm ziLWR-gE96oVoD6AF~n$=XL|1E_q%@2?|J??=lt=$&UJmx`*U9JbMBmWv4x4tivs`v zv$s3x1^~j@f_0skuwaybG{hE6kXS4GGh$+5Q=eRC0YLH(`;#ZmBowSrDEML(JajPH z2IOlm_`c{x7OTzeb6il2dlaNlBK*ny%;Od+LlhAE%wL5AKy4lenw-FkjTgG$co6oW z@D4DmN9<-~4S(E`AI01j2ELu^APT8q05(^l*ySKBl^h;~%wyIfzh6amM@BjN2qn9G zkh9z;?M%FX4h>SbKhfLXYE(05C+dknjhwa`K zJ2ey=sQolYC|Uo_VR2w?hb2l1&`}44RFv5;fZ2rrZrh?D$IaFhfVstW9)eT`L{0zJ z>v%Pvx-Y=$yeWbAE}a?se?*U{z|IFhPk?3&eAxd#`>dOyC0Z*MZyuiaa)NwJJ<5X$ zXAZv0;XpC=4XnsDh16^n4sNtBth>LG<}O>O<+)F{u<-87vvHG~n>G6-=41SInD3053MYRjLImm8anb=dK1LO|9ee!wR@Mi_q-3S@o5(7!i(nk}) zuOgy5TtjpFM)3{1F}Cyz((?QQS};)40k6AKyFb zSsz28r-u6(#ByL$zDHe%SfB{z1MUzILON+GCIdm`=~wp-VEis}5*A=N$A_nc9NBc~{T`Pg-u z-hRK@Xm`-h7o;+E=tGeM45!lq6( zMW$zQ-2dbyA|sbJ8~5_E$fw$U^eQjb-YQ&WrlEA;)q%*^D~8Kco+!^-W1Z-8T)C%} z8xLcKOIMzRH>%-B&nNX?3Q;Z4?QloS5UzHaDy!<~L`P1@dlE3zN?mW1FF%LR+xI*F z7XE!5dCe@LFN*&9dFkpB-N1(hs%0A;OS)!rbRyiHaIX4xwc**zDSU@FO>&fGUb)T2TL`Un%EO(qF7e zj}s1Pm(D{&eRGo&IC=QEvd>#uqS-S)|7T5+rj8cl+0<<8_5KSaI>xBvW2w;*LiD=- z>uM+c2%68)Et`Cv*8!zGOF3@@2^XJg5sY!Z$`3Jqv9%8Gsa zQRHW18nSAtk-|O^wMB=?RnGeK&JOT-~?grmwb;#m$DJpm!uobq&jj@jK0M~2>ZyNf-COZ<9iWEe@LA^ zeiyQ=4mRB%hnn2wd{KU-cwU;_f9e;b))boY>qlRKewwk@PBPH>m^y8bgEX*-6p`88 z9qyN&1VYYRcK!zg$7-jeNnq*8SfdDSDcf7=^>Zc=F^XWSJGa=&=ijE z|76y1bl6jyklb#m8=e1(g=~*Dg@j+nYU;+e-WZv7aLu_WaHF&3Z!d%rc63sg<06qE z5tZIe-=O|oOk+{PtbE>r;->b3Ya{oqP_eZUEn4lzx0m-&zmY|t?H1h1E`;z? zb0yxRiB?PLRagQ4%gM^b4^f0Zo#~;{-(bcTeK=aH8k03!;6JzZbboO1SwWbCULCy+ z8P|5>+Y)`z)c2~!7Gex-b3*Jx>arg9S|2JKjgJk7J88>>MH` zVrDu`MEnG*YmZKZjJcC|L$;5)yy7^~jL^H?c!1r1teF_vWctMaeB3&cFB!n6tZyf# zYYa{aL3brc-yCEYuNv%iDSMi+zeZysir|zMOL( z_1%ee=8a>&*M|PV(@pAg*n8cG@!4{Vw-&+Lxm8U)RV|Slj&MIaFm&JZ1^X1KaNse< zx(iYMs-CFia#7kiIbAD1JGAGoo<(c4lYdH-9WpC&WQ8u|ZQ29cp~mm9Zrcx5fIQ_@2Pm zk#(DIWny_$(sF?_scq}~KQW@VEQG@wWHrZ$C2i-d$>ZLh7Ss*d`Nvp1)5*~glN`($ zBS#LXaSG^T#|m$LSUvy{-7O^Y+=dx70w>;z`h(Epd^ZQ2#Edlx60LA>ri#jE%$23H};@{VA7|IIHtF{sHx`h4%me diff --git a/qse/doc/imgs/awk-srcio-write.dia b/qse/doc/imgs/awk-srcio-write.dia deleted file mode 100644 index a369a5f2b9053bb560be5fbe482ce9842805993e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2011 zcmV<12PF6(iwFP!000003+-LYZreB%-RCO=7nqexi=wDU)ud>P7BfJB0VeIH8$-4j zTT@vwBsxwu^X)@D99yzpmP92fXrK*ZU){?~ljj^#m&*GO4;xRqCt>6U{`CX`c_I;i z891)Lx}N;_{`IXf`EYaf-f``B?B6Q1Hxj$TkK*61Cu>T#?`E_8eh<9I$fiLEJa-2o zGW*Z=JbT8BW|NyMNji1l*wl{S%igsq4c*0#63MqW&YS%J*nPwN)TM`!CZni<>G86i^Ju|8B6aRl= zlUYT~$Y0&O`KZ20o0PqA^i|f-${=)Ohbz}VkHh-LOFKdVhN38}Gq7oxvaagz&?lFN zTZ|jd8#i1yZa6oZZ-bDAwoA`LE`q=#wx33&;f{2V6D@6z4Y9hkdSr3uQW`Y0|IYTJ zHVLF}Kh3sFXYML=o%)HJv#9X0cOAN(KXB@<)cYeR@Aq!xE<94!de^6exqlqSeev5# z(EE6K&(V;2tE30VAei9G>0z~V9TGJRv%F1(r*&pFYwGo)UE7XH-zt!G62h||Ntn6+ zbfjr1`+_sXIq8L9@h@4@EWNK@uwSn2kVMNZco2 zah}ToC~%yDYM#7$#99+~wWigPw<*ZO6%zbg_c~?&g`22Rdm$-hxe4Pb5+`XID_Q!It>9!7f~q3UymU303+c z@M&4d_23ob`Sv-K_u92 zRJK$4vYi6C5?$=xQZxXe!hI>%J(YHAIhMoeTFwykCg|-s>22u+k)XGc=uJTYV@(nC zHY&ZL-rJOX=`D6|A&vVcC1+;K&n2V@W~*YhyE|DH%*LD9Zhw6K{N?smuo`bxLyXk~ zrHx8y>Hw5x0Fy7Nu>clgq{fyxQz!$SGr4unr`^6JOT##>+pyS|tel@Q=m>h_O>bX6 z{`Kw0KVJmBjX-ZIjsZ*-1UC@D-7=H^38Zh3WCEPF&^LT8Sb7E)WJ99e>gMD>(qMn}T9`RSTP4CK^#}G}O(>B5~U}|Ma z8Ja|Ae0=ysS~C>Nh>QkFJ)3m=lnwN=Ay#rN%&t}P*Fx>Qkgw393xTo#k%yIl))ykP z3OSYQYTzk|Y8{FQFz5)7aYxSCh-t*gvdn6V8oG7>n_tUqu^DBBvH~f7SEMj5K?<0^ zRv!r{^xh>+S&Rfs+BKIk6i#4(Fi)Uh zOO>=#2w@8vQyp+!aFu6OV%N$f*VyVZsFr4(ZydH-g|%F1y`&Xd;Ut=X)!!9Xq1;1x zK{S%|GJDt8Wwmd7rPncvYN0WtS7}=1g$qJ@35;lq5lRo~g`QJ-!QKZdj|FB1PoOwP zv5*3EHif(2Om3yVO7p5V(;E~RYqY`|-O{XIZeo*LpyLZh$5Rp143BEz;&I^-4s|<_ zFFc+^iFH(5`hv%}7uW!f2Q$_l1vlueg3WV*o&YuhY+d){djXp{G_ZY-tA0u#P3aG5 zT6}|F!(0K4#el$MLeDaQ78ePimtP5mn)1TKy7w4LH;6u9&naY-AXz(D0Kl#&>kP*T_eP6#CdNX^4g0Mcs&Bz=HF zhPX-+V!mYzMy!((K+@x4OC+|D1RT{4LIFoF8IJ192l`jGD*&3js|VsBScXaU09(Du zGDK68b8UM`UgcIeEFLLihUg%gzwXyblpq={0izXvFEP z*Ek>gNy6yaeme$whBZRE3F+229))^)aq6wb)2Vw`#Y26{Rk1PmmZGF*SxnAi%AqCExchcgHaOn tH5J~-Q?WZS#*L-25h*q&o^^8~{XO}U$v0QIzo~q4^*=&5nXGq#0017G%ufIS diff --git a/qse/doc/imgs/awk-srcio-write.png b/qse/doc/imgs/awk-srcio-write.png deleted file mode 100644 index 704c5020a90d284d158243a50cc3e8bf7f6718c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3247 zcmaKvcTm&W7RP^(r7SUEVMPg56hstMFh~s|tI}8M3PwPb62Pz`HJXHF0R=&&3nHK* zQbG$wq{K&*Dnt`00U=<35FtTAO(4mOGw;ppo1J<8+H}AskVTp$sePsGH3;W2oIz-EG#;PNq}ql^Y*JR0lM&L|+g9;A_Z(0L$AO9LaY% zF3OmwLz1|Da~-0qosv#a)Vl>R@HXTzTm}~-IkSOEH!U@C@F;sk3+tke(P{|Z0cdYi zIpEfTu5DfnGA?SEza0-STUG&Fb?FKA} z|6oSC*j{sGE8js?n_^&g0B}n=fyF$Z{>q<_lE8_;MfA$vvAyk*P~6k^1#t2?5)JXS zsP}G5*y`oeeJ{g+sU2#mlDL>oauMh)xEBT7J&yrdnRB7Q*GF_<=Ywr&T#V@*;W$^< z3QB&*-Ca1h(Ve?Zv0JRM#6kX^R0V9Q+(>&V&4=gOAnZLCn)mGa)m^-+ww;(EN!0 z_POlME7oF-W=m}LZPoz~sc%{@?Op2*{?@o|MMV~;;VIQH9=@o;eF!|#=5`}3d}s{h z7_ujg*=pTOo1>rJ;5pPpa1s<6VWy=oqN+N@?%fLYMl2R6(kkpm3qXBVD5UN){e z-4xxw?m>u{SV#y)7#Rwa!u0cQZbMou`NJEZ-n`Nw`W1x4wfj}9)N4^d_|&*La)}RV zmfQ;N1O+2L^`e5B$2J-x)8DvRdMSl`C?ZMIVh*)F*f88rZAe4Oou@TG>VgoV+{zOD zZvkJdO)bydU# zqe~GO)_a;omhq;(qLJQNKXPR^;uD$Aq&4$j81Pmu-?E%3VK>eqG%3 zbTsGuF;d`Z;lXZVHKwh9b~_@AwO}t*Sv8EG^>ZK33vS%oW-rsu9^*;l6_e4SGi{Dbezh^Q(QHP}Yb6aN2gc!kA?s0Q1;fZ=q47dpspQ&FwPV^tR%^Hh{RY-(*EctlH zF~0qwSBg!koA6eDe78aN>-0jIrRNJIJN{*3A*`v|Pw;ue?#^YAGywZyP0m{@{xwg` znROh5H|fKXT6Y61b_XZY|4*+RaFFl+_a^4Xc5}D0y2I?v-Hxeyf;@&y5iamjC-Ayc zw?}f{z^0Y_3~9#VLs5ioNScI-H6{Y2D_@(rJ!g6qI(3*^fbO}8vzRef+BFKuWYE8y zdj>Mfq+dSc22!!dMCi20f1D#mE8#r%8I=1aLU4ln|FA`lPXg#Z>P2+4TDSxQ_3Rsy zMxd*%C1B*v*^DV<&lrEE)LH(nlRa*GLiP-XTIi!BCJMja=wz$o@Io54aN^|nIOXC= zVqK&kXp}^e4gJbDwos0~cBu^J;4u;%ML_pp^g|6{7)Ey~M;7C5QeDFukYhx&22=B4 zd7=G&$+Xt`=T(#^qc#}obAPk?P}C_ipNRn28q2l0ETJ}eTN?+St0ZWS9bqh4@!_g} zNplN;YL>9ewcP&vlS17?Ir7djCGp!yaJfBDr=g?YyC#VNk@-H3B9F zpW`IccxXM7zN+uN>v~)&stIW~E_WpH`4j#XP9%e+v3QWk8f;+b!TU}LB3Vp+bXX}N z{h5e*=G8%Bybd_p^zdT&HNmOBA?XhRG)57NNGj^4+iDP7;?;68%{%&EQlO^$c>_bM zwZK-3@bCEfAB_EjP~H6UaGdecrrW3WSe);u^9u_G%!@FD$jN#^Ip z7yE#%Uex4)(wRT?zVG7}ATU~ES(M`qj#`BAYY9`!|G{_Pk!gtey{(ba5cBGRuGd5# zA{`|djgC^FkrTs!E1jDK?db!9KO(I(`4+q%8&M19?An6N!!w|pBMr>`L~c)qxYBAv zI&?@j{KZ}BqIRj1q+kKM2PIk1t|ELyd)wn`_R|Q_PfAcAn3>dG z*zq)925iCwYTBq8F@Os8FghVm`TX(@1qXHu9) zE~KYPg$$(8vsGuqHOI)A=3Ag#dhHpJuBGEb*0Xb)tITQ7RLQy-i?iW8NI_%i=C>#7 z6lrgtBCk6ml!t;1($X=Ko*CGc^vr5;W795+{xQfkrDiZVcTaeDrN;WSc0>U`n;%}V*U%qW5r!?RL)KR-X`;^c>i?8gKB45-?0$R z$w~unL5{sKWyvIYKK5eqS!LV{=1wlOVsSAdxqp;YlMOX$6JEmPR|cSHFtpsy`;B?( zuc#*KnHS$>xZGq8oah+C%{TJHadfUYH}-6knA5z_;kYM(bL~-NZy^j-$GWWQ$kv% zdwp@T4?Bh8U-cU*;iAEnhZIwck4;BuuAo&?sFm73GFdOv*G&vS_wSB=^E+d8O)@YS zNFcml$B8%+%>oiHH0?$rqK!N4F_u2)GB0ATk_ zg@c#F<4p?cWHfMoYFnRmSIx{15^H)tFK4gOve5?m3Wc#wMBrc75S;g#?QtN)fNIpZ zg;-&PHrdu9&>h*N!XqeEc(7~-e23#>gpB=$UEdGf z<&7-xV>)2-dCk?F>XN49yI-_`gaz)x3<^RD^{uZ)D&m;BK8X&xtPM|bD&ELU5~Zy~ zE_NL7?uB#40Lr&v*g-4=^|ohj zOHa9EY>5j2mwJH%ipA{sTZb$rSFw^BP{Snu1z4GjK+Vm;BL_!|ip4(=!1h-sn`&#{ GKmQHccaU`e diff --git a/qse/doc/ko/ase.man b/qse/doc/ko/ase.man deleted file mode 100644 index 34cd85fa..00000000 --- a/qse/doc/ko/ase.man +++ /dev/null @@ -1,27 +0,0 @@ -.title ASE - -= ASE = - -ASE는 임베딩을 목적으로 여러가지 프로그래밍언어를 구현하는 라이브러리이다. C언어로 개발되며 자바 JNI인터페이스와 COM 및 .NET 인터페이스를 제공한다. - -(경고: 본 페이지는 정식 배포전에 시험용으로 제작된것이므로, 언제든지 내용이 변경될 수 있다.) - -== Download == - -다음 링크에서 소스코드를 받을수 있다. - -[[[ -* {Google Code,http://abiyo.googlecode.com/} -]]] - -== Documentation == - -[[[ -* {초간단가이드,quickstart.html} -* {사용자가이드,awk.html} -* {자주받는질문,faq.html} -]]] - -== Licensing == - -ASE는 {BSD 라이센스,license.html}하에 무료로 배포된다. diff --git a/qse/doc/ko/license.man b/qse/doc/ko/license.man deleted file mode 100644 index 2b2ed8e1..00000000 --- a/qse/doc/ko/license.man +++ /dev/null @@ -1,19 +0,0 @@ -.title ASE License Agreement - -Software License Agreement (BSD License) - -Copyright (c) 2006-2007, Hyung-Hwan Chung -All rights reserved. - -Redistribution and use of this software in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - -[[[ -* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - -* Neither the name of the copyright owner nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. -]]] - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT OWNER AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - diff --git a/qse/doc/ko/quickstart.man b/qse/doc/ko/quickstart.man deleted file mode 100644 index 2105c623..00000000 --- a/qse/doc/ko/quickstart.man +++ /dev/null @@ -1,116 +0,0 @@ -.title ASE 시작하기 - -= ASE 시작하기 = - -본 문서는 ASE를 사용하기위해서 필요한 정보를 제공한다. - -== 소스코드 디렉토리 == - -소스코드는 다음과 같은 디렉토리로 구성된다. - -{{{ -ase +- cmn .................... 공통 함수와 매크로를 포함한다. - +- utl .................... 보다 일반적인 공통 함수와 매크로를 포함한다. - +- awk .................... AWK 처리기 - +- lsp .................... LISP 처리기 - +- com .................... 각 처리기들의 COM 래퍼모듈 - +- test +- awk ............ AWK 처리기 시험 프로그램 - +- lsp ............ LISP 처리기 시험 프로그램 - +- com ............ COM 래퍼모듈 시험 프로그램 -}}} - -== 빌드 == - -각종 운영체제에서 어떻게 ASE를 빌드하는지 보여준다. - -=== Unix/Linux === - -[[configure]]스크립트를 실행한후 [[make]]프로그램을 실행한다. - -{{{ -$ ./configure -$ make -}}} -[[configure]]스크립트는 해당 시스템의 정보를 수집하여 빌드환경을 설정하고 [[make]]는 각각의 서브다이렉트리를 방문해서 바이너리 파일을 만든다. 라이브러리 파일을 [[release/lib]]에, 실행파일들읜 [[release/bin]]에 만들어 진다. - -[[--enable-debug]]를 [[configure]]에 사용한 경우에는, 빌드환경이 디버깅에 적합하도록 만들어진다. [[make]]를 실행하면 결과 파일들은 [[debug/lib]]와 [[debug/bin]]에 만들어 진다. - -{{{ -$ ./configure --enable-debug -$ make -}}} - -다음의 표는 빌드환경별로 파일이 만들어지는 위치를 보여준다. - -{{{ ---------------------------------------------------------------------------- -모드 실행파일 라이브러리파일 헤더파일 ---------------------------------------------------------------------------- -release ${top}/release/bin ${top}/release/lib ${top}/release/inc -debug ${top)/debug/bin $(top)/debug/lib ${top}/debug/inc ---------------------------------------------------------------------------- - -* ${top} - 최상위 디렉토리 -}}} - -특정한 컴파일러와 컴파일러 옵션을 사용하고 싶을때는 [[configure]]를 실행할때 이를 명시해야 한다. 다음의 예들을 보라. - -{{{ -# HP-UX B.11.23 with HP ANSI C -CC=cc CFLAGS="-O2 +DD64" LDFLAGS="+DD64" ./configure # 64-bit -CC=cc CFLAGS="-O2 +DD32" LDFLAGS="+DD32" ./configure # 32-bit - -# SCO OpenServer Release 5.0.7 (SCO_SV 3.2 5.0.7) with SCO OpenServer Development System -CC=cc CFLAGS="-Xc -a ansi -O2" ./configure - -# Solaris 10 with GCC -CC=gcc CFLAGS="-Wall -O2 -m64" LDFLAGS="-m64" ./configure # 64-bit -CC=gcc CFLAGS="-Wall -O2" ./configure # 32-bit -}}} - -C++컴파일러와 옵션은 [[CXX]]와 [[CXXFLAGS]]을 사용해서 명시하면 된다. - -JNI헤더파일을 찾을수 있으면 [[configure]]는 JNI라이브러리와 클래스파일들이 만들어 질수 있도록 빌드환경을 설정한다. 이를 위해서 [[javac]]명령어를 [[PATH]]환경변수에 설정된 경로에서 찿고, 이 정보를 이용해서 JNI헤더파일을 찾아낸다. 아파치재단의 {ant,http://ant.apache.org}를 이용하여 자바클래스파일들을 만들수도 있다. 이를 위해서 [[build.xml]]파일이 최상위 디렉토리에 제공된다. - -=== OpenVMS === - -OpenVMS에서는 [[mms]]나 [[mmk]]명령어를 사용해야 한다. 다만 [[configure]]같은 환경설정 스크립트가 제공되지 않으므로, 필요한 경우 [[descrip.mms]]파일을 직접 편집해야 한다. - -예를 들어, awk라이브러리와 시험프로그램을 만들려면 필요한 서브디렉토리에서 [[mms]]나 [[mmk]]를 실행하면 된다. - -{{{ -set default [.ase.cmn] -mms -set default [-.awk] -mms -set default [-.utl] -mms -set default [-.test.awk] -mms -}}} - -OpenVMS에 익숙하지 않은 사용자라면 다음의 방법으로 만들어진 시험프로그램을 실행해볼수 있다. - -{{{ -; define the foreign command. -aseawk :== $DISK$GEIN_SYS:[USERS.BACON.ASE.TEST.AWK]aseawk.exe -; run the command. -aseawk -f hello.awk -}}} - -=== MS-Windows === - -윈도우즈에서는 비쥬얼스튜디오6이나 그 이후 버전이 필요하다. 닷넷관련 프로젝트를 빌드하려면 비쥬얼슈트디오2003이나 그 이후 버전이 필요하다. - -== 바이너리파일 == - -빌드에 성공하면 다음과 같은 파일들이 만들어 진다. - -{{{ -lib +- libaseawk.a - +- libaselsp.a - +- libasecmn.a - +- libaseutl.a - -bin -}}} diff --git a/qse/include/ase/awk/awk.h b/qse/include/ase/awk/awk.h deleted file mode 100644 index ceaeca91..00000000 --- a/qse/include/ase/awk/awk.h +++ /dev/null @@ -1,1210 +0,0 @@ -/* - * $Id: awk.h 501 2008-12-17 08:39:15Z baconevi $ - * - * {License} - */ - -#ifndef _ASE_AWK_AWK_H_ -#define _ASE_AWK_AWK_H_ - -#include -#include -#include -#include - -/****o* ase.awk/awk interpreter - * DESCRIPTION - * The library includes an AWK interpreter that can be embedded into other - * applications or can run stand-alone. - * - * #include - ****** - */ - -typedef struct ase_awk_t ase_awk_t; -typedef struct ase_awk_run_t ase_awk_run_t; -typedef struct ase_awk_val_t ase_awk_val_t; -typedef struct ase_awk_extio_t ase_awk_extio_t; - -typedef struct ase_awk_prmfns_t ase_awk_prmfns_t; -typedef struct ase_awk_srcios_t ase_awk_srcios_t; -typedef struct ase_awk_runios_t ase_awk_runios_t; -typedef struct ase_awk_runcbs_t ase_awk_runcbs_t; -typedef struct ase_awk_runarg_t ase_awk_runarg_t; -typedef struct ase_awk_rexfns_t ase_awk_rexfns_t; - -typedef ase_real_t (*ase_awk_pow_t) (void* data, ase_real_t x, ase_real_t y); -typedef int (*ase_awk_sprintf_t) ( - void* data, ase_char_t* buf, ase_size_t size, - const ase_char_t* fmt, ...); - -typedef ase_ssize_t (*ase_awk_io_t) ( - int cmd, void* arg, ase_char_t* data, ase_size_t count); - -struct ase_awk_extio_t -{ - ase_awk_run_t* run; /* [IN] */ - int type; /* [IN] console, file, coproc, pipe */ - int mode; /* [IN] read, write, etc */ - ase_char_t* name; /* [IN] */ - void* data; /* [IN] */ - void* handle; /* [OUT] */ - - /* input */ - struct - { - ase_char_t buf[2048]; - ase_size_t pos; - ase_size_t len; - ase_bool_t eof; - ase_bool_t eos; - } in; - - /* output */ - struct - { - ase_bool_t eof; - ase_bool_t eos; - } out; - - ase_awk_extio_t* next; -}; - -struct ase_awk_prmfns_t -{ - ase_awk_pow_t pow; /* required */ - ase_awk_sprintf_t sprintf; /* required */ - - /* user-defined data passed to the functions above */ - void* data; /* optional */ -}; - -struct ase_awk_srcios_t -{ - ase_awk_io_t in; - ase_awk_io_t out; - void* data; -}; - -struct ase_awk_runios_t -{ - ase_awk_io_t pipe; - ase_awk_io_t coproc; - ase_awk_io_t file; - ase_awk_io_t console; - void* data; -}; - -struct ase_awk_runcbs_t -{ - void (*on_start) ( - ase_awk_run_t* run, void* data); - - void (*on_statement) ( - ase_awk_run_t* run, ase_size_t line, void* data); - - void (*on_return) ( - ase_awk_run_t* run, ase_awk_val_t* ret, void* data); - - void (*on_end) ( - ase_awk_run_t* run, int errnum, void* data); - - void* data; -}; - -struct ase_awk_runarg_t -{ - ase_char_t* ptr; - ase_size_t len; -}; - -struct ase_awk_rexfns_t -{ - void* (*build) ( - ase_awk_t* awk, const ase_char_t* ptn, - ase_size_t len, int* errnum); - - int (*match) ( - ase_awk_t* awk, void* code, int option, - const ase_char_t* str, ase_size_t len, - const ase_char_t** mptr, ase_size_t* mlen, - int* errnum); - - void (*free) (ase_awk_t* awk, void* code); - - ase_bool_t (*isempty) (ase_awk_t* awk, void* code); -}; - -/* io function commands */ -enum ase_awk_iocmd_t -{ - ASE_AWK_IO_OPEN = 0, - ASE_AWK_IO_CLOSE = 1, - ASE_AWK_IO_READ = 2, - ASE_AWK_IO_WRITE = 3, - ASE_AWK_IO_FLUSH = 4, - ASE_AWK_IO_NEXT = 5 -}; - -/* various options */ -enum ase_awk_option_t -{ - /* allow undeclared variables and implicit concatenation */ - ASE_AWK_IMPLICIT = (1 << 0), - - /* allow explicit variable declaration, the concatenation - * operator(.), and a parse-time function check. */ - ASE_AWK_EXPLICIT = (1 << 1), - - /* change ^ from exponentation to bitwise xor */ - ASE_AWK_BXOR = (1 << 3), - - /* support shift operators */ - ASE_AWK_SHIFT = (1 << 4), - - /* enable the idiv operator (double slashes) */ - ASE_AWK_IDIV = (1 << 5), - - /* support getline and print */ - ASE_AWK_EXTIO = (1 << 7), - - /* support co-process - NOT IMPLEMENTED YET */ - ASE_AWK_COPROC = (1 << 8), - - /* can terminate a statement with a new line */ - ASE_AWK_NEWLINE = (1 << 9), - - /* use 1 as the start index for string operations and ARGV */ - ASE_AWK_BASEONE = (1 << 10), - - /* strip off leading and trailing spaces when splitting a record - * into fields with a regular expression. - * - * Consider the following program. - * BEGIN { FS="[:[:space:]]+"; } - * { - * print "NF=" NF; - * for (i = 0; i < NF; i++) print i " [" $(i+1) "]"; - * } - * - * The program splits " a b c " into [a], [b], [c] when this - * option is on while into [], [a], [b], [c], [] when it is off. - */ - ASE_AWK_STRIPSPACES = (1 << 11), - - /* enable the nextoutfile keyword */ - ASE_AWK_NEXTOFILE = (1 << 12), - - /* cr + lf by default */ - ASE_AWK_CRLF = (1 << 13), - - /* pass the arguments to the main function */ - ASE_AWK_ARGSTOMAIN = (1 << 14), - - /* enable the non-standard keyword reset */ - ASE_AWK_RESET = (1 << 15), - - /* allows the assignment of a map value to a variable */ - ASE_AWK_MAPTOVAR = (1 << 16), - - /* allows BEGIN, END, pattern-action blocks */ - ASE_AWK_PABLOCK = (1 << 17) -}; - -/* error code */ -enum ase_awk_errnum_t -{ - ASE_AWK_ENOERR, /* no error */ - ASE_AWK_ECUSTOM, /* custom error */ - - ASE_AWK_EINVAL, /* invalid parameter or data */ - ASE_AWK_ENOMEM, /* out of memory */ - ASE_AWK_ENOSUP, /* not supported */ - ASE_AWK_ENOPER, /* operation not allowed */ - ASE_AWK_ENODEV, /* no such device */ - ASE_AWK_ENOSPC, /* no space left on device */ - ASE_AWK_EMFILE, /* too many open files */ - ASE_AWK_EMLINK, /* too many links */ - ASE_AWK_EAGAIN, /* resource temporarily unavailable */ - ASE_AWK_ENOENT, /* "'%.*s' not existing */ - ASE_AWK_EEXIST, /* file or data exists */ - ASE_AWK_EFTBIG, /* file or data too big */ - ASE_AWK_ETBUSY, /* system too busy */ - ASE_AWK_EISDIR, /* is a directory */ - ASE_AWK_EIOERR, /* i/o error */ - - ASE_AWK_EOPEN, /* cannot open */ - ASE_AWK_EREAD, /* cannot read */ - ASE_AWK_EWRITE, /* cannot write */ - ASE_AWK_ECLOSE, /* cannot close */ - - ASE_AWK_EINTERN, /* internal error */ - ASE_AWK_ERUNTIME, /* run-time error */ - ASE_AWK_EBLKNST, /* blocke nested too deeply */ - ASE_AWK_EEXPRNST, /* expression nested too deeply */ - - ASE_AWK_ESINOP, - ASE_AWK_ESINCL, - ASE_AWK_ESINRD, - - ASE_AWK_ESOUTOP, - ASE_AWK_ESOUTCL, - ASE_AWK_ESOUTWR, - - ASE_AWK_ELXCHR, /* lexer came accross an wrong character */ - ASE_AWK_ELXDIG, /* invalid digit */ - ASE_AWK_ELXUNG, /* lexer failed to unget a character */ - - ASE_AWK_EENDSRC, /* unexpected end of source */ - ASE_AWK_EENDCMT, /* a comment not closed properly */ - ASE_AWK_EENDSTR, /* a string not closed with a quote */ - ASE_AWK_EENDREX, /* unexpected end of a regular expression */ - ASE_AWK_ELBRACE, /* left brace expected */ - ASE_AWK_ELPAREN, /* left parenthesis expected */ - ASE_AWK_ERPAREN, /* right parenthesis expected */ - ASE_AWK_ERBRACK, /* right bracket expected */ - ASE_AWK_ECOMMA, /* comma expected */ - ASE_AWK_ESCOLON, /* semicolon expected */ - ASE_AWK_ECOLON, /* colon expected */ - ASE_AWK_ESTMEND, /* statement not ending with a semicolon */ - ASE_AWK_EIN, /* keyword 'in' is expected */ - ASE_AWK_ENOTVAR, /* not a variable name after 'in' */ - ASE_AWK_EEXPRES, /* expression expected */ - - ASE_AWK_EFUNC, /* keyword 'func' is expected */ - ASE_AWK_EWHILE, /* keyword 'while' is expected */ - ASE_AWK_EASSIGN, /* assignment statement expected */ - ASE_AWK_EIDENT, /* identifier expected */ - ASE_AWK_EFNNAME, /* not a valid function name */ - ASE_AWK_EBLKBEG, /* BEGIN requires an action block */ - ASE_AWK_EBLKEND, /* END requires an action block */ - ASE_AWK_EDUPBEG, /* duplicate BEGIN */ - ASE_AWK_EDUPEND, /* duplicate END */ - ASE_AWK_EBFNRED, /* intrinsic function redefined */ - ASE_AWK_EAFNRED, /* function redefined */ - ASE_AWK_EGBLRED, /* global variable redefined */ - ASE_AWK_EPARRED, /* parameter redefined */ - ASE_AWK_EVARRED, /* named variable redefined */ - ASE_AWK_EDUPPAR, /* duplicate parameter name */ - ASE_AWK_EDUPGBL, /* duplicate global variable name */ - ASE_AWK_EDUPLCL, /* duplicate local variable name */ - ASE_AWK_EBADPAR, /* not a valid parameter name */ - ASE_AWK_EBADVAR, /* not a valid variable name */ - ASE_AWK_EUNDEF, /* undefined identifier */ - ASE_AWK_ELVALUE, /* l-value required */ - ASE_AWK_EGBLTM, /* too many global variables */ - ASE_AWK_ELCLTM, /* too many local variables */ - ASE_AWK_EPARTM, /* too many parameters */ - ASE_AWK_EDELETE, /* delete not followed by a variable */ - ASE_AWK_ERESET, /* reset not followed by a variable */ - ASE_AWK_EBREAK, /* break outside a loop */ - ASE_AWK_ECONTINUE, /* continue outside a loop */ - ASE_AWK_ENEXTBEG, /* next illegal in BEGIN block */ - ASE_AWK_ENEXTEND, /* next illegal in END block */ - ASE_AWK_ENEXTFBEG, /* nextfile illegal in BEGIN block */ - ASE_AWK_ENEXTFEND, /* nextfile illegal in END block */ - ASE_AWK_EPRINTFARG, /* printf not followed by any arguments */ - ASE_AWK_EPREPST, /* both prefix and postfix increment/decrement - operator present */ - ASE_AWK_EGLNCPS, /* coprocess not supported by getline */ - - /* run time error */ - ASE_AWK_EDIVBY0, /* divide by zero */ - ASE_AWK_EOPERAND, /* invalid operand */ - ASE_AWK_EPOSIDX, /* wrong position index */ - ASE_AWK_EARGTF, /* too few arguments */ - ASE_AWK_EARGTM, /* too many arguments */ - ASE_AWK_EFNNONE, /* "function '%.*s' not found" */ - ASE_AWK_ENOTIDX, /* variable not indexable */ - ASE_AWK_ENOTDEL, /* variable not deletable */ - ASE_AWK_ENOTMAP, /* value not a map */ - ASE_AWK_ENOTMAPIN, /* right-hand side of 'in' not a map */ - ASE_AWK_ENOTMAPNILIN, /* right-hand side of 'in' not a map nor nil */ - ASE_AWK_ENOTREF, /* value not referenceable */ - ASE_AWK_ENOTASS, /* value not assignable */ - ASE_AWK_EIDXVALASSMAP, /* indexed value cannot be assigned a map */ - ASE_AWK_EPOSVALASSMAP, /* a positional cannot be assigned a map */ - ASE_AWK_EMAPTOSCALAR, /* cannot change a map to a scalar value */ - ASE_AWK_ESCALARTOMAP, /* cannot change a scalar value to a map */ - ASE_AWK_EMAPNOTALLOWED, /* a map is not allowed */ - ASE_AWK_EVALTYPE, /* wrong value type */ - ASE_AWK_ERDELETE, /* delete called with a wrong target */ - ASE_AWK_ERRESET, /* reset called with a wrong target */ - ASE_AWK_ERNEXTBEG, /* next called from BEGIN */ - ASE_AWK_ERNEXTEND, /* next called from END */ - ASE_AWK_ERNEXTFBEG, /* nextfile called from BEGIN */ - ASE_AWK_ERNEXTFEND, /* nextfile called from END */ - ASE_AWK_EBFNUSER, /* wrong intrinsic function implementation */ - ASE_AWK_EBFNIMPL, /* intrinsic function handler failed */ - ASE_AWK_EIOUSER, /* wrong user io handler implementation */ - ASE_AWK_EIONONE, /* no such io name found */ - ASE_AWK_EIOIMPL, /* i/o callback returned an error */ - ASE_AWK_EIONMEM, /* i/o name empty */ - ASE_AWK_EIONMNL, /* i/o name contains '\0' */ - ASE_AWK_EFMTARG, /* arguments to format string not sufficient */ - ASE_AWK_EFMTCNV, /* recursion detected in format conversion */ - ASE_AWK_ECONVFMTCHR, /* an invalid character found in CONVFMT */ - ASE_AWK_EOFMTCHR, /* an invalid character found in OFMT */ - - /* regular expression error */ - ASE_AWK_EREXRECUR, /* recursion too deep */ - ASE_AWK_EREXRPAREN, /* a right parenthesis is expected */ - ASE_AWK_EREXRBRACKET, /* a right bracket is expected */ - ASE_AWK_EREXRBRACE, /* a right brace is expected */ - ASE_AWK_EREXUNBALPAR, /* unbalanced parenthesis */ - ASE_AWK_EREXCOLON, /* a colon is expected */ - ASE_AWK_EREXCRANGE, /* invalid character range */ - ASE_AWK_EREXCCLASS, /* invalid character class */ - ASE_AWK_EREXBRANGE, /* invalid boundary range */ - ASE_AWK_EREXEND, /* unexpected end of the pattern */ - ASE_AWK_EREXGARBAGE, /* garbage after the pattern */ - - /* the number of error numbers, internal use only */ - ASE_AWK_NUMERRNUM -}; - -/* depth types */ -enum ase_awk_depth_t -{ - ASE_AWK_DEPTH_BLOCK_PARSE = (1 << 0), - ASE_AWK_DEPTH_BLOCK_RUN = (1 << 1), - ASE_AWK_DEPTH_EXPR_PARSE = (1 << 2), - ASE_AWK_DEPTH_EXPR_RUN = (1 << 3), - ASE_AWK_DEPTH_REX_BUILD = (1 << 4), - ASE_AWK_DEPTH_REX_MATCH = (1 << 5) -}; - -/* extio types */ -enum ase_awk_extio_type_t -{ - /* extio types available */ - ASE_AWK_EXTIO_PIPE, - ASE_AWK_EXTIO_COPROC, - ASE_AWK_EXTIO_FILE, - ASE_AWK_EXTIO_CONSOLE, - - /* reserved for internal use only */ - ASE_AWK_EXTIO_NUM -}; - -enum ase_awk_extio_mode_t -{ - ASE_AWK_EXTIO_PIPE_READ = 0, - ASE_AWK_EXTIO_PIPE_WRITE = 1, - - /* - ASE_AWK_EXTIO_COPROC_READ = 0, - ASE_AWK_EXTIO_COPROC_WRITE = 1, - ASE_AWK_EXTIO_COPROC_RDWR = 2, - */ - - ASE_AWK_EXTIO_FILE_READ = 0, - ASE_AWK_EXTIO_FILE_WRITE = 1, - ASE_AWK_EXTIO_FILE_APPEND = 2, - - ASE_AWK_EXTIO_CONSOLE_READ = 0, - ASE_AWK_EXTIO_CONSOLE_WRITE = 1 -}; - -enum ase_awk_global_id_t -{ - /* this table should match gtab in parse.c. - * in addition, ase_awk_setglobal also counts - * on the order of these values */ - - ASE_AWK_GLOBAL_ARGC, - ASE_AWK_GLOBAL_ARGV, - ASE_AWK_GLOBAL_CONVFMT, - ASE_AWK_GLOBAL_FILENAME, - ASE_AWK_GLOBAL_FNR, - ASE_AWK_GLOBAL_FS, - ASE_AWK_GLOBAL_IGNORECASE, - ASE_AWK_GLOBAL_NF, - ASE_AWK_GLOBAL_NR, - ASE_AWK_GLOBAL_OFILENAME, - ASE_AWK_GLOBAL_OFMT, - ASE_AWK_GLOBAL_OFS, - ASE_AWK_GLOBAL_ORS, - ASE_AWK_GLOBAL_RLENGTH, - ASE_AWK_GLOBAL_RS, - ASE_AWK_GLOBAL_RSTART, - ASE_AWK_GLOBAL_SUBSEP, - - /* these are not not the actual IDs and are used internally only - * Make sure you update these values properly if you add more - * ID definitions, however */ - ASE_AWK_MIN_GLOBAL_ID = ASE_AWK_GLOBAL_ARGC, - ASE_AWK_MAX_GLOBAL_ID = ASE_AWK_GLOBAL_SUBSEP -}; - -enum ase_awk_val_type_t -{ - /* the values between ASE_AWK_VAL_NIL and ASE_AWK_VAL_STR inclusive - * must be synchronized with an internal table of the __cmp_val - * function in run.c */ - ASE_AWK_VAL_NIL = 0, - ASE_AWK_VAL_INT = 1, - ASE_AWK_VAL_REAL = 2, - ASE_AWK_VAL_STR = 3, - - ASE_AWK_VAL_REX = 4, - ASE_AWK_VAL_MAP = 5, - ASE_AWK_VAL_REF = 6 -}; - -enum ase_awk_val_ref_id_t -{ - /* keep these items in the same order as corresponding items - * in tree.h */ - ASE_AWK_VAL_REF_NAMED, - ASE_AWK_VAL_REF_GLOBAL, - ASE_AWK_VAL_REF_LOCAL, - ASE_AWK_VAL_REF_ARG, - ASE_AWK_VAL_REF_NAMEDIDX, - ASE_AWK_VAL_REF_GLOBALIDX, - ASE_AWK_VAL_REF_LOCALIDX, - ASE_AWK_VAL_REF_ARGIDX, - ASE_AWK_VAL_REF_POS -}; - -enum ase_awk_valtostr_opt_t -{ - ASE_AWK_VALTOSTR_CLEAR = (1 << 0), - ASE_AWK_VALTOSTR_FIXED = (1 << 1),/* this overrides CLEAR */ - ASE_AWK_VALTOSTR_PRINT = (1 << 2) -}; - -enum ase_awk_parse_ist_t -{ - ASE_AWK_PARSE_FILES = 0, - ASE_AWK_PARSE_STRING = 1 -}; - -typedef struct ase_awk_val_nil_t ase_awk_val_nil_t; -typedef struct ase_awk_val_int_t ase_awk_val_int_t; -typedef struct ase_awk_val_real_t ase_awk_val_real_t; -typedef struct ase_awk_val_str_t ase_awk_val_str_t; -typedef struct ase_awk_val_rex_t ase_awk_val_rex_t; -typedef struct ase_awk_val_map_t ase_awk_val_map_t; -typedef struct ase_awk_val_ref_t ase_awk_val_ref_t; - -/* this is not a value. it is just a value holder */ -typedef struct ase_awk_val_chunk_t ase_awk_val_chunk_t; - -#if ASE_SIZEOF_INT == 2 -#define ASE_AWK_VAL_HDR \ - unsigned int type: 3; \ - unsigned int ref: 13 -#else -#define ASE_AWK_VAL_HDR \ - unsigned int type: 3; \ - unsigned int ref: 29 -#endif - -#define ASE_AWK_VAL_TYPE(x) ((x)->type) - -struct ase_awk_val_t -{ - ASE_AWK_VAL_HDR; -}; - -/* ASE_AWK_VAL_NIL */ -struct ase_awk_val_nil_t -{ - ASE_AWK_VAL_HDR; -}; - -/* ASE_AWK_VAL_INT */ -struct ase_awk_val_int_t -{ - ASE_AWK_VAL_HDR; - ase_long_t val; - void* nde; -}; - -/* ASE_AWK_VAL_REAL */ -struct ase_awk_val_real_t -{ - ASE_AWK_VAL_HDR; - ase_real_t val; - void* nde; -}; - -/* ASE_AWK_VAL_STR */ -struct ase_awk_val_str_t -{ - ASE_AWK_VAL_HDR; - ase_char_t* buf; - ase_size_t len; -}; - -/* ASE_AWK_VAL_REX */ -struct ase_awk_val_rex_t -{ - ASE_AWK_VAL_HDR; - ase_char_t* buf; - ase_size_t len; - void* code; -}; - -/* ASE_AWK_VAL_MAP */ -struct ase_awk_val_map_t -{ - ASE_AWK_VAL_HDR; - - /* TODO: make val_map to array if the indices used are all - * integers switch to map dynamically once the - * non-integral index is seen. - */ - ase_map_t* map; -}; - -/* ASE_AWK_VAL_REF */ -struct ase_awk_val_ref_t -{ - ASE_AWK_VAL_HDR; - - int id; - /* if id is ASE_AWK_VAL_REF_POS, adr holds an index of the - * positional variable. Otherwise, adr points to the value - * directly. */ - ase_awk_val_t** adr; -}; -#ifdef __cplusplus -extern "C" { -#endif - -/** represents the nil value */ -extern ase_awk_val_t* ase_awk_val_nil; - -/** represents an empty string */ -extern ase_awk_val_t* ase_awk_val_zls; - -/** represents a numeric value -1 */ -extern ase_awk_val_t* ase_awk_val_negone; - -/** represents a numeric value 0 */ -extern ase_awk_val_t* ase_awk_val_zero; - -/** represents a numeric value 1 */ -extern ase_awk_val_t* ase_awk_val_one; - -/****f* ase.awk/ase_awk_open - * NAME - * ase_awk_open - create an awk object - * - * DESCRIPTION - * The ase_awk_open() function creates a new ase_awk_t instance. - * The instance created can be passed to other ase_awk_xxx() functions and - * is valid until it is successfully destroyed using the ase_ase_close() - * function. - * - * RETURN - * The ase_awk_open() function returns the pointer to an ase_awk_t instance - * on success and ASE_NULL on failure. - * - * SYNOPSIS - */ -ase_awk_t* ase_awk_open ( - ase_mmgr_t* mmgr /* a memory manager */, - ase_size_t xtnsize /* size of extension area in bytes */ -); -/******/ - -/****f* ase.awk/ase_awk_close - * NAME - * ase_awk_close - destroy an awk object - * - * An ase_awk_t instance should be destroyed using the ase_awk_close() function - * when finished being used. The instance passed is not valid any more once - * the function returns success. - * - * RETURN - * 0 on success, -1 on failure - * - * SYNOPSIS - */ -int ase_awk_close ( - ase_awk_t* awk /* an awk object */ -); -/******/ - -/****f* ase.awk/ase_awk_getmmgr - * NAME - * ase_awk_getmmgr - get the memory manager - * - * DESCRIPTION - * The ase_awk_getmmgr() function returns the pointer to the memory manager. - * - * SYNOPSIS - */ -ase_mmgr_t* ase_awk_getmmgr ( - ase_awk_t* awk /* an awk object */ -); -/******/ - -void ase_awk_setmmgr ( - ase_awk_t* awk, - ase_mmgr_t* mmgr -); - -/****f* ase.awk/ase_awk_getxtn - * NAME - * ase_awk_getxtn - get the extension - * - * DESCRIPTION - * The extension area is allocated in the ase_awk_open() function when it is - * given a positive extension size. The pointer to the beginning of the area - * can be acquired using the ase_awk_getxtn() function and be utilized - * for various purposes. - * - * SYNOPSIS - */ -void* ase_awk_getxtn ( - ase_awk_t* awk /* an awk object */ -); -/******/ - -ase_ccls_t* ase_awk_getccls ( - ase_awk_t* awk -); - -/* - * set the character classfier - */ -void ase_awk_setccls ( - /* the pointer to an ase_awk_t instance */ - ase_awk_t* awk, - /* the pointer to a character classfiler */ - ase_ccls_t* ccls -); - -ase_awk_prmfns_t* ase_awk_getprmfns ( - ase_awk_t* awk -); - -/* - * set primitive functions - */ -void ase_awk_setprmfns ( - /* the pointer to an ase_awk_t instance */ - ase_awk_t* awk, - /* the pointer to a primitive function structure */ - ase_awk_prmfns_t* prmfns -); - -/* - * clear an ase_awk_t instance - * - * If you want to reuse an ase_awk_t instance that finished being used, - * you may call ase_awk_close instead of destroying and creating a new - * ase_awk_t instance using ase_awk_close() and ase_awk_open(). - * - * RETURN 0 on success, -1 on failure - */ -int ase_awk_clear ( - /* the pointer to an ase_awk_t instance */ - ase_awk_t* awk -); - -const ase_char_t* ase_awk_geterrstr (ase_awk_t* awk, int num); -int ase_awk_seterrstr (ase_awk_t* awk, int num, const ase_char_t* str); - -int ase_awk_geterrnum (ase_awk_t* awk); -ase_size_t ase_awk_geterrlin (ase_awk_t* awk); -const ase_char_t* ase_awk_geterrmsg (ase_awk_t* awk); - -void ase_awk_seterrnum (ase_awk_t* awk, int errnum); -void ase_awk_seterrmsg (ase_awk_t* awk, - int errnum, ase_size_t errlin, const ase_char_t* errmsg); - -void ase_awk_geterror ( - ase_awk_t* awk, int* errnum, - ase_size_t* errlin, const ase_char_t** errmsg); - -void ase_awk_seterror ( - ase_awk_t* awk, int errnum, ase_size_t errlin, - const ase_cstr_t* errarg, ase_size_t argcnt); - -int ase_awk_getoption (ase_awk_t* awk); -void ase_awk_setoption (ase_awk_t* awk, int opt); - -ase_size_t ase_awk_getmaxdepth (ase_awk_t* awk, int type); -void ase_awk_setmaxdepth (ase_awk_t* awk, int types, ase_size_t depth); - -int ase_awk_getword ( - ase_awk_t* awk, - const ase_char_t* okw, - ase_size_t olen, - const ase_char_t** nkw, - ase_size_t* nlen -); - -int ase_awk_unsetword ( - ase_awk_t* awk, - const ase_char_t* kw, - ase_size_t len -); - -void ase_awk_unsetallwords ( - ase_awk_t* awk -); - -/* - * NAME: - * enable replacement of a name of a keyword, intrinsic global variables, - * and intrinsic functions. - * - * DESCRIPTION: - * If nkw is ASE_NULL or nlen is zero and okw is ASE_NULL or olen is zero, - * it unsets all word replacements. If nkw is ASE_NULL or nlen is zero, - * it unsets the replacement for okw and olen. If all of them are valid, - * it sets the word replace for okw and olen to nkw and nlen. - * - * RETURNS: 0 on success, -1 on failure - */ -int ase_awk_setword ( - /* the pointer to an ase_awk_t instance */ - ase_awk_t* awk, - /* the pointer to an old keyword */ - const ase_char_t* okw, - /* the length of the old keyword */ - ase_size_t olen, - /* the pointer to an new keyword */ - const ase_char_t* nkw, - /* the length of the new keyword */ - ase_size_t nlen -); - -/* - * set the customized regular processing routine. (TODO: NOT YET IMPLEMENTED) - * - * RETURNS 0 on success, -1 on failure - */ -int ase_awk_setrexfns (ase_awk_t* awk, ase_awk_rexfns_t* rexfns); - -/****f* ase.awk/ase_awk_addglobal - * NAME - * ase_awk_addglobal - add an intrinsic global variable. - * - * RETURN - * On success, the ID of the global variable added is returned. - * On failure, -1 is returned. - * - * SYNOPSIS - */ -int ase_awk_addglobal ( - ase_awk_t* awk, - const ase_char_t* name, - ase_size_t len -); -/******/ - -/****f* ase.awk/ase_awk_delglobal - * NAME - * ase_awk_delglobal - delete an instrinsic global variable. - * - * SYNOPSIS - */ -int ase_awk_delglobal ( - ase_awk_t* awk, - const ase_char_t* name, - ase_size_t len -); -/******/ - -/****f* ase.awk/ase_awk_parse - * NAME - * ase_awk_parse - parse source code - * - * SYNOPSIS - */ -int ase_awk_parse ( - ase_awk_t* awk, - ase_awk_srcios_t* srcios -); -/******/ - - -/****f* ase.awk/ase_awk_opensimple - * NAME - * ase_awk_opensimple - create an awk object - * - * SYNOPSIS - */ -ase_awk_t* ase_awk_opensimple ( - ase_size_t xtnsize /* size of extension area in bytes */ -); -/******/ - -/****f* ase.awk/ase_awk_parsesimple - * NAME - * ase_awk_parsesimple - parse source code - * - * SYNOPSIS - */ -int ase_awk_parsesimple ( - ase_awk_t* awk, - const void* isp /* source file names or source string */, - int ist /* ASE_AWK_PARSE_FILES, ASE_AWK_PARSE_STRING */, - const ase_char_t* osf /* an output source file name */ -); -/******/ - -/****f* ase.awk/ase_awk_runsimple - * NAME - * ase_awk_runsimple - run a parsed program - * - * SYNOPSIS - */ -int ase_awk_runsimple ( - ase_awk_t* awk, - ase_char_t** icf /* input console files */, - ase_awk_runcbs_t* cbs /* callbacks */ -); -/******/ - -/** - * Executes a parsed program. - * - * ase_awk_run returns 0 on success and -1 on failure, generally speaking. - * A runtime context is required for it to start running the program. - * Once the runtime context is created, the program starts to run. - * The context creation failure is reported by the return value -1 of - * this function. however, the runtime error after the context creation - * is reported differently depending on the use of the callback. - * When no callback is specified (i.e. runcbs is ASE_NULL), ase_awk_run - * returns -1 on an error and awk->errnum is set accordingly. - * However, if a callback is specified (i.e. runcbs is not ASE_NULL), - * ase_awk_run returns 0 on both success and failure. Instead, the - * on_end handler of the callback is triggered with the relevant - * error number. The third parameter to on_end denotes this error number. - */ -int ase_awk_run ( - ase_awk_t* awk, const ase_char_t* main, - ase_awk_runios_t* runios, ase_awk_runcbs_t* runcbs, - ase_awk_runarg_t* runarg, void* data); - -void ase_awk_stop (ase_awk_run_t* run); -void ase_awk_stopall (ase_awk_t* awk); - -ase_bool_t ase_awk_isstop (ase_awk_run_t* run); - - -/** - * Gets the number of arguments passed to ase_awk_run - */ -ase_size_t ase_awk_getnargs (ase_awk_run_t* run); - -/** - * Gets an argument passed to ase_awk_run - */ -ase_awk_val_t* ase_awk_getarg (ase_awk_run_t* run, ase_size_t idx); - -/****f* ase.awk/ase_awk_getglobal - * NAME - * ase_awk_getglobal - gets the value of a global variable - * - * PARAMETERS - * id - A global variable id. An ID is one of the predefined global - * variable IDs or the value returned by ase_awk_addglobal(). - * - * RETURN - * The pointer to a value is returned. This function never fails - * so long as id is valid. Otherwise, you may fall into trouble. - */ -ase_awk_val_t* ase_awk_getglobal ( - ase_awk_run_t* run, - int id -); -/******/ - -int ase_awk_setglobal ( - ase_awk_run_t* run, - int id, - ase_awk_val_t* val -); - -/****f* ase.awk/ase_awk_setretval - * NAME - * ase_awk_setretval - set the return value - * - * DESCRIPTION - * The ase_awk_setretval() sets the return value of a function - * when called from within a function handlers. The caller doesn't - * have to invoke ase_awk_refupval() and ase_awk_refdownval() - * with the value to be passed to ase_awk_setretval(). - * The ase_awk_setretval() will update its reference count properly - * once the return value is set. - */ -void ase_awk_setretval ( - ase_awk_run_t* run, - ase_awk_val_t* val -); - -int ase_awk_setfilename ( - ase_awk_run_t* run, const ase_char_t* name, ase_size_t len); -int ase_awk_setofilename ( - ase_awk_run_t* run, const ase_char_t* name, ase_size_t len); - - -/****f* ase.awk/ase_awk_getrunawk - * NAME - * ase_awk_getrunawk - get the owning awk object - * - * SYNOPSIS - */ -ase_awk_t* ase_awk_getrunawk ( - ase_awk_run_t* run -); -/******/ - -/****f* ase.awk/ase_awk_getrunmmgr - * NAME - * ase_awk_getrunmmgr - get the memory manager of a run object - * - * SYNOPSIS - */ -ase_mmgr_t* ase_awk_getrunmmgr ( - ase_awk_run_t* run -); -/******/ - -/****f* ase.awk/ase_awk_getrundata - * NAME - * ase_awk_getrundata - get the user-specified data for a run object - * - * SYNOPSIS - */ -void* ase_awk_getrundata ( - ase_awk_run_t* run -); -/******/ - -/****f* ase.awk/ase_awk_getrunnvmap - * NAME - * ase_awk_getrunnvmap - get the map of named variables - * - * SYNOPSIS - */ -ase_map_t* ase_awk_getrunnvmap ( - ase_awk_run_t* run -); -/******/ - -/* functions to manipulate the run-time error */ -int ase_awk_getrunerrnum ( - ase_awk_run_t* run -); -ase_size_t ase_awk_getrunerrlin ( - ase_awk_run_t* run -); -const ase_char_t* ase_awk_getrunerrmsg ( - ase_awk_run_t* run -); -void ase_awk_setrunerrnum ( - ase_awk_run_t* run, - int errnum -); -void ase_awk_setrunerrmsg ( - ase_awk_run_t* run, - int errnum, - ase_size_t errlin, - const ase_char_t* errmsg -); - -void ase_awk_getrunerror ( - ase_awk_run_t* run, int* errnum, - ase_size_t* errlin, const ase_char_t** errmsg); - -void ase_awk_setrunerror ( - ase_awk_run_t* run, int errnum, ase_size_t errlin, - const ase_cstr_t* errarg, ase_size_t argcnt); - -/* functions to manipulate intrinsic functions */ -void* ase_awk_addfunc ( - ase_awk_t* awk, const ase_char_t* name, ase_size_t name_len, - int when_valid, ase_size_t min_args, ase_size_t max_args, - const ase_char_t* arg_spec, - int (*handler)(ase_awk_run_t*,const ase_char_t*,ase_size_t)); - -int ase_awk_delfunc ( - ase_awk_t* awk, const ase_char_t* name, ase_size_t name_len); - -void ase_awk_clrbfn (ase_awk_t* awk); - -/* record and field functions */ -int ase_awk_clrrec (ase_awk_run_t* run, ase_bool_t skip_inrec_line); -int ase_awk_setrec (ase_awk_run_t* run, ase_size_t idx, const ase_char_t* str, ase_size_t len); - -/* utility functions exported by awk.h */ - -/* - * NAME allocate dynamic memory - * - * DESCRIPTION - * - * - * RETURNS - * the pointer to the memory area allocated on success, ASE_NULL on failure - */ -void* ase_awk_alloc ( - /* the pointer to an ase_awk_t instance */ - ase_awk_t* awk, - /* the size of memory to allocate in bytes */ - ase_size_t size -); - -/* - * NAME free dynamic memory - * - * DESCRIPTION - */ -void ase_awk_free ( - /* the pointer to an ase_awk_t instance */ - ase_awk_t* awk, - /* the pointer to the memory area to free */ - void* ptr -); - -/* - * NAME duplicate a string - * - * DESCRIPTION - * The ase_awk_strdup() function is used to duplicate a string using - * the memory manager used by the associated ase_awk_t instance. - * The new string should be freed using the ase_awk_free() function. - * - * RETURNS - * The pointer to a new string which is a duplicate of the string s. - */ -ase_char_t* ase_awk_strdup ( - /* the pointer to an ase_awk_t instance */ - ase_awk_t* awk, - /* the pointer to a string */ - const ase_char_t* s -); - -/* - * NAME duplicate a string of a length given - * - * DESCRIPTION - * The ase_awk_strdup() function is used to duplicate a string whose length - * is as long as l characters using the memory manager used by the associated - * ase_awk_t instance. The new string should be freed using the ase_awk_free() - * function. - * - * RETURNS - * The pointer to a new string which is a duplicate of the string s. - */ -ase_char_t* ase_awk_strxdup (ase_awk_t* awk, const ase_char_t* s, ase_size_t l); - -ase_long_t ase_awk_strxtolong ( - ase_awk_t* awk, const ase_char_t* str, ase_size_t len, - int base, const ase_char_t** endptr); -ase_real_t ase_awk_strxtoreal ( - ase_awk_t* awk, const ase_char_t* str, ase_size_t len, - const ase_char_t** endptr); - -ase_size_t ase_awk_longtostr ( - ase_long_t value, int radix, const ase_char_t* prefix, - ase_char_t* buf, ase_size_t size); - -/* value manipulation functions */ -ase_awk_val_t* ase_awk_makeintval (ase_awk_run_t* run, ase_long_t v); -ase_awk_val_t* ase_awk_makerealval (ase_awk_run_t* run, ase_real_t v); - -ase_awk_val_t* ase_awk_makestrval0 ( - ase_awk_run_t* run, const ase_char_t* str); -ase_awk_val_t* ase_awk_makestrval ( - ase_awk_run_t* run, const ase_char_t* str, ase_size_t len); -ase_awk_val_t* ase_awk_makestrval_nodup ( - ase_awk_run_t* run, ase_char_t* str, ase_size_t len); -ase_awk_val_t* ase_awk_makestrval2 ( - ase_awk_run_t* run, - const ase_char_t* str1, ase_size_t len1, - const ase_char_t* str2, ase_size_t len2); - -ase_awk_val_t* ase_awk_makerexval ( - ase_awk_run_t* run, const ase_char_t* buf, ase_size_t len, void* code); -ase_awk_val_t* ase_awk_makemapval (ase_awk_run_t* run); -ase_awk_val_t* ase_awk_makerefval ( - ase_awk_run_t* run, int id, ase_awk_val_t** adr); - -ase_bool_t ase_awk_isstaticval (ase_awk_val_t* val); - -void ase_awk_freeval (ase_awk_run_t* run, ase_awk_val_t* val, ase_bool_t cache); - -void ase_awk_refupval (ase_awk_run_t* run, ase_awk_val_t* val); -void ase_awk_refdownval (ase_awk_run_t* run, ase_awk_val_t* val); -void ase_awk_refdownval_nofree (ase_awk_run_t* run, ase_awk_val_t* val); - -void ase_awk_freevalchunk (ase_awk_run_t* run, ase_awk_val_chunk_t* chunk); - -ase_bool_t ase_awk_valtobool ( - ase_awk_run_t* run, - ase_awk_val_t* val -); - -ase_char_t* ase_awk_valtostr ( - ase_awk_run_t* run, - ase_awk_val_t* val, - int opt, - ase_str_t* buf, - ase_size_t* len -); - -/****f* ase.awk/ase_awk_valtonum - * NAME - * ase_awk_valtonum - convert a value to a number - * - * DESCRIPTION - * The ase_awk_valtonum() function converts a value to a number. - * If the value is converted to a long number, it is stored in the memory - * pointed to by l and 0 is returned. If the value is converted to a real - * number, it is stored in the memory pointed to by r and 1 is returned. - * - * RETURN - * The ase_awk_valtonum() function returns -1 on error, 0 if the converted - * number is a long number and 1 if it is a real number. - * - * EXAMPLES - * ase_long_t l; - * ase_real_t r; - * int n; - * - * n = ase_awk_valtonum (v, &l, &r); - * if (n == -1) error (); - * else if (n == 0) do_long (l); - * else if (n == 1) do_real (r); - * - * SYNOPSIS - */ -int ase_awk_valtonum ( - ase_awk_run_t* run, - ase_awk_val_t* v /* the value to convert to a number */, - ase_long_t* l /* a pointer to a long number */, - ase_real_t* r /* a pointer to a ase_real_t */ -); -/******/ - -/****f* ase.awk/ase_awk_strtonum - * NAME - * ase_awk_strtonum - convert a string to a number - * - * SYNOPSIS - */ -int ase_awk_strtonum ( - ase_awk_run_t* run, - const ase_char_t* ptr, - ase_size_t len, - ase_long_t* l, - ase_real_t* r -); -/******/ - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/qse/include/ase/cmn/chr.h b/qse/include/ase/cmn/chr.h deleted file mode 100644 index 39f71900..00000000 --- a/qse/include/ase/cmn/chr.h +++ /dev/null @@ -1,97 +0,0 @@ -/* - * $Id: ctype.h 223 2008-06-26 06:44:41Z baconevi $ - */ - -#ifndef _ASE_CMN_CHR_H_ -#define _ASE_CMN_CHR_H_ - -#include -#include - -/* gets a pointer to the default memory manager */ -#define ASE_CCLS_GETDFL() (ase_ccls) - -/* sets a pointer to the default memory manager */ -#define ASE_CCLS_SETDFL(m) ((ase_ccls)=(m)) - -#define ASE_CCLS_IS(ccls,c,type) ((ccls)->is((ccls)->data,c,type)) -#define ASE_CCLS_TO(ccls,c,type) ((ccls)->to((ccls)->data,c,type)) - -#define ASE_CCLS_ISUPPER(ccls,c) ASE_CCLS_IS(ccls,c,ASE_CCLS_UPPER) -#define ASE_CCLS_ISLOWER(ccls,c) ASE_CCLS_IS(ccls,c,ASE_CCLS_LOWER) -#define ASE_CCLS_ISALPHA(ccls,c) ASE_CCLS_IS(ccls,c,ASE_CCLS_ALPHA) -#define ASE_CCLS_ISDIGIT(ccls,c) ASE_CCLS_IS(ccls,c,ASE_CCLS_DIGIT) -#define ASE_CCLS_ISXDIGIT(ccls,c) ASE_CCLS_IS(ccls,c,ASE_CCLS_XDIGIT) -#define ASE_CCLS_ISALNUM(ccls,c) ASE_CCLS_IS(ccls,c,ASE_CCLS_ALNUM) -#define ASE_CCLS_ISSPACE(ccls,c) ASE_CCLS_IS(ccls,c,ASE_CCLS_SPACE) -#define ASE_CCLS_ISPRINT(ccls,c) ASE_CCLS_IS(ccls,c,ASE_CCLS_PRINT) -#define ASE_CCLS_ISGRAPH(ccls,c) ASE_CCLS_IS(ccls,c,ASE_CCLS_GRAPH) -#define ASE_CCLS_ISCNTRL(ccls,c) ASE_CCLS_IS(ccls,c,ASE_CCLS_CNTRL) -#define ASE_CCLS_ISPUNCT(ccls,c) ASE_CCLS_IS(ccls,c,ASE_CCLS_PUNCT) -#define ASE_CCLS_TOUPPER(ccls,c) ASE_CCLS_TO(ccls,c,ASE_CCLS_UPPER) -#define ASE_CCLS_TOLOWER(ccls,c) ASE_CCLS_TO(ccls,c,ASE_CCLS_LOWER) - -#ifdef __cplusplus -extern "C" { -#endif - -extern ase_ccls_t* ase_ccls; - -ase_bool_t ase_ccls_is ( - ase_cint_t c, - ase_ccls_type_t type -); - -ase_cint_t ase_ccls_to ( - ase_cint_t c, - ase_ccls_type_t type -); - - - -ase_size_t ase_mblen ( - const ase_mchar_t* mb, - ase_size_t mblen -); - -/****f* ase.cmn.chr/ase_mbtowc - * NAME - * ase_mbtowc - convert a multibyte sequence to a wide character. - * - * RETURN - * The ase_mbtowc() function returns 0 if an invalid multibyte sequence is - * detected, mblen + 1 if the sequence is incomplete. It returns the number - * of bytes processed to form a wide character. - * - * SYNOPSIS - */ -ase_size_t ase_mbtowc ( - const ase_mchar_t* mb, - ase_size_t mblen, - ase_wchar_t* wc -); -/******/ - -/****f* ase.cmn.chr/ase_wctomb - * NAME - * ase_wctomb - convert a wide character to a multibyte sequence - * - * RETURN - * The ase_wctomb() functions returns 0 if the wide character is illegal, - * mblen + 1 if mblen is not large enough to hold the multibyte sequence. - * On successful conversion, it returns the number of bytes in the sequence. - * - * SYNOPSIS - */ -ase_size_t ase_wctomb ( - ase_wchar_t wc, - ase_mchar_t* mb, - ase_size_t mblen -); -/******/ - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/qse/include/ase/cmn/dll.h b/qse/include/ase/cmn/dll.h deleted file mode 100644 index e551eac9..00000000 --- a/qse/include/ase/cmn/dll.h +++ /dev/null @@ -1,260 +0,0 @@ -/* - * $Id: map.h 223 2008-06-26 06:44:41Z baconevi $ - * - * {License} - */ - -#ifndef _ASE_CMN_DLL_H_ -#define _ASE_CMN_DLL_H_ - -#include -#include - -/* - * Doubly Linked List - */ -typedef struct ase_dll_t ase_dll_t; -typedef struct ase_dll_node_t ase_dll_node_t; - -/* data copier */ -typedef void* (*ase_dll_copier_t) (ase_dll_t* dll, void* dptr, ase_size_t dlen); - -/* data freeer */ -typedef void (*ase_dll_freeer_t) (ase_dll_t* dll, void* dptr, ase_size_t dlen); - -/* node visitor */ -typedef int (*ase_dll_walker_t) ( - ase_dll_t* dll, ase_dll_node_t* node, void* arg); - -struct ase_dll_t -{ - ase_mmgr_t* mmgr; - - ase_dll_copier_t copier; - ase_dll_freeer_t freeer; - - ase_size_t size; - ase_dll_node_t* head; - ase_dll_node_t* tail; -}; - -struct ase_dll_node_t -{ - void* dptr; /* pointer to the beginning of data */ - ase_size_t dlen; /* length of data in bytes */ - ase_dll_node_t* next; /* pointer to the next node */ - ase_dll_node_t* prev; /* pointer to the prev node */ -}; - - -enum ase_dll_walk_t -{ - ASE_DLL_WALK_STOP = 0, - ASE_DLL_WALK_FORWARD = 1 -}; - -#define ASE_DLL_COPIER_INLINE ase_dll_copyinline - -#define ASE_DLL_HEAD(dll) ((dll)->head) -#define ASE_DLL_TAIL(dll) ((dll)->tail) -#define ASE_DLL_SIZE(dll) ((dll)->size) - -#define ASE_DLL_DPTR(n) ((n)->dptr) -#define ASE_DLL_DLEN(n) ((n)->dlen) -#define ASE_DLL_NEXT(n) ((n)->next) -#define ASE_DLL_PREV(n) ((n)->prev) - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * NAME: creates a doubly linked list with extension area - * - * DESCRIPTION: - * The ase_dll_open() function creates an empty doubly linked list. - * If the memory manager mmgr is ASE_NULL, the function gets the default - * memory manager with ASE_MMGR_GETMMGR() and uses it if it is not ASE_NULL. - * The extension area is allocated when the positive extension size extension - * is specified. It calls the extension initialization function initializer - * after initializing the main area. The extension initializer is passed - * the pointer to the doubly linked list created. - * - * RETURNS: - * the pointer to a newly created doubly linked list on success. - * ASE_NULL on failure. - * - * WARNING: - * In the debug build, it fails the assertion if ASE_MMGR_SETMMGR() returns - * ASE_NULL when ASE_NULL is passed as the first parameter. In the release - * build, it returns ASE_NULL if such a thing happens. - */ - -ase_dll_t* ase_dll_open ( - ase_mmgr_t* mmgr /* memory manager */ , - ase_size_t ext /* size of extension area in bytes */ -); - -/* - * NAME destroys a singly linked list - */ -void ase_dll_close ( - ase_dll_t* dll /* a singly linked list */ -); - -/* - * NAME deletes all elements of a singly linked list - */ -void ase_dll_clear ( - ase_dll_t* dll /* a singly linked list */ -); - -/* - * NAME specifies how to clone an element - * - * DESCRIPTION - * A special copier ASE_DLL_COPIER_INLINE is provided. This copier enables - * you to copy the data inline to the internal node. No freeer is invoked - * when the node is freeed. - * - * You may set the copier to ASE_NULL to perform no special operation - * when the data pointer is rememebered. - */ -void ase_dll_setcopier ( - ase_dll_t* dll /* a singly linked list */, - ase_dll_copier_t copier /* a element copier */ -); - -ase_dll_copier_t ase_dll_getcopier ( - ase_dll_t* dll /* a singly linked list */ -); - -/* - * NAME specifies how to destroy an element - * - * DESCRIPTION - * The freeer is called when a node containing the element is destroyed. - */ -void ase_dll_setfreeer ( - ase_dll_t* dll /* a singly linked list */, - ase_dll_freeer_t freeer /* a element freeer */ -); - -ase_dll_freeer_t ase_dll_getfreeer ( - ase_dll_t* dll /* a singly linked list */ -); - -/* - * NAME Gets the pointer to the extension area - * RETURN the pointer to the extension area - */ -void* ase_dll_getxtn ( - ase_dll_t* dll /* a singly linked list */ -); - -/* - * NAME: get the pointer to the memory manager in use - */ -ase_mmgr_t* ase_dll_getmmgr ( - ase_dll_t* dll /* a singly linked list */ -); - -void ase_dll_setmmgr (ase_dll_t* dll, ase_mmgr_t* mmgr); - -/* - * NAME Gets the number of elements held in a singly linked list - * RETURN the number of elements the list holds - */ -ase_size_t ase_dll_getsize ( - ase_dll_t* dll /* a singly linked list */ -); - -/* - * NAME Gets the head(first) node - * RETURN the tail node of a singly linked list - */ -ase_dll_node_t* ase_dll_gethead ( - ase_dll_t* dll /* a singly linked list */ -); - -/* - * NAME Gets the tail(last) node - * RETURN the tail node of a singly linked list - */ -ase_dll_node_t* ase_dll_gettail ( - ase_dll_t* dll /* a singly linked list */ -); - -/* - * NAME Inserts data before a positional node given - * - * DESCRIPTION - * Inserts data. - */ -ase_dll_node_t* ase_dll_insert ( - ase_dll_t* dll /* a singly linked list */, - ase_dll_node_t* pos /* a node before which a new node is inserted */, - void* dptr /* the pointer to the data */ , - ase_size_t dlen /* the length of the data in bytes */ -); - -ase_dll_node_t* ase_dll_pushhead ( - ase_dll_t* dll /* a singly linked list */, - void* dptr, - ase_size_t dlen -); - -ase_dll_node_t* ase_dll_pushtail ( - ase_dll_t* dll /* a singly linked list */, - void* dptr, - ase_size_t dlen -); - -void ase_dll_delete ( - ase_dll_t* dll, - ase_dll_node_t* pos -); - -void ase_dll_pophead ( - ase_dll_t* dll -); - -void ase_dll_poptail ( - ase_dll_t* dll -); - -/* - * NAME Traverses s singly linked list - * - * DESCRIPTION - * A singly linked list allows uni-directional in-order traversal. - * The ase_dll_walk() function traverses a singly linkked list from its - * head node down to its tail node as long as the walker function returns - * ASE_DLL_WALK_FORWARD. A walker can return ASE_DLL_WALK_STOP to cause - * immediate stop of traversal. - * For each node, the walker function is called and it is passed three - * parameters: the singly linked list, the visiting node, and the - * user-defined data passed as the third parameter in a call to the - * ase_dll_walk() function. - */ -void ase_dll_walk ( - ase_dll_t* dll /* a singly linked list */, - ase_dll_walker_t walker /* a user-defined walker function */, - void* arg /* pointer to user-defined data */ -); - -/* - * Causes a singly linked list to copy in data to a node. - * Use ASE_DLL_COPIER_INLINE instead. - */ -void* ase_dll_copyinline ( - ase_dll_t* dll /* a singly linked list */, - void* data /* pointer to data to copy */ , - ase_size_t len /* length of data in bytes */ -); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/qse/include/ase/cmn/fio.h b/qse/include/ase/cmn/fio.h deleted file mode 100644 index c20953b4..00000000 --- a/qse/include/ase/cmn/fio.h +++ /dev/null @@ -1,152 +0,0 @@ -/* - * $Id$ - */ - -#ifndef _ASE_CMN_FIO_H_ -#define _ASE_CMN_FIO_H_ - -#include -#include - -enum ase_fio_open_flag_t -{ - /* treat the file name pointer as a handle pointer */ - ASE_FIO_HANDLE = (1 << 0), - - ASE_FIO_READ = (1 << 1), - ASE_FIO_WRITE = (1 << 2), - ASE_FIO_APPEND = (1 << 3), - - ASE_FIO_CREATE = (1 << 4), - ASE_FIO_TRUNCATE = (1 << 5), - ASE_FIO_EXCLUSIVE = (1 << 6), - ASE_FIO_SYNC = (1 << 7), - - /* for ms windows only */ - ASE_FIO_NOSHRD = (1 << 16), - ASE_FIO_NOSHWR = (1 << 17) -}; - -/* seek origin */ -enum ase_fio_seek_origin_t -{ - ASE_FIO_BEGIN = 0, - ASE_FIO_CURRENT = 1, - ASE_FIO_END = 2 -}; - -#ifdef _WIN32 -/* typedef PVOID HANDLE; */ -typedef void* ase_fio_hnd_t; -#else -typedef int ase_fio_hnd_t; -#endif - -/* file offset */ -typedef ase_int64_t ase_fio_off_t; -typedef enum ase_fio_seek_origin_t ase_fio_ori_t; - -typedef struct ase_fio_t ase_fio_t; - -struct ase_fio_t -{ - ase_mmgr_t* mmgr; - ase_fio_hnd_t handle; -}; - -#define ASE_FIO_MMGR(fio) ((fio)->mmgr) -#define ASE_FIO_HANDLE(fio) ((fio)->handle) - -#ifdef __cplusplus -extern "C" { -#endif - -/****f* ase.fio/ase_fio_open - * NAME - * ase_fio_open - open a file - * - * DESCRIPTION - * To open a file, you should set the flags with at least one of - * ASE_FIO_READ, ASE_FIO_WRITE, ASE_FIO_APPEND. - * - * SYNOPSIS - */ -ase_fio_t* ase_fio_open ( - ase_mmgr_t* mmgr, - ase_size_t ext, - const ase_char_t* path, - int flags, - int mode -); -/******/ - -/****f* ase.fio/ase_fio_close - * NAME - * ase_fio_close - close a file - * - * SYNOPSIS - */ -void ase_fio_close ( - ase_fio_t* fio -); -/******/ - -ase_fio_t* ase_fio_init ( - ase_fio_t* fio, - ase_mmgr_t* mmgr, - const ase_char_t* path, - int flags, - int mode -); - -void ase_fio_fini ( - ase_fio_t* fio -); - -ase_fio_hnd_t ase_fio_gethandle ( - ase_fio_t* fio -); - -/****f* ase.cmn.fio/ase_fio_sethandle - * SYNOPSIS - * ase_fio_sethandle - set the file handle - * WARNING - * Avoid using this function if you don't know what you are doing. - * You may have to retrieve the previous handle using ase_fio_gethandle() - * to take relevant actions before resetting it with ase_fio_sethandle(). - * SYNOPSIS - */ -void ase_fio_sethandle ( - ase_fio_t* fio, - ase_fio_hnd_t handle -); -/******/ - -ase_fio_off_t ase_fio_seek ( - ase_fio_t* fio, - ase_fio_off_t offset, - ase_fio_ori_t origin -); - -int ase_fio_truncate ( - ase_fio_t* fio, - ase_fio_off_t size -); - -ase_ssize_t ase_fio_read ( - ase_fio_t* fio, - void* buf, - ase_size_t size -); - -ase_ssize_t ase_fio_write ( - ase_fio_t* fio, - const void* buf, - ase_size_t size -); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/qse/include/ase/cmn/io.h b/qse/include/ase/cmn/io.h deleted file mode 100644 index 94e0b3f0..00000000 --- a/qse/include/ase/cmn/io.h +++ /dev/null @@ -1,74 +0,0 @@ -/* - * $Id: sysapi.h,v 1.56 2006/03/21 16:15:16 bacon Ease $ - */ - -#ifndef _ASE_CMN_IO_H_ -#define _ASE_CMN_IO_H_ - -#include -#include - -/* flags for ase_open */ -enum -{ - ASE_OPEN_READ = (1 << 0), - ASE_OPEN_WRITE = (1 << 1), - ASE_OPEN_CREATE = (1 << 2), - ASE_OPEN_TRUNCATE = (1 << 3), - ASE_OPEN_EXCLUSIVE = (1 << 4), - ASE_OPEN_APPEND = (1 << 5), - ASE_OPEN_NONBLOCK = (1 << 6) -}; - -/* origin for ase_seek */ -enum -{ - ASE_SEEK_BEGIN = 0, - ASE_SEEK_CURRENT = 1, - ASE_SEEK_END = 2 -}; - -#ifdef __cplusplus -extern "C" { -#endif - -ase_hnd_t ase_open ( - const ase_char_t* path, - int flag, - ... -); - -int ase_close ( - ase_hnd_t handle -); - -ase_ssize_t ase_read ( - ase_hnd_t handle, - void* buf, - ase_size_t sz -); - -ase_ssize_t ase_write ( - ase_hnd_t handle, - const void* data, - ase_size_t sz -); - -ase_off_t ase_seek ( - ase_hnd_t handle, - ase_off_t offset, - int origin -); - -/* -int ase_hstat (ase_hnd_t handle, ase_stat_t* buf); -int ase_hchmod (ase_hnd_t handle, ase_mode_t mode); -*/ -int ase_htruncate (ase_hnd_t handle, ase_off_t size); - -#ifdef __cplusplus -} -#endif - -#endif - diff --git a/qse/include/ase/cmn/lda.h b/qse/include/ase/cmn/lda.h deleted file mode 100644 index fe517b79..00000000 --- a/qse/include/ase/cmn/lda.h +++ /dev/null @@ -1,477 +0,0 @@ -/* - * $Id: lda.h 363 2008-09-04 10:58:08Z baconevi $ - * - * {License} - */ - -#ifndef _ASE_CMN_LDA_H_ -#define _ASE_CMN_LDA_H_ - -#include -#include - -/****o* ase.cmn.lda/linear dynamic array - * DESCRIPTION - * provides a linear dynamic array. It grows as more items - * are added. T - * - * #include - ****** - */ - -enum ase_lda_walk_t -{ - ASE_LDA_WALK_STOP = 0, - ASE_LDA_WALK_FORWARD = 1, - ASE_LDA_WALK_BACKWARD = 2 -}; - -typedef struct ase_lda_t ase_lda_t; -typedef struct ase_lda_node_t ase_lda_node_t; -typedef enum ase_lda_walk_t ase_lda_walk_t; - -#define ASE_LDA_COPIER_SIMPLE ((ase_lda_copier_t)1) -#define ASE_LDA_COPIER_INLINE ((ase_lda_copier_t)2) - -#define ASE_LDA_INVALID ((ase_size_t)-1) - -#define ASE_LDA_SIZE(lda) ((lda)->size) -#define ASE_LDA_CAPA(lda) ((lda)->capa) - -#define ASE_LDA_NODE(lda,index) ((lda)->node[index]) -#define ASE_LDA_DPTR(lda,index) ((lda)->node[index]->dptr) -#define ASE_LDA_DLEN(lda,index) ((lda)->node[index]->dlen) - -#define ASE_LDA_MMGR(lda) ((lda)->mmgr) -#define ASE_LDA_XTN(lda) ((void*)(((ase_lda_t*)lda) + 1)) - -#define ASE_LDA_COPIER(lda) ((lda)->copier) -#define ASE_LDA_FREEER(lda) ((lda)->freeer) -#define ASE_LDA_COMPER(lda) ((lda)->comper) -#define ASE_LDA_KEEPER(lda) ((lda)->keeper) -#define ASE_LDA_SIZER(lda) ((lda)->sizer) - - - -/****b* ase.cmn.lda/ase_lda_copier_t - * NAME - * ase_lda_copier_t - define a node contruction callback - * - * DESCRIPTION - * The ase_lda_copier_t defines a callback function for node construction. - * A node is contructed when a user adds data to a list. The user can - * define how the data to add can be maintained in the list. A singly - * linked list not specified with any copiers stores the data pointer and - * the data length into a node. A special copier ASE_LDA_COPIER_INLINE copies - * the contents of the data a user provided into the node. You can use the - * ase_lda_setcopier() function to change the copier. - * - * A copier should return the pointer to the copied data. If it fails to copy - * data, it may return ASE_NULL. You need to set a proper freeer to free up - * memory allocated for copy. - * - * SEE ALSO - * ase_lda_setcopier, ase_lda_getcopier, ASE_LDA_COPIER - * - * SYNOPSIS - */ -typedef void* (*ase_lda_copier_t) ( - ase_lda_t* lda /* a lda */, - void* dptr /* the pointer to data to copy */, - ase_size_t dlen /* the length of data to copy */ -); -/******/ - -/****b* ase.cmn.lda/ase_lda_freeer_t - * NAME - * ase_lda_freeer_t - define a node destruction callback - * SYNOPSIS - */ -typedef void (*ase_lda_freeer_t) ( - ase_lda_t* lda /* a lda */, - void* dptr /* the pointer to data to free */, - ase_size_t dlen /* the length of data to free */ -); -/******/ - -/****t* ase.cmn.lda/ase_lda_comper_t - * NAME - * ase_lda_comper_t - define a data comparator - * - * DESCRIPTION - * The ase_lda_comper_t type defines a key comparator that is called when - * the list needs to compare data. A linear dynamic array is created with a - * default comparator that performs bitwise comparison. - * - * The comparator should return 0 if the data are the same and a non-zero - * integer otherwise. - * - * SYNOPSIS - */ -typedef int (*ase_lda_comper_t) ( - ase_lda_t* lda /* a linear dynamic array */, - const void* dptr1 /* a data pointer */, - ase_size_t dlen1 /* a data length */, - const void* dptr2 /* a data pointer */, - ase_size_t dlen2 /* a data length */ -); -/******/ - -/****t* ase.cmn.lda/ase_lda_keeper_t - * NAME - * ase_lda_keeper_t - define a value keeper - * - * DESCRIPTION - * The ase_lda_keeper_t type defines a value keeper that is called when - * a value is retained in the context that it should be destroyed because - * it is identical to a new value. Two values are identical if their beginning - * pointers and their lengths are equal. - * - * SYNOPSIS - */ -typedef void (*ase_lda_keeper_t) ( - ase_lda_t* lda /* a lda */, - void* vptr /* the pointer to a value */, - ase_size_t vlen /* the length of a value */ -); -/******/ - -/****t* ase.cmn.lda/ase_lda_sizer_t - * NAME - * ase_lda_sizer_t - define an array size calculator - * - * DESCRIPTION - * The ase_lda_sizer_t type defines an array size claculator that is called - * when the array needs to be resized. - * - * SYNOPSIS - */ -typedef ase_size_t (*ase_lda_sizer_t) ( - ase_lda_t* lda, /* a linear dynamic array */ - ase_size_t hint /* a sizing hint */ -); -/******/ - -typedef ase_lda_walk_t (*ase_lda_walker_t) ( - ase_lda_t* lda /* a linear dynamic array */, - ase_size_t index /* the index to the visited node */, - void* arg /* user-defined data */ -); - -/****s* ase.cmn.lda/ase_lda_t - * NAME - * ase_lda_t - define a linear dynamic array - * - * SYNOPSIS - */ -struct ase_lda_t -{ - ase_mmgr_t* mmgr; /* memory manager */ - - ase_lda_copier_t copier; /* data copier */ - ase_lda_freeer_t freeer; /* data freeer */ - ase_lda_comper_t comper; /* data comparator */ - ase_lda_keeper_t keeper; /* data keeper */ - ase_lda_sizer_t sizer; /* size calculator */ - ase_byte_t scale; /* scale factor */ - ase_size_t size; /* the number of items */ - ase_size_t capa; /* capacity */ - ase_lda_node_t** node; -}; -/******/ - -/****s* - * NAME - * ase_lda_node_t - define a linear dynamic array node - * - * SYNOPSIS - */ -struct ase_lda_node_t -{ - void* dptr; - ase_size_t dlen; -}; -/******/ - -#ifdef __cplusplus -extern "C" { -#endif - -/****f* ase.cmn.lda/ase_lda_open - * NAME - * ase_lda_open - create a linear dynamic array - * - * SYNOPSIS - */ -ase_lda_t* ase_lda_open ( - ase_mmgr_t* lda, - ase_size_t ext, - ase_size_t capa -); -/******/ - -/****f* ase.cmn.lda/ase_lda_close - * NAME - * ase_lda_close - destroy a linear dynamic array - * - * SYNOPSIS - */ -void ase_lda_close ( - ase_lda_t* lda -); -/******/ - -/****f* ase.cmn.lda/ase_lda_init - * NAME - * ase_lda_init - initialize a linear dynamic array - * - * SYNOPSIS - */ -ase_lda_t* ase_lda_init ( - ase_lda_t* lda, - ase_mmgr_t* mmgr, - ase_size_t capa -); -/******/ - -/****f* ase.cmn.lda/ase_lda_fini - * NAME - * ase_lda_fini - deinitialize a linear dynamic array - * - * SYNOPSIS - */ -void ase_lda_fini ( - ase_lda_t* lda -); -/******/ - -/****f* ase.cmn.lda/ase_lda_getxtn - * NAME - * ase_lda_getxtn - get the pointer to the extension - * - * DESCRIPTION - * The ase_lda_getxtn() function returns the pointer to the extension. - * - * SYNOPSIS - */ -void* ase_lda_getxtn ( - ase_lda_t* lda /* a linear dynamic array */ -); -/******/ - -/****f* ase.cmn.lda/ase_lda_getmmgr - * NAME - * ase_lda_getmmgr - get the memory manager - * - * SYNOPSIS - */ -ase_mmgr_t* ase_lda_getmmgr ( - ase_lda_t* lda /* a linear dynamic array */ -); -/******/ - -/****f* ase.cmn.lda/ase_lda_setmmgr - * NAME - * ase_lda_setmmgr - set the memory manager - * - * SYNOPSIS - */ -void ase_lda_setmmgr ( - ase_lda_t* lda /* a linear dynamic array */, - ase_mmgr_t* mmgr /* a memory manager */ -); -/******/ - -int ase_lda_getscale ( - ase_lda_t* lda /* a lda */ -); - -/****f* ase.cmn.lda/ase_lda_setscale - * NAME - * ase_lda_setscale - set the scale factor - * - * DESCRIPTION - * The ase_lda_setscale() function sets the scale factor of the length - * of a key and a value. A scale factor determines the actual length of - * a key and a value in bytes. A lda is created with a scale factor of 1. - * The scale factor should be larger than 0 and less than 256. - * - * NOTES - * It is a bad idea to change the scale factor when a lda is not empty. - * - * SYNOPSIS - */ -void ase_lda_setscale ( - ase_lda_t* lda /* a lda */, - int scale /* a scale factor */ -); -/******/ - -ase_lda_copier_t ase_lda_getcopier ( - ase_lda_t* lda /* a lda */ -); - -/****f* ase.cmn.lda/ase_lda_setcopier - * NAME - * ase_lda_setcopier - specify how to clone an element - * - * DESCRIPTION - * A special copier ASE_LDA_COPIER_INLINE is provided. This copier enables - * you to copy the data inline to the internal node. No freeer is invoked - * when the node is freeed. - * - * You may set the copier to ASE_NULL to perform no special operation - * when the data pointer is rememebered. - * - * SYNOPSIS - */ -void ase_lda_setcopier ( - ase_lda_t* lda /* a lda */, - ase_lda_copier_t copier /* an element copier */ -); -/******/ - -ase_lda_freeer_t ase_lda_getfreeer ( - ase_lda_t* lda /* a lda */ -); - -/****f* ase.cmn.lda/ase_lda_setfreeer - * NAME - * ase_lda_setfreeer - specify how to destroy an element - * - * DESCRIPTION - * The freeer is called when a node containing the element is destroyed. - * - * SYNOPSIS - */ -void ase_lda_setfreeer ( - ase_lda_t* lda /* a lda */, - ase_lda_freeer_t freeer /* an element freeer */ -); -/******/ - -ase_lda_keeper_t ase_lda_getkeeper ( - ase_lda_t* lda -); - -void ase_lda_setkeeper ( - ase_lda_t* lda, - ase_lda_keeper_t keeper -); - -ase_lda_sizer_t ase_lda_getsizer ( - ase_lda_t* lda -); - -void ase_lda_setsizer ( - ase_lda_t* lda, - ase_lda_sizer_t sizer -); - -ase_size_t ase_lda_getsize ( - ase_lda_t* lda -); - -ase_size_t ase_lda_getcapa ( - ase_lda_t* lda -); - -ase_lda_t* ase_lda_setcapa ( - ase_lda_t* lda, - ase_size_t capa -); - -ase_size_t ase_lda_search ( - ase_lda_t* lda, - ase_size_t pos, - const void* dptr, - ase_size_t dlen -); - -ase_size_t ase_lda_rsearch ( - ase_lda_t* lda, - ase_size_t pos, - const void* dptr, - ase_size_t dlen -); - -ase_size_t ase_lda_upsert ( - ase_lda_t* lda, - ase_size_t index, - void* dptr, - ase_size_t dlen -); - -ase_size_t ase_lda_insert ( - ase_lda_t* lda, - ase_size_t index, - void* dptr, - ase_size_t dlen -); - -ase_size_t ase_lda_update ( - ase_lda_t* lda, - ase_size_t pos, - void* dptr, - ase_size_t dlen -); - -/****f* ase.cmn.lda/ase_lda_delete - * NAME - * ase_lda_delete - delete data - * - * DESCRIPTION - * The ase_lda_delete() function deletes the as many data as the count - * from the index. - * - * RETURN - * The ase_lda_delete() function returns the number of data deleted. - * - * SYNOPSIS - */ -ase_size_t ase_lda_delete ( - ase_lda_t* lda, - ase_size_t index, - ase_size_t count -); -/******/ - -/****f* ase.cmn.lda/ase_lda_uplete - * NAME - * ase_lda_uplete - delete data node - * - * DESCRIPTION - * The ase_lda_uplete() function deletes data node without compaction. - * - * RETURN - * The ase_lda_uplete() function returns the number of data affected. - * - */ -ase_size_t ase_lda_uplete ( - ase_lda_t* lda, - ase_size_t index, - ase_size_t count -); -/******/ - -void ase_lda_clear ( - ase_lda_t* lda -); - -void ase_lda_walk ( - ase_lda_t* lda, - ase_lda_walker_t walker, - void* arg -); - -void ase_lda_rwalk ( - ase_lda_t* lda, - ase_lda_walker_t walker, - void* arg -); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/qse/include/ase/cmn/map.h b/qse/include/ase/cmn/map.h deleted file mode 100644 index 9875acf0..00000000 --- a/qse/include/ase/cmn/map.h +++ /dev/null @@ -1,566 +0,0 @@ -/* - * $Id: map.h 496 2008-12-15 09:56:48Z baconevi $ - * - * {License} - */ - -#ifndef _ASE_CMN_MAP_H_ -#define _ASE_CMN_MAP_H_ - -#include -#include - -/****o* ase.cmn.map/hash map - * DESCRIPTION - * A hash map maintains buckets for key/value pairs with the same key hash - * chained under the same bucket. - * - * #include - * - * EXAMPLES - * void f (void) - * { - * } - ****** - */ - -/* values that can be returned by ase_map_walker_t */ -enum ase_map_walk_t -{ - ASE_MAP_WALK_STOP = 0, - ASE_MAP_WALK_FORWARD = 1 -}; - -enum ase_map_id_t -{ - ASE_MAP_KEY = 0, - ASE_MAP_VAL = 1 -}; - -typedef struct ase_map_t ase_map_t; -typedef struct ase_map_pair_t ase_map_pair_t; -typedef enum ase_map_walk_t ase_map_walk_t; -typedef enum ase_map_id_t ase_map_id_t; - -/****b* ase.cmn.map/ase_map_copier_t - * NAME - * ase_map_copier_t - define a pair contruction callback - * SYNOPSIS - */ -typedef void* (*ase_map_copier_t) ( - ase_map_t* map /* a map */, - void* dptr /* the pointer to a key or a value */, - ase_size_t dlen /* the length of a key or a value */ -); -/******/ - -/****b* ase.cmn.map/ase_map_freeer_t - * NAME - * ase_map_freeer_t - define a key/value destruction callback - * SYNOPSIS - */ -typedef void (*ase_map_freeer_t) ( - ase_map_t* map /* a map */, - void* dptr /* the pointer to a key or a value */, - ase_size_t dlen /* the length of a key or a value */ -); -/******/ - -/* key hasher */ -typedef ase_size_t (*ase_map_hasher_t) ( - ase_map_t* map /* a map */, - const void* kptr /* the pointer to a key */, - ase_size_t klen /* the length of a key in bytes */ -); - -/****t* ase.cmn.map/ase_map_comper_t - * NAME - * ase_map_comper_t - define a key comparator - * - * DESCRIPTION - * The ase_map_comper_t type defines a key comparator that is called when - * the map needs to compare keys. A map is created with a default comparator - * which performs bitwise comparison between two keys. - * - * The comparator should return 0 if the keys are the same and a non-zero - * integer otherwise. - * - * SYNOPSIS - */ -typedef int (*ase_map_comper_t) ( - ase_map_t* map /* a map */, - const void* kptr1 /* the pointer to a key */, - ase_size_t klen1 /* the length of a key */, - const void* kptr2 /* the pointer to a key */, - ase_size_t klen2 /* the length of a key */ -); -/******/ - -/****t* ase.cmn.map/ase_map_keeper_t - * NAME - * ase_map_keeper_t - define a value keeper - * - * DESCRIPTION - * The ase_map_keeper_t type defines a value keeper that is called when - * a value is retained in the context that it should be destroyed because - * it is identical to a new value. Two values are identical if their beginning - * pointers and their lengths are equal. - * - * SYNOPSIS - */ -typedef void (*ase_map_keeper_t) ( - ase_map_t* map /* a map */, - void* vptr /* the pointer to a value */, - ase_size_t vlen /* the length of a value */ -); -/******/ - -/****t* ase.cmn.map/ase_map_sizer_t - * NAME - * ase_map_sizer_t - define a bucket size calculator - * - * DESCRIPTION - * The ase_map_sizer_T type defines a bucket size claculator that is called - * when a map should resize the bucket. The current bucket size +1 is passed - * as the hint. - * - * SYNOPSIS - */ -typedef ase_size_t (*ase_map_sizer_t) ( - ase_map_t* map, /* a map */ - ase_size_t hint /* a sizing hint */ -); -/******/ - -/****t* ase.cmn.map/ase_map_walker_t - * NAME - * ase_map_walker_t - define a pair visitor - * - * SYNOPSIS - */ -typedef ase_map_walk_t (*ase_map_walker_t) ( - ase_map_t* map /* a map */, - ase_map_pair_t* pair /* the pointer to a key/value pair */, - void* arg /* the pointer to user-defined data */ -); -/******/ - -/****s* ase.cmn.map/ase_map_pair_t - * NAME - * ase_map_pair_t - define a pair - * - * DESCRIPTION - * A pair is composed of a key and a value. It maintains pointers to the - * beginning of a key and a value plus their length. The length is scaled - * down with the scale factor specified in an owning map. Use macros defined - * in the SEE ALSO section below to access individual fields. - * - * SEE ALSO - * ASE_MAP_KPTR, ASE_MAP_KLEN, ASE_MAP_VPTR, ASE_MAP_VLEN - * - * SYNOPSIS - */ -struct ase_map_pair_t -{ - void* kptr; /* the pointer to a key */ - ase_size_t klen; /* the length of a key */ - void* vptr; /* the pointer to a value */ - ase_size_t vlen; /* the length of a value */ - ase_map_pair_t* next; /* the next pair under the same slot */ -}; -/*****/ - -/****s* ase.cmn.map/ase_map_t - * NAME - * ase_map_t - define a hash map - * - * SYNOPSIS - */ -struct ase_map_t -{ - ase_mmgr_t* mmgr; - ase_map_copier_t copier[2]; - ase_map_freeer_t freeer[2]; - ase_map_hasher_t hasher; /* key hasher */ - ase_map_comper_t comper; /* key comparator */ - ase_map_keeper_t keeper; /* value keeper */ - ase_map_sizer_t sizer; /* bucket capacity recalculator */ - ase_byte_t scale[2]; /* length scale */ - ase_byte_t factor; /* load factor */ - ase_byte_t filler0; - ase_size_t size; - ase_size_t capa; - ase_size_t threshold; - ase_map_pair_t** bucket; -}; -/******/ - -#define ASE_MAP_COPIER_SIMPLE ((ase_map_copier_t)1) -#define ASE_MAP_COPIER_INLINE ((ase_map_copier_t)2) - -/****d* ase.cmn.map/ASE_MAP_SIZE - * NAME - * ASE_MAP_SIZE - get the number of pairs - * - * DESCRIPTION - * The ASE_MAP_SIZE() macro returns the number of pairs in a map. - * - * SYNOPSIS - */ -#define ASE_MAP_SIZE(m) ((m)->size) -/*****/ - -/****d* ase.cmn.map/ASE_MAP_CAPA - * NAME - * ASE_MAP_CAPA - get the capacity of a map - * - * DESCRIPTION - * The ASE_MAP_CAPA() macro returns the maximum number of pairs a map can hold. - * - * SYNOPSIS - */ -#define ASE_MAP_CAPA(m) ((m)->capa) -/*****/ - -#define ASE_MAP_MMGR(m) ((m)->mmgr) -#define ASE_MAP_XTN(m) ((void*)(((ase_map_t*)m) + 1)) - -#define ASE_MAP_KCOPIER(m) ((m)->copier[ASE_MAP_KEY]) -#define ASE_MAP_VCOPIER(m) ((m)->copier[ASE_MAP_VAL]) -#define ASE_MAP_KFREEER(m) ((m)->freeer[ASE_MAP_KEY]) -#define ASE_MAP_VFREEER(m) ((m)->freeer[ASE_MAP_VAL]) -#define ASE_MAP_HASHER(m) ((m)->hasher) -#define ASE_MAP_COMPER(m) ((m)->comper) -#define ASE_MAP_KEEPER(m) ((m)->keeper) -#define ASE_MAP_SIZER(m) ((m)->sizer) - -#define ASE_MAP_FACTOR(m) ((m)->factor) -#define ASE_MAP_KSCALE(m) ((m)->scale[ASE_MAP_KEY]) -#define ASE_MAP_VSCALE(m) ((m)->scale[ASE_MAP_VAL]) - -#define ASE_MAP_KPTR(p) ((p)->kptr) -#define ASE_MAP_KLEN(p) ((p)->klen) -#define ASE_MAP_VPTR(p) ((p)->vptr) -#define ASE_MAP_VLEN(p) ((p)->vlen) -#define ASE_MAP_NEXT(p) ((p)->next) - -#ifdef __cplusplus -extern "C" { -#endif - -/****f* ase.cmn.map/ase_map_open - * NAME - * ase_map_open - creates a hash map - * - * DESCRIPTION - * The ase_map_open() function creates a hash map with a dynamic array - * bucket and a list of values chained. The initial capacity should be larger - * than 0. The load factor should be between 0 and 100 inclusive and the load - * factor of 0 disables bucket resizing. If you need extra space associated - * with a map, you may pass a non-zero value as the second parameter. - * The ASE_MAP_XTN() macro and the ase_map_getxtn() function - * return the pointer to the beginning of the extension. - * - * RETURN - * The ase_map_open() function returns an ase_map_t pointer on success and - * ASE_NULL on failure. - * - * SEE ALSO - * ASE_MAP_XTN, ase_map_getxtn - * - * SYNOPSIS - */ -ase_map_t* ase_map_open ( - ase_mmgr_t* mmgr /* a memory manager */, - ase_size_t ext /* extension size in bytes */, - ase_size_t capa /* initial capacity */, - int factor /* load factor */ -); -/******/ - - -/****f* ase.cmn.map/ase_map_close - * NAME - * ase_map_close - destroy a hash map - * - * DESCRIPTION - * The ase_map_close() function destroys a hash map. - * - * SYNOPSIS - */ -void ase_map_close ( - ase_map_t* map /* a map */ -); -/******/ - -ase_map_t* ase_map_init ( - ase_map_t* map, - ase_mmgr_t* mmgr, - ase_size_t capa, - int factor -); - -void ase_map_fini ( - ase_map_t* map -); - -void* ase_map_getxtn ( - ase_map_t* map -); - -ase_mmgr_t* ase_map_getmmgr ( - ase_map_t* map -); - -void ase_map_setmmgr ( - ase_map_t* map, - ase_mmgr_t* mmgr -); - -/* get the number of key/value pairs in a map */ -ase_size_t ase_map_getsize ( - ase_map_t* map /* a map */ -); - -ase_size_t ase_map_getcapa ( - ase_map_t* map /* a map */ -); - -int ase_map_getscale ( - ase_map_t* map /* a map */, - ase_map_id_t id /* ASE_MAP_KEY or ASE_MAP_VAL */ -); - -/****f* ase.cmn.map/ase_map_setscale - * NAME - * ase_map_setscale - set the scale factor - * - * DESCRIPTION - * The ase_map_setscale() function sets the scale factor of the length - * of a key and a value. A scale factor determines the actual length of - * a key and a value in bytes. A map is created with a scale factor of 1. - * The scale factor should be larger than 0 and less than 256. - * - * NOTES - * It is a bad idea to change the scale factor when a map is not empty. - * - * SYNOPSIS - */ -void ase_map_setscale ( - ase_map_t* map /* a map */, - ase_map_id_t id /* ASE_MAP_KEY or ASE_MAP_VAL */, - int scale /* a scale factor */ -); -/******/ - -ase_map_copier_t ase_map_getcopier ( - ase_map_t* map /* a map */, - ase_map_id_t id /* ASE_MAP_KEY or ASE_MAP_VAL */ -); - -/****f* ase.cmn.map/ase_map_setcopier - * NAME - * ase_map_setcopier - specify how to clone an element - * - * DESCRIPTION - * A special copier ASE_MAP_COPIER_INLINE is provided. This copier enables - * you to copy the data inline to the internal node. No freeer is invoked - * when the node is freeed. - * - * You may set the copier to ASE_NULL to perform no special operation - * when the data pointer is rememebered. - * - * SYNOPSIS - */ -void ase_map_setcopier ( - ase_map_t* map /* a map */, - ase_map_id_t id /* ASE_MAP_KEY or ASE_MAP_VAL */, - ase_map_copier_t copier /* an element copier */ -); -/******/ - -ase_map_freeer_t ase_map_getfreeer ( - ase_map_t* map /* a map */, - ase_map_id_t id /* ASE_MAP_KEY or ASE_MAP_VAL */ -); - -/****f* ase.cmn.map/ase_map_setfreeer - * NAME - * ase_map_setfreeer - specify how to destroy an element - * - * DESCRIPTION - * The freeer is called when a node containing the element is destroyed. - * - * SYNOPSIS - */ -void ase_map_setfreeer ( - ase_map_t* map /* a map */, - ase_map_id_t id /* ASE_MAP_KEY or ASE_MAP_VAL */, - ase_map_freeer_t freeer /* an element freeer */ -); -/******/ - - -ase_map_hasher_t ase_map_gethasher ( - ase_map_t* map -); - -void ase_map_sethasher ( - ase_map_t* map, - ase_map_hasher_t hasher -); - -ase_map_comper_t ase_map_getcomper ( - ase_map_t* map -); - -void ase_map_setcomper ( - ase_map_t* map, - ase_map_comper_t comper -); - -ase_map_keeper_t ase_map_getkeeper ( - ase_map_t* map -); - -void ase_map_setkeeper ( - ase_map_t* map, - ase_map_keeper_t keeper -); - -ase_map_sizer_t ase_map_getsizer ( - ase_map_t* map -); - -/* the sizer function is passed a map object and map->capa + 1 */ -void ase_map_setsizer ( - ase_map_t* map, - ase_map_sizer_t sizer -); - -int ase_map_put ( - ase_map_t* map, - void* kptr, - ase_size_t klen, - void* vptr, - ase_size_t vlen, - ase_map_pair_t** px -); - -/****f* ase.cmn.map/ase_map_search - * NAME - * ase_map_search - find a pair with a matching key - * - * DESCRIPTION - * The ase_map_search() function searches a map to find a pair with a - * matching key. It returns the pointer to the pair found. If it fails - * to find one, it returns ASE_NULL. - * - * RETURN - * The ase_map_search() function returns the pointer to the pair with a - * maching key, and ASE_NULL if no match is found. - * - * SYNOPSIS - */ -ase_map_pair_t* ase_map_search ( - ase_map_t* map /* a map */, - const void* kptr /* the pointer to a key */, - ase_size_t klen /* the size of the key in bytes */ -); -/******/ - -/****f* ase.cmn.map/ase_map_upsert - * NAME - * ase_map_upsert - update an existing pair or inesrt a new pair - * - * DESCRIPTION - * The ase_map_upsert() function searches a map for the pair with a matching - * key. If one is found, it updates the pair. Otherwise, it inserts a new - * pair with a key and a value. It returns the pointer to the pair updated - * or inserted. - * - * RETURN - * The ase_map_upsert() function returns a pointer to the updated or inserted - * pair on success, and ASE_NULL on failure. - * - * SYNOPSIS - */ -ase_map_pair_t* ase_map_upsert ( - ase_map_t* map /* a map */, - void* kptr /* the pointer to a key */, - ase_size_t klen /* the length of the key in bytes */, - void* vptr /* the pointer to a value */, - ase_size_t vlen /* the length of the value in bytes */ -); -/******/ - -/****f* ase.cmn.map/ase_map_insert - * NAME - * ase_map_insert - insert a new pair with a key and a value - * - * DESCRIPTION - * The ase_map_insert() function inserts a new pair with the key and the value - * given. If there exists a pair with the key given, the function returns - * ASE_NULL without channging the value. - * - * RETURN - * The ase_map_insert() function returns a pointer to the pair created on - * success, and ASE_NULL on failure. - * - * SYNOPSIS - */ -ase_map_pair_t* ase_map_insert ( - ase_map_t* map /* a map */, - void* kptr /* the pointer to a key */, - ase_size_t klen /* the length of the key in bytes */, - void* vptr /* the pointer to a value */, - ase_size_t vlen /* the length of the value in bytes */ -); -/******/ - -/* update the value of a existing pair with a matching key */ -ase_map_pair_t* ase_map_update ( - ase_map_t* map /* a map */, - void* kptr /* the pointer to a key */, - ase_size_t klen /* the length of the key in bytes */, - void* vptr /* the pointer to a value */, - ase_size_t vlen /* the length of the value in bytes */ -); - -/* delete a pair with a matching key */ -int ase_map_delete ( - ase_map_t* map /* a map */, - const void* kptr /* the pointer to a key */, - ase_size_t klen /* the size of the key in bytes */ -); - -/* clear a map */ -void ase_map_clear ( - ase_map_t* map /* a map */ -); - -/* traverse a map */ -void ase_map_walk ( - ase_map_t* map /* a map */, - ase_map_walker_t walker /* the pointer to the function for each pair */, - void* arg /* a pointer to user-specific data */ -); - -/* get the pointer to the first pair in the map. */ -ase_map_pair_t* ase_map_getfirstpair ( - ase_map_t* map /* a map */, - ase_size_t* buckno -); - -/* get the pointer to the next pair in the map. */ -ase_map_pair_t* ase_map_getnextpair ( - ase_map_t* map /* a map */, - ase_map_pair_t* pair, - ase_size_t* buckno -); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/qse/include/ase/cmn/opt.h b/qse/include/ase/cmn/opt.h deleted file mode 100644 index 7abc882f..00000000 --- a/qse/include/ase/cmn/opt.h +++ /dev/null @@ -1,63 +0,0 @@ -/* - * $Id: getopt.h 290 2008-07-27 06:16:54Z baconevi $ - * - * {License} - */ - -#ifndef _ASE_CMN_OPT_H_ -#define _ASE_CMN_OPT_H_ - -#include -#include - -typedef struct ase_opt_t ase_opt_t; -typedef struct ase_opt_lng_t ase_opt_lng_t; - -struct ase_opt_lng_t -{ - const ase_char_t* str; - ase_cint_t val; -}; - -struct ase_opt_t -{ - /* input */ - const ase_char_t* str; /* option string */ - ase_opt_lng_t* lng; /* long options */ - - /* output */ - ase_cint_t opt; /* character checked for validity */ - ase_char_t* arg; /* argument associated with an option */ - - /* output */ - const ase_char_t* lngopt; - - /* input + output */ - int ind; /* index into parent argv vector */ - - /* input + output - internal*/ - ase_char_t* cur; -}; - -#ifdef __cplusplus -extern "C" { -#endif - -/****f* ase.cmn.opt/ase_getopt - * NAME - * ase_getopt - parse command line options - * - * SYNOPSIS - */ -ase_cint_t ase_getopt ( - int argc /* argument count */, - ase_char_t* const* argv /* argument array */, - ase_opt_t* opt /* option configuration */ -); -/******/ - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/qse/include/ase/cmn/rex.h b/qse/include/ase/cmn/rex.h deleted file mode 100644 index f3fc4030..00000000 --- a/qse/include/ase/cmn/rex.h +++ /dev/null @@ -1,94 +0,0 @@ -/* - * $Id: rex.h 223 2008-06-26 06:44:41Z baconevi $ - * - * {License} - */ - -#ifndef _ASE_CMN_REX_H_ -#define _ASE_CMN_REX_H_ - -#include -#include - -/* - * Regular Esseression Syntax - * A regular expression is zero or more branches, separated by '|'. - * ...... - * ...... - * - * Compiled form of a regular expression: - * - * | expression | - * | header | branch | branch | branch | - * | nb | el | na | bl | cmd | arg | cmd | arg | na | bl | cmd | arg | na | bl | cmd | - * - * nb: the number of branches - * el: the length of a expression including the length of nb and el - * na: the number of atoms - * bl: the length of a branch including the length of na and bl - * cmd: The command and repetition info encoded together. - * Some commands require an argument to follow them but some other don't. - * It is encoded as follows: - * - * Subexpressions can be nested by having the command "GROUP" - * and a subexpression as its argument. - * - * Examples: - * a.c -> |1|6|5|ORD_CHAR(no bound)|a|ANY_CHAR(no bound)|ORD_CHAR(no bound)|c| - * ab|xy -> |2|10|4|ORD_CHAR(no bound)|a|ORD_CHAR(no bound)|b|4|ORD_CHAR(no bound)|x|ORD_CHAR(no bound)|y| - */ - -#define ASE_REX_NA(code) (*(ase_size_t*)(code)) - -#define ASE_REX_LEN(code) \ - (*(ase_size_t*)((ase_byte_t*)(code)+ASE_SIZEOF(ase_size_t))) - -enum ase_rex_option_t -{ - ASE_REX_IGNORECASE = (1 << 0) -}; - -enum ase_rex_errnum_t -{ - ASE_REX_ENOERR = 0, - ASE_REX_ENOMEM, - ASE_REX_ERECUR, /* recursion too deep */ - ASE_REX_ERPAREN, /* a right parenthesis is expected */ - ASE_REX_ERBRACKET, /* a right bracket is expected */ - ASE_REX_ERBRACE, /* a right brace is expected */ - ASE_REX_EUNBALPAR, /* unbalanced parenthesis */ - ASE_REX_ECOLON, /* a colon is expected */ - ASE_REX_ECRANGE, /* invalid character range */ - ASE_REX_ECCLASS, /* invalid character class */ - ASE_REX_EBRANGE, /* invalid boundary range */ - ASE_REX_EEND, /* unexpected end of the pattern */ - ASE_REX_EGARBAGE /* garbage after the pattern */ -}; - -#ifdef __cplusplus -extern "C" { -#endif - -void* ase_buildrex ( - ase_mmgr_t* mmgr, ase_size_t depth, - const ase_char_t* ptn, ase_size_t len, int* errnum); - -int ase_matchrex ( - ase_mmgr_t* mmgr, ase_ccls_t* ccls, ase_size_t depth, - void* code, int option, - const ase_char_t* str, ase_size_t len, - const ase_char_t** match_ptr, ase_size_t* match_len, int* errnum); - -void ase_freerex (ase_mmgr_t* mmgr, void* code); - -ase_bool_t ase_isemptyrex (void* code); - -#if 0 -void ase_dprintrex (ase_rex_t* rex, void* rex); -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/qse/include/ase/cmn/sio.h b/qse/include/ase/cmn/sio.h deleted file mode 100644 index 7e267407..00000000 --- a/qse/include/ase/cmn/sio.h +++ /dev/null @@ -1,142 +0,0 @@ -/* - * $Id: sio.h,v 1.29 2005/12/26 05:38:24 bacon Ease $ - */ - -#ifndef _ASE_CMN_SIO_H_ -#define _ASE_CMN_SIO_H_ - -#include -#include -#include -#include - -enum ase_sio_open_flag_t -{ - ASE_SIO_HANDLE = ASE_FIO_HANDLE, - - ASE_SIO_READ = ASE_FIO_READ, - ASE_SIO_WRITE = ASE_FIO_WRITE, - ASE_SIO_APPEND = ASE_FIO_APPEND, - - ASE_SIO_CREATE = ASE_FIO_CREATE, - ASE_SIO_TRUNCATE = ASE_FIO_TRUNCATE, - ASE_SIO_EXCLUSIVE = ASE_FIO_EXCLUSIVE, - ASE_SIO_SYNC = ASE_FIO_SYNC, - - ASE_SIO_NOSHRD = ASE_FIO_NOSHRD, - ASE_SIO_NOSHWR = ASE_FIO_NOSHWR -}; - -typedef ase_fio_off_t ase_sio_off_t; -typedef ase_fio_hnd_t ase_sio_hnd_t; - -typedef struct ase_sio_t ase_sio_t; - -struct ase_sio_t -{ - ase_mmgr_t* mmgr; - ase_fio_t fio; - ase_tio_t tio; -}; - -#ifdef __cplusplus -extern "C" { -#endif - -extern ase_sio_t* ase_sio_in; -extern ase_sio_t* ase_sio_out; -extern ase_sio_t* ase_sio_err; - -ase_sio_t* ase_sio_open ( - ase_mmgr_t* mmgr, - ase_size_t ext, - const ase_char_t* file, - int flags -); - -void ase_sio_close ( - ase_sio_t* sio -); - -ase_sio_t* ase_sio_init ( - ase_sio_t* sio, - ase_mmgr_t* mmgr, - const ase_char_t* file, - int flags -); - -void ase_sio_fini ( - ase_sio_t* sio -); - -ase_fio_hnd_t ase_sio_gethandle ( - ase_sio_t* sio -); - -ase_ssize_t ase_sio_flush ( - ase_sio_t* sio -); - -void ase_sio_purge ( - ase_sio_t* sio -); - -ase_ssize_t ase_sio_getc ( - ase_sio_t* sio, - ase_char_t* c -); - -ase_ssize_t ase_sio_gets ( - ase_sio_t* sio, - ase_char_t* buf, - ase_size_t size -); - -ase_ssize_t ase_sio_getsx ( - ase_sio_t* sio, - ase_char_t* buf, - ase_size_t size -); - -ase_ssize_t ase_sio_getstr ( - ase_sio_t* sio, - ase_str_t* buf -); - -ase_ssize_t ase_sio_putc ( - ase_sio_t* sio, - ase_char_t c -); - -ase_ssize_t ase_sio_puts ( - ase_sio_t* sio, - const ase_char_t* str -); - -ase_ssize_t ase_sio_putsx ( - ase_sio_t* sio, - const ase_char_t* str, - ase_size_t size -); - -#if 0 -ase_ssize_t ase_sio_putsn (ase_sio_t* sio, ...); -ase_ssize_t ase_sio_putsxn (ase_sio_t* sio, ...); -ase_ssize_t ase_sio_putsv (ase_sio_t* sio, ase_va_list ap); -ase_ssize_t ase_sio_putsxv (ase_sio_t* sio, ase_va_list ap); - -/* WARNING: - * getpos may not return the desired postion because of the buffering - */ -int ase_sio_getpos (ase_sio_t* sio, ase_sio_off_t* pos); -int ase_sio_setpos (ase_sio_t* sio, ase_sio_off_t pos); -int ase_sio_rewind (ase_sio_t* sio); -int ase_sio_movetoend (ase_sio_t* sio); -#endif - - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/qse/include/ase/cmn/sll.h b/qse/include/ase/cmn/sll.h deleted file mode 100644 index 560de581..00000000 --- a/qse/include/ase/cmn/sll.h +++ /dev/null @@ -1,582 +0,0 @@ -/* - * $Id: sll.h 223 2008-06-26 06:44:41Z baconevi $ - * - * {License} - */ - -#ifndef _ASE_CMN_SLL_H_ -#define _ASE_CMN_SLL_H_ - -#include -#include - -/****t* ase.cmn.sll/ase_sll_walk_t - * NAME - * ase_sll_walk_t - define return values for ase_sll_walker_t - * - * SEE ALSO - * ase_sll_walk, ase_sll_walker_t - * - * SYNOPSIS - */ -enum ase_sll_walk_t -{ - ASE_SLL_WALK_STOP = 0, - ASE_SLL_WALK_FORWARD = 1 -}; -/******/ - -typedef struct ase_sll_t ase_sll_t; -typedef struct ase_sll_node_t ase_sll_node_t; -typedef enum ase_sll_walk_t ase_sll_walk_t; - -/****b* ase.cmn.sll/ase_sll_copier_t - * NAME - * ase_sll_copier_t - define a node contruction callback - * - * DESCRIPTION - * The ase_sll_copier_t defines a callback function for node construction. - * A node is contructed when a user adds data to a list. The user can - * define how the data to add can be maintained in the list. A singly - * linked list not specified with any copiers stores the data pointer and - * the data length into a node. A special copier ASE_SLL_COPIER_INLINE copies - * the contents of the data a user provided into the node. You can use the - * ase_sll_setcopier() function to change the copier. - * - * A copier should return the pointer to the copied data. If it fails to copy - * data, it may return ASE_NULL. You need to set a proper freeer to free up - * memory allocated for copy. - * - * SEE ALSO - * ase_sll_setcopier, ase_sll_getcopier, ASE_SLL_COPIER - * - * SYNOPSIS - */ -typedef void* (*ase_sll_copier_t) ( - ase_sll_t* sll /* a map */, - void* dptr /* the pointer to data to copy */, - ase_size_t dlen /* the length of data to copy */ -); -/******/ - -/****b* ase.cmn.sll/ase_sll_freeer_t - * NAME - * ase_sll_freeer_t - define a node destruction callback - * SYNOPSIS - */ -typedef void (*ase_sll_freeer_t) ( - ase_sll_t* sll /* a map */, - void* dptr /* the pointer to data to free */, - ase_size_t dlen /* the length of data to free */ -); -/******/ - -/****t* ase.cmn.sll/ase_sll_comper_t - * NAME - * ase_sll_comper_t - define a data comparator - * - * DESCRIPTION - * The ase_sll_comper_t type defines a key comparator that is called when - * the list needs to compare data. A singly linked list is created with a - * default comparator that performs bitwise comparison. - * - * The comparator should return 0 if the data are the same and a non-zero - * integer otherwise. - * - * SYNOPSIS - */ -typedef int (*ase_sll_comper_t) ( - ase_sll_t* sll /* a singly linked list */, - const void* dptr1 /* a data pointer */, - ase_size_t dlen1 /* a data length */, - const void* dptr2 /* a data pointer */, - ase_size_t dlen2 /* a data length */ -); -/******/ - -/****b* ase.cmn.sll/ase_sll_walker_t - * NAME - * ase_sll_walker_t - define a list traversal callback for each node - * - * DESCRIPTION - * The ase_sll_walk() calls a callback function of the type ase_sll_walker_t - * for each node until it returns ASE_SLL_WALK_STOP. The walker should return - * ASE_SLL_WALK_FORWARD to let ase_sll_walk() continue visiting the next node. - * The third parameter to ase_sll_walk() is passed to the walker as the third - * parameter. - * - * SEE ALSO - * ase_sll_walk, ase_sll_walk_t - * - * SYNOPSIS - */ -typedef ase_sll_walk_t (*ase_sll_walker_t) ( - ase_sll_t* sll /* a map */, - ase_sll_node_t* node /* a visited node */, - void* arg /* user-defined data */ -); -/******/ - -/****s* ase.cmn.sll/ase_sll_t - * NAME - * ase_sll_t - define a singly linked list - * - * DESCRPTION - * The ase_sll_t type defines a singly lnked list. - * - * SYNOPSIS - */ -struct ase_sll_t -{ - ase_mmgr_t* mmgr; /* memory manager */ - - ase_sll_copier_t copier; /* data copier */ - ase_sll_freeer_t freeer; /* data freeer */ - ase_sll_comper_t comper; /* data comparator */ - ase_byte_t scale; /* scale factor */ - - ase_size_t size; /* the number of nodes */ - ase_sll_node_t* head; /* the head node */ - ase_sll_node_t* tail; /* the tail node */ -}; -/******/ - -/****s* ase.cmn.sll/ase_sll_node_t - * NAME - * ase_sll_node_t - define a list node - * - * DESCRIPTION - * The ase_sll_node_t type defines a list node containing a data pointer and - * and data length. - * - * SEE ALSO - * ASE_SLL_DPTR, ASE_SLL_DLEN, ASE_SLL_NEXT - * - * SYNOPSIS - */ -struct ase_sll_node_t -{ - void* dptr; /* the pointer to data */ - ase_size_t dlen; /* the length of data */ - ase_sll_node_t* next; /* the pointer to the next node */ -}; -/******/ - -#define ASE_SLL_COPIER_SIMPLE ((ase_sll_copier_t)1) -#define ASE_SLL_COPIER_INLINE ((ase_sll_copier_t)2) - -#define ASE_SLL_MMGR(sll) ((sll)->mmgr) -#define ASE_SLL_XTN(s) ((void*)(((ase_sll_t*)s) + 1)) -#define ASE_SLL_COPIER(sll) ((sll)->copier) -#define ASE_SLL_FREEER(sll) ((sll)->freeer) -#define ASE_SLL_COMPER(sll) ((sll)->comper) - -#define ASE_SLL_HEAD(sll) ((sll)->head) -#define ASE_SLL_TAIL(sll) ((sll)->tail) -#define ASE_SLL_SIZE(sll) ((sll)->size) -#define ASE_SLL_SCALE(sll) ((sll)->scale) - -#define ASE_SLL_DPTR(node) ((node)->dptr) -#define ASE_SLL_DLEN(node) ((node)->dlen) -#define ASE_SLL_NEXT(node) ((node)->next) - -#ifdef __cplusplus -extern "C" { -#endif - -/****f* ase.cmn.sll/ase_sll_open - * NAME - * ase_sll_open - create a singly linked list with extension area - * - * DESCRIPTION - * The ase_sll_open() function creates an empty singly linked list. - * If the memory manager mmgr is ASE_NULL, the function gets the default - * memory manager with ASE_MMGR_GETMMGR() and uses it if it is not ASE_NULL. - * The extension area is allocated when the positive extension size extension - * is specified. It calls the extension initialization function initializer - * after initializing the main area. The extension initializer is passed - * the pointer to the singly linked list created. - * - * RETURN - * The ase_sll_open() function returns the pointer to a new singly linked - * list on success and ASE_NULL on failure. - * - * NOTES - * In the debug build, it fails an assertion if ASE_MMGR_GETMMGR() returns - * ASE_NULL when ASE_NULL is passed as the first parameter. In the release - * build, it returns ASE_NULL if such a thing happens. - * - * SYNOPSIS - */ -ase_sll_t* ase_sll_open ( - ase_mmgr_t* mmgr /* memory manager */ , - ase_size_t ext /* size of extension area in bytes */ -); -/******/ - -/****f* ase.cmn.sll/ase_sll_close - * NAME - * ase_sll_close - destroy a singly linked list - * - * DESCRIPTION - * The ase_sll_close() function destroys a singly linked list freeing up - * the memory. - * - * SYNOPSIS - */ -void ase_sll_close ( - ase_sll_t* sll /* a singly linked list */ -); -/******/ - -/****f* ase.cmn.sll/ase_sll_init - * NAME - * ase_sll_init - initialize a singly linked list - * - * DESCRIPTION - * The ase_sll_init() function initializes a singly linked list. The memory - * should be allocated by a caller and be passed to it. The caller may declare - * a static variable of the ase_sll_t type and pass its address. A memory - * manager still needs to be passed for node manipulation later. - * - * RETURN - * The ase_sll_init() function returns the first parameter on success and - * ASE_NULL on failure. - * - * SYNOPSIS - */ -ase_sll_t* ase_sll_init ( - ase_sll_t* sll /* an uninitialized singly linked list */, - ase_mmgr_t* mmgr /* a memory manager */ -); -/******/ - -/****f* ase.cmn.sll/ase_sll_fini - * NAME - * ase_sll_init - deinitialize a singly linked list - * - * SYNOPSIS - */ -void ase_sll_fini ( - ase_sll_t* sll /* a singly linked list */ -); -/******/ - -/****f* ase.cmn.sll/ase_sll_getxtn - * NAME - * ase_sll_getxtn - get the pointer to the extension - * - * DESCRIPTION - * The ase_sll_getxtn() function returns the pointer to the extension. - * - * SYNOPSIS - */ -void* ase_sll_getxtn ( - ase_sll_t* sll /* a singly linked list */ -); -/******/ - -/****f* ase.cmn.sll/ase_sll_getmmgr - * NAME - * ase_sll_getmmgr - get the memory manager - * - * SYNOPSIS - */ -ase_mmgr_t* ase_sll_getmmgr ( - ase_sll_t* sll /* a singly linked list */ -); -/******/ - -/****f* ase.cmn.sll/ase_sll_setmmgr - * NAME - * ase_sll_setmmgr - set the memory manager - * - * SYNOPSIS - */ -void ase_sll_setmmgr ( - ase_sll_t* sll /* a singly linked list */, - ase_mmgr_t* mmgr /* a memory manager */ -); -/******/ - -/****f* ase.cmn.sll/ase_sll_getsize - * NAME - * ase_sll_getsize - get the number of nodes - * - * DESCRIPTION - * The ase_sll_getsize() function returns the number of the data nodes held - * in a singly linked list. - * - * SYNOPSIS - */ -ase_size_t ase_sll_getsize ( - ase_sll_t* sll /* a singly linked list */ -); -/******/ - - -/****f* ase.cmn.sll/ase_sll_getscale - * NAME - * ase_sll_getscale - get the scale factor - * - * SYNOPSIS - */ -int ase_sll_getscale ( - ase_sll_t* sll /* a singly linked list */ -); -/******/ - -/****f* ase.cmn.sll/ase_sll_setscale - * NAME - * ase_sll_setscale - set the scale factor - * - * DESCRIPTION - * The ase_sll_setscale() function sets the scale factor of the data length. - * A scale factor determines the actual length of data in bytes. A singly - * linked list created with a scale factor of 1. The scale factor should be - * larger than 0 and less than 256. - * - * NOTES - * It is a bad idea to change the scale factor when a sll is not empty. - * - * SYNOPSIS - */ -void ase_sll_setscale ( - ase_sll_t* sll /* a singly linked list */, - int scale /* a scale factor */ -); -/******/ - -/****f* ase.cmn.sll/ase_sll_getcopier - * NAME - * ase_sll_getfreeer - get the data copier - * - * SYNOPSIS - */ -ase_sll_copier_t ase_sll_getcopier ( - ase_sll_t* sll /* a singly linked list */ -); -/******/ - -/****f* ase.cmn.sll/ase_sll_setcopier - * NAME - * ase_sll_setcopier - set a data copier - * - * DESCRIPTION - * A special copier ASE_SLL_COPIER_INLINE is provided. This copier enables - * you to copy the data inline to the internal node. No freeer is invoked - * when the node is freeed. - * - * You may set the copier to ASE_NULL to perform no special operation - * when the data pointer is rememebered. - * - * SYNOPSIS - */ -void ase_sll_setcopier ( - ase_sll_t* sll /* a singly linked list */, - ase_sll_copier_t copier /* a data copier */ -); -/******/ - -/****f* ase.cmn.sll/ase_sll_getfreeer - * NAME - * ase_sll_getfreeer - get the data freeer - * - * SYNOPSIS - */ -ase_sll_freeer_t ase_sll_getfreeer ( - ase_sll_t* sll /* a singly linked list */ -); -/******/ - -/****f* ase.cmn.sll/ase_sll_setfreeer - * NAME - * ase_sll_setfreeer - set a data freeer - * - * DESCRIPTION - * The freeer is called when a node containing the element is destroyed. - * - * SYNOPSIS - */ -void ase_sll_setfreeer ( - ase_sll_t* sll /* a singly linked list */, - ase_sll_freeer_t freeer /* a data freeer */ -); -/******/ - -/****f* ase.cmn.sll/ase_sll_getcomper - * NAME - * ase_sll_getcomper - get the data comparator - * - * SYNOPSIS - */ -ase_sll_comper_t ase_sll_getcomper ( - ase_sll_t* sll /* a singly linked list */ -); -/******/ - -/****f* ase.cmn.sll/ase_sll_setcomper - * NAME - * ase_sll_setcomper - set the data comparator - * - * SYNOPSIS - */ -void ase_sll_setcomper ( - ase_sll_t* sll /* a singly linked list */, - ase_sll_comper_t comper /* a comparator */ -); -/******/ - -/****f* ase.cmn.sll/ase_sll_gethead - * NAME - * ase_sll_gethead - get the head node - * - * SYNOPSIS - */ -ase_sll_node_t* ase_sll_gethead ( - ase_sll_t* sll /* a singly linked list */ -); -/******/ - -/****f* ase.cmn.sll/ase_sll_gettail - * NAME - * ase_sll_gettail - get the tail node - * - * SYNOPSIS - */ -ase_sll_node_t* ase_sll_gettail ( - ase_sll_t* sll /* a singly linked list */ -); -/******/ - -/****f* ase.cmn.sll/ase_sll_search - * NAME - * ase_sll_search - find a node - * - * DESCRIPTION - * The ase_sll_search() function traverses a list to find a node containing - * the same value as the the data pointer and length. The traversal begins - * from the next node of the positional node. If the positional node is - * ASE_NULL, the traversal begins from the head node. - * - * RETURN - * The pointer to the node found. Otherwise, ASE_NULL. - * - * NOTES - * No reverse search is provided because a reverse traversal can not be - * achieved efficiently. - * - * SYNOPSIS - */ -ase_sll_node_t* ase_sll_search ( - ase_sll_t* sll /* a singly linked list */, - ase_sll_node_t* pos /* a positional node */, - const void* dptr /* a data pointer */, - ase_size_t dlen /* a data length */ -); -/******/ - -/****f* ase.cmn.sll/ase_sll_insert - * NAME - * ase_sll_insert - insert data to a new node - * - * DESCRIPTION - * There is performance penalty unless the positional node is neither - * the head node nor ASE_NULL. You should consider a different data - * structure such as a doubly linked list if you need to insert data - * into a random position. - * - * RETURN - * The pointer to a new node on success and ASE_NULL on failure:w - * - * SYNOPSIS - */ -ase_sll_node_t* ase_sll_insert ( - ase_sll_t* sll /* a singly linked list */, - ase_sll_node_t* pos /* a node before which a new node is inserted */, - void* dptr /* the pointer to the data */, - ase_size_t dlen /* the length of the data */ -); -/******/ - -/****f* ase.cmn.sll/ase_sll_delete - * NAME - * ase_sll_delete - delete a node - * - * DESCRIPTION - * The ase_sll_delete() function deletes a node. - * - * SYNOPSIS - */ -void ase_sll_delete ( - ase_sll_t* sll /* a singly linked list */, - ase_sll_node_t* pos /* a node to delete */ -); -/******/ - -/****f* ase.cmn.sll/ase_sll_clear - * NAME - * ase_sll_clear - delete all nodes - * - * DESCRIPTION - * The ase_sll_clear() function empties a singly linked list by deletinng - * all the nodes. - * - * SYNOPSIS - */ -void ase_sll_clear ( - ase_sll_t* sll /* a singly linked list */ -); -/******/ - -ase_sll_node_t* ase_sll_pushhead ( - ase_sll_t* sll /* a singly linked list */, - void* dptr, - ase_size_t dlen -); - -ase_sll_node_t* ase_sll_pushtail ( - ase_sll_t* sll /* a singly linked list */, - void* dptr, - ase_size_t dlen -); - - -void ase_sll_pophead ( - ase_sll_t* sll -); - -void ase_sll_poptail ( - ase_sll_t* sll -); - -/****f* ase.cmn.sll/ase_sll_walk - * NAME - * ase_sll_walk - traverse s singly linked list - * - * DESCRIPTION - * A singly linked list allows uni-directional in-order traversal. - * The ase_sll_walk() function traverses a singly linkked list from its - * head node down to its tail node as long as the walker function returns - * ASE_SLL_WALK_FORWARD. A walker can return ASE_SLL_WALK_STOP to cause - * immediate stop of traversal. - * - * For each node, the walker function is called and it is passed three - * parameters: the singly linked list, the visiting node, and the - * user-defined data passed as the third parameter in a call to the - * ase_sll_walk() function. - * - * SYNOPSIS - */ -void ase_sll_walk ( - ase_sll_t* sll /* a singly linked list */, - ase_sll_walker_t walker /* a user-defined walker function */, - void* arg /* the pointer to user-defined data */ -); -/******/ - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/qse/include/ase/cmn/str.h b/qse/include/ase/cmn/str.h deleted file mode 100644 index 26aa5ff6..00000000 --- a/qse/include/ase/cmn/str.h +++ /dev/null @@ -1,476 +0,0 @@ -/* - * $Id: str.h 496 2008-12-15 09:56:48Z baconevi $ - * - * {License} - */ - -#ifndef _ASE_CMN_STR_H_ -#define _ASE_CMN_STR_H_ - -#include -#include - -/****o* ase.cmn.str/string - * DESCRIPTION - * defines various functions, types, macros to manipulate - * strings. - * - * The ase_cstr_t type and the ase_xstr_t defined in ase/types.h helps you - * dealing with a string pointer and length. - * - * #include - * - * EXAMPLES - * void f (void) - * { - * } - ****** - */ - - -#define ASE_STR_LEN(s) ((s)->len) -#define ASE_STR_PTR(s) ((s)->ptr) -#define ASE_STR_CAPA(s) ((s)->capa) -#define ASE_STR_CHAR(s,idx) ((s)->ptr[idx]) - -#define ASE_STR_MMGR(s) ((s)->mmgr) -#define ASE_STR_XTN(s) ((void*)(((ase_str_t*)s) + 1)) -#define ASE_STR_SIZER(s) ((s)->sizer) - -typedef struct ase_str_t ase_str_t; -typedef ase_size_t (*ase_str_sizer_t) (ase_str_t* data, ase_size_t hint); - -struct ase_str_t -{ - ase_mmgr_t* mmgr; - ase_str_sizer_t sizer; - - ase_char_t* ptr; - ase_size_t len; - ase_size_t capa; -}; - -/* int ase_chartonum (ase_char_t c, int base) */ -#define ASE_CHARTONUM(c,base) \ - ((c>=ASE_T('0') && c<=ASE_T('9'))? ((c-ASE_T('0')=ASE_T('A') && c<=ASE_T('Z'))? ((c-ASE_T('A')+10=ASE_T('a') && c<=ASE_T('z'))? ((c-ASE_T('a')+10 0) value *= -1; \ -} - -/* ase_strxtonum (const ase_char_t* nptr, ase_size_t len, ase_char_char** endptr, int base) */ -#define ASE_STRXTONUM(value,nptr,len,endptr,base) \ -{ \ - int __ston_f = 0, __ston_v; \ - const ase_char_t* __ston_ptr = nptr; \ - const ase_char_t* __ston_end = __ston_ptr + len; \ - value = 0; \ - while (__ston_ptr < __ston_end) { \ - ase_char_t __ston_c = *__ston_ptr; \ - if (__ston_c == ASE_T(' ') || __ston_c == ASE_T('\t')) { \ - __ston_ptr++; continue; \ - } \ - if (__ston_c == ASE_T('-')) { __ston_f++; __ston_ptr++; } \ - if (__ston_c == ASE_T('+')) { __ston_ptr++; } \ - break; \ - } \ - for (value = 0; __ston_ptr < __ston_end && \ - (__ston_v = ASE_CHARTONUM(*__ston_ptr, base)) != base; __ston_ptr++) { \ - value = value * base + __ston_v; \ - } \ - if (endptr != ASE_NULL) *((const ase_char_t**)endptr) = __ston_ptr; \ - if (__ston_f > 0) value *= -1; \ -} - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * basic string functions - */ -ase_size_t ase_strlen (const ase_char_t* str); -ase_size_t ase_strbytes (const ase_char_t* str); - -ase_size_t ase_strcpy ( - ase_char_t* buf, const ase_char_t* str); -ase_size_t ase_strxcpy ( - ase_char_t* buf, ase_size_t bsz, const ase_char_t* str); -ase_size_t ase_strncpy ( - ase_char_t* buf, const ase_char_t* str, ase_size_t len); -ase_size_t ase_strxncpy ( - ase_char_t* buf, ase_size_t bsz, const ase_char_t* str, ase_size_t len); - -ase_size_t ase_strxcat ( - ase_char_t* buf, ase_size_t bsz, const ase_char_t* str); -ase_size_t ase_strxncat ( - ase_char_t* buf, ase_size_t bsz, const ase_char_t* str, ase_size_t len); - -int ase_strcmp (const ase_char_t* s1, const ase_char_t* s2); -int ase_strxcmp (const ase_char_t* s1, ase_size_t len1, const ase_char_t* s2); -int ase_strxncmp ( - const ase_char_t* s1, ase_size_t len1, - const ase_char_t* s2, ase_size_t len2); - -int ase_strcasecmp ( - const ase_char_t* s1, const ase_char_t* s2, ase_ccls_t* ccls); - -/****f* ase.cmn.str/ase_strxncasecmp - * NAME - * ase_strxncasecmp - compare strings ignoring case - * - * DESCRIPTION - * The ase_strxncasecmp() function compares characters at the same position - * in each string after converting them to the same case temporarily. - * It accepts two strings and a character class handler. A string is - * represented by its beginning pointer and length. You can write your own - * character class handler or use ASE_CCLS_GETDFL() to get the default - * character class handler. - * - * For two strings to be equal, they need to have the same length and all - * characters in the first string should be equal to their counterpart in the - * second string. - * - * RETURN - * The ase_strxncasecmp() returns 0 if two strings are equal, a positive - * number if the first string is larger, -1 if the second string is larger. - * - * EXAMPLES - * ase_strxncasecmp (ASE_T("foo"), 3, ASE_T("FoO"), 3, ASE_CCLS_GETDFL()); - * - * SYNOPSIS - */ -int ase_strxncasecmp ( - const ase_char_t* s1 /* the pointer to the first string */, - ase_size_t len1 /* the length of the first string */, - const ase_char_t* s2 /* the pointer to the second string */, - ase_size_t len2 /* the length of the second string */, - ase_ccls_t* ccls /* character class handler */ -); -/******/ - -ase_char_t* ase_strdup (const ase_char_t* str, ase_mmgr_t* mmgr); -ase_char_t* ase_strxdup ( - const ase_char_t* str, ase_size_t len, ase_mmgr_t* mmgr); -ase_char_t* ase_strxdup2 ( - const ase_char_t* str1, ase_size_t len1, - const ase_char_t* str2, ase_size_t len2, ase_mmgr_t* mmgr); - -ase_char_t* ase_strstr (const ase_char_t* str, const ase_char_t* sub); -ase_char_t* ase_strxstr ( - const ase_char_t* str, ase_size_t size, const ase_char_t* sub); -ase_char_t* ase_strxnstr ( - const ase_char_t* str, ase_size_t strsz, - const ase_char_t* sub, ase_size_t subsz); - -ase_char_t* ase_strchr (const ase_char_t* str, ase_cint_t c); -ase_char_t* ase_strxchr (const ase_char_t* str, ase_size_t len, ase_cint_t c); -ase_char_t* ase_strrchr (const ase_char_t* str, ase_cint_t c); -ase_char_t* ase_strxrchr (const ase_char_t* str, ase_size_t len, ase_cint_t c); - -/* Checks if a string begins with a substring */ -ase_char_t* ase_strbeg (const ase_char_t* str, const ase_char_t* sub); -ase_char_t* ase_strxbeg ( - const ase_char_t* str, ase_size_t len, const ase_char_t* sub); -ase_char_t* ase_strnbeg ( - const ase_char_t* str, const ase_char_t* sub, ase_size_t len); -ase_char_t* ase_strxnbeg ( - const ase_char_t* str, ase_size_t len1, - const ase_char_t* sub, ase_size_t len2); - -/* Checks if a string ends with a substring */ -ase_char_t* ase_strend (const ase_char_t* str, const ase_char_t* sub); -ase_char_t* ase_strxend ( - const ase_char_t* str, ase_size_t len, const ase_char_t* sub); -ase_char_t* ase_strnend ( - const ase_char_t* str, const ase_char_t* sub, ase_size_t len); -ase_char_t* ase_strxnend ( - const ase_char_t* str, ase_size_t len1, - const ase_char_t* sub, ase_size_t len2); - -/* - * string conversion - */ -int ase_strtoi (const ase_char_t* str); -long ase_strtol (const ase_char_t* str); -unsigned int ase_strtoui (const ase_char_t* str); -unsigned long ase_strtoul (const ase_char_t* str); - -int ase_strxtoi (const ase_char_t* str, ase_size_t len); -long ase_strxtol (const ase_char_t* str, ase_size_t len); -unsigned int ase_strxtoui (const ase_char_t* str, ase_size_t len); -unsigned long ase_strxtoul (const ase_char_t* str, ase_size_t len); - -ase_int_t ase_strtoint (const ase_char_t* str); -ase_long_t ase_strtolong (const ase_char_t* str); -ase_uint_t ase_strtouint (const ase_char_t* str); -ase_ulong_t ase_strtoulong (const ase_char_t* str); - -ase_int_t ase_strxtoint (const ase_char_t* str, ase_size_t len); -ase_long_t ase_strxtolong (const ase_char_t* str, ase_size_t len); -ase_uint_t ase_strxtouint (const ase_char_t* str, ase_size_t len); -ase_ulong_t ase_strxtoulong (const ase_char_t* str, ase_size_t len); - -ase_str_t* ase_str_open ( - ase_mmgr_t* mmgr, - ase_size_t ext, - ase_size_t capa -); - -void ase_str_close ( - ase_str_t* str -); - -/* - * If capa is 0, it doesn't allocate the buffer in advance. - */ -ase_str_t* ase_str_init ( - ase_str_t* str, - ase_mmgr_t* mmgr, - ase_size_t capa -); - -void ase_str_fini ( - ase_str_t* str -); - -/****f* ase.cmn.str/ase_str_yield - * NAME - * ase_str_yield - yield the buffer - * - * DESCRIPTION - * The ase_str_yield() function assigns the buffer to an variable of the - * ase_xstr_t type and recreate a new buffer of the new_capa capacity. - * The function fails if it fails to allocate a new buffer. - * - * RETURN - * The ase_str_yield() function returns 0 on success, and -1 on failure. - * - * SYNOPSIS - */ -int ase_str_yield ( - ase_str_t* str /* a dynamic string */, - ase_xstr_t* buf /* the pointer to a ase_xstr_t variable */, - int new_capa /* new capacity in number of characters */ -); -/******/ - -void* ase_str_getxtn ( - ase_str_t* str -); - -ase_mmgr_t* ase_str_getmmgr ( - ase_str_t* str -); - -void ase_str_setmmgr ( - ase_str_t* str, - ase_mmgr_t* mmgr -); - -/* - * NAME: get the sizer - * - * DESCRIPTION: - * The ase_str_getsizer() function returns the sizer specified. - * - * RETURNS: a sizer function set or ASE_NULL if no sizer is set. - */ -ase_str_sizer_t ase_str_getsizer ( - ase_str_t* str /* a dynamic string */ -); - -/* - * NAME: specify a sizer - * - * DESCRIPTION: - * The ase_str_setsizer() function specify a new sizer for a dynamic string. - * With no sizer specified, the dynamic string doubles the current buffer - * when it needs to increase its size. The sizer function is passed a dynamic - * string and the minimum capacity required to hold data after resizing. - * The string is truncated if the sizer function returns a smaller number - * than the hint passed. - */ -void ase_str_setsizer ( - ase_str_t* str /* a dynamic string */, - ase_str_sizer_t sizer /* a sizer function */ -); - -/* - * NAME: get capacity - * - * DESCRIPTION: - * The ase_str_getcapa() function returns the current capacity. - * You may use ASE_STR_CAPA(str) macro for performance sake. - * - * RETURNS: the current capacity in number of characters. - */ -ase_size_t ase_str_getcapa ( - ase_str_t* str /* a dynamic string */ -); - -/* - * NAME: set new capacity - * - * DESCRIPTION: - * The ase_str_setcapa() function set new capacity. If the new capacity - * is smaller than the old, the overflowing characters are removed from - * from the buffer. - * - * RETURNS: -1 on failure, a new capacity on success - */ -ase_size_t ase_str_setcapa ( - ase_str_t* str /* a dynamic string */, - ase_size_t capa /* a new capacity */ -); - -void ase_str_clear ( - ase_str_t* str -); - -void ase_str_swap ( - ase_str_t* str, - ase_str_t* str2 -); - -ase_size_t ase_str_cpy ( - ase_str_t* str, - const ase_char_t* s -); - -ase_size_t ase_str_ncpy ( - ase_str_t* str, - const ase_char_t* s, - ase_size_t len -); - -ase_size_t ase_str_cat ( - ase_str_t* str, - const ase_char_t* s -); - -ase_size_t ase_str_ncat ( - ase_str_t* str, - const ase_char_t* s, - ase_size_t len -); - -ase_size_t ase_str_ccat ( - ase_str_t* str, - ase_char_t c -); - -ase_size_t ase_str_nccat ( - ase_str_t* str, - ase_char_t c, - ase_size_t len -); - - -ase_size_t ase_mbstowcs ( - const ase_mchar_t* mbs, - ase_wchar_t* wcs, - ase_size_t* wcslen -); - -/****f* ase.cmn.str/ase_mbsntowcsn - * NAME - * ase_mbsntowcsn - convert a multibyte string to a wide character string - * - * RETURN - * The ase_mbstowcs() function returns the number of bytes handled. - * - * SYNOPSIS - */ -ase_size_t ase_mbsntowcsn ( - const ase_mchar_t* mbs, - ase_size_t mbslen, - ase_wchar_t* wcs, - ase_size_t* wcslen -); -/******/ - -/****f* ase.cmn.str/ase_wcstombs - * NAME - * ase_wcstombs - convert a wide character string to a multibyte string. - * - * DESCRIPTION - * The ase_wcstombs() function converts a null-terminated wide character - * string to a multibyte string and stores it into the buffer pointed to - * by mbs. The pointer to a variable holding the buffer length should be - * passed to the function as the third parameter. After conversion, it holds - * the length of the multibyte string excluding the terminating-null. - * It may not null-terminate the resulting multibyte string if the buffer - * is not large enough. - * - * RETURN - * The ase_wcstombs() function returns the number of wide characters handled. - * - * SYNOPSIS - */ -ase_size_t ase_wcstombs ( - const ase_wchar_t* wcs, - ase_mchar_t* mbs, - ase_size_t* mbslen -); - -/****f* ase.cmn.str/ase_wcsntombsn - * NAME - * ase_wcstombs - convert a wide character string to a multibyte string - * - * RETURN - * The ase_wcstombs() function returns the number of wide characters handled. - * - * SYNOPSIS - */ -ase_size_t ase_wcsntombsn ( - const ase_wchar_t* wcs, - ase_size_t wcslen, - ase_mchar_t* mbs, - ase_size_t* mbslen -); -/******/ - -/****f* ase.cmn.str/ase_wcstombs_strict - * NAME - * ase_wcstombs_strict - convert a wide character string to a multibyte string. - * - * DESCRIPTION - * The ase_wcstombs_strict() function performs the same as the ase_wcsmbs() - * function except that it returns an error if it can't fully convert the - * input string and/or the buffer is not large enough. - * - * RETURN - * The ase_wcstombs_strict() function returns 0 on success and -1 on failure. - * SYNOPSIS - */ -int ase_wcstombs_strict ( - const ase_wchar_t* wcs, - ase_mchar_t* mbs, - ase_size_t mbslen -); -/******/ - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/qse/include/ase/cmn/time.h b/qse/include/ase/cmn/time.h deleted file mode 100644 index 14531f72..00000000 --- a/qse/include/ase/cmn/time.h +++ /dev/null @@ -1,134 +0,0 @@ -/* - * $Id$ - */ - -#ifndef _ASE_CMN_TIME_H_ -#define _ASE_CMN_TIME_H_ - -#include -#include - -#define ASE_EPOCH_YEAR ((ase_ntime_t)1970) -#define ASE_EPOCH_MON ((ase_ntime_t)1) -#define ASE_EPOCH_DAY ((ase_ntime_t)1) -#define ASE_EPOCH_WDAY ((ase_ntime_t)4) - -#define ASE_DAY_IN_WEEK ((ase_ntime_t)7) -#define ASE_MON_IN_YEAR ((ase_ntime_t)12) -#define ASE_HOUR_IN_DAY ((ase_ntime_t)24) -#define ASE_MIN_IN_HOUR ((ase_ntime_t)60) -#define ASE_MIN_IN_DAY (ASE_MIN_IN_HOUR * ASE_HOUR_IN_DAY) -#define ASE_SEC_IN_MIN ((ase_ntime_t)60) -#define ASE_SEC_IN_HOUR (ASE_SEC_IN_MIN * ASE_MIN_IN_HOUR) -#define ASE_SEC_IN_DAY (ASE_SEC_IN_MIN * ASE_MIN_IN_DAY) -#define ASE_MSEC_IN_SEC ((ase_ntime_t)1000) -#define ASE_MSEC_IN_MIN (ASE_MSEC_IN_SEC * ASE_SEC_IN_MIN) -#define ASE_MSEC_IN_HOUR (ASE_MSEC_IN_SEC * ASE_SEC_IN_HOUR) -#define ASE_MSEC_IN_DAY (ASE_MSEC_IN_SEC * ASE_SEC_IN_DAY) - -#define ASE_USEC_IN_MSEC ((ase_ntime_t)1000) -#define ASE_NSEC_IN_USEC ((ase_ntime_t)1000) -#define ASE_USEC_IN_SEC ((ase_ntime_t)ASE_USEC_IN_MSEC * ASE_MSEC_IN_SEC) - -#define ASE_IS_LEAPYEAR(year) (!((year)%4) && (((year)%100) || !((year)%400))) -#define ASE_DAY_IN_YEAR(year) (ASE_IS_LEAPYEAR(year)? 366: 365) - -/* number of milliseconds since the Epoch (00:00:00 UTC, Jan 1, 1970) */ -typedef ase_long_t ase_ntime_t; -typedef struct ase_btime_t ase_btime_t; - -struct ase_btime_t -{ - int sec; /* 0-61 */ - int min; /* 0-59 */ - int hour; /* 0-23 */ - int mday; /* 1-31 */ - int mon; /* 0(jan)-11(dec) */ - int year; /* the number of years since 1900 */ - int wday; /* 0(sun)-6(sat) */ - int yday; /* 0(jan 1) to 365 */ - int isdst; -}; - -#ifdef __cplusplus -extern "C" { -#endif - -/****f* ase.cmn/ase_gettime - * NAME - * ase_gettime - get the current time - * - * SYNPOSIS - */ -int ase_gettime ( - ase_ntime_t* nt -); -/******/ - -/****f* ase.cmn/ase_settime - * NAME - * ase_settime - set the current time - * - * SYNOPSIS - */ -int ase_settime ( - ase_ntime_t nt -); -/******/ - - -/****f* ase.cmn/ase_gmtime - * NAME - * ase_gmtime - convert numeric time to broken-down time - * - * SYNOPSIS - */ -void ase_gmtime ( - ase_ntime_t nt, - ase_btime_t* bt -); -/******/ - -/****f* ase.cmn/ase_localtime - * NAME - * ase_localtime - convert numeric time to broken-down time - * - * SYNOPSIS - */ -int ase_localtime ( - ase_ntime_t nt, - ase_btime_t* bt -); -/******/ - -/****f* ase.cmn/ase_mktime - * NAME - * ase_mktime - convert broken-down time to numeric time - * - * SYNOPSIS - */ -int ase_mktime ( - const ase_btime_t* bt, - ase_ntime_t* nt -); -/******/ - -/****f* ase.cmn/ase_strftime - * NAME - * ase_strftime - format time - * - * SYNOPSIS - */ -ase_size_t ase_strftime ( - ase_char_t* buf, - ase_size_t size, - const ase_char_t* fmt, - ase_btime_t* bt -); -/******/ - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/qse/include/ase/cmn/tio.h b/qse/include/ase/cmn/tio.h deleted file mode 100644 index 4eea9bf9..00000000 --- a/qse/include/ase/cmn/tio.h +++ /dev/null @@ -1,299 +0,0 @@ -/* - * $Id: tio.h,v 1.19 2006/01/01 13:50:24 bacon Exp $ - */ - -#ifndef _ASE_CMN_TIO_H_ -#define _ASE_CMN_TIO_H_ - -#include -#include -#include - -enum -{ - ASE_TIO_ENOERR = 0, - ASE_TIO_ENOMEM, /* out of memory */ - ASE_TIO_ENOSPC, /* no more space */ - ASE_TIO_EILSEQ, /* illegal sequence */ - ASE_TIO_EICSEQ, /* incomplete sequence */ - ASE_TIO_EILCHR, /* illegal character */ - ASE_TIO_ENOINF, /* no input function attached */ - ASE_TIO_EINPUT, /* input function returned an error */ - ASE_TIO_EINPOP, /* input function failed to open */ - ASE_TIO_EINPCL, /* input function failed to close */ - ASE_TIO_ENOUTF, /* no output function attached */ - ASE_TIO_EOUTPT, /* output function returned an error */ - ASE_TIO_EOUTOP, /* output function failed to open */ - ASE_TIO_EOUTCL /* output function failed to close */ -}; - -enum -{ - /* the size of input buffer should be at least equal to or greater - * than the maximum sequence length of the ase_mchar_t string. - * (i.e. 6 for utf8) - */ - ASE_TIO_MAX_INBUF_LEN = 4096, - ASE_TIO_MAX_OUTBUF_LEN = 4096 -}; - -enum -{ - ASE_TIO_IO_OPEN, - ASE_TIO_IO_CLOSE, - ASE_TIO_IO_DATA -}; - - -#define ASE_TIO_MMGR(tio) ((tio)->mmgr) -#define ASE_TIO_XTN(s) ((void*)(((ase_tio_t*)s) + 1)) -#define ASE_TIO_ERRNUM(tio) ((tio)->errnum) - -/* - * TYPE: ase_tio_t - * Defines the tio type - * - * DESCRIPTION: - * defines a generic type for text-based IO. When ase_char_t is - * ase_mchar_t, it handles any byte streams. When ase_char_t is ase_wchar_t, - * it handles utf-8 byte streams. - */ -typedef struct ase_tio_t ase_tio_t; - -/* - * TYPE: ase_tio_io_t - * Defines a user-defines IO handler - */ -typedef ase_ssize_t (*ase_tio_io_t) ( - int cmd, void* arg, void* data, ase_size_t size); - -struct ase_tio_t -{ - ase_mmgr_t* mmgr; - int errnum; - - /* io functions */ - ase_tio_io_t input_func; - ase_tio_io_t output_func; - void* input_arg; - void* output_arg; - - /* for housekeeping */ - int input_status; - ase_size_t inbuf_curp; - ase_size_t inbuf_len; - ase_size_t outbuf_len; - - ase_mchar_t inbuf[ASE_TIO_MAX_INBUF_LEN]; - ase_mchar_t outbuf[ASE_TIO_MAX_OUTBUF_LEN]; -}; - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * FUNCTION: ase_tio_open - */ -ase_tio_t* ase_tio_open ( - ase_mmgr_t* mmgr, - ase_size_t ext -); - -/* - * FUNCTION: ase_tio_close - */ -int ase_tio_close ( - ase_tio_t* tio -); - -ase_tio_t* ase_tio_init ( - ase_tio_t* tip, - ase_mmgr_t* mmgr -); - -int ase_tio_fini ( - ase_tio_t* tio -); - -void* ase_tio_getxtn ( - ase_tio_t* tio -); - -ase_mmgr_t* ase_tio_getmmgr ( - ase_tio_t* tio -); - -void ase_tio_setmmgr ( - ase_tio_t* tio, - ase_mmgr_t* mmgr -); - -/* - * FUNCTION: ase_tio_geterrnum - * Returns an error code - * - * PARAMETERS: - * grep - a grep object - * - * RETURNS: - * Error code set by the last tio function called - */ -int ase_tio_geterrnum (ase_tio_t* tio); - -/* - * FUNCTION: ase_tio_geterrstr - * Translates an error code to a string - * - * PARAMETERS: - * tio - a tio object - * - * RETURNS: - * A pointer to a constant string describing the last error occurred - */ -const ase_char_t* ase_tio_geterrstr (ase_tio_t* tio); - -/* - * FUNCTION: ase_tio_attachin - * Attaches an input handler function - * - * PARAMETERS: - * tio - a tio object - * input - input handler function - * arg - user data to be passed to the input handler - * - * RETURNS: - * 0 on success, -1 on failure - */ -int ase_tio_attachin ( - ase_tio_t* tio, - ase_tio_io_t input, - void* arg -); - -/* - * FUNCTION: ase_tio_detachin - * Detaches an input handler function - * - * PARAMETERS: - * tio - a tio object - * - * RETURNS: - * 0 on success, -1 on failure - */ -int ase_tio_detachin ( - ase_tio_t* tio -); - -/* - * FUNCTION: ase_tio_attachout - * Attaches an output handler function - * - * PARAMETERS: - * tio - a tio object - * output - output handler function - * arg - user data to be passed to the output handler - * - * RETURNS: - * 0 on success, -1 on failure - */ -int ase_tio_attachout ( - ase_tio_t* tio, - ase_tio_io_t output, - void* arg -); - -/* - * FUNCTION: ase_tio_detachout - * Detaches an output handler function - * - * PARAMETERS: - * tio - a tio object - * - * RETURNS: - * 0 on success, -1 on failure - */ -int ase_tio_detachout ( - ase_tio_t* tio -); - - -/* - * FUNCTION: ase_tio_flush - * Flushes the output buffer - * - * PARAMETERS: - * tio - a tio object - * - * RETURNS: - * Number of bytes written on success, -1 on failure - */ -ase_ssize_t ase_tio_flush (ase_tio_t* tio); - -/* - * FUNCTION: ase_tio_purge - * Erases all input and output buffered - * - * PARAMETERS: - * tio - a tio object - * - */ -void ase_tio_purge (ase_tio_t* tio); - -/* - * FUNCTION: ase_tio_getc - * Reads a single character - */ -ase_ssize_t ase_tio_getc (ase_tio_t* tio, ase_char_t* c); - -/* - * FUNCTION: ase_tio_gets - * - * DESCRIPTION: - * inserts a terminating null if there is a room - */ -ase_ssize_t ase_tio_gets (ase_tio_t* tio, ase_char_t* buf, ase_size_t size); - -/* - * FUNCTION: ase_tio_getsx - * - * DESCRIPTION: - * doesn't insert a terminating null character - */ -ase_ssize_t ase_tio_getsx (ase_tio_t* tio, ase_char_t* buf, ase_size_t size); - -/* - * FUNCTION: ase_tio_getstr - */ -ase_ssize_t ase_tio_getstr (ase_tio_t* tio, ase_str_t* buf); - -/* - * FUNCTION: ase_tio_putc - */ -ase_ssize_t ase_tio_putc (ase_tio_t* tio, ase_char_t c); - -/* - * FUNCTION: ase_tio_puts - */ -ase_ssize_t ase_tio_puts (ase_tio_t* tio, const ase_char_t* str); - -/* - * FUNCTION: ase_tio_putsx - */ -ase_ssize_t ase_tio_putsx (ase_tio_t* tio, const ase_char_t* str, ase_size_t size); - -/* - * FUNCTION: ase_tio_putsn - */ -ase_ssize_t ase_tio_putsn (ase_tio_t* tio, ...); - -/* - * FUNCTION: ase_tio_putsxn - */ -ase_ssize_t ase_tio_putsxn (ase_tio_t* tio, ...); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/qse/include/ase/conf_msw.h b/qse/include/ase/conf_msw.h deleted file mode 100644 index f77279c2..00000000 --- a/qse/include/ase/conf_msw.h +++ /dev/null @@ -1,64 +0,0 @@ -/* - * $Id: conf_msw.h 225 2008-06-26 06:48:38Z baconevi $ - * - * {License} - */ - -/* -Macro Meaning -_WIN64 A 64-bit platform. -_WIN32 A 32-bit platform. This value is also defined by the 64-bit - compiler for backward compatibility. -_WIN16 A 16-bit platform - -The following macros are specific to the architecture. - -Macro Meaning -_M_IA64 Intel Itanium Processor Family -_M_IX86 x86 platform -_M_X64 x64 platform -*/ - -#define ASE_ENDIAN_LITTLE - -#define ASE_SIZEOF_CHAR 1 -#define ASE_SIZEOF_SHORT 2 -#define ASE_SIZEOF_INT 4 - -/*#ifdef _WIN64 - #define ASE_SIZEOF_LONG 8 -#else*/ - #define ASE_SIZEOF_LONG 4 -/*#endif*/ - -#if defined(__POCC__) || defined(__DMC__) - /* pelles c with no microsoft extension */ - #define ASE_SIZEOF_LONG_LONG 8 - - #define ASE_SIZEOF___INT8 0 - #define ASE_SIZEOF___INT16 0 - #define ASE_SIZEOF___INT32 0 - #define ASE_SIZEOF___INT64 0 - #define ASE_SIZEOF___INT96 0 - #define ASE_SIZEOF___INT128 0 -#else - #define ASE_SIZEOF_LONG_LONG 0 - - #define ASE_SIZEOF___INT8 1 - #define ASE_SIZEOF___INT16 2 - #define ASE_SIZEOF___INT32 4 - #define ASE_SIZEOF___INT64 8 - #define ASE_SIZEOF___INT96 0 - #define ASE_SIZEOF___INT128 0 -#endif - -#ifdef _WIN64 - #define ASE_SIZEOF_VOID_P 8 -#else - #define ASE_SIZEOF_VOID_P 4 -#endif - -#define ASE_SIZEOF_FLOAT 4 -#define ASE_SIZEOF_DOUBLE 8 -#define ASE_SIZEOF_LONG_DOUBLE 16 -#define ASE_SIZEOF_WCHAR_T 2 diff --git a/qse/include/ase/lsp/lsp.h b/qse/include/ase/lsp/lsp.h deleted file mode 100644 index 5434c347..00000000 --- a/qse/include/ase/lsp/lsp.h +++ /dev/null @@ -1,134 +0,0 @@ -/* - * $Id: lsp.h 183 2008-06-03 08:18:55Z baconevi $ - * - * {License} - */ - -#ifndef _ASE_LSP_LSP_H_ -#define _ASE_LSP_LSP_H_ - -#include -#include - -typedef struct ase_lsp_t ase_lsp_t; -typedef struct ase_lsp_obj_t ase_lsp_obj_t; -typedef struct ase_lsp_prmfns_t ase_lsp_prmfns_t; - -typedef ase_ssize_t (*ase_lsp_io_t) ( - int cmd, void* arg, ase_char_t* data, ase_size_t count); - -typedef ase_real_t (*ase_lsp_pow_t) ( - void* data, ase_real_t x, ase_real_t y); -typedef int (*ase_lsp_sprintf_t) ( - void* data, ase_char_t* buf, ase_size_t size, - const ase_char_t* fmt, ...); -typedef void (*ase_lsp_dprintf_t) (void* data, const ase_char_t* fmt, ...); - -struct ase_lsp_prmfns_t -{ - ase_mmgr_t mmgr; - ase_ccls_t ccls; - - /* utilities */ - struct - { - ase_lsp_sprintf_t sprintf; - ase_lsp_dprintf_t dprintf; - void* data; - } misc; -}; - -/* io function commands */ -enum -{ - ASE_LSP_IO_OPEN = 0, - ASE_LSP_IO_CLOSE = 1, - ASE_LSP_IO_READ = 2, - ASE_LSP_IO_WRITE = 3 -}; - -/* option code */ -enum -{ - ASE_LSP_UNDEFSYMBOL = (1 << 0) -}; - -/* error code */ -enum -{ - ASE_LSP_ENOERR, - ASE_LSP_ENOMEM, - - ASE_LSP_EEXIT, - ASE_LSP_EEND, - ASE_LSP_EENDSTR, - ASE_LSP_ENOINP, - ASE_LSP_EINPUT, - ASE_LSP_ENOOUTP, - ASE_LSP_EOUTPUT, - - ASE_LSP_ESYNTAX, - ASE_LSP_ERPAREN, - ASE_LSP_EARGBAD, - ASE_LSP_EARGFEW, - ASE_LSP_EARGMANY, - ASE_LSP_EUNDEFFN, - ASE_LSP_EBADFN, - ASE_LSP_EDUPFML, - ASE_LSP_EBADSYM, - ASE_LSP_EUNDEFSYM, - ASE_LSP_EEMPBDY, - ASE_LSP_EVALBAD, - ASE_LSP_EDIVBY0 -}; - -typedef ase_lsp_obj_t* (*ase_lsp_prim_t) (ase_lsp_t* lsp, ase_lsp_obj_t* obj); - -#ifdef __cplusplus -extern "C" { -#endif - -ase_lsp_t* ase_lsp_open ( - const ase_lsp_prmfns_t* prmfns, - ase_size_t mem_ubound, ase_size_t mem_ubound_inc); - -void ase_lsp_close (ase_lsp_t* lsp); - -/** - * @function ase_lsp_setassocdata - * @brief ssociats the user-specified data with an interpreter - */ -void ase_lsp_setassocdata (ase_lsp_t* lsp, void* data); -/** - * @function ase_lsp_getassocdata - * @brief returns the user-specified data associated with an interpreter - */ -void* ase_lsp_getassocdata (ase_lsp_t* lsp); - -void ase_lsp_geterror ( - ase_lsp_t* lsp, int* errnum, const ase_char_t** errmsg); - -void ase_lsp_seterror ( - ase_lsp_t* lsp, int errnum, - const ase_char_t** errarg, ase_size_t argcnt); - -int ase_lsp_attinput (ase_lsp_t* lsp, ase_lsp_io_t input, void* arg); -int ase_lsp_detinput (ase_lsp_t* lsp); - -int ase_lsp_attoutput (ase_lsp_t* lsp, ase_lsp_io_t output, void* arg); -int ase_lsp_detoutput (ase_lsp_t* lsp); - -ase_lsp_obj_t* ase_lsp_read (ase_lsp_t* lsp); -ase_lsp_obj_t* ase_lsp_eval (ase_lsp_t* lsp, ase_lsp_obj_t* obj); -int ase_lsp_print (ase_lsp_t* lsp, const ase_lsp_obj_t* obj); - -int ase_lsp_addprim ( - ase_lsp_t* lsp, const ase_char_t* name, ase_size_t name_len, - ase_lsp_prim_t prim, ase_size_t min_args, ase_size_t max_args); -int ase_lsp_removeprim (ase_lsp_t* lsp, const ase_char_t* name); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/qse/include/ase/macros.h b/qse/include/ase/macros.h deleted file mode 100644 index 7b8d2038..00000000 --- a/qse/include/ase/macros.h +++ /dev/null @@ -1,171 +0,0 @@ -/* - * $Id: macros.h 455 2008-11-26 09:05:00Z baconevi $ - * - * {License} - */ - -#ifndef _ASE_MACROS_H_ -#define _ASE_MACROS_H_ - -#include - -#ifdef __cplusplus - /*#define ASE_NULL ((ase_uint_t)0)*/ - #define ASE_NULL (0) -#else - #define ASE_NULL ((void*)0) -#endif - -/****d* ase/ASE_TRUE,ASE_FALSE - * NAME - * ASE_TRUE - represent a boolean true - * ASE_FALSE - represent a boolean false - ****** - */ -#define ASE_TRUE (0 == 0) -#define ASE_FALSE (0 != 0) - - -/****d* ase/ASE_ALIVE,ASE_ZOMBIE,ASE_DEAD - * NAME - * ASE_ALIVE - represent a living state - * ASE_ZOMBIE - represent a zombie state - * ASE_DEAD - represent a dead state - ****** - */ -#define ASE_ALIVE 1 -#define ASE_ZOMBIE 0 -#define ASE_DEAD -1 - - -#define AES_MCHAR_EOF ((ase_mcint_t)-1) -#define AES_WCHAR_EOF ((ase_wcint_t)-1) -#define ASE_CHAR_EOF ((ase_cint_t)-1) - -#define ASE_SIZEOF(n) (sizeof(n)) -#define ASE_COUNTOF(n) (sizeof(n)/sizeof(n[0])) -#define ASE_OFFSETOF(type,member) ((ase_size_t)&((type*)0)->member) - -#define ASE_TYPE_IS_SIGNED(type) (((type)0) > ((type)-1)) -#define ASE_TYPE_IS_UNSIGNED(type) (((type)0) < ((type)-1)) - -#define ASE_TYPE_SIGNED_MAX(type) \ - ((type)~((type)1 << (ASE_SIZEOF(type) * 8 - 1))) -#define ASE_TYPE_UNSIGNED_MAX(type) ((type)(~(type)0)) - -#define ASE_TYPE_SIGNED_MIN(type) \ - ((type)((type)1 << (ASE_SIZEOF(type) * 8 - 1))) -#define ASE_TYPE_UNSIGNED_MIN(type) ((type)0) - -#define ASE_TYPE_MAX(type) \ - ((ASE_TYPE_IS_SIGNED(type)? ASE_TYPE_SIGNED_MAX(type): ASE_TYPE_UNSIGNED_MAX(type))) -#define ASE_TYPE_MIN(type) \ - ((ASE_TYPE_IS_SIGNED(type)? ASE_TYPE_SIGNED_MIN(type): ASE_TYPE_UNSIGNED_MIN(type))) - -#define ASE_IS_POWOF2(x) (((x) & ((x) - 1)) == 0) - -#define ASE_SWAP(x,y,original_type,casting_type) \ - do { \ - x = (original_type)((casting_type)(x) ^ (casting_type)(y)); \ - y = (original_type)((casting_type)(y) ^ (casting_type)(x)); \ - x = (original_type)((casting_type)(x) ^ (casting_type)(y)); \ - } while (0) - -#define ASE_ABS(x) ((x) < 0? -(x): (x)) - -#define ASE_LOOP_CONTINUE(id) goto __loop_ ## id ## _begin__; -#define ASE_LOOP_BREAK(id) goto __loop_ ## id ## _end__; -#define ASE_LOOP_BEGIN(id) __loop_ ## id ## _begin__: { -#define ASE_LOOP_END(id) ASE_LOOP_CONTINUE(id) } __loop_ ## id ## _end__:; - -#define ASE_REPEAT(n,blk) \ - do { \ - ase_size_t __ase_repeat_x1__ = (ase_size_t)(n); \ - ase_size_t __ase_repeat_x2__ = __ase_repeat_x1__ >> 4; \ - __ase_repeat_x1__ &= 15; \ - while (__ase_repeat_x1__-- > 0) { blk; } \ - while (__ase_repeat_x2__-- > 0) { \ - blk; blk; blk; blk; blk; blk; blk; blk; \ - blk; blk; blk; blk; blk; blk; blk; blk; \ - } \ - } while (0); - -/* number of characters to number of bytes */ -#define ASE_NCTONB(x) ((x)*sizeof(ase_char_t)) -/* number of bytes to number of characters */ -#define ASE_NBTONC(x) ((x)/sizeof(ase_char_t)) - -#define ASE_MQ_I(val) #val -#define ASE_MQ(val) ASE_MQ_I(val) -#define ASE_MC(ch) ((ase_mchar_t)ch) -#define ASE_MS(str) ((const ase_mchar_t*)str) -#define ASE_MT(txt) (txt) - -#define ASE_WQ_I(val) (L ## #val) -#define ASE_WQ(val) ASE_WQ_I(val) -#define ASE_WC(ch) ((ase_wchar_t)L ## ch) -#define ASE_WS(str) ((const ase_wchar_t*)L ## str) -#define ASE_WT(txt) (L ## txt) - -#if defined(ASE_CHAR_IS_MCHAR) - #define ASE_Q(val) ASE_MQ(val) - #define ASE_C(ch) ASE_MC(ch) - #define ASE_S(str) ASE_MS(str) - #define ASE_T(txt) ASE_MT(txt) -#else - #define ASE_Q(val) ASE_WQ(val) - #define ASE_C(ch) ASE_WC(ch) - #define ASE_S(str) ASE_WS(str) - #define ASE_T(txt) ASE_WT(txt) -#endif - -#if defined(__GNUC__) - #define ASE_BEGIN_PACKED_STRUCT(x) struct x { - #define ASE_END_PACKED_STRUCT() } __attribute__((packed)); -#else - #define ASE_BEGIN_PACKED_STRUCT(x) struct x { - #define ASE_END_PACKED_STRUCT() }; -#endif - -#ifdef NDEBUG - #define ASE_ASSERT(expr) ((void)0) - #define ASE_ASSERTX(expr,desc) ((void)0) -#else - #ifdef __cplusplus - extern "C" { - #endif - void ase_assert_failed ( - const ase_char_t* expr, const ase_char_t* desc, - const ase_char_t* file, ase_size_t line); - #ifdef __cplusplus - } - #endif - - #define ASE_ASSERT(expr) (void)((expr) || \ - (ase_assert_failed (ASE_T(#expr), ASE_NULL, ASE_T(__FILE__), __LINE__), 0)) - #define ASE_ASSERTX(expr,desc) (void)((expr) || \ - (ase_assert_failed (ASE_T(#expr), ASE_T(desc), ASE_T(__FILE__), __LINE__), 0)) -#endif - -/****d* ase/ASE_FNS - * NAME - * ASE_FNS - define an ASE function name space - * DESCRIPTION - * The ASE_FNS macro enables you to simulate a function name space for the - * types designed properly. - * EXAMPLE - * ASE_FNS (awk, AWK); - * ase_awk_t* awk = AWK.open (....); - * AWK.close (awk); - ****** - */ -#define ASE_NS(type,name) struct ase_ns_##type##_t name = ase_ns_##type##_d - -#ifdef __cplusplus - #define ASE_BEGIN_NAMESPACE(x) namespace x { - #define ASE_END_NAMESPACE(x) } - #define ASE_BEGIN_NAMESPACE2(x,y) namespace x { namespace y { - #define ASE_END_NAMESPACE2(y,x) }} -#endif - -#endif diff --git a/qse/include/ase/tgp/tgp.h b/qse/include/ase/tgp/tgp.h deleted file mode 100644 index bb434bc5..00000000 --- a/qse/include/ase/tgp/tgp.h +++ /dev/null @@ -1,40 +0,0 @@ -/* - * $Id: tgp.h 235 2008-07-05 07:25:54Z baconevi $ - * - * {License} - */ - -#ifndef _ASE_TGP_TGP_H_ -#define _ASE_TGP_TGP_H_ - -#include -#include - -typedef struct ase_tgp_t ase_tgp_t; - -enum ase_tgp_iocmd_t -{ - ASE_TGP_IO_OPEN = 0, - ASE_TGP_IO_CLOSE = 1, - ASE_TGP_IO_READ = 2, - ASE_TGP_IO_WRITE = 3 -}; - -typedef ase_ssize_t (*ase_tgp_io_t) ( - int cmd, void* arg, ase_char_t* data, ase_size_t count); - -#ifdef __cplusplus -extern "C" { -#endif - -ase_tgp_t* ase_tgp_open (ase_mmgr_t* mmgr); -void ase_tgp_close (ase_tgp_t* tgp); - -void ase_tgp_setassocdata (ase_tgp_t* tgp, void* data); -void* ase_tgp_getassocdata (ase_tgp_t* tgp); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/qse/include/ase/types.h b/qse/include/ase/types.h deleted file mode 100644 index 68920b5c..00000000 --- a/qse/include/ase/types.h +++ /dev/null @@ -1,439 +0,0 @@ -/* - * $Id: types.h 476 2008-12-12 06:25:48Z baconevi $ - * - * {License} - */ - -#ifndef _ASE_TYPES_H_ -#define _ASE_TYPES_H_ - -/****o* ase/basic types - * DESCRIPTION - * defines various common basic types. They are designed to be - * cross-platform. These types are preferred over native data types in many - * contexts. - * - * #include - ****** - */ - -/* WARNING: NEVER CHANGE/DELETE THE FOLLOWING LINE */ -/*#define ASE_HAVE_CONFIG_H*/ - -#if defined(ASE_HAVE_CONFIG_H) - #include -#elif defined(_WIN32) - #include -#elif defined(vms) || defined(__vms) - #include -/* -#elif defined(__unix__) || defined(__unix) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || (defined(__APPLE__) && defined(__MACH__)) || defined(__SPU__) - #if !defined(__unix__) - #define __unix__ - #endif - #if !defined(__unix) - #define __unix - #endif - #include -*/ -#else - #error unsupported operating system -#endif - -/****t* ase/ase_bool_t - * NAME - * ase_bool_t - define a boolean type - * DESCRIPTION - * The ase_bool_t type defines a boolean type that can represent ASE_TRUE - * and ASE_FALSE. - ****** - */ -typedef int ase_bool_t; - -/****t* ase/ase_tri_t - * NAME - * ase_tri_t - define a tri-state type - * DESCRIPTION - * The ase_tri_t type defines a tri-state type that can represent ASE_ALIVE, - * ASE_ZOMBIE, and ASE_DEAD. - ****** - */ -typedef int ase_tri_t; - -/****t* ase/ase_int_t,ase_uint_t - * NAME - * ase_int_t - define a signed integer type as large as a pointer type - * ase_uint_t - define an unsigned integer type as large as a pointer type - ****** - */ -#if (defined(hpux) || defined(__hpux) || defined(__hpux__)) && (ASE_SIZEOF_VOID_P == ASE_SIZEOF_LONG) - typedef long ase_int_t; - typedef unsigned long ase_uint_t; -#elif defined(__SPU__) && (ASE_SIZEOF_VOID_P == ASE_SIZEOF_LONG) - typedef long ase_int_t; - typedef unsigned long ase_uint_t; -#elif ASE_SIZEOF_VOID_P == ASE_SIZEOF_INT - typedef int ase_int_t; - typedef unsigned int ase_uint_t; -#elif ASE_SIZEOF_VOID_P == ASE_SIZEOF_LONG - typedef long ase_int_t; - typedef unsigned long ase_uint_t; -#elif ASE_SIZEOF_VOID_P == ASE_SIZEOF_LONG_LONG - typedef long long ase_int_t; - typedef unsigned long long ase_uint_t; -#elif ASE_SIZEOF_VOID_P == ASE_SIZEOF___INT32 - typedef __int32 ase_int_t; - typedef unsigned __int32 ase_uint_t; -#elif ASE_SIZEOF_VOID_P == ASE_SIZEOF___INT64 - typedef __int64 ase_int_t; - typedef unsigned __int64 ase_uint_t; -#else - #error unsupported pointer size -#endif - -/****t* ase/ase_long_t,ase_ulong_t - * NAME - * ase_long_t - define the largest signed integer type supported - * ase_ulong_t - define the largest unsigned integer type supported - ****** - */ -#if ASE_SIZEOF_LONG_LONG > 0 - typedef long long ase_long_t; - typedef unsigned long long ase_ulong_t; -#elif ASE_SIZEOF___INT64 > 0 - typedef __int64 ase_long_t; - typedef unsigned __int64 ase_ulong_t; -#else - typedef long ase_long_t; - typedef unsigned long ase_ulong_t; -#endif - -/****t* ase/ase_int8_t,ase_uint8_t - * NAME - * ase_int8_t - define an 8-bit signed integer type - * ase_uint8_t - define an 8-bit unsigned integer type - ****** - */ -#if ASE_SIZEOF_CHAR == 1 - typedef char ase_int8_t; - typedef unsigned char ase_uint8_t; -#elif ASE_SIZEOF___INT8 == 1 - typedef __int8 ase_int8_t; - typedef unsigned __int8 ase_uint8_t; -#endif - -/****t* ase/ase_int16_t,ase_uint16_t - * NAME - * ase_int16_t - define a 16-bit signed integer type - * ase_uint16_t - define a 16-bit unsigned integer type - ****** - */ -#if ASE_SIZEOF_SHORT == 2 - typedef short ase_int16_t; - typedef unsigned short ase_uint16_t; -#elif ASE_SIZEOF___INT16 == 2 - typedef __int16 ase_int16_t; - typedef unsigned __int16 ase_uint16_t; -#endif - -/****t* ase/ase_int32_t,ase_uint32_t - * NAME - * ase_int32_t - define a 32-bit signed integer type - * ase_uint32_t - define a 32-bit unsigned integer type - ****** - */ -#if ASE_SIZEOF_INT == 4 - typedef int ase_int32_t; - typedef unsigned int ase_uint32_t; -#elif ASE_SIZEOF_LONG == 4 - typedef long ase_int32_t; - typedef unsigned long ase_uint32_t; -#elif ASE_SIZEOF___INT32 == 4 - typedef __int32 ase_int32_t; - typedef unsigned __int32 ase_uint32_t; -#endif - -/****t* ase/ase_int64_t,ase_uint64_t - * NAME - * ase_int64_t - define a 64-bit signed integer type - * ase_uint64_t - define a 64-bit unsigned integer type - ****** - */ -#if ASE_SIZEOF_INT == 8 - #define ASE_HAVE_INT64_T - #define ASE_HAVE_UINT64_T - typedef int ase_int64_t; - typedef unsigned int ase_uint64_t; -#elif ASE_SIZEOF_LONG == 8 - #define ASE_HAVE_INT64_T - #define ASE_HAVE_UINT64_T - typedef long ase_int64_t; - typedef unsigned long ase_uint64_t; -#elif ASE_SIZEOF_LONG_LONG == 8 - #define ASE_HAVE_INT64_T - #define ASE_HAVE_UINT64_T - typedef long long ase_int64_t; - typedef unsigned long long ase_uint64_t; -#elif ASE_SIZEOF___INT64 == 8 - #define ASE_HAVE_INT64_T - #define ASE_HAVE_UINT64_T - typedef __int64 ase_int64_t; - typedef unsigned __int64 ase_uint64_t; -#endif - -#if ASE_SIZEOF_INT == 16 - #define ASE_HAVE_INT128_T - #define ASE_HAVE_UINT128_T - typedef int ase_int128_t; - typedef unsigned int ase_uint128_t; -#elif ASE_SIZEOF_LONG == 16 - #define ASE_HAVE_INT128_T - #define ASE_HAVE_UINT128_T - typedef long ase_int128_t; - typedef unsigned long ase_uint128_t; -#elif ASE_SIZEOF_LONG_LONG == 16 - #define ASE_HAVE_INT128_T - #define ASE_HAVE_UINT128_T - typedef long long ase_int128_t; - typedef unsigned long long ase_uint128_t; -#elif ASE_SIZEOF___INT128 == 16 - #define ASE_HAVE_INT128_T - #define ASE_HAVE_UINT128_T - typedef __int128 ase_int128_t; - typedef unsigned __int128 ase_uint128_t; -#endif - -/****t* ase/ase_byte_t - * NAME - * ase_word_t - define a byte type - ****** - */ -typedef ase_uint8_t ase_byte_t; - -/****t* ase/ase_size_t - * NAME - * ase_size_t - define an unsigned integer type that can hold a pointer value - ****** - */ -#ifdef __SIZE_TYPE__ -typedef __SIZE_TYPE__ ase_size_t; -#else -typedef ase_uint_t ase_size_t; -#endif - -/****t* ase/ase_ssize_t - * NAME - * ase_ssize_t - define an signed integer type that can hold a pointer value - ****** - */ -typedef ase_int_t ase_ssize_t; - -/****t* ase/ase_word_t - * NAME - * ase_word_t - define an integer type identical to ase_uint_t - ****** - */ -typedef ase_uint_t ase_word_t; - -/* floating-point number */ -#if defined(__FreeBSD__) - /* TODO: check if the support for long double is complete. - * if so, use long double for ase_real_t */ - #define ASE_SIZEOF_REAL ASE_SIZEOF_DOUBLE - typedef double ase_real_t; -#elif ASE_SIZEOF_LONG_DOUBLE > ASE_SIZEOF_DOUBLE - #define ASE_SIZEOF_REAL ASE_SIZEOF_LONG_DOUBLE - typedef long double ase_real_t; -#else - #define ASE_SIZEOF_REAL ASE_SIZEOF_DOUBLE - typedef double ase_real_t; -#endif - -/****t* ase/ase_mchar_t,ase_mcint_t - * NAME - * ase_mchar_t - define a multi-byte character - * ase_mcint_t - define a type that can hold ase_mchar_t and ASE_MCHAR_EOF - ****** - */ -typedef char ase_mchar_t; -typedef int ase_mcint_t; - -/****t* ase/ase_wchar_t,ase_wcint_t - * NAME - * ase_wchar_t - define a wide character - * ase_wcint_t - define a type that can hold ase_wchar_t and ASE_WCHAR_EOF - ****** - */ -#if defined(__cplusplus) && (!defined(_MSC_VER) || (defined(_MSC_VER)&&defined(_NATIVE_WCHAR_T_DEFINED))) - /* C++ */ - - typedef wchar_t ase_wchar_t; - typedef wchar_t ase_wcint_t; - - /* all the way down from here for C */ -#elif defined(__WCHAR_TYPE__) && defined(__WINT_TYPE__) - typedef __WCHAR_TYPE__ ase_wchar_t; - typedef __WINT_TYPE__ ase_wcint_t; -#elif (ASE_SIZEOF_WCHAR_T == 2) || (ASE_SIZEOF_WCHAR_T == 0) - typedef unsigned short ase_wchar_t; - typedef unsigned short ase_wcint_t; -#elif (ASE_SIZEOF_WCHAR_T == 4) - #if defined(vms) || defined(__vms) - typedef unsigned int ase_wchar_t; - typedef int ase_wcint_t; - #elif defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) - typedef int ase_wchar_t; - typedef int ase_wcint_t; - #elif (defined(sun) || defined(__sun) || defined(__linux)) - #if defined(_LP64) - typedef int ase_wchar_t; - typedef int ase_wcint_t; - #else - typedef long ase_wchar_t; - typedef long ase_wcint_t; - #endif - #elif defined(__APPLE__) && defined(__MACH__) - typedef int ase_wchar_t; - typedef int ase_wcint_t; - #elif defined(hpux) || defined(__hpux) || defined(__hpux__) - #if defined(__HP_cc) || defined(__HP_aCC) - typedef unsigned int ase_wchar_t; - #else - typedef int ase_wchar_t; - #endif - typedef int ase_wcint_t; - #elif ASE_SIZEOF_LONG == 4 - typedef long ase_wchar_t; - typedef long ase_wcint_t; - #elif ASE_SIZEOF_INT == 4 - typedef int ase_wchar_t; - typedef int ase_wcint_t; - #else - #error no supported data type for wchar_t - #endif -#else - #error unsupported size of wchar_t -#endif - -/****t* ase/ase_char_t,ase_cint_t - * NAME - * ase_char_t - define a character - * ase_cint_t - define a type that can hold ase_char_t and ASE_CHAR_EOF - ****** - */ -#if defined(_WIN32) && (defined(UNICODE)||defined(_UNICODE)) - #define ASE_CHAR_IS_WCHAR - typedef ase_wchar_t ase_char_t; - typedef ase_wcint_t ase_cint_t; -#else - #if defined(ASE_CHAR_IS_MCHAR) - typedef ase_mchar_t ase_char_t; - typedef ase_mcint_t ase_cint_t; - #elif defined(ASE_CHAR_IS_WCHAR) - typedef ase_wchar_t ase_char_t; - typedef ase_wcint_t ase_cint_t; - #elif defined(_MBCS) - #define ASE_CHAR_IS_MCHAR - typedef ase_mchar_t ase_char_t; - typedef ase_mcint_t ase_cint_t; - #else - #define ASE_CHAR_IS_WCHAR - typedef ase_wchar_t ase_char_t; - typedef ase_wcint_t ase_cint_t; - #endif -#endif - -#if defined(ASE_CHAR_IS_WCHAR) && defined(_WIN32) - #ifndef UNICODE - #define UNICODE - #endif - #ifndef _UNICODE - #define _UNICODE - #endif -#endif - -typedef struct ase_xstr_t ase_xstr_t; -typedef struct ase_cstr_t ase_cstr_t; -typedef struct ase_mmgr_t ase_mmgr_t; -typedef struct ase_ccls_t ase_ccls_t; - -/****t* ase/ase_xstr_t - * NAME - * ase_xstr_t - combine a pointer and length - * - * SYNOPSIS - */ -struct ase_xstr_t -{ - ase_char_t* ptr; /* this is not a const pointer */ - ase_size_t len; -}; -/******/ - -/****t* ase/ase_cstr_t - * NAME - * ase_cstr_t - combine a constant pointer and length - * - * SYNOPSIS - */ -struct ase_cstr_t -{ - const ase_char_t* ptr; /* this is a const pointer */ - ase_size_t len; -}; -/******/ - -/****t* ase/ase_mmgr_t - * NAME - * ase_mmgr_t - define a memory manager - * - * SYNOPSIS - */ -struct ase_mmgr_t -{ - void* (*alloc) (void* data, ase_size_t n); - void* (*realloc) (void* data, void* ptr, ase_size_t n); - void (*free) (void* data, void* ptr); - void* data; -}; -/******/ - -/****t* ase/ase_ccls_type_t - * NAME - * ase_ccls_type_t - define types of character class - * - * SYNOPSIS - */ -enum ase_ccls_type_t -{ - ASE_CCLS_UPPER, - ASE_CCLS_LOWER, - ASE_CCLS_ALPHA, - ASE_CCLS_DIGIT, - ASE_CCLS_XDIGIT, - ASE_CCLS_ALNUM, - ASE_CCLS_SPACE, - ASE_CCLS_PRINT, - ASE_CCLS_GRAPH, - ASE_CCLS_CNTRL, - ASE_CCLS_PUNCT -}; -/******/ - -typedef enum ase_ccls_type_t ase_ccls_type_t; - -/****t* ase/ase_ccls_t - * NAME - * ase_mmgr_t - define a character class handler - * - * SYNOPSIS - */ -struct ase_ccls_t -{ - ase_bool_t (*is) (void* data, ase_cint_t c, ase_ccls_type_t type); - ase_cint_t (*to) (void* data, ase_cint_t c, ase_ccls_type_t type); - void* data; -}; -/******/ - -#endif diff --git a/qse/include/ase/utl/http.h b/qse/include/ase/utl/http.h deleted file mode 100644 index 96050402..00000000 --- a/qse/include/ase/utl/http.h +++ /dev/null @@ -1,66 +0,0 @@ -/* - * $Id: http.h 223 2008-06-26 06:44:41Z baconevi $ - * - * {License} - */ - -#ifndef _ASE_UTL_HTTP_H_ -#define _ASE_UTL_HTTP_H_ - -#include -#include - -/* returns the type of http method */ -typedef struct ase_http_req_t ase_http_req_t; -typedef struct ase_http_hdr_t ase_http_hdr_t; - -struct ase_http_req_t -{ - ase_char_t* method; - - struct - { - ase_char_t* ptr; - ase_size_t len; - } path; - - struct - { - ase_char_t* ptr; - ase_size_t len; - } args; - - struct - { - char major; - char minor; - } vers; -}; - -struct ase_http_hdr_t -{ - struct - { - ase_char_t* ptr; - ase_size_t len; - } name; - - struct - { - ase_char_t* ptr; - ase_size_t len; - } value; -}; - -#ifdef __cplusplus -extern "C" { -#endif - -ase_char_t* ase_parsehttpreq (ase_char_t* buf, ase_http_req_t* req); -ase_char_t* ase_parsehttphdr (ase_char_t* buf, ase_http_hdr_t* hdr); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/qse/include/ase/utl/main.h b/qse/include/ase/utl/main.h deleted file mode 100644 index 27426a07..00000000 --- a/qse/include/ase/utl/main.h +++ /dev/null @@ -1,37 +0,0 @@ -/* - * $Id: main.h 463 2008-12-09 06:52:03Z baconevi $ - * - * {License} - */ - -#ifndef _ASE_UTL_MAIN_H_ -#define _ASE_UTL_MAIN_H_ - -#include -#include - -#if defined(_WIN32) && !defined(__MINGW32__) - #if defined(ASE_CHAR_IS_MCHAR) - #define ase_main main - typedef ase_mchar_t ase_achar_t; - #else - #define ase_main wmain - typedef ase_wchar_t ase_achar_t; - #endif -#else - #define ase_main main - typedef ase_mchar_t ase_achar_t; -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -int ase_runmain (int argc, ase_achar_t* argv[], int(*mf) (int,ase_char_t*[])); -/* TODO - ase_runmain with env */ - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/qse/include/ase/utl/stdio.h b/qse/include/ase/utl/stdio.h deleted file mode 100644 index c1a355bd..00000000 --- a/qse/include/ase/utl/stdio.h +++ /dev/null @@ -1,88 +0,0 @@ -/* - * $Id: stdio.h 419 2008-10-13 11:32:58Z baconevi $ - * - * {License} - */ - -#ifndef _ASE_UTL_STDIO_H_ -#define _ASE_UTL_STDIO_H_ - -#include -#include - -#include -#include -#include - -#if defined(_WIN32) - #include - - #define ase_printf _tprintf - #define ase_vprintf _vtprintf - #define ase_fprintf _ftprintf - #define ase_vfprintf _vftprintf - - #define ase_fgets(x,y,s) _fgetts(x,y,s) - #define ase_fgetc(x) _fgettc(x) - #define ase_fputs(x,s) _fputts(x,s) - #define ase_fputc(x,s) _fputtc(x,s) -#elif defined(ASE_CHAR_IS_MCHAR) - #define ase_fgets(x,y,s) fgets(x,y,s) - #define ase_fgetc(x) fgetc(x) - #define ase_fputs(x,s) fputs(x,s) - #define ase_fputc(x,s) fputc(x,s) -#else - #define ase_fgets(x,y,s) fgetws(x,y,s) - #define ase_fgetc(x) fgetwc(x) - #define ase_fputs(x,s) fputws(x,s) - #define ase_fputc(x,s) fputwc(x,s) -#endif - -#define ase_feof(s) feof(s) -#define ase_ferror(s) ferror(s) -#define ase_clearerr(s) clearerr(s) -#define ase_fflush(s) fflush(s) -#define ase_fclose(s) fclose(s) - -#define ASE_FILE FILE -#define ASE_STDIN stdin -#define ASE_STDOUT stdout -#define ASE_STDERR stderr - -typedef int (*ase_getdelim_t) (const ase_char_t* ptr,ase_size_t len, void* arg); - -#ifdef __cplusplus -extern "C" { -#endif - -int ase_vsprintf (ase_char_t* buf, size_t size, const ase_char_t* fmt, va_list ap); -int ase_sprintf (ase_char_t* buf, size_t size, const ase_char_t* fmt, ...); - -#if !defined(_WIN32) -int ase_vfprintf (ASE_FILE *stream, const ase_char_t* fmt, va_list ap); -int ase_vprintf (const ase_char_t* fmt, va_list ap); -int ase_fprintf (ASE_FILE* file, const ase_char_t* fmt, ...); -int ase_printf (const ase_char_t* fmt, ...); -#endif - -int ase_dprintf (const ase_char_t* fmt, ...); -ASE_FILE* ase_fopen (const ase_char_t* path, const ase_char_t* mode); -ASE_FILE* ase_popen (const ase_char_t* cmd, const ase_char_t* mode); - -/** - * returns -2 on error, -1 on eof, length of data read on success - */ -ase_ssize_t ase_getline (ase_char_t **buf, ase_size_t *n, ASE_FILE *fp); -/** - * returns -3 on line breaker error, -2 on error, -1 on eof, - * length of data read on success - */ -ase_ssize_t ase_getdelim ( - ase_char_t **buf, ase_size_t *n, - ase_getdelim_t fn, void* fnarg, ASE_FILE *fp); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/qse/include/makefile.am b/qse/include/makefile.am index 282ad10e..fccd8644 100644 --- a/qse/include/makefile.am +++ b/qse/include/makefile.am @@ -2,4 +2,4 @@ AUTOMAKE_OPTIONS = no-dependencies # EXTRA_DIST = README -SUBDIRS = ase +SUBDIRS = qse diff --git a/qse/include/makefile.in b/qse/include/makefile.in index c0531593..0fd224dd 100644 --- a/qse/include/makefile.in +++ b/qse/include/makefile.in @@ -38,7 +38,7 @@ am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/include/ase/config.h +CONFIG_HEADER = $(top_builddir)/include/qse/config.h CONFIG_CLEAN_FILES = depcomp = am__depfiles_maybe = @@ -182,7 +182,7 @@ top_srcdir = @top_srcdir@ AUTOMAKE_OPTIONS = no-dependencies # EXTRA_DIST = README -SUBDIRS = ase +SUBDIRS = qse all: all-recursive .SUFFIXES: diff --git a/qse/include/ase/awk/Awk.hpp b/qse/include/qse/awk/Awk.hpp similarity index 75% rename from qse/include/ase/awk/Awk.hpp rename to qse/include/qse/awk/Awk.hpp index 1979bcd4..5bd5327a 100644 --- a/qse/include/ase/awk/Awk.hpp +++ b/qse/include/qse/awk/Awk.hpp @@ -4,16 +4,16 @@ * {License} */ -#ifndef _ASE_AWK_AWK_HPP_ -#define _ASE_AWK_AWK_HPP_ +#ifndef _QSE_AWK_AWK_HPP_ +#define _QSE_AWK_AWK_HPP_ -#include -#include -#include +#include +#include +#include #include ///////////////////////////////// -ASE_BEGIN_NAMESPACE(ASE) +QSE_BEGIN_NAMESPACE(ASE) ///////////////////////////////// /** @@ -23,46 +23,46 @@ class Awk { public: /** Boolean data type */ - typedef ase_bool_t bool_t; + typedef qse_bool_t bool_t; /** Data type that can hold any character */ - typedef ase_char_t char_t; + typedef qse_char_t char_t; /** Data type that can hold any character or an end-of-file value */ - typedef ase_cint_t cint_t; + typedef qse_cint_t cint_t; /** Represents an unsigned integer number of the same size as void* */ - typedef ase_size_t size_t; + typedef qse_size_t size_t; /** Signed version of size_t */ - typedef ase_ssize_t ssize_t; + typedef qse_ssize_t ssize_t; /** Represents an integer */ - typedef ase_long_t long_t; + typedef qse_long_t long_t; /** Represents a floating-point number */ - typedef ase_real_t real_t; + typedef qse_real_t real_t; /** Represents the internal hash table */ - typedef ase_map_t map_t; + typedef qse_map_t map_t; /** Represents a key/value pair */ - typedef ase_map_pair_t pair_t; + typedef qse_map_pair_t pair_t; /** Represents an internal awk value */ - typedef ase_awk_val_t val_t; + typedef qse_awk_val_t val_t; /** Represents the external I/O context */ - typedef ase_awk_extio_t extio_t; + typedef qse_awk_extio_t extio_t; /** Represents the run-time context */ - typedef ase_awk_run_t run_t; + typedef qse_awk_run_t run_t; /** Represents the underlying interpreter */ - typedef ase_awk_t awk_t; + typedef qse_awk_t awk_t; enum ccls_type_t { - CCLS_UPPER = ASE_CCLS_UPPER, - CCLS_LOWER = ASE_CCLS_LOWER, - CCLS_ALPHA = ASE_CCLS_ALPHA, - CCLS_DIGIT = ASE_CCLS_DIGIT, - CCLS_XDIGIT = ASE_CCLS_XDIGIT, - CCLS_ALNUM = ASE_CCLS_ALNUM, - CCLS_SPACE = ASE_CCLS_SPACE, - CCLS_PRINT = ASE_CCLS_PRINT, - CCLS_GRAPH = ASE_CCLS_GRAPH, - CCLS_CNTRL = ASE_CCLS_CNTRL, - CCLS_PUNCT = ASE_CCLS_PUNCT + CCLS_UPPER = QSE_CCLS_UPPER, + CCLS_LOWER = QSE_CCLS_LOWER, + CCLS_ALPHA = QSE_CCLS_ALPHA, + CCLS_DIGIT = QSE_CCLS_DIGIT, + CCLS_XDIGIT = QSE_CCLS_XDIGIT, + CCLS_ALNUM = QSE_CCLS_ALNUM, + CCLS_SPACE = QSE_CCLS_SPACE, + CCLS_PRINT = QSE_CCLS_PRINT, + CCLS_GRAPH = QSE_CCLS_GRAPH, + CCLS_CNTRL = QSE_CCLS_CNTRL, + CCLS_PUNCT = QSE_CCLS_PUNCT }; /** @@ -135,7 +135,7 @@ public: /** * Returns the value set with Source::setHandle. - * ASE_NULL is returned if it has not been set with + * QSE_NULL is returned if it has not been set with * Source::setHandle. You usually call this method * from Awk::readSource, Awk::writeSource, and * Awk::closeSource to get the value set in Awk::openSource @@ -159,7 +159,7 @@ public: * * * @return an arbitrary value of type void* set with - * Source::setHandle or ASE_NULL + * Source::setHandle or QSE_NULL */ const void* getHandle () const; @@ -236,8 +236,8 @@ public: enum Mode { - READ = ASE_AWK_EXTIO_PIPE_READ, - WRITE = ASE_AWK_EXTIO_PIPE_WRITE + READ = QSE_AWK_EXTIO_PIPE_READ, + WRITE = QSE_AWK_EXTIO_PIPE_WRITE }; protected: @@ -257,9 +257,9 @@ public: enum Mode { - READ = ASE_AWK_EXTIO_FILE_READ, - WRITE = ASE_AWK_EXTIO_FILE_WRITE, - APPEND = ASE_AWK_EXTIO_FILE_APPEND + READ = QSE_AWK_EXTIO_FILE_READ, + WRITE = QSE_AWK_EXTIO_FILE_WRITE, + APPEND = QSE_AWK_EXTIO_FILE_APPEND }; protected: @@ -279,8 +279,8 @@ public: enum Mode { - READ = ASE_AWK_EXTIO_CONSOLE_READ, - WRITE = ASE_AWK_EXTIO_CONSOLE_WRITE + READ = QSE_AWK_EXTIO_CONSOLE_READ, + WRITE = QSE_AWK_EXTIO_CONSOLE_WRITE }; protected: @@ -362,8 +362,8 @@ public: Run* run; val_t* val; - ase_long_t inum; - ase_real_t rnum; + qse_long_t inum; + qse_real_t rnum; mutable struct { char_t* ptr; @@ -417,135 +417,135 @@ public: /** Defines the error code */ enum ErrorCode { - ERR_NOERR = ASE_AWK_ENOERR, - ERR_CUSTOM = ASE_AWK_ECUSTOM, - ERR_INVAL = ASE_AWK_EINVAL, - ERR_NOMEM = ASE_AWK_ENOMEM, - ERR_NOSUP = ASE_AWK_ENOSUP, - ERR_NOPER = ASE_AWK_ENOPER, - ERR_NODEV = ASE_AWK_ENODEV, - ERR_NOSPC = ASE_AWK_ENOSPC, - ERR_MFILE = ASE_AWK_EMFILE, - ERR_MLINK = ASE_AWK_EMLINK, - ERR_AGAIN = ASE_AWK_EAGAIN, - ERR_NOENT = ASE_AWK_ENOENT, - ERR_EXIST = ASE_AWK_EEXIST, - ERR_FTBIG = ASE_AWK_EFTBIG, - ERR_TBUSY = ASE_AWK_ETBUSY, - ERR_ISDIR = ASE_AWK_EISDIR, - ERR_IOERR = ASE_AWK_EIOERR, - ERR_OPEN = ASE_AWK_EOPEN, - ERR_READ = ASE_AWK_EREAD, - ERR_WRITE = ASE_AWK_EWRITE, - ERR_CLOSE = ASE_AWK_ECLOSE, - ERR_INTERN = ASE_AWK_EINTERN, - ERR_RUNTIME = ASE_AWK_ERUNTIME, - ERR_BLKNST = ASE_AWK_EBLKNST, - ERR_EXPRNST = ASE_AWK_EEXPRNST, - ERR_SINOP = ASE_AWK_ESINOP, - ERR_SINCL = ASE_AWK_ESINCL, - ERR_SINRD = ASE_AWK_ESINRD, - ERR_SOUTOP = ASE_AWK_ESOUTOP, - ERR_SOUTCL = ASE_AWK_ESOUTCL, - ERR_SOUTWR = ASE_AWK_ESOUTWR, - ERR_LXCHR = ASE_AWK_ELXCHR, - ERR_LXDIG = ASE_AWK_ELXDIG, - ERR_LXUNG = ASE_AWK_ELXUNG, - ERR_ENDSRC = ASE_AWK_EENDSRC, - ERR_ENDCMT = ASE_AWK_EENDCMT, - ERR_ENDSTR = ASE_AWK_EENDSTR, - ERR_ENDREX = ASE_AWK_EENDREX, - ERR_LBRACE = ASE_AWK_ELBRACE, - ERR_LPAREN = ASE_AWK_ELPAREN, - ERR_RPAREN = ASE_AWK_ERPAREN, - ERR_RBRACK = ASE_AWK_ERBRACK, - ERR_COMMA = ASE_AWK_ECOMMA, - ERR_SCOLON = ASE_AWK_ESCOLON, - ERR_COLON = ASE_AWK_ECOLON, - ERR_STMEND = ASE_AWK_ESTMEND, - ERR_IN = ASE_AWK_EIN, - ERR_NOTVAR = ASE_AWK_ENOTVAR, - ERR_EXPRES = ASE_AWK_EEXPRES, - ERR_FUNC = ASE_AWK_EFUNC, - ERR_WHILE = ASE_AWK_EWHILE, - ERR_ASSIGN = ASE_AWK_EASSIGN, - ERR_IDENT = ASE_AWK_EIDENT, - ERR_FNNAME = ASE_AWK_EFNNAME, - ERR_BLKBEG = ASE_AWK_EBLKBEG, - ERR_BLKEND = ASE_AWK_EBLKEND, - ERR_DUPBEG = ASE_AWK_EDUPBEG, - ERR_DUPEND = ASE_AWK_EDUPEND, - ERR_BFNRED = ASE_AWK_EBFNRED, - ERR_AFNRED = ASE_AWK_EAFNRED, - ERR_GBLRED = ASE_AWK_EGBLRED, - ERR_PARRED = ASE_AWK_EPARRED, - ERR_VARRED = ASE_AWK_EVARRED, - ERR_DUPPAR = ASE_AWK_EDUPPAR, - ERR_DUPGBL = ASE_AWK_EDUPGBL, - ERR_DUPLCL = ASE_AWK_EDUPLCL, - ERR_BADPAR = ASE_AWK_EBADPAR, - ERR_BADVAR = ASE_AWK_EBADVAR, - ERR_UNDEF = ASE_AWK_EUNDEF, - ERR_LVALUE = ASE_AWK_ELVALUE, - ERR_GBLTM = ASE_AWK_EGBLTM, - ERR_LCLTM = ASE_AWK_ELCLTM, - ERR_PARTM = ASE_AWK_EPARTM, - ERR_DELETE = ASE_AWK_EDELETE, - ERR_BREAK = ASE_AWK_EBREAK, - ERR_CONTINUE = ASE_AWK_ECONTINUE, - ERR_NEXTBEG = ASE_AWK_ENEXTBEG, - ERR_NEXTEND = ASE_AWK_ENEXTEND, - ERR_NEXTFBEG = ASE_AWK_ENEXTFBEG, - ERR_NEXTFEND = ASE_AWK_ENEXTFEND, - ERR_PRINTFARG = ASE_AWK_EPRINTFARG, - ERR_PREPST = ASE_AWK_EPREPST, - ERR_GLNCPS = ASE_AWK_EGLNCPS, - ERR_DIVBY0 = ASE_AWK_EDIVBY0, - ERR_OPERAND = ASE_AWK_EOPERAND, - ERR_POSIDX = ASE_AWK_EPOSIDX, - ERR_ARGTF = ASE_AWK_EARGTF, - ERR_ARGTM = ASE_AWK_EARGTM, - ERR_FNNONE = ASE_AWK_EFNNONE, - ERR_NOTIDX = ASE_AWK_ENOTIDX, - ERR_NOTDEL = ASE_AWK_ENOTDEL, - ERR_NOTMAP = ASE_AWK_ENOTMAP, - ERR_NOTMAPIN = ASE_AWK_ENOTMAPIN, - ERR_NOTMAPNILIN = ASE_AWK_ENOTMAPNILIN, - ERR_NOTREF = ASE_AWK_ENOTREF, - ERR_NOTASS = ASE_AWK_ENOTASS, - ERR_IDXVALASSMAP = ASE_AWK_EIDXVALASSMAP, - ERR_POSVALASSMAP = ASE_AWK_EPOSVALASSMAP, - ERR_MAPTOSCALAR = ASE_AWK_EMAPTOSCALAR, - ERR_SCALARTOMAP = ASE_AWK_ESCALARTOMAP, - ERR_MAPNOTALLOWED = ASE_AWK_EMAPNOTALLOWED, - ERR_VALTYPE = ASE_AWK_EVALTYPE, - ERR_RDELETE = ASE_AWK_ERDELETE, - ERR_RNEXTBEG = ASE_AWK_ERNEXTBEG, - ERR_RNEXTEND = ASE_AWK_ERNEXTEND, - ERR_RNEXTFBEG = ASE_AWK_ERNEXTFBEG, - ERR_RNEXTFEND = ASE_AWK_ERNEXTFEND, - ERR_BFNUSER = ASE_AWK_EBFNUSER, - ERR_BFNIMPL = ASE_AWK_EBFNIMPL, - ERR_IOUSER = ASE_AWK_EIOUSER, - ERR_IONONE = ASE_AWK_EIONONE, - ERR_IOIMPL = ASE_AWK_EIOIMPL, - ERR_IONMEM = ASE_AWK_EIONMEM, - ERR_IONMNL = ASE_AWK_EIONMNL, - ERR_FMTARG = ASE_AWK_EFMTARG, - ERR_FMTCNV = ASE_AWK_EFMTCNV, - ERR_CONVFMTCHR = ASE_AWK_ECONVFMTCHR, - ERR_OFMTCHR = ASE_AWK_EOFMTCHR, - ERR_REXRECUR = ASE_AWK_EREXRECUR, - ERR_REXRPAREN = ASE_AWK_EREXRPAREN, - ERR_REXRBRACKET = ASE_AWK_EREXRBRACKET, - ERR_REXRBRACE = ASE_AWK_EREXRBRACE, - ERR_REXUNBALPAR = ASE_AWK_EREXUNBALPAR, - ERR_REXCOLON = ASE_AWK_EREXCOLON, - ERR_REXCRANGE = ASE_AWK_EREXCRANGE, - ERR_REXCCLASS = ASE_AWK_EREXCCLASS, - ERR_REXBRANGE = ASE_AWK_EREXBRANGE, - ERR_REXEND = ASE_AWK_EREXEND, - ERR_REXGARBAGE = ASE_AWK_EREXGARBAGE, + ERR_NOERR = QSE_AWK_ENOERR, + ERR_CUSTOM = QSE_AWK_ECUSTOM, + ERR_INVAL = QSE_AWK_EINVAL, + ERR_NOMEM = QSE_AWK_ENOMEM, + ERR_NOSUP = QSE_AWK_ENOSUP, + ERR_NOPER = QSE_AWK_ENOPER, + ERR_NODEV = QSE_AWK_ENODEV, + ERR_NOSPC = QSE_AWK_ENOSPC, + ERR_MFILE = QSE_AWK_EMFILE, + ERR_MLINK = QSE_AWK_EMLINK, + ERR_AGAIN = QSE_AWK_EAGAIN, + ERR_NOENT = QSE_AWK_ENOENT, + ERR_EXIST = QSE_AWK_EEXIST, + ERR_FTBIG = QSE_AWK_EFTBIG, + ERR_TBUSY = QSE_AWK_ETBUSY, + ERR_ISDIR = QSE_AWK_EISDIR, + ERR_IOERR = QSE_AWK_EIOERR, + ERR_OPEN = QSE_AWK_EOPEN, + ERR_READ = QSE_AWK_EREAD, + ERR_WRITE = QSE_AWK_EWRITE, + ERR_CLOSE = QSE_AWK_ECLOSE, + ERR_INTERN = QSE_AWK_EINTERN, + ERR_RUNTIME = QSE_AWK_ERUNTIME, + ERR_BLKNST = QSE_AWK_EBLKNST, + ERR_EXPRNST = QSE_AWK_EEXPRNST, + ERR_SINOP = QSE_AWK_ESINOP, + ERR_SINCL = QSE_AWK_ESINCL, + ERR_SINRD = QSE_AWK_ESINRD, + ERR_SOUTOP = QSE_AWK_ESOUTOP, + ERR_SOUTCL = QSE_AWK_ESOUTCL, + ERR_SOUTWR = QSE_AWK_ESOUTWR, + ERR_LXCHR = QSE_AWK_ELXCHR, + ERR_LXDIG = QSE_AWK_ELXDIG, + ERR_LXUNG = QSE_AWK_ELXUNG, + ERR_ENDSRC = QSE_AWK_EENDSRC, + ERR_ENDCMT = QSE_AWK_EENDCMT, + ERR_ENDSTR = QSE_AWK_EENDSTR, + ERR_ENDREX = QSE_AWK_EENDREX, + ERR_LBRACE = QSE_AWK_ELBRACE, + ERR_LPAREN = QSE_AWK_ELPAREN, + ERR_RPAREN = QSE_AWK_ERPAREN, + ERR_RBRACK = QSE_AWK_ERBRACK, + ERR_COMMA = QSE_AWK_ECOMMA, + ERR_SCOLON = QSE_AWK_ESCOLON, + ERR_COLON = QSE_AWK_ECOLON, + ERR_STMEND = QSE_AWK_ESTMEND, + ERR_IN = QSE_AWK_EIN, + ERR_NOTVAR = QSE_AWK_ENOTVAR, + ERR_EXPRES = QSE_AWK_EEXPRES, + ERR_FUNC = QSE_AWK_EFUNC, + ERR_WHILE = QSE_AWK_EWHILE, + ERR_ASSIGN = QSE_AWK_EASSIGN, + ERR_IDENT = QSE_AWK_EIDENT, + ERR_FNNAME = QSE_AWK_EFNNAME, + ERR_BLKBEG = QSE_AWK_EBLKBEG, + ERR_BLKEND = QSE_AWK_EBLKEND, + ERR_DUPBEG = QSE_AWK_EDUPBEG, + ERR_DUPEND = QSE_AWK_EDUPEND, + ERR_BFNRED = QSE_AWK_EBFNRED, + ERR_AFNRED = QSE_AWK_EAFNRED, + ERR_GBLRED = QSE_AWK_EGBLRED, + ERR_PARRED = QSE_AWK_EPARRED, + ERR_VARRED = QSE_AWK_EVARRED, + ERR_DUPPAR = QSE_AWK_EDUPPAR, + ERR_DUPGBL = QSE_AWK_EDUPGBL, + ERR_DUPLCL = QSE_AWK_EDUPLCL, + ERR_BADPAR = QSE_AWK_EBADPAR, + ERR_BADVAR = QSE_AWK_EBADVAR, + ERR_UNDEF = QSE_AWK_EUNDEF, + ERR_LVALUE = QSE_AWK_ELVALUE, + ERR_GBLTM = QSE_AWK_EGBLTM, + ERR_LCLTM = QSE_AWK_ELCLTM, + ERR_PARTM = QSE_AWK_EPARTM, + ERR_DELETE = QSE_AWK_EDELETE, + ERR_BREAK = QSE_AWK_EBREAK, + ERR_CONTINUE = QSE_AWK_ECONTINUE, + ERR_NEXTBEG = QSE_AWK_ENEXTBEG, + ERR_NEXTEND = QSE_AWK_ENEXTEND, + ERR_NEXTFBEG = QSE_AWK_ENEXTFBEG, + ERR_NEXTFEND = QSE_AWK_ENEXTFEND, + ERR_PRINTFARG = QSE_AWK_EPRINTFARG, + ERR_PREPST = QSE_AWK_EPREPST, + ERR_GLNCPS = QSE_AWK_EGLNCPS, + ERR_DIVBY0 = QSE_AWK_EDIVBY0, + ERR_OPERAND = QSE_AWK_EOPERAND, + ERR_POSIDX = QSE_AWK_EPOSIDX, + ERR_ARGTF = QSE_AWK_EARGTF, + ERR_ARGTM = QSE_AWK_EARGTM, + ERR_FNNONE = QSE_AWK_EFNNONE, + ERR_NOTIDX = QSE_AWK_ENOTIDX, + ERR_NOTDEL = QSE_AWK_ENOTDEL, + ERR_NOTMAP = QSE_AWK_ENOTMAP, + ERR_NOTMAPIN = QSE_AWK_ENOTMAPIN, + ERR_NOTMAPNILIN = QSE_AWK_ENOTMAPNILIN, + ERR_NOTREF = QSE_AWK_ENOTREF, + ERR_NOTASS = QSE_AWK_ENOTASS, + ERR_IDXVALASSMAP = QSE_AWK_EIDXVALASSMAP, + ERR_POSVALASSMAP = QSE_AWK_EPOSVALASSMAP, + ERR_MAPTOSCALAR = QSE_AWK_EMAPTOSCALAR, + ERR_SCALARTOMAP = QSE_AWK_ESCALARTOMAP, + ERR_MAPNOTALLOWED = QSE_AWK_EMAPNOTALLOWED, + ERR_VALTYPE = QSE_AWK_EVALTYPE, + ERR_RDELETE = QSE_AWK_ERDELETE, + ERR_RNEXTBEG = QSE_AWK_ERNEXTBEG, + ERR_RNEXTEND = QSE_AWK_ERNEXTEND, + ERR_RNEXTFBEG = QSE_AWK_ERNEXTFBEG, + ERR_RNEXTFEND = QSE_AWK_ERNEXTFEND, + ERR_BFNUSER = QSE_AWK_EBFNUSER, + ERR_BFNIMPL = QSE_AWK_EBFNIMPL, + ERR_IOUSER = QSE_AWK_EIOUSER, + ERR_IONONE = QSE_AWK_EIONONE, + ERR_IOIMPL = QSE_AWK_EIOIMPL, + ERR_IONMEM = QSE_AWK_EIONMEM, + ERR_IONMNL = QSE_AWK_EIONMNL, + ERR_FMTARG = QSE_AWK_EFMTARG, + ERR_FMTCNV = QSE_AWK_EFMTCNV, + ERR_CONVFMTCHR = QSE_AWK_ECONVFMTCHR, + ERR_OFMTCHR = QSE_AWK_EOFMTCHR, + ERR_REXRECUR = QSE_AWK_EREXRECUR, + ERR_REXRPAREN = QSE_AWK_EREXRPAREN, + ERR_REXRBRACKET = QSE_AWK_EREXRBRACKET, + ERR_REXRBRACE = QSE_AWK_EREXRBRACE, + ERR_REXUNBALPAR = QSE_AWK_EREXUNBALPAR, + ERR_REXCOLON = QSE_AWK_EREXCOLON, + ERR_REXCRANGE = QSE_AWK_EREXCRANGE, + ERR_REXCCLASS = QSE_AWK_EREXCCLASS, + ERR_REXBRANGE = QSE_AWK_EREXBRANGE, + ERR_REXEND = QSE_AWK_EREXEND, + ERR_REXGARBAGE = QSE_AWK_EREXGARBAGE, }; // end of enum ErrorCode @@ -554,58 +554,58 @@ public: /** Defines options */ enum Option { - OPT_IMPLICIT = ASE_AWK_IMPLICIT, - OPT_EXPLICIT = ASE_AWK_EXPLICIT, - OPT_BXOR = ASE_AWK_BXOR, - OPT_SHIFT = ASE_AWK_SHIFT, - OPT_IDIV = ASE_AWK_IDIV, - OPT_EXTIO = ASE_AWK_EXTIO, - OPT_COPROC = ASE_AWK_COPROC, + OPT_IMPLICIT = QSE_AWK_IMPLICIT, + OPT_EXPLICIT = QSE_AWK_EXPLICIT, + OPT_BXOR = QSE_AWK_BXOR, + OPT_SHIFT = QSE_AWK_SHIFT, + OPT_IDIV = QSE_AWK_IDIV, + OPT_EXTIO = QSE_AWK_EXTIO, + OPT_COPROC = QSE_AWK_COPROC, /** Can terminate a statement with a new line */ - OPT_NEWLINE = ASE_AWK_NEWLINE, + OPT_NEWLINE = QSE_AWK_NEWLINE, - OPT_BASEONE = ASE_AWK_BASEONE, - OPT_STRIPSPACES = ASE_AWK_STRIPSPACES, + OPT_BASEONE = QSE_AWK_BASEONE, + OPT_STRIPSPACES = QSE_AWK_STRIPSPACES, /** Support the nextofile statement */ - OPT_NEXTOFILE = ASE_AWK_NEXTOFILE, + OPT_NEXTOFILE = QSE_AWK_NEXTOFILE, /** Use CR+LF instead of LF for line breaking. */ - OPT_CRLF = ASE_AWK_CRLF, + OPT_CRLF = QSE_AWK_CRLF, /** * When set, the values specified in a call to Awk::run * as the second and the third parameter are passed to * the function specified as the first parameter. */ - OPT_ARGSTOMAIN = ASE_AWK_ARGSTOMAIN, + OPT_ARGSTOMAIN = QSE_AWK_ARGSTOMAIN, /** Enables the keyword 'reset' */ - OPT_RESET = ASE_AWK_RESET, + OPT_RESET = QSE_AWK_RESET, /** Allows the assignment of a map value to a variable */ - OPT_MAPTOVAR = ASE_AWK_MAPTOVAR, + OPT_MAPTOVAR = QSE_AWK_MAPTOVAR, /** Allows BEGIN, END, pattern-action blocks */ - OPT_PABLOCK = ASE_AWK_PABLOCK + OPT_PABLOCK = QSE_AWK_PABLOCK }; // end of enum Option enum Global { - GBL_ARGC = ASE_AWK_GLOBAL_ARGC, - GBL_ARGV = ASE_AWK_GLOBAL_ARGV, - GBL_CONVFMT = ASE_AWK_GLOBAL_CONVFMT, - GBL_FILENAME = ASE_AWK_GLOBAL_FILENAME, - GBL_FNR = ASE_AWK_GLOBAL_FNR, - GBL_FS = ASE_AWK_GLOBAL_FS, - GBL_IGNORECASE = ASE_AWK_GLOBAL_IGNORECASE, - GBL_NF = ASE_AWK_GLOBAL_NF, - GBL_NR = ASE_AWK_GLOBAL_NR, - GBL_OFILENAME = ASE_AWK_GLOBAL_OFILENAME, - GBL_OFMT = ASE_AWK_GLOBAL_OFMT, - GBL_OFS = ASE_AWK_GLOBAL_OFS, - GBL_ORS = ASE_AWK_GLOBAL_ORS, - GBL_RLENGTH = ASE_AWK_GLOBAL_RLENGTH, - GBL_RS = ASE_AWK_GLOBAL_RS, - GBL_RSTART = ASE_AWK_GLOBAL_RSTART, - GBL_SUBSEP = ASE_AWK_GLOBAL_SUBSEP + GBL_ARGC = QSE_AWK_GLOBAL_ARGC, + GBL_ARGV = QSE_AWK_GLOBAL_ARGV, + GBL_CONVFMT = QSE_AWK_GLOBAL_CONVFMT, + GBL_FILENAME = QSE_AWK_GLOBAL_FILENAME, + GBL_FNR = QSE_AWK_GLOBAL_FNR, + GBL_FS = QSE_AWK_GLOBAL_FS, + GBL_IGNORECASE = QSE_AWK_GLOBAL_IGNORECASE, + GBL_NF = QSE_AWK_GLOBAL_NF, + GBL_NR = QSE_AWK_GLOBAL_NR, + GBL_OFILENAME = QSE_AWK_GLOBAL_OFILENAME, + GBL_OFMT = QSE_AWK_GLOBAL_OFMT, + GBL_OFS = QSE_AWK_GLOBAL_OFS, + GBL_ORS = QSE_AWK_GLOBAL_ORS, + GBL_RLENGTH = QSE_AWK_GLOBAL_RLENGTH, + GBL_RS = QSE_AWK_GLOBAL_RS, + GBL_RSTART = QSE_AWK_GLOBAL_RSTART, + GBL_SUBSEP = QSE_AWK_GLOBAL_SUBSEP }; /** Represents the execution context */ @@ -799,12 +799,12 @@ public: /** Defines the depth ID */ enum Depth { - DEPTH_BLOCK_PARSE = ASE_AWK_DEPTH_BLOCK_PARSE, - DEPTH_BLOCK_RUN = ASE_AWK_DEPTH_BLOCK_RUN, - DEPTH_EXPR_PARSE = ASE_AWK_DEPTH_EXPR_PARSE, - DEPTH_EXPR_RUN = ASE_AWK_DEPTH_EXPR_RUN, - DEPTH_REX_BUILD = ASE_AWK_DEPTH_REX_BUILD, - DEPTH_REX_MATCH = ASE_AWK_DEPTH_REX_MATCH + DEPTH_BLOCK_PARSE = QSE_AWK_DEPTH_BLOCK_PARSE, + DEPTH_BLOCK_RUN = QSE_AWK_DEPTH_BLOCK_RUN, + DEPTH_EXPR_PARSE = QSE_AWK_DEPTH_EXPR_PARSE, + DEPTH_EXPR_RUN = QSE_AWK_DEPTH_EXPR_RUN, + DEPTH_REX_BUILD = QSE_AWK_DEPTH_REX_BUILD, + DEPTH_REX_MATCH = QSE_AWK_DEPTH_REX_MATCH }; /** Sets the maximum depth */ @@ -816,16 +816,16 @@ public: virtual int setErrorString (ErrorCode num, const char_t* str); virtual int getWord ( - const char_t* ow, ase_size_t owl, - const char_t** nw, ase_size_t* nwl); + const char_t* ow, qse_size_t owl, + const char_t** nw, qse_size_t* nwl); virtual int setWord ( const char_t* ow, const char_t* nw); virtual int setWord ( - const char_t* ow, ase_size_t owl, - const char_t* nw, ase_size_t nwl); + const char_t* ow, qse_size_t owl, + const char_t* nw, qse_size_t nwl); virtual int unsetWord (const char_t* ow); - virtual int unsetWord (const char_t* ow, ase_size_t owl); + virtual int unsetWord (const char_t* ow, qse_size_t owl); virtual int unsetAllWords (); /** @@ -870,8 +870,8 @@ public: * with Awk::enableRunCallback and Awk::disableRunCallback. * Call Awk::getErrorCode to get extended error information. */ - virtual int run (const char_t* main = ASE_NULL, - const char_t** args = ASE_NULL, size_t nargs = 0); + virtual int run (const char_t* main = QSE_NULL, + const char_t** args = QSE_NULL, size_t nargs = 0); /** * Requests aborting execution of the parse tree @@ -1071,8 +1071,8 @@ protected: static void* reallocMem (void* data, void* ptr, size_t n); static void freeMem (void* data, void* ptr); - static bool_t isType (void* data, cint_t c, ase_ccls_type_t type); - static cint_t transCase (void* data, cint_t c, ase_ccls_type_t type); + static bool_t isType (void* data, cint_t c, qse_ccls_type_t type); + static cint_t transCase (void* data, cint_t c, qse_ccls_type_t type); static real_t pow (void* data, real_t x, real_t y); static int sprintf (void* data, char_t* buf, size_t size, @@ -1097,13 +1097,13 @@ private: void triggerOnRunStart (Run& run); - ase_mmgr_t mmgr; - ase_ccls_t ccls; - ase_awk_prmfns_t prmfns; + qse_mmgr_t mmgr; + qse_ccls_t ccls; + qse_awk_prmfns_t prmfns; }; ///////////////////////////////// -ASE_END_NAMESPACE(ASE) +QSE_END_NAMESPACE(ASE) ///////////////////////////////// #endif diff --git a/qse/include/ase/awk/StdAwk.hpp b/qse/include/qse/awk/StdAwk.hpp similarity index 95% rename from qse/include/ase/awk/StdAwk.hpp rename to qse/include/qse/awk/StdAwk.hpp index 6291ca4d..340384bf 100644 --- a/qse/include/ase/awk/StdAwk.hpp +++ b/qse/include/qse/awk/StdAwk.hpp @@ -4,13 +4,13 @@ * {License} */ -#ifndef _ASE_AWK_STDAWK_HPP_ -#define _ASE_AWK_STDAWK_HPP_ +#ifndef _QSE_AWK_STDAWK_HPP_ +#define _QSE_AWK_STDAWK_HPP_ -#include +#include ///////////////////////////////// -ASE_BEGIN_NAMESPACE(ASE) +QSE_BEGIN_NAMESPACE(ASE) ///////////////////////////////// /** @@ -90,7 +90,7 @@ protected: }; ///////////////////////////////// -ASE_END_NAMESPACE(ASE) +QSE_END_NAMESPACE(ASE) ///////////////////////////////// #endif diff --git a/qse/include/qse/awk/awk.h b/qse/include/qse/awk/awk.h new file mode 100644 index 00000000..64313f16 --- /dev/null +++ b/qse/include/qse/awk/awk.h @@ -0,0 +1,1210 @@ +/* + * $Id: awk.h 501 2008-12-17 08:39:15Z baconevi $ + * + * {License} + */ + +#ifndef _QSE_AWK_AWK_H_ +#define _QSE_AWK_AWK_H_ + +#include +#include +#include +#include + +/****o* qse.awk/awk interpreter + * DESCRIPTION + * The library includes an AWK interpreter that can be embedded into other + * applications or can run stand-alone. + * + * #include + ****** + */ + +typedef struct qse_awk_t qse_awk_t; +typedef struct qse_awk_run_t qse_awk_run_t; +typedef struct qse_awk_val_t qse_awk_val_t; +typedef struct qse_awk_extio_t qse_awk_extio_t; + +typedef struct qse_awk_prmfns_t qse_awk_prmfns_t; +typedef struct qse_awk_srcios_t qse_awk_srcios_t; +typedef struct qse_awk_runios_t qse_awk_runios_t; +typedef struct qse_awk_runcbs_t qse_awk_runcbs_t; +typedef struct qse_awk_runarg_t qse_awk_runarg_t; +typedef struct qse_awk_rexfns_t qse_awk_rexfns_t; + +typedef qse_real_t (*qse_awk_pow_t) (void* data, qse_real_t x, qse_real_t y); +typedef int (*qse_awk_sprintf_t) ( + void* data, qse_char_t* buf, qse_size_t size, + const qse_char_t* fmt, ...); + +typedef qse_ssize_t (*qse_awk_io_t) ( + int cmd, void* arg, qse_char_t* data, qse_size_t count); + +struct qse_awk_extio_t +{ + qse_awk_run_t* run; /* [IN] */ + int type; /* [IN] console, file, coproc, pipe */ + int mode; /* [IN] read, write, etc */ + qse_char_t* name; /* [IN] */ + void* data; /* [IN] */ + void* handle; /* [OUT] */ + + /* input */ + struct + { + qse_char_t buf[2048]; + qse_size_t pos; + qse_size_t len; + qse_bool_t eof; + qse_bool_t eos; + } in; + + /* output */ + struct + { + qse_bool_t eof; + qse_bool_t eos; + } out; + + qse_awk_extio_t* next; +}; + +struct qse_awk_prmfns_t +{ + qse_awk_pow_t pow; /* required */ + qse_awk_sprintf_t sprintf; /* required */ + + /* user-defined data passed to the functions above */ + void* data; /* optional */ +}; + +struct qse_awk_srcios_t +{ + qse_awk_io_t in; + qse_awk_io_t out; + void* data; +}; + +struct qse_awk_runios_t +{ + qse_awk_io_t pipe; + qse_awk_io_t coproc; + qse_awk_io_t file; + qse_awk_io_t console; + void* data; +}; + +struct qse_awk_runcbs_t +{ + void (*on_start) ( + qse_awk_run_t* run, void* data); + + void (*on_statement) ( + qse_awk_run_t* run, qse_size_t line, void* data); + + void (*on_return) ( + qse_awk_run_t* run, qse_awk_val_t* ret, void* data); + + void (*on_end) ( + qse_awk_run_t* run, int errnum, void* data); + + void* data; +}; + +struct qse_awk_runarg_t +{ + qse_char_t* ptr; + qse_size_t len; +}; + +struct qse_awk_rexfns_t +{ + void* (*build) ( + qse_awk_t* awk, const qse_char_t* ptn, + qse_size_t len, int* errnum); + + int (*match) ( + qse_awk_t* awk, void* code, int option, + const qse_char_t* str, qse_size_t len, + const qse_char_t** mptr, qse_size_t* mlen, + int* errnum); + + void (*free) (qse_awk_t* awk, void* code); + + qse_bool_t (*isempty) (qse_awk_t* awk, void* code); +}; + +/* io function commands */ +enum qse_awk_iocmd_t +{ + QSE_AWK_IO_OPEN = 0, + QSE_AWK_IO_CLOSE = 1, + QSE_AWK_IO_READ = 2, + QSE_AWK_IO_WRITE = 3, + QSE_AWK_IO_FLUSH = 4, + QSE_AWK_IO_NEXT = 5 +}; + +/* various options */ +enum qse_awk_option_t +{ + /* allow undeclared variables and implicit concatenation */ + QSE_AWK_IMPLICIT = (1 << 0), + + /* allow explicit variable declaration, the concatenation + * operator(.), and a parse-time function check. */ + QSE_AWK_EXPLICIT = (1 << 1), + + /* change ^ from exponentation to bitwise xor */ + QSE_AWK_BXOR = (1 << 3), + + /* support shift operators */ + QSE_AWK_SHIFT = (1 << 4), + + /* enable the idiv operator (double slashes) */ + QSE_AWK_IDIV = (1 << 5), + + /* support getline and print */ + QSE_AWK_EXTIO = (1 << 7), + + /* support co-process - NOT IMPLEMENTED YET */ + QSE_AWK_COPROC = (1 << 8), + + /* can terminate a statement with a new line */ + QSE_AWK_NEWLINE = (1 << 9), + + /* use 1 as the start index for string operations and ARGV */ + QSE_AWK_BASEONE = (1 << 10), + + /* strip off leading and trailing spaces when splitting a record + * into fields with a regular expression. + * + * Consider the following program. + * BEGIN { FS="[:[:space:]]+"; } + * { + * print "NF=" NF; + * for (i = 0; i < NF; i++) print i " [" $(i+1) "]"; + * } + * + * The program splits " a b c " into [a], [b], [c] when this + * option is on while into [], [a], [b], [c], [] when it is off. + */ + QSE_AWK_STRIPSPACES = (1 << 11), + + /* enable the nextoutfile keyword */ + QSE_AWK_NEXTOFILE = (1 << 12), + + /* cr + lf by default */ + QSE_AWK_CRLF = (1 << 13), + + /* pass the arguments to the main function */ + QSE_AWK_ARGSTOMAIN = (1 << 14), + + /* enable the non-standard keyword reset */ + QSE_AWK_RESET = (1 << 15), + + /* allows the assignment of a map value to a variable */ + QSE_AWK_MAPTOVAR = (1 << 16), + + /* allows BEGIN, END, pattern-action blocks */ + QSE_AWK_PABLOCK = (1 << 17) +}; + +/* error code */ +enum qse_awk_errnum_t +{ + QSE_AWK_ENOERR, /* no error */ + QSE_AWK_ECUSTOM, /* custom error */ + + QSE_AWK_EINVAL, /* invalid parameter or data */ + QSE_AWK_ENOMEM, /* out of memory */ + QSE_AWK_ENOSUP, /* not supported */ + QSE_AWK_ENOPER, /* operation not allowed */ + QSE_AWK_ENODEV, /* no such device */ + QSE_AWK_ENOSPC, /* no space left on device */ + QSE_AWK_EMFILE, /* too many open files */ + QSE_AWK_EMLINK, /* too many links */ + QSE_AWK_EAGAIN, /* resource temporarily unavailable */ + QSE_AWK_ENOENT, /* "'%.*s' not existing */ + QSE_AWK_EEXIST, /* file or data exists */ + QSE_AWK_EFTBIG, /* file or data too big */ + QSE_AWK_ETBUSY, /* system too busy */ + QSE_AWK_EISDIR, /* is a directory */ + QSE_AWK_EIOERR, /* i/o error */ + + QSE_AWK_EOPEN, /* cannot open */ + QSE_AWK_EREAD, /* cannot read */ + QSE_AWK_EWRITE, /* cannot write */ + QSE_AWK_ECLOSE, /* cannot close */ + + QSE_AWK_EINTERN, /* internal error */ + QSE_AWK_ERUNTIME, /* run-time error */ + QSE_AWK_EBLKNST, /* blocke nested too deeply */ + QSE_AWK_EEXPRNST, /* expression nested too deeply */ + + QSE_AWK_ESINOP, + QSE_AWK_ESINCL, + QSE_AWK_ESINRD, + + QSE_AWK_ESOUTOP, + QSE_AWK_ESOUTCL, + QSE_AWK_ESOUTWR, + + QSE_AWK_ELXCHR, /* lexer came accross an wrong character */ + QSE_AWK_ELXDIG, /* invalid digit */ + QSE_AWK_ELXUNG, /* lexer failed to unget a character */ + + QSE_AWK_EENDSRC, /* unexpected end of source */ + QSE_AWK_EENDCMT, /* a comment not closed properly */ + QSE_AWK_EENDSTR, /* a string not closed with a quote */ + QSE_AWK_EENDREX, /* unexpected end of a regular expression */ + QSE_AWK_ELBRACE, /* left brace expected */ + QSE_AWK_ELPAREN, /* left parenthesis expected */ + QSE_AWK_ERPAREN, /* right parenthesis expected */ + QSE_AWK_ERBRACK, /* right bracket expected */ + QSE_AWK_ECOMMA, /* comma expected */ + QSE_AWK_ESCOLON, /* semicolon expected */ + QSE_AWK_ECOLON, /* colon expected */ + QSE_AWK_ESTMEND, /* statement not ending with a semicolon */ + QSE_AWK_EIN, /* keyword 'in' is expected */ + QSE_AWK_ENOTVAR, /* not a variable name after 'in' */ + QSE_AWK_EEXPRES, /* expression expected */ + + QSE_AWK_EFUNC, /* keyword 'func' is expected */ + QSE_AWK_EWHILE, /* keyword 'while' is expected */ + QSE_AWK_EASSIGN, /* assignment statement expected */ + QSE_AWK_EIDENT, /* identifier expected */ + QSE_AWK_EFNNAME, /* not a valid function name */ + QSE_AWK_EBLKBEG, /* BEGIN requires an action block */ + QSE_AWK_EBLKEND, /* END requires an action block */ + QSE_AWK_EDUPBEG, /* duplicate BEGIN */ + QSE_AWK_EDUPEND, /* duplicate END */ + QSE_AWK_EBFNRED, /* intrinsic function redefined */ + QSE_AWK_EAFNRED, /* function redefined */ + QSE_AWK_EGBLRED, /* global variable redefined */ + QSE_AWK_EPARRED, /* parameter redefined */ + QSE_AWK_EVARRED, /* named variable redefined */ + QSE_AWK_EDUPPAR, /* duplicate parameter name */ + QSE_AWK_EDUPGBL, /* duplicate global variable name */ + QSE_AWK_EDUPLCL, /* duplicate local variable name */ + QSE_AWK_EBADPAR, /* not a valid parameter name */ + QSE_AWK_EBADVAR, /* not a valid variable name */ + QSE_AWK_EUNDEF, /* undefined identifier */ + QSE_AWK_ELVALUE, /* l-value required */ + QSE_AWK_EGBLTM, /* too many global variables */ + QSE_AWK_ELCLTM, /* too many local variables */ + QSE_AWK_EPARTM, /* too many parameters */ + QSE_AWK_EDELETE, /* delete not followed by a variable */ + QSE_AWK_ERESET, /* reset not followed by a variable */ + QSE_AWK_EBREAK, /* break outside a loop */ + QSE_AWK_ECONTINUE, /* continue outside a loop */ + QSE_AWK_ENEXTBEG, /* next illegal in BEGIN block */ + QSE_AWK_ENEXTEND, /* next illegal in END block */ + QSE_AWK_ENEXTFBEG, /* nextfile illegal in BEGIN block */ + QSE_AWK_ENEXTFEND, /* nextfile illegal in END block */ + QSE_AWK_EPRINTFARG, /* printf not followed by any arguments */ + QSE_AWK_EPREPST, /* both prefix and postfix increment/decrement + operator present */ + QSE_AWK_EGLNCPS, /* coprocess not supported by getline */ + + /* run time error */ + QSE_AWK_EDIVBY0, /* divide by zero */ + QSE_AWK_EOPERAND, /* invalid operand */ + QSE_AWK_EPOSIDX, /* wrong position index */ + QSE_AWK_EARGTF, /* too few arguments */ + QSE_AWK_EARGTM, /* too many arguments */ + QSE_AWK_EFNNONE, /* "function '%.*s' not found" */ + QSE_AWK_ENOTIDX, /* variable not indexable */ + QSE_AWK_ENOTDEL, /* variable not deletable */ + QSE_AWK_ENOTMAP, /* value not a map */ + QSE_AWK_ENOTMAPIN, /* right-hand side of 'in' not a map */ + QSE_AWK_ENOTMAPNILIN, /* right-hand side of 'in' not a map nor nil */ + QSE_AWK_ENOTREF, /* value not referenceable */ + QSE_AWK_ENOTASS, /* value not assignable */ + QSE_AWK_EIDXVALASSMAP, /* indexed value cannot be assigned a map */ + QSE_AWK_EPOSVALASSMAP, /* a positional cannot be assigned a map */ + QSE_AWK_EMAPTOSCALAR, /* cannot change a map to a scalar value */ + QSE_AWK_ESCALARTOMAP, /* cannot change a scalar value to a map */ + QSE_AWK_EMAPNOTALLOWED, /* a map is not allowed */ + QSE_AWK_EVALTYPE, /* wrong value type */ + QSE_AWK_ERDELETE, /* delete called with a wrong target */ + QSE_AWK_ERRESET, /* reset called with a wrong target */ + QSE_AWK_ERNEXTBEG, /* next called from BEGIN */ + QSE_AWK_ERNEXTEND, /* next called from END */ + QSE_AWK_ERNEXTFBEG, /* nextfile called from BEGIN */ + QSE_AWK_ERNEXTFEND, /* nextfile called from END */ + QSE_AWK_EBFNUSER, /* wrong intrinsic function implementation */ + QSE_AWK_EBFNIMPL, /* intrinsic function handler failed */ + QSE_AWK_EIOUSER, /* wrong user io handler implementation */ + QSE_AWK_EIONONE, /* no such io name found */ + QSE_AWK_EIOIMPL, /* i/o callback returned an error */ + QSE_AWK_EIONMEM, /* i/o name empty */ + QSE_AWK_EIONMNL, /* i/o name contains '\0' */ + QSE_AWK_EFMTARG, /* arguments to format string not sufficient */ + QSE_AWK_EFMTCNV, /* recursion detected in format conversion */ + QSE_AWK_ECONVFMTCHR, /* an invalid character found in CONVFMT */ + QSE_AWK_EOFMTCHR, /* an invalid character found in OFMT */ + + /* regular expression error */ + QSE_AWK_EREXRECUR, /* recursion too deep */ + QSE_AWK_EREXRPAREN, /* a right parenthesis is expected */ + QSE_AWK_EREXRBRACKET, /* a right bracket is expected */ + QSE_AWK_EREXRBRACE, /* a right brace is expected */ + QSE_AWK_EREXUNBALPAR, /* unbalanced parenthesis */ + QSE_AWK_EREXCOLON, /* a colon is expected */ + QSE_AWK_EREXCRANGE, /* invalid character range */ + QSE_AWK_EREXCCLASS, /* invalid character class */ + QSE_AWK_EREXBRANGE, /* invalid boundary range */ + QSE_AWK_EREXEND, /* unexpected end of the pattern */ + QSE_AWK_EREXGARBAGE, /* garbage after the pattern */ + + /* the number of error numbers, internal use only */ + QSE_AWK_NUMERRNUM +}; + +/* depth types */ +enum qse_awk_depth_t +{ + QSE_AWK_DEPTH_BLOCK_PARSE = (1 << 0), + QSE_AWK_DEPTH_BLOCK_RUN = (1 << 1), + QSE_AWK_DEPTH_EXPR_PARSE = (1 << 2), + QSE_AWK_DEPTH_EXPR_RUN = (1 << 3), + QSE_AWK_DEPTH_REX_BUILD = (1 << 4), + QSE_AWK_DEPTH_REX_MATCH = (1 << 5) +}; + +/* extio types */ +enum qse_awk_extio_type_t +{ + /* extio types available */ + QSE_AWK_EXTIO_PIPE, + QSE_AWK_EXTIO_COPROC, + QSE_AWK_EXTIO_FILE, + QSE_AWK_EXTIO_CONSOLE, + + /* reserved for internal use only */ + QSE_AWK_EXTIO_NUM +}; + +enum qse_awk_extio_mode_t +{ + QSE_AWK_EXTIO_PIPE_READ = 0, + QSE_AWK_EXTIO_PIPE_WRITE = 1, + + /* + QSE_AWK_EXTIO_COPROC_READ = 0, + QSE_AWK_EXTIO_COPROC_WRITE = 1, + QSE_AWK_EXTIO_COPROC_RDWR = 2, + */ + + QSE_AWK_EXTIO_FILE_READ = 0, + QSE_AWK_EXTIO_FILE_WRITE = 1, + QSE_AWK_EXTIO_FILE_APPEND = 2, + + QSE_AWK_EXTIO_CONSOLE_READ = 0, + QSE_AWK_EXTIO_CONSOLE_WRITE = 1 +}; + +enum qse_awk_global_id_t +{ + /* this table should match gtab in parse.c. + * in addition, qse_awk_setglobal also counts + * on the order of these values */ + + QSE_AWK_GLOBAL_ARGC, + QSE_AWK_GLOBAL_ARGV, + QSE_AWK_GLOBAL_CONVFMT, + QSE_AWK_GLOBAL_FILENAME, + QSE_AWK_GLOBAL_FNR, + QSE_AWK_GLOBAL_FS, + QSE_AWK_GLOBAL_IGNORECASE, + QSE_AWK_GLOBAL_NF, + QSE_AWK_GLOBAL_NR, + QSE_AWK_GLOBAL_OFILENAME, + QSE_AWK_GLOBAL_OFMT, + QSE_AWK_GLOBAL_OFS, + QSE_AWK_GLOBAL_ORS, + QSE_AWK_GLOBAL_RLENGTH, + QSE_AWK_GLOBAL_RS, + QSE_AWK_GLOBAL_RSTART, + QSE_AWK_GLOBAL_SUBSEP, + + /* these are not not the actual IDs and are used internally only + * Make sure you update these values properly if you add more + * ID definitions, however */ + QSE_AWK_MIN_GLOBAL_ID = QSE_AWK_GLOBAL_ARGC, + QSE_AWK_MAX_GLOBAL_ID = QSE_AWK_GLOBAL_SUBSEP +}; + +enum qse_awk_val_type_t +{ + /* the values between QSE_AWK_VAL_NIL and QSE_AWK_VAL_STR inclusive + * must be synchronized with an internal table of the __cmp_val + * function in run.c */ + QSE_AWK_VAL_NIL = 0, + QSE_AWK_VAL_INT = 1, + QSE_AWK_VAL_REAL = 2, + QSE_AWK_VAL_STR = 3, + + QSE_AWK_VAL_REX = 4, + QSE_AWK_VAL_MAP = 5, + QSE_AWK_VAL_REF = 6 +}; + +enum qse_awk_val_ref_id_t +{ + /* keep these items in the same order as corresponding items + * in tree.h */ + QSE_AWK_VAL_REF_NAMED, + QSE_AWK_VAL_REF_GLOBAL, + QSE_AWK_VAL_REF_LOCAL, + QSE_AWK_VAL_REF_ARG, + QSE_AWK_VAL_REF_NAMEDIDX, + QSE_AWK_VAL_REF_GLOBALIDX, + QSE_AWK_VAL_REF_LOCALIDX, + QSE_AWK_VAL_REF_ARGIDX, + QSE_AWK_VAL_REF_POS +}; + +enum qse_awk_valtostr_opt_t +{ + QSE_AWK_VALTOSTR_CLEAR = (1 << 0), + QSE_AWK_VALTOSTR_FIXED = (1 << 1),/* this overrides CLEAR */ + QSE_AWK_VALTOSTR_PRINT = (1 << 2) +}; + +enum qse_awk_parse_ist_t +{ + QSE_AWK_PARSE_FILES = 0, + QSE_AWK_PARSE_STRING = 1 +}; + +typedef struct qse_awk_val_nil_t qse_awk_val_nil_t; +typedef struct qse_awk_val_int_t qse_awk_val_int_t; +typedef struct qse_awk_val_real_t qse_awk_val_real_t; +typedef struct qse_awk_val_str_t qse_awk_val_str_t; +typedef struct qse_awk_val_rex_t qse_awk_val_rex_t; +typedef struct qse_awk_val_map_t qse_awk_val_map_t; +typedef struct qse_awk_val_ref_t qse_awk_val_ref_t; + +/* this is not a value. it is just a value holder */ +typedef struct qse_awk_val_chunk_t qse_awk_val_chunk_t; + +#if QSE_SIZEOF_INT == 2 +#define QSE_AWK_VAL_HDR \ + unsigned int type: 3; \ + unsigned int ref: 13 +#else +#define QSE_AWK_VAL_HDR \ + unsigned int type: 3; \ + unsigned int ref: 29 +#endif + +#define QSE_AWK_VAL_TYPE(x) ((x)->type) + +struct qse_awk_val_t +{ + QSE_AWK_VAL_HDR; +}; + +/* QSE_AWK_VAL_NIL */ +struct qse_awk_val_nil_t +{ + QSE_AWK_VAL_HDR; +}; + +/* QSE_AWK_VAL_INT */ +struct qse_awk_val_int_t +{ + QSE_AWK_VAL_HDR; + qse_long_t val; + void* nde; +}; + +/* QSE_AWK_VAL_REAL */ +struct qse_awk_val_real_t +{ + QSE_AWK_VAL_HDR; + qse_real_t val; + void* nde; +}; + +/* QSE_AWK_VAL_STR */ +struct qse_awk_val_str_t +{ + QSE_AWK_VAL_HDR; + qse_char_t* buf; + qse_size_t len; +}; + +/* QSE_AWK_VAL_REX */ +struct qse_awk_val_rex_t +{ + QSE_AWK_VAL_HDR; + qse_char_t* buf; + qse_size_t len; + void* code; +}; + +/* QSE_AWK_VAL_MAP */ +struct qse_awk_val_map_t +{ + QSE_AWK_VAL_HDR; + + /* TODO: make val_map to array if the indices used are all + * integers switch to map dynamically once the + * non-integral index is seen. + */ + qse_map_t* map; +}; + +/* QSE_AWK_VAL_REF */ +struct qse_awk_val_ref_t +{ + QSE_AWK_VAL_HDR; + + int id; + /* if id is QSE_AWK_VAL_REF_POS, adr holds an index of the + * positional variable. Otherwise, adr points to the value + * directly. */ + qse_awk_val_t** adr; +}; +#ifdef __cplusplus +extern "C" { +#endif + +/** represents the nil value */ +extern qse_awk_val_t* qse_awk_val_nil; + +/** represents an empty string */ +extern qse_awk_val_t* qse_awk_val_zls; + +/** represents a numeric value -1 */ +extern qse_awk_val_t* qse_awk_val_negone; + +/** represents a numeric value 0 */ +extern qse_awk_val_t* qse_awk_val_zero; + +/** represents a numeric value 1 */ +extern qse_awk_val_t* qse_awk_val_one; + +/****f* qse.awk/qse_awk_open + * NAME + * qse_awk_open - create an awk object + * + * DESCRIPTION + * The qse_awk_open() function creates a new qse_awk_t instance. + * The instance created can be passed to other qse_awk_xxx() functions and + * is valid until it is successfully destroyed using the qse_qse_close() + * function. + * + * RETURN + * The qse_awk_open() function returns the pointer to an qse_awk_t instance + * on success and QSE_NULL on failure. + * + * SYNOPSIS + */ +qse_awk_t* qse_awk_open ( + qse_mmgr_t* mmgr /* a memory manager */, + qse_size_t xtnsize /* size of extension area in bytes */ +); +/******/ + +/****f* qse.awk/qse_awk_close + * NAME + * qse_awk_close - destroy an awk object + * + * An qse_awk_t instance should be destroyed using the qse_awk_close() function + * when finished being used. The instance passed is not valid any more once + * the function returns success. + * + * RETURN + * 0 on success, -1 on failure + * + * SYNOPSIS + */ +int qse_awk_close ( + qse_awk_t* awk /* an awk object */ +); +/******/ + +/****f* qse.awk/qse_awk_getmmgr + * NAME + * qse_awk_getmmgr - get the memory manager + * + * DESCRIPTION + * The qse_awk_getmmgr() function returns the pointer to the memory manager. + * + * SYNOPSIS + */ +qse_mmgr_t* qse_awk_getmmgr ( + qse_awk_t* awk /* an awk object */ +); +/******/ + +void qse_awk_setmmgr ( + qse_awk_t* awk, + qse_mmgr_t* mmgr +); + +/****f* qse.awk/qse_awk_getxtn + * NAME + * qse_awk_getxtn - get the extension + * + * DESCRIPTION + * The extension area is allocated in the qse_awk_open() function when it is + * given a positive extension size. The pointer to the beginning of the area + * can be acquired using the qse_awk_getxtn() function and be utilized + * for various purposes. + * + * SYNOPSIS + */ +void* qse_awk_getxtn ( + qse_awk_t* awk /* an awk object */ +); +/******/ + +qse_ccls_t* qse_awk_getccls ( + qse_awk_t* awk +); + +/* + * set the character classfier + */ +void qse_awk_setccls ( + /* the pointer to an qse_awk_t instance */ + qse_awk_t* awk, + /* the pointer to a character classfiler */ + qse_ccls_t* ccls +); + +qse_awk_prmfns_t* qse_awk_getprmfns ( + qse_awk_t* awk +); + +/* + * set primitive functions + */ +void qse_awk_setprmfns ( + /* the pointer to an qse_awk_t instance */ + qse_awk_t* awk, + /* the pointer to a primitive function structure */ + qse_awk_prmfns_t* prmfns +); + +/* + * clear an qse_awk_t instance + * + * If you want to reuse an qse_awk_t instance that finished being used, + * you may call qse_awk_close instead of destroying and creating a new + * qse_awk_t instance using qse_awk_close() and qse_awk_open(). + * + * RETURN 0 on success, -1 on failure + */ +int qse_awk_clear ( + /* the pointer to an qse_awk_t instance */ + qse_awk_t* awk +); + +const qse_char_t* qse_awk_geterrstr (qse_awk_t* awk, int num); +int qse_awk_seterrstr (qse_awk_t* awk, int num, const qse_char_t* str); + +int qse_awk_geterrnum (qse_awk_t* awk); +qse_size_t qse_awk_geterrlin (qse_awk_t* awk); +const qse_char_t* qse_awk_geterrmsg (qse_awk_t* awk); + +void qse_awk_seterrnum (qse_awk_t* awk, int errnum); +void qse_awk_seterrmsg (qse_awk_t* awk, + int errnum, qse_size_t errlin, const qse_char_t* errmsg); + +void qse_awk_geterror ( + qse_awk_t* awk, int* errnum, + qse_size_t* errlin, const qse_char_t** errmsg); + +void qse_awk_seterror ( + qse_awk_t* awk, int errnum, qse_size_t errlin, + const qse_cstr_t* errarg, qse_size_t argcnt); + +int qse_awk_getoption (qse_awk_t* awk); +void qse_awk_setoption (qse_awk_t* awk, int opt); + +qse_size_t qse_awk_getmaxdepth (qse_awk_t* awk, int type); +void qse_awk_setmaxdepth (qse_awk_t* awk, int types, qse_size_t depth); + +int qse_awk_getword ( + qse_awk_t* awk, + const qse_char_t* okw, + qse_size_t olen, + const qse_char_t** nkw, + qse_size_t* nlen +); + +int qse_awk_unsetword ( + qse_awk_t* awk, + const qse_char_t* kw, + qse_size_t len +); + +void qse_awk_unsetallwords ( + qse_awk_t* awk +); + +/* + * NAME: + * enable replacement of a name of a keyword, intrinsic global variables, + * and intrinsic functions. + * + * DESCRIPTION: + * If nkw is QSE_NULL or nlen is zero and okw is QSE_NULL or olen is zero, + * it unsets all word replacements. If nkw is QSE_NULL or nlen is zero, + * it unsets the replacement for okw and olen. If all of them are valid, + * it sets the word replace for okw and olen to nkw and nlen. + * + * RETURNS: 0 on success, -1 on failure + */ +int qse_awk_setword ( + /* the pointer to an qse_awk_t instance */ + qse_awk_t* awk, + /* the pointer to an old keyword */ + const qse_char_t* okw, + /* the length of the old keyword */ + qse_size_t olen, + /* the pointer to an new keyword */ + const qse_char_t* nkw, + /* the length of the new keyword */ + qse_size_t nlen +); + +/* + * set the customized regular processing routine. (TODO: NOT YET IMPLEMENTED) + * + * RETURNS 0 on success, -1 on failure + */ +int qse_awk_setrexfns (qse_awk_t* awk, qse_awk_rexfns_t* rexfns); + +/****f* qse.awk/qse_awk_addglobal + * NAME + * qse_awk_addglobal - add an intrinsic global variable. + * + * RETURN + * On success, the ID of the global variable added is returned. + * On failure, -1 is returned. + * + * SYNOPSIS + */ +int qse_awk_addglobal ( + qse_awk_t* awk, + const qse_char_t* name, + qse_size_t len +); +/******/ + +/****f* qse.awk/qse_awk_delglobal + * NAME + * qse_awk_delglobal - delete an instrinsic global variable. + * + * SYNOPSIS + */ +int qse_awk_delglobal ( + qse_awk_t* awk, + const qse_char_t* name, + qse_size_t len +); +/******/ + +/****f* qse.awk/qse_awk_parse + * NAME + * qse_awk_parse - parse source code + * + * SYNOPSIS + */ +int qse_awk_parse ( + qse_awk_t* awk, + qse_awk_srcios_t* srcios +); +/******/ + + +/****f* qse.awk/qse_awk_opensimple + * NAME + * qse_awk_opensimple - create an awk object + * + * SYNOPSIS + */ +qse_awk_t* qse_awk_opensimple ( + qse_size_t xtnsize /* size of extension area in bytes */ +); +/******/ + +/****f* qse.awk/qse_awk_parsesimple + * NAME + * qse_awk_parsesimple - parse source code + * + * SYNOPSIS + */ +int qse_awk_parsesimple ( + qse_awk_t* awk, + const void* isp /* source file names or source string */, + int ist /* QSE_AWK_PARSE_FILES, QSE_AWK_PARSE_STRING */, + const qse_char_t* osf /* an output source file name */ +); +/******/ + +/****f* qse.awk/qse_awk_runsimple + * NAME + * qse_awk_runsimple - run a parsed program + * + * SYNOPSIS + */ +int qse_awk_runsimple ( + qse_awk_t* awk, + qse_char_t** icf /* input console files */, + qse_awk_runcbs_t* cbs /* callbacks */ +); +/******/ + +/** + * Executes a parsed program. + * + * qse_awk_run returns 0 on success and -1 on failure, generally speaking. + * A runtime context is required for it to start running the program. + * Once the runtime context is created, the program starts to run. + * The context creation failure is reported by the return value -1 of + * this function. however, the runtime error after the context creation + * is reported differently depending on the use of the callback. + * When no callback is specified (i.e. runcbs is QSE_NULL), qse_awk_run + * returns -1 on an error and awk->errnum is set accordingly. + * However, if a callback is specified (i.e. runcbs is not QSE_NULL), + * qse_awk_run returns 0 on both success and failure. Instead, the + * on_end handler of the callback is triggered with the relevant + * error number. The third parameter to on_end denotes this error number. + */ +int qse_awk_run ( + qse_awk_t* awk, const qse_char_t* main, + qse_awk_runios_t* runios, qse_awk_runcbs_t* runcbs, + qse_awk_runarg_t* runarg, void* data); + +void qse_awk_stop (qse_awk_run_t* run); +void qse_awk_stopall (qse_awk_t* awk); + +qse_bool_t qse_awk_isstop (qse_awk_run_t* run); + + +/** + * Gets the number of arguments passed to qse_awk_run + */ +qse_size_t qse_awk_getnargs (qse_awk_run_t* run); + +/** + * Gets an argument passed to qse_awk_run + */ +qse_awk_val_t* qse_awk_getarg (qse_awk_run_t* run, qse_size_t idx); + +/****f* qse.awk/qse_awk_getglobal + * NAME + * qse_awk_getglobal - gets the value of a global variable + * + * PARAMETERS + * id - A global variable id. An ID is one of the predefined global + * variable IDs or the value returned by qse_awk_addglobal(). + * + * RETURN + * The pointer to a value is returned. This function never fails + * so long as id is valid. Otherwise, you may fall into trouble. + */ +qse_awk_val_t* qse_awk_getglobal ( + qse_awk_run_t* run, + int id +); +/******/ + +int qse_awk_setglobal ( + qse_awk_run_t* run, + int id, + qse_awk_val_t* val +); + +/****f* qse.awk/qse_awk_setretval + * NAME + * qse_awk_setretval - set the return value + * + * DESCRIPTION + * The qse_awk_setretval() sets the return value of a function + * when called from within a function handlers. The caller doesn't + * have to invoke qse_awk_refupval() and qse_awk_refdownval() + * with the value to be passed to qse_awk_setretval(). + * The qse_awk_setretval() will update its reference count properly + * once the return value is set. + */ +void qse_awk_setretval ( + qse_awk_run_t* run, + qse_awk_val_t* val +); + +int qse_awk_setfilename ( + qse_awk_run_t* run, const qse_char_t* name, qse_size_t len); +int qse_awk_setofilename ( + qse_awk_run_t* run, const qse_char_t* name, qse_size_t len); + + +/****f* qse.awk/qse_awk_getrunawk + * NAME + * qse_awk_getrunawk - get the owning awk object + * + * SYNOPSIS + */ +qse_awk_t* qse_awk_getrunawk ( + qse_awk_run_t* run +); +/******/ + +/****f* qse.awk/qse_awk_getrunmmgr + * NAME + * qse_awk_getrunmmgr - get the memory manager of a run object + * + * SYNOPSIS + */ +qse_mmgr_t* qse_awk_getrunmmgr ( + qse_awk_run_t* run +); +/******/ + +/****f* qse.awk/qse_awk_getrundata + * NAME + * qse_awk_getrundata - get the user-specified data for a run object + * + * SYNOPSIS + */ +void* qse_awk_getrundata ( + qse_awk_run_t* run +); +/******/ + +/****f* qse.awk/qse_awk_getrunnvmap + * NAME + * qse_awk_getrunnvmap - get the map of named variables + * + * SYNOPSIS + */ +qse_map_t* qse_awk_getrunnvmap ( + qse_awk_run_t* run +); +/******/ + +/* functions to manipulate the run-time error */ +int qse_awk_getrunerrnum ( + qse_awk_run_t* run +); +qse_size_t qse_awk_getrunerrlin ( + qse_awk_run_t* run +); +const qse_char_t* qse_awk_getrunerrmsg ( + qse_awk_run_t* run +); +void qse_awk_setrunerrnum ( + qse_awk_run_t* run, + int errnum +); +void qse_awk_setrunerrmsg ( + qse_awk_run_t* run, + int errnum, + qse_size_t errlin, + const qse_char_t* errmsg +); + +void qse_awk_getrunerror ( + qse_awk_run_t* run, int* errnum, + qse_size_t* errlin, const qse_char_t** errmsg); + +void qse_awk_setrunerror ( + qse_awk_run_t* run, int errnum, qse_size_t errlin, + const qse_cstr_t* errarg, qse_size_t argcnt); + +/* functions to manipulate intrinsic functions */ +void* qse_awk_addfunc ( + qse_awk_t* awk, const qse_char_t* name, qse_size_t name_len, + int when_valid, qse_size_t min_args, qse_size_t max_args, + const qse_char_t* arg_spec, + int (*handler)(qse_awk_run_t*,const qse_char_t*,qse_size_t)); + +int qse_awk_delfunc ( + qse_awk_t* awk, const qse_char_t* name, qse_size_t name_len); + +void qse_awk_clrbfn (qse_awk_t* awk); + +/* record and field functions */ +int qse_awk_clrrec (qse_awk_run_t* run, qse_bool_t skip_inrec_line); +int qse_awk_setrec (qse_awk_run_t* run, qse_size_t idx, const qse_char_t* str, qse_size_t len); + +/* utility functions exported by awk.h */ + +/* + * NAME allocate dynamic memory + * + * DESCRIPTION + * + * + * RETURNS + * the pointer to the memory area allocated on success, QSE_NULL on failure + */ +void* qse_awk_alloc ( + /* the pointer to an qse_awk_t instance */ + qse_awk_t* awk, + /* the size of memory to allocate in bytes */ + qse_size_t size +); + +/* + * NAME free dynamic memory + * + * DESCRIPTION + */ +void qse_awk_free ( + /* the pointer to an qse_awk_t instance */ + qse_awk_t* awk, + /* the pointer to the memory area to free */ + void* ptr +); + +/* + * NAME duplicate a string + * + * DESCRIPTION + * The qse_awk_strdup() function is used to duplicate a string using + * the memory manager used by the associated qse_awk_t instance. + * The new string should be freed using the qse_awk_free() function. + * + * RETURNS + * The pointer to a new string which is a duplicate of the string s. + */ +qse_char_t* qse_awk_strdup ( + /* the pointer to an qse_awk_t instance */ + qse_awk_t* awk, + /* the pointer to a string */ + const qse_char_t* s +); + +/* + * NAME duplicate a string of a length given + * + * DESCRIPTION + * The qse_awk_strdup() function is used to duplicate a string whose length + * is as long as l characters using the memory manager used by the associated + * qse_awk_t instance. The new string should be freed using the qse_awk_free() + * function. + * + * RETURNS + * The pointer to a new string which is a duplicate of the string s. + */ +qse_char_t* qse_awk_strxdup (qse_awk_t* awk, const qse_char_t* s, qse_size_t l); + +qse_long_t qse_awk_strxtolong ( + qse_awk_t* awk, const qse_char_t* str, qse_size_t len, + int base, const qse_char_t** endptr); +qse_real_t qse_awk_strxtoreal ( + qse_awk_t* awk, const qse_char_t* str, qse_size_t len, + const qse_char_t** endptr); + +qse_size_t qse_awk_longtostr ( + qse_long_t value, int radix, const qse_char_t* prefix, + qse_char_t* buf, qse_size_t size); + +/* value manipulation functions */ +qse_awk_val_t* qse_awk_makeintval (qse_awk_run_t* run, qse_long_t v); +qse_awk_val_t* qse_awk_makerealval (qse_awk_run_t* run, qse_real_t v); + +qse_awk_val_t* qse_awk_makestrval0 ( + qse_awk_run_t* run, const qse_char_t* str); +qse_awk_val_t* qse_awk_makestrval ( + qse_awk_run_t* run, const qse_char_t* str, qse_size_t len); +qse_awk_val_t* qse_awk_makestrval_nodup ( + qse_awk_run_t* run, qse_char_t* str, qse_size_t len); +qse_awk_val_t* qse_awk_makestrval2 ( + qse_awk_run_t* run, + const qse_char_t* str1, qse_size_t len1, + const qse_char_t* str2, qse_size_t len2); + +qse_awk_val_t* qse_awk_makerexval ( + qse_awk_run_t* run, const qse_char_t* buf, qse_size_t len, void* code); +qse_awk_val_t* qse_awk_makemapval (qse_awk_run_t* run); +qse_awk_val_t* qse_awk_makerefval ( + qse_awk_run_t* run, int id, qse_awk_val_t** adr); + +qse_bool_t qse_awk_isstaticval (qse_awk_val_t* val); + +void qse_awk_freeval (qse_awk_run_t* run, qse_awk_val_t* val, qse_bool_t cache); + +void qse_awk_refupval (qse_awk_run_t* run, qse_awk_val_t* val); +void qse_awk_refdownval (qse_awk_run_t* run, qse_awk_val_t* val); +void qse_awk_refdownval_nofree (qse_awk_run_t* run, qse_awk_val_t* val); + +void qse_awk_freevalchunk (qse_awk_run_t* run, qse_awk_val_chunk_t* chunk); + +qse_bool_t qse_awk_valtobool ( + qse_awk_run_t* run, + qse_awk_val_t* val +); + +qse_char_t* qse_awk_valtostr ( + qse_awk_run_t* run, + qse_awk_val_t* val, + int opt, + qse_str_t* buf, + qse_size_t* len +); + +/****f* qse.awk/qse_awk_valtonum + * NAME + * qse_awk_valtonum - convert a value to a number + * + * DESCRIPTION + * The qse_awk_valtonum() function converts a value to a number. + * If the value is converted to a long number, it is stored in the memory + * pointed to by l and 0 is returned. If the value is converted to a real + * number, it is stored in the memory pointed to by r and 1 is returned. + * + * RETURN + * The qse_awk_valtonum() function returns -1 on error, 0 if the converted + * number is a long number and 1 if it is a real number. + * + * EXAMPLES + * qse_long_t l; + * qse_real_t r; + * int n; + * + * n = qse_awk_valtonum (v, &l, &r); + * if (n == -1) error (); + * else if (n == 0) do_long (l); + * else if (n == 1) do_real (r); + * + * SYNOPSIS + */ +int qse_awk_valtonum ( + qse_awk_run_t* run, + qse_awk_val_t* v /* the value to convert to a number */, + qse_long_t* l /* a pointer to a long number */, + qse_real_t* r /* a pointer to a qse_real_t */ +); +/******/ + +/****f* qse.awk/qse_awk_strtonum + * NAME + * qse_awk_strtonum - convert a string to a number + * + * SYNOPSIS + */ +int qse_awk_strtonum ( + qse_awk_run_t* run, + const qse_char_t* ptr, + qse_size_t len, + qse_long_t* l, + qse_real_t* r +); +/******/ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/qse/include/ase/awk/makefile.am b/qse/include/qse/awk/makefile.am similarity index 74% rename from qse/include/ase/awk/makefile.am rename to qse/include/qse/awk/makefile.am index 39339eeb..e660cf01 100644 --- a/qse/include/ase/awk/makefile.am +++ b/qse/include/qse/awk/makefile.am @@ -5,5 +5,5 @@ if ENABLE_CXX pkginclude_HEADERS += Awk.hpp StdAwk.hpp endif -pkgincludedir= $(includedir)/ase/awk +pkgincludedir= $(includedir)/qse/awk CLEANFILES = *dist diff --git a/qse/include/ase/awk/makefile.in b/qse/include/qse/awk/makefile.in similarity index 98% rename from qse/include/ase/awk/makefile.in rename to qse/include/qse/awk/makefile.in index 69719331..8e3ff698 100644 --- a/qse/include/ase/awk/makefile.in +++ b/qse/include/qse/awk/makefile.in @@ -32,7 +32,7 @@ POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ @ENABLE_CXX_TRUE@am__append_1 = Awk.hpp StdAwk.hpp -subdir = include/ase/awk +subdir = include/qse/awk DIST_COMMON = $(am__pkginclude_HEADERS_DIST) $(srcdir)/makefile.am \ $(srcdir)/makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 @@ -40,7 +40,7 @@ am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/include/ase/config.h +CONFIG_HEADER = $(top_builddir)/include/qse/config.h CONFIG_CLEAN_FILES = SOURCES = DIST_SOURCES = @@ -57,7 +57,7 @@ HEADERS = $(pkginclude_HEADERS) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -pkgincludedir = $(includedir)/ase/awk +pkgincludedir = $(includedir)/qse/awk ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ @@ -194,9 +194,9 @@ $(srcdir)/makefile.in: $(srcdir)/makefile.am $(am__configure_deps) exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign include/ase/awk/makefile'; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign include/qse/awk/makefile'; \ cd $(top_srcdir) && \ - $(AUTOMAKE) --foreign include/ase/awk/makefile + $(AUTOMAKE) --foreign include/qse/awk/makefile .PRECIOUS: makefile makefile: $(srcdir)/makefile.in $(top_builddir)/config.status @case '$?' in \ diff --git a/qse/include/qse/cmn/chr.h b/qse/include/qse/cmn/chr.h new file mode 100644 index 00000000..2895f487 --- /dev/null +++ b/qse/include/qse/cmn/chr.h @@ -0,0 +1,97 @@ +/* + * $Id: ctype.h 223 2008-06-26 06:44:41Z baconevi $ + */ + +#ifndef _QSE_CMN_CHR_H_ +#define _QSE_CMN_CHR_H_ + +#include +#include + +/* gets a pointer to the default memory manager */ +#define QSE_CCLS_GETDFL() (qse_ccls) + +/* sets a pointer to the default memory manager */ +#define QSE_CCLS_SETDFL(m) ((qse_ccls)=(m)) + +#define QSE_CCLS_IS(ccls,c,type) ((ccls)->is((ccls)->data,c,type)) +#define QSE_CCLS_TO(ccls,c,type) ((ccls)->to((ccls)->data,c,type)) + +#define QSE_CCLS_ISUPPER(ccls,c) QSE_CCLS_IS(ccls,c,QSE_CCLS_UPPER) +#define QSE_CCLS_ISLOWER(ccls,c) QSE_CCLS_IS(ccls,c,QSE_CCLS_LOWER) +#define QSE_CCLS_ISALPHA(ccls,c) QSE_CCLS_IS(ccls,c,QSE_CCLS_ALPHA) +#define QSE_CCLS_ISDIGIT(ccls,c) QSE_CCLS_IS(ccls,c,QSE_CCLS_DIGIT) +#define QSE_CCLS_ISXDIGIT(ccls,c) QSE_CCLS_IS(ccls,c,QSE_CCLS_XDIGIT) +#define QSE_CCLS_ISALNUM(ccls,c) QSE_CCLS_IS(ccls,c,QSE_CCLS_ALNUM) +#define QSE_CCLS_ISSPACE(ccls,c) QSE_CCLS_IS(ccls,c,QSE_CCLS_SPACE) +#define QSE_CCLS_ISPRINT(ccls,c) QSE_CCLS_IS(ccls,c,QSE_CCLS_PRINT) +#define QSE_CCLS_ISGRAPH(ccls,c) QSE_CCLS_IS(ccls,c,QSE_CCLS_GRAPH) +#define QSE_CCLS_ISCNTRL(ccls,c) QSE_CCLS_IS(ccls,c,QSE_CCLS_CNTRL) +#define QSE_CCLS_ISPUNCT(ccls,c) QSE_CCLS_IS(ccls,c,QSE_CCLS_PUNCT) +#define QSE_CCLS_TOUPPER(ccls,c) QSE_CCLS_TO(ccls,c,QSE_CCLS_UPPER) +#define QSE_CCLS_TOLOWER(ccls,c) QSE_CCLS_TO(ccls,c,QSE_CCLS_LOWER) + +#ifdef __cplusplus +extern "C" { +#endif + +extern qse_ccls_t* qse_ccls; + +qse_bool_t qse_ccls_is ( + qse_cint_t c, + qse_ccls_type_t type +); + +qse_cint_t qse_ccls_to ( + qse_cint_t c, + qse_ccls_type_t type +); + + + +qse_size_t qse_mblen ( + const qse_mchar_t* mb, + qse_size_t mblen +); + +/****f* qse.cmn.chr/qse_mbtowc + * NAME + * qse_mbtowc - convert a multibyte sequence to a wide character. + * + * RETURN + * The qse_mbtowc() function returns 0 if an invalid multibyte sequence is + * detected, mblen + 1 if the sequence is incomplete. It returns the number + * of bytes processed to form a wide character. + * + * SYNOPSIS + */ +qse_size_t qse_mbtowc ( + const qse_mchar_t* mb, + qse_size_t mblen, + qse_wchar_t* wc +); +/******/ + +/****f* qse.cmn.chr/qse_wctomb + * NAME + * qse_wctomb - convert a wide character to a multibyte sequence + * + * RETURN + * The qse_wctomb() functions returns 0 if the wide character is illegal, + * mblen + 1 if mblen is not large enough to hold the multibyte sequence. + * On successful conversion, it returns the number of bytes in the sequence. + * + * SYNOPSIS + */ +qse_size_t qse_wctomb ( + qse_wchar_t wc, + qse_mchar_t* mb, + qse_size_t mblen +); +/******/ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/qse/include/qse/cmn/dll.h b/qse/include/qse/cmn/dll.h new file mode 100644 index 00000000..2602609b --- /dev/null +++ b/qse/include/qse/cmn/dll.h @@ -0,0 +1,260 @@ +/* + * $Id: map.h 223 2008-06-26 06:44:41Z baconevi $ + * + * {License} + */ + +#ifndef _QSE_CMN_DLL_H_ +#define _QSE_CMN_DLL_H_ + +#include +#include + +/* + * Doubly Linked List + */ +typedef struct qse_dll_t qse_dll_t; +typedef struct qse_dll_node_t qse_dll_node_t; + +/* data copier */ +typedef void* (*qse_dll_copier_t) (qse_dll_t* dll, void* dptr, qse_size_t dlen); + +/* data freeer */ +typedef void (*qse_dll_freeer_t) (qse_dll_t* dll, void* dptr, qse_size_t dlen); + +/* node visitor */ +typedef int (*qse_dll_walker_t) ( + qse_dll_t* dll, qse_dll_node_t* node, void* arg); + +struct qse_dll_t +{ + qse_mmgr_t* mmgr; + + qse_dll_copier_t copier; + qse_dll_freeer_t freeer; + + qse_size_t size; + qse_dll_node_t* head; + qse_dll_node_t* tail; +}; + +struct qse_dll_node_t +{ + void* dptr; /* pointer to the beginning of data */ + qse_size_t dlen; /* length of data in bytes */ + qse_dll_node_t* next; /* pointer to the next node */ + qse_dll_node_t* prev; /* pointer to the prev node */ +}; + + +enum qse_dll_walk_t +{ + QSE_DLL_WALK_STOP = 0, + QSE_DLL_WALK_FORWARD = 1 +}; + +#define QSE_DLL_COPIER_INLINE qse_dll_copyinline + +#define QSE_DLL_HEAD(dll) ((dll)->head) +#define QSE_DLL_TAIL(dll) ((dll)->tail) +#define QSE_DLL_SIZE(dll) ((dll)->size) + +#define QSE_DLL_DPTR(n) ((n)->dptr) +#define QSE_DLL_DLEN(n) ((n)->dlen) +#define QSE_DLL_NEXT(n) ((n)->next) +#define QSE_DLL_PREV(n) ((n)->prev) + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * NAME: creates a doubly linked list with extension area + * + * DESCRIPTION: + * The qse_dll_open() function creates an empty doubly linked list. + * If the memory manager mmgr is QSE_NULL, the function gets the default + * memory manager with QSE_MMGR_GETMMGR() and uses it if it is not QSE_NULL. + * The extension area is allocated when the positive extension size extension + * is specified. It calls the extension initialization function initializer + * after initializing the main area. The extension initializer is passed + * the pointer to the doubly linked list created. + * + * RETURNS: + * the pointer to a newly created doubly linked list on success. + * QSE_NULL on failure. + * + * WARNING: + * In the debug build, it fails the assertion if QSE_MMGR_SETMMGR() returns + * QSE_NULL when QSE_NULL is passed as the first parameter. In the release + * build, it returns QSE_NULL if such a thing happens. + */ + +qse_dll_t* qse_dll_open ( + qse_mmgr_t* mmgr /* memory manager */ , + qse_size_t ext /* size of extension area in bytes */ +); + +/* + * NAME destroys a singly linked list + */ +void qse_dll_close ( + qse_dll_t* dll /* a singly linked list */ +); + +/* + * NAME deletes all elements of a singly linked list + */ +void qse_dll_clear ( + qse_dll_t* dll /* a singly linked list */ +); + +/* + * NAME specifies how to clone an element + * + * DESCRIPTION + * A special copier QSE_DLL_COPIER_INLINE is provided. This copier enables + * you to copy the data inline to the internal node. No freeer is invoked + * when the node is freeed. + * + * You may set the copier to QSE_NULL to perform no special operation + * when the data pointer is rememebered. + */ +void qse_dll_setcopier ( + qse_dll_t* dll /* a singly linked list */, + qse_dll_copier_t copier /* a element copier */ +); + +qse_dll_copier_t qse_dll_getcopier ( + qse_dll_t* dll /* a singly linked list */ +); + +/* + * NAME specifies how to destroy an element + * + * DESCRIPTION + * The freeer is called when a node containing the element is destroyed. + */ +void qse_dll_setfreeer ( + qse_dll_t* dll /* a singly linked list */, + qse_dll_freeer_t freeer /* a element freeer */ +); + +qse_dll_freeer_t qse_dll_getfreeer ( + qse_dll_t* dll /* a singly linked list */ +); + +/* + * NAME Gets the pointer to the extension area + * RETURN the pointer to the extension area + */ +void* qse_dll_getxtn ( + qse_dll_t* dll /* a singly linked list */ +); + +/* + * NAME: get the pointer to the memory manager in use + */ +qse_mmgr_t* qse_dll_getmmgr ( + qse_dll_t* dll /* a singly linked list */ +); + +void qse_dll_setmmgr (qse_dll_t* dll, qse_mmgr_t* mmgr); + +/* + * NAME Gets the number of elements held in a singly linked list + * RETURN the number of elements the list holds + */ +qse_size_t qse_dll_getsize ( + qse_dll_t* dll /* a singly linked list */ +); + +/* + * NAME Gets the head(first) node + * RETURN the tail node of a singly linked list + */ +qse_dll_node_t* qse_dll_gethead ( + qse_dll_t* dll /* a singly linked list */ +); + +/* + * NAME Gets the tail(last) node + * RETURN the tail node of a singly linked list + */ +qse_dll_node_t* qse_dll_gettail ( + qse_dll_t* dll /* a singly linked list */ +); + +/* + * NAME Inserts data before a positional node given + * + * DESCRIPTION + * Inserts data. + */ +qse_dll_node_t* qse_dll_insert ( + qse_dll_t* dll /* a singly linked list */, + qse_dll_node_t* pos /* a node before which a new node is inserted */, + void* dptr /* the pointer to the data */ , + qse_size_t dlen /* the length of the data in bytes */ +); + +qse_dll_node_t* qse_dll_pushhead ( + qse_dll_t* dll /* a singly linked list */, + void* dptr, + qse_size_t dlen +); + +qse_dll_node_t* qse_dll_pushtail ( + qse_dll_t* dll /* a singly linked list */, + void* dptr, + qse_size_t dlen +); + +void qse_dll_delete ( + qse_dll_t* dll, + qse_dll_node_t* pos +); + +void qse_dll_pophead ( + qse_dll_t* dll +); + +void qse_dll_poptail ( + qse_dll_t* dll +); + +/* + * NAME Traverses s singly linked list + * + * DESCRIPTION + * A singly linked list allows uni-directional in-order traversal. + * The qse_dll_walk() function traverses a singly linkked list from its + * head node down to its tail node as long as the walker function returns + * QSE_DLL_WALK_FORWARD. A walker can return QSE_DLL_WALK_STOP to cause + * immediate stop of traversal. + * For each node, the walker function is called and it is passed three + * parameters: the singly linked list, the visiting node, and the + * user-defined data passed as the third parameter in a call to the + * qse_dll_walk() function. + */ +void qse_dll_walk ( + qse_dll_t* dll /* a singly linked list */, + qse_dll_walker_t walker /* a user-defined walker function */, + void* arg /* pointer to user-defined data */ +); + +/* + * Causes a singly linked list to copy in data to a node. + * Use QSE_DLL_COPIER_INLINE instead. + */ +void* qse_dll_copyinline ( + qse_dll_t* dll /* a singly linked list */, + void* data /* pointer to data to copy */ , + qse_size_t len /* length of data in bytes */ +); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/qse/include/qse/cmn/fio.h b/qse/include/qse/cmn/fio.h new file mode 100644 index 00000000..26b140f6 --- /dev/null +++ b/qse/include/qse/cmn/fio.h @@ -0,0 +1,152 @@ +/* + * $Id$ + */ + +#ifndef _QSE_CMN_FIO_H_ +#define _QSE_CMN_FIO_H_ + +#include +#include + +enum qse_fio_open_flag_t +{ + /* treat the file name pointer as a handle pointer */ + QSE_FIO_HANDLE = (1 << 0), + + QSE_FIO_READ = (1 << 1), + QSE_FIO_WRITE = (1 << 2), + QSE_FIO_APPEND = (1 << 3), + + QSE_FIO_CREATE = (1 << 4), + QSE_FIO_TRUNCATE = (1 << 5), + QSE_FIO_EXCLUSIVE = (1 << 6), + QSE_FIO_SYNC = (1 << 7), + + /* for ms windows only */ + QSE_FIO_NOSHRD = (1 << 16), + QSE_FIO_NOSHWR = (1 << 17) +}; + +/* seek origin */ +enum qse_fio_seek_origin_t +{ + QSE_FIO_BEGIN = 0, + QSE_FIO_CURRENT = 1, + QSE_FIO_END = 2 +}; + +#ifdef _WIN32 +/* typedef PVOID HANDLE; */ +typedef void* qse_fio_hnd_t; +#else +typedef int qse_fio_hnd_t; +#endif + +/* file offset */ +typedef qse_int64_t qse_fio_off_t; +typedef enum qse_fio_seek_origin_t qse_fio_ori_t; + +typedef struct qse_fio_t qse_fio_t; + +struct qse_fio_t +{ + qse_mmgr_t* mmgr; + qse_fio_hnd_t handle; +}; + +#define QSE_FIO_MMGR(fio) ((fio)->mmgr) +#define QSE_FIO_HANDLE(fio) ((fio)->handle) + +#ifdef __cplusplus +extern "C" { +#endif + +/****f* qse.fio/qse_fio_open + * NAME + * qse_fio_open - open a file + * + * DESCRIPTION + * To open a file, you should set the flags with at least one of + * QSE_FIO_READ, QSE_FIO_WRITE, QSE_FIO_APPEND. + * + * SYNOPSIS + */ +qse_fio_t* qse_fio_open ( + qse_mmgr_t* mmgr, + qse_size_t ext, + const qse_char_t* path, + int flags, + int mode +); +/******/ + +/****f* qse.fio/qse_fio_close + * NAME + * qse_fio_close - close a file + * + * SYNOPSIS + */ +void qse_fio_close ( + qse_fio_t* fio +); +/******/ + +qse_fio_t* qse_fio_init ( + qse_fio_t* fio, + qse_mmgr_t* mmgr, + const qse_char_t* path, + int flags, + int mode +); + +void qse_fio_fini ( + qse_fio_t* fio +); + +qse_fio_hnd_t qse_fio_gethandle ( + qse_fio_t* fio +); + +/****f* qse.cmn.fio/qse_fio_sethandle + * SYNOPSIS + * qse_fio_sethandle - set the file handle + * WARNING + * Avoid using this function if you don't know what you are doing. + * You may have to retrieve the previous handle using qse_fio_gethandle() + * to take relevant actions before resetting it with qse_fio_sethandle(). + * SYNOPSIS + */ +void qse_fio_sethandle ( + qse_fio_t* fio, + qse_fio_hnd_t handle +); +/******/ + +qse_fio_off_t qse_fio_seek ( + qse_fio_t* fio, + qse_fio_off_t offset, + qse_fio_ori_t origin +); + +int qse_fio_truncate ( + qse_fio_t* fio, + qse_fio_off_t size +); + +qse_ssize_t qse_fio_read ( + qse_fio_t* fio, + void* buf, + qse_size_t size +); + +qse_ssize_t qse_fio_write ( + qse_fio_t* fio, + const void* buf, + qse_size_t size +); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/qse/include/qse/cmn/io.h b/qse/include/qse/cmn/io.h new file mode 100644 index 00000000..71f522af --- /dev/null +++ b/qse/include/qse/cmn/io.h @@ -0,0 +1,74 @@ +/* + * $Id: sysapi.h,v 1.56 2006/03/21 16:15:16 bacon Ease $ + */ + +#ifndef _QSE_CMN_IO_H_ +#define _QSE_CMN_IO_H_ + +#include +#include + +/* flags for qse_open */ +enum +{ + QSE_OPEN_READ = (1 << 0), + QSE_OPEN_WRITE = (1 << 1), + QSE_OPEN_CREATE = (1 << 2), + QSE_OPEN_TRUNCATE = (1 << 3), + QSE_OPEN_EXCLUSIVE = (1 << 4), + QSE_OPEN_APPEND = (1 << 5), + QSE_OPEN_NONBLOCK = (1 << 6) +}; + +/* origin for qse_seek */ +enum +{ + QSE_SEEK_BEGIN = 0, + QSE_SEEK_CURRENT = 1, + QSE_SEEK_END = 2 +}; + +#ifdef __cplusplus +extern "C" { +#endif + +qse_hnd_t qse_open ( + const qse_char_t* path, + int flag, + ... +); + +int qse_close ( + qse_hnd_t handle +); + +qse_ssize_t qse_read ( + qse_hnd_t handle, + void* buf, + qse_size_t sz +); + +qse_ssize_t qse_write ( + qse_hnd_t handle, + const void* data, + qse_size_t sz +); + +qse_off_t qse_seek ( + qse_hnd_t handle, + qse_off_t offset, + int origin +); + +/* +int qse_hstat (qse_hnd_t handle, qse_stat_t* buf); +int qse_hchmod (qse_hnd_t handle, qse_mode_t mode); +*/ +int qse_htruncate (qse_hnd_t handle, qse_off_t size); + +#ifdef __cplusplus +} +#endif + +#endif + diff --git a/qse/include/qse/cmn/lda.h b/qse/include/qse/cmn/lda.h new file mode 100644 index 00000000..54c7fa93 --- /dev/null +++ b/qse/include/qse/cmn/lda.h @@ -0,0 +1,477 @@ +/* + * $Id: lda.h 363 2008-09-04 10:58:08Z baconevi $ + * + * {License} + */ + +#ifndef _QSE_CMN_LDA_H_ +#define _QSE_CMN_LDA_H_ + +#include +#include + +/****o* qse.cmn.lda/linear dynamic array + * DESCRIPTION + * provides a linear dynamic array. It grows as more items + * are added. T + * + * #include + ****** + */ + +enum qse_lda_walk_t +{ + QSE_LDA_WALK_STOP = 0, + QSE_LDA_WALK_FORWARD = 1, + QSE_LDA_WALK_BACKWARD = 2 +}; + +typedef struct qse_lda_t qse_lda_t; +typedef struct qse_lda_node_t qse_lda_node_t; +typedef enum qse_lda_walk_t qse_lda_walk_t; + +#define QSE_LDA_COPIER_SIMPLE ((qse_lda_copier_t)1) +#define QSE_LDA_COPIER_INLINE ((qse_lda_copier_t)2) + +#define QSE_LDA_INVALID ((qse_size_t)-1) + +#define QSE_LDA_SIZE(lda) ((lda)->size) +#define QSE_LDA_CAPA(lda) ((lda)->capa) + +#define QSE_LDA_NODE(lda,index) ((lda)->node[index]) +#define QSE_LDA_DPTR(lda,index) ((lda)->node[index]->dptr) +#define QSE_LDA_DLEN(lda,index) ((lda)->node[index]->dlen) + +#define QSE_LDA_MMGR(lda) ((lda)->mmgr) +#define QSE_LDA_XTN(lda) ((void*)(((qse_lda_t*)lda) + 1)) + +#define QSE_LDA_COPIER(lda) ((lda)->copier) +#define QSE_LDA_FREEER(lda) ((lda)->freeer) +#define QSE_LDA_COMPER(lda) ((lda)->comper) +#define QSE_LDA_KEEPER(lda) ((lda)->keeper) +#define QSE_LDA_SIZER(lda) ((lda)->sizer) + + + +/****b* qse.cmn.lda/qse_lda_copier_t + * NAME + * qse_lda_copier_t - define a node contruction callback + * + * DESCRIPTION + * The qse_lda_copier_t defines a callback function for node construction. + * A node is contructed when a user adds data to a list. The user can + * define how the data to add can be maintained in the list. A singly + * linked list not specified with any copiers stores the data pointer and + * the data length into a node. A special copier QSE_LDA_COPIER_INLINE copies + * the contents of the data a user provided into the node. You can use the + * qse_lda_setcopier() function to change the copier. + * + * A copier should return the pointer to the copied data. If it fails to copy + * data, it may return QSE_NULL. You need to set a proper freeer to free up + * memory allocated for copy. + * + * SEE ALSO + * qse_lda_setcopier, qse_lda_getcopier, QSE_LDA_COPIER + * + * SYNOPSIS + */ +typedef void* (*qse_lda_copier_t) ( + qse_lda_t* lda /* a lda */, + void* dptr /* the pointer to data to copy */, + qse_size_t dlen /* the length of data to copy */ +); +/******/ + +/****b* qse.cmn.lda/qse_lda_freeer_t + * NAME + * qse_lda_freeer_t - define a node destruction callback + * SYNOPSIS + */ +typedef void (*qse_lda_freeer_t) ( + qse_lda_t* lda /* a lda */, + void* dptr /* the pointer to data to free */, + qse_size_t dlen /* the length of data to free */ +); +/******/ + +/****t* qse.cmn.lda/qse_lda_comper_t + * NAME + * qse_lda_comper_t - define a data comparator + * + * DESCRIPTION + * The qse_lda_comper_t type defines a key comparator that is called when + * the list needs to compare data. A linear dynamic array is created with a + * default comparator that performs bitwise comparison. + * + * The comparator should return 0 if the data are the same and a non-zero + * integer otherwise. + * + * SYNOPSIS + */ +typedef int (*qse_lda_comper_t) ( + qse_lda_t* lda /* a linear dynamic array */, + const void* dptr1 /* a data pointer */, + qse_size_t dlen1 /* a data length */, + const void* dptr2 /* a data pointer */, + qse_size_t dlen2 /* a data length */ +); +/******/ + +/****t* qse.cmn.lda/qse_lda_keeper_t + * NAME + * qse_lda_keeper_t - define a value keeper + * + * DESCRIPTION + * The qse_lda_keeper_t type defines a value keeper that is called when + * a value is retained in the context that it should be destroyed because + * it is identical to a new value. Two values are identical if their beginning + * pointers and their lengths are equal. + * + * SYNOPSIS + */ +typedef void (*qse_lda_keeper_t) ( + qse_lda_t* lda /* a lda */, + void* vptr /* the pointer to a value */, + qse_size_t vlen /* the length of a value */ +); +/******/ + +/****t* qse.cmn.lda/qse_lda_sizer_t + * NAME + * qse_lda_sizer_t - define an array size calculator + * + * DESCRIPTION + * The qse_lda_sizer_t type defines an array size claculator that is called + * when the array needs to be resized. + * + * SYNOPSIS + */ +typedef qse_size_t (*qse_lda_sizer_t) ( + qse_lda_t* lda, /* a linear dynamic array */ + qse_size_t hint /* a sizing hint */ +); +/******/ + +typedef qse_lda_walk_t (*qse_lda_walker_t) ( + qse_lda_t* lda /* a linear dynamic array */, + qse_size_t index /* the index to the visited node */, + void* arg /* user-defined data */ +); + +/****s* qse.cmn.lda/qse_lda_t + * NAME + * qse_lda_t - define a linear dynamic array + * + * SYNOPSIS + */ +struct qse_lda_t +{ + qse_mmgr_t* mmgr; /* memory manager */ + + qse_lda_copier_t copier; /* data copier */ + qse_lda_freeer_t freeer; /* data freeer */ + qse_lda_comper_t comper; /* data comparator */ + qse_lda_keeper_t keeper; /* data keeper */ + qse_lda_sizer_t sizer; /* size calculator */ + qse_byte_t scale; /* scale factor */ + qse_size_t size; /* the number of items */ + qse_size_t capa; /* capacity */ + qse_lda_node_t** node; +}; +/******/ + +/****s* + * NAME + * qse_lda_node_t - define a linear dynamic array node + * + * SYNOPSIS + */ +struct qse_lda_node_t +{ + void* dptr; + qse_size_t dlen; +}; +/******/ + +#ifdef __cplusplus +extern "C" { +#endif + +/****f* qse.cmn.lda/qse_lda_open + * NAME + * qse_lda_open - create a linear dynamic array + * + * SYNOPSIS + */ +qse_lda_t* qse_lda_open ( + qse_mmgr_t* lda, + qse_size_t ext, + qse_size_t capa +); +/******/ + +/****f* qse.cmn.lda/qse_lda_close + * NAME + * qse_lda_close - destroy a linear dynamic array + * + * SYNOPSIS + */ +void qse_lda_close ( + qse_lda_t* lda +); +/******/ + +/****f* qse.cmn.lda/qse_lda_init + * NAME + * qse_lda_init - initialize a linear dynamic array + * + * SYNOPSIS + */ +qse_lda_t* qse_lda_init ( + qse_lda_t* lda, + qse_mmgr_t* mmgr, + qse_size_t capa +); +/******/ + +/****f* qse.cmn.lda/qse_lda_fini + * NAME + * qse_lda_fini - deinitialize a linear dynamic array + * + * SYNOPSIS + */ +void qse_lda_fini ( + qse_lda_t* lda +); +/******/ + +/****f* qse.cmn.lda/qse_lda_getxtn + * NAME + * qse_lda_getxtn - get the pointer to the extension + * + * DESCRIPTION + * The qse_lda_getxtn() function returns the pointer to the extension. + * + * SYNOPSIS + */ +void* qse_lda_getxtn ( + qse_lda_t* lda /* a linear dynamic array */ +); +/******/ + +/****f* qse.cmn.lda/qse_lda_getmmgr + * NAME + * qse_lda_getmmgr - get the memory manager + * + * SYNOPSIS + */ +qse_mmgr_t* qse_lda_getmmgr ( + qse_lda_t* lda /* a linear dynamic array */ +); +/******/ + +/****f* qse.cmn.lda/qse_lda_setmmgr + * NAME + * qse_lda_setmmgr - set the memory manager + * + * SYNOPSIS + */ +void qse_lda_setmmgr ( + qse_lda_t* lda /* a linear dynamic array */, + qse_mmgr_t* mmgr /* a memory manager */ +); +/******/ + +int qse_lda_getscale ( + qse_lda_t* lda /* a lda */ +); + +/****f* qse.cmn.lda/qse_lda_setscale + * NAME + * qse_lda_setscale - set the scale factor + * + * DESCRIPTION + * The qse_lda_setscale() function sets the scale factor of the length + * of a key and a value. A scale factor determines the actual length of + * a key and a value in bytes. A lda is created with a scale factor of 1. + * The scale factor should be larger than 0 and less than 256. + * + * NOTES + * It is a bad idea to change the scale factor when a lda is not empty. + * + * SYNOPSIS + */ +void qse_lda_setscale ( + qse_lda_t* lda /* a lda */, + int scale /* a scale factor */ +); +/******/ + +qse_lda_copier_t qse_lda_getcopier ( + qse_lda_t* lda /* a lda */ +); + +/****f* qse.cmn.lda/qse_lda_setcopier + * NAME + * qse_lda_setcopier - specify how to clone an element + * + * DESCRIPTION + * A special copier QSE_LDA_COPIER_INLINE is provided. This copier enables + * you to copy the data inline to the internal node. No freeer is invoked + * when the node is freeed. + * + * You may set the copier to QSE_NULL to perform no special operation + * when the data pointer is rememebered. + * + * SYNOPSIS + */ +void qse_lda_setcopier ( + qse_lda_t* lda /* a lda */, + qse_lda_copier_t copier /* an element copier */ +); +/******/ + +qse_lda_freeer_t qse_lda_getfreeer ( + qse_lda_t* lda /* a lda */ +); + +/****f* qse.cmn.lda/qse_lda_setfreeer + * NAME + * qse_lda_setfreeer - specify how to destroy an element + * + * DESCRIPTION + * The freeer is called when a node containing the element is destroyed. + * + * SYNOPSIS + */ +void qse_lda_setfreeer ( + qse_lda_t* lda /* a lda */, + qse_lda_freeer_t freeer /* an element freeer */ +); +/******/ + +qse_lda_keeper_t qse_lda_getkeeper ( + qse_lda_t* lda +); + +void qse_lda_setkeeper ( + qse_lda_t* lda, + qse_lda_keeper_t keeper +); + +qse_lda_sizer_t qse_lda_getsizer ( + qse_lda_t* lda +); + +void qse_lda_setsizer ( + qse_lda_t* lda, + qse_lda_sizer_t sizer +); + +qse_size_t qse_lda_getsize ( + qse_lda_t* lda +); + +qse_size_t qse_lda_getcapa ( + qse_lda_t* lda +); + +qse_lda_t* qse_lda_setcapa ( + qse_lda_t* lda, + qse_size_t capa +); + +qse_size_t qse_lda_search ( + qse_lda_t* lda, + qse_size_t pos, + const void* dptr, + qse_size_t dlen +); + +qse_size_t qse_lda_rsearch ( + qse_lda_t* lda, + qse_size_t pos, + const void* dptr, + qse_size_t dlen +); + +qse_size_t qse_lda_upsert ( + qse_lda_t* lda, + qse_size_t index, + void* dptr, + qse_size_t dlen +); + +qse_size_t qse_lda_insert ( + qse_lda_t* lda, + qse_size_t index, + void* dptr, + qse_size_t dlen +); + +qse_size_t qse_lda_update ( + qse_lda_t* lda, + qse_size_t pos, + void* dptr, + qse_size_t dlen +); + +/****f* qse.cmn.lda/qse_lda_delete + * NAME + * qse_lda_delete - delete data + * + * DESCRIPTION + * The qse_lda_delete() function deletes the as many data as the count + * from the index. + * + * RETURN + * The qse_lda_delete() function returns the number of data deleted. + * + * SYNOPSIS + */ +qse_size_t qse_lda_delete ( + qse_lda_t* lda, + qse_size_t index, + qse_size_t count +); +/******/ + +/****f* qse.cmn.lda/qse_lda_uplete + * NAME + * qse_lda_uplete - delete data node + * + * DESCRIPTION + * The qse_lda_uplete() function deletes data node without compaction. + * + * RETURN + * The qse_lda_uplete() function returns the number of data affected. + * + */ +qse_size_t qse_lda_uplete ( + qse_lda_t* lda, + qse_size_t index, + qse_size_t count +); +/******/ + +void qse_lda_clear ( + qse_lda_t* lda +); + +void qse_lda_walk ( + qse_lda_t* lda, + qse_lda_walker_t walker, + void* arg +); + +void qse_lda_rwalk ( + qse_lda_t* lda, + qse_lda_walker_t walker, + void* arg +); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/qse/include/ase/cmn/makefile.am b/qse/include/qse/cmn/makefile.am similarity index 76% rename from qse/include/ase/cmn/makefile.am rename to qse/include/qse/cmn/makefile.am index f5babf4e..1f932c1d 100644 --- a/qse/include/ase/cmn/makefile.am +++ b/qse/include/qse/cmn/makefile.am @@ -1,7 +1,7 @@ pkginclude_HEADERS = mem.h chr.h str.h lda.h map.h rex.h sll.h dll.h opt.h fio.h tio.h sio.h time.h -pkgincludedir= $(includedir)/ase/cmn +pkgincludedir= $(includedir)/qse/cmn CLEANFILES = *dist diff --git a/qse/include/ase/cmn/makefile.in b/qse/include/qse/cmn/makefile.in similarity index 98% rename from qse/include/ase/cmn/makefile.in rename to qse/include/qse/cmn/makefile.in index 479f0c24..5bc584c3 100644 --- a/qse/include/ase/cmn/makefile.in +++ b/qse/include/qse/cmn/makefile.in @@ -31,7 +31,7 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -subdir = include/ase/cmn +subdir = include/qse/cmn DIST_COMMON = $(pkginclude_HEADERS) $(srcdir)/makefile.am \ $(srcdir)/makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 @@ -39,7 +39,7 @@ am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/include/ase/config.h +CONFIG_HEADER = $(top_builddir)/include/qse/config.h CONFIG_CLEAN_FILES = SOURCES = DIST_SOURCES = @@ -55,7 +55,7 @@ HEADERS = $(pkginclude_HEADERS) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -pkgincludedir = $(includedir)/ase/cmn +pkgincludedir = $(includedir)/qse/cmn ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ @@ -192,9 +192,9 @@ $(srcdir)/makefile.in: $(srcdir)/makefile.am $(am__configure_deps) exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign include/ase/cmn/makefile'; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign include/qse/cmn/makefile'; \ cd $(top_srcdir) && \ - $(AUTOMAKE) --foreign include/ase/cmn/makefile + $(AUTOMAKE) --foreign include/qse/cmn/makefile .PRECIOUS: makefile makefile: $(srcdir)/makefile.in $(top_builddir)/config.status @case '$?' in \ diff --git a/qse/include/qse/cmn/map.h b/qse/include/qse/cmn/map.h new file mode 100644 index 00000000..56ce1796 --- /dev/null +++ b/qse/include/qse/cmn/map.h @@ -0,0 +1,566 @@ +/* + * $Id: map.h 496 2008-12-15 09:56:48Z baconevi $ + * + * {License} + */ + +#ifndef _QSE_CMN_MAP_H_ +#define _QSE_CMN_MAP_H_ + +#include +#include + +/****o* qse.cmn.map/hash map + * DESCRIPTION + * A hash map maintains buckets for key/value pairs with the same key hash + * chained under the same bucket. + * + * #include + * + * EXAMPLES + * void f (void) + * { + * } + ****** + */ + +/* values that can be returned by qse_map_walker_t */ +enum qse_map_walk_t +{ + QSE_MAP_WALK_STOP = 0, + QSE_MAP_WALK_FORWARD = 1 +}; + +enum qse_map_id_t +{ + QSE_MAP_KEY = 0, + QSE_MAP_VAL = 1 +}; + +typedef struct qse_map_t qse_map_t; +typedef struct qse_map_pair_t qse_map_pair_t; +typedef enum qse_map_walk_t qse_map_walk_t; +typedef enum qse_map_id_t qse_map_id_t; + +/****b* qse.cmn.map/qse_map_copier_t + * NAME + * qse_map_copier_t - define a pair contruction callback + * SYNOPSIS + */ +typedef void* (*qse_map_copier_t) ( + qse_map_t* map /* a map */, + void* dptr /* the pointer to a key or a value */, + qse_size_t dlen /* the length of a key or a value */ +); +/******/ + +/****b* qse.cmn.map/qse_map_freeer_t + * NAME + * qse_map_freeer_t - define a key/value destruction callback + * SYNOPSIS + */ +typedef void (*qse_map_freeer_t) ( + qse_map_t* map /* a map */, + void* dptr /* the pointer to a key or a value */, + qse_size_t dlen /* the length of a key or a value */ +); +/******/ + +/* key hasher */ +typedef qse_size_t (*qse_map_hasher_t) ( + qse_map_t* map /* a map */, + const void* kptr /* the pointer to a key */, + qse_size_t klen /* the length of a key in bytes */ +); + +/****t* qse.cmn.map/qse_map_comper_t + * NAME + * qse_map_comper_t - define a key comparator + * + * DESCRIPTION + * The qse_map_comper_t type defines a key comparator that is called when + * the map needs to compare keys. A map is created with a default comparator + * which performs bitwise comparison between two keys. + * + * The comparator should return 0 if the keys are the same and a non-zero + * integer otherwise. + * + * SYNOPSIS + */ +typedef int (*qse_map_comper_t) ( + qse_map_t* map /* a map */, + const void* kptr1 /* the pointer to a key */, + qse_size_t klen1 /* the length of a key */, + const void* kptr2 /* the pointer to a key */, + qse_size_t klen2 /* the length of a key */ +); +/******/ + +/****t* qse.cmn.map/qse_map_keeper_t + * NAME + * qse_map_keeper_t - define a value keeper + * + * DESCRIPTION + * The qse_map_keeper_t type defines a value keeper that is called when + * a value is retained in the context that it should be destroyed because + * it is identical to a new value. Two values are identical if their beginning + * pointers and their lengths are equal. + * + * SYNOPSIS + */ +typedef void (*qse_map_keeper_t) ( + qse_map_t* map /* a map */, + void* vptr /* the pointer to a value */, + qse_size_t vlen /* the length of a value */ +); +/******/ + +/****t* qse.cmn.map/qse_map_sizer_t + * NAME + * qse_map_sizer_t - define a bucket size calculator + * + * DESCRIPTION + * The qse_map_sizer_T type defines a bucket size claculator that is called + * when a map should resize the bucket. The current bucket size +1 is passed + * as the hint. + * + * SYNOPSIS + */ +typedef qse_size_t (*qse_map_sizer_t) ( + qse_map_t* map, /* a map */ + qse_size_t hint /* a sizing hint */ +); +/******/ + +/****t* qse.cmn.map/qse_map_walker_t + * NAME + * qse_map_walker_t - define a pair visitor + * + * SYNOPSIS + */ +typedef qse_map_walk_t (*qse_map_walker_t) ( + qse_map_t* map /* a map */, + qse_map_pair_t* pair /* the pointer to a key/value pair */, + void* arg /* the pointer to user-defined data */ +); +/******/ + +/****s* qse.cmn.map/qse_map_pair_t + * NAME + * qse_map_pair_t - define a pair + * + * DESCRIPTION + * A pair is composed of a key and a value. It maintains pointers to the + * beginning of a key and a value plus their length. The length is scaled + * down with the scale factor specified in an owning map. Use macros defined + * in the SEE ALSO section below to access individual fields. + * + * SEE ALSO + * QSE_MAP_KPTR, QSE_MAP_KLEN, QSE_MAP_VPTR, QSE_MAP_VLEN + * + * SYNOPSIS + */ +struct qse_map_pair_t +{ + void* kptr; /* the pointer to a key */ + qse_size_t klen; /* the length of a key */ + void* vptr; /* the pointer to a value */ + qse_size_t vlen; /* the length of a value */ + qse_map_pair_t* next; /* the next pair under the same slot */ +}; +/*****/ + +/****s* qse.cmn.map/qse_map_t + * NAME + * qse_map_t - define a hash map + * + * SYNOPSIS + */ +struct qse_map_t +{ + qse_mmgr_t* mmgr; + qse_map_copier_t copier[2]; + qse_map_freeer_t freeer[2]; + qse_map_hasher_t hasher; /* key hasher */ + qse_map_comper_t comper; /* key comparator */ + qse_map_keeper_t keeper; /* value keeper */ + qse_map_sizer_t sizer; /* bucket capacity recalculator */ + qse_byte_t scale[2]; /* length scale */ + qse_byte_t factor; /* load factor */ + qse_byte_t filler0; + qse_size_t size; + qse_size_t capa; + qse_size_t threshold; + qse_map_pair_t** bucket; +}; +/******/ + +#define QSE_MAP_COPIER_SIMPLE ((qse_map_copier_t)1) +#define QSE_MAP_COPIER_INLINE ((qse_map_copier_t)2) + +/****d* qse.cmn.map/QSE_MAP_SIZE + * NAME + * QSE_MAP_SIZE - get the number of pairs + * + * DESCRIPTION + * The QSE_MAP_SIZE() macro returns the number of pairs in a map. + * + * SYNOPSIS + */ +#define QSE_MAP_SIZE(m) ((m)->size) +/*****/ + +/****d* qse.cmn.map/QSE_MAP_CAPA + * NAME + * QSE_MAP_CAPA - get the capacity of a map + * + * DESCRIPTION + * The QSE_MAP_CAPA() macro returns the maximum number of pairs a map can hold. + * + * SYNOPSIS + */ +#define QSE_MAP_CAPA(m) ((m)->capa) +/*****/ + +#define QSE_MAP_MMGR(m) ((m)->mmgr) +#define QSE_MAP_XTN(m) ((void*)(((qse_map_t*)m) + 1)) + +#define QSE_MAP_KCOPIER(m) ((m)->copier[QSE_MAP_KEY]) +#define QSE_MAP_VCOPIER(m) ((m)->copier[QSE_MAP_VAL]) +#define QSE_MAP_KFREEER(m) ((m)->freeer[QSE_MAP_KEY]) +#define QSE_MAP_VFREEER(m) ((m)->freeer[QSE_MAP_VAL]) +#define QSE_MAP_HASHER(m) ((m)->hasher) +#define QSE_MAP_COMPER(m) ((m)->comper) +#define QSE_MAP_KEEPER(m) ((m)->keeper) +#define QSE_MAP_SIZER(m) ((m)->sizer) + +#define QSE_MAP_FACTOR(m) ((m)->factor) +#define QSE_MAP_KSCALE(m) ((m)->scale[QSE_MAP_KEY]) +#define QSE_MAP_VSCALE(m) ((m)->scale[QSE_MAP_VAL]) + +#define QSE_MAP_KPTR(p) ((p)->kptr) +#define QSE_MAP_KLEN(p) ((p)->klen) +#define QSE_MAP_VPTR(p) ((p)->vptr) +#define QSE_MAP_VLEN(p) ((p)->vlen) +#define QSE_MAP_NEXT(p) ((p)->next) + +#ifdef __cplusplus +extern "C" { +#endif + +/****f* qse.cmn.map/qse_map_open + * NAME + * qse_map_open - creates a hash map + * + * DESCRIPTION + * The qse_map_open() function creates a hash map with a dynamic array + * bucket and a list of values chained. The initial capacity should be larger + * than 0. The load factor should be between 0 and 100 inclusive and the load + * factor of 0 disables bucket resizing. If you need extra space associated + * with a map, you may pass a non-zero value as the second parameter. + * The QSE_MAP_XTN() macro and the qse_map_getxtn() function + * return the pointer to the beginning of the extension. + * + * RETURN + * The qse_map_open() function returns an qse_map_t pointer on success and + * QSE_NULL on failure. + * + * SEE ALSO + * QSE_MAP_XTN, qse_map_getxtn + * + * SYNOPSIS + */ +qse_map_t* qse_map_open ( + qse_mmgr_t* mmgr /* a memory manager */, + qse_size_t ext /* extension size in bytes */, + qse_size_t capa /* initial capacity */, + int factor /* load factor */ +); +/******/ + + +/****f* qse.cmn.map/qse_map_close + * NAME + * qse_map_close - destroy a hash map + * + * DESCRIPTION + * The qse_map_close() function destroys a hash map. + * + * SYNOPSIS + */ +void qse_map_close ( + qse_map_t* map /* a map */ +); +/******/ + +qse_map_t* qse_map_init ( + qse_map_t* map, + qse_mmgr_t* mmgr, + qse_size_t capa, + int factor +); + +void qse_map_fini ( + qse_map_t* map +); + +void* qse_map_getxtn ( + qse_map_t* map +); + +qse_mmgr_t* qse_map_getmmgr ( + qse_map_t* map +); + +void qse_map_setmmgr ( + qse_map_t* map, + qse_mmgr_t* mmgr +); + +/* get the number of key/value pairs in a map */ +qse_size_t qse_map_getsize ( + qse_map_t* map /* a map */ +); + +qse_size_t qse_map_getcapa ( + qse_map_t* map /* a map */ +); + +int qse_map_getscale ( + qse_map_t* map /* a map */, + qse_map_id_t id /* QSE_MAP_KEY or QSE_MAP_VAL */ +); + +/****f* qse.cmn.map/qse_map_setscale + * NAME + * qse_map_setscale - set the scale factor + * + * DESCRIPTION + * The qse_map_setscale() function sets the scale factor of the length + * of a key and a value. A scale factor determines the actual length of + * a key and a value in bytes. A map is created with a scale factor of 1. + * The scale factor should be larger than 0 and less than 256. + * + * NOTES + * It is a bad idea to change the scale factor when a map is not empty. + * + * SYNOPSIS + */ +void qse_map_setscale ( + qse_map_t* map /* a map */, + qse_map_id_t id /* QSE_MAP_KEY or QSE_MAP_VAL */, + int scale /* a scale factor */ +); +/******/ + +qse_map_copier_t qse_map_getcopier ( + qse_map_t* map /* a map */, + qse_map_id_t id /* QSE_MAP_KEY or QSE_MAP_VAL */ +); + +/****f* qse.cmn.map/qse_map_setcopier + * NAME + * qse_map_setcopier - specify how to clone an element + * + * DESCRIPTION + * A special copier QSE_MAP_COPIER_INLINE is provided. This copier enables + * you to copy the data inline to the internal node. No freeer is invoked + * when the node is freeed. + * + * You may set the copier to QSE_NULL to perform no special operation + * when the data pointer is rememebered. + * + * SYNOPSIS + */ +void qse_map_setcopier ( + qse_map_t* map /* a map */, + qse_map_id_t id /* QSE_MAP_KEY or QSE_MAP_VAL */, + qse_map_copier_t copier /* an element copier */ +); +/******/ + +qse_map_freeer_t qse_map_getfreeer ( + qse_map_t* map /* a map */, + qse_map_id_t id /* QSE_MAP_KEY or QSE_MAP_VAL */ +); + +/****f* qse.cmn.map/qse_map_setfreeer + * NAME + * qse_map_setfreeer - specify how to destroy an element + * + * DESCRIPTION + * The freeer is called when a node containing the element is destroyed. + * + * SYNOPSIS + */ +void qse_map_setfreeer ( + qse_map_t* map /* a map */, + qse_map_id_t id /* QSE_MAP_KEY or QSE_MAP_VAL */, + qse_map_freeer_t freeer /* an element freeer */ +); +/******/ + + +qse_map_hasher_t qse_map_gethasher ( + qse_map_t* map +); + +void qse_map_sethasher ( + qse_map_t* map, + qse_map_hasher_t hasher +); + +qse_map_comper_t qse_map_getcomper ( + qse_map_t* map +); + +void qse_map_setcomper ( + qse_map_t* map, + qse_map_comper_t comper +); + +qse_map_keeper_t qse_map_getkeeper ( + qse_map_t* map +); + +void qse_map_setkeeper ( + qse_map_t* map, + qse_map_keeper_t keeper +); + +qse_map_sizer_t qse_map_getsizer ( + qse_map_t* map +); + +/* the sizer function is passed a map object and map->capa + 1 */ +void qse_map_setsizer ( + qse_map_t* map, + qse_map_sizer_t sizer +); + +int qse_map_put ( + qse_map_t* map, + void* kptr, + qse_size_t klen, + void* vptr, + qse_size_t vlen, + qse_map_pair_t** px +); + +/****f* qse.cmn.map/qse_map_search + * NAME + * qse_map_search - find a pair with a matching key + * + * DESCRIPTION + * The qse_map_search() function searches a map to find a pair with a + * matching key. It returns the pointer to the pair found. If it fails + * to find one, it returns QSE_NULL. + * + * RETURN + * The qse_map_search() function returns the pointer to the pair with a + * maching key, and QSE_NULL if no match is found. + * + * SYNOPSIS + */ +qse_map_pair_t* qse_map_search ( + qse_map_t* map /* a map */, + const void* kptr /* the pointer to a key */, + qse_size_t klen /* the size of the key in bytes */ +); +/******/ + +/****f* qse.cmn.map/qse_map_upsert + * NAME + * qse_map_upsert - update an existing pair or inesrt a new pair + * + * DESCRIPTION + * The qse_map_upsert() function searches a map for the pair with a matching + * key. If one is found, it updates the pair. Otherwise, it inserts a new + * pair with a key and a value. It returns the pointer to the pair updated + * or inserted. + * + * RETURN + * The qse_map_upsert() function returns a pointer to the updated or inserted + * pair on success, and QSE_NULL on failure. + * + * SYNOPSIS + */ +qse_map_pair_t* qse_map_upsert ( + qse_map_t* map /* a map */, + void* kptr /* the pointer to a key */, + qse_size_t klen /* the length of the key in bytes */, + void* vptr /* the pointer to a value */, + qse_size_t vlen /* the length of the value in bytes */ +); +/******/ + +/****f* qse.cmn.map/qse_map_insert + * NAME + * qse_map_insert - insert a new pair with a key and a value + * + * DESCRIPTION + * The qse_map_insert() function inserts a new pair with the key and the value + * given. If there exists a pair with the key given, the function returns + * QSE_NULL without channging the value. + * + * RETURN + * The qse_map_insert() function returns a pointer to the pair created on + * success, and QSE_NULL on failure. + * + * SYNOPSIS + */ +qse_map_pair_t* qse_map_insert ( + qse_map_t* map /* a map */, + void* kptr /* the pointer to a key */, + qse_size_t klen /* the length of the key in bytes */, + void* vptr /* the pointer to a value */, + qse_size_t vlen /* the length of the value in bytes */ +); +/******/ + +/* update the value of a existing pair with a matching key */ +qse_map_pair_t* qse_map_update ( + qse_map_t* map /* a map */, + void* kptr /* the pointer to a key */, + qse_size_t klen /* the length of the key in bytes */, + void* vptr /* the pointer to a value */, + qse_size_t vlen /* the length of the value in bytes */ +); + +/* delete a pair with a matching key */ +int qse_map_delete ( + qse_map_t* map /* a map */, + const void* kptr /* the pointer to a key */, + qse_size_t klen /* the size of the key in bytes */ +); + +/* clear a map */ +void qse_map_clear ( + qse_map_t* map /* a map */ +); + +/* traverse a map */ +void qse_map_walk ( + qse_map_t* map /* a map */, + qse_map_walker_t walker /* the pointer to the function for each pair */, + void* arg /* a pointer to user-specific data */ +); + +/* get the pointer to the first pair in the map. */ +qse_map_pair_t* qse_map_getfirstpair ( + qse_map_t* map /* a map */, + qse_size_t* buckno +); + +/* get the pointer to the next pair in the map. */ +qse_map_pair_t* qse_map_getnextpair ( + qse_map_t* map /* a map */, + qse_map_pair_t* pair, + qse_size_t* buckno +); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/qse/include/ase/cmn/mem.h b/qse/include/qse/cmn/mem.h similarity index 66% rename from qse/include/ase/cmn/mem.h rename to qse/include/qse/cmn/mem.h index 26b859ad..e9ef78e0 100644 --- a/qse/include/ase/cmn/mem.h +++ b/qse/include/qse/cmn/mem.h @@ -4,28 +4,28 @@ * {License} */ -#ifndef _ASE_CMN_MEM_H_ -#define _ASE_CMN_MEM_H_ +#ifndef _QSE_CMN_MEM_H_ +#define _QSE_CMN_MEM_H_ -#include -#include +#include +#include /* gets a pointer to the default memory manager */ -#define ASE_MMGR_GETDFL() (ase_mmgr) +#define QSE_MMGR_GETDFL() (qse_mmgr) /* sets a pointer to the default memory manager */ -#define ASE_MMGR_SETDFL(m) ((ase_mmgr)=(m)) +#define QSE_MMGR_SETDFL(m) ((qse_mmgr)=(m)) /* allocate a memory block */ -#define ASE_MMGR_ALLOC(mmgr,size) \ +#define QSE_MMGR_ALLOC(mmgr,size) \ ((mmgr)->alloc((mmgr)->data,size)) /* reallocate a memory block */ -#define ASE_MMGR_REALLOC(mmgr,ptr,size) \ +#define QSE_MMGR_REALLOC(mmgr,ptr,size) \ ((mmgr)->realloc((mmgr)->data,ptr,size)) /* free a memory block */ -#define ASE_MMGR_FREE(mmgr,ptr) \ +#define QSE_MMGR_FREE(mmgr,ptr) \ ((mmgr)->free((mmgr)->data,ptr)) #ifdef __cplusplus @@ -36,66 +36,66 @@ extern "C" { * NAME: holds a pointer to the default memory manager * * DESCRIPTION: - * The ASE_MMGR_GETDFL() macro returns the default memory manager. - * You may use ASE_MMGR_SETDFL() to change the default memory manager. + * The QSE_MMGR_GETDFL() macro returns the default memory manager. + * You may use QSE_MMGR_SETDFL() to change the default memory manager. */ -extern ase_mmgr_t* ase_mmgr; +extern qse_mmgr_t* qse_mmgr; /* * NAME: copy a memory block * * DESCRIPTION: - * The ase_memcpy() functions copies n bytes from the source memory block src + * The qse_memcpy() functions copies n bytes from the source memory block src * to the destinaion memory block dst. * * RETURNS: the destination memory block dst. * * WARNING: - * The memory blocks should not overlap. Use the ase_memmove() function if + * The memory blocks should not overlap. Use the qse_memmove() function if * they overlap. */ -void* ase_memcpy ( +void* qse_memcpy ( void* dst /* a pointer to the destination memory block */ , const void* src /* a pointer to the source memory block */ , - ase_size_t n /* the number of bytes to copy */ + qse_size_t n /* the number of bytes to copy */ ); /* * NAME: copy a memory block with more care * * DESCRIPTION: - * The ase_memmove() functions copies n bytes from the source memory block src + * The qse_memmove() functions copies n bytes from the source memory block src * to the destinaion memory block dst without corrupting overlapping zone. * * RETURNS: the destination memory block dst. */ -void* ase_memmove ( +void* qse_memmove ( void* dst /* a pointer to the destination memory block */, const void* src /* a pointer to the source memory block */, - ase_size_t n /* the number of bytes to copy */ + qse_size_t n /* the number of bytes to copy */ ); /* * NAME: fill a memory block * * DESCRIPTION: - * The ase_memset() function fills leading n bytes of the destination + * The qse_memset() function fills leading n bytes of the destination * memory block dst with the byte val. * * RETURNS: the destination memory block dst */ -void* ase_memset ( +void* qse_memset ( void* dst /* a pointer to the destination memory block */, int val /* the byte to fill the memory block with */, - ase_size_t n /* the number of bytes to fill */ + qse_size_t n /* the number of bytes to fill */ ); /* * NAME: compare memory blocks * * DESCRIPTION: - * The ase_memcmp() function compares leading n bytes of two memory blocks + * The qse_memcmp() function compares leading n bytes of two memory blocks * s1 and s2. * * RETURNS: @@ -104,91 +104,91 @@ void* ase_memset ( * of s2. * a negative number if the first different byte of s1 is less than that of s2. */ -int ase_memcmp ( +int qse_memcmp ( const void* s1 /* a pointer to the first memory block to compare */, const void* s2 /* a pointer to the second memory block to compare */, - ase_size_t n /* the number of bytes to compare */ + qse_size_t n /* the number of bytes to compare */ ); /* * NAME: find a byte forward in a memory block * * DESCRIPTION: - * The ase_membyte() function scans the memory block s from the first byte + * The qse_membyte() function scans the memory block s from the first byte * up to the nth byte in search of the byte val. If it finds a match, * it aborts scanning the memory block and returns the pointer to the matching * location. * * RETURNS: - * ASE_NULL if the byte val is not found. + * QSE_NULL if the byte val is not found. * The pointer to the location in the memory block s matching the byte val * if a match is found. */ -void* ase_membyte ( +void* qse_membyte ( const void* s /* a pointer to the memory block to scan */, int val /* a byte to find */, - ase_size_t n /* the number of bytes to scan */ + qse_size_t n /* the number of bytes to scan */ ); /* * NAME: find a byte backward in a memory block * * DESCRIPTION: - * The ase_memrbyte() function scans the memory block s from the nth byte + * The qse_memrbyte() function scans the memory block s from the nth byte * backward to the first byte in search of the byte val. If it finds a match, * it aborts scanning the memory block and returns the pointer to the matching * location. * * RETURNS: - * ASE_NULL if the byte val is not found. + * QSE_NULL if the byte val is not found. * The pointer to the location in the memory block s matching the byte val * if a match is found. */ -void* ase_memrbyte ( +void* qse_memrbyte ( const void* s /* a pointer to the memory block to scan */, int val /* a byte to find */, - ase_size_t n /* the number of bytes to scan */ + qse_size_t n /* the number of bytes to scan */ ); /* * NAME: find a block of bytes forward in a memory block * * DESCRIPTION: - * The ase_memmem() functions scans the first hl bytes of the memory block hs + * The qse_memmem() functions scans the first hl bytes of the memory block hs * in search of the byte block nd of the length nl bytes. * * RETURNS: - * ASE_NULL if the byte val is not found. + * QSE_NULL if the byte val is not found. * The pointer to the location in the memory block s matching the byte val * if a match is found. * * RETURNS: - * ASE_NULL if no match is found. + * QSE_NULL if no match is found. * The pointer to the start of the matching location if a match is found. */ -void* ase_memmem ( +void* qse_memmem ( const void* hs /* a pointer to the memory block to scan */, - ase_size_t hl /* the number of bytes to scan */, + qse_size_t hl /* the number of bytes to scan */, const void* nd /* a pointer to the byte block to find */, - ase_size_t nl /* the number of bytes in the block */ + qse_size_t nl /* the number of bytes in the block */ ); /* * NAME: find a block of bytes backward in a memory block * * DESCRIPTION: - * The ase_memrmem() functions scans the first hl bytes of the memory block hs + * The qse_memrmem() functions scans the first hl bytes of the memory block hs * backward in search of the byte block nd of the length nl bytes. * * RETURNS: - * ASE_NULL if no match is found. + * QSE_NULL if no match is found. * The pointer to the start of the matching location if a match is found. */ -void* ase_memrmem ( +void* qse_memrmem ( const void* hs /* a pointer to the memory block to scan */, - ase_size_t hl /* the number of bytes to scan */, + qse_size_t hl /* the number of bytes to scan */, const void* nd /* a pointer to the byte block to find */, - ase_size_t nl /* the number of bytes in the block */ + qse_size_t nl /* the number of bytes in the block */ ); #ifdef __cplusplus diff --git a/qse/include/qse/cmn/opt.h b/qse/include/qse/cmn/opt.h new file mode 100644 index 00000000..430d4f20 --- /dev/null +++ b/qse/include/qse/cmn/opt.h @@ -0,0 +1,63 @@ +/* + * $Id: getopt.h 290 2008-07-27 06:16:54Z baconevi $ + * + * {License} + */ + +#ifndef _QSE_CMN_OPT_H_ +#define _QSE_CMN_OPT_H_ + +#include +#include + +typedef struct qse_opt_t qse_opt_t; +typedef struct qse_opt_lng_t qse_opt_lng_t; + +struct qse_opt_lng_t +{ + const qse_char_t* str; + qse_cint_t val; +}; + +struct qse_opt_t +{ + /* input */ + const qse_char_t* str; /* option string */ + qse_opt_lng_t* lng; /* long options */ + + /* output */ + qse_cint_t opt; /* character checked for validity */ + qse_char_t* arg; /* argument associated with an option */ + + /* output */ + const qse_char_t* lngopt; + + /* input + output */ + int ind; /* index into parent argv vector */ + + /* input + output - internal*/ + qse_char_t* cur; +}; + +#ifdef __cplusplus +extern "C" { +#endif + +/****f* qse.cmn.opt/qse_getopt + * NAME + * qse_getopt - parse command line options + * + * SYNOPSIS + */ +qse_cint_t qse_getopt ( + int argc /* argument count */, + qse_char_t* const* argv /* argument array */, + qse_opt_t* opt /* option configuration */ +); +/******/ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/qse/include/qse/cmn/rex.h b/qse/include/qse/cmn/rex.h new file mode 100644 index 00000000..185706f1 --- /dev/null +++ b/qse/include/qse/cmn/rex.h @@ -0,0 +1,94 @@ +/* + * $Id: rex.h 223 2008-06-26 06:44:41Z baconevi $ + * + * {License} + */ + +#ifndef _QSE_CMN_REX_H_ +#define _QSE_CMN_REX_H_ + +#include +#include + +/* + * Regular Esseression Syntax + * A regular expression is zero or more branches, separated by '|'. + * ...... + * ...... + * + * Compiled form of a regular expression: + * + * | expression | + * | header | branch | branch | branch | + * | nb | el | na | bl | cmd | arg | cmd | arg | na | bl | cmd | arg | na | bl | cmd | + * + * nb: the number of branches + * el: the length of a expression including the length of nb and el + * na: the number of atoms + * bl: the length of a branch including the length of na and bl + * cmd: The command and repetition info encoded together. + * Some commands require an argument to follow them but some other don't. + * It is encoded as follows: + * + * Subexpressions can be nested by having the command "GROUP" + * and a subexpression as its argument. + * + * Examples: + * a.c -> |1|6|5|ORD_CHAR(no bound)|a|ANY_CHAR(no bound)|ORD_CHAR(no bound)|c| + * ab|xy -> |2|10|4|ORD_CHAR(no bound)|a|ORD_CHAR(no bound)|b|4|ORD_CHAR(no bound)|x|ORD_CHAR(no bound)|y| + */ + +#define QSE_REX_NA(code) (*(qse_size_t*)(code)) + +#define QSE_REX_LEN(code) \ + (*(qse_size_t*)((qse_byte_t*)(code)+QSE_SIZEOF(qse_size_t))) + +enum qse_rex_option_t +{ + QSE_REX_IGNORECASE = (1 << 0) +}; + +enum qse_rex_errnum_t +{ + QSE_REX_ENOERR = 0, + QSE_REX_ENOMEM, + QSE_REX_ERECUR, /* recursion too deep */ + QSE_REX_ERPAREN, /* a right parenthesis is expected */ + QSE_REX_ERBRACKET, /* a right bracket is expected */ + QSE_REX_ERBRACE, /* a right brace is expected */ + QSE_REX_EUNBALPAR, /* unbalanced parenthesis */ + QSE_REX_ECOLON, /* a colon is expected */ + QSE_REX_ECRANGE, /* invalid character range */ + QSE_REX_ECCLASS, /* invalid character class */ + QSE_REX_EBRANGE, /* invalid boundary range */ + QSE_REX_EEND, /* unexpected end of the pattern */ + QSE_REX_EGARBAGE /* garbage after the pattern */ +}; + +#ifdef __cplusplus +extern "C" { +#endif + +void* qse_buildrex ( + qse_mmgr_t* mmgr, qse_size_t depth, + const qse_char_t* ptn, qse_size_t len, int* errnum); + +int qse_matchrex ( + qse_mmgr_t* mmgr, qse_ccls_t* ccls, qse_size_t depth, + void* code, int option, + const qse_char_t* str, qse_size_t len, + const qse_char_t** match_ptr, qse_size_t* match_len, int* errnum); + +void qse_freerex (qse_mmgr_t* mmgr, void* code); + +qse_bool_t qse_isemptyrex (void* code); + +#if 0 +void qse_dprintrex (qse_rex_t* rex, void* rex); +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/qse/include/qse/cmn/sio.h b/qse/include/qse/cmn/sio.h new file mode 100644 index 00000000..d323e93a --- /dev/null +++ b/qse/include/qse/cmn/sio.h @@ -0,0 +1,142 @@ +/* + * $Id: sio.h,v 1.29 2005/12/26 05:38:24 bacon Ease $ + */ + +#ifndef _QSE_CMN_SIO_H_ +#define _QSE_CMN_SIO_H_ + +#include +#include +#include +#include + +enum qse_sio_open_flag_t +{ + QSE_SIO_HANDLE = QSE_FIO_HANDLE, + + QSE_SIO_READ = QSE_FIO_READ, + QSE_SIO_WRITE = QSE_FIO_WRITE, + QSE_SIO_APPEND = QSE_FIO_APPEND, + + QSE_SIO_CREATE = QSE_FIO_CREATE, + QSE_SIO_TRUNCATE = QSE_FIO_TRUNCATE, + QSE_SIO_EXCLUSIVE = QSE_FIO_EXCLUSIVE, + QSE_SIO_SYNC = QSE_FIO_SYNC, + + QSE_SIO_NOSHRD = QSE_FIO_NOSHRD, + QSE_SIO_NOSHWR = QSE_FIO_NOSHWR +}; + +typedef qse_fio_off_t qse_sio_off_t; +typedef qse_fio_hnd_t qse_sio_hnd_t; + +typedef struct qse_sio_t qse_sio_t; + +struct qse_sio_t +{ + qse_mmgr_t* mmgr; + qse_fio_t fio; + qse_tio_t tio; +}; + +#ifdef __cplusplus +extern "C" { +#endif + +extern qse_sio_t* qse_sio_in; +extern qse_sio_t* qse_sio_out; +extern qse_sio_t* qse_sio_err; + +qse_sio_t* qse_sio_open ( + qse_mmgr_t* mmgr, + qse_size_t ext, + const qse_char_t* file, + int flags +); + +void qse_sio_close ( + qse_sio_t* sio +); + +qse_sio_t* qse_sio_init ( + qse_sio_t* sio, + qse_mmgr_t* mmgr, + const qse_char_t* file, + int flags +); + +void qse_sio_fini ( + qse_sio_t* sio +); + +qse_fio_hnd_t qse_sio_gethandle ( + qse_sio_t* sio +); + +qse_ssize_t qse_sio_flush ( + qse_sio_t* sio +); + +void qse_sio_purge ( + qse_sio_t* sio +); + +qse_ssize_t qse_sio_getc ( + qse_sio_t* sio, + qse_char_t* c +); + +qse_ssize_t qse_sio_gets ( + qse_sio_t* sio, + qse_char_t* buf, + qse_size_t size +); + +qse_ssize_t qse_sio_getsx ( + qse_sio_t* sio, + qse_char_t* buf, + qse_size_t size +); + +qse_ssize_t qse_sio_getstr ( + qse_sio_t* sio, + qse_str_t* buf +); + +qse_ssize_t qse_sio_putc ( + qse_sio_t* sio, + qse_char_t c +); + +qse_ssize_t qse_sio_puts ( + qse_sio_t* sio, + const qse_char_t* str +); + +qse_ssize_t qse_sio_putsx ( + qse_sio_t* sio, + const qse_char_t* str, + qse_size_t size +); + +#if 0 +qse_ssize_t qse_sio_putsn (qse_sio_t* sio, ...); +qse_ssize_t qse_sio_putsxn (qse_sio_t* sio, ...); +qse_ssize_t qse_sio_putsv (qse_sio_t* sio, qse_va_list ap); +qse_ssize_t qse_sio_putsxv (qse_sio_t* sio, qse_va_list ap); + +/* WARNING: + * getpos may not return the desired postion because of the buffering + */ +int qse_sio_getpos (qse_sio_t* sio, qse_sio_off_t* pos); +int qse_sio_setpos (qse_sio_t* sio, qse_sio_off_t pos); +int qse_sio_rewind (qse_sio_t* sio); +int qse_sio_movetoend (qse_sio_t* sio); +#endif + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/qse/include/qse/cmn/sll.h b/qse/include/qse/cmn/sll.h new file mode 100644 index 00000000..5c3e0ef3 --- /dev/null +++ b/qse/include/qse/cmn/sll.h @@ -0,0 +1,582 @@ +/* + * $Id: sll.h 223 2008-06-26 06:44:41Z baconevi $ + * + * {License} + */ + +#ifndef _QSE_CMN_SLL_H_ +#define _QSE_CMN_SLL_H_ + +#include +#include + +/****t* qse.cmn.sll/qse_sll_walk_t + * NAME + * qse_sll_walk_t - define return values for qse_sll_walker_t + * + * SEE ALSO + * qse_sll_walk, qse_sll_walker_t + * + * SYNOPSIS + */ +enum qse_sll_walk_t +{ + QSE_SLL_WALK_STOP = 0, + QSE_SLL_WALK_FORWARD = 1 +}; +/******/ + +typedef struct qse_sll_t qse_sll_t; +typedef struct qse_sll_node_t qse_sll_node_t; +typedef enum qse_sll_walk_t qse_sll_walk_t; + +/****b* qse.cmn.sll/qse_sll_copier_t + * NAME + * qse_sll_copier_t - define a node contruction callback + * + * DESCRIPTION + * The qse_sll_copier_t defines a callback function for node construction. + * A node is contructed when a user adds data to a list. The user can + * define how the data to add can be maintained in the list. A singly + * linked list not specified with any copiers stores the data pointer and + * the data length into a node. A special copier QSE_SLL_COPIER_INLINE copies + * the contents of the data a user provided into the node. You can use the + * qse_sll_setcopier() function to change the copier. + * + * A copier should return the pointer to the copied data. If it fails to copy + * data, it may return QSE_NULL. You need to set a proper freeer to free up + * memory allocated for copy. + * + * SEE ALSO + * qse_sll_setcopier, qse_sll_getcopier, QSE_SLL_COPIER + * + * SYNOPSIS + */ +typedef void* (*qse_sll_copier_t) ( + qse_sll_t* sll /* a map */, + void* dptr /* the pointer to data to copy */, + qse_size_t dlen /* the length of data to copy */ +); +/******/ + +/****b* qse.cmn.sll/qse_sll_freeer_t + * NAME + * qse_sll_freeer_t - define a node destruction callback + * SYNOPSIS + */ +typedef void (*qse_sll_freeer_t) ( + qse_sll_t* sll /* a map */, + void* dptr /* the pointer to data to free */, + qse_size_t dlen /* the length of data to free */ +); +/******/ + +/****t* qse.cmn.sll/qse_sll_comper_t + * NAME + * qse_sll_comper_t - define a data comparator + * + * DESCRIPTION + * The qse_sll_comper_t type defines a key comparator that is called when + * the list needs to compare data. A singly linked list is created with a + * default comparator that performs bitwise comparison. + * + * The comparator should return 0 if the data are the same and a non-zero + * integer otherwise. + * + * SYNOPSIS + */ +typedef int (*qse_sll_comper_t) ( + qse_sll_t* sll /* a singly linked list */, + const void* dptr1 /* a data pointer */, + qse_size_t dlen1 /* a data length */, + const void* dptr2 /* a data pointer */, + qse_size_t dlen2 /* a data length */ +); +/******/ + +/****b* qse.cmn.sll/qse_sll_walker_t + * NAME + * qse_sll_walker_t - define a list traversal callback for each node + * + * DESCRIPTION + * The qse_sll_walk() calls a callback function of the type qse_sll_walker_t + * for each node until it returns QSE_SLL_WALK_STOP. The walker should return + * QSE_SLL_WALK_FORWARD to let qse_sll_walk() continue visiting the next node. + * The third parameter to qse_sll_walk() is passed to the walker as the third + * parameter. + * + * SEE ALSO + * qse_sll_walk, qse_sll_walk_t + * + * SYNOPSIS + */ +typedef qse_sll_walk_t (*qse_sll_walker_t) ( + qse_sll_t* sll /* a map */, + qse_sll_node_t* node /* a visited node */, + void* arg /* user-defined data */ +); +/******/ + +/****s* qse.cmn.sll/qse_sll_t + * NAME + * qse_sll_t - define a singly linked list + * + * DESCRPTION + * The qse_sll_t type defines a singly lnked list. + * + * SYNOPSIS + */ +struct qse_sll_t +{ + qse_mmgr_t* mmgr; /* memory manager */ + + qse_sll_copier_t copier; /* data copier */ + qse_sll_freeer_t freeer; /* data freeer */ + qse_sll_comper_t comper; /* data comparator */ + qse_byte_t scale; /* scale factor */ + + qse_size_t size; /* the number of nodes */ + qse_sll_node_t* head; /* the head node */ + qse_sll_node_t* tail; /* the tail node */ +}; +/******/ + +/****s* qse.cmn.sll/qse_sll_node_t + * NAME + * qse_sll_node_t - define a list node + * + * DESCRIPTION + * The qse_sll_node_t type defines a list node containing a data pointer and + * and data length. + * + * SEE ALSO + * QSE_SLL_DPTR, QSE_SLL_DLEN, QSE_SLL_NEXT + * + * SYNOPSIS + */ +struct qse_sll_node_t +{ + void* dptr; /* the pointer to data */ + qse_size_t dlen; /* the length of data */ + qse_sll_node_t* next; /* the pointer to the next node */ +}; +/******/ + +#define QSE_SLL_COPIER_SIMPLE ((qse_sll_copier_t)1) +#define QSE_SLL_COPIER_INLINE ((qse_sll_copier_t)2) + +#define QSE_SLL_MMGR(sll) ((sll)->mmgr) +#define QSE_SLL_XTN(s) ((void*)(((qse_sll_t*)s) + 1)) +#define QSE_SLL_COPIER(sll) ((sll)->copier) +#define QSE_SLL_FREEER(sll) ((sll)->freeer) +#define QSE_SLL_COMPER(sll) ((sll)->comper) + +#define QSE_SLL_HEAD(sll) ((sll)->head) +#define QSE_SLL_TAIL(sll) ((sll)->tail) +#define QSE_SLL_SIZE(sll) ((sll)->size) +#define QSE_SLL_SCALE(sll) ((sll)->scale) + +#define QSE_SLL_DPTR(node) ((node)->dptr) +#define QSE_SLL_DLEN(node) ((node)->dlen) +#define QSE_SLL_NEXT(node) ((node)->next) + +#ifdef __cplusplus +extern "C" { +#endif + +/****f* qse.cmn.sll/qse_sll_open + * NAME + * qse_sll_open - create a singly linked list with extension area + * + * DESCRIPTION + * The qse_sll_open() function creates an empty singly linked list. + * If the memory manager mmgr is QSE_NULL, the function gets the default + * memory manager with QSE_MMGR_GETMMGR() and uses it if it is not QSE_NULL. + * The extension area is allocated when the positive extension size extension + * is specified. It calls the extension initialization function initializer + * after initializing the main area. The extension initializer is passed + * the pointer to the singly linked list created. + * + * RETURN + * The qse_sll_open() function returns the pointer to a new singly linked + * list on success and QSE_NULL on failure. + * + * NOTES + * In the debug build, it fails an assertion if QSE_MMGR_GETMMGR() returns + * QSE_NULL when QSE_NULL is passed as the first parameter. In the release + * build, it returns QSE_NULL if such a thing happens. + * + * SYNOPSIS + */ +qse_sll_t* qse_sll_open ( + qse_mmgr_t* mmgr /* memory manager */ , + qse_size_t ext /* size of extension area in bytes */ +); +/******/ + +/****f* qse.cmn.sll/qse_sll_close + * NAME + * qse_sll_close - destroy a singly linked list + * + * DESCRIPTION + * The qse_sll_close() function destroys a singly linked list freeing up + * the memory. + * + * SYNOPSIS + */ +void qse_sll_close ( + qse_sll_t* sll /* a singly linked list */ +); +/******/ + +/****f* qse.cmn.sll/qse_sll_init + * NAME + * qse_sll_init - initialize a singly linked list + * + * DESCRIPTION + * The qse_sll_init() function initializes a singly linked list. The memory + * should be allocated by a caller and be passed to it. The caller may declare + * a static variable of the qse_sll_t type and pass its address. A memory + * manager still needs to be passed for node manipulation later. + * + * RETURN + * The qse_sll_init() function returns the first parameter on success and + * QSE_NULL on failure. + * + * SYNOPSIS + */ +qse_sll_t* qse_sll_init ( + qse_sll_t* sll /* an uninitialized singly linked list */, + qse_mmgr_t* mmgr /* a memory manager */ +); +/******/ + +/****f* qse.cmn.sll/qse_sll_fini + * NAME + * qse_sll_init - deinitialize a singly linked list + * + * SYNOPSIS + */ +void qse_sll_fini ( + qse_sll_t* sll /* a singly linked list */ +); +/******/ + +/****f* qse.cmn.sll/qse_sll_getxtn + * NAME + * qse_sll_getxtn - get the pointer to the extension + * + * DESCRIPTION + * The qse_sll_getxtn() function returns the pointer to the extension. + * + * SYNOPSIS + */ +void* qse_sll_getxtn ( + qse_sll_t* sll /* a singly linked list */ +); +/******/ + +/****f* qse.cmn.sll/qse_sll_getmmgr + * NAME + * qse_sll_getmmgr - get the memory manager + * + * SYNOPSIS + */ +qse_mmgr_t* qse_sll_getmmgr ( + qse_sll_t* sll /* a singly linked list */ +); +/******/ + +/****f* qse.cmn.sll/qse_sll_setmmgr + * NAME + * qse_sll_setmmgr - set the memory manager + * + * SYNOPSIS + */ +void qse_sll_setmmgr ( + qse_sll_t* sll /* a singly linked list */, + qse_mmgr_t* mmgr /* a memory manager */ +); +/******/ + +/****f* qse.cmn.sll/qse_sll_getsize + * NAME + * qse_sll_getsize - get the number of nodes + * + * DESCRIPTION + * The qse_sll_getsize() function returns the number of the data nodes held + * in a singly linked list. + * + * SYNOPSIS + */ +qse_size_t qse_sll_getsize ( + qse_sll_t* sll /* a singly linked list */ +); +/******/ + + +/****f* qse.cmn.sll/qse_sll_getscale + * NAME + * qse_sll_getscale - get the scale factor + * + * SYNOPSIS + */ +int qse_sll_getscale ( + qse_sll_t* sll /* a singly linked list */ +); +/******/ + +/****f* qse.cmn.sll/qse_sll_setscale + * NAME + * qse_sll_setscale - set the scale factor + * + * DESCRIPTION + * The qse_sll_setscale() function sets the scale factor of the data length. + * A scale factor determines the actual length of data in bytes. A singly + * linked list created with a scale factor of 1. The scale factor should be + * larger than 0 and less than 256. + * + * NOTES + * It is a bad idea to change the scale factor when a sll is not empty. + * + * SYNOPSIS + */ +void qse_sll_setscale ( + qse_sll_t* sll /* a singly linked list */, + int scale /* a scale factor */ +); +/******/ + +/****f* qse.cmn.sll/qse_sll_getcopier + * NAME + * qse_sll_getfreeer - get the data copier + * + * SYNOPSIS + */ +qse_sll_copier_t qse_sll_getcopier ( + qse_sll_t* sll /* a singly linked list */ +); +/******/ + +/****f* qse.cmn.sll/qse_sll_setcopier + * NAME + * qse_sll_setcopier - set a data copier + * + * DESCRIPTION + * A special copier QSE_SLL_COPIER_INLINE is provided. This copier enables + * you to copy the data inline to the internal node. No freeer is invoked + * when the node is freeed. + * + * You may set the copier to QSE_NULL to perform no special operation + * when the data pointer is rememebered. + * + * SYNOPSIS + */ +void qse_sll_setcopier ( + qse_sll_t* sll /* a singly linked list */, + qse_sll_copier_t copier /* a data copier */ +); +/******/ + +/****f* qse.cmn.sll/qse_sll_getfreeer + * NAME + * qse_sll_getfreeer - get the data freeer + * + * SYNOPSIS + */ +qse_sll_freeer_t qse_sll_getfreeer ( + qse_sll_t* sll /* a singly linked list */ +); +/******/ + +/****f* qse.cmn.sll/qse_sll_setfreeer + * NAME + * qse_sll_setfreeer - set a data freeer + * + * DESCRIPTION + * The freeer is called when a node containing the element is destroyed. + * + * SYNOPSIS + */ +void qse_sll_setfreeer ( + qse_sll_t* sll /* a singly linked list */, + qse_sll_freeer_t freeer /* a data freeer */ +); +/******/ + +/****f* qse.cmn.sll/qse_sll_getcomper + * NAME + * qse_sll_getcomper - get the data comparator + * + * SYNOPSIS + */ +qse_sll_comper_t qse_sll_getcomper ( + qse_sll_t* sll /* a singly linked list */ +); +/******/ + +/****f* qse.cmn.sll/qse_sll_setcomper + * NAME + * qse_sll_setcomper - set the data comparator + * + * SYNOPSIS + */ +void qse_sll_setcomper ( + qse_sll_t* sll /* a singly linked list */, + qse_sll_comper_t comper /* a comparator */ +); +/******/ + +/****f* qse.cmn.sll/qse_sll_gethead + * NAME + * qse_sll_gethead - get the head node + * + * SYNOPSIS + */ +qse_sll_node_t* qse_sll_gethead ( + qse_sll_t* sll /* a singly linked list */ +); +/******/ + +/****f* qse.cmn.sll/qse_sll_gettail + * NAME + * qse_sll_gettail - get the tail node + * + * SYNOPSIS + */ +qse_sll_node_t* qse_sll_gettail ( + qse_sll_t* sll /* a singly linked list */ +); +/******/ + +/****f* qse.cmn.sll/qse_sll_search + * NAME + * qse_sll_search - find a node + * + * DESCRIPTION + * The qse_sll_search() function traverses a list to find a node containing + * the same value as the the data pointer and length. The traversal begins + * from the next node of the positional node. If the positional node is + * QSE_NULL, the traversal begins from the head node. + * + * RETURN + * The pointer to the node found. Otherwise, QSE_NULL. + * + * NOTES + * No reverse search is provided because a reverse traversal can not be + * achieved efficiently. + * + * SYNOPSIS + */ +qse_sll_node_t* qse_sll_search ( + qse_sll_t* sll /* a singly linked list */, + qse_sll_node_t* pos /* a positional node */, + const void* dptr /* a data pointer */, + qse_size_t dlen /* a data length */ +); +/******/ + +/****f* qse.cmn.sll/qse_sll_insert + * NAME + * qse_sll_insert - insert data to a new node + * + * DESCRIPTION + * There is performance penalty unless the positional node is neither + * the head node nor QSE_NULL. You should consider a different data + * structure such as a doubly linked list if you need to insert data + * into a random position. + * + * RETURN + * The pointer to a new node on success and QSE_NULL on failure:w + * + * SYNOPSIS + */ +qse_sll_node_t* qse_sll_insert ( + qse_sll_t* sll /* a singly linked list */, + qse_sll_node_t* pos /* a node before which a new node is inserted */, + void* dptr /* the pointer to the data */, + qse_size_t dlen /* the length of the data */ +); +/******/ + +/****f* qse.cmn.sll/qse_sll_delete + * NAME + * qse_sll_delete - delete a node + * + * DESCRIPTION + * The qse_sll_delete() function deletes a node. + * + * SYNOPSIS + */ +void qse_sll_delete ( + qse_sll_t* sll /* a singly linked list */, + qse_sll_node_t* pos /* a node to delete */ +); +/******/ + +/****f* qse.cmn.sll/qse_sll_clear + * NAME + * qse_sll_clear - delete all nodes + * + * DESCRIPTION + * The qse_sll_clear() function empties a singly linked list by deletinng + * all the nodes. + * + * SYNOPSIS + */ +void qse_sll_clear ( + qse_sll_t* sll /* a singly linked list */ +); +/******/ + +qse_sll_node_t* qse_sll_pushhead ( + qse_sll_t* sll /* a singly linked list */, + void* dptr, + qse_size_t dlen +); + +qse_sll_node_t* qse_sll_pushtail ( + qse_sll_t* sll /* a singly linked list */, + void* dptr, + qse_size_t dlen +); + + +void qse_sll_pophead ( + qse_sll_t* sll +); + +void qse_sll_poptail ( + qse_sll_t* sll +); + +/****f* qse.cmn.sll/qse_sll_walk + * NAME + * qse_sll_walk - traverse s singly linked list + * + * DESCRIPTION + * A singly linked list allows uni-directional in-order traversal. + * The qse_sll_walk() function traverses a singly linkked list from its + * head node down to its tail node as long as the walker function returns + * QSE_SLL_WALK_FORWARD. A walker can return QSE_SLL_WALK_STOP to cause + * immediate stop of traversal. + * + * For each node, the walker function is called and it is passed three + * parameters: the singly linked list, the visiting node, and the + * user-defined data passed as the third parameter in a call to the + * qse_sll_walk() function. + * + * SYNOPSIS + */ +void qse_sll_walk ( + qse_sll_t* sll /* a singly linked list */, + qse_sll_walker_t walker /* a user-defined walker function */, + void* arg /* the pointer to user-defined data */ +); +/******/ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/qse/include/qse/cmn/str.h b/qse/include/qse/cmn/str.h new file mode 100644 index 00000000..288f3636 --- /dev/null +++ b/qse/include/qse/cmn/str.h @@ -0,0 +1,476 @@ +/* + * $Id: str.h 496 2008-12-15 09:56:48Z baconevi $ + * + * {License} + */ + +#ifndef _QSE_CMN_STR_H_ +#define _QSE_CMN_STR_H_ + +#include +#include + +/****o* qse.cmn.str/string + * DESCRIPTION + * defines various functions, types, macros to manipulate + * strings. + * + * The qse_cstr_t type and the qse_xstr_t defined in ase/types.h helps you + * dealing with a string pointer and length. + * + * #include + * + * EXAMPLES + * void f (void) + * { + * } + ****** + */ + + +#define QSE_STR_LEN(s) ((s)->len) +#define QSE_STR_PTR(s) ((s)->ptr) +#define QSE_STR_CAPA(s) ((s)->capa) +#define QSE_STR_CHAR(s,idx) ((s)->ptr[idx]) + +#define QSE_STR_MMGR(s) ((s)->mmgr) +#define QSE_STR_XTN(s) ((void*)(((qse_str_t*)s) + 1)) +#define QSE_STR_SIZER(s) ((s)->sizer) + +typedef struct qse_str_t qse_str_t; +typedef qse_size_t (*qse_str_sizer_t) (qse_str_t* data, qse_size_t hint); + +struct qse_str_t +{ + qse_mmgr_t* mmgr; + qse_str_sizer_t sizer; + + qse_char_t* ptr; + qse_size_t len; + qse_size_t capa; +}; + +/* int qse_chartonum (qse_char_t c, int base) */ +#define QSE_CHARTONUM(c,base) \ + ((c>=QSE_T('0') && c<=QSE_T('9'))? ((c-QSE_T('0')=QSE_T('A') && c<=QSE_T('Z'))? ((c-QSE_T('A')+10=QSE_T('a') && c<=QSE_T('z'))? ((c-QSE_T('a')+10 0) value *= -1; \ +} + +/* qse_strxtonum (const qse_char_t* nptr, qse_size_t len, qse_char_char** endptr, int base) */ +#define QSE_STRXTONUM(value,nptr,len,endptr,base) \ +{ \ + int __ston_f = 0, __ston_v; \ + const qse_char_t* __ston_ptr = nptr; \ + const qse_char_t* __ston_end = __ston_ptr + len; \ + value = 0; \ + while (__ston_ptr < __ston_end) { \ + qse_char_t __ston_c = *__ston_ptr; \ + if (__ston_c == QSE_T(' ') || __ston_c == QSE_T('\t')) { \ + __ston_ptr++; continue; \ + } \ + if (__ston_c == QSE_T('-')) { __ston_f++; __ston_ptr++; } \ + if (__ston_c == QSE_T('+')) { __ston_ptr++; } \ + break; \ + } \ + for (value = 0; __ston_ptr < __ston_end && \ + (__ston_v = QSE_CHARTONUM(*__ston_ptr, base)) != base; __ston_ptr++) { \ + value = value * base + __ston_v; \ + } \ + if (endptr != QSE_NULL) *((const qse_char_t**)endptr) = __ston_ptr; \ + if (__ston_f > 0) value *= -1; \ +} + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * basic string functions + */ +qse_size_t qse_strlen (const qse_char_t* str); +qse_size_t qse_strbytes (const qse_char_t* str); + +qse_size_t qse_strcpy ( + qse_char_t* buf, const qse_char_t* str); +qse_size_t qse_strxcpy ( + qse_char_t* buf, qse_size_t bsz, const qse_char_t* str); +qse_size_t qse_strncpy ( + qse_char_t* buf, const qse_char_t* str, qse_size_t len); +qse_size_t qse_strxncpy ( + qse_char_t* buf, qse_size_t bsz, const qse_char_t* str, qse_size_t len); + +qse_size_t qse_strxcat ( + qse_char_t* buf, qse_size_t bsz, const qse_char_t* str); +qse_size_t qse_strxncat ( + qse_char_t* buf, qse_size_t bsz, const qse_char_t* str, qse_size_t len); + +int qse_strcmp (const qse_char_t* s1, const qse_char_t* s2); +int qse_strxcmp (const qse_char_t* s1, qse_size_t len1, const qse_char_t* s2); +int qse_strxncmp ( + const qse_char_t* s1, qse_size_t len1, + const qse_char_t* s2, qse_size_t len2); + +int qse_strcasecmp ( + const qse_char_t* s1, const qse_char_t* s2, qse_ccls_t* ccls); + +/****f* qse.cmn.str/qse_strxncasecmp + * NAME + * qse_strxncasecmp - compare strings ignoring case + * + * DESCRIPTION + * The qse_strxncasecmp() function compares characters at the same position + * in each string after converting them to the same case temporarily. + * It accepts two strings and a character class handler. A string is + * represented by its beginning pointer and length. You can write your own + * character class handler or use QSE_CCLS_GETDFL() to get the default + * character class handler. + * + * For two strings to be equal, they need to have the same length and all + * characters in the first string should be equal to their counterpart in the + * second string. + * + * RETURN + * The qse_strxncasecmp() returns 0 if two strings are equal, a positive + * number if the first string is larger, -1 if the second string is larger. + * + * EXAMPLES + * qse_strxncasecmp (QSE_T("foo"), 3, QSE_T("FoO"), 3, QSE_CCLS_GETDFL()); + * + * SYNOPSIS + */ +int qse_strxncasecmp ( + const qse_char_t* s1 /* the pointer to the first string */, + qse_size_t len1 /* the length of the first string */, + const qse_char_t* s2 /* the pointer to the second string */, + qse_size_t len2 /* the length of the second string */, + qse_ccls_t* ccls /* character class handler */ +); +/******/ + +qse_char_t* qse_strdup (const qse_char_t* str, qse_mmgr_t* mmgr); +qse_char_t* qse_strxdup ( + const qse_char_t* str, qse_size_t len, qse_mmgr_t* mmgr); +qse_char_t* qse_strxdup2 ( + const qse_char_t* str1, qse_size_t len1, + const qse_char_t* str2, qse_size_t len2, qse_mmgr_t* mmgr); + +qse_char_t* qse_strstr (const qse_char_t* str, const qse_char_t* sub); +qse_char_t* qse_strxstr ( + const qse_char_t* str, qse_size_t size, const qse_char_t* sub); +qse_char_t* qse_strxnstr ( + const qse_char_t* str, qse_size_t strsz, + const qse_char_t* sub, qse_size_t subsz); + +qse_char_t* qse_strchr (const qse_char_t* str, qse_cint_t c); +qse_char_t* qse_strxchr (const qse_char_t* str, qse_size_t len, qse_cint_t c); +qse_char_t* qse_strrchr (const qse_char_t* str, qse_cint_t c); +qse_char_t* qse_strxrchr (const qse_char_t* str, qse_size_t len, qse_cint_t c); + +/* Checks if a string begins with a substring */ +qse_char_t* qse_strbeg (const qse_char_t* str, const qse_char_t* sub); +qse_char_t* qse_strxbeg ( + const qse_char_t* str, qse_size_t len, const qse_char_t* sub); +qse_char_t* qse_strnbeg ( + const qse_char_t* str, const qse_char_t* sub, qse_size_t len); +qse_char_t* qse_strxnbeg ( + const qse_char_t* str, qse_size_t len1, + const qse_char_t* sub, qse_size_t len2); + +/* Checks if a string ends with a substring */ +qse_char_t* qse_strend (const qse_char_t* str, const qse_char_t* sub); +qse_char_t* qse_strxend ( + const qse_char_t* str, qse_size_t len, const qse_char_t* sub); +qse_char_t* qse_strnend ( + const qse_char_t* str, const qse_char_t* sub, qse_size_t len); +qse_char_t* qse_strxnend ( + const qse_char_t* str, qse_size_t len1, + const qse_char_t* sub, qse_size_t len2); + +/* + * string conversion + */ +int qse_strtoi (const qse_char_t* str); +long qse_strtol (const qse_char_t* str); +unsigned int qse_strtoui (const qse_char_t* str); +unsigned long qse_strtoul (const qse_char_t* str); + +int qse_strxtoi (const qse_char_t* str, qse_size_t len); +long qse_strxtol (const qse_char_t* str, qse_size_t len); +unsigned int qse_strxtoui (const qse_char_t* str, qse_size_t len); +unsigned long qse_strxtoul (const qse_char_t* str, qse_size_t len); + +qse_int_t qse_strtoint (const qse_char_t* str); +qse_long_t qse_strtolong (const qse_char_t* str); +qse_uint_t qse_strtouint (const qse_char_t* str); +qse_ulong_t qse_strtoulong (const qse_char_t* str); + +qse_int_t qse_strxtoint (const qse_char_t* str, qse_size_t len); +qse_long_t qse_strxtolong (const qse_char_t* str, qse_size_t len); +qse_uint_t qse_strxtouint (const qse_char_t* str, qse_size_t len); +qse_ulong_t qse_strxtoulong (const qse_char_t* str, qse_size_t len); + +qse_str_t* qse_str_open ( + qse_mmgr_t* mmgr, + qse_size_t ext, + qse_size_t capa +); + +void qse_str_close ( + qse_str_t* str +); + +/* + * If capa is 0, it doesn't allocate the buffer in advance. + */ +qse_str_t* qse_str_init ( + qse_str_t* str, + qse_mmgr_t* mmgr, + qse_size_t capa +); + +void qse_str_fini ( + qse_str_t* str +); + +/****f* qse.cmn.str/qse_str_yield + * NAME + * qse_str_yield - yield the buffer + * + * DESCRIPTION + * The qse_str_yield() function assigns the buffer to an variable of the + * qse_xstr_t type and recreate a new buffer of the new_capa capacity. + * The function fails if it fails to allocate a new buffer. + * + * RETURN + * The qse_str_yield() function returns 0 on success, and -1 on failure. + * + * SYNOPSIS + */ +int qse_str_yield ( + qse_str_t* str /* a dynamic string */, + qse_xstr_t* buf /* the pointer to a qse_xstr_t variable */, + int new_capa /* new capacity in number of characters */ +); +/******/ + +void* qse_str_getxtn ( + qse_str_t* str +); + +qse_mmgr_t* qse_str_getmmgr ( + qse_str_t* str +); + +void qse_str_setmmgr ( + qse_str_t* str, + qse_mmgr_t* mmgr +); + +/* + * NAME: get the sizer + * + * DESCRIPTION: + * The qse_str_getsizer() function returns the sizer specified. + * + * RETURNS: a sizer function set or QSE_NULL if no sizer is set. + */ +qse_str_sizer_t qse_str_getsizer ( + qse_str_t* str /* a dynamic string */ +); + +/* + * NAME: specify a sizer + * + * DESCRIPTION: + * The qse_str_setsizer() function specify a new sizer for a dynamic string. + * With no sizer specified, the dynamic string doubles the current buffer + * when it needs to increase its size. The sizer function is passed a dynamic + * string and the minimum capacity required to hold data after resizing. + * The string is truncated if the sizer function returns a smaller number + * than the hint passed. + */ +void qse_str_setsizer ( + qse_str_t* str /* a dynamic string */, + qse_str_sizer_t sizer /* a sizer function */ +); + +/* + * NAME: get capacity + * + * DESCRIPTION: + * The qse_str_getcapa() function returns the current capacity. + * You may use QSE_STR_CAPA(str) macro for performance sake. + * + * RETURNS: the current capacity in number of characters. + */ +qse_size_t qse_str_getcapa ( + qse_str_t* str /* a dynamic string */ +); + +/* + * NAME: set new capacity + * + * DESCRIPTION: + * The qse_str_setcapa() function set new capacity. If the new capacity + * is smaller than the old, the overflowing characters are removed from + * from the buffer. + * + * RETURNS: -1 on failure, a new capacity on success + */ +qse_size_t qse_str_setcapa ( + qse_str_t* str /* a dynamic string */, + qse_size_t capa /* a new capacity */ +); + +void qse_str_clear ( + qse_str_t* str +); + +void qse_str_swap ( + qse_str_t* str, + qse_str_t* str2 +); + +qse_size_t qse_str_cpy ( + qse_str_t* str, + const qse_char_t* s +); + +qse_size_t qse_str_ncpy ( + qse_str_t* str, + const qse_char_t* s, + qse_size_t len +); + +qse_size_t qse_str_cat ( + qse_str_t* str, + const qse_char_t* s +); + +qse_size_t qse_str_ncat ( + qse_str_t* str, + const qse_char_t* s, + qse_size_t len +); + +qse_size_t qse_str_ccat ( + qse_str_t* str, + qse_char_t c +); + +qse_size_t qse_str_nccat ( + qse_str_t* str, + qse_char_t c, + qse_size_t len +); + + +qse_size_t qse_mbstowcs ( + const qse_mchar_t* mbs, + qse_wchar_t* wcs, + qse_size_t* wcslen +); + +/****f* qse.cmn.str/qse_mbsntowcsn + * NAME + * qse_mbsntowcsn - convert a multibyte string to a wide character string + * + * RETURN + * The qse_mbstowcs() function returns the number of bytes handled. + * + * SYNOPSIS + */ +qse_size_t qse_mbsntowcsn ( + const qse_mchar_t* mbs, + qse_size_t mbslen, + qse_wchar_t* wcs, + qse_size_t* wcslen +); +/******/ + +/****f* qse.cmn.str/qse_wcstombs + * NAME + * qse_wcstombs - convert a wide character string to a multibyte string. + * + * DESCRIPTION + * The qse_wcstombs() function converts a null-terminated wide character + * string to a multibyte string and stores it into the buffer pointed to + * by mbs. The pointer to a variable holding the buffer length should be + * passed to the function as the third parameter. After conversion, it holds + * the length of the multibyte string excluding the terminating-null. + * It may not null-terminate the resulting multibyte string if the buffer + * is not large enough. + * + * RETURN + * The qse_wcstombs() function returns the number of wide characters handled. + * + * SYNOPSIS + */ +qse_size_t qse_wcstombs ( + const qse_wchar_t* wcs, + qse_mchar_t* mbs, + qse_size_t* mbslen +); + +/****f* qse.cmn.str/qse_wcsntombsn + * NAME + * qse_wcstombs - convert a wide character string to a multibyte string + * + * RETURN + * The qse_wcstombs() function returns the number of wide characters handled. + * + * SYNOPSIS + */ +qse_size_t qse_wcsntombsn ( + const qse_wchar_t* wcs, + qse_size_t wcslen, + qse_mchar_t* mbs, + qse_size_t* mbslen +); +/******/ + +/****f* qse.cmn.str/qse_wcstombs_strict + * NAME + * qse_wcstombs_strict - convert a wide character string to a multibyte string. + * + * DESCRIPTION + * The qse_wcstombs_strict() function performs the same as the qse_wcsmbs() + * function except that it returns an error if it can't fully convert the + * input string and/or the buffer is not large enough. + * + * RETURN + * The qse_wcstombs_strict() function returns 0 on success and -1 on failure. + * SYNOPSIS + */ +int qse_wcstombs_strict ( + const qse_wchar_t* wcs, + qse_mchar_t* mbs, + qse_size_t mbslen +); +/******/ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/qse/include/qse/cmn/time.h b/qse/include/qse/cmn/time.h new file mode 100644 index 00000000..55c16f24 --- /dev/null +++ b/qse/include/qse/cmn/time.h @@ -0,0 +1,134 @@ +/* + * $Id$ + */ + +#ifndef _QSE_CMN_TIME_H_ +#define _QSE_CMN_TIME_H_ + +#include +#include + +#define QSE_EPOCH_YEAR ((qse_ntime_t)1970) +#define QSE_EPOCH_MON ((qse_ntime_t)1) +#define QSE_EPOCH_DAY ((qse_ntime_t)1) +#define QSE_EPOCH_WDAY ((qse_ntime_t)4) + +#define QSE_DAY_IN_WEEK ((qse_ntime_t)7) +#define QSE_MON_IN_YEAR ((qse_ntime_t)12) +#define QSE_HOUR_IN_DAY ((qse_ntime_t)24) +#define QSE_MIN_IN_HOUR ((qse_ntime_t)60) +#define QSE_MIN_IN_DAY (QSE_MIN_IN_HOUR * QSE_HOUR_IN_DAY) +#define QSE_SEC_IN_MIN ((qse_ntime_t)60) +#define QSE_SEC_IN_HOUR (QSE_SEC_IN_MIN * QSE_MIN_IN_HOUR) +#define QSE_SEC_IN_DAY (QSE_SEC_IN_MIN * QSE_MIN_IN_DAY) +#define QSE_MSEC_IN_SEC ((qse_ntime_t)1000) +#define QSE_MSEC_IN_MIN (QSE_MSEC_IN_SEC * QSE_SEC_IN_MIN) +#define QSE_MSEC_IN_HOUR (QSE_MSEC_IN_SEC * QSE_SEC_IN_HOUR) +#define QSE_MSEC_IN_DAY (QSE_MSEC_IN_SEC * QSE_SEC_IN_DAY) + +#define QSE_USEC_IN_MSEC ((qse_ntime_t)1000) +#define QSE_NSEC_IN_USEC ((qse_ntime_t)1000) +#define QSE_USEC_IN_SEC ((qse_ntime_t)QSE_USEC_IN_MSEC * QSE_MSEC_IN_SEC) + +#define QSE_IS_LEAPYEAR(year) (!((year)%4) && (((year)%100) || !((year)%400))) +#define QSE_DAY_IN_YEAR(year) (QSE_IS_LEAPYEAR(year)? 366: 365) + +/* number of milliseconds since the Epoch (00:00:00 UTC, Jan 1, 1970) */ +typedef qse_long_t qse_ntime_t; +typedef struct qse_btime_t qse_btime_t; + +struct qse_btime_t +{ + int sec; /* 0-61 */ + int min; /* 0-59 */ + int hour; /* 0-23 */ + int mday; /* 1-31 */ + int mon; /* 0(jan)-11(dec) */ + int year; /* the number of years since 1900 */ + int wday; /* 0(sun)-6(sat) */ + int yday; /* 0(jan 1) to 365 */ + int isdst; +}; + +#ifdef __cplusplus +extern "C" { +#endif + +/****f* qse.cmn/qse_gettime + * NAME + * qse_gettime - get the current time + * + * SYNPOSIS + */ +int qse_gettime ( + qse_ntime_t* nt +); +/******/ + +/****f* qse.cmn/qse_settime + * NAME + * qse_settime - set the current time + * + * SYNOPSIS + */ +int qse_settime ( + qse_ntime_t nt +); +/******/ + + +/****f* qse.cmn/qse_gmtime + * NAME + * qse_gmtime - convert numeric time to broken-down time + * + * SYNOPSIS + */ +void qse_gmtime ( + qse_ntime_t nt, + qse_btime_t* bt +); +/******/ + +/****f* qse.cmn/qse_localtime + * NAME + * qse_localtime - convert numeric time to broken-down time + * + * SYNOPSIS + */ +int qse_localtime ( + qse_ntime_t nt, + qse_btime_t* bt +); +/******/ + +/****f* qse.cmn/qse_mktime + * NAME + * qse_mktime - convert broken-down time to numeric time + * + * SYNOPSIS + */ +int qse_mktime ( + const qse_btime_t* bt, + qse_ntime_t* nt +); +/******/ + +/****f* qse.cmn/qse_strftime + * NAME + * qse_strftime - format time + * + * SYNOPSIS + */ +qse_size_t qse_strftime ( + qse_char_t* buf, + qse_size_t size, + const qse_char_t* fmt, + qse_btime_t* bt +); +/******/ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/qse/include/qse/cmn/tio.h b/qse/include/qse/cmn/tio.h new file mode 100644 index 00000000..e08c8e66 --- /dev/null +++ b/qse/include/qse/cmn/tio.h @@ -0,0 +1,299 @@ +/* + * $Id: tio.h,v 1.19 2006/01/01 13:50:24 bacon Exp $ + */ + +#ifndef _QSE_CMN_TIO_H_ +#define _QSE_CMN_TIO_H_ + +#include +#include +#include + +enum +{ + QSE_TIO_ENOERR = 0, + QSE_TIO_ENOMEM, /* out of memory */ + QSE_TIO_ENOSPC, /* no more space */ + QSE_TIO_EILSEQ, /* illegal sequence */ + QSE_TIO_EICSEQ, /* incomplete sequence */ + QSE_TIO_EILCHR, /* illegal character */ + QSE_TIO_ENOINF, /* no input function attached */ + QSE_TIO_EINPUT, /* input function returned an error */ + QSE_TIO_EINPOP, /* input function failed to open */ + QSE_TIO_EINPCL, /* input function failed to close */ + QSE_TIO_ENOUTF, /* no output function attached */ + QSE_TIO_EOUTPT, /* output function returned an error */ + QSE_TIO_EOUTOP, /* output function failed to open */ + QSE_TIO_EOUTCL /* output function failed to close */ +}; + +enum +{ + /* the size of input buffer should be at least equal to or greater + * than the maximum sequence length of the qse_mchar_t string. + * (i.e. 6 for utf8) + */ + QSE_TIO_MAX_INBUF_LEN = 4096, + QSE_TIO_MAX_OUTBUF_LEN = 4096 +}; + +enum +{ + QSE_TIO_IO_OPEN, + QSE_TIO_IO_CLOSE, + QSE_TIO_IO_DATA +}; + + +#define QSE_TIO_MMGR(tio) ((tio)->mmgr) +#define QSE_TIO_XTN(s) ((void*)(((qse_tio_t*)s) + 1)) +#define QSE_TIO_ERRNUM(tio) ((tio)->errnum) + +/* + * TYPE: qse_tio_t + * Defines the tio type + * + * DESCRIPTION: + * defines a generic type for text-based IO. When qse_char_t is + * qse_mchar_t, it handles any byte streams. When qse_char_t is qse_wchar_t, + * it handles utf-8 byte streams. + */ +typedef struct qse_tio_t qse_tio_t; + +/* + * TYPE: qse_tio_io_t + * Defines a user-defines IO handler + */ +typedef qse_ssize_t (*qse_tio_io_t) ( + int cmd, void* arg, void* data, qse_size_t size); + +struct qse_tio_t +{ + qse_mmgr_t* mmgr; + int errnum; + + /* io functions */ + qse_tio_io_t input_func; + qse_tio_io_t output_func; + void* input_arg; + void* output_arg; + + /* for housekeeping */ + int input_status; + qse_size_t inbuf_curp; + qse_size_t inbuf_len; + qse_size_t outbuf_len; + + qse_mchar_t inbuf[QSE_TIO_MAX_INBUF_LEN]; + qse_mchar_t outbuf[QSE_TIO_MAX_OUTBUF_LEN]; +}; + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * FUNCTION: qse_tio_open + */ +qse_tio_t* qse_tio_open ( + qse_mmgr_t* mmgr, + qse_size_t ext +); + +/* + * FUNCTION: qse_tio_close + */ +int qse_tio_close ( + qse_tio_t* tio +); + +qse_tio_t* qse_tio_init ( + qse_tio_t* tip, + qse_mmgr_t* mmgr +); + +int qse_tio_fini ( + qse_tio_t* tio +); + +void* qse_tio_getxtn ( + qse_tio_t* tio +); + +qse_mmgr_t* qse_tio_getmmgr ( + qse_tio_t* tio +); + +void qse_tio_setmmgr ( + qse_tio_t* tio, + qse_mmgr_t* mmgr +); + +/* + * FUNCTION: qse_tio_geterrnum + * Returns an error code + * + * PARAMETERS: + * grep - a grep object + * + * RETURNS: + * Error code set by the last tio function called + */ +int qse_tio_geterrnum (qse_tio_t* tio); + +/* + * FUNCTION: qse_tio_geterrstr + * Translates an error code to a string + * + * PARAMETERS: + * tio - a tio object + * + * RETURNS: + * A pointer to a constant string describing the last error occurred + */ +const qse_char_t* qse_tio_geterrstr (qse_tio_t* tio); + +/* + * FUNCTION: qse_tio_attachin + * Attaches an input handler function + * + * PARAMETERS: + * tio - a tio object + * input - input handler function + * arg - user data to be passed to the input handler + * + * RETURNS: + * 0 on success, -1 on failure + */ +int qse_tio_attachin ( + qse_tio_t* tio, + qse_tio_io_t input, + void* arg +); + +/* + * FUNCTION: qse_tio_detachin + * Detaches an input handler function + * + * PARAMETERS: + * tio - a tio object + * + * RETURNS: + * 0 on success, -1 on failure + */ +int qse_tio_detachin ( + qse_tio_t* tio +); + +/* + * FUNCTION: qse_tio_attachout + * Attaches an output handler function + * + * PARAMETERS: + * tio - a tio object + * output - output handler function + * arg - user data to be passed to the output handler + * + * RETURNS: + * 0 on success, -1 on failure + */ +int qse_tio_attachout ( + qse_tio_t* tio, + qse_tio_io_t output, + void* arg +); + +/* + * FUNCTION: qse_tio_detachout + * Detaches an output handler function + * + * PARAMETERS: + * tio - a tio object + * + * RETURNS: + * 0 on success, -1 on failure + */ +int qse_tio_detachout ( + qse_tio_t* tio +); + + +/* + * FUNCTION: qse_tio_flush + * Flushes the output buffer + * + * PARAMETERS: + * tio - a tio object + * + * RETURNS: + * Number of bytes written on success, -1 on failure + */ +qse_ssize_t qse_tio_flush (qse_tio_t* tio); + +/* + * FUNCTION: qse_tio_purge + * Erases all input and output buffered + * + * PARAMETERS: + * tio - a tio object + * + */ +void qse_tio_purge (qse_tio_t* tio); + +/* + * FUNCTION: qse_tio_getc + * Reads a single character + */ +qse_ssize_t qse_tio_getc (qse_tio_t* tio, qse_char_t* c); + +/* + * FUNCTION: qse_tio_gets + * + * DESCRIPTION: + * inserts a terminating null if there is a room + */ +qse_ssize_t qse_tio_gets (qse_tio_t* tio, qse_char_t* buf, qse_size_t size); + +/* + * FUNCTION: qse_tio_getsx + * + * DESCRIPTION: + * doesn't insert a terminating null character + */ +qse_ssize_t qse_tio_getsx (qse_tio_t* tio, qse_char_t* buf, qse_size_t size); + +/* + * FUNCTION: qse_tio_getstr + */ +qse_ssize_t qse_tio_getstr (qse_tio_t* tio, qse_str_t* buf); + +/* + * FUNCTION: qse_tio_putc + */ +qse_ssize_t qse_tio_putc (qse_tio_t* tio, qse_char_t c); + +/* + * FUNCTION: qse_tio_puts + */ +qse_ssize_t qse_tio_puts (qse_tio_t* tio, const qse_char_t* str); + +/* + * FUNCTION: qse_tio_putsx + */ +qse_ssize_t qse_tio_putsx (qse_tio_t* tio, const qse_char_t* str, qse_size_t size); + +/* + * FUNCTION: qse_tio_putsn + */ +qse_ssize_t qse_tio_putsn (qse_tio_t* tio, ...); + +/* + * FUNCTION: qse_tio_putsxn + */ +qse_ssize_t qse_tio_putsxn (qse_tio_t* tio, ...); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/qse/include/qse/conf_msw.h b/qse/include/qse/conf_msw.h new file mode 100644 index 00000000..b6e76be7 --- /dev/null +++ b/qse/include/qse/conf_msw.h @@ -0,0 +1,64 @@ +/* + * $Id: conf_msw.h 225 2008-06-26 06:48:38Z baconevi $ + * + * {License} + */ + +/* +Macro Meaning +_WIN64 A 64-bit platform. +_WIN32 A 32-bit platform. This value is also defined by the 64-bit + compiler for backward compatibility. +_WIN16 A 16-bit platform + +The following macros are specific to the architecture. + +Macro Meaning +_M_IA64 Intel Itanium Processor Family +_M_IX86 x86 platform +_M_X64 x64 platform +*/ + +#define QSE_ENDIAN_LITTLE + +#define QSE_SIZEOF_CHAR 1 +#define QSE_SIZEOF_SHORT 2 +#define QSE_SIZEOF_INT 4 + +/*#ifdef _WIN64 + #define QSE_SIZEOF_LONG 8 +#else*/ + #define QSE_SIZEOF_LONG 4 +/*#endif*/ + +#if defined(__POCC__) || defined(__DMC__) + /* pelles c with no microsoft extension */ + #define QSE_SIZEOF_LONG_LONG 8 + + #define QSE_SIZEOF___INT8 0 + #define QSE_SIZEOF___INT16 0 + #define QSE_SIZEOF___INT32 0 + #define QSE_SIZEOF___INT64 0 + #define QSE_SIZEOF___INT96 0 + #define QSE_SIZEOF___INT128 0 +#else + #define QSE_SIZEOF_LONG_LONG 0 + + #define QSE_SIZEOF___INT8 1 + #define QSE_SIZEOF___INT16 2 + #define QSE_SIZEOF___INT32 4 + #define QSE_SIZEOF___INT64 8 + #define QSE_SIZEOF___INT96 0 + #define QSE_SIZEOF___INT128 0 +#endif + +#ifdef _WIN64 + #define QSE_SIZEOF_VOID_P 8 +#else + #define QSE_SIZEOF_VOID_P 4 +#endif + +#define QSE_SIZEOF_FLOAT 4 +#define QSE_SIZEOF_DOUBLE 8 +#define QSE_SIZEOF_LONG_DOUBLE 16 +#define QSE_SIZEOF_WCHAR_T 2 diff --git a/qse/include/ase/conf_vms.h b/qse/include/qse/conf_vms.h similarity index 59% rename from qse/include/ase/conf_vms.h rename to qse/include/qse/conf_vms.h index a4be775b..f81b9f29 100644 --- a/qse/include/ase/conf_vms.h +++ b/qse/include/qse/conf_vms.h @@ -5,68 +5,68 @@ */ /* all of vax, alpha, ia64 are in the little endian. */ -#define ASE_ENDIAN_LITTLE +#define QSE_ENDIAN_LITTLE /* * Refer to the chapter 3 of the following URL for the data sizes. * http://h71000.www7.hp.com/commercial/c/docs/6180profile.html */ -#define ASE_SIZEOF_CHAR 1 -#define ASE_SIZEOF_SHORT 2 -#define ASE_SIZEOF_INT 4 -#define ASE_SIZEOF_LONG 4 +#define QSE_SIZEOF_CHAR 1 +#define QSE_SIZEOF_SHORT 2 +#define QSE_SIZEOF_INT 4 +#define QSE_SIZEOF_LONG 4 #if defined(vax) || defined(__vax) - #define ASE_SIZEOF_LONG_LONG 0 + #define QSE_SIZEOF_LONG_LONG 0 #elif defined(alpha) || defined(__alpha) - #define ASE_SIZEOF_LONG_LONG 8 + #define QSE_SIZEOF_LONG_LONG 8 #elif defined(ia64) || defined(__ia64) - #define ASE_SIZEOF_LONG_LONG 8 + #define QSE_SIZEOF_LONG_LONG 8 #else - #define ASE_SIZEOF_LONG_LONG 0 + #define QSE_SIZEOF_LONG_LONG 0 #endif -#define ASE_SIZEOF___INT8 1 -#define ASE_SIZEOF___INT16 2 -#define ASE_SIZEOF___INT32 4 +#define QSE_SIZEOF___INT8 1 +#define QSE_SIZEOF___INT16 2 +#define QSE_SIZEOF___INT32 4 #if defined(vax) || defined(__vax) - #define ASE_SIZEOF___INT64 0 + #define QSE_SIZEOF___INT64 0 #elif defined(alpha) || defined(__alpha) - #define ASE_SIZEOF___INT64 8 + #define QSE_SIZEOF___INT64 8 #elif defined(ia64) || defined(__ia64) - #define ASE_SIZEOF___INT64 8 + #define QSE_SIZEOF___INT64 8 #else - #define ASE_SIZEOF___INT64 0 + #define QSE_SIZEOF___INT64 0 #endif -#define ASE_SIZEOF___INT96 0 -#define ASE_SIZEOF___INT128 0 +#define QSE_SIZEOF___INT96 0 +#define QSE_SIZEOF___INT128 0 #if defined(vax) || defined(__vax) - #define ASE_SIZEOF_VOID_P 4 + #define QSE_SIZEOF_VOID_P 4 #elif defined(alpha) || defined(__alpha) #if __INITIAL_POINTER_SIZE==64 #pragma pointer_size 64 - #define ASE_SIZEOF_VOID_P 8 + #define QSE_SIZEOF_VOID_P 8 #elif __INITIAL_POINTER_SIZE==32 #pragma pointer_size 32 - #define ASE_SIZEOF_VOID_P 4 + #define QSE_SIZEOF_VOID_P 4 #elif __INITIAL_POINTER_SIZE==0 - #define ASE_SIZEOF_VOID_P 4 + #define QSE_SIZEOF_VOID_P 4 #else #error "unsupported initial pointer size" #endif #elif defined(ia64) || defined(__ia64) #if __INITIAL_POINTER_SIZE==64 #pragma pointer_size 64 - #define ASE_SIZEOF_VOID_P 8 + #define QSE_SIZEOF_VOID_P 8 #elif __INITIAL_POINTER_SIZE==32 #pragma pointer_size 32 - #define ASE_SIZEOF_VOID_P 4 + #define QSE_SIZEOF_VOID_P 4 #elif __INITIAL_POINTER_SIZE==0 - #define ASE_SIZEOF_VOID_P 4 + #define QSE_SIZEOF_VOID_P 4 #else #error "unsupported initial pointer size" #endif @@ -74,17 +74,17 @@ #error "unsupported architecture" #endif -#define ASE_SIZEOF_FLOAT 4 -#define ASE_SIZEOF_DOUBLE 8 +#define QSE_SIZEOF_FLOAT 4 +#define QSE_SIZEOF_DOUBLE 8 #if defined(vax) || defined(__vax) - #define ASE_SIZEOF_LONG_DOUBLE 8 + #define QSE_SIZEOF_LONG_DOUBLE 8 #elif defined(alpha) || defined(__alpha) - #define ASE_SIZEOF_LONG_DOUBLE 16 + #define QSE_SIZEOF_LONG_DOUBLE 16 #elif defined(ia64) || defined(__ia64) - #define ASE_SIZEOF_LONG_DOUBLE 16 + #define QSE_SIZEOF_LONG_DOUBLE 16 #else - #define ASE_SIZEOF_LONG_DOUBLE 0 + #define QSE_SIZEOF_LONG_DOUBLE 0 #endif -#define ASE_SIZEOF_WCHAR_T 4 +#define QSE_SIZEOF_WCHAR_T 4 diff --git a/qse/include/ase/config.h.in b/qse/include/qse/config.h.in similarity index 89% rename from qse/include/ase/config.h.in rename to qse/include/qse/config.h.in index 4225b776..6f6b1f48 100644 --- a/qse/include/ase/config.h.in +++ b/qse/include/qse/config.h.in @@ -1,82 +1,4 @@ -/* include/ase/config.h.in. Generated from configure.ac by autoheader. */ - -/* author's email address */ -#undef ASE_AUTHOR - -/* char is mchar */ -#undef ASE_CHAR_IS_MCHAR - -/* char is wchar */ -#undef ASE_CHAR_IS_WCHAR - -/* Big Endian */ -#undef ASE_ENDIAN_BIG - -/* Little Endian */ -#undef ASE_ENDIAN_LITTLE - -/* Unknown Endian */ -#undef ASE_ENDIAN_UNKNOWN - -/* sizeof(char) */ -#undef ASE_SIZEOF_CHAR - -/* sizeof(double) */ -#undef ASE_SIZEOF_DOUBLE - -/* sizeof(float) */ -#undef ASE_SIZEOF_FLOAT - -/* sizeof(int) */ -#undef ASE_SIZEOF_INT - -/* sizeof(long) */ -#undef ASE_SIZEOF_LONG - -/* sizeof(long double) */ -#undef ASE_SIZEOF_LONG_DOUBLE - -/* sizeof(long long) */ -#undef ASE_SIZEOF_LONG_LONG - -/* sizeof(short) */ -#undef ASE_SIZEOF_SHORT - -/* sizeof(void*) */ -#undef ASE_SIZEOF_VOID_P - -/* sizeof(wchar_t) */ -#undef ASE_SIZEOF_WCHAR_T - -/* sizeof(__int128) */ -#undef ASE_SIZEOF___INT128 - -/* sizeof(__int16) */ -#undef ASE_SIZEOF___INT16 - -/* sizeof(__int32) */ -#undef ASE_SIZEOF___INT32 - -/* sizeof(__int64) */ -#undef ASE_SIZEOF___INT64 - -/* sizeof(__int8) */ -#undef ASE_SIZEOF___INT8 - -/* use the syscall() function */ -#undef ASE_USE_SYSCALL - -/* package version */ -#undef ASE_VERSION - -/* major version number */ -#undef ASE_VERSION_MAJOR - -/* minor version number */ -#undef ASE_VERSION_MINOR - -/* patch level */ -#undef ASE_VERSION_PATCH +/* include/qse/config.h.in. Generated from configure.ac by autoheader. */ /* Define to 1 if you have the `atan' function. */ #undef HAVE_ATAN @@ -258,6 +180,84 @@ /* Define to the version of this package. */ #undef PACKAGE_VERSION +/* author's email address */ +#undef QSE_AUTHOR + +/* char is mchar */ +#undef QSE_CHAR_IS_MCHAR + +/* char is wchar */ +#undef QSE_CHAR_IS_WCHAR + +/* Big Endian */ +#undef QSE_ENDIAN_BIG + +/* Little Endian */ +#undef QSE_ENDIAN_LITTLE + +/* Unknown Endian */ +#undef QSE_ENDIAN_UNKNOWN + +/* sizeof(char) */ +#undef QSE_SIZEOF_CHAR + +/* sizeof(double) */ +#undef QSE_SIZEOF_DOUBLE + +/* sizeof(float) */ +#undef QSE_SIZEOF_FLOAT + +/* sizeof(int) */ +#undef QSE_SIZEOF_INT + +/* sizeof(long) */ +#undef QSE_SIZEOF_LONG + +/* sizeof(long double) */ +#undef QSE_SIZEOF_LONG_DOUBLE + +/* sizeof(long long) */ +#undef QSE_SIZEOF_LONG_LONG + +/* sizeof(short) */ +#undef QSE_SIZEOF_SHORT + +/* sizeof(void*) */ +#undef QSE_SIZEOF_VOID_P + +/* sizeof(wchar_t) */ +#undef QSE_SIZEOF_WCHAR_T + +/* sizeof(__int128) */ +#undef QSE_SIZEOF___INT128 + +/* sizeof(__int16) */ +#undef QSE_SIZEOF___INT16 + +/* sizeof(__int32) */ +#undef QSE_SIZEOF___INT32 + +/* sizeof(__int64) */ +#undef QSE_SIZEOF___INT64 + +/* sizeof(__int8) */ +#undef QSE_SIZEOF___INT8 + +/* use the syscall() function */ +#undef QSE_USE_SYSCALL + +/* package version */ +#undef QSE_VERSION + +/* major version number */ +#undef QSE_VERSION_MAJOR + +/* minor version number */ +#undef QSE_VERSION_MINOR + +/* patch level */ +#undef QSE_VERSION_PATCH + /* The size of `char', as computed by sizeof. */ #undef SIZEOF_CHAR diff --git a/qse/include/qse/lsp/lsp.h b/qse/include/qse/lsp/lsp.h new file mode 100644 index 00000000..525009ca --- /dev/null +++ b/qse/include/qse/lsp/lsp.h @@ -0,0 +1,134 @@ +/* + * $Id: lsp.h 183 2008-06-03 08:18:55Z baconevi $ + * + * {License} + */ + +#ifndef _QSE_LSP_LSP_H_ +#define _QSE_LSP_LSP_H_ + +#include +#include + +typedef struct qse_lsp_t qse_lsp_t; +typedef struct qse_lsp_obj_t qse_lsp_obj_t; +typedef struct qse_lsp_prmfns_t qse_lsp_prmfns_t; + +typedef qse_ssize_t (*qse_lsp_io_t) ( + int cmd, void* arg, qse_char_t* data, qse_size_t count); + +typedef qse_real_t (*qse_lsp_pow_t) ( + void* data, qse_real_t x, qse_real_t y); +typedef int (*qse_lsp_sprintf_t) ( + void* data, qse_char_t* buf, qse_size_t size, + const qse_char_t* fmt, ...); +typedef void (*qse_lsp_dprintf_t) (void* data, const qse_char_t* fmt, ...); + +struct qse_lsp_prmfns_t +{ + qse_mmgr_t mmgr; + qse_ccls_t ccls; + + /* utilities */ + struct + { + qse_lsp_sprintf_t sprintf; + qse_lsp_dprintf_t dprintf; + void* data; + } misc; +}; + +/* io function commands */ +enum +{ + QSE_LSP_IO_OPEN = 0, + QSE_LSP_IO_CLOSE = 1, + QSE_LSP_IO_READ = 2, + QSE_LSP_IO_WRITE = 3 +}; + +/* option code */ +enum +{ + QSE_LSP_UNDEFSYMBOL = (1 << 0) +}; + +/* error code */ +enum +{ + QSE_LSP_ENOERR, + QSE_LSP_ENOMEM, + + QSE_LSP_EEXIT, + QSE_LSP_EEND, + QSE_LSP_EENDSTR, + QSE_LSP_ENOINP, + QSE_LSP_EINPUT, + QSE_LSP_ENOOUTP, + QSE_LSP_EOUTPUT, + + QSE_LSP_ESYNTAX, + QSE_LSP_ERPAREN, + QSE_LSP_EARGBAD, + QSE_LSP_EARGFEW, + QSE_LSP_EARGMANY, + QSE_LSP_EUNDEFFN, + QSE_LSP_EBADFN, + QSE_LSP_EDUPFML, + QSE_LSP_EBADSYM, + QSE_LSP_EUNDEFSYM, + QSE_LSP_EEMPBDY, + QSE_LSP_EVALBAD, + QSE_LSP_EDIVBY0 +}; + +typedef qse_lsp_obj_t* (*qse_lsp_prim_t) (qse_lsp_t* lsp, qse_lsp_obj_t* obj); + +#ifdef __cplusplus +extern "C" { +#endif + +qse_lsp_t* qse_lsp_open ( + const qse_lsp_prmfns_t* prmfns, + qse_size_t mem_ubound, qse_size_t mem_ubound_inc); + +void qse_lsp_close (qse_lsp_t* lsp); + +/** + * @function qse_lsp_setassocdata + * @brief ssociats the user-specified data with an interpreter + */ +void qse_lsp_setassocdata (qse_lsp_t* lsp, void* data); +/** + * @function qse_lsp_getassocdata + * @brief returns the user-specified data associated with an interpreter + */ +void* qse_lsp_getassocdata (qse_lsp_t* lsp); + +void qse_lsp_geterror ( + qse_lsp_t* lsp, int* errnum, const qse_char_t** errmsg); + +void qse_lsp_seterror ( + qse_lsp_t* lsp, int errnum, + const qse_char_t** errarg, qse_size_t argcnt); + +int qse_lsp_attinput (qse_lsp_t* lsp, qse_lsp_io_t input, void* arg); +int qse_lsp_detinput (qse_lsp_t* lsp); + +int qse_lsp_attoutput (qse_lsp_t* lsp, qse_lsp_io_t output, void* arg); +int qse_lsp_detoutput (qse_lsp_t* lsp); + +qse_lsp_obj_t* qse_lsp_read (qse_lsp_t* lsp); +qse_lsp_obj_t* qse_lsp_eval (qse_lsp_t* lsp, qse_lsp_obj_t* obj); +int qse_lsp_print (qse_lsp_t* lsp, const qse_lsp_obj_t* obj); + +int qse_lsp_addprim ( + qse_lsp_t* lsp, const qse_char_t* name, qse_size_t name_len, + qse_lsp_prim_t prim, qse_size_t min_args, qse_size_t max_args); +int qse_lsp_removeprim (qse_lsp_t* lsp, const qse_char_t* name); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/qse/include/ase/lsp/makefile.am b/qse/include/qse/lsp/makefile.am similarity index 56% rename from qse/include/ase/lsp/makefile.am rename to qse/include/qse/lsp/makefile.am index f1b4424d..c47603d4 100644 --- a/qse/include/ase/lsp/makefile.am +++ b/qse/include/qse/lsp/makefile.am @@ -1,5 +1,5 @@ pkginclude_HEADERS = lsp.h -pkgincludedir= $(includedir)/ase/lsp +pkgincludedir= $(includedir)/qse/lsp CLEANFILES = *dist diff --git a/qse/include/ase/lsp/makefile.in b/qse/include/qse/lsp/makefile.in similarity index 98% rename from qse/include/ase/lsp/makefile.in rename to qse/include/qse/lsp/makefile.in index fbfe7edd..672f40fc 100644 --- a/qse/include/ase/lsp/makefile.in +++ b/qse/include/qse/lsp/makefile.in @@ -31,7 +31,7 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -subdir = include/ase/lsp +subdir = include/qse/lsp DIST_COMMON = $(pkginclude_HEADERS) $(srcdir)/makefile.am \ $(srcdir)/makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 @@ -39,7 +39,7 @@ am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/include/ase/config.h +CONFIG_HEADER = $(top_builddir)/include/qse/config.h CONFIG_CLEAN_FILES = SOURCES = DIST_SOURCES = @@ -55,7 +55,7 @@ HEADERS = $(pkginclude_HEADERS) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -pkgincludedir = $(includedir)/ase/lsp +pkgincludedir = $(includedir)/qse/lsp ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ @@ -192,9 +192,9 @@ $(srcdir)/makefile.in: $(srcdir)/makefile.am $(am__configure_deps) exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign include/ase/lsp/makefile'; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign include/qse/lsp/makefile'; \ cd $(top_srcdir) && \ - $(AUTOMAKE) --foreign include/ase/lsp/makefile + $(AUTOMAKE) --foreign include/qse/lsp/makefile .PRECIOUS: makefile makefile: $(srcdir)/makefile.in $(top_builddir)/config.status @case '$?' in \ diff --git a/qse/include/qse/macros.h b/qse/include/qse/macros.h new file mode 100644 index 00000000..d33a37d5 --- /dev/null +++ b/qse/include/qse/macros.h @@ -0,0 +1,171 @@ +/* + * $Id: macros.h 455 2008-11-26 09:05:00Z baconevi $ + * + * {License} + */ + +#ifndef _QSE_MACROS_H_ +#define _QSE_MACROS_H_ + +#include + +#ifdef __cplusplus + /*#define QSE_NULL ((qse_uint_t)0)*/ + #define QSE_NULL (0) +#else + #define QSE_NULL ((void*)0) +#endif + +/****d* ase/QSE_TRUE,QSE_FALSE + * NAME + * QSE_TRUE - represent a boolean true + * QSE_FALSE - represent a boolean false + ****** + */ +#define QSE_TRUE (0 == 0) +#define QSE_FALSE (0 != 0) + + +/****d* ase/QSE_ALIVE,QSE_ZOMBIE,QSE_DEAD + * NAME + * QSE_ALIVE - represent a living state + * QSE_ZOMBIE - represent a zombie state + * QSE_DEAD - represent a dead state + ****** + */ +#define QSE_ALIVE 1 +#define QSE_ZOMBIE 0 +#define QSE_DEAD -1 + + +#define AES_MCHAR_EOF ((qse_mcint_t)-1) +#define AES_WCHAR_EOF ((qse_wcint_t)-1) +#define QSE_CHAR_EOF ((qse_cint_t)-1) + +#define QSE_SIZEOF(n) (sizeof(n)) +#define QSE_COUNTOF(n) (sizeof(n)/sizeof(n[0])) +#define QSE_OFFSETOF(type,member) ((qse_size_t)&((type*)0)->member) + +#define QSE_TYPE_IS_SIGNED(type) (((type)0) > ((type)-1)) +#define QSE_TYPE_IS_UNSIGNED(type) (((type)0) < ((type)-1)) + +#define QSE_TYPE_SIGNED_MAX(type) \ + ((type)~((type)1 << (QSE_SIZEOF(type) * 8 - 1))) +#define QSE_TYPE_UNSIGNED_MAX(type) ((type)(~(type)0)) + +#define QSE_TYPE_SIGNED_MIN(type) \ + ((type)((type)1 << (QSE_SIZEOF(type) * 8 - 1))) +#define QSE_TYPE_UNSIGNED_MIN(type) ((type)0) + +#define QSE_TYPE_MAX(type) \ + ((QSE_TYPE_IS_SIGNED(type)? QSE_TYPE_SIGNED_MAX(type): QSE_TYPE_UNSIGNED_MAX(type))) +#define QSE_TYPE_MIN(type) \ + ((QSE_TYPE_IS_SIGNED(type)? QSE_TYPE_SIGNED_MIN(type): QSE_TYPE_UNSIGNED_MIN(type))) + +#define QSE_IS_POWOF2(x) (((x) & ((x) - 1)) == 0) + +#define QSE_SWAP(x,y,original_type,casting_type) \ + do { \ + x = (original_type)((casting_type)(x) ^ (casting_type)(y)); \ + y = (original_type)((casting_type)(y) ^ (casting_type)(x)); \ + x = (original_type)((casting_type)(x) ^ (casting_type)(y)); \ + } while (0) + +#define QSE_ABS(x) ((x) < 0? -(x): (x)) + +#define QSE_LOOP_CONTINUE(id) goto __loop_ ## id ## _begin__; +#define QSE_LOOP_BREAK(id) goto __loop_ ## id ## _end__; +#define QSE_LOOP_BEGIN(id) __loop_ ## id ## _begin__: { +#define QSE_LOOP_END(id) QSE_LOOP_CONTINUE(id) } __loop_ ## id ## _end__:; + +#define QSE_REPEAT(n,blk) \ + do { \ + qse_size_t __qse_repeat_x1__ = (qse_size_t)(n); \ + qse_size_t __qse_repeat_x2__ = __qse_repeat_x1__ >> 4; \ + __qse_repeat_x1__ &= 15; \ + while (__qse_repeat_x1__-- > 0) { blk; } \ + while (__qse_repeat_x2__-- > 0) { \ + blk; blk; blk; blk; blk; blk; blk; blk; \ + blk; blk; blk; blk; blk; blk; blk; blk; \ + } \ + } while (0); + +/* number of characters to number of bytes */ +#define QSE_NCTONB(x) ((x)*sizeof(qse_char_t)) +/* number of bytes to number of characters */ +#define QSE_NBTONC(x) ((x)/sizeof(qse_char_t)) + +#define QSE_MQ_I(val) #val +#define QSE_MQ(val) QSE_MQ_I(val) +#define QSE_MC(ch) ((qse_mchar_t)ch) +#define QSE_MS(str) ((const qse_mchar_t*)str) +#define QSE_MT(txt) (txt) + +#define QSE_WQ_I(val) (L ## #val) +#define QSE_WQ(val) QSE_WQ_I(val) +#define QSE_WC(ch) ((qse_wchar_t)L ## ch) +#define QSE_WS(str) ((const qse_wchar_t*)L ## str) +#define QSE_WT(txt) (L ## txt) + +#if defined(QSE_CHAR_IS_MCHAR) + #define QSE_Q(val) QSE_MQ(val) + #define QSE_C(ch) QSE_MC(ch) + #define QSE_S(str) QSE_MS(str) + #define QSE_T(txt) QSE_MT(txt) +#else + #define QSE_Q(val) QSE_WQ(val) + #define QSE_C(ch) QSE_WC(ch) + #define QSE_S(str) QSE_WS(str) + #define QSE_T(txt) QSE_WT(txt) +#endif + +#if defined(__GNUC__) + #define QSE_BEGIN_PACKED_STRUCT(x) struct x { + #define QSE_END_PACKED_STRUCT() } __attribute__((packed)); +#else + #define QSE_BEGIN_PACKED_STRUCT(x) struct x { + #define QSE_END_PACKED_STRUCT() }; +#endif + +#ifdef NDEBUG + #define QSE_ASSERT(expr) ((void)0) + #define QSE_ASSERTX(expr,desc) ((void)0) +#else + #ifdef __cplusplus + extern "C" { + #endif + void qse_assert_failed ( + const qse_char_t* expr, const qse_char_t* desc, + const qse_char_t* file, qse_size_t line); + #ifdef __cplusplus + } + #endif + + #define QSE_ASSERT(expr) (void)((expr) || \ + (qse_assert_failed (QSE_T(#expr), QSE_NULL, QSE_T(__FILE__), __LINE__), 0)) + #define QSE_ASSERTX(expr,desc) (void)((expr) || \ + (qse_assert_failed (QSE_T(#expr), QSE_T(desc), QSE_T(__FILE__), __LINE__), 0)) +#endif + +/****d* ase/QSE_FNS + * NAME + * QSE_FNS - define an ASE function name space + * DESCRIPTION + * The QSE_FNS macro enables you to simulate a function name space for the + * types designed properly. + * EXAMPLE + * QSE_FNS (awk, AWK); + * qse_awk_t* awk = AWK.open (....); + * AWK.close (awk); + ****** + */ +#define QSE_NS(type,name) struct qse_ns_##type##_t name = qse_ns_##type##_d + +#ifdef __cplusplus + #define QSE_BEGIN_NAMESPACE(x) namespace x { + #define QSE_END_NAMESPACE(x) } + #define QSE_BEGIN_NAMESPACE2(x,y) namespace x { namespace y { + #define QSE_END_NAMESPACE2(y,x) }} +#endif + +#endif diff --git a/qse/include/ase/makefile.am b/qse/include/qse/makefile.am similarity index 69% rename from qse/include/ase/makefile.am rename to qse/include/qse/makefile.am index fa8481a9..eb91a452 100644 --- a/qse/include/ase/makefile.am +++ b/qse/include/qse/makefile.am @@ -4,14 +4,14 @@ SUBDIRS = cmn awk lsp tgp utl pkginclude_HEADERS = config.h.in conf_msw.h conf_vms.h types.h macros.h pack1.h unpack.h -pkgincludedir= $(includedir)/ase +pkgincludedir= $(includedir)/qse CLEANFILES = *dist install-data-hook: - @"$(GREP)" -E "#define[ ]+ASE_" "$(srcdir)/config.h" > "$(pkgincludedir)/config.h" + @"$(GREP)" -E "#define[ ]+QSE_" "$(srcdir)/config.h" > "$(pkgincludedir)/config.h" @"$(RM)" -f "$(pkgincludedir)/config.h.in" - @"$(SED)" 's|/\*#define ASE_HAVE_CONFIG_H\*/|#define ASE_HAVE_CONFIG_H|' "$(srcdir)/types.h" > "$(pkgincludedir)/types.h" + @"$(SED)" 's|/\*#define QSE_HAVE_CONFIG_H\*/|#define QSE_HAVE_CONFIG_H|' "$(srcdir)/types.h" > "$(pkgincludedir)/types.h" uninstall-hook: @"$(RM)" -f "$(pkgincludedir)/config.h" diff --git a/qse/include/ase/makefile.in b/qse/include/qse/makefile.in similarity index 97% rename from qse/include/ase/makefile.in rename to qse/include/qse/makefile.in index 870cc990..ad1349e6 100644 --- a/qse/include/ase/makefile.in +++ b/qse/include/qse/makefile.in @@ -31,7 +31,7 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -subdir = include/ase +subdir = include/qse DIST_COMMON = $(pkginclude_HEADERS) $(srcdir)/config.h.in \ $(srcdir)/makefile.am $(srcdir)/makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 @@ -65,7 +65,7 @@ ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -pkgincludedir = $(includedir)/ase +pkgincludedir = $(includedir)/qse ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ @@ -206,9 +206,9 @@ $(srcdir)/makefile.in: $(srcdir)/makefile.am $(am__configure_deps) exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign include/ase/makefile'; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign include/qse/makefile'; \ cd $(top_srcdir) && \ - $(AUTOMAKE) --foreign include/ase/makefile + $(AUTOMAKE) --foreign include/qse/makefile .PRECIOUS: makefile makefile: $(srcdir)/makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -235,7 +235,7 @@ config.h: stamp-h1 stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status @rm -f stamp-h1 - cd $(top_builddir) && $(SHELL) ./config.status include/ase/config.h + cd $(top_builddir) && $(SHELL) ./config.status include/qse/config.h $(srcdir)/config.h.in: $(am__configure_deps) cd $(top_srcdir) && $(AUTOHEADER) rm -f stamp-h1 @@ -552,9 +552,9 @@ uninstall-am: uninstall-pkgincludeHEADERS install-data-hook: - @"$(GREP)" -E "#define[ ]+ASE_" "$(srcdir)/config.h" > "$(pkgincludedir)/config.h" + @"$(GREP)" -E "#define[ ]+QSE_" "$(srcdir)/config.h" > "$(pkgincludedir)/config.h" @"$(RM)" -f "$(pkgincludedir)/config.h.in" - @"$(SED)" 's|/\*#define ASE_HAVE_CONFIG_H\*/|#define ASE_HAVE_CONFIG_H|' "$(srcdir)/types.h" > "$(pkgincludedir)/types.h" + @"$(SED)" 's|/\*#define QSE_HAVE_CONFIG_H\*/|#define QSE_HAVE_CONFIG_H|' "$(srcdir)/types.h" > "$(pkgincludedir)/types.h" uninstall-hook: @"$(RM)" -f "$(pkgincludedir)/config.h" diff --git a/qse/include/ase/pack1.h b/qse/include/qse/pack1.h similarity index 100% rename from qse/include/ase/pack1.h rename to qse/include/qse/pack1.h diff --git a/qse/include/ase/pack2.h b/qse/include/qse/pack2.h similarity index 100% rename from qse/include/ase/pack2.h rename to qse/include/qse/pack2.h diff --git a/qse/include/ase/tgp/makefile.am b/qse/include/qse/tgp/makefile.am similarity index 56% rename from qse/include/ase/tgp/makefile.am rename to qse/include/qse/tgp/makefile.am index 43ea7450..37ab14fa 100644 --- a/qse/include/ase/tgp/makefile.am +++ b/qse/include/qse/tgp/makefile.am @@ -1,5 +1,5 @@ pkginclude_HEADERS = tgp.h -pkgincludedir= $(includedir)/ase/tgp +pkgincludedir= $(includedir)/qse/tgp CLEANFILES = *dist diff --git a/qse/include/ase/tgp/makefile.in b/qse/include/qse/tgp/makefile.in similarity index 98% rename from qse/include/ase/tgp/makefile.in rename to qse/include/qse/tgp/makefile.in index 1ced6f4b..e2c39fba 100644 --- a/qse/include/ase/tgp/makefile.in +++ b/qse/include/qse/tgp/makefile.in @@ -31,7 +31,7 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -subdir = include/ase/tgp +subdir = include/qse/tgp DIST_COMMON = $(pkginclude_HEADERS) $(srcdir)/makefile.am \ $(srcdir)/makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 @@ -39,7 +39,7 @@ am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/include/ase/config.h +CONFIG_HEADER = $(top_builddir)/include/qse/config.h CONFIG_CLEAN_FILES = SOURCES = DIST_SOURCES = @@ -55,7 +55,7 @@ HEADERS = $(pkginclude_HEADERS) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -pkgincludedir = $(includedir)/ase/tgp +pkgincludedir = $(includedir)/qse/tgp ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ @@ -192,9 +192,9 @@ $(srcdir)/makefile.in: $(srcdir)/makefile.am $(am__configure_deps) exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign include/ase/tgp/makefile'; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign include/qse/tgp/makefile'; \ cd $(top_srcdir) && \ - $(AUTOMAKE) --foreign include/ase/tgp/makefile + $(AUTOMAKE) --foreign include/qse/tgp/makefile .PRECIOUS: makefile makefile: $(srcdir)/makefile.in $(top_builddir)/config.status @case '$?' in \ diff --git a/qse/include/qse/tgp/tgp.h b/qse/include/qse/tgp/tgp.h new file mode 100644 index 00000000..9cf7167e --- /dev/null +++ b/qse/include/qse/tgp/tgp.h @@ -0,0 +1,40 @@ +/* + * $Id: tgp.h 235 2008-07-05 07:25:54Z baconevi $ + * + * {License} + */ + +#ifndef _QSE_TGP_TGP_H_ +#define _QSE_TGP_TGP_H_ + +#include +#include + +typedef struct qse_tgp_t qse_tgp_t; + +enum qse_tgp_iocmd_t +{ + QSE_TGP_IO_OPEN = 0, + QSE_TGP_IO_CLOSE = 1, + QSE_TGP_IO_READ = 2, + QSE_TGP_IO_WRITE = 3 +}; + +typedef qse_ssize_t (*qse_tgp_io_t) ( + int cmd, void* arg, qse_char_t* data, qse_size_t count); + +#ifdef __cplusplus +extern "C" { +#endif + +qse_tgp_t* qse_tgp_open (qse_mmgr_t* mmgr); +void qse_tgp_close (qse_tgp_t* tgp); + +void qse_tgp_setassocdata (qse_tgp_t* tgp, void* data); +void* qse_tgp_getassocdata (qse_tgp_t* tgp); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/qse/include/qse/types.h b/qse/include/qse/types.h new file mode 100644 index 00000000..f90e0980 --- /dev/null +++ b/qse/include/qse/types.h @@ -0,0 +1,439 @@ +/* + * $Id: types.h 476 2008-12-12 06:25:48Z baconevi $ + * + * {License} + */ + +#ifndef _QSE_TYPES_H_ +#define _QSE_TYPES_H_ + +/****o* ase/basic types + * DESCRIPTION + * defines various common basic types. They are designed to be + * cross-platform. These types are preferred over native data types in many + * contexts. + * + * #include + ****** + */ + +/* WARNING: NEVER CHANGE/DELETE THE FOLLOWING LINE */ +/*#define QSE_HAVE_CONFIG_H*/ + +#if defined(QSE_HAVE_CONFIG_H) + #include +#elif defined(_WIN32) + #include +#elif defined(vms) || defined(__vms) + #include +/* +#elif defined(__unix__) || defined(__unix) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || (defined(__APPLE__) && defined(__MACH__)) || defined(__SPU__) + #if !defined(__unix__) + #define __unix__ + #endif + #if !defined(__unix) + #define __unix + #endif + #include +*/ +#else + #error unsupported operating system +#endif + +/****t* ase/qse_bool_t + * NAME + * qse_bool_t - define a boolean type + * DESCRIPTION + * The qse_bool_t type defines a boolean type that can represent QSE_TRUE + * and QSE_FALSE. + ****** + */ +typedef int qse_bool_t; + +/****t* ase/qse_tri_t + * NAME + * qse_tri_t - define a tri-state type + * DESCRIPTION + * The qse_tri_t type defines a tri-state type that can represent QSE_ALIVE, + * QSE_ZOMBIE, and QSE_DEAD. + ****** + */ +typedef int qse_tri_t; + +/****t* ase/qse_int_t,qse_uint_t + * NAME + * qse_int_t - define a signed integer type as large as a pointer type + * qse_uint_t - define an unsigned integer type as large as a pointer type + ****** + */ +#if (defined(hpux) || defined(__hpux) || defined(__hpux__)) && (QSE_SIZEOF_VOID_P == QSE_SIZEOF_LONG) + typedef long qse_int_t; + typedef unsigned long qse_uint_t; +#elif defined(__SPU__) && (QSE_SIZEOF_VOID_P == QSE_SIZEOF_LONG) + typedef long qse_int_t; + typedef unsigned long qse_uint_t; +#elif QSE_SIZEOF_VOID_P == QSE_SIZEOF_INT + typedef int qse_int_t; + typedef unsigned int qse_uint_t; +#elif QSE_SIZEOF_VOID_P == QSE_SIZEOF_LONG + typedef long qse_int_t; + typedef unsigned long qse_uint_t; +#elif QSE_SIZEOF_VOID_P == QSE_SIZEOF_LONG_LONG + typedef long long qse_int_t; + typedef unsigned long long qse_uint_t; +#elif QSE_SIZEOF_VOID_P == QSE_SIZEOF___INT32 + typedef __int32 qse_int_t; + typedef unsigned __int32 qse_uint_t; +#elif QSE_SIZEOF_VOID_P == QSE_SIZEOF___INT64 + typedef __int64 qse_int_t; + typedef unsigned __int64 qse_uint_t; +#else + #error unsupported pointer size +#endif + +/****t* ase/qse_long_t,qse_ulong_t + * NAME + * qse_long_t - define the largest signed integer type supported + * qse_ulong_t - define the largest unsigned integer type supported + ****** + */ +#if QSE_SIZEOF_LONG_LONG > 0 + typedef long long qse_long_t; + typedef unsigned long long qse_ulong_t; +#elif QSE_SIZEOF___INT64 > 0 + typedef __int64 qse_long_t; + typedef unsigned __int64 qse_ulong_t; +#else + typedef long qse_long_t; + typedef unsigned long qse_ulong_t; +#endif + +/****t* ase/qse_int8_t,qse_uint8_t + * NAME + * qse_int8_t - define an 8-bit signed integer type + * qse_uint8_t - define an 8-bit unsigned integer type + ****** + */ +#if QSE_SIZEOF_CHAR == 1 + typedef char qse_int8_t; + typedef unsigned char qse_uint8_t; +#elif QSE_SIZEOF___INT8 == 1 + typedef __int8 qse_int8_t; + typedef unsigned __int8 qse_uint8_t; +#endif + +/****t* ase/qse_int16_t,qse_uint16_t + * NAME + * qse_int16_t - define a 16-bit signed integer type + * qse_uint16_t - define a 16-bit unsigned integer type + ****** + */ +#if QSE_SIZEOF_SHORT == 2 + typedef short qse_int16_t; + typedef unsigned short qse_uint16_t; +#elif QSE_SIZEOF___INT16 == 2 + typedef __int16 qse_int16_t; + typedef unsigned __int16 qse_uint16_t; +#endif + +/****t* ase/qse_int32_t,qse_uint32_t + * NAME + * qse_int32_t - define a 32-bit signed integer type + * qse_uint32_t - define a 32-bit unsigned integer type + ****** + */ +#if QSE_SIZEOF_INT == 4 + typedef int qse_int32_t; + typedef unsigned int qse_uint32_t; +#elif QSE_SIZEOF_LONG == 4 + typedef long qse_int32_t; + typedef unsigned long qse_uint32_t; +#elif QSE_SIZEOF___INT32 == 4 + typedef __int32 qse_int32_t; + typedef unsigned __int32 qse_uint32_t; +#endif + +/****t* ase/qse_int64_t,qse_uint64_t + * NAME + * qse_int64_t - define a 64-bit signed integer type + * qse_uint64_t - define a 64-bit unsigned integer type + ****** + */ +#if QSE_SIZEOF_INT == 8 + #define QSE_HAVE_INT64_T + #define QSE_HAVE_UINT64_T + typedef int qse_int64_t; + typedef unsigned int qse_uint64_t; +#elif QSE_SIZEOF_LONG == 8 + #define QSE_HAVE_INT64_T + #define QSE_HAVE_UINT64_T + typedef long qse_int64_t; + typedef unsigned long qse_uint64_t; +#elif QSE_SIZEOF_LONG_LONG == 8 + #define QSE_HAVE_INT64_T + #define QSE_HAVE_UINT64_T + typedef long long qse_int64_t; + typedef unsigned long long qse_uint64_t; +#elif QSE_SIZEOF___INT64 == 8 + #define QSE_HAVE_INT64_T + #define QSE_HAVE_UINT64_T + typedef __int64 qse_int64_t; + typedef unsigned __int64 qse_uint64_t; +#endif + +#if QSE_SIZEOF_INT == 16 + #define QSE_HAVE_INT128_T + #define QSE_HAVE_UINT128_T + typedef int qse_int128_t; + typedef unsigned int qse_uint128_t; +#elif QSE_SIZEOF_LONG == 16 + #define QSE_HAVE_INT128_T + #define QSE_HAVE_UINT128_T + typedef long qse_int128_t; + typedef unsigned long qse_uint128_t; +#elif QSE_SIZEOF_LONG_LONG == 16 + #define QSE_HAVE_INT128_T + #define QSE_HAVE_UINT128_T + typedef long long qse_int128_t; + typedef unsigned long long qse_uint128_t; +#elif QSE_SIZEOF___INT128 == 16 + #define QSE_HAVE_INT128_T + #define QSE_HAVE_UINT128_T + typedef __int128 qse_int128_t; + typedef unsigned __int128 qse_uint128_t; +#endif + +/****t* ase/qse_byte_t + * NAME + * qse_word_t - define a byte type + ****** + */ +typedef qse_uint8_t qse_byte_t; + +/****t* ase/qse_size_t + * NAME + * qse_size_t - define an unsigned integer type that can hold a pointer value + ****** + */ +#ifdef __SIZE_TYPE__ +typedef __SIZE_TYPE__ qse_size_t; +#else +typedef qse_uint_t qse_size_t; +#endif + +/****t* ase/qse_ssize_t + * NAME + * qse_ssize_t - define an signed integer type that can hold a pointer value + ****** + */ +typedef qse_int_t qse_ssize_t; + +/****t* ase/qse_word_t + * NAME + * qse_word_t - define an integer type identical to qse_uint_t + ****** + */ +typedef qse_uint_t qse_word_t; + +/* floating-point number */ +#if defined(__FreeBSD__) + /* TODO: check if the support for long double is complete. + * if so, use long double for qse_real_t */ + #define QSE_SIZEOF_REAL QSE_SIZEOF_DOUBLE + typedef double qse_real_t; +#elif QSE_SIZEOF_LONG_DOUBLE > QSE_SIZEOF_DOUBLE + #define QSE_SIZEOF_REAL QSE_SIZEOF_LONG_DOUBLE + typedef long double qse_real_t; +#else + #define QSE_SIZEOF_REAL QSE_SIZEOF_DOUBLE + typedef double qse_real_t; +#endif + +/****t* ase/qse_mchar_t,qse_mcint_t + * NAME + * qse_mchar_t - define a multi-byte character + * qse_mcint_t - define a type that can hold qse_mchar_t and QSE_MCHAR_EOF + ****** + */ +typedef char qse_mchar_t; +typedef int qse_mcint_t; + +/****t* ase/qse_wchar_t,qse_wcint_t + * NAME + * qse_wchar_t - define a wide character + * qse_wcint_t - define a type that can hold qse_wchar_t and QSE_WCHAR_EOF + ****** + */ +#if defined(__cplusplus) && (!defined(_MSC_VER) || (defined(_MSC_VER)&&defined(_NATIVE_WCHAR_T_DEFINED))) + /* C++ */ + + typedef wchar_t qse_wchar_t; + typedef wchar_t qse_wcint_t; + + /* all the way down from here for C */ +#elif defined(__WCHAR_TYPE__) && defined(__WINT_TYPE__) + typedef __WCHAR_TYPE__ qse_wchar_t; + typedef __WINT_TYPE__ qse_wcint_t; +#elif (QSE_SIZEOF_WCHAR_T == 2) || (QSE_SIZEOF_WCHAR_T == 0) + typedef unsigned short qse_wchar_t; + typedef unsigned short qse_wcint_t; +#elif (QSE_SIZEOF_WCHAR_T == 4) + #if defined(vms) || defined(__vms) + typedef unsigned int qse_wchar_t; + typedef int qse_wcint_t; + #elif defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) + typedef int qse_wchar_t; + typedef int qse_wcint_t; + #elif (defined(sun) || defined(__sun) || defined(__linux)) + #if defined(_LP64) + typedef int qse_wchar_t; + typedef int qse_wcint_t; + #else + typedef long qse_wchar_t; + typedef long qse_wcint_t; + #endif + #elif defined(__APPLE__) && defined(__MACH__) + typedef int qse_wchar_t; + typedef int qse_wcint_t; + #elif defined(hpux) || defined(__hpux) || defined(__hpux__) + #if defined(__HP_cc) || defined(__HP_aCC) + typedef unsigned int qse_wchar_t; + #else + typedef int qse_wchar_t; + #endif + typedef int qse_wcint_t; + #elif QSE_SIZEOF_LONG == 4 + typedef long qse_wchar_t; + typedef long qse_wcint_t; + #elif QSE_SIZEOF_INT == 4 + typedef int qse_wchar_t; + typedef int qse_wcint_t; + #else + #error no supported data type for wchar_t + #endif +#else + #error unsupported size of wchar_t +#endif + +/****t* ase/qse_char_t,qse_cint_t + * NAME + * qse_char_t - define a character + * qse_cint_t - define a type that can hold qse_char_t and QSE_CHAR_EOF + ****** + */ +#if defined(_WIN32) && (defined(UNICODE)||defined(_UNICODE)) + #define QSE_CHAR_IS_WCHAR + typedef qse_wchar_t qse_char_t; + typedef qse_wcint_t qse_cint_t; +#else + #if defined(QSE_CHAR_IS_MCHAR) + typedef qse_mchar_t qse_char_t; + typedef qse_mcint_t qse_cint_t; + #elif defined(QSE_CHAR_IS_WCHAR) + typedef qse_wchar_t qse_char_t; + typedef qse_wcint_t qse_cint_t; + #elif defined(_MBCS) + #define QSE_CHAR_IS_MCHAR + typedef qse_mchar_t qse_char_t; + typedef qse_mcint_t qse_cint_t; + #else + #define QSE_CHAR_IS_WCHAR + typedef qse_wchar_t qse_char_t; + typedef qse_wcint_t qse_cint_t; + #endif +#endif + +#if defined(QSE_CHAR_IS_WCHAR) && defined(_WIN32) + #ifndef UNICODE + #define UNICODE + #endif + #ifndef _UNICODE + #define _UNICODE + #endif +#endif + +typedef struct qse_xstr_t qse_xstr_t; +typedef struct qse_cstr_t qse_cstr_t; +typedef struct qse_mmgr_t qse_mmgr_t; +typedef struct qse_ccls_t qse_ccls_t; + +/****t* ase/qse_xstr_t + * NAME + * qse_xstr_t - combine a pointer and length + * + * SYNOPSIS + */ +struct qse_xstr_t +{ + qse_char_t* ptr; /* this is not a const pointer */ + qse_size_t len; +}; +/******/ + +/****t* ase/qse_cstr_t + * NAME + * qse_cstr_t - combine a constant pointer and length + * + * SYNOPSIS + */ +struct qse_cstr_t +{ + const qse_char_t* ptr; /* this is a const pointer */ + qse_size_t len; +}; +/******/ + +/****t* ase/qse_mmgr_t + * NAME + * qse_mmgr_t - define a memory manager + * + * SYNOPSIS + */ +struct qse_mmgr_t +{ + void* (*alloc) (void* data, qse_size_t n); + void* (*realloc) (void* data, void* ptr, qse_size_t n); + void (*free) (void* data, void* ptr); + void* data; +}; +/******/ + +/****t* ase/qse_ccls_type_t + * NAME + * qse_ccls_type_t - define types of character class + * + * SYNOPSIS + */ +enum qse_ccls_type_t +{ + QSE_CCLS_UPPER, + QSE_CCLS_LOWER, + QSE_CCLS_ALPHA, + QSE_CCLS_DIGIT, + QSE_CCLS_XDIGIT, + QSE_CCLS_ALNUM, + QSE_CCLS_SPACE, + QSE_CCLS_PRINT, + QSE_CCLS_GRAPH, + QSE_CCLS_CNTRL, + QSE_CCLS_PUNCT +}; +/******/ + +typedef enum qse_ccls_type_t qse_ccls_type_t; + +/****t* ase/qse_ccls_t + * NAME + * qse_mmgr_t - define a character class handler + * + * SYNOPSIS + */ +struct qse_ccls_t +{ + qse_bool_t (*is) (void* data, qse_cint_t c, qse_ccls_type_t type); + qse_cint_t (*to) (void* data, qse_cint_t c, qse_ccls_type_t type); + void* data; +}; +/******/ + +#endif diff --git a/qse/include/ase/unpack.h b/qse/include/qse/unpack.h similarity index 100% rename from qse/include/ase/unpack.h rename to qse/include/qse/unpack.h diff --git a/qse/include/qse/utl/http.h b/qse/include/qse/utl/http.h new file mode 100644 index 00000000..8089a34b --- /dev/null +++ b/qse/include/qse/utl/http.h @@ -0,0 +1,66 @@ +/* + * $Id: http.h 223 2008-06-26 06:44:41Z baconevi $ + * + * {License} + */ + +#ifndef _QSE_UTL_HTTP_H_ +#define _QSE_UTL_HTTP_H_ + +#include +#include + +/* returns the type of http method */ +typedef struct qse_http_req_t qse_http_req_t; +typedef struct qse_http_hdr_t qse_http_hdr_t; + +struct qse_http_req_t +{ + qse_char_t* method; + + struct + { + qse_char_t* ptr; + qse_size_t len; + } path; + + struct + { + qse_char_t* ptr; + qse_size_t len; + } args; + + struct + { + char major; + char minor; + } vers; +}; + +struct qse_http_hdr_t +{ + struct + { + qse_char_t* ptr; + qse_size_t len; + } name; + + struct + { + qse_char_t* ptr; + qse_size_t len; + } value; +}; + +#ifdef __cplusplus +extern "C" { +#endif + +qse_char_t* qse_parsehttpreq (qse_char_t* buf, qse_http_req_t* req); +qse_char_t* qse_parsehttphdr (qse_char_t* buf, qse_http_hdr_t* hdr); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/qse/include/qse/utl/main.h b/qse/include/qse/utl/main.h new file mode 100644 index 00000000..3d54011f --- /dev/null +++ b/qse/include/qse/utl/main.h @@ -0,0 +1,37 @@ +/* + * $Id: main.h 463 2008-12-09 06:52:03Z baconevi $ + * + * {License} + */ + +#ifndef _QSE_UTL_MAIN_H_ +#define _QSE_UTL_MAIN_H_ + +#include +#include + +#if defined(_WIN32) && !defined(__MINGW32__) + #if defined(QSE_CHAR_IS_MCHAR) + #define qse_main main + typedef qse_mchar_t qse_achar_t; + #else + #define qse_main wmain + typedef qse_wchar_t qse_achar_t; + #endif +#else + #define qse_main main + typedef qse_mchar_t qse_achar_t; +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +int qse_runmain (int argc, qse_achar_t* argv[], int(*mf) (int,qse_char_t*[])); +/* TODO - qse_runmain with env */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/qse/include/ase/utl/makefile.am b/qse/include/qse/utl/makefile.am similarity index 63% rename from qse/include/ase/utl/makefile.am rename to qse/include/qse/utl/makefile.am index 0f99fb16..8cbdfb13 100644 --- a/qse/include/ase/utl/makefile.am +++ b/qse/include/qse/utl/makefile.am @@ -1,6 +1,6 @@ pkginclude_HEADERS = http.h main.h stdio.h -pkgincludedir= $(includedir)/ase/utl +pkgincludedir= $(includedir)/qse/utl CLEANFILES = *dist diff --git a/qse/include/ase/utl/makefile.in b/qse/include/qse/utl/makefile.in similarity index 98% rename from qse/include/ase/utl/makefile.in rename to qse/include/qse/utl/makefile.in index 838c86e1..1e533868 100644 --- a/qse/include/ase/utl/makefile.in +++ b/qse/include/qse/utl/makefile.in @@ -31,7 +31,7 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -subdir = include/ase/utl +subdir = include/qse/utl DIST_COMMON = $(pkginclude_HEADERS) $(srcdir)/makefile.am \ $(srcdir)/makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 @@ -39,7 +39,7 @@ am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/include/ase/config.h +CONFIG_HEADER = $(top_builddir)/include/qse/config.h CONFIG_CLEAN_FILES = SOURCES = DIST_SOURCES = @@ -55,7 +55,7 @@ HEADERS = $(pkginclude_HEADERS) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -pkgincludedir = $(includedir)/ase/utl +pkgincludedir = $(includedir)/qse/utl ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ @@ -192,9 +192,9 @@ $(srcdir)/makefile.in: $(srcdir)/makefile.am $(am__configure_deps) exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign include/ase/utl/makefile'; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign include/qse/utl/makefile'; \ cd $(top_srcdir) && \ - $(AUTOMAKE) --foreign include/ase/utl/makefile + $(AUTOMAKE) --foreign include/qse/utl/makefile .PRECIOUS: makefile makefile: $(srcdir)/makefile.in $(top_builddir)/config.status @case '$?' in \ diff --git a/qse/include/qse/utl/stdio.h b/qse/include/qse/utl/stdio.h new file mode 100644 index 00000000..2411f640 --- /dev/null +++ b/qse/include/qse/utl/stdio.h @@ -0,0 +1,88 @@ +/* + * $Id: stdio.h 419 2008-10-13 11:32:58Z baconevi $ + * + * {License} + */ + +#ifndef _QSE_UTL_STDIO_H_ +#define _QSE_UTL_STDIO_H_ + +#include +#include + +#include +#include +#include + +#if defined(_WIN32) + #include + + #define qse_printf _tprintf + #define qse_vprintf _vtprintf + #define qse_fprintf _ftprintf + #define qse_vfprintf _vftprintf + + #define qse_fgets(x,y,s) _fgetts(x,y,s) + #define qse_fgetc(x) _fgettc(x) + #define qse_fputs(x,s) _fputts(x,s) + #define qse_fputc(x,s) _fputtc(x,s) +#elif defined(QSE_CHAR_IS_MCHAR) + #define qse_fgets(x,y,s) fgets(x,y,s) + #define qse_fgetc(x) fgetc(x) + #define qse_fputs(x,s) fputs(x,s) + #define qse_fputc(x,s) fputc(x,s) +#else + #define qse_fgets(x,y,s) fgetws(x,y,s) + #define qse_fgetc(x) fgetwc(x) + #define qse_fputs(x,s) fputws(x,s) + #define qse_fputc(x,s) fputwc(x,s) +#endif + +#define qse_feof(s) feof(s) +#define qse_ferror(s) ferror(s) +#define qse_clearerr(s) clearerr(s) +#define qse_fflush(s) fflush(s) +#define qse_fclose(s) fclose(s) + +#define QSE_FILE FILE +#define QSE_STDIN stdin +#define QSE_STDOUT stdout +#define QSE_STDERR stderr + +typedef int (*qse_getdelim_t) (const qse_char_t* ptr,qse_size_t len, void* arg); + +#ifdef __cplusplus +extern "C" { +#endif + +int qse_vsprintf (qse_char_t* buf, size_t size, const qse_char_t* fmt, va_list ap); +int qse_sprintf (qse_char_t* buf, size_t size, const qse_char_t* fmt, ...); + +#if !defined(_WIN32) +int qse_vfprintf (QSE_FILE *stream, const qse_char_t* fmt, va_list ap); +int qse_vprintf (const qse_char_t* fmt, va_list ap); +int qse_fprintf (QSE_FILE* file, const qse_char_t* fmt, ...); +int qse_printf (const qse_char_t* fmt, ...); +#endif + +int qse_dprintf (const qse_char_t* fmt, ...); +QSE_FILE* qse_fopen (const qse_char_t* path, const qse_char_t* mode); +QSE_FILE* qse_popen (const qse_char_t* cmd, const qse_char_t* mode); + +/** + * returns -2 on error, -1 on eof, length of data read on success + */ +qse_ssize_t qse_getline (qse_char_t **buf, qse_size_t *n, QSE_FILE *fp); +/** + * returns -3 on line breaker error, -2 on error, -1 on eof, + * length of data read on success + */ +qse_ssize_t qse_getdelim ( + qse_char_t **buf, qse_size_t *n, + qse_getdelim_t fn, void* fnarg, QSE_FILE *fp); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/qse/java/AseAwk.java b/qse/java/AseAwk.java deleted file mode 100644 index 0476765c..00000000 --- a/qse/java/AseAwk.java +++ /dev/null @@ -1,745 +0,0 @@ -/* - * $Id: AseAwk.java,v 1.16 2007/10/24 03:46:51 bacon Exp $ - */ - -import java.awt.*; -import java.awt.event.*; - -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.Reader; -import java.io.Writer; -import java.io.BufferedReader; -import java.io.BufferedWriter; -import java.io.InputStreamReader; -import java.io.OutputStreamWriter; -import java.io.IOException; - -import java.util.LinkedList; -import java.util.ArrayList; -import java.util.Iterator; -import java.net.URL; - -import ase.awk.StdAwk; -import ase.awk.Console; -import ase.awk.Context; -import ase.awk.Argument; -import ase.awk.Return; - -public class AseAwk extends StdAwk -{ - private static void run_in_awt () - { - final Frame frame = new Frame (); - - frame.setLayout (new BorderLayout()); - frame.setTitle (AseAwk.class.getName()); - frame.setSize (640, 480); - frame.addWindowListener (new WindowListener () - { - public void windowActivated (WindowEvent e) {} - public void windowClosed (WindowEvent e) {} - public void windowClosing (WindowEvent e) { frame.dispose (); } - public void windowDeactivated (WindowEvent e) {} - public void windowDeiconified (WindowEvent e) {} - public void windowIconified (WindowEvent e) {} - public void windowOpened (WindowEvent e) {} - }); - - frame.add (new AseAwkPanel(), BorderLayout.CENTER); - frame.setVisible (true); - } - - private static void print_usage () - { - System.out.print ("Usage: "); - System.out.print (AseAwk.class.getName()); - - System.out.println (" [-m main] [-si file]? [-so file]? [-ci file]* [-co file]* [-a arg]* [-w o:n]*"); - System.out.println (" -m main Specify the main function name"); - System.out.println (" -si file Specify the input source file"); - System.out.println (" The source code is read from stdin when it is not specified"); - System.out.println (" -so file Specify the output source file"); - System.out.println (" The deparsed code is not output when is it not specified"); - System.out.println (" -ci file Specify the input console file"); - System.out.println (" -co file Specify the output console file"); - System.out.println (" -a str Specify an argument"); - System.out.println (" -w o:n Specify an old and new word pair"); - System.out.println (" o - an original word"); - System.out.println (" n - the new word to replace the original word"); - } - - private static void print_error (String msg) - { - System.out.print ("Error: "); - System.out.println (msg); - } - - private static String get_dll_name () - { - URL url = AseAwk.class.getResource ( - AseAwk.class.getName() + ".class"); - if (url == null) - { - // probably it is compiled with gcj - - // TODO: .... - String osname = System.getProperty ("os.name").toLowerCase(); - String aseBase = ".."; - String path; - - if (osname.startsWith ("windows")) - { - path = aseBase + "\\lib\\aseawk_jni.dll"; - } - else if (osname.startsWith ("mac")) - { - path = aseBase + "/lib/.libs/libaseawk_jni.dylib"; - } - else - { - path = aseBase + "/lib/.libs/libaseawk_jni.so"; - } - - return path; - } - else - { - java.io.File file = new java.io.File (url.getFile()); - - String osname = System.getProperty ("os.name").toLowerCase(); - String aseBase = file.getParentFile().getParentFile().getParent(); - - String path; - - if (osname.startsWith ("windows")) - { - path = aseBase + "\\lib\\aseawk_jni.dll"; - return path.substring(6); - } - else if (osname.startsWith ("mac")) - { - path = aseBase + "/lib/.libs/libaseawk_jni.dylib"; - return path.substring(5); - } - else - { - path = aseBase + "/lib/.libs/libaseawk_jni.so"; - return path.substring(5); - } - } - } - - private static void run_in_console (String[] args) - { - AseAwk awk = null; - - String dll = get_dll_name(); - try - { - System.load (dll); - } - catch (java.lang.UnsatisfiedLinkError e) - { - print_error ("cannot load the library - " + dll); - return; - } - - try - { - awk = new AseAwk (); - awk.setMaxDepth (AseAwk.DEPTH_BLOCK_PARSE, 30); - awk.setDebug (true); - //awk.setDebug (false); - } - catch (ase.awk.Exception e) - { - print_error ("ase.awk.Exception - " + e.getMessage()); - } - - int mode = 0; - String mainfn = null; - String srcin = null; - String srcout = null; - int nsrcins = 0; - int nsrcouts = 0; - //ArrayList params = new ArrayList (); - ArrayList params = new ArrayList (); - - //for (String arg: args) - for (int i = 0; i < args.length; i++) - { - String arg = args[i]; - if (mode == 0) - { - if (arg.equals("-si")) mode = 1; - else if (arg.equals("-so")) mode = 2; - else if (arg.equals("-ci")) mode = 3; - else if (arg.equals("-co")) mode = 4; - else if (arg.equals("-a")) mode = 5; - else if (arg.equals("-m")) mode = 6; - else if (arg.equals("-w")) mode = 7; - else - { - print_usage (); - return; - } - } - else - { - if (arg.length() >= 1 && arg.charAt(0) == '-') - { - print_usage (); - return; - } - - if (mode == 1) // source input - { - if (nsrcins != 0) - { - print_usage (); - return; - } - - srcin = arg; - nsrcins++; - mode = 0; - } - else if (mode == 2) // source output - { - if (nsrcouts != 0) - { - print_usage (); - return; - } - - srcout = arg; - nsrcouts++; - mode = 0; - } - else if (mode == 3) // console input - { - awk.addConsoleInput (arg); - mode = 0; - } - else if (mode == 4) // console output - { - awk.addConsoleOutput (arg); - mode = 0; - } - else if (mode == 5) // argument mode - { - params.add (arg); - mode = 0; - } - else if (mode == 6) - { - if (mainfn != null) - { - print_usage (); - return; - } - - mainfn = arg; - mode = 0; - } - else if (mode == 7) - { - int idx = arg.indexOf(':'); - if (idx == -1) - { - print_usage (); - return; - } - - String ow = arg.substring (0, idx); - String nw = arg.substring (idx+1); - try { awk.setWord (ow, nw); } - catch (Exception e) {/* don't care */} - mode = 0; - } - } - } - - if (mode != 0) - { - print_usage (); - return; - } - - try - { - awk.parse (srcin, srcout); - //awk.run (mainfn, params.toArray(new String[0])); - awk.run (mainfn, (String[])params.toArray(new String[0])); - } - catch (ase.awk.Exception e) - { - if (e.getLine() == 0) - { - print_error ("ase.awk.Exception - " + e.getMessage()); - } - else - { - print_error ( - "ase.awk.Exception at line " + - e.getLine() + " - " + e.getMessage()); - } - } - finally - { - if (awk != null) - { - awk.close (); - awk = null; - } - } - } - - public static void main (String[] args) - { - if (args.length == 0) - { - run_in_awt (); - } - else - { - run_in_console (args); - } - } - - private Reader srcReader; - private Writer srcWriter; - private String srcInName; - private String srcOutName; - - private LinkedList conInNames; - private LinkedList conOutNames; - private Iterator conInIter; - private Iterator conOutIter; - - public AseAwk () throws ase.awk.Exception - { - super (); - - srcReader = null; - srcWriter = null; - - srcInName = null; - srcOutName = null; - - conInNames = new LinkedList (); - conOutNames = new LinkedList (); - - addFunction ("sleep", 1, 1); - } - - public void sleep (Context ctx, String name, Return ret, Argument[] args) throws ase.awk.Exception - { - try { Thread.sleep (args[0].getIntValue() * 1000); } - catch (InterruptedException e) {} - ret.setIntValue (0); - } - - public void parse () throws ase.awk.Exception - { - srcInName = null; - srcOutName = null; - super.parse (); - } - - public void parse (String inName) throws ase.awk.Exception - { - srcInName = inName; - srcOutName = null; - super.parse (); - } - - public void parse (String inName, String outName) throws ase.awk.Exception - { - srcInName = inName; - srcOutName = outName; - super.parse (); - } - - public void run (String main, String[] args) throws ase.awk.Exception - { - conInIter = conInNames.iterator(); - conOutIter = conOutNames.iterator(); - super.run (main, args); - } - - public void addConsoleInput (String name) - { - conInNames.addLast (name); - } - - public void addConsoleOutput (String name) - { - conOutNames.addLast (name); - } - - protected int openSource (int mode) - { - if (mode == SOURCE_READ) - { - Reader isr; - - if (srcInName == null || srcInName.length() == 0) - { - isr = stdin; - } - else - { - FileInputStream fis; - try { fis = new FileInputStream (srcInName); } - catch (IOException e) { return -1; } - isr = new BufferedReader(new InputStreamReader (fis)); - } - if (isr == null) return -1; - - srcReader = isr; - return 1; - } - else if (mode == SOURCE_WRITE) - { - Writer osw; - - if (srcOutName == null) - { - return 0; - } - else if (srcOutName.length() == 0) - { - osw = stdout; - } - else - { - FileOutputStream fos; - try { fos = new FileOutputStream (srcOutName); } - catch (IOException e) { return -1; } - osw = new BufferedWriter(new OutputStreamWriter (fos)); - } - - srcWriter = osw; - return 1; - } - - return -1; - } - - protected int closeSource (int mode) - { - if (mode == SOURCE_READ) - { - if (srcReader != null) - { - if (srcReader == stdin) - { - srcReader = null; - } - else - { - try - { - srcReader.close (); - srcReader = null; - } - catch (IOException e) { return -1; } - } - } - return 0; - } - else if (mode == SOURCE_WRITE) - { - if (srcWriter != null) - { - if (srcWriter == stdout) - { - try - { - srcWriter.flush (); - srcWriter = null; - } - catch (IOException e) { return -1; } - } - else - { - try - { - srcWriter.close (); - srcWriter = null; - } - catch (IOException e) { return -1; } - } - } - return 0; - } - - return -1; - } - - protected int readSource (char[] buf, int len) - { - try - { - int n = srcReader.read (buf, 0, len); - if (n == -1) n = 0; - return n; - } - catch (IOException e) - { - return -1; - } - } - - protected int writeSource (char[] buf, int len) - { - if (srcWriter == null) return len; - - try { srcWriter.write (buf, 0, len); } - catch (IOException e) { return -1; } - - return len; - } - - protected int openConsole (Console con) - { - int mode = con.getMode (); - - if (mode == Console.MODE_READ) - { - Reader rd; - - if (!conInIter.hasNext()) rd = stdin; - else - { - FileInputStream fis; - String fn = (String)conInIter.next(); - try - { - fis = new FileInputStream (fn); - rd = new BufferedReader( - new InputStreamReader (fis)); - } - catch (IOException e) { return -1; } - - try { con.setFileName (fn); } - catch (ase.awk.Exception e) - { - try { rd.close(); } - catch (IOException e2) {} - return -1; - } - } - - con.setHandle (rd); - return 1; - } - else if (mode == Console.MODE_WRITE) - { - Writer wr; - - if (!conOutIter.hasNext()) wr = stdout; - else - { - FileOutputStream fos; - String fn = (String)conOutIter.next(); - try - { - fos = new FileOutputStream (fn); - wr = new BufferedWriter( - new OutputStreamWriter (fos)); - } - catch (IOException e) { return -1; } - - try { con.setFileName (fn); } - catch (ase.awk.Exception e) - { - try { wr.close(); } - catch (IOException e2) {} - return -1; - } - } - - con.setHandle (wr); - return 1; - } - - return -1; - - } - - protected int closeConsole (Console con) - { - int mode = con.getMode (); - - if (mode == Console.MODE_READ) - { - Reader rd = (Reader)con.getHandle(); - if (rd != null && rd != stdin) - { - try { rd.close (); } - catch (IOException e) { return -1; } - } - - return 0; - } - else if (mode == Console.MODE_WRITE) - { - Writer wr = (Writer)con.getHandle(); - if (wr != null) - { - try - { - wr.flush (); - if (wr != stdout) wr.close (); - } - catch (IOException e) { return -1; } - } - - return 0; - } - - return -1; - } - - protected int readConsole (Console con, char[] buf, int len) - { - int mode = con.getMode (); - - if (mode == Console.MODE_READ) - { - Reader rd = (Reader)con.getHandle(); - - try - { - int n = rd.read (buf, 0, len); - if (n == -1) n = 0; - return n; - } - catch (IOException e) { return -1; } - } - - return -1; - } - - protected int writeConsole (Console con, char[] buf, int len) - { - int mode = con.getMode (); - - if (mode == Console.MODE_WRITE) - { - Writer wr = (Writer)con.getHandle(); - try - { - wr.write (buf, 0, len); - wr.flush (); - } - catch (IOException e) { return -1; } - return len; - } - - return -1; - } - - protected int flushConsole (Console con) - { - int mode = con.getMode (); - - if (mode == Console.MODE_WRITE) - { - Writer wr = (Writer)con.getHandle(); - try { wr.flush (); } - catch (IOException e) { return -1; } - return 0; - } - - return -1; - } - - protected int nextConsole (Console con) - { - int mode = con.getMode (); - - if (mode == Console.MODE_READ) - { - if (!conInIter.hasNext()) return 0; - String fn = (String)conInIter.next(); - - Reader rd; - FileInputStream fis; - try - { - fis = new FileInputStream (fn); - rd = new BufferedReader( - new InputStreamReader (fis)); - } - catch (IOException e) { return -1; } - - try { con.setFileName (fn); } - catch (ase.awk.Exception e) - { - try { rd.close(); } - catch (IOException e2) {} - return -1; - } - - Reader tmp = (Reader)con.getHandle(); - if (tmp != stdin) - { - try { tmp.close (); } - catch (IOException e) - { - try { rd.close (); } - catch (IOException e2) {} - return -1; - } - } - - con.setHandle (rd); - return 1; - } - else if (mode == Console.MODE_WRITE) - { - if (!conOutIter.hasNext()) return 0; - String fn = (String)conOutIter.next(); - - Writer wr; - FileOutputStream fos; - try - { - fos = new FileOutputStream (fn); - wr = new BufferedWriter( - new OutputStreamWriter (fos)); - } - catch (IOException e) { return -1; } - - try { con.setFileName (fn); } - catch (ase.awk.Exception e) - { - try { wr.close(); } - catch (IOException e2) {} - return -1; - } - - Writer tmp = (Writer)con.getHandle(); - if (tmp != stdout) - { - try { tmp.close (); } - catch (IOException e) - { - try { wr.close (); } - catch (IOException e2) {} - return -1; - } - } - - con.setHandle (wr); - return 1; - } - - return -1; - } - -} diff --git a/qse/java/AseAwkApplet-id.html b/qse/java/AseAwkApplet-id.html deleted file mode 100644 index 16127680..00000000 --- a/qse/java/AseAwkApplet-id.html +++ /dev/null @@ -1,91 +0,0 @@ - - - -Online AWK Interpreter - - - - - - - -

Online AWK Interpreter

- - - - - - -
- - -

-Applet ini untuk menguji binding JNI yang Interpreternya ASE AWK. Bahasa AWK ini agak berbeda dengan yang standar, yang setiap perintah diakhri dengan tanda semikolon. You can enter a valid AWK program into the source input window and click on the Run Awk button while entering arbitrary text into the console input window if needed. You may click here to load a sample program instead. -

-

-Note: This java applet has been signed with a self-signed certificate. If you allow the applet to run, it will download a JNI file into your home directory. Currently, it supports Linux(i386) and Microsoft Windows(x86). If you decide to clean your system later, don't forget to delete the local JNI file downloaded. -

-

-Copyright (c) 2006-2007, Hyung-Hwan Chung. All rights reserved. -

-
- - - - - - diff --git a/qse/java/AseAwkApplet-ko.html b/qse/java/AseAwkApplet-ko.html deleted file mode 100644 index 496cf1bd..00000000 --- a/qse/java/AseAwkApplet-ko.html +++ /dev/null @@ -1,84 +0,0 @@ - - - -온라인 AWK 인터프리터 - - - - - - - -

온라인 AWK 인터프리터

- - - - - - -
- - -

-이 애플릿은 ASE AWK 인터프리터의 JNI바인딩을 시험하는 프로그램이다. 지원되는 AWK언어는 표준과 약간의 차이가 있는데, 대표적으로 모든 문장은 세미콜론으로 끝을 내야 한다. 소스창에 AWK 프로그램을 입력하고 Run Awk버튼을 누르면 된다. 예제프로그램을 올리고 싶으면 여기를 눌러라. -

-

-주의: 이 애플릿은 자기서명인증서로 서명이 되었다. 애플릿 실행을 허가하면 사용자의 홈 디렉토리로 JNI파일을 다운로드 한다. 현재는 Linux(i386)와 Microsoft Windows(x86)만 지원을 한다. 불필요한 파일들을 청소하고 싶다면, 다운로드된 JNI파일도 삭제하기 바란다. -

-

-Copyright (c) 2006-2007, Hyung-Hwan Chung. All rights reserved. -

-
- - - diff --git a/qse/java/AseAwkApplet.html b/qse/java/AseAwkApplet.html deleted file mode 100644 index 552bb81e..00000000 --- a/qse/java/AseAwkApplet.html +++ /dev/null @@ -1,85 +0,0 @@ - - - -Online AWK Interpreter - - - - - - - -

Online AWK Interpreter

- - - - - - -
- - -

-This applet is a test program for JNI binding to the ASE AWK interpreter. The AWK language supported is slightly different from the standard in that all statements must end with a semicolon. You may enter a valid AWK program into the source input window and click on the Run Awk button. You can enter arbitrary text into the console input window if the AWK program entered contains an action-pattern block. You may click here to load a sample program instead. -

-

-Note: This java applet has been signed with a self-signed certificate. If you allow the applet to run, it will download a JNI file into your home directory. Currently, it supports Linux(i386) and Microsoft Windows(x86). If you decide to clean your system later, don't forget to delete the local JNI file downloaded. -

-

-Copyright (c) 2006-2007, Hyung-Hwan Chung. All rights reserved. -

-
- - - - diff --git a/qse/java/AseAwkApplet.java b/qse/java/AseAwkApplet.java deleted file mode 100644 index 4eb4fc5a..00000000 --- a/qse/java/AseAwkApplet.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * $Id: AseAwkApplet.java,v 1.1 2007/04/30 08:32:41 bacon Exp $ - */ - -import java.applet.*; -import java.awt.*; -import java.awt.event.*; - -public class AseAwkApplet extends Applet -{ - AseAwkPanel awkPanel; - - public void init () - { - awkPanel = new AseAwkPanel (); - - setLayout (new BorderLayout ()); - add (awkPanel, BorderLayout.CENTER); - } - - public void stop () {} - public void paint (Graphics g) {} - - public void setConsoleInput (String str) - { - awkPanel.setConsoleInput (str); - } - - public void setSourceInput (String str) - { - awkPanel.setSourceInput (str); - } - - public void clear () - { - awkPanel.clear (); - } -} diff --git a/qse/java/AseAwkApplet.js b/qse/java/AseAwkApplet.js deleted file mode 100644 index 6c734dca..00000000 --- a/qse/java/AseAwkApplet.js +++ /dev/null @@ -1,5 +0,0 @@ - - diff --git a/qse/java/AseAwkPanel.java b/qse/java/AseAwkPanel.java deleted file mode 100644 index 6062e882..00000000 --- a/qse/java/AseAwkPanel.java +++ /dev/null @@ -1,976 +0,0 @@ -/* - * $Id: AseAwkPanel.java,v 1.32 2007/11/12 07:21:52 bacon Exp $ - */ - -import java.awt.*; -import java.awt.event.*; -import java.awt.dnd.*; -import java.awt.datatransfer.*; - -import java.net.URL; -import java.net.URLConnection; -import java.io.File; -import java.io.IOException; -import java.io.FileNotFoundException; -import java.io.StringReader; -import java.io.StringWriter; -import java.io.Reader; -import java.io.Writer; -import java.io.InputStream; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.FileReader; -import java.security.MessageDigest; -import java.util.List; -import java.util.Iterator; - -import ase.awk.StdAwk; -import ase.awk.Console; -import ase.awk.Context; -import ase.awk.Argument; -import ase.awk.Return; - -public class AseAwkPanel extends Panel implements DropTargetListener -{ - /* MsgBox taken from http://www.rgagnon.com/javadetails/java-0242.html */ - - class MsgBox extends Dialog implements ActionListener - { - boolean id = false; - Button ok,can; - - MsgBox (Frame frame, String msg, boolean okcan) - { - super (frame, "Message", true); - setLayout(new BorderLayout()); - add("Center",new Label(msg)); - addOKCancelPanel(okcan); - createFrame(); - pack(); - setVisible(true); - } - - void addOKCancelPanel( boolean okcan ) - { - Panel p = new Panel(); - p.setLayout(new FlowLayout()); - createOKButton( p ); - if (okcan == true) createCancelButton( p ); - add("South",p); - } - - void createOKButton(Panel p) - { - p.add(ok = new Button("OK")); - ok.addActionListener(this); - } - - void createCancelButton(Panel p) - { - p.add(can = new Button("Cancel")); - can.addActionListener(this); - } - - void createFrame() - { - Dimension d = getToolkit().getScreenSize(); - setLocation(d.width/3,d.height/3); - } - - public void actionPerformed(ActionEvent ae) - { - if(ae.getSource() == ok) - { - id = true; - setVisible(false); - } - else if(ae.getSource() == can) - { - setVisible(false); - } - } - } - - public class Awk extends StdAwk - { - private AseAwkPanel awkPanel; - - private StringReader srcIn; - private StringWriter srcOut; - - public Awk (AseAwkPanel awkPanel) throws Exception - { - super (); - this.awkPanel = awkPanel; - - addFunction ("sleep", 1, 1); - - /* - setWord ("sin", "cain"); - setWord ("length", "len"); - setWord ("OFMT", "ofmt"); - setWord ("END", "end"); - setWord ("sleep", "cleep"); - setWord ("end", "END"); - */ - } - - public void sleep (Context ctx, String name, Return ret, Argument[] args) throws ase.awk.Exception - { - Argument t = args[0]; - //if (args[0].isIndexed()) t = args[0].getIndexed(0); - - try { Thread.sleep (t.getIntValue() * 1000); } - catch (InterruptedException e) {} - - ret.setIntValue (0); - /* - ret.setIndexedRealValue (1, 111.23); - ret.setIndexedStringValue (2, "1111111"); - ret.setIndexedStringValue (3, "22222222"); - ret.setIndexedIntValue (4, 444); - ret.setIndexedIntValue (5, 55555); - - Return r = new Return (ctx); - r.setStringValue ("[[%.6f]]"); - Return r2 = new Return (ctx); - r2.setStringValue ("[[%.6f]]"); - - //ctx.setGlobal (Context.GLOBAL_CONVFMT, ret); - Argument g = ctx.getGlobal (Context.GLOBAL_CONVFMT); - ctx.setGlobal (Context.GLOBAL_CONVFMT, r2); - System.out.println (g.getStringValue()); - g = ctx.getGlobal (Context.GLOBAL_CONVFMT); - System.out.println (g.getStringValue()); - */ - } - - protected int openSource (int mode) - { - if (mode == SOURCE_READ) - { - srcIn = new StringReader (awkPanel.getSourceInput()); - return 1; - } - else if (mode == SOURCE_WRITE) - { - srcOut = new StringWriter (); - return 1; - } - - return -1; - } - - protected int closeSource (int mode) - { - if (mode == SOURCE_READ) - { - srcIn.close (); - return 0; - } - else if (mode == SOURCE_WRITE) - { - awkPanel.setSourceOutput (srcOut.toString()); - - try { srcOut.close (); } - catch (IOException e) { return -1; } - return 0; - } - - return -1; - } - - protected int readSource (char[] buf, int len) - { - try - { - int n = srcIn.read (buf, 0, len); - if (n == -1) n = 0; - return n; - } - catch (IOException e) { return -1; } - } - - protected int writeSource (char[] buf, int len) - { - srcOut.write (buf, 0, len); - return len; - } - - protected int openConsole (Console con) - { - int mode = con.getMode (); - - if (mode == Console.MODE_READ) - { - con.setHandle (new StringReader (awkPanel.getConsoleInput())); - return 1; - } - else if (mode == Console.MODE_WRITE) - { - con.setHandle (new StringWriter ()); - return 1; - } - - return -1; - - } - - protected int closeConsole (Console con) - { - int mode = con.getMode (); - - if (mode == Console.MODE_READ) - { - Reader rd = (Reader)con.getHandle(); - try { rd.close (); } - catch (IOException e) { return -1; } - return 0; - } - else if (mode == Console.MODE_WRITE) - { - Writer wr = (Writer)con.getHandle(); - awkPanel.setConsoleOutput (wr.toString()); - try { wr.close (); } - catch (IOException e) { return -1; } - return 0; - } - - return -1; - } - - protected int readConsole (Console con, char[] buf, int len) - { - int mode = con.getMode (); - - if (mode == Console.MODE_READ) - { - Reader rd = (Reader)con.getHandle(); - - try - { - int n = rd.read (buf, 0, len); - if (n == -1) n = 0; - return n; - } - catch (IOException e) { return -1; } - } - - return -1; - } - - protected int writeConsole (Console con, char[] buf, int len) - { - int mode = con.getMode (); - - if (mode == Console.MODE_WRITE) - { - Writer wr = (Writer)con.getHandle(); - try { wr.write (buf, 0, len); } - catch (IOException e) { return -1; } - return len; - } - - return -1; - } - - protected int flushConsole (Console con) - { - int mode = con.getMode (); - - if (mode == Console.MODE_WRITE) - { - return 0; - } - - return -1; - } - - protected int nextConsole (Console con) - { - int mode = con.getMode (); - - if (mode == Console.MODE_READ) - { - return 0; - } - else if (mode == Console.MODE_WRITE) - { - return 0; - } - - return -1; - } - } - - private TextArea srcIn; - private TextArea srcOut; - private TextArea conIn; - private TextArea conOut; - private TextField entryPoint; - private TextField jniLib; - private Label statusLabel; - - private DropTarget srcInDropTarget; - private DropTarget conInDropTarget; - - private boolean jniLibLoaded = false; - - private class Option - { - private String name; - private int value; - private boolean state; - - public Option (String name, int value, boolean state) - { - this.name = name; - this.value = value; - this.state = state; - } - - public String getName() - { - return this.name; - } - - public int getValue() - { - return this.value; - } - - public boolean getState() - { - return this.state; - } - - public void setState (boolean state) - { - this.state = state; - } - } - - protected Option[] options = new Option[] - { - new Option("IMPLICIT", StdAwk.OPTION_IMPLICIT, true), - new Option("EXPLICIT", StdAwk.OPTION_EXPLICIT, false), - new Option("SHIFT", StdAwk.OPTION_SHIFT, false), - new Option("IDIV", StdAwk.OPTION_IDIV, false), - new Option("STRCONCAT", StdAwk.OPTION_STRCONCAT, false), - new Option("EXTIO", StdAwk.OPTION_EXTIO, true), - new Option("BLOCKLESS", StdAwk.OPTION_BLOCKLESS, true), - new Option("BASEONE", StdAwk.OPTION_BASEONE, true), - new Option("STRIPSPACES", StdAwk.OPTION_STRIPSPACES, false), - new Option("NEXTOFILE", StdAwk.OPTION_NEXTOFILE, false), - //new Option("CRLF", StdAwk.OPTION_CRLF, false), - new Option("ARGSTOMAIN", StdAwk.OPTION_ARGSTOMAIN, false), - new Option("RESET", StdAwk.OPTION_RESET, false), - new Option("MAPTOVAR", StdAwk.OPTION_MAPTOVAR, false), - new Option("PABLOCK", StdAwk.OPTION_PABLOCK, true) - }; - - public AseAwkPanel () - { - prepareUserInterface (); - prepareNativeInterface (); - } - - private void prepareUserInterface () - { - jniLib = new TextField (); - - String osname = System.getProperty ("os.name").toLowerCase(); - int fontSize = (osname.startsWith("windows"))? 14: 12; - - Font font = new Font ("Monospaced", Font.PLAIN, fontSize); - - srcIn = new TextArea (); - srcOut = new TextArea (); - conIn = new TextArea (); - conOut = new TextArea (); - - srcIn.setFont (font); - srcOut.setFont (font); - conIn.setFont (font); - conOut.setFont (font); - - Panel srcInPanel = new Panel(); - srcInPanel.setLayout (new BorderLayout()); - srcInPanel.add (new Label("Source Input"), BorderLayout.NORTH); - srcInPanel.add (srcIn, BorderLayout.CENTER); - - Panel srcOutPanel = new Panel(); - srcOutPanel.setLayout (new BorderLayout()); - srcOutPanel.add (new Label("Source Output"), BorderLayout.NORTH); - srcOutPanel.add (srcOut, BorderLayout.CENTER); - - Panel conInPanel = new Panel(); - conInPanel.setLayout (new BorderLayout()); - conInPanel.add (new Label("Console Input"), BorderLayout.NORTH); - conInPanel.add (conIn, BorderLayout.CENTER); - - Panel conOutPanel = new Panel(); - conOutPanel.setLayout (new BorderLayout()); - conOutPanel.add (new Label("Console Output"), BorderLayout.NORTH); - conOutPanel.add (conOut, BorderLayout.CENTER); - - Button runBtn = new Button ("Run Awk"); - - runBtn.addActionListener (new ActionListener () - { - public void actionPerformed (ActionEvent e) - { - runAwk (); - } - }); - - entryPoint = new TextField(); - - Panel entryPanel = new Panel(); - entryPanel.setLayout (new BorderLayout()); - entryPanel.add (new Label("Main:"), BorderLayout.WEST); - entryPanel.add (entryPoint, BorderLayout.CENTER); - - Panel leftPanel = new Panel(); - leftPanel.setLayout (new BorderLayout()); - leftPanel.add (runBtn, BorderLayout.SOUTH); - - Panel optPanel = new Panel(); - optPanel.setBackground (Color.YELLOW); - optPanel.setLayout (new GridLayout(options.length, 1)); - for (int i = 0; i < options.length; i++) - { - Checkbox cb = new Checkbox(options[i].getName(), options[i].getState()); - - cb.addItemListener (new ItemListener () - { - public void itemStateChanged (ItemEvent e) - { - Object x = e.getItem(); - String name; - - if (x instanceof Checkbox) - { - // gcj - name = ((Checkbox)x).getLabel(); - } - else if (x instanceof String) - { - // standard jdk - name = (String)x; - } - else name = x.toString(); - - for (int i = 0; i < options.length; i++) - { - if (options[i].getName().equals(name)) - { - options[i].setState (e.getStateChange() == ItemEvent.SELECTED); - } - } - } - }); - - optPanel.add (cb); - } - leftPanel.add (entryPanel, BorderLayout.NORTH); - leftPanel.add (optPanel, BorderLayout.CENTER); - - Panel topPanel = new Panel (); - BorderLayout topPanelLayout = new BorderLayout (); - topPanel.setLayout (topPanelLayout); - - topPanelLayout.setHgap (2); - topPanelLayout.setVgap (2); - topPanel.add (new Label ("JNI Library: "), BorderLayout.WEST); - topPanel.add (jniLib, BorderLayout.CENTER); - - Panel centerPanel = new Panel (); - GridLayout centerPanelLayout = new GridLayout (2, 2); - - centerPanel.setLayout (centerPanelLayout); - - centerPanelLayout.setHgap (2); - centerPanelLayout.setVgap (2); - - centerPanel.add (srcInPanel); - centerPanel.add (srcOutPanel); - centerPanel.add (conInPanel); - centerPanel.add (conOutPanel); - - BorderLayout mainLayout = new BorderLayout (); - mainLayout.setHgap (2); - mainLayout.setVgap (2); - - setLayout (mainLayout); - statusLabel = new Label ("Ready - " + System.getProperty("user.dir")); - statusLabel.setBackground (Color.GREEN); - - add (topPanel, BorderLayout.NORTH); - add (centerPanel, BorderLayout.CENTER); - add (leftPanel, BorderLayout.WEST); - add (statusLabel, BorderLayout.SOUTH); - - srcInDropTarget = new DropTarget (srcIn, this); - conInDropTarget = new DropTarget (conIn, this); - } - - public void prepareNativeInterface () - { - String libBase = "aseawk_jni"; - - String osname = System.getProperty ("os.name").toLowerCase(); - String osarch = System.getProperty("os.arch").toLowerCase(); - String userHome = System.getProperty("user.home"); - - if (osname.startsWith("windows")) osname = "win"; - else if (osname.startsWith("linux")) osname = "linux"; - else if (osname.startsWith("mac")) osname = "mac"; - - URL url = this.getClass().getResource ( - this.getClass().getName() + ".class"); - if (url == null) - { - if (osname.equals("win")) - { - jniLib.setText(System.getProperty("user.dir") + - "\\.\\lib\\" + System.mapLibraryName(libBase)); - } - else - { - jniLib.setText(System.getProperty("user.dir") + - "/../lib/.libs/" + System.mapLibraryName(libBase)); - } - - return; - } - - String protocol = url.getProtocol (); - - boolean isHttp = url.getPath().startsWith ("http://"); - File file = new File (isHttp? url.getPath():url.getFile()); - - String base = protocol.equals("jar")? - file.getParentFile().getParentFile().getParent(): - file.getParentFile().getParent(); - - /*if (isHttp)*/ base = java.net.URLDecoder.decode (base); - - if (isHttp) libBase = libBase + "-" + osname + "-" + osarch; - String libName = System.mapLibraryName(libBase); - - if (osname.equals("win")) - { - String jniLocal; - if (isHttp) - { - base = "http://" + base.substring(6).replace('\\', '/'); - String jniUrl = base + "/lib/" + libName; - String md5Url = jniUrl + ".md5"; - - jniLocal = userHome + "\\" + libName; - - try - { - downloadNative (md5Url, jniUrl, jniLocal); - } - catch (Exception e) - { - showMessage ("Cannot download native library - " + e.getMessage()); - jniLocal = "ERROR - Not Available"; - } - } - else - { - jniLocal = base + "\\lib\\" + libName; - if (protocol.equals("jar")) jniLocal = jniLocal.substring(6); - } - - jniLib.setText (jniLocal); - } - else - { - String jniLocal; - if (isHttp) - { - base = "http://" + base.substring(6); - String jniUrl = base + "/lib/" + libName; - String md5Url = jniUrl + ".md5"; - - jniLocal = userHome + "/" + libName; - - try - { - downloadNative (md5Url, jniUrl, jniLocal); - } - catch (Exception e) - { - showMessage ("Cannot download native library - " + e.getMessage()); - jniLocal = "ERROR - Not Available"; - } - } - else - { - jniLocal = base + "/lib/.libs/" + libName; - if (protocol.equals("jar")) jniLocal = jniLocal.substring(5); - } - - jniLib.setText (jniLocal); - } - } - - public String getSourceInput () - { - return srcIn.getText (); - } - - public void setSourceOutput (String output) - { - srcOut.setText (output); - } - - public String getConsoleInput () - { - return conIn.getText (); - } - - public void setConsoleOutput (String output) - { - conOut.setText (output); - } - - private void runAwk () - { - Awk awk = null; - - if (!jniLibLoaded) - { - try - { - System.load (jniLib.getText()); - jniLib.setEnabled (false); - jniLibLoaded = true; - } - catch (UnsatisfiedLinkError e) - { - showMessage ("Cannot load library - " + e.getMessage()); - return; - } - catch (Exception e) - { - showMessage ("Cannot load library - " + e.getMessage()); - return; - } - } - - srcOut.setText (""); - conOut.setText (""); - - try - { - try - { - awk = new Awk (this); - } - catch (Exception e) - { - showMessage ("Cannot instantiate awk - " + e.getMessage()); - return; - } - - for (int i = 0; i < options.length; i++) - { - if (options[i].getState()) - { - awk.setOption (awk.getOption() | options[i].getValue()); - } - else - { - awk.setOption (awk.getOption() & ~options[i].getValue()); - } - } - - statusLabel.setText ("Parsing..."); - awk.parse (); - - String main = entryPoint.getText().trim(); - - statusLabel.setText ("Running..."); - if (main.length() > 0) awk.run (main); - else awk.run (); - - statusLabel.setText ("Done..."); - } - catch (ase.awk.Exception e) - { - String msg; - int line = e.getLine(); - int code = e.getCode(); - - if (line <= 0) - msg = "An exception occurred - [" + code + "] " + e.getMessage(); - else - msg = "An exception occurred - [" + code + "] " + e.getMessage() + " at line " + line; - - showMessage (msg); - statusLabel.setText (msg); - return; - } - finally - { - if (awk != null) awk.close (); - } - } - - private void showMessage (String msg) - { - Frame tmp = new Frame (""); - MsgBox message = new MsgBox (tmp, msg, false); - requestFocus (); - message.dispose (); - tmp.dispose (); - } - - - private String getFileMD5 (String file) throws Exception - { - MessageDigest md = MessageDigest.getInstance("MD5"); - FileInputStream fis = null; - - try - { - fis = new FileInputStream (file); - - int n; - byte[] b = new byte[1024]; - while ((n = fis.read(b)) != -1) - { - md.update (b, 0, n); - } - } - catch (FileNotFoundException e) { return ""; } - catch (IOException e) { throw e; } - finally - { - if (fis != null) - { - try { fis.close (); } - catch (IOException e) {} - fis = null; - } - } - - StringBuffer buf = new StringBuffer (); - byte[] d = md.digest (); - for (int i = 0; i < d.length; i++) - { - String x = Integer.toHexString((d[i] & 0x00FF)); - if (x.length() == 1) buf.append ('0'); - buf.append (x); - } - return buf.toString(); - } - - private void downloadNative (String md5URL, String sourceURL, String destFile) throws Exception - { - InputStream is = null; - FileOutputStream fos = null; - String sumRemote = null; - - /* download the checksum file */ - try - { - URL url = new URL (md5URL); - URLConnection conn = url.openConnection (); - - is = url.openStream (); - - int n, total = 0; - byte[] b = new byte[32]; - while ((n = is.read(b, total, 32-total)) != -1) - { - total += n; - if (total >= 32) - { - sumRemote = new String (b); - break; - } - } - } - catch (IOException e) { throw e; } - finally - { - if (is != null) - { - try { is.close (); } - catch (IOException e) {} - is = null; - } - } - - if (sumRemote != null) - { - /* if the checksum matches the checksum of the local file, - * the native library file doesn't have to be downloaded */ - String sumLocal = getFileMD5 (destFile); - if (sumRemote.equalsIgnoreCase(sumLocal)) return; - } - - /* download the actual file */ - try - { - URL url = new URL(sourceURL); - URLConnection conn = url.openConnection(); - - is = url.openStream(); - fos = new FileOutputStream(destFile); - - int n; - byte[] b = new byte[1024]; - while ((n = is.read(b)) != -1) - { - fos.write(b, 0, n); - } - } - catch (IOException e) { throw e; } - finally - { - if (is != null) - { - try { is.close (); } - catch (IOException e) {} - is = null; - } - if (fos != null) - { - try { fos.close (); } - catch (IOException e) {} - fos = null; - } - } - } - - public void dragEnter(DropTargetDragEvent dtde) { } - public void dragExit(DropTargetEvent dte) { } - public void dragOver(DropTargetDragEvent dtde) { } - public void dropActionChanged(DropTargetDragEvent dtde) { } - - public void drop (DropTargetDropEvent dtde) - { - DropTarget dropTarget = dtde.getDropTargetContext().getDropTarget(); - - if (dropTarget != srcInDropTarget && - dropTarget != conInDropTarget) - { - dtde.rejectDrop (); - return; - } - - Transferable tr = dtde.getTransferable (); - DataFlavor[] flavors = tr.getTransferDataFlavors(); - for (int i = 0; i < flavors.length; i++) - { - //System.out.println("Possible flavor: " + flavors[i].getMimeType()); - - if (flavors[i].isFlavorJavaFileListType()) - { - TextArea t = (TextArea)dropTarget.getComponent(); - t.setText (""); - - try - { - dtde.acceptDrop (DnDConstants.ACTION_COPY_OR_MOVE); - List files = (List)tr.getTransferData(flavors[i]); - Iterator x = files.iterator (); - while (x.hasNext()) - { - File file = (File)x.next (); - loadFileTo (file, t); - } - dtde.dropComplete (true); - return; - } - catch (UnsupportedFlavorException e) - { - dtde.rejectDrop (); - return; - } - catch (IOException e) - { - dtde.rejectDrop (); - return; - } - } - else if (flavors[i].isFlavorSerializedObjectType()) - { - TextArea t = (TextArea)dropTarget.getComponent(); - try - { - dtde.acceptDrop (DnDConstants.ACTION_COPY_OR_MOVE); - Object o = tr.getTransferData(flavors[i]); - t.replaceText (o.toString(), t.getSelectionStart(), t.getSelectionEnd()); - dtde.dropComplete(true); - return; - } - catch (UnsupportedFlavorException e) - { - dtde.rejectDrop (); - return; - } - catch (IOException e) - { - dtde.rejectDrop (); - return; - } - } - } - - dtde.rejectDrop (); - } - - private void loadFileTo (File file, TextArea textArea) throws IOException - { - FileReader fr = null; - StringBuffer fb = new StringBuffer(textArea.getText()); - - try - { - fr = new FileReader (file); - - int n; - char[] b = new char[1024]; - while ((n = fr.read (b)) != -1) fb.append (b, 0, n); - } - catch (IOException e) { throw e; } - finally - { - if (fr != null) - { - try { fr.close (); } - catch (IOException e) {} - fr = null; - } - } - - textArea.setText (fb.toString()); - } - - void clear () - { - conIn.setText (""); - srcIn.setText (""); - conOut.setText (""); - srcOut.setText (""); - } - - void setConsoleInput (String str) - { - conIn.setText (str); - } - - void setSourceInput (String str) - { - srcIn.setText (str); - } - -} diff --git a/qse/java/ase/awk/Argument.java b/qse/java/ase/awk/Argument.java deleted file mode 100644 index 604c12f9..00000000 --- a/qse/java/ase/awk/Argument.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * $Id: Argument.java 183 2008-06-03 08:18:55Z baconevi $ - * - * {License} - */ - -package ase.awk; - -public class Argument implements Clearable -{ - protected long runid; - //protected long valid; - public long valid; - - /* An instance of the Argument class should not be used - * outside the context where it is availble. When it is - * referenced that way, the getXXX methods may cause - * JVM to crash */ - - Argument (Context ctx, long runid, long valid) - { - if (ctx != null) ctx.pushClearable (this); - this.runid = runid; - this.valid = valid; - } - - Argument (long runid, long valid) - { - this (null, runid, valid); - } - - public void clear () - { - clearval (this.runid, this.valid); - } - - public long getIntValue () - { - if (this.valid == 0) return 0; - return getintval (this.runid, this.valid); - } - - public double getRealValue () - { - if (this.valid == 0) return 0.0; - return getrealval (this.runid, this.valid); - } - - public String getStringValue () throws Exception - { - if (this.valid == 0) return ""; - return getstrval (this.runid, this.valid); - } - - public boolean isIndexed () - { - if (this.valid == 0) return false; - return isindexed (this.runid, this.valid); - } - - public Argument getIndexed (String idx) throws Exception - { - if (this.valid == 0) return null; - return getindexed (this.runid, this.valid, idx); - } - - public Argument getIndexed (long idx) throws Exception - { - if (this.valid == 0) return null; - return getIndexed (Long.toString(idx)); - } - - protected native long getintval (long runid, long valid); - protected native double getrealval (long runid, long valid); - protected native String getstrval (long runid, long valid) throws Exception; - protected native boolean isindexed (long runid, long valid); - protected native Argument getindexed (long runid, long valid, String idx) throws Exception; - - protected native void clearval (long runid, long valid); -} diff --git a/qse/java/ase/awk/Awk.java b/qse/java/ase/awk/Awk.java deleted file mode 100644 index bc838fd9..00000000 --- a/qse/java/ase/awk/Awk.java +++ /dev/null @@ -1,459 +0,0 @@ -/* - * $Id: Awk.java 183 2008-06-03 08:18:55Z baconevi $ - * - * {License} - */ - -package ase.awk; - -import java.io.*; -import java.util.HashMap; -import java.lang.reflect.Method; -import java.lang.reflect.InvocationTargetException; - -/** - * Represents the AWK interpreter engine - */ -public abstract class Awk -{ - private HashMap functionTable; - - // mode for open_source & close_source - public static final int SOURCE_READ = 1; - public static final int SOURCE_WRITE = 2; - - // depth id - public static final int DEPTH_BLOCK_PARSE = (1 << 0); - public static final int DEPTH_BLOCK_RUN = (1 << 1); - public static final int DEPTH_EXPR_PARSE = (1 << 2); - public static final int DEPTH_EXPR_RUN = (1 << 3); - public static final int DEPTH_REX_BUILD = (1 << 4); - public static final int DEPTH_REX_MATCH = (1 << 5); - - // options - public static final int OPTION_IMPLICIT = (1 << 0); - public static final int OPTION_EXPLICIT = (1 << 1); - public static final int OPTION_SHIFT = (1 << 4); - public static final int OPTION_IDIV = (1 << 5); - public static final int OPTION_STRCONCAT = (1 << 6); - public static final int OPTION_EXTIO = (1 << 7); - public static final int OPTION_COPROC = (1 << 8); - public static final int OPTION_BLOCKLESS = (1 << 9); - public static final int OPTION_BASEONE = (1 << 10); - public static final int OPTION_STRIPSPACES = (1 << 11); - public static final int OPTION_NEXTOFILE = (1 << 12); - public static final int OPTION_CRLF = (1 << 13); - public static final int OPTION_ARGSTOMAIN = (1 << 14); - public static final int OPTION_RESET = (1 << 15); - public static final int OPTION_MAPTOVAR = (1 << 16); - public static final int OPTION_PABLOCK = (1 << 17); - - protected final static Reader stdin = new BufferedReader (new InputStreamReader (System.in)); - protected final static Writer stdout = new BufferedWriter (new OutputStreamWriter (System.out)); - - private long awkid; - - public Awk () throws Exception - { - this.awkid = 0; - this.functionTable = new HashMap (); - open (); - } - - /* == just in case == */ - protected void finalize () throws Throwable - { - close (); - super.finalize (); - } - - public void close () - { - if (this.awkid != 0) - { - close (this.awkid); - this.awkid = 0; - } - } - - /** - * Parse a source program - */ - public void parse () throws Exception - { - parse (this.awkid); - } - - /** - * Executes a parsed program - */ - public void run (String main, String[] args) throws Exception - { - run (this.awkid, main, args); - } - - /** - * Executes a parsed program - */ - public void run (String main) throws Exception - { - run (this.awkid, main, null); - } - - /** - * Executes a parsed program - */ - public void run (String[] args) throws Exception - { - run (this.awkid, null, args); - } - - /** - * Executes a parsed program - */ - public void run () throws Exception - { - run (this.awkid, null, null); - } - - /** - * Makes a request to stop a running program - */ - public void stop () throws Exception - { - stop (this.awkid); - } - - /* == native methods == */ - private native void open () throws Exception; - protected native void close (long awkid); - protected native void parse (long awkid) throws Exception; - protected native void run (long awkid, String main, String[] args) throws Exception; - protected native void stop (long awkid) throws Exception; - protected native int getmaxdepth (long awkid, int id) throws Exception; - protected native void setmaxdepth (long awkid, int id, int depth) throws Exception; - protected native int getoption (long awkid) throws Exception; - protected native void setoption (long awkid, int opt) throws Exception; - protected native boolean getdebug (long awkid) throws Exception; - protected native void setdebug (long awkid, boolean debug) throws Exception; - protected native String getword (long awkid, String ow) throws Exception; - protected native void setword (long awkid, String ow, String nw) throws Exception; - - - protected native void addfunc (String name, int min_args, int max_args) throws Exception; - protected native void delfunc (String name) throws Exception; - native void setfilename (long runid, String name) throws Exception; - native void setofilename (long runid, String name) throws Exception; - protected native String strftime (String fmt, long sec); - protected native String strfgmtime (String fmt, long sec); - protected native int system (String cmd); - - - /* == intrinsic functions == */ - public void addFunction (String name, int min_args, int max_args) throws Exception - { - addFunction (name, min_args, max_args, name); - } - - public void addFunction (String name, int min_args, int max_args, String method) throws Exception - { - if (functionTable.containsKey (name)) - { - throw new Exception ( - "cannot add existing function '" + name + "'", - Exception.EXIST); - } - - functionTable.put (name, method); - try { addfunc (name, min_args, max_args); } - catch (Exception e) - { - functionTable.remove (name); - throw e; - } - } - - public void deleteFunction (String name) throws Exception - { - delfunc (name); - functionTable.remove (name); - } - - protected void handleFunction ( - Context ctx, String name, Return ret, Argument[] args) throws Exception - { - String mn = (String)functionTable.get(name); - // name should always be found in this table. - // otherwise, there is something wrong with this program. - - Class c = this.getClass (); - Class[] a = { Context.class, String.class, Return.class, Argument[].class }; - - try - { - Method m = c.getMethod (mn, a); - //m.invoke (this, ctx, name, ret, args) ; - m.invoke (this, new Object[] {ctx, name, ret, args}); - - } - catch (java.lang.reflect.InvocationTargetException e) - { - /* the underlying method has throw an exception */ - Throwable t = e.getCause(); - if (t == null) - { - throw new Exception (null, Exception.BFNIMPL); - } - else if (t instanceof Exception) - { - throw (Exception)t; - } - else - { - throw new Exception ( - t.getMessage(), Exception.BFNIMPL); - } - } - catch (java.lang.Exception e) - { - throw new Exception (e.getMessage(), Exception.BFNIMPL); - } - } - - /* == depth limiting == */ - public int getMaxDepth (int id) throws Exception - { - return getmaxdepth (this.awkid, id); - } - - public void setMaxDepth (int ids, int depth) throws Exception - { - setmaxdepth (this.awkid, ids, depth); - } - - /* == option == */ - public int getOption () throws Exception - { - return getoption (this.awkid); - } - - public void setOption (int opt) throws Exception - { - setoption (this.awkid, opt); - } - - /* == debug == */ - public boolean getDebug () throws Exception - { - return getdebug (this.awkid); - } - - public void setDebug (boolean debug) throws Exception - { - setdebug (this.awkid, debug); - } - - /* == word replacement == */ - public String getWord (String ow) throws Exception - { - return getword (this.awkid, ow); - } - - public void setWord (String ow, String nw) throws Exception - { - setword (this.awkid, ow, nw); - } - - public void unsetWord (String ow) throws Exception - { - setword (this.awkid, ow, null); - } - - public void unsetAllWords () throws Exception - { - setword (this.awkid, null, null); - } - - /* == source code management == */ - protected abstract int openSource (int mode); - protected abstract int closeSource (int mode); - protected abstract int readSource (char[] buf, int len); - protected abstract int writeSource (char[] buf, int len); - - /* == external io interface == */ - protected int openExtio (Extio extio) - { - switch (extio.getType()) - { - case Extio.TYPE_CONSOLE: - { - Console con = new Console (this, extio); - int n = openConsole (con); - extio.setHandle (con); - return n; - } - - case Extio.TYPE_FILE: - { - File file = new File (this, extio); - int n = openFile (file); - extio.setHandle (file); - return n; - } - - case Extio.TYPE_PIPE: - { - Pipe pipe = new Pipe (this, extio); - int n = openPipe (pipe); - extio.setHandle (pipe); - return n; - } - } - - return -1; - } - - protected int closeExtio (Extio extio) - { - switch (extio.getType()) - { - case Extio.TYPE_CONSOLE: - return closeConsole ( - (Console)extio.getHandle()); - - case Extio.TYPE_FILE: - return closeFile ((File)extio.getHandle()); - - case Extio.TYPE_PIPE: - return closePipe ((Pipe)extio.getHandle()); - } - - return -1; - } - - protected int readExtio (Extio extio, char[] buf, int len) - { - // this check is needed because 0 is used to indicate - // the end of the stream. java streams can return 0 - // if the data given is 0 bytes and it didn't reach - // the end of the stream. - if (len <= 0) return -1; - - switch (extio.getType()) - { - - case Extio.TYPE_CONSOLE: - { - return readConsole ( - (Console)extio.getHandle(), buf, len); - } - - case Extio.TYPE_FILE: - { - return readFile ( - (File)extio.getHandle(), buf, len); - } - - case Extio.TYPE_PIPE: - { - return readPipe ( - (Pipe)extio.getHandle(), buf, len); - } - } - - return -1; - } - - protected int writeExtio (Extio extio, char[] buf, int len) - { - if (len <= 0) return -1; - - switch (extio.getType()) - { - case Extio.TYPE_CONSOLE: - { - return writeConsole ( - (Console)extio.getHandle(), buf, len); - } - - case Extio.TYPE_FILE: - { - return writeFile ( - (File)extio.getHandle(), buf, len); - } - - case Extio.TYPE_PIPE: - { - return writePipe ( - (Pipe)extio.getHandle(), buf, len); - } - } - - return -1; - } - - protected int flushExtio (Extio extio) - { - switch (extio.getType()) - { - - case Extio.TYPE_CONSOLE: - { - return flushConsole ((Console)extio.getHandle()); - } - - case Extio.TYPE_FILE: - { - return flushFile ((File)extio.getHandle()); - } - - case Extio.TYPE_PIPE: - { - return flushPipe ((Pipe)extio.getHandle()); - } - } - - return -1; - } - - protected int nextExtio (Extio extio) - { - int type = extio.getType (); - - switch (extio.getType()) - { - case Extio.TYPE_CONSOLE: - { - return nextConsole ((Console)extio.getHandle()); - } - } - - return -1; - } - - protected abstract int openConsole (Console con); - protected abstract int closeConsole (Console con); - protected abstract int readConsole (Console con, char[] buf, int len); - protected abstract int writeConsole (Console con, char[] buf, int len); - protected abstract int flushConsole (Console con); - protected abstract int nextConsole (Console con); - - protected abstract int openFile (File file); - protected abstract int closeFile (File file); - protected abstract int readFile (File file, char[] buf, int len); - protected abstract int writeFile (File file, char[] buf, int len); - protected abstract int flushFile (File file); - - protected abstract int openPipe (Pipe pipe); - protected abstract int closePipe (Pipe pipe); - protected abstract int readPipe (Pipe pipe, char[] buf, int len); - protected abstract int writePipe (Pipe pipe, char[] buf, int len); - protected abstract int flushPipe (Pipe pipe); - - /* TODO: ... - protected void onRunStart (Context ctx) {} - protected void onRunEnd (Context ctx) {} - protected void onRunReturn (Context ctx) {} - protected void onRunStatement (Context ctx) {} - */ -} diff --git a/qse/java/ase/awk/Clearable.java b/qse/java/ase/awk/Clearable.java deleted file mode 100644 index b4e7d7d6..00000000 --- a/qse/java/ase/awk/Clearable.java +++ /dev/null @@ -1,13 +0,0 @@ -/* - * $Id: Clearable.java 183 2008-06-03 08:18:55Z baconevi $ - * - * {License} - */ - -package ase.awk; - -public interface Clearable -{ - public void clear (); -} - diff --git a/qse/java/ase/awk/Console.java b/qse/java/ase/awk/Console.java deleted file mode 100644 index d63dd81f..00000000 --- a/qse/java/ase/awk/Console.java +++ /dev/null @@ -1,30 +0,0 @@ -/* - * $Id: Console.java 183 2008-06-03 08:18:55Z baconevi $ - * - * {License} - */ - -package ase.awk; - -public class Console extends IO -{ - public static final int MODE_READ = Extio.MODE_CONSOLE_READ; - public static final int MODE_WRITE = Extio.MODE_CONSOLE_WRITE; - - protected Console (Awk awk, Extio extio) - { - super (awk, extio); - } - - public void setFileName (String name) throws Exception - { - if (getMode() == MODE_READ) - { - awk.setfilename (getRunId(), name); - } - else - { - awk.setofilename (getRunId(), name); - } - } -} diff --git a/qse/java/ase/awk/Context.java b/qse/java/ase/awk/Context.java deleted file mode 100644 index 358c565a..00000000 --- a/qse/java/ase/awk/Context.java +++ /dev/null @@ -1,115 +0,0 @@ -/* - * $Id: Context.java 183 2008-06-03 08:18:55Z baconevi $ - * - * {License} - */ - -package ase.awk; - -import java.util.Stack; - -public class Context -{ - public static int GLOBAL_ARGC = 0; - public static int GLOBAL_ARGV = 1; - public static int GLOBAL_CONVFMT = 2; - public static int GLOBAL_FILENAME = 3; - public static int GLOBAL_FNR = 4; - public static int GLOBAL_FS = 5; - public static int GLOBAL_IGNORECASE = 6; - public static int GLOBAL_NF = 7; - public static int GLOBAL_NR = 8; - public static int GLOBAL_OFILENAME = 9; - public static int GLOBAL_OFMT = 10; - public static int GLOBAL_OFS = 11; - public static int GLOBAL_ORS = 12; - public static int GLOBAL_RLENGTH = 13; - public static int GLOBAL_RS = 14; - public static int GLOBAL_RSTART = 15; - public static int GLOBAL_SUBSEP = 16; - - protected Awk awk; - protected long runid; - protected Object custom; - protected Stack clearableStack; - - Context (Awk awk) - { - this.awk = awk; - this.runid = 0; - this.custom = null; - this.clearableStack = new Stack (); - } - - void clear () - { - Clearable obj; - while ((obj = popClearable()) != null) obj.clear (); - } - - void pushClearable (Clearable obj) - { - clearableStack.push (obj); - } - - Clearable popClearable () - { - if (clearableStack.empty()) return null; - return (Clearable)clearableStack.pop (); - } - - public Awk getAwk () - { - return awk; - } - - public long getId () - { - return this.runid; - } - - public void setCustom (Object custom) - { - this.custom = custom; - } - - public Object getCustom () - { - return this.custom; - } - - public void setConsoleInputName (String name) throws Exception - { - awk.setfilename (this.runid, name); - } - - public void setConsoleOutputName (String name) throws Exception - { - awk.setofilename (this.runid, name); - } - - public void stop () - { - stop (this.runid); - } - - public void setGlobal (int id, Return ret) throws Exception - { - // regardless of the result, the value field - // of the return object is reset to 0 by setglobal. - setglobal (this.runid, id, ret); - } - - public Argument getGlobal (int id) throws Exception - { - return getglobal (this.runid, id); - } - - protected native void stop (long runid); - protected native void setglobal (long runid, int id, Return ret); - protected native Argument getglobal (long runid, int id); - - // TODO: - // setError - // getError -} diff --git a/qse/java/ase/awk/Exception.java b/qse/java/ase/awk/Exception.java deleted file mode 100644 index 3fa5f735..00000000 --- a/qse/java/ase/awk/Exception.java +++ /dev/null @@ -1,184 +0,0 @@ -/* - * $Id: Exception.java 183 2008-06-03 08:18:55Z baconevi $ - * - * {License} - */ - -package ase.awk; - -public class Exception extends java.lang.Exception -{ - private int code; - private int line; - - // generated by generrcode-java.awk - public static final int NOERR = 0; - public static final int CUSTOM = 1; - public static final int INVAL = 2; - public static final int NOMEM = 3; - public static final int NOSUP = 4; - public static final int NOPER = 5; - public static final int NODEV = 6; - public static final int NOSPC = 7; - public static final int MFILE = 8; - public static final int MLINK = 9; - public static final int AGAIN = 10; - public static final int NOENT = 11; - public static final int EXIST = 12; - public static final int FTBIG = 13; - public static final int TBUSY = 14; - public static final int ISDIR = 15; - public static final int IOERR = 16; - public static final int OPEN = 17; - public static final int READ = 18; - public static final int WRITE = 19; - public static final int CLOSE = 20; - public static final int INTERN = 21; - public static final int RUNTIME = 22; - public static final int BLKNST = 23; - public static final int EXPRNST = 24; - public static final int SINOP = 25; - public static final int SINCL = 26; - public static final int SINRD = 27; - public static final int SOUTOP = 28; - public static final int SOUTCL = 29; - public static final int SOUTWR = 30; - public static final int LXCHR = 31; - public static final int LXDIG = 32; - public static final int LXUNG = 33; - public static final int ENDSRC = 34; - public static final int ENDCMT = 35; - public static final int ENDSTR = 36; - public static final int ENDREX = 37; - public static final int LBRACE = 38; - public static final int LPAREN = 39; - public static final int RPAREN = 40; - public static final int RBRACK = 41; - public static final int COMMA = 42; - public static final int SCOLON = 43; - public static final int COLON = 44; - public static final int STMEND = 45; - public static final int IN = 46; - public static final int NOTVAR = 47; - public static final int EXPRES = 48; - public static final int FUNC = 49; - public static final int WHILE = 50; - public static final int ASSIGN = 51; - public static final int IDENT = 52; - public static final int FNNAME = 53; - public static final int BLKBEG = 54; - public static final int BLKEND = 55; - public static final int DUPBEG = 56; - public static final int DUPEND = 57; - public static final int BFNRED = 58; - public static final int AFNRED = 59; - public static final int GBLRED = 60; - public static final int PARRED = 61; - public static final int DUPPAR = 62; - public static final int DUPGBL = 63; - public static final int DUPLCL = 64; - public static final int BADPAR = 65; - public static final int BADVAR = 66; - public static final int UNDEF = 67; - public static final int LVALUE = 68; - public static final int GBLTM = 69; - public static final int LCLTM = 70; - public static final int PARTM = 71; - public static final int DELETE = 72; - public static final int RESET = 73; - public static final int BREAK = 74; - public static final int CONTINUE = 75; - public static final int NEXTBEG = 76; - public static final int NEXTEND = 77; - public static final int NEXTFBEG = 78; - public static final int NEXTFEND = 79; - public static final int PRINTFARG = 80; - public static final int PREPST = 81; - public static final int GLNCPS = 82; - public static final int DIVBY0 = 83; - public static final int OPERAND = 84; - public static final int POSIDX = 85; - public static final int ARGTF = 86; - public static final int ARGTM = 87; - public static final int FNNONE = 88; - public static final int NOTIDX = 89; - public static final int NOTDEL = 90; - public static final int NOTMAP = 91; - public static final int NOTMAPIN = 92; - public static final int NOTMAPNILIN = 93; - public static final int NOTREF = 94; - public static final int NOTASS = 95; - public static final int IDXVALASSMAP = 96; - public static final int POSVALASSMAP = 97; - public static final int MAPTOSCALAR = 98; - public static final int SCALARTOMAP = 99; - public static final int MAPNOTALLOWED = 100; - public static final int VALTYPE = 101; - public static final int RDELETE = 102; - public static final int RRESET = 103; - public static final int RNEXTBEG = 104; - public static final int RNEXTEND = 105; - public static final int RNEXTFBEG = 106; - public static final int RNEXTFEND = 107; - public static final int BFNUSER = 108; - public static final int BFNIMPL = 109; - public static final int IOUSER = 110; - public static final int IONONE = 111; - public static final int IOIMPL = 112; - public static final int IONMEM = 113; - public static final int IONMNL = 114; - public static final int FMTARG = 115; - public static final int FMTCNV = 116; - public static final int CONVFMTCHR = 117; - public static final int OFMTCHR = 118; - public static final int REXRECUR = 119; - public static final int REXRPAREN = 120; - public static final int REXRBRACKET = 121; - public static final int REXRBRACE = 122; - public static final int REXUNBALPAR = 123; - public static final int REXCOLON = 124; - public static final int REXCRANGE = 125; - public static final int REXCCLASS = 126; - public static final int REXBRANGE = 127; - public static final int REXEND = 128; - public static final int REXGARBAGE = 129; - // end of error codes - - public Exception () - { - super (); - this.code = NOERR; - this.line = 0; - } - - public Exception (String msg) - { - super (msg); - this.code = CUSTOM; - this.line = 0; - } - - public Exception (String msg, int code) - { - super (msg); - this.code = code; - this.line = 0; - } - - public Exception (String msg, int code, int line) - { - super (msg); - this.code = code; - this.line = line; - } - - public int getCode () - { - return this.code; - } - - public int getLine () - { - return this.line; - } -} diff --git a/qse/java/ase/awk/Extio.java b/qse/java/ase/awk/Extio.java deleted file mode 100644 index eb87531d..00000000 --- a/qse/java/ase/awk/Extio.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * $Id: Extio.java 183 2008-06-03 08:18:55Z baconevi $ - * - * {License} - */ - -package ase.awk; - -public class Extio -{ - protected static final int TYPE_PIPE = 0; - protected static final int TYPE_COPROC = 1; - protected static final int TYPE_FILE = 2; - protected static final int TYPE_CONSOLE = 3; - - /* PROBLEMS WITH GCJ 3.4.6 if these fields are protected. - * - protected static final int MODE_PIPE_READ = 0; - protected static final int MODE_PIPE_WRITE = 1; - - protected static final int MODE_FILE_READ = 0; - protected static final int MODE_FILE_WRITE = 1; - protected static final int MODE_FILE_APPEND = 2; - - protected static final int MODE_CONSOLE_READ = 0; - protected static final int MODE_CONSOLE_WRITE = 1; - */ - public static final int MODE_PIPE_READ = 0; - public static final int MODE_PIPE_WRITE = 1; - public static final int MODE_FILE_READ = 0; - public static final int MODE_FILE_WRITE = 1; - public static final int MODE_FILE_APPEND = 2; - public static final int MODE_CONSOLE_READ = 0; - public static final int MODE_CONSOLE_WRITE = 1; - - private String name; - private int type; - private int mode; - private long run_id; - private Object handle; - - protected Extio (String name, int type, int mode, long run_id) - { - this.name = name; - this.type = type; - this.mode = mode; - this.run_id = run_id; - this.handle = null; - } - - public String getName () - { - return this.name; - } - - public int getType () - { - return this.type; - } - - public int getMode () - { - return this.mode; - } - - public long getRunId () - { - return this.run_id; - } - - public void setHandle (Object handle) - { - this.handle = handle; - } - - public Object getHandle () - { - return this.handle; - } -}; diff --git a/qse/java/ase/awk/File.java b/qse/java/ase/awk/File.java deleted file mode 100644 index e2a1a3d7..00000000 --- a/qse/java/ase/awk/File.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * $Id: File.java 183 2008-06-03 08:18:55Z baconevi $ - * - * {License} - */ - -package ase.awk; - -public class File extends IO -{ - public static final int MODE_READ = Extio.MODE_FILE_READ; - public static final int MODE_WRITE = Extio.MODE_FILE_WRITE; - public static final int MODE_APPEND = Extio.MODE_FILE_APPEND; - - protected File (Awk awk, Extio extio) - { - super (awk, extio); - } - -} diff --git a/qse/java/ase/awk/IO.java b/qse/java/ase/awk/IO.java deleted file mode 100644 index 7df73cb6..00000000 --- a/qse/java/ase/awk/IO.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * $Id: IO.java 183 2008-06-03 08:18:55Z baconevi $ - * - * {License} - */ - -package ase.awk; - -class IO -{ - protected Awk awk; - protected Extio extio; - protected Object handle; - - protected IO (Awk awk, Extio extio) - { - this.awk = awk; - this.extio = extio; - } - - public String getName () - { - return extio.getName(); - } - - public int getMode () - { - return extio.getMode(); - } - - public long getRunId () - { - return extio.getRunId(); - } - - public void setHandle (Object handle) - { - this.handle = handle; - } - - public Object getHandle () - { - return handle; - } - -} diff --git a/qse/java/ase/awk/Pipe.java b/qse/java/ase/awk/Pipe.java deleted file mode 100644 index 04e089a7..00000000 --- a/qse/java/ase/awk/Pipe.java +++ /dev/null @@ -1,18 +0,0 @@ -/* - * $Id: Pipe.java 183 2008-06-03 08:18:55Z baconevi $ - * - * {License} - */ - -package ase.awk; - -public class Pipe extends IO -{ - public static final int MODE_READ = Extio.MODE_PIPE_READ; - public static final int MODE_WRITE = Extio.MODE_PIPE_WRITE; - - protected Pipe (Awk awk, Extio extio) - { - super (awk, extio); - } -} diff --git a/qse/java/ase/awk/Return.java b/qse/java/ase/awk/Return.java deleted file mode 100644 index 48c0b910..00000000 --- a/qse/java/ase/awk/Return.java +++ /dev/null @@ -1,184 +0,0 @@ -/* - * $Id: Return.java 183 2008-06-03 08:18:55Z baconevi $ - * - * ${License} - */ - -package ase.awk; - -public class Return implements Clearable -{ - protected long runid; - protected long valid; - - /* An instance of the Return class should not be used - * outside the context where it is availble. When it is - * referenced that way, the setXXX methods may cause - * JVM to crash */ - - public Return (Context ctx) - { - ctx.pushClearable (this); - this.runid = ctx.getId(); - this.valid = 0; - } - - Return (long runid, long valid) - { - this.runid = runid; - this.valid = valid; - } - - public boolean isIndexed () - { - if (this.runid == 0) return false; - return isindexed (this.runid, this.valid); - } - - public void setIntValue (long v) - { - if (this.runid == 0) return; - setintval (this.runid, this.valid, v); - } - - public void setIntValue (int v) - { - if (this.runid == 0) return; - setintval (this.runid, this.valid, (long)v); - } - - public void setIntValue (short v) - { - if (this.runid == 0) return; - setintval (this.runid, this.valid, (long)v); - } - - public void setIntValue (byte v) - { - if (this.runid == 0) return; - setintval (this.runid, this.valid, (long)v); - } - - public void setRealValue (double v) - { - if (this.runid == 0) return; - setrealval (this.runid, this.valid, v); - } - - public void setRealValue (float v) - { - if (this.runid == 0) return; - setrealval (this.runid, this.valid, (double)v); - } - - public void setStringValue (String v) - { - if (this.runid == 0) return; - setstrval (this.runid, this.valid, v); - } - - public void setIndexedIntValue (String index, long v) - { - if (this.runid == 0) return; - setindexedintval (this.runid, this.valid, index, v); - } - - public void setIndexedIntValue (String index, int v) - { - if (this.runid == 0) return; - setindexedintval (this.runid, this.valid, index, (long)v); - } - - public void setIndexedIntValue (String index, short v) - { - if (this.runid == 0) return; - setindexedintval (this.runid, this.valid, index, (long)v); - } - - public void setIndexedIntValue (String index, byte v) - { - if (this.runid == 0) return; - setindexedintval (this.runid, this.valid, index, (long)v); - } - - public void setIndexedRealValue (String index, double v) - { - if (this.runid == 0) return; - setindexedrealval (this.runid, this.valid, index, v); - } - - public void setIndexedRealValue (String index, float v) - { - if (this.runid == 0) return; - setindexedrealval (this.runid, this.valid, index, (double)v); - } - - public void setIndexedStringValue (String index, String v) - { - if (this.runid == 0) return; - setindexedstrval (this.runid, this.valid, index, v); - } - - public void setIndexedIntValue (long index, long v) - { - if (this.runid == 0) return; - setindexedintval (this.runid, this.valid, Long.toString(index), v); - } - - public void setIndexedIntValue (long index, int v) - { - if (this.runid == 0) return; - setindexedintval (this.runid, this.valid, Long.toString(index), (long)v); - } - - public void setIndexedIntValue (long index, short v) - { - if (this.runid == 0) return; - setindexedintval (this.runid, this.valid, Long.toString(index), (long)v); - } - - public void setIndexedIntValue (long index, byte v) - { - if (this.runid == 0) return; - setindexedintval (this.runid, this.valid, Long.toString(index), (long)v); - } - - public void setIndexedRealValue (long index, double v) - { - if (this.runid == 0) return; - setindexedrealval (this.runid, this.valid, Long.toString(index), v); - } - - public void setIndexedRealValue (long index, float v) - { - if (this.runid == 0) return; - setindexedrealval (this.runid, this.valid, Long.toString(index), (double)v); - } - - public void setIndexedStringValue (long index, String v) - { - if (this.runid == 0) return; - setindexedstrval (this.runid, this.valid, Long.toString(index), v); - } - - public void clear () - { - if (this.runid == 0) return; - clearval (this.runid, this.valid); - } - - protected native boolean isindexed (long runid, long valid); - - protected native void setintval (long runid, long valid, long v); - protected native void setrealval (long runid, long valid, double v); - protected native void setstrval (long runid, long valid, String v); - - protected native void setindexedintval ( - long runid, long valid, String index, long v); - protected native void setindexedrealval ( - long runid, long valid, String index, double v); - protected native void setindexedstrval ( - long runid, long valid, String index, String v); - - protected native void clearval (long runid, long valid); -} diff --git a/qse/java/ase/awk/StdAwk.java b/qse/java/ase/awk/StdAwk.java deleted file mode 100644 index c770bd5d..00000000 --- a/qse/java/ase/awk/StdAwk.java +++ /dev/null @@ -1,451 +0,0 @@ -/* - * $Id: StdAwk.java 183 2008-06-03 08:18:55Z baconevi $ - * - * {License} - */ - -package ase.awk; - -import java.io.*; - -/** - * Extends the core interpreter engine to implement the language closer to - * the standard. - */ -public abstract class StdAwk extends Awk -{ - private long seed; - private java.util.Random random; - - public StdAwk () throws Exception - { - super (); - - seed = System.currentTimeMillis(); - random = new java.util.Random (seed); - - addFunction ("sin", 1, 1); - addFunction ("cos", 1, 1); - addFunction ("tan", 1, 1); - addFunction ("atan", 1, 1); - addFunction ("atan2", 2, 2); - addFunction ("log", 1, 1); - addFunction ("exp", 1, 1); - addFunction ("sqrt", 1, 1); - addFunction ("int", 1, 1, "bfnint"); - - addFunction ("srand", 0, 1); - addFunction ("rand", 0, 0); - - addFunction ("systime", 0, 0); - addFunction ("strftime", 0, 2); - addFunction ("strfgmtime", 0, 2); - - addFunction ("system", 1, 1); - } - - /* == file interface == */ - protected int openFile (File file) - { - int mode = file.getMode(); - - if (mode == File.MODE_READ) - { - FileInputStream fis; - - try { fis = new FileInputStream (file.getName()); } - catch (IOException e) { return -1; } - - Reader rd = new BufferedReader ( - new InputStreamReader (fis)); - file.setHandle (rd); - return 1; - } - else if (mode == File.MODE_WRITE) - { - FileOutputStream fos; - - try { fos = new FileOutputStream (file.getName()); } - catch (IOException e) { return -1; } - - Writer wr = new BufferedWriter ( - new OutputStreamWriter (fos)); - file.setHandle (wr); - return 1; - } - else if (mode == File.MODE_APPEND) - { - FileOutputStream fos; - - try { fos = new FileOutputStream (file.getName(), true); } - catch (IOException e) { return -1; } - - Writer wr = new BufferedWriter ( - new OutputStreamWriter (fos)); - file.setHandle (wr); - return 1; - } - - return -1; - } - - protected int closeFile (File file) - { - int mode = file.getMode(); - - if (mode == File.MODE_READ) - { - Reader isr = (Reader)file.getHandle(); - try { isr.close (); } - catch (IOException e) { return -1; } - return 0; - } - else if (mode == File.MODE_WRITE) - { - Writer osw = (Writer)file.getHandle(); - try { osw.close (); } - catch (IOException e) { return -1; } - return 0; - } - else if (mode == File.MODE_APPEND) - { - Writer osw = (Writer)file.getHandle(); - try { osw.close (); } - catch (IOException e) { return -1; } - return 0; - } - - return -1; - } - - protected int readFile (File file, char[] buf, int len) - { - int mode = file.getMode(); - - if (mode == File.MODE_READ) - { - Reader rd = (Reader)file.getHandle(); - - try - { - len = rd.read (buf, 0, len); - if (len == -1) return 0; - } - catch (IOException e) { return -1; } - return len; - } - - return -1; - } - - protected int writeFile (File file, char[] buf, int len) - { - int mode = file.getMode(); - - if (mode == File.MODE_WRITE || - mode == File.MODE_APPEND) - { - Writer wr = (Writer)file.getHandle(); - try { wr.write (buf, 0, len); } - catch (IOException e) { return -1; } - return len; - } - - return -1; - } - - protected int flushFile (File file) - { - int mode = file.getMode (); - - if (mode == File.MODE_WRITE || - mode == File.MODE_APPEND) - { - Writer wr = (Writer)file.getHandle (); - try { wr.flush (); } - catch (IOException e) { return -1; } - return 0; - } - - return -1; - } - - private class RWE - { - public Writer wr; - public Reader rd; - public Reader er; - - public RWE (Writer wr, Reader rd, Reader er) - { - this.wr = wr; - this.rd = rd; - this.er = er; - } - }; - - /* == pipe interface == */ - protected int openPipe (Pipe pipe) - { - int mode = pipe.getMode(); - - if (mode == Pipe.MODE_READ) - { - Process proc; - - try { proc = popen (pipe.getName()); } - catch (IOException e) { return -1; } - - Reader rd = new BufferedReader ( - new InputStreamReader (proc.getInputStream())); - - pipe.setHandle (rd); - return 1; - } - else if (mode == Pipe.MODE_WRITE) - { - Process proc; - - try { proc = popen (pipe.getName()); } - catch (IOException e) { return -1; } - - Writer wr = new BufferedWriter ( - new OutputStreamWriter (proc.getOutputStream())); - Reader rd = new BufferedReader ( - new InputStreamReader (proc.getInputStream())); - Reader er = new BufferedReader ( - new InputStreamReader (proc.getErrorStream())); - - pipe.setHandle (new RWE (wr, rd, er)); - return 1; - } - - return -1; - } - - protected int closePipe (Pipe pipe) - { - int mode = pipe.getMode(); - - if (mode == Pipe.MODE_READ) - { - Reader rd = (Reader)pipe.getHandle(); - try { rd.close (); } - catch (IOException e) { return -1; } - return 0; - } - else if (mode == Pipe.MODE_WRITE) - { - //Writer wr = (Writer)pipe.getHandle(); - RWE rwe = (RWE)pipe.getHandle(); - - try { rwe.wr.close (); } - catch (IOException e) { return -1; } - - char[] buf = new char[256]; - - try - { - while (true) - { - int len = rwe.rd.read (buf, 0, buf.length); - if (len == -1) break; - System.out.print (new String (buf, 0, len)); - } - - System.out.flush (); - } - catch (IOException e) {} - - try - { - while (true) - { - int len = rwe.er.read (buf, 0, buf.length); - if (len == -1) break; - System.err.print (new String (buf, 0, len)); - } - - System.err.flush (); - } - catch (IOException e) {} - - try { rwe.rd.close (); } catch (IOException e) {} - try { rwe.er.close (); } catch (IOException e) {} - - pipe.setHandle (null); - return 0; - } - - return -1; - } - - protected int readPipe (Pipe pipe, char[] buf, int len) - { - int mode = pipe.getMode(); - - if (mode == Pipe.MODE_READ) - { - Reader rd = (Reader)pipe.getHandle(); - try - { - len = rd.read (buf, 0, len); - if (len == -1) len = 0; - } - catch (IOException e) { len = -1; } - return len; - } - - return -1; - } - - protected int writePipe (Pipe pipe, char[] buf, int len) - { - int mode = pipe.getMode(); - - if (mode == Pipe.MODE_WRITE) - { - //Writer wr = (Writer)pipe.getHandle (); - RWE rw = (RWE)pipe.getHandle(); - try - { - rw.wr.write (buf, 0, len); - rw.wr.flush (); - } - catch (IOException e) { return -1; } - return len; - } - - return -1; - } - - protected int flushPipe (Pipe pipe) - { - int mode = pipe.getMode (); - - if (mode == Pipe.MODE_WRITE) - { - Writer wr = (Writer)pipe.getHandle (); - try { wr.flush (); } - catch (IOException e) { return -1; } - return 0; - } - - return -1; - } - - /* == arithmetic built-in functions */ - public void sin (Context ctx, String name, Return ret, Argument[] args) - { - ret.setRealValue (Math.sin(args[0].getRealValue())); - } - - public void cos (Context ctx, String name, Return ret, Argument[] args) - { - ret.setRealValue (Math.cos(args[0].getRealValue())); - } - - public void tan (Context ctx, String name, Return ret, Argument[] args) - { - ret.setRealValue (Math.tan(args[0].getRealValue())); - } - - public void atan (Context ctx, String name, Return ret, Argument[] args) - { - ret.setRealValue (Math.atan(args[0].getRealValue())); - } - - public void atan2 (Context ctx, String name, Return ret, Argument[] args) - { - double y = args[0].getRealValue(); - double x = args[1].getRealValue(); - ret.setRealValue (Math.atan2(y,x)); - } - - public void log (Context ctx, String name, Return ret, Argument[] args) - { - ret.setRealValue (Math.log(args[0].getRealValue())); - } - - public void exp (Context ctx, String name, Return ret, Argument[] args) - { - ret.setRealValue (Math.exp(args[0].getRealValue())); - } - - public void sqrt (Context ctx, String name, Return ret, Argument[] args) - { - ret.setRealValue (Math.sqrt(args[0].getRealValue())); - } - - public void bfnint (Context ctx, String name, Return ret, Argument[] args) - { - ret.setIntValue (args[0].getIntValue()); - } - - public void rand (Context ctx, String name, Return ret, Argument[] args) - { - ret.setRealValue (random.nextDouble ()); - } - - public void srand (Context ctx, String name, Return ret, Argument[] args) - { - long prev_seed = seed; - - seed = (args == null || args.length == 0)? - System.currentTimeMillis (): - args[0].getIntValue(); - - random.setSeed (seed); - ret.setIntValue (prev_seed); - } - - public void systime (Context ctx, String name, Return ret, Argument[] args) - { - long msec = System.currentTimeMillis (); - ret.setIntValue (msec / 1000); - } - - public void strftime (Context ctx, String name, Return ret, Argument[] args) throws Exception - { - String fmt = (args.length<1)? "%c": args[0].getStringValue(); - long t = (args.length<2)? (System.currentTimeMillis()/1000): args[1].getIntValue(); - ret.setStringValue (strftime (fmt, t)); - } - - public void strfgmtime (Context ctx, String name, Return ret, Argument[] args) throws Exception - { - String fmt = (args.length<1)? "%c": args[0].getStringValue(); - long t = (args.length<2)? (System.currentTimeMillis()/1000): args[1].getIntValue(); - ret.setStringValue (strfgmtime (fmt, t)); - } - - /* miscellaneous built-in functions */ - public void system (Context ctx, String name, Return ret, Argument[] args) throws Exception - { - ret.setIntValue (system (args[0].getStringValue())); - } - - /* == utility functions == */ - private Process popen (String command) throws IOException - { - String full; - - /* TODO: consider OS names and versions */ - full = System.getenv ("ComSpec"); - if (full != null) - { - full = full + " /c " + command; - } - else - { - full = System.getenv ("SHELL"); - if (full != null) - { - full = "/bin/sh -c \"" + command + "\""; - } - else full = command; - } - - return Runtime.getRuntime().exec (full); - } -} diff --git a/qse/java/ase/awk/makefile.in b/qse/java/ase/awk/makefile.in deleted file mode 100644 index b39e42be..00000000 --- a/qse/java/ase/awk/makefile.in +++ /dev/null @@ -1,248 +0,0 @@ -# -# $Id: makefile.in,v 1.10 2007/10/15 16:15:42 bacon Exp $ -# - -NAME = aseawk - -TOP_DIR = @abs_top_builddir@ -TOP_INSTALLDIR = @prefix@/ase - -CC = @CC@ -CXX = @CXX@ -AR = @AR@ -RANLIB = @RANLIB@ - -CFLAGS = @CFLAGS@ -I$(TOP_DIR)/inc -CXXFLAGS = @CXXFLAGS@ -I$(TOP_DIR)/inc -LDFLAGS = @LDFLAGS@ -LIBS = @LIBS@ -MODE = @BUILDMODE@ - -CJ = @CJ@ -CJFLAGS = @CJFLAGS@ --classpath=$(TOP_DIR)/lib -fjni -BUILD_CJ = @BUILD_CJ@ - -JAVAC = @JAVAC@ -JAR = @JAR@ -CFLAGS_JNI = @CFLAGS_JNI@ -BUILD_JNI = @BUILD_JNI@ - -LIBTOOL_COMPILE = $(TOP_DIR)/libtool --mode=compile -LIBTOOL_LINK = $(TOP_DIR)/libtool --mode=link - -OUT_DIR = $(TOP_DIR)/out/$(MODE)/lib -OUT_FILE_LIB = $(OUT_DIR)/lib$(NAME).a -OUT_FILE_JNI = $(OUT_DIR)/lib$(NAME)_jni.la -OUT_FILE_LIB_CXX = $(OUT_DIR)/lib$(NAME)++.a -OUT_FILE_LIB_CJ = $(OUT_DIR)/lib$(NAME)ja.a -OUT_FILE_JAR = $(OUT_DIR)/$(NAME).jar - -TMP_DIR = $(MODE) -TMP_DIR_CXX = $(TMP_DIR)/cxx -TMP_DIR_CJ = $(TMP_DIR)/cj - -OBJ_FILES_LIB = \ - $(TMP_DIR)/awk.o \ - $(TMP_DIR)/err.o \ - $(TMP_DIR)/tree.o \ - $(TMP_DIR)/tab.o \ - $(TMP_DIR)/parse.o \ - $(TMP_DIR)/run.o \ - $(TMP_DIR)/rec.o \ - $(TMP_DIR)/val.o \ - $(TMP_DIR)/func.o \ - $(TMP_DIR)/misc.o \ - $(TMP_DIR)/extio.o - -OBJ_FILES_JNI = $(TMP_DIR)/jni.o - -OBJ_FILES_LIB_CXX = \ - $(TMP_DIR)/cxx/Awk.o \ - $(TMP_DIR)/cxx/StdAwk.o - -OBJ_FILES_LIB_CJ = \ - $(TMP_DIR)/cj/Awk.o \ - $(TMP_DIR)/cj/StdAwk.o \ - $(TMP_DIR)/cj/Context.o \ - $(TMP_DIR)/cj/Extio.o \ - $(TMP_DIR)/cj/IO.o \ - $(TMP_DIR)/cj/Console.o \ - $(TMP_DIR)/cj/File.o \ - $(TMP_DIR)/cj/Pipe.o \ - $(TMP_DIR)/cj/Exception.o \ - $(TMP_DIR)/cj/Return.o \ - $(TMP_DIR)/cj/Argument.o \ - $(TMP_DIR)/cj/Clearable.o - -OBJ_FILES_SO = $(OBJ_FILES_LIB:.o=.lo) $(OBJ_FILES_JNI:.o=.lo) - -OBJ_FILES_JAR = \ - $(TMP_DIR)/ase/awk/Awk.class \ - $(TMP_DIR)/ase/awk/StdAwk.class \ - $(TMP_DIR)/ase/awk/Context.class \ - $(TMP_DIR)/ase/awk/Extio.class \ - $(TMP_DIR)/ase/awk/IO.class \ - $(TMP_DIR)/ase/awk/Console.class \ - $(TMP_DIR)/ase/awk/File.class \ - $(TMP_DIR)/ase/awk/Pipe.class \ - $(TMP_DIR)/ase/awk/Exception.class \ - $(TMP_DIR)/ase/awk/Return.class \ - $(TMP_DIR)/ase/awk/Argument.class \ - $(TMP_DIR)/ase/awk/Clearable.class - -lib: build$(BUILD_JNI)$(BUILD_CJ) - -build: $(OUT_FILE_LIB) $(OUT_FILE_LIB_CXX) - -buildjnicj: buildjni buildcj - -buildjni: build $(OUT_FILE_JNI) - -buildcj: build $(OUT_FILE_LIB_CJ) - -$(OUT_FILE_LIB): $(TMP_DIR) $(OUT_DIR) $(OBJ_FILES_LIB) - $(AR) cr $(OUT_FILE_LIB) $(OBJ_FILES_LIB) - if [ ! -z "$(RANLIB)" ]; then $(RANLIB) $(OUT_FILE_LIB); fi - -$(OUT_FILE_JNI): $(TMP_DIR) $(OBJ_FILES_JNI) $(OBJ_FILES_JAR) $(OUT_FILE_LIB) - $(LIBTOOL_LINK) $(CC) -rpath $(TOP_INSTALLDIR)/lib -version-info 1:0:0 -o $(OUT_FILE_JNI) $(OBJ_FILES_SO) -lm -L$(OUT_DIR) -l$(NAME) -lasecmn -laseutl - $(JAR) -Mcvf $(OUT_FILE_JAR) -C $(TMP_DIR) ase - -$(OUT_FILE_LIB_CXX): $(TMP_DIR_CXX) $(OUT_DIR) $(OUT_FILE_LIB) $(OBJ_FILES_LIB_CXX) - $(AR) cr $(OUT_FILE_LIB_CXX) $(OBJ_FILES_LIB_CXX) - if [ ! -z "$(RANLIB)" ]; then $(RANLIB) $(OUT_FILE_LIB_CXX); fi - -$(OUT_FILE_LIB_CJ): $(TMP_DIR_CJ) $(OUT_DIR) $(OBJ_FILES_LIB_CJ) - $(AR) cr $(OUT_FILE_LIB_CJ) $(OBJ_FILES_LIB_CJ) - if [ ! -z "$(RANLIB)" ]; then $(RANLIB) $(OUT_FILE_LIB_CJ); fi - -$(TMP_DIR)/awk.o: awk.c - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS) -o $@ -c awk.c - -$(TMP_DIR)/err.o: err.c - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS) -o $@ -c err.c - -$(TMP_DIR)/tree.o: tree.c - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS) -o $@ -c tree.c - -$(TMP_DIR)/tab.o: tab.c - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS) -o $@ -c tab.c - -$(TMP_DIR)/parse.o: parse.c - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS) -o $@ -c parse.c - -$(TMP_DIR)/run.o: run.c - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS) -o $@ -c run.c - -$(TMP_DIR)/rec.o: rec.c - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS) -o $@ -c rec.c - -$(TMP_DIR)/val.o: val.c - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS) -o $@ -c val.c - -$(TMP_DIR)/func.o: func.c - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS) -o $@ -c func.c - -$(TMP_DIR)/misc.o: misc.c - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS) -o $@ -c misc.c - -$(TMP_DIR)/extio.o: extio.c - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS) -o $@ -c extio.c - -$(TMP_DIR)/jni.o: jni.c - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS) $(CFLAGS_JNI) -o $@ -c jni.c - -$(TMP_DIR)/ase/awk/Awk.class: Awk.java - $(JAVAC) -classpath ../.. -d $(TMP_DIR) Awk.java - -$(TMP_DIR)/ase/awk/StdAwk.class: StdAwk.java - $(JAVAC) -classpath ../.. -d $(TMP_DIR) StdAwk.java - -$(TMP_DIR)/ase/awk/Context.class: Context.java - $(JAVAC) -classpath ../.. -d $(TMP_DIR) Context.java - -$(TMP_DIR)/ase/awk/Extio.class: Extio.java - $(JAVAC) -classpath ../.. -d $(TMP_DIR) Extio.java - -$(TMP_DIR)/ase/awk/IO.class: IO.java - $(JAVAC) -classpath ../.. -d $(TMP_DIR) IO.java - -$(TMP_DIR)/ase/awk/Console.class: Console.java - $(JAVAC) -classpath ../.. -d $(TMP_DIR) Console.java - -$(TMP_DIR)/ase/awk/File.class: File.java - $(JAVAC) -classpath ../.. -d $(TMP_DIR) File.java - -$(TMP_DIR)/ase/awk/Pipe.class: Pipe.java - $(JAVAC) -classpath ../.. -d $(TMP_DIR) Pipe.java - -$(TMP_DIR)/ase/awk/Exception.class: Exception.java - $(JAVAC) -classpath ../.. -d $(TMP_DIR) Exception.java - -$(TMP_DIR)/ase/awk/Return.class: Return.java - $(JAVAC) -classpath ../.. -d $(TMP_DIR) Return.java - -$(TMP_DIR)/ase/awk/Argument.class: Argument.java - $(JAVAC) -classpath ../.. -d $(TMP_DIR) Argument.java - -$(TMP_DIR)/ase/awk/Clearable.class: Clearable.java - $(JAVAC) -classpath ../.. -d $(TMP_DIR) Clearable.java - -$(TMP_DIR)/cxx/Awk.o: Awk.cpp - $(CXX) $(CXXFLAGS) -o $@ -c Awk.cpp - -$(TMP_DIR)/cxx/StdAwk.o: StdAwk.cpp - $(CXX) $(CXXFLAGS) -o $@ -c StdAwk.cpp - -$(TMP_DIR)/cj/Awk.o: Awk.java - $(CJ) $(CJFLAGS) -o $@ -c Awk.java - -$(TMP_DIR)/cj/StdAwk.o: StdAwk.java - $(CJ) $(CJFLAGS) -o $@ -c StdAwk.java - -$(TMP_DIR)/cj/Context.o: Context.java - $(CJ) $(CJFLAGS) -o $@ -c Context.java - -$(TMP_DIR)/cj/Extio.o: Extio.java - $(CJ) $(CJFLAGS) -o $@ -c Extio.java - -$(TMP_DIR)/cj/IO.o: IO.java - $(CJ) $(CJFLAGS) -o $@ -c IO.java - -$(TMP_DIR)/cj/Console.o: Console.java - $(CJ) $(CJFLAGS) -o $@ -c Console.java - -$(TMP_DIR)/cj/File.o: File.java - $(CJ) $(CJFLAGS) -o $@ -c File.java - -$(TMP_DIR)/cj/Pipe.o: Pipe.java - $(CJ) $(CJFLAGS) -o $@ -c Pipe.java - -$(TMP_DIR)/cj/Exception.o: Exception.java - $(CJ) $(CJFLAGS) -o $@ -c Exception.java - -$(TMP_DIR)/cj/Return.o: Return.java - $(CJ) $(CJFLAGS) -o $@ -c Return.java - -$(TMP_DIR)/cj/Argument.o: Argument.java - $(CJ) $(CJFLAGS) -o $@ -c Argument.java - -$(TMP_DIR)/cj/Clearable.o: Clearable.java - $(CJ) $(CJFLAGS) -o $@ -c Clearable.java - -$(OUT_DIR): - mkdir -p $(OUT_DIR) - -$(TMP_DIR): - mkdir -p $(TMP_DIR) - -$(TMP_DIR_CXX): $(TMP_DIR) - mkdir -p $(TMP_DIR_CXX) - -$(TMP_DIR_CJ): $(TMP_DIR) - mkdir -p $(TMP_DIR_CJ) - -clean: - rm -rf $(OUT_FILE_LIB) $(OUT_FILE_JNI) $(OUT_FILE_JAR) $(OUT_FILE_LIB_CXX) $(OUT_FILE_LIB_CJ) - rm -rf $(OBJ_FILES_LIB) $(OBJ_FILES_JNI) $(OBJ_FILES_JAR) $(OBJ_FILES_LIB_CXX) $(OBJ_FILES_LIB_CJ) - diff --git a/qse/java/makefile.in b/qse/java/makefile.in deleted file mode 100644 index 03fc6a13..00000000 --- a/qse/java/makefile.in +++ /dev/null @@ -1,98 +0,0 @@ -# -# $Id: makefile.in,v 1.6 2007/11/11 15:06:47 bacon Exp $ -# - -TOP_DIR = @abs_top_builddir@ -CC = @CC@ -CXX = @CXX@ -CFLAGS = @CFLAGS@ -I$(TOP_DIR)/inc -CXXFLAGS = @CXXFLAGS@ -I$(TOP_DIR)/inc -LDFLAGS = @LDFLAGS@ -L$(TOP_DIR)/out/@BUILDMODE@/lib -LIBS = @LIBS@ -laseawk -lasecmn -laseutl -lm -LIBS_CXX = -laseawk++ ${LIBS} -LIBS_CJ = -laseawkja -MODE = @BUILDMODE@ - -STRIP = @STRIP@ - -CJ = @CJ@ -CJFLAGS = @CJFLAGS@ --classpath=$(TOP_DIR)/..:. -fjni -BUILD_CJ = @BUILD_CJ@ - -JAVAC = @JAVAC@ -JAR = @JAR@ -CFLAGS_JNI = @CFLAGS_JNI@ -BUILD_JNI = @BUILD_JNI@ - -AR = ar - -OUT_DIR= $(TOP_DIR)/out/$(MODE) -OUT_DIR_LIB = $(OUT_DIR)/lib -OUT_DIR_BIN = $(OUT_DIR)/cmd -TMP_DIR = $(MODE) - -ASEAWK_LIB = - -all: build$(BUILD_JNI)$(BUILD_CJ) - -build: $(TMP_DIR) $(OUT_DIR_BIN) $(OUT_DIR_BIN)/aseawk $(OUT_DIR_BIN)/aseawk++ - -buildjnicj: buildjni buildcj - -buildjni: build $(OUT_DIR_BIN)/aseawk.jar $(OUT_DIR)/AseAwkApplet.html $(OUT_DIR)/AseAwkApplet.js - -buildcj: build $(OUT_DIR_BIN)/aseawkja - -$(OUT_DIR_BIN)/aseawk: awk.c - $(CC) $(CFLAGS) -o $@ awk.c $(LDFLAGS) $(LIBS) - $(STRIP) $@ - -$(OUT_DIR_BIN)/aseawk++: Awk.cpp - $(CXX) $(CXXFLAGS) -o $@ Awk.cpp $(LDFLAGS) $(LIBS_CXX) - $(STRIP) $@ - -$(OUT_DIR_BIN)/aseawkja: $(TMP_DIR)/cj AseAwk.java AseAwkPanel.java AseAwkApplet.java - $(CJ) $(CJFLAGS) -o $(TMP_DIR)/cj/AseAwk.o -c AseAwk.java - $(CJ) $(CJFLAGS) -o $(TMP_DIR)/cj/AseAwkPanel.o -c AseAwkPanel.java - $(CJ) $(CJFLAGS) -o $(TMP_DIR)/cj/AseAwkApplet.o -c AseAwkApplet.java - mkdir -p $(TMP_DIR)/cj/lib - cd $(TMP_DIR)/cj/lib; $(AR) xv @abs_top_builddir@/@BUILDMODE@/lib/libaseawkja.a - $(CJ) --main=AseAwk -o $@ $(TMP_DIR)/cj/*.o $(TMP_DIR)/cj/lib/*.o - rm -rf $(TMP_DIR)/cj/lib - # Linking with the library seems to cause the resulting program - # to crash for some JNI operations. Correct me if I'm wrong. - #$(CJ) --main=AseAwk -o $@ $(TMP_DIR)/cj/*.o $(LDFLAGS) $(LIBS_CJ) - -$(OUT_DIR_BIN)/aseawk.jar: $(TMP_DIR)/AseAwkPanel.class $(TMP_DIR)/AseAwk.class $(TMP_DIR)/AseAwkApplet.class - cd $(TMP_DIR); $(JAR) -xvf ../$(OUT_DIR_LIB)/aseawk.jar - cd $(TMP_DIR); $(JAR) -cvfm ../$@ ../manifest *.class ase - rm -rf $(TMP_DIR)/ase - -$(TMP_DIR)/AseAwkPanel.class: AseAwkPanel.java - $(JAVAC) -classpath $(TMP_DIR):$(OUT_DIR_LIB)/aseawk.jar -d $(TMP_DIR) AseAwkPanel.java - -$(TMP_DIR)/AseAwk.class: AseAwk.java - $(JAVAC) -classpath $(TMP_DIR):$(OUT_DIR_LIB)/aseawk.jar -d $(TMP_DIR) AseAwk.java - -$(TMP_DIR)/AseAwkApplet.class: AseAwkApplet.java - $(JAVAC) -classpath $(TMP_DIR):$(OUT_DIR_LIB)/aseawk.jar -d $(TMP_DIR) AseAwkApplet.java - -$(OUT_DIR)/AseAwkApplet.html: AseAwkApplet.html - cp -pf AseAwkApplet.html $(OUT_DIR) - -$(OUT_DIR)/AseAwkApplet.js: AseAwkApplet.js - cp -pf AseAwkApplet.js $(OUT_DIR) - -$(OUT_DIR_BIN): - mkdir -p $(OUT_DIR_BIN) - -$(TMP_DIR): - mkdir -p $(TMP_DIR) - -$(TMP_DIR)/cj: - mkdir -p $(TMP_DIR)/cj - -clean: - rm -rf $(OUT_DIR_BIN)/aseawk $(OUT_DIR_BIN)/aseawk++ $(OUT_DIR_BIN)/aseawkja - rm -rf $(OUT_DIR_BIN)/aseawk.jar $(OUT_DIR)/AseAwkApplet.html $(OUT_DIR)/AseAwkApplet.js $(TMP_DIR)/*.class - diff --git a/qse/lib/awk/Awk.cpp b/qse/lib/awk/Awk.cpp index a1c4117e..abec5772 100644 --- a/qse/lib/awk/Awk.cpp +++ b/qse/lib/awk/Awk.cpp @@ -5,19 +5,19 @@ */ -#include -#include +#include +#include #include "../cmn/mem.h" ///////////////////////////////// -ASE_BEGIN_NAMESPACE(ASE) +QSE_BEGIN_NAMESPACE(ASE) ///////////////////////////////// ////////////////////////////////////////////////////////////////// // Awk::Source ////////////////////////////////////////////////////////////////// -Awk::Source::Source (Mode mode): mode (mode), handle (ASE_NULL) +Awk::Source::Source (Mode mode): mode (mode), handle (QSE_NULL) { } @@ -99,15 +99,15 @@ Awk::File::Mode Awk::File::getMode () const // Awk::Console ////////////////////////////////////////////////////////////////// -Awk::Console::Console (extio_t* extio): Extio(extio), filename(ASE_NULL) +Awk::Console::Console (extio_t* extio): Extio(extio), filename(QSE_NULL) { } Awk::Console::~Console () { - if (filename != ASE_NULL) + if (filename != QSE_NULL) { - ase_awk_free (ase_awk_getrunawk(extio->run), filename); + qse_awk_free (qse_awk_getrunawk(extio->run), filename); } } @@ -115,27 +115,27 @@ int Awk::Console::setFileName (const char_t* name) { if (extio->mode == READ) { - return ase_awk_setfilename ( - extio->run, name, ase_strlen(name)); + return qse_awk_setfilename ( + extio->run, name, qse_strlen(name)); } else { - return ase_awk_setofilename ( - extio->run, name, ase_strlen(name)); + return qse_awk_setofilename ( + extio->run, name, qse_strlen(name)); } } int Awk::Console::setFNR (long_t fnr) { - ase_awk_val_t* tmp; + qse_awk_val_t* tmp; int n; - tmp = ase_awk_makeintval (extio->run, fnr); - if (tmp == ASE_NULL) return -1; + tmp = qse_awk_makeintval (extio->run, fnr); + if (tmp == QSE_NULL) return -1; - ase_awk_refupval (extio->run, tmp); - n = ase_awk_setglobal (extio->run, ASE_AWK_GLOBAL_FNR, tmp); - ase_awk_refdownval (extio->run, tmp); + qse_awk_refupval (extio->run, tmp); + n = qse_awk_setglobal (extio->run, QSE_AWK_GLOBAL_FNR, tmp); + qse_awk_refdownval (extio->run, tmp); return n; } @@ -149,30 +149,30 @@ Awk::Console::Mode Awk::Console::getMode () const // Awk::Argument ////////////////////////////////////////////////////////////////// -Awk::Argument::Argument (Run& run): run (&run), val (ASE_NULL) +Awk::Argument::Argument (Run& run): run (&run), val (QSE_NULL) { this->inum = 0; this->rnum = 0.0; - this->str.ptr = ASE_NULL; + this->str.ptr = QSE_NULL; this->str.len = 0; } -Awk::Argument::Argument (Run* run): run (run), val (ASE_NULL) +Awk::Argument::Argument (Run* run): run (run), val (QSE_NULL) { this->inum = 0; this->rnum = 0.0; - this->str.ptr = ASE_NULL; + this->str.ptr = QSE_NULL; this->str.len = 0; } -Awk::Argument::Argument (): run (ASE_NULL), val (ASE_NULL) +Awk::Argument::Argument (): run (QSE_NULL), val (QSE_NULL) { this->inum = 0; this->rnum = 0.0; - this->str.ptr = ASE_NULL; + this->str.ptr = QSE_NULL; this->str.len = 0; } @@ -183,44 +183,44 @@ Awk::Argument::~Argument () void Awk::Argument::clear () { - if (this->val == ASE_NULL) + if (this->val == QSE_NULL) { /* case 1. not initialized. * case 2. initialized with the second init. * none of the cases creates a new string so the sttring * that str.ptr is pointing at doesn't have to be freed */ - this->str.ptr = ASE_NULL; + this->str.ptr = QSE_NULL; this->str.len = 0; } - else if (ASE_AWK_VAL_TYPE(this->val) == ASE_AWK_VAL_MAP) + else if (QSE_AWK_VAL_TYPE(this->val) == QSE_AWK_VAL_MAP) { - ASE_ASSERT (this->run != ASE_NULL); + QSE_ASSERT (this->run != QSE_NULL); /* when the value is a map, str.ptr and str.len are * used for index iteration in getFirstIndex & getNextIndex */ - ase_awk_refdownval (this->run->run, this->val); - this->val = ASE_NULL; + qse_awk_refdownval (this->run->run, this->val); + this->val = QSE_NULL; } else { - ASE_ASSERT (this->run != ASE_NULL); + QSE_ASSERT (this->run != QSE_NULL); - if (this->str.ptr != ASE_NULL) + if (this->str.ptr != QSE_NULL) { - if (ASE_AWK_VAL_TYPE(this->val) != ASE_AWK_VAL_STR) + if (QSE_AWK_VAL_TYPE(this->val) != QSE_AWK_VAL_STR) { awk_t* awk = this->run->awk->awk; - ase_awk_free (awk, this->str.ptr); + qse_awk_free (awk, this->str.ptr); } - this->str.ptr = ASE_NULL; + this->str.ptr = QSE_NULL; this->str.len = 0; } - if (this->val != ASE_NULL) + if (this->val != QSE_NULL) { - ase_awk_refdownval (this->run->run, this->val); - this->val = ASE_NULL; + qse_awk_refdownval (this->run->run, this->val); + this->val = QSE_NULL; } } @@ -231,125 +231,125 @@ void Awk::Argument::clear () void* Awk::Argument::operator new (size_t n, awk_t* awk) throw () { - void* ptr = ase_awk_alloc (awk, ASE_SIZEOF(awk) + n); - if (ptr == ASE_NULL) return ASE_NULL; + void* ptr = qse_awk_alloc (awk, QSE_SIZEOF(awk) + n); + if (ptr == QSE_NULL) return QSE_NULL; *(awk_t**)ptr = awk; - return (char*)ptr+ASE_SIZEOF(awk); + return (char*)ptr+QSE_SIZEOF(awk); } void* Awk::Argument::operator new[] (size_t n, awk_t* awk) throw () { - void* ptr = ase_awk_alloc (awk, ASE_SIZEOF(awk) + n); - if (ptr == ASE_NULL) return ASE_NULL; + void* ptr = qse_awk_alloc (awk, QSE_SIZEOF(awk) + n); + if (ptr == QSE_NULL) return QSE_NULL; *(awk_t**)ptr = awk; - return (char*)ptr+ASE_SIZEOF(awk); + return (char*)ptr+QSE_SIZEOF(awk); } #if !defined(__BORLANDC__) void Awk::Argument::operator delete (void* ptr, awk_t* awk) { - ase_awk_free (awk, (char*)ptr-ASE_SIZEOF(awk)); + qse_awk_free (awk, (char*)ptr-QSE_SIZEOF(awk)); } void Awk::Argument::operator delete[] (void* ptr, awk_t* awk) { - ase_awk_free (awk, (char*)ptr-ASE_SIZEOF(awk)); + qse_awk_free (awk, (char*)ptr-QSE_SIZEOF(awk)); } #endif void Awk::Argument::operator delete (void* ptr) { - void* p = (char*)ptr-ASE_SIZEOF(awk_t*); - ase_awk_free (*(awk_t**)p, p); + void* p = (char*)ptr-QSE_SIZEOF(awk_t*); + qse_awk_free (*(awk_t**)p, p); } void Awk::Argument::operator delete[] (void* ptr) { - void* p = (char*)ptr-ASE_SIZEOF(awk_t*); - ase_awk_free (*(awk_t**)p, p); + void* p = (char*)ptr-QSE_SIZEOF(awk_t*); + qse_awk_free (*(awk_t**)p, p); } int Awk::Argument::init (val_t* v) { // this method is used internally only // and should never be called more than once - ASE_ASSERT (this->val == ASE_NULL); - ASE_ASSERT (v != ASE_NULL); + QSE_ASSERT (this->val == QSE_NULL); + QSE_ASSERT (v != QSE_NULL); - ase_awk_refupval (this->run->run, v); + qse_awk_refupval (this->run->run, v); this->val = v; - if (ASE_AWK_VAL_TYPE(v) == ASE_AWK_VAL_STR) + if (QSE_AWK_VAL_TYPE(v) == QSE_AWK_VAL_STR) { - int n = ase_awk_valtonum ( + int n = qse_awk_valtonum ( this->run->run, v, &this->inum, &this->rnum); if (n == 0) { - this->rnum = (ase_real_t)this->inum; - this->str.ptr = ((ase_awk_val_str_t*)this->val)->buf; - this->str.len = ((ase_awk_val_str_t*)this->val)->len; + this->rnum = (qse_real_t)this->inum; + this->str.ptr = ((qse_awk_val_str_t*)this->val)->buf; + this->str.len = ((qse_awk_val_str_t*)this->val)->len; return 0; } else if (n == 1) { - this->inum = (ase_long_t)this->rnum; - this->str.ptr = ((ase_awk_val_str_t*)this->val)->buf; - this->str.len = ((ase_awk_val_str_t*)this->val)->len; + this->inum = (qse_long_t)this->rnum; + this->str.ptr = ((qse_awk_val_str_t*)this->val)->buf; + this->str.len = ((qse_awk_val_str_t*)this->val)->len; return 0; } } - else if (ASE_AWK_VAL_TYPE(v) == ASE_AWK_VAL_INT) + else if (QSE_AWK_VAL_TYPE(v) == QSE_AWK_VAL_INT) { - this->inum = ((ase_awk_val_int_t*)v)->val; - this->rnum = (ase_real_t)((ase_awk_val_int_t*)v)->val; + this->inum = ((qse_awk_val_int_t*)v)->val; + this->rnum = (qse_real_t)((qse_awk_val_int_t*)v)->val; - this->str.ptr = ase_awk_valtostr ( - this->run->run, v, 0, ASE_NULL, &this->str.len); - if (this->str.ptr != ASE_NULL) return 0; + this->str.ptr = qse_awk_valtostr ( + this->run->run, v, 0, QSE_NULL, &this->str.len); + if (this->str.ptr != QSE_NULL) return 0; } - else if (ASE_AWK_VAL_TYPE(v) == ASE_AWK_VAL_REAL) + else if (QSE_AWK_VAL_TYPE(v) == QSE_AWK_VAL_REAL) { - this->inum = (ase_long_t)((ase_awk_val_real_t*)v)->val; - this->rnum = ((ase_awk_val_real_t*)v)->val; + this->inum = (qse_long_t)((qse_awk_val_real_t*)v)->val; + this->rnum = ((qse_awk_val_real_t*)v)->val; - this->str.ptr = ase_awk_valtostr ( - this->run->run, v, 0, ASE_NULL, &this->str.len); - if (this->str.ptr != ASE_NULL) return 0; + this->str.ptr = qse_awk_valtostr ( + this->run->run, v, 0, QSE_NULL, &this->str.len); + if (this->str.ptr != QSE_NULL) return 0; } - else if (ASE_AWK_VAL_TYPE(v) == ASE_AWK_VAL_NIL) + else if (QSE_AWK_VAL_TYPE(v) == QSE_AWK_VAL_NIL) { this->inum = 0; this->rnum = 0.0; - this->str.ptr = ase_awk_valtostr ( - this->run->run, v, 0, ASE_NULL, &this->str.len); - if (this->str.ptr != ASE_NULL) return 0; + this->str.ptr = qse_awk_valtostr ( + this->run->run, v, 0, QSE_NULL, &this->str.len); + if (this->str.ptr != QSE_NULL) return 0; } - else if (ASE_AWK_VAL_TYPE(v) == ASE_AWK_VAL_MAP) + else if (QSE_AWK_VAL_TYPE(v) == QSE_AWK_VAL_MAP) { this->inum = 0; this->rnum = 0.0; - this->str.ptr = ASE_NULL; + this->str.ptr = QSE_NULL; this->str.len = 0; return 0; } // an error has occurred - ase_awk_refdownval (this->run->run, v); - this->val = ASE_NULL; + qse_awk_refdownval (this->run->run, v); + this->val = QSE_NULL; return -1; } int Awk::Argument::init (const char_t* str, size_t len) { - ASE_ASSERT (this->val == ASE_NULL); + QSE_ASSERT (this->val == QSE_NULL); this->str.ptr = (char_t*)str; this->str.len = len; - if (ase_awk_strtonum (this->run->run, + if (qse_awk_strtonum (this->run->run, str, len, &this->inum, &this->rnum) == 0) { this->rnum = (real_t)this->inum; @@ -376,16 +376,16 @@ Awk::real_t Awk::Argument::toReal () const const Awk::char_t* Awk::Argument::toStr (size_t* len) const { - if (this->val != ASE_NULL && - ASE_AWK_VAL_TYPE(this->val) == ASE_AWK_VAL_MAP) + if (this->val != QSE_NULL && + QSE_AWK_VAL_TYPE(this->val) == QSE_AWK_VAL_MAP) { *len = 0; - return ASE_T(""); + return QSE_T(""); } - else if (this->str.ptr == ASE_NULL) + else if (this->str.ptr == QSE_NULL) { *len = 0; - return ASE_T(""); + return QSE_T(""); } else { @@ -396,13 +396,13 @@ const Awk::char_t* Awk::Argument::toStr (size_t* len) const bool Awk::Argument::isIndexed () const { - if (this->val == ASE_NULL) return false; - return ASE_AWK_VAL_TYPE(this->val) == ASE_AWK_VAL_MAP; + if (this->val == QSE_NULL) return false; + return QSE_AWK_VAL_TYPE(this->val) == QSE_AWK_VAL_MAP; } int Awk::Argument::getIndexed (const char_t* idxptr, Awk::Argument& val) const { - return getIndexed (idxptr, ase_strlen(idxptr), val); + return getIndexed (idxptr, qse_strlen(idxptr), val); } int Awk::Argument::getIndexed ( @@ -411,19 +411,19 @@ int Awk::Argument::getIndexed ( val.clear (); // not initialized yet. val is just nil. not an error - if (this->val == ASE_NULL) return 0; + if (this->val == QSE_NULL) return 0; // not a map. val is just nil. not an error - if (ASE_AWK_VAL_TYPE(this->val) != ASE_AWK_VAL_MAP) return 0; + if (QSE_AWK_VAL_TYPE(this->val) != QSE_AWK_VAL_MAP) return 0; // get the value from the map. - ase_awk_val_map_t* m = (ase_awk_val_map_t*)this->val; - pair_t* pair = ase_map_search (m->map, idxptr, idxlen); + qse_awk_val_map_t* m = (qse_awk_val_map_t*)this->val; + pair_t* pair = qse_map_search (m->map, idxptr, idxlen); // the key is not found. it is not an error. val is just nil - if (pair == ASE_NULL) return 0; + if (pair == QSE_NULL) return 0; // if val.init fails, it should return an error - return val.init ((val_t*)ASE_MAP_VPTR(pair)); + return val.init ((val_t*)QSE_MAP_VPTR(pair)); } int Awk::Argument::getIndexed (long_t idx, Argument& val) const @@ -431,23 +431,23 @@ int Awk::Argument::getIndexed (long_t idx, Argument& val) const val.clear (); // not initialized yet. val is just nil. not an error - if (this->val == ASE_NULL) return 0; + if (this->val == QSE_NULL) return 0; // not a map. val is just nil. not an error - if (ASE_AWK_VAL_TYPE(this->val) != ASE_AWK_VAL_MAP) return 0; + if (QSE_AWK_VAL_TYPE(this->val) != QSE_AWK_VAL_MAP) return 0; char_t ri[128]; int rl = Awk::sprintf ( - this->run->awk, ri, ASE_COUNTOF(ri), - #if ASE_SIZEOF_LONG_LONG > 0 - ASE_T("%lld"), (long long)idx - #elif ASE_SIZEOF___INT64 > 0 - ASE_T("%I64d"), (__int64)idx - #elif ASE_SIZEOF_LONG > 0 - ASE_T("%ld"), (long)idx - #elif ASE_SIZEOF_INT > 0 - ASE_T("%d"), (int)idx + this->run->awk, ri, QSE_COUNTOF(ri), + #if QSE_SIZEOF_LONG_LONG > 0 + QSE_T("%lld"), (long long)idx + #elif QSE_SIZEOF___INT64 > 0 + QSE_T("%I64d"), (__int64)idx + #elif QSE_SIZEOF_LONG > 0 + QSE_T("%ld"), (long)idx + #elif QSE_SIZEOF_INT > 0 + QSE_T("%d"), (int)idx #else #error unsupported size #endif @@ -455,36 +455,36 @@ int Awk::Argument::getIndexed (long_t idx, Argument& val) const if (rl < 0) { - run->setError (ERR_INTERN, 0, ASE_NULL, 0); + run->setError (ERR_INTERN, 0, QSE_NULL, 0); return -1; } // get the value from the map. - ase_awk_val_map_t* m = (ase_awk_val_map_t*)this->val; - pair_t* pair = ase_map_search (m->map, ri, rl); + qse_awk_val_map_t* m = (qse_awk_val_map_t*)this->val; + pair_t* pair = qse_map_search (m->map, ri, rl); // the key is not found. it is not an error. val is just nil - if (pair == ASE_NULL) return 0; + if (pair == QSE_NULL) return 0; // if val.init fails, it should return an error - return val.init ((val_t*)ASE_MAP_VPTR(pair)); + return val.init ((val_t*)QSE_MAP_VPTR(pair)); } int Awk::Argument::getFirstIndex (Awk::Argument& val) const { val.clear (); - if (this->val == ASE_NULL) return -1; - if (ASE_AWK_VAL_TYPE(this->val) != ASE_AWK_VAL_MAP) return -1; + if (this->val == QSE_NULL) return -1; + if (QSE_AWK_VAL_TYPE(this->val) != QSE_AWK_VAL_MAP) return -1; - ase_size_t buckno; - ase_awk_val_map_t* m = (ase_awk_val_map_t*)this->val; - pair_t* pair = ase_map_getfirstpair (m->map, &buckno); - if (pair == ASE_NULL) return 0; // no more key + qse_size_t buckno; + qse_awk_val_map_t* m = (qse_awk_val_map_t*)this->val; + pair_t* pair = qse_map_getfirstpair (m->map, &buckno); + if (pair == QSE_NULL) return 0; // no more key if (val.init ( - (ase_char_t*)ASE_MAP_KPTR(pair), - ASE_MAP_KLEN(pair)) == -1) return -1; + (qse_char_t*)QSE_MAP_KPTR(pair), + QSE_MAP_KLEN(pair)) == -1) return -1; // reuse the string field as an interator. this->str.ptr = (char_t*)pair; @@ -497,20 +497,20 @@ int Awk::Argument::getNextIndex (Awk::Argument& val) const { val.clear (); - if (this->val == ASE_NULL) return -1; - if (ASE_AWK_VAL_TYPE(this->val) != ASE_AWK_VAL_MAP) return -1; + if (this->val == QSE_NULL) return -1; + if (QSE_AWK_VAL_TYPE(this->val) != QSE_AWK_VAL_MAP) return -1; - ase_awk_val_map_t* m = (ase_awk_val_map_t*)this->val; + qse_awk_val_map_t* m = (qse_awk_val_map_t*)this->val; pair_t* pair = (pair_t*)this->str.ptr; - ase_size_t buckno = this->str.len; + qse_size_t buckno = this->str.len; - pair = ase_map_getnextpair (m->map, pair, &buckno); - if (pair == ASE_NULL) return 0; + pair = qse_map_getnextpair (m->map, pair, &buckno); + if (pair == QSE_NULL) return 0; if (val.init ( - (ase_char_t*)ASE_MAP_KPTR(pair), - ASE_MAP_KLEN(pair)) == -1) return -1; + (qse_char_t*)QSE_MAP_KPTR(pair), + QSE_MAP_KLEN(pair)) == -1) return -1; // reuse the string field as an interator. this->str.ptr = (char_t*)pair; @@ -522,11 +522,11 @@ int Awk::Argument::getNextIndex (Awk::Argument& val) const // Awk::Return ////////////////////////////////////////////////////////////////// -Awk::Return::Return (Run& run): run(&run), val(ase_awk_val_nil) +Awk::Return::Return (Run& run): run(&run), val(qse_awk_val_nil) { } -Awk::Return::Return (Run* run): run(run), val(ase_awk_val_nil) +Awk::Return::Return (Run* run): run(run), val(qse_awk_val_nil) { } @@ -547,107 +547,107 @@ Awk::Return::operator Awk::val_t* () const int Awk::Return::set (long_t v) { - ASE_ASSERT (this->run != ASE_NULL); + QSE_ASSERT (this->run != QSE_NULL); - ase_awk_val_t* x = ase_awk_makeintval (this->run->run, v); - if (x == ASE_NULL) return -1; + qse_awk_val_t* x = qse_awk_makeintval (this->run->run, v); + if (x == QSE_NULL) return -1; - ase_awk_refdownval (this->run->run, this->val); + qse_awk_refdownval (this->run->run, this->val); this->val = x; - ase_awk_refupval (this->run->run, this->val); + qse_awk_refupval (this->run->run, this->val); return 0; } int Awk::Return::set (real_t v) { - ASE_ASSERT (this->run != ASE_NULL); + QSE_ASSERT (this->run != QSE_NULL); - ase_awk_val_t* x = ase_awk_makerealval (this->run->run, v); - if (x == ASE_NULL) return -1; + qse_awk_val_t* x = qse_awk_makerealval (this->run->run, v); + if (x == QSE_NULL) return -1; - ase_awk_refdownval (this->run->run, this->val); + qse_awk_refdownval (this->run->run, this->val); this->val = x; - ase_awk_refupval (this->run->run, this->val); + qse_awk_refupval (this->run->run, this->val); return 0; } int Awk::Return::set (const char_t* ptr, size_t len) { - ASE_ASSERT (this->run != ASE_NULL); + QSE_ASSERT (this->run != QSE_NULL); - ase_awk_val_t* x = ase_awk_makestrval (this->run->run, ptr, len); - if (x == ASE_NULL) return -1; + qse_awk_val_t* x = qse_awk_makestrval (this->run->run, ptr, len); + if (x == QSE_NULL) return -1; - ase_awk_refdownval (this->run->run, this->val); + qse_awk_refdownval (this->run->run, this->val); this->val = x; - ase_awk_refupval (this->run->run, this->val); + qse_awk_refupval (this->run->run, this->val); return 0; } bool Awk::Return::isIndexed () const { - if (this->val == ASE_NULL) return false; - return ASE_AWK_VAL_TYPE(this->val) == ASE_AWK_VAL_MAP; + if (this->val == QSE_NULL) return false; + return QSE_AWK_VAL_TYPE(this->val) == QSE_AWK_VAL_MAP; } int Awk::Return::setIndexed (const char_t* idx, size_t iln, long_t v) { - ASE_ASSERT (this->run != ASE_NULL); + QSE_ASSERT (this->run != QSE_NULL); int opt = this->run->awk->getOption(); if ((opt & OPT_MAPTOVAR) == 0) { /* refer to run_return in run.c */ - this->run->setError (ERR_MAPNOTALLOWED, 0, ASE_NULL, 0); + this->run->setError (ERR_MAPNOTALLOWED, 0, QSE_NULL, 0); return -1; } - if (ASE_AWK_VAL_TYPE(this->val) != ASE_AWK_VAL_MAP) + if (QSE_AWK_VAL_TYPE(this->val) != QSE_AWK_VAL_MAP) { - ase_awk_val_t* x = ase_awk_makemapval (this->run->run); - if (x == ASE_NULL) return -1; + qse_awk_val_t* x = qse_awk_makemapval (this->run->run); + if (x == QSE_NULL) return -1; - ase_awk_refupval (this->run->run, x); + qse_awk_refupval (this->run->run, x); - ase_awk_val_t* x2 = ase_awk_makeintval (this->run->run, v); - if (x2 == ASE_NULL) + qse_awk_val_t* x2 = qse_awk_makeintval (this->run->run, v); + if (x2 == QSE_NULL) { - ase_awk_refdownval (this->run->run, x); + qse_awk_refdownval (this->run->run, x); return -1; } - ase_awk_refupval (this->run->run, x2); + qse_awk_refupval (this->run->run, x2); - pair_t* pair = ase_map_upsert ( - ((ase_awk_val_map_t*)x)->map, + pair_t* pair = qse_map_upsert ( + ((qse_awk_val_map_t*)x)->map, (char_t*)idx, iln, x2, 0); - if (pair == ASE_NULL) + if (pair == QSE_NULL) { - ase_awk_refdownval (this->run->run, x2); - ase_awk_refdownval (this->run->run, x); - this->run->setError (ERR_NOMEM, 0, ASE_NULL, 0); + qse_awk_refdownval (this->run->run, x2); + qse_awk_refdownval (this->run->run, x); + this->run->setError (ERR_NOMEM, 0, QSE_NULL, 0); return -1; } - ase_awk_refdownval (this->run->run, this->val); + qse_awk_refdownval (this->run->run, this->val); this->val = x; } else { - ase_awk_val_t* x2 = ase_awk_makeintval (this->run->run, v); - if (x2 == ASE_NULL) return -1; + qse_awk_val_t* x2 = qse_awk_makeintval (this->run->run, v); + if (x2 == QSE_NULL) return -1; - ase_awk_refupval (this->run->run, x2); + qse_awk_refupval (this->run->run, x2); - pair_t* pair = ase_map_upsert ( - ((ase_awk_val_map_t*)this->val)->map, + pair_t* pair = qse_map_upsert ( + ((qse_awk_val_map_t*)this->val)->map, (char_t*)idx, iln, x2, 0); - if (pair == ASE_NULL) + if (pair == QSE_NULL) { - ase_awk_refdownval (this->run->run, x2); - this->run->setError (ERR_NOMEM, 0, ASE_NULL, 0); + qse_awk_refdownval (this->run->run, x2); + this->run->setError (ERR_NOMEM, 0, QSE_NULL, 0); return -1; } } @@ -657,60 +657,60 @@ int Awk::Return::setIndexed (const char_t* idx, size_t iln, long_t v) int Awk::Return::setIndexed (const char_t* idx, size_t iln, real_t v) { - ASE_ASSERT (this->run != ASE_NULL); + QSE_ASSERT (this->run != QSE_NULL); int opt = this->run->awk->getOption(); if ((opt & OPT_MAPTOVAR) == 0) { /* refer to run_return in run.c */ - this->run->setError (ERR_MAPNOTALLOWED, 0, ASE_NULL, 0); + this->run->setError (ERR_MAPNOTALLOWED, 0, QSE_NULL, 0); return -1; } - if (ASE_AWK_VAL_TYPE(this->val) != ASE_AWK_VAL_MAP) + if (QSE_AWK_VAL_TYPE(this->val) != QSE_AWK_VAL_MAP) { - ase_awk_val_t* x = ase_awk_makemapval (this->run->run); - if (x == ASE_NULL) return -1; + qse_awk_val_t* x = qse_awk_makemapval (this->run->run); + if (x == QSE_NULL) return -1; - ase_awk_refupval (this->run->run, x); + qse_awk_refupval (this->run->run, x); - ase_awk_val_t* x2 = ase_awk_makerealval (this->run->run, v); - if (x2 == ASE_NULL) + qse_awk_val_t* x2 = qse_awk_makerealval (this->run->run, v); + if (x2 == QSE_NULL) { - ase_awk_refdownval (this->run->run, x); + qse_awk_refdownval (this->run->run, x); return -1; } - ase_awk_refupval (this->run->run, x2); + qse_awk_refupval (this->run->run, x2); - pair_t* pair = ase_map_upsert ( - ((ase_awk_val_map_t*)x)->map, + pair_t* pair = qse_map_upsert ( + ((qse_awk_val_map_t*)x)->map, (char_t*)idx, iln, x2, 0); - if (pair == ASE_NULL) + if (pair == QSE_NULL) { - ase_awk_refdownval (this->run->run, x2); - ase_awk_refdownval (this->run->run, x); - this->run->setError (ERR_NOMEM, 0, ASE_NULL, 0); + qse_awk_refdownval (this->run->run, x2); + qse_awk_refdownval (this->run->run, x); + this->run->setError (ERR_NOMEM, 0, QSE_NULL, 0); return -1; } - ase_awk_refdownval (this->run->run, this->val); + qse_awk_refdownval (this->run->run, this->val); this->val = x; } else { - ase_awk_val_t* x2 = ase_awk_makerealval (this->run->run, v); - if (x2 == ASE_NULL) return -1; + qse_awk_val_t* x2 = qse_awk_makerealval (this->run->run, v); + if (x2 == QSE_NULL) return -1; - ase_awk_refupval (this->run->run, x2); + qse_awk_refupval (this->run->run, x2); - pair_t* pair = ase_map_upsert ( - ((ase_awk_val_map_t*)this->val)->map, + pair_t* pair = qse_map_upsert ( + ((qse_awk_val_map_t*)this->val)->map, (char_t*)idx, iln, x2, 0); - if (pair == ASE_NULL) + if (pair == QSE_NULL) { - ase_awk_refdownval (this->run->run, x2); - this->run->setError (ERR_NOMEM, 0, ASE_NULL, 0); + qse_awk_refdownval (this->run->run, x2); + this->run->setError (ERR_NOMEM, 0, QSE_NULL, 0); return -1; } } @@ -720,60 +720,60 @@ int Awk::Return::setIndexed (const char_t* idx, size_t iln, real_t v) int Awk::Return::setIndexed (const char_t* idx, size_t iln, const char_t* str, size_t sln) { - ASE_ASSERT (this->run != ASE_NULL); + QSE_ASSERT (this->run != QSE_NULL); int opt = this->run->awk->getOption(); if ((opt & OPT_MAPTOVAR) == 0) { /* refer to run_return in run.c */ - this->run->setError (ERR_MAPNOTALLOWED, 0, ASE_NULL, 0); + this->run->setError (ERR_MAPNOTALLOWED, 0, QSE_NULL, 0); return -1; } - if (ASE_AWK_VAL_TYPE(this->val) != ASE_AWK_VAL_MAP) + if (QSE_AWK_VAL_TYPE(this->val) != QSE_AWK_VAL_MAP) { - ase_awk_val_t* x = ase_awk_makemapval (this->run->run); - if (x == ASE_NULL) return -1; + qse_awk_val_t* x = qse_awk_makemapval (this->run->run); + if (x == QSE_NULL) return -1; - ase_awk_refupval (this->run->run, x); + qse_awk_refupval (this->run->run, x); - ase_awk_val_t* x2 = ase_awk_makestrval (this->run->run, str, sln); - if (x2 == ASE_NULL) + qse_awk_val_t* x2 = qse_awk_makestrval (this->run->run, str, sln); + if (x2 == QSE_NULL) { - ase_awk_refdownval (this->run->run, x); + qse_awk_refdownval (this->run->run, x); return -1; } - ase_awk_refupval (this->run->run, x2); + qse_awk_refupval (this->run->run, x2); - pair_t* pair = ase_map_upsert ( - ((ase_awk_val_map_t*)x)->map, + pair_t* pair = qse_map_upsert ( + ((qse_awk_val_map_t*)x)->map, (char_t*)idx, iln, x2, 0); - if (pair == ASE_NULL) + if (pair == QSE_NULL) { - ase_awk_refdownval (this->run->run, x2); - ase_awk_refdownval (this->run->run, x); - this->run->setError (ERR_NOMEM, 0, ASE_NULL, 0); + qse_awk_refdownval (this->run->run, x2); + qse_awk_refdownval (this->run->run, x); + this->run->setError (ERR_NOMEM, 0, QSE_NULL, 0); return -1; } - ase_awk_refdownval (this->run->run, this->val); + qse_awk_refdownval (this->run->run, this->val); this->val = x; } else { - ase_awk_val_t* x2 = ase_awk_makestrval (this->run->run, str, sln); - if (x2 == ASE_NULL) return -1; + qse_awk_val_t* x2 = qse_awk_makestrval (this->run->run, str, sln); + if (x2 == QSE_NULL) return -1; - ase_awk_refupval (this->run->run, x2); + qse_awk_refupval (this->run->run, x2); - pair_t* pair = ase_map_upsert ( - ((ase_awk_val_map_t*)this->val)->map, + pair_t* pair = qse_map_upsert ( + ((qse_awk_val_map_t*)this->val)->map, (char_t*)idx, iln, x2, 0); - if (pair == ASE_NULL) + if (pair == QSE_NULL) { - ase_awk_refdownval (this->run->run, x2); - this->run->setError (ERR_NOMEM, 0, ASE_NULL, 0); + qse_awk_refdownval (this->run->run, x2); + this->run->setError (ERR_NOMEM, 0, QSE_NULL, 0); return -1; } } @@ -786,15 +786,15 @@ int Awk::Return::setIndexed (long_t idx, long_t v) char_t ri[128]; int rl = Awk::sprintf ( - this->run->awk, ri, ASE_COUNTOF(ri), - #if ASE_SIZEOF_LONG_LONG > 0 - ASE_T("%lld"), (long long)idx - #elif ASE_SIZEOF___INT64 > 0 - ASE_T("%I64d"), (__int64)idx - #elif ASE_SIZEOF_LONG > 0 - ASE_T("%ld"), (long)idx - #elif ASE_SIZEOF_INT > 0 - ASE_T("%d"), (int)idx + this->run->awk, ri, QSE_COUNTOF(ri), + #if QSE_SIZEOF_LONG_LONG > 0 + QSE_T("%lld"), (long long)idx + #elif QSE_SIZEOF___INT64 > 0 + QSE_T("%I64d"), (__int64)idx + #elif QSE_SIZEOF_LONG > 0 + QSE_T("%ld"), (long)idx + #elif QSE_SIZEOF_INT > 0 + QSE_T("%d"), (int)idx #else #error unsupported size #endif @@ -802,7 +802,7 @@ int Awk::Return::setIndexed (long_t idx, long_t v) if (rl < 0) { - this->run->setError (ERR_INTERN, 0, ASE_NULL, 0); + this->run->setError (ERR_INTERN, 0, QSE_NULL, 0); return -1; } @@ -814,15 +814,15 @@ int Awk::Return::setIndexed (long_t idx, real_t v) char_t ri[128]; int rl = Awk::sprintf ( - this->run->awk, ri, ASE_COUNTOF(ri), - #if ASE_SIZEOF_LONG_LONG > 0 - ASE_T("%lld"), (long long)idx - #elif ASE_SIZEOF___INT64 > 0 - ASE_T("%I64d"), (__int64)idx - #elif ASE_SIZEOF_LONG > 0 - ASE_T("%ld"), (long)idx - #elif ASE_SIZEOF_INT > 0 - ASE_T("%d"), (int)idx + this->run->awk, ri, QSE_COUNTOF(ri), + #if QSE_SIZEOF_LONG_LONG > 0 + QSE_T("%lld"), (long long)idx + #elif QSE_SIZEOF___INT64 > 0 + QSE_T("%I64d"), (__int64)idx + #elif QSE_SIZEOF_LONG > 0 + QSE_T("%ld"), (long)idx + #elif QSE_SIZEOF_INT > 0 + QSE_T("%d"), (int)idx #else #error unsupported size #endif @@ -830,7 +830,7 @@ int Awk::Return::setIndexed (long_t idx, real_t v) if (rl < 0) { - this->run->setError (ERR_INTERN, 0, ASE_NULL, 0); + this->run->setError (ERR_INTERN, 0, QSE_NULL, 0); return -1; } @@ -842,15 +842,15 @@ int Awk::Return::setIndexed (long_t idx, const char_t* str, size_t sln) char_t ri[128]; int rl = Awk::sprintf ( - this->run->awk, ri, ASE_COUNTOF(ri), - #if ASE_SIZEOF_LONG_LONG > 0 - ASE_T("%lld"), (long long)idx - #elif ASE_SIZEOF___INT64 > 0 - ASE_T("%I64d"), (__int64)idx - #elif ASE_SIZEOF_LONG > 0 - ASE_T("%ld"), (long)idx - #elif ASE_SIZEOF_INT > 0 - ASE_T("%d"), (int)idx + this->run->awk, ri, QSE_COUNTOF(ri), + #if QSE_SIZEOF_LONG_LONG > 0 + QSE_T("%lld"), (long long)idx + #elif QSE_SIZEOF___INT64 > 0 + QSE_T("%I64d"), (__int64)idx + #elif QSE_SIZEOF_LONG > 0 + QSE_T("%ld"), (long)idx + #elif QSE_SIZEOF_INT > 0 + QSE_T("%d"), (int)idx #else #error unsupported size #endif @@ -858,7 +858,7 @@ int Awk::Return::setIndexed (long_t idx, const char_t* str, size_t sln) if (rl < 0) { - this->run->setError (ERR_INTERN, 0, ASE_NULL, 0); + this->run->setError (ERR_INTERN, 0, QSE_NULL, 0); return -1; } @@ -867,8 +867,8 @@ int Awk::Return::setIndexed (long_t idx, const char_t* str, size_t sln) void Awk::Return::clear () { - ase_awk_refdownval (this->run->run, this->val); - this->val = ase_awk_val_nil; + qse_awk_refdownval (this->run->run, this->val); + this->val = qse_awk_val_nil; } ////////////////////////////////////////////////////////////////// @@ -876,14 +876,14 @@ void Awk::Return::clear () ////////////////////////////////////////////////////////////////// Awk::Run::Run (Awk* awk): - awk (awk), run (ASE_NULL), callbackFailed (false) + awk (awk), run (QSE_NULL), callbackFailed (false) { } Awk::Run::Run (Awk* awk, run_t* run): - awk (awk), run (run), callbackFailed (false), data (ASE_NULL) + awk (awk), run (run), callbackFailed (false), data (QSE_NULL) { - ASE_ASSERT (this->run != ASE_NULL); + QSE_ASSERT (this->run != QSE_NULL); } Awk::Run::~Run () @@ -902,120 +902,120 @@ Awk::Run::operator Awk::run_t* () const void Awk::Run::stop () const { - ASE_ASSERT (this->run != ASE_NULL); - ase_awk_stop (this->run); + QSE_ASSERT (this->run != QSE_NULL); + qse_awk_stop (this->run); } bool Awk::Run::isStop () const { - ASE_ASSERT (this->run != ASE_NULL); - return ase_awk_isstop (this->run)? true: false; + QSE_ASSERT (this->run != QSE_NULL); + return qse_awk_isstop (this->run)? true: false; } Awk::ErrorCode Awk::Run::getErrorCode () const { - ASE_ASSERT (this->run != ASE_NULL); - return (ErrorCode)ase_awk_getrunerrnum (this->run); + QSE_ASSERT (this->run != QSE_NULL); + return (ErrorCode)qse_awk_getrunerrnum (this->run); } Awk::size_t Awk::Run::getErrorLine () const { - ASE_ASSERT (this->run != ASE_NULL); - return ase_awk_getrunerrlin (this->run); + QSE_ASSERT (this->run != QSE_NULL); + return qse_awk_getrunerrlin (this->run); } const Awk::char_t* Awk::Run::getErrorMessage () const { - ASE_ASSERT (this->run != ASE_NULL); - return ase_awk_getrunerrmsg (this->run); + QSE_ASSERT (this->run != QSE_NULL); + return qse_awk_getrunerrmsg (this->run); } void Awk::Run::setError (ErrorCode code) { - ASE_ASSERT (this->run != ASE_NULL); - ase_awk_setrunerror (this->run, code, 0, ASE_NULL, 0); + QSE_ASSERT (this->run != QSE_NULL); + qse_awk_setrunerror (this->run, code, 0, QSE_NULL, 0); } void Awk::Run::setError (ErrorCode code, size_t line) { - ASE_ASSERT (this->run != ASE_NULL); - ase_awk_setrunerror (this->run, code, line, ASE_NULL, 0); + QSE_ASSERT (this->run != QSE_NULL); + qse_awk_setrunerror (this->run, code, line, QSE_NULL, 0); } void Awk::Run::setError (ErrorCode code, size_t line, const char_t* arg) { - ASE_ASSERT (this->run != ASE_NULL); - ase_cstr_t x = { arg, ase_strlen(arg) }; - ase_awk_setrunerror (this->run, code, line, &x, 1); + QSE_ASSERT (this->run != QSE_NULL); + qse_cstr_t x = { arg, qse_strlen(arg) }; + qse_awk_setrunerror (this->run, code, line, &x, 1); } void Awk::Run::setError ( ErrorCode code, size_t line, const char_t* arg, size_t len) { - ASE_ASSERT (this->run != ASE_NULL); - ase_cstr_t x = { arg, len }; - ase_awk_setrunerror (this->run, code, line, &x, 1); + QSE_ASSERT (this->run != QSE_NULL); + qse_cstr_t x = { arg, len }; + qse_awk_setrunerror (this->run, code, line, &x, 1); } void Awk::Run::setErrorWithMessage ( ErrorCode code, size_t line, const char_t* msg) { - ASE_ASSERT (this->run != ASE_NULL); - ase_awk_setrunerrmsg (this->run, code, line, msg); + QSE_ASSERT (this->run != QSE_NULL); + qse_awk_setrunerrmsg (this->run, code, line, msg); } int Awk::Run::setGlobal (int id, long_t v) { - ASE_ASSERT (this->run != ASE_NULL); + QSE_ASSERT (this->run != QSE_NULL); - ase_awk_val_t* tmp = ase_awk_makeintval (run, v); - if (tmp == ASE_NULL) return -1; + qse_awk_val_t* tmp = qse_awk_makeintval (run, v); + if (tmp == QSE_NULL) return -1; - ase_awk_refupval (run, tmp); - int n = ase_awk_setglobal (this->run, id, tmp); - ase_awk_refdownval (run, tmp); + qse_awk_refupval (run, tmp); + int n = qse_awk_setglobal (this->run, id, tmp); + qse_awk_refdownval (run, tmp); return n; } int Awk::Run::setGlobal (int id, real_t v) { - ASE_ASSERT (this->run != ASE_NULL); + QSE_ASSERT (this->run != QSE_NULL); - ase_awk_val_t* tmp = ase_awk_makerealval (run, v); - if (tmp == ASE_NULL) return -1; + qse_awk_val_t* tmp = qse_awk_makerealval (run, v); + if (tmp == QSE_NULL) return -1; - ase_awk_refupval (run, tmp); - int n = ase_awk_setglobal (this->run, id, tmp); - ase_awk_refdownval (run, tmp); + qse_awk_refupval (run, tmp); + int n = qse_awk_setglobal (this->run, id, tmp); + qse_awk_refdownval (run, tmp); return n; } int Awk::Run::setGlobal (int id, const char_t* ptr, size_t len) { - ASE_ASSERT (run != ASE_NULL); + QSE_ASSERT (run != QSE_NULL); - ase_awk_val_t* tmp = ase_awk_makestrval (run, ptr, len); - if (tmp == ASE_NULL) return -1; + qse_awk_val_t* tmp = qse_awk_makestrval (run, ptr, len); + if (tmp == QSE_NULL) return -1; - ase_awk_refupval (run, tmp); - int n = ase_awk_setglobal (this->run, id, tmp); - ase_awk_refdownval (run, tmp); + qse_awk_refupval (run, tmp); + int n = qse_awk_setglobal (this->run, id, tmp); + qse_awk_refdownval (run, tmp); return n; } int Awk::Run::setGlobal (int id, const Return& global) { - ASE_ASSERT (this->run != ASE_NULL); + QSE_ASSERT (this->run != QSE_NULL); - return ase_awk_setglobal (this->run, id, global.toVal()); + return qse_awk_setglobal (this->run, id, global.toVal()); } int Awk::Run::getGlobal (int id, Argument& global) const { - ASE_ASSERT (this->run != ASE_NULL); + QSE_ASSERT (this->run != QSE_NULL); global.clear (); - return global.init (ase_awk_getglobal(this->run,id)); + return global.init (qse_awk_getglobal(this->run,id)); } void Awk::Run::setCustom (void* data) @@ -1032,12 +1032,12 @@ void* Awk::Run::getCustom () const // Awk ////////////////////////////////////////////////////////////////// -Awk::Awk (): awk (ASE_NULL), functionMap (ASE_NULL), +Awk::Awk (): awk (QSE_NULL), functionMap (QSE_NULL), sourceIn (Source::READ), sourceOut (Source::WRITE), errnum (ERR_NOERR), errlin (0), runCallback (false) { - this->errmsg[0] = ASE_T('\0'); + this->errmsg[0] = QSE_T('\0'); mmgr.alloc = allocMem; mmgr.realloc = reallocMem; @@ -1079,25 +1079,25 @@ const Awk::char_t* Awk::getErrorMessage () const void Awk::setError (ErrorCode code) { - setError (code, 0, ASE_NULL, 0); + setError (code, 0, QSE_NULL, 0); } void Awk::setError (ErrorCode code, size_t line) { - setError (code, line, ASE_NULL, 0); + setError (code, line, QSE_NULL, 0); } void Awk::setError (ErrorCode code, size_t line, const char_t* arg) { - setError (code, line, arg, ase_strlen(arg)); + setError (code, line, arg, qse_strlen(arg)); } void Awk::setError (ErrorCode code, size_t line, const char_t* arg, size_t len) { - if (awk != ASE_NULL) + if (awk != QSE_NULL) { - ase_cstr_t x = { arg, len }; - ase_awk_seterror (awk, code, line, &x, 1); + qse_cstr_t x = { arg, len }; + qse_awk_seterror (awk, code, line, &x, 1); retrieveError (); } else @@ -1105,23 +1105,23 @@ void Awk::setError (ErrorCode code, size_t line, const char_t* arg, size_t len) this->errnum = code; this->errlin = line; - const char_t* es = ase_awk_geterrstr (ASE_NULL, code); - ase_strxcpy (this->errmsg, ASE_COUNTOF(this->errmsg), es); + const char_t* es = qse_awk_geterrstr (QSE_NULL, code); + qse_strxcpy (this->errmsg, QSE_COUNTOF(this->errmsg), es); } } void Awk::setErrorWithMessage (ErrorCode code, size_t line, const char_t* msg) { - if (awk != ASE_NULL) + if (awk != QSE_NULL) { - ase_awk_seterrmsg (awk, code, line, msg); + qse_awk_seterrmsg (awk, code, line, msg); retrieveError (); } else { this->errnum = code; this->errlin = line; - ase_strxcpy (this->errmsg, ASE_COUNTOF(this->errmsg), msg); + qse_strxcpy (this->errmsg, QSE_COUNTOF(this->errmsg), msg); } } @@ -1129,12 +1129,12 @@ void Awk::clearError () { this->errnum = ERR_NOERR; this->errlin = 0; - this->errmsg[0] = ASE_T('\0'); + this->errmsg[0] = QSE_T('\0'); } void Awk::retrieveError () { - if (this->awk == ASE_NULL) + if (this->awk == QSE_NULL) { clearError (); } @@ -1143,45 +1143,45 @@ void Awk::retrieveError () int num; const char_t* msg; - ase_awk_geterror (this->awk, &num, &this->errlin, &msg); + qse_awk_geterror (this->awk, &num, &this->errlin, &msg); this->errnum = (ErrorCode)num; - ase_strxcpy (this->errmsg, ASE_COUNTOF(this->errmsg), msg); + qse_strxcpy (this->errmsg, QSE_COUNTOF(this->errmsg), msg); } } int Awk::open () { - ASE_ASSERT (awk == ASE_NULL && functionMap == ASE_NULL); + QSE_ASSERT (awk == QSE_NULL && functionMap == QSE_NULL); - awk = ase_awk_open (&mmgr, 0); - if (awk == ASE_NULL) + awk = qse_awk_open (&mmgr, 0); + if (awk == QSE_NULL) { setError (ERR_NOMEM); return -1; } - ase_awk_setccls (awk, &ccls); - ase_awk_setprmfns (awk, &prmfns); + qse_awk_setccls (awk, &ccls); + qse_awk_setprmfns (awk, &prmfns); - //functionMap = ase_map_open ( - // this, 512, 70, freeFunctionMapValue, ASE_NULL, - // ase_awk_getmmgr(awk)); - functionMap = ase_map_open ( - ase_awk_getmmgr(awk), ASE_SIZEOF(this), 512, 70); - if (functionMap == ASE_NULL) + //functionMap = qse_map_open ( + // this, 512, 70, freeFunctionMapValue, QSE_NULL, + // qse_awk_getmmgr(awk)); + functionMap = qse_map_open ( + qse_awk_getmmgr(awk), QSE_SIZEOF(this), 512, 70); + if (functionMap == QSE_NULL) { - ase_awk_close (awk); - awk = ASE_NULL; + qse_awk_close (awk); + awk = QSE_NULL; setError (ERR_NOMEM); return -1; } - *(Awk**)ASE_MAP_XTN(functionMap) = this; - ase_map_setcopier (functionMap, ASE_MAP_KEY, ASE_MAP_COPIER_INLINE); - ase_map_setfreeer (functionMap, ASE_MAP_VAL, freeFunctionMapValue); - ase_map_setscale (functionMap, ASE_MAP_KEY, ASE_SIZEOF(ase_char_t)); + *(Awk**)QSE_MAP_XTN(functionMap) = this; + qse_map_setcopier (functionMap, QSE_MAP_KEY, QSE_MAP_COPIER_INLINE); + qse_map_setfreeer (functionMap, QSE_MAP_VAL, freeFunctionMapValue); + qse_map_setscale (functionMap, QSE_MAP_KEY, QSE_SIZEOF(qse_char_t)); int opt = OPT_IMPLICIT | @@ -1189,7 +1189,7 @@ int Awk::open () OPT_NEWLINE | OPT_BASEONE | OPT_PABLOCK; - ase_awk_setoption (awk, opt); + qse_awk_setoption (awk, opt); runCallback = false; return 0; @@ -1197,16 +1197,16 @@ int Awk::open () void Awk::close () { - if (functionMap != ASE_NULL) + if (functionMap != QSE_NULL) { - ase_map_close (functionMap); - functionMap = ASE_NULL; + qse_map_close (functionMap); + functionMap = QSE_NULL; } - if (awk != ASE_NULL) + if (awk != QSE_NULL) { - ase_awk_close (awk); - awk = ASE_NULL; + qse_awk_close (awk); + awk = QSE_NULL; } clearError (); @@ -1215,112 +1215,112 @@ void Awk::close () void Awk::setOption (int opt) { - ASE_ASSERT (awk != ASE_NULL); - ase_awk_setoption (awk, opt); + QSE_ASSERT (awk != QSE_NULL); + qse_awk_setoption (awk, opt); } int Awk::getOption () const { - ASE_ASSERT (awk != ASE_NULL); - return ase_awk_getoption (awk); + QSE_ASSERT (awk != QSE_NULL); + return qse_awk_getoption (awk); } void Awk::setMaxDepth (int ids, size_t depth) { - ASE_ASSERT (awk != ASE_NULL); - ase_awk_setmaxdepth (awk, ids, depth); + QSE_ASSERT (awk != QSE_NULL); + qse_awk_setmaxdepth (awk, ids, depth); } Awk::size_t Awk::getMaxDepth (int id) const { - ASE_ASSERT (awk != ASE_NULL); - return ase_awk_getmaxdepth (awk, id); + QSE_ASSERT (awk != QSE_NULL); + return qse_awk_getmaxdepth (awk, id); } const Awk::char_t* Awk::getErrorString (ErrorCode num) const { - ASE_ASSERT (awk != ASE_NULL); - return ase_awk_geterrstr (awk, (int)num); + QSE_ASSERT (awk != QSE_NULL); + return qse_awk_geterrstr (awk, (int)num); } int Awk::setErrorString (ErrorCode num, const char_t* str) { - ASE_ASSERT (awk != ASE_NULL); - return ase_awk_seterrstr (awk, (int)num, str); + QSE_ASSERT (awk != QSE_NULL); + return qse_awk_seterrstr (awk, (int)num, str); } int Awk::getWord ( - const char_t* ow, ase_size_t owl, - const char_t** nw, ase_size_t* nwl) + const char_t* ow, qse_size_t owl, + const char_t** nw, qse_size_t* nwl) { - ASE_ASSERT (awk != ASE_NULL); - return ase_awk_getword (awk, ow, owl, nw, nwl); + QSE_ASSERT (awk != QSE_NULL); + return qse_awk_getword (awk, ow, owl, nw, nwl); } int Awk::setWord (const char_t* ow, const char_t* nw) { - return setWord (ow, ase_strlen(ow), nw, ase_strlen(nw)); + return setWord (ow, qse_strlen(ow), nw, qse_strlen(nw)); } int Awk::setWord ( - const char_t* ow, ase_size_t owl, - const char_t* nw, ase_size_t nwl) + const char_t* ow, qse_size_t owl, + const char_t* nw, qse_size_t nwl) { - ASE_ASSERT (awk != ASE_NULL); - return ase_awk_setword (awk, ow, owl, nw, nwl); + QSE_ASSERT (awk != QSE_NULL); + return qse_awk_setword (awk, ow, owl, nw, nwl); } int Awk::unsetWord (const char_t* ow) { - return unsetWord (ow, ase_strlen(ow)); + return unsetWord (ow, qse_strlen(ow)); } -int Awk::unsetWord (const char_t* ow, ase_size_t owl) +int Awk::unsetWord (const char_t* ow, qse_size_t owl) { - ASE_ASSERT (awk != ASE_NULL); - return ase_awk_setword (awk, ow, owl, ASE_NULL, 0); + QSE_ASSERT (awk != QSE_NULL); + return qse_awk_setword (awk, ow, owl, QSE_NULL, 0); } int Awk::unsetAllWords () { - ASE_ASSERT (awk != ASE_NULL); - return ase_awk_setword (awk, ASE_NULL, 0, ASE_NULL, 0); + QSE_ASSERT (awk != QSE_NULL); + return qse_awk_setword (awk, QSE_NULL, 0, QSE_NULL, 0); } int Awk::parse () { - ASE_ASSERT (awk != ASE_NULL); + QSE_ASSERT (awk != QSE_NULL); - ase_awk_srcios_t srcios; + qse_awk_srcios_t srcios; srcios.in = sourceReader; srcios.out = sourceWriter; srcios.data = this; - int n = ase_awk_parse (awk, &srcios); + int n = qse_awk_parse (awk, &srcios); if (n == -1) retrieveError (); return n; } int Awk::run (const char_t* main, const char_t** args, size_t nargs) { - ASE_ASSERT (awk != ASE_NULL); + QSE_ASSERT (awk != QSE_NULL); size_t i; - ase_awk_runios_t runios; - ase_awk_runcbs_t runcbs; - ase_awk_runarg_t* runarg = ASE_NULL; + qse_awk_runios_t runios; + qse_awk_runcbs_t runcbs; + qse_awk_runarg_t* runarg = QSE_NULL; // make sure that the run field is set in Awk::onRunStart. Run runctx (this); runios.pipe = pipeHandler; - runios.coproc = ASE_NULL; + runios.coproc = QSE_NULL; runios.file = fileHandler; runios.console = consoleHandler; runios.data = this; - ASE_MEMSET (&runcbs, 0, ASE_SIZEOF(runcbs)); + QSE_MEMSET (&runcbs, 0, QSE_SIZEOF(runcbs)); runcbs.on_start = onRunStart; if (runCallback) { @@ -1332,10 +1332,10 @@ int Awk::run (const char_t* main, const char_t** args, size_t nargs) if (nargs > 0) { - runarg = (ase_awk_runarg_t*) ase_awk_alloc ( - awk, ASE_SIZEOF(ase_awk_runarg_t)*(nargs+1)); + runarg = (qse_awk_runarg_t*) qse_awk_alloc ( + awk, QSE_SIZEOF(qse_awk_runarg_t)*(nargs+1)); - if (runarg == ASE_NULL) + if (runarg == QSE_NULL) { setError (ERR_NOMEM); return -1; @@ -1343,28 +1343,28 @@ int Awk::run (const char_t* main, const char_t** args, size_t nargs) for (i = 0; i < nargs; i++) { - runarg[i].len = ase_strlen (args[i]); - runarg[i].ptr = ase_awk_strxdup (awk, args[i], runarg[i].len); - if (runarg[i].ptr == ASE_NULL) + runarg[i].len = qse_strlen (args[i]); + runarg[i].ptr = qse_awk_strxdup (awk, args[i], runarg[i].len); + if (runarg[i].ptr == QSE_NULL) { - while (i > 0) ase_awk_free (awk, runarg[--i].ptr); - ase_awk_free (awk, runarg); + while (i > 0) qse_awk_free (awk, runarg[--i].ptr); + qse_awk_free (awk, runarg); setError (ERR_NOMEM); return -1; } } - runarg[i].ptr = ASE_NULL; + runarg[i].ptr = QSE_NULL; runarg[i].len = 0; } - int n = ase_awk_run (awk, main, &runios, &runcbs, runarg, &runctx); + int n = qse_awk_run (awk, main, &runios, &runcbs, runarg, &runctx); if (n == -1) retrieveError (); - if (runarg != ASE_NULL) + if (runarg != QSE_NULL) { - while (i > 0) ase_awk_free (awk, runarg[--i].ptr); - ase_awk_free (awk, runarg); + while (i > 0) qse_awk_free (awk, runarg[--i].ptr); + qse_awk_free (awk, runarg); } return n; @@ -1372,8 +1372,8 @@ int Awk::run (const char_t* main, const char_t** args, size_t nargs) void Awk::stop () { - ASE_ASSERT (awk != ASE_NULL); - ase_awk_stopall (awk); + QSE_ASSERT (awk != QSE_NULL); + qse_awk_stopall (awk); } int Awk::dispatchFunction (Run* run, const char_t* name, size_t len) @@ -1381,26 +1381,26 @@ int Awk::dispatchFunction (Run* run, const char_t* name, size_t len) pair_t* pair; awk_t* awk = run->awk->awk; - //awk = ase_awk_getrunawk (run); + //awk = qse_awk_getrunawk (run); - pair = ase_map_search (functionMap, name, len); - if (pair == ASE_NULL) + pair = qse_map_search (functionMap, name, len); + if (pair == QSE_NULL) { run->setError (ERR_FNNONE, 0, name, len); return -1; } FunctionHandler handler; - handler = *(FunctionHandler*)ASE_MAP_VPTR(pair); + handler = *(FunctionHandler*)QSE_MAP_VPTR(pair); - size_t i, nargs = ase_awk_getnargs(run->run); + size_t i, nargs = qse_awk_getnargs(run->run); - //Argument* args = ASE_NULL; + //Argument* args = QSE_NULL; //try { args = new Argument [nargs]; } catch (...) {} Argument* args = new(awk) Argument[nargs]; - if (args == ASE_NULL) + if (args == QSE_NULL) { - run->setError (ERR_NOMEM, 0, ASE_NULL, 0); + run->setError (ERR_NOMEM, 0, QSE_NULL, 0); return -1; } @@ -1409,10 +1409,10 @@ int Awk::dispatchFunction (Run* run, const char_t* name, size_t len) args[i].run = run; // dirty late initialization // due to c++ array creation limitation. - val_t* v = ase_awk_getarg (run->run, i); + val_t* v = qse_awk_getarg (run->run, i); if (args[i].init (v) == -1) { - run->setError (ERR_NOMEM, 0, ASE_NULL, 0); + run->setError (ERR_NOMEM, 0, QSE_NULL, 0); delete[] args; return -1; } @@ -1431,23 +1431,23 @@ int Awk::dispatchFunction (Run* run, const char_t* name, size_t len) return -1; } - ase_awk_setretval (run->run, ret); + qse_awk_setretval (run->run, ret); return 0; } int Awk::addGlobal (const char_t* name) { - ASE_ASSERT (awk != ASE_NULL); + QSE_ASSERT (awk != QSE_NULL); - int n = ase_awk_addglobal (awk, name, ase_strlen(name)); + int n = qse_awk_addglobal (awk, name, qse_strlen(name)); if (n == -1) retrieveError (); return n; } int Awk::deleteGlobal (const char_t* name) { - ASE_ASSERT (awk != ASE_NULL); - int n = ase_awk_delglobal (awk, name, ase_strlen(name)); + QSE_ASSERT (awk != QSE_NULL); + int n = qse_awk_delglobal (awk, name, qse_strlen(name)); if (n == -1) retrieveError (); return n; } @@ -1456,37 +1456,37 @@ int Awk::addFunction ( const char_t* name, size_t minArgs, size_t maxArgs, FunctionHandler handler) { - ASE_ASSERT (awk != ASE_NULL); + QSE_ASSERT (awk != QSE_NULL); FunctionHandler* tmp = (FunctionHandler*) - ase_awk_alloc (awk, ASE_SIZEOF(handler)); - if (tmp == ASE_NULL) + qse_awk_alloc (awk, QSE_SIZEOF(handler)); + if (tmp == QSE_NULL) { setError (ERR_NOMEM); return -1; } - //ASE_MEMCPY (tmp, &handler, ASE_SIZEOF(handler)); + //QSE_MEMCPY (tmp, &handler, QSE_SIZEOF(handler)); *tmp = handler; - size_t nameLen = ase_strlen(name); + size_t nameLen = qse_strlen(name); - void* p = ase_awk_addfunc (awk, name, nameLen, - 0, minArgs, maxArgs, ASE_NULL, + void* p = qse_awk_addfunc (awk, name, nameLen, + 0, minArgs, maxArgs, QSE_NULL, functionHandler); - if (p == ASE_NULL) + if (p == QSE_NULL) { - ase_awk_free (awk, tmp); + qse_awk_free (awk, tmp); retrieveError (); return -1; } - pair_t* pair = ase_map_upsert ( + pair_t* pair = qse_map_upsert ( functionMap, (char_t*)name, nameLen, tmp, 0); - if (pair == ASE_NULL) + if (pair == QSE_NULL) { - ase_awk_delfunc (awk, name, nameLen); - ase_awk_free (awk, tmp); + qse_awk_delfunc (awk, name, nameLen); + qse_awk_free (awk, tmp); setError (ERR_NOMEM); return -1; @@ -1497,12 +1497,12 @@ int Awk::addFunction ( int Awk::deleteFunction (const char_t* name) { - ASE_ASSERT (awk != ASE_NULL); + QSE_ASSERT (awk != QSE_NULL); - size_t nameLen = ase_strlen(name); + size_t nameLen = qse_strlen(name); - int n = ase_awk_delfunc (awk, name, nameLen); - if (n == 0) ase_map_delete (functionMap, name, nameLen); + int n = qse_awk_delfunc (awk, name, nameLen); + if (n == 0) qse_map_delete (functionMap, name, nameLen); else retrieveError (); return n; @@ -1546,11 +1546,11 @@ Awk::ssize_t Awk::sourceReader ( switch (cmd) { - case ASE_AWK_IO_OPEN: + case QSE_AWK_IO_OPEN: return awk->openSource (awk->sourceIn); - case ASE_AWK_IO_CLOSE: + case QSE_AWK_IO_CLOSE: return awk->closeSource (awk->sourceIn); - case ASE_AWK_IO_READ: + case QSE_AWK_IO_READ: return awk->readSource (awk->sourceIn, data, count); } @@ -1564,11 +1564,11 @@ Awk::ssize_t Awk::sourceWriter ( switch (cmd) { - case ASE_AWK_IO_OPEN: + case QSE_AWK_IO_OPEN: return awk->openSource (awk->sourceOut); - case ASE_AWK_IO_CLOSE: + case QSE_AWK_IO_CLOSE: return awk->closeSource (awk->sourceOut); - case ASE_AWK_IO_WRITE: + case QSE_AWK_IO_WRITE: return awk->writeSource (awk->sourceOut, data, count); } @@ -1581,26 +1581,26 @@ Awk::ssize_t Awk::pipeHandler ( extio_t* extio = (extio_t*)arg; Awk* awk = (Awk*)extio->data; - ASE_ASSERT ((extio->type & 0xFF) == ASE_AWK_EXTIO_PIPE); + QSE_ASSERT ((extio->type & 0xFF) == QSE_AWK_EXTIO_PIPE); Pipe pipe (extio); switch (cmd) { - case ASE_AWK_IO_OPEN: + case QSE_AWK_IO_OPEN: return awk->openPipe (pipe); - case ASE_AWK_IO_CLOSE: + case QSE_AWK_IO_CLOSE: return awk->closePipe (pipe); - case ASE_AWK_IO_READ: + case QSE_AWK_IO_READ: return awk->readPipe (pipe, data, count); - case ASE_AWK_IO_WRITE: + case QSE_AWK_IO_WRITE: return awk->writePipe (pipe, data, count); - case ASE_AWK_IO_FLUSH: + case QSE_AWK_IO_FLUSH: return awk->flushPipe (pipe); - case ASE_AWK_IO_NEXT: + case QSE_AWK_IO_NEXT: return -1; } @@ -1613,26 +1613,26 @@ Awk::ssize_t Awk::fileHandler ( extio_t* extio = (extio_t*)arg; Awk* awk = (Awk*)extio->data; - ASE_ASSERT ((extio->type & 0xFF) == ASE_AWK_EXTIO_FILE); + QSE_ASSERT ((extio->type & 0xFF) == QSE_AWK_EXTIO_FILE); File file (extio); switch (cmd) { - case ASE_AWK_IO_OPEN: + case QSE_AWK_IO_OPEN: return awk->openFile (file); - case ASE_AWK_IO_CLOSE: + case QSE_AWK_IO_CLOSE: return awk->closeFile (file); - case ASE_AWK_IO_READ: + case QSE_AWK_IO_READ: return awk->readFile (file, data, count); - case ASE_AWK_IO_WRITE: + case QSE_AWK_IO_WRITE: return awk->writeFile (file, data, count); - case ASE_AWK_IO_FLUSH: + case QSE_AWK_IO_FLUSH: return awk->flushFile (file); - case ASE_AWK_IO_NEXT: + case QSE_AWK_IO_NEXT: return -1; } @@ -1645,25 +1645,25 @@ Awk::ssize_t Awk::consoleHandler ( extio_t* extio = (extio_t*)arg; Awk* awk = (Awk*)extio->data; - ASE_ASSERT ((extio->type & 0xFF) == ASE_AWK_EXTIO_CONSOLE); + QSE_ASSERT ((extio->type & 0xFF) == QSE_AWK_EXTIO_CONSOLE); Console console (extio); switch (cmd) { - case ASE_AWK_IO_OPEN: + case QSE_AWK_IO_OPEN: return awk->openConsole (console); - case ASE_AWK_IO_CLOSE: + case QSE_AWK_IO_CLOSE: return awk->closeConsole (console); - case ASE_AWK_IO_READ: + case QSE_AWK_IO_READ: return awk->readConsole (console, data, count); - case ASE_AWK_IO_WRITE: + case QSE_AWK_IO_WRITE: return awk->writeConsole (console, data, count); - case ASE_AWK_IO_FLUSH: + case QSE_AWK_IO_FLUSH: return awk->flushConsole (console); - case ASE_AWK_IO_NEXT: + case QSE_AWK_IO_NEXT: return awk->nextConsole (console); } @@ -1673,7 +1673,7 @@ Awk::ssize_t Awk::consoleHandler ( int Awk::functionHandler ( run_t* run, const char_t* name, size_t len) { - Run* ctx = (Run*) ase_awk_getrundata (run); + Run* ctx = (Run*) qse_awk_getrundata (run); Awk* awk = ctx->awk; return awk->dispatchFunction (ctx, name, len); } @@ -1681,8 +1681,8 @@ int Awk::functionHandler ( void Awk::freeFunctionMapValue (map_t* map, void* dptr, size_t dlen) { //Awk* awk = (Awk*)owner; - Awk* awk = *(Awk**)ASE_MAP_XTN(map); - ase_awk_free (awk->awk, dptr); + Awk* awk = *(Awk**)QSE_MAP_XTN(map); + qse_awk_free (awk->awk, dptr); } void Awk::onRunStart (run_t* run, void* data) @@ -1707,7 +1707,7 @@ void Awk::onRunEnd (run_t* run, int errnum, void* data) if (errnum == ERR_NOERR && r->callbackFailed) { - ase_awk_setrunerrnum (r->run, ERR_NOMEM); + qse_awk_setrunerrnum (r->run, ERR_NOMEM); } r->awk->onRunEnd (*r); @@ -1751,12 +1751,12 @@ void Awk::freeMem (void* data, void* ptr) ((Awk*)data)->freeMem (ptr); } -Awk::bool_t Awk::isType (void* data, cint_t c, ase_ccls_type_t type) +Awk::bool_t Awk::isType (void* data, cint_t c, qse_ccls_type_t type) { return ((Awk*)data)->isType (c, (ccls_type_t)type); } -Awk::cint_t Awk::transCase (void* data, cint_t c, ase_ccls_type_t type) +Awk::cint_t Awk::transCase (void* data, cint_t c, qse_ccls_type_t type) { return ((Awk*)data)->transCase (c, (ccls_type_t)type); } @@ -1777,6 +1777,6 @@ int Awk::sprintf (void* data, char_t* buf, size_t size, } ///////////////////////////////// -ASE_END_NAMESPACE(ASE) +QSE_END_NAMESPACE(ASE) ///////////////////////////////// diff --git a/qse/lib/awk/StdAwk.cpp b/qse/lib/awk/StdAwk.cpp index 9dda9a68..7df3c914 100644 --- a/qse/lib/awk/StdAwk.cpp +++ b/qse/lib/awk/StdAwk.cpp @@ -8,10 +8,10 @@ #define _INCLUDE__STDC_A1_SOURCE #endif -#include -#include -#include -#include +#include +#include +#include +#include #include #include @@ -24,7 +24,7 @@ #endif ///////////////////////////////// -ASE_BEGIN_NAMESPACE(ASE) +QSE_BEGIN_NAMESPACE(ASE) ///////////////////////////////// StdAwk::StdAwk () @@ -46,30 +46,30 @@ int StdAwk::open () int n = Awk::open (); if (n == -1) return n; - ADD_FUNC (ASE_T("sin"), 1, 1, &StdAwk::sin); - ADD_FUNC (ASE_T("cos"), 1, 1, &StdAwk::cos); - ADD_FUNC (ASE_T("tan"), 1, 1, &StdAwk::tan); - ADD_FUNC (ASE_T("atan"), 1, 1, &StdAwk::atan); - ADD_FUNC (ASE_T("atan2"), 2, 2, &StdAwk::atan2); - ADD_FUNC (ASE_T("log"), 1, 1, &StdAwk::log); - ADD_FUNC (ASE_T("exp"), 1, 1, &StdAwk::exp); - ADD_FUNC (ASE_T("sqrt"), 1, 1, &StdAwk::sqrt); - ADD_FUNC (ASE_T("int"), 1, 1, &StdAwk::fnint); - ADD_FUNC (ASE_T("rand"), 0, 0, &StdAwk::rand); - ADD_FUNC (ASE_T("srand"), 0, 1, &StdAwk::srand); - ADD_FUNC (ASE_T("systime"), 0, 0, &StdAwk::systime); - ADD_FUNC (ASE_T("strftime"), 0, 2, &StdAwk::strftime); - ADD_FUNC (ASE_T("strfgmtime"), 0, 2, &StdAwk::strfgmtime); - ADD_FUNC (ASE_T("system"), 1, 1, &StdAwk::system); + ADD_FUNC (QSE_T("sin"), 1, 1, &StdAwk::sin); + ADD_FUNC (QSE_T("cos"), 1, 1, &StdAwk::cos); + ADD_FUNC (QSE_T("tan"), 1, 1, &StdAwk::tan); + ADD_FUNC (QSE_T("atan"), 1, 1, &StdAwk::atan); + ADD_FUNC (QSE_T("atan2"), 2, 2, &StdAwk::atan2); + ADD_FUNC (QSE_T("log"), 1, 1, &StdAwk::log); + ADD_FUNC (QSE_T("exp"), 1, 1, &StdAwk::exp); + ADD_FUNC (QSE_T("sqrt"), 1, 1, &StdAwk::sqrt); + ADD_FUNC (QSE_T("int"), 1, 1, &StdAwk::fnint); + ADD_FUNC (QSE_T("rand"), 0, 0, &StdAwk::rand); + ADD_FUNC (QSE_T("srand"), 0, 1, &StdAwk::srand); + ADD_FUNC (QSE_T("systime"), 0, 0, &StdAwk::systime); + ADD_FUNC (QSE_T("strftime"), 0, 2, &StdAwk::strftime); + ADD_FUNC (QSE_T("strfgmtime"), 0, 2, &StdAwk::strfgmtime); + ADD_FUNC (QSE_T("system"), 1, 1, &StdAwk::system); return 0; } int StdAwk::run (const char_t* main, const char_t** args, size_t nargs) { - ase_ntime_t now; + qse_ntime_t now; - if (ase_gettime(&now) == -1) this->seed = 0; + if (qse_gettime(&now) == -1) this->seed = 0; else this->seed = (unsigned int)now; ::srand (this->seed); @@ -224,9 +224,9 @@ int StdAwk::srand (Run& run, Return& ret, const Argument* args, size_t nargs, if (nargs == 0) { - ase_ntime_t now; + qse_ntime_t now; - if (ase_gettime (&now) == -1) + if (qse_gettime (&now) == -1) this->seed = (unsigned int)now; else this->seed >>= 1; } @@ -249,12 +249,12 @@ int StdAwk::srand (Run& run, Return& ret, const Argument* args, size_t nargs, int StdAwk::systime (Run& run, Return& ret, const Argument* args, size_t nargs, const char_t* name, size_t len) { - ase_ntime_t now; + qse_ntime_t now; - if (ase_gettime(&now) == -1) - return ret.set (ASE_TYPE_MIN(long_t)); + if (qse_gettime(&now) == -1) + return ret.set (QSE_TYPE_MIN(long_t)); else - return ret.set ((long_t)now / ASE_MSEC_IN_SEC); + return ret.set ((long_t)now / QSE_MSEC_IN_SEC); } int StdAwk::strftime (Run& run, Return& ret, const Argument* args, size_t nargs, @@ -263,7 +263,7 @@ int StdAwk::strftime (Run& run, Return& ret, const Argument* args, size_t nargs, const char_t* fmt; size_t fln; - fmt = (nargs < 1)? ASE_T("%c"): args[0].toStr(&fln); + fmt = (nargs < 1)? QSE_T("%c"): args[0].toStr(&fln); time_t t = (nargs < 2)? ::time(NULL): (time_t)args[1].toInt(); char_t buf[128]; @@ -275,10 +275,10 @@ int StdAwk::strftime (Run& run, Return& ret, const Argument* args, size_t nargs, tm = ::localtime_r (&t, &tmb); #endif -#ifdef ASE_CHAR_IS_MCHAR - size_t l = ::strftime (buf, ASE_COUNTOF(buf), fmt, tm); +#ifdef QSE_CHAR_IS_MCHAR + size_t l = ::strftime (buf, QSE_COUNTOF(buf), fmt, tm); #else - size_t l = ::wcsftime (buf, ASE_COUNTOF(buf), fmt, tm); + size_t l = ::wcsftime (buf, QSE_COUNTOF(buf), fmt, tm); #endif return ret.set (buf, l); @@ -290,7 +290,7 @@ int StdAwk::strfgmtime (Run& run, Return& ret, const Argument* args, size_t narg const char_t* fmt; size_t fln; - fmt = (nargs < 1)? ASE_T("%c"): args[0].toStr(&fln); + fmt = (nargs < 1)? QSE_T("%c"): args[0].toStr(&fln); time_t t = (nargs < 2)? ::time(NULL): (time_t)args[1].toInt(); char_t buf[128]; @@ -302,10 +302,10 @@ int StdAwk::strfgmtime (Run& run, Return& ret, const Argument* args, size_t narg tm = ::gmtime_r (&t, &tmb); #endif -#ifdef ASE_CHAR_IS_MCHAR - size_t l = ::strftime (buf, ASE_COUNTOF(buf), fmt, tm); +#ifdef QSE_CHAR_IS_MCHAR + size_t l = ::strftime (buf, QSE_COUNTOF(buf), fmt, tm); #else - size_t l = ::wcsftime (buf, ASE_COUNTOF(buf), fmt, tm); + size_t l = ::wcsftime (buf, QSE_COUNTOF(buf), fmt, tm); #endif return ret.set (buf, l); @@ -319,22 +319,22 @@ int StdAwk::system (Run& run, Return& ret, const Argument* args, size_t nargs, #ifdef _WIN32 return ret.set ((long_t)::_tsystem(ptr)); -#elif defined(ASE_CHAR_IS_MCHAR) +#elif defined(QSE_CHAR_IS_MCHAR) return ret.set ((long_t)::system(ptr)); #else - char* mbs = (char*) ase_awk_alloc (awk, l*5+1); - if (mbs == ASE_NULL) return -1; + char* mbs = (char*) qse_awk_alloc (awk, l*5+1); + if (mbs == QSE_NULL) return -1; ::size_t mbl = ::wcstombs (mbs, ptr, l*5); if (mbl == (::size_t)-1) { - ase_awk_free (awk, mbs); + qse_awk_free (awk, mbs); return -1; } mbs[mbl] = '\0'; int n = ret.set ((long_t)::system(mbs)); - ase_awk_free (awk, mbs); + qse_awk_free (awk, mbs); return n; #endif } @@ -347,10 +347,10 @@ int StdAwk::openPipe (Pipe& io) switch (mode) { case Awk::Pipe::READ: - fp = ase_popen (io.getName(), ASE_T("r")); + fp = qse_popen (io.getName(), QSE_T("r")); break; case Awk::Pipe::WRITE: - fp = ase_popen (io.getName(), ASE_T("w")); + fp = qse_popen (io.getName(), QSE_T("w")); break; } @@ -373,15 +373,15 @@ StdAwk::ssize_t StdAwk::readPipe (Pipe& io, char_t* buf, size_t len) while (n < (ssize_t)len) { - ase_cint_t c = ase_fgetc (fp); - if (c == ASE_CHAR_EOF) + qse_cint_t c = qse_fgetc (fp); + if (c == QSE_CHAR_EOF) { - if (ase_ferror(fp)) n = -1; + if (qse_ferror(fp)) n = -1; break; } buf[n++] = c; - if (c == ASE_T('\n')) break; + if (c == QSE_T('\n')) break; } return n; @@ -394,12 +394,12 @@ StdAwk::ssize_t StdAwk::writePipe (Pipe& io, char_t* buf, size_t len) while (left > 0) { - if (*buf == ASE_T('\0')) + if (*buf == QSE_T('\0')) { - #if defined(ASE_CHAR_IS_WCHAR) && defined(__linux) + #if defined(QSE_CHAR_IS_WCHAR) && defined(__linux) if (fputc ('\0', fp) == EOF) #else - if (ase_fputc (*buf, fp) == ASE_CHAR_EOF) + if (qse_fputc (*buf, fp) == QSE_CHAR_EOF) #endif { return -1; @@ -408,25 +408,25 @@ StdAwk::ssize_t StdAwk::writePipe (Pipe& io, char_t* buf, size_t len) } else { - #if defined(ASE_CHAR_IS_WCHAR) && defined(__linux) + #if defined(QSE_CHAR_IS_WCHAR) && defined(__linux) // fwprintf seems to return an error with the file // pointer opened by popen, as of this writing. // anyway, hopefully the following replacement // will work all the way. - int chunk = (left > ASE_TYPE_MAX(int))? ASE_TYPE_MAX(int): (int)left; + int chunk = (left > QSE_TYPE_MAX(int))? QSE_TYPE_MAX(int): (int)left; int n = fprintf (fp, "%.*ls", chunk, buf); if (n >= 0) { size_t x; for (x = 0; x < chunk; x++) { - if (buf[x] == ASE_T('\0')) break; + if (buf[x] == QSE_T('\0')) break; } n = x; } #else - int chunk = (left > ASE_TYPE_MAX(int))? ASE_TYPE_MAX(int): (int)left; - int n = ase_fprintf (fp, ASE_T("%.*s"), chunk, buf); + int chunk = (left > QSE_TYPE_MAX(int))? QSE_TYPE_MAX(int): (int)left; + int n = qse_fprintf (fp, QSE_T("%.*s"), chunk, buf); #endif if (n < 0 || n > chunk) return -1; @@ -451,13 +451,13 @@ int StdAwk::openFile (File& io) switch (mode) { case Awk::File::READ: - fp = ase_fopen (io.getName(), ASE_T("r")); + fp = qse_fopen (io.getName(), QSE_T("r")); break; case Awk::File::WRITE: - fp = ase_fopen (io.getName(), ASE_T("w")); + fp = qse_fopen (io.getName(), QSE_T("w")); break; case Awk::File::APPEND: - fp = ase_fopen (io.getName(), ASE_T("a")); + fp = qse_fopen (io.getName(), QSE_T("a")); break; } @@ -480,15 +480,15 @@ StdAwk::ssize_t StdAwk::readFile (File& io, char_t* buf, size_t len) while (n < (ssize_t)len) { - ase_cint_t c = ase_fgetc (fp); - if (c == ASE_CHAR_EOF) + qse_cint_t c = qse_fgetc (fp); + if (c == QSE_CHAR_EOF) { - if (ase_ferror(fp)) n = -1; + if (qse_ferror(fp)) n = -1; break; } buf[n++] = c; - if (c == ASE_T('\n')) break; + if (c == QSE_T('\n')) break; } return n; @@ -501,15 +501,15 @@ StdAwk::ssize_t StdAwk::writeFile (File& io, char_t* buf, size_t len) while (left > 0) { - if (*buf == ASE_T('\0')) + if (*buf == QSE_T('\0')) { - if (ase_fputc (*buf, fp) == ASE_CHAR_EOF) return -1; + if (qse_fputc (*buf, fp) == QSE_CHAR_EOF) return -1; left -= 1; buf += 1; } else { - int chunk = (left > ASE_TYPE_MAX(int))? ASE_TYPE_MAX(int): (int)left; - int n = ase_fprintf (fp, ASE_T("%.*s"), chunk, buf); + int chunk = (left > QSE_TYPE_MAX(int))? QSE_TYPE_MAX(int): (int)left; + int n = qse_fprintf (fp, QSE_T("%.*s"), chunk, buf); if (n < 0 || n > chunk) return -1; left -= n; buf += n; } @@ -542,12 +542,12 @@ void StdAwk::freeMem (void* ptr) // character handling primitive Awk::bool_t StdAwk::isType (cint_t c, ccls_type_t type) { - return ase_ccls_is (c, (ase_ccls_type_t)type); + return qse_ccls_is (c, (qse_ccls_type_t)type); } Awk::cint_t StdAwk::transCase (cint_t c, ccls_type_t type) { - return ase_ccls_to (c, (ase_ccls_type_t)type); + return qse_ccls_to (c, (qse_ccls_type_t)type); } // miscellaneous primitive @@ -559,10 +559,10 @@ StdAwk::real_t StdAwk::pow (real_t x, real_t y) int StdAwk::vsprintf ( char_t* buf, size_t size, const char_t* fmt, va_list arg) { - return ase_vsprintf (buf, size, fmt, arg); + return qse_vsprintf (buf, size, fmt, arg); } ///////////////////////////////// -ASE_END_NAMESPACE(ASE) +QSE_END_NAMESPACE(ASE) ///////////////////////////////// diff --git a/qse/lib/awk/aseawk++.bdsproj b/qse/lib/awk/aseawk++.bdsproj deleted file mode 100644 index 76287d1e..00000000 --- a/qse/lib/awk/aseawk++.bdsproj +++ /dev/null @@ -1,265 +0,0 @@ - - - - - - - - - - - - Awk.cpp - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - False - False - 1 - 0 - 0 - 0 - False - False - False - False - False - 1033 - 1252 - - - - - 1.0.0.0 - - - - - - 1.0.0.0 - - - - - - - - - False - - - - - - - False - - False - - True - False - - - - - - - - - - - mkdir $(PROJECTDIR)..\release\lib -mkdir $(PROJECTDIR)..\debug\lib - - - - - diff --git a/qse/lib/awk/aseawk++.dsp b/qse/lib/awk/aseawk++.dsp deleted file mode 100644 index 8b7cd8ae..00000000 --- a/qse/lib/awk/aseawk++.dsp +++ /dev/null @@ -1,122 +0,0 @@ -# Microsoft Developer Studio Project File - Name="aseawk++" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Static Library" 0x0104 - -CFG=aseawk++ - Win32 Release -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "aseawk++.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "aseawk++.mak" CFG="aseawk++ - Win32 Release" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "aseawk++ - Win32 Release" (based on "Win32 (x86) Static Library") -!MESSAGE "aseawk++ - Win32 Debug" (based on "Win32 (x86) Static Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "aseawk++ - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "../release/lib" -# PROP Intermediate_Dir "release/cpp" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -MTL=midl.exe -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_UNICODE" /D "_USRDLL" /Yu"stdafx.h" /FD /c -# ADD CPP /nologo /MT /Za /W3 /GX /O2 /I "..\.." /D "NDEBUG" /D "WIN32" /D "_UNICODE" /FD /c -# SUBTRACT CPP /YX /Yc /Yu -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo - -!ELSEIF "$(CFG)" == "aseawk++ - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "../debug/lib" -# PROP Intermediate_Dir "debug/cpp" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -MTL=midl.exe -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_UNICODE" /D "_USRDLL" /Yu"stdafx.h" /FD /GZ /c -# ADD CPP /nologo /MTd /Za /W3 /Gm /GX /ZI /Od /I "..\.." /D "_DEBUG" /D "WIN32" /D "_UNICODE" /FD /GZ /c -# SUBTRACT CPP /YX /Yc /Yu -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo - -!ENDIF - -# Begin Target - -# Name "aseawk++ - Win32 Release" -# Name "aseawk++ - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=.\Awk.cpp -# End Source File -# Begin Source File - -SOURCE=.\StdAwk.cpp -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# Begin Source File - -SOURCE=.\Awk.hpp -# End Source File -# Begin Source File - -SOURCE=.\StdAwk.hpp -# End Source File -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/qse/lib/awk/aseawk++.vcproj b/qse/lib/awk/aseawk++.vcproj deleted file mode 100644 index 2ba4cb71..00000000 --- a/qse/lib/awk/aseawk++.vcproj +++ /dev/null @@ -1,376 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/qse/lib/awk/aseawk.bdsproj b/qse/lib/awk/aseawk.bdsproj deleted file mode 100644 index e7c6eb07..00000000 --- a/qse/lib/awk/aseawk.bdsproj +++ /dev/null @@ -1,275 +0,0 @@ - - - - - - - - - - - - awk.c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - False - False - 1 - 0 - 0 - 0 - False - False - False - False - False - 1033 - 1252 - - - - - 1.0.0.0 - - - - - - 1.0.0.0 - - - - - - - - - False - - - - - - - False - - False - - True - False - - - - - - - - - - - mkdir $(PROJECTDIR)..\release\lib -mkdir $(PROJECTDIR)..\debug\lib - - - - - diff --git a/qse/lib/awk/aseawk.dsp b/qse/lib/awk/aseawk.dsp deleted file mode 100644 index c9067d5e..00000000 --- a/qse/lib/awk/aseawk.dsp +++ /dev/null @@ -1,186 +0,0 @@ -# Microsoft Developer Studio Project File - Name="aseawk" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Static Library" 0x0104 - -CFG=aseawk - Win32 Release -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "aseawk.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "aseawk.mak" CFG="aseawk - Win32 Release" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "aseawk - Win32 Release" (based on "Win32 (x86) Static Library") -!MESSAGE "aseawk - Win32 Debug" (based on "Win32 (x86) Static Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "aseawk - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "../release/lib" -# PROP Intermediate_Dir "release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -MTL=midl.exe -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_UNICODE" /D "_USRDLL" /Yu"stdafx.h" /FD /c -# ADD CPP /nologo /MT /Za /W3 /GX /O2 /I "..\.." /D "NDEBUG" /D "WIN32" /D "_UNICODE" /FD /c -# SUBTRACT CPP /YX /Yc /Yu -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo - -!ELSEIF "$(CFG)" == "aseawk - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "../debug/lib" -# PROP Intermediate_Dir "debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -MTL=midl.exe -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_UNICODE" /D "_USRDLL" /Yu"stdafx.h" /FD /GZ /c -# ADD CPP /nologo /MTd /Za /W3 /Gm /GX /ZI /Od /I "..\.." /D "_DEBUG" /D "WIN32" /D "_UNICODE" /FD /GZ /c -# SUBTRACT CPP /YX /Yc /Yu -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo - -!ENDIF - -# Begin Target - -# Name "aseawk - Win32 Release" -# Name "aseawk - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=.\awk.c -# End Source File -# Begin Source File - -SOURCE=.\err.c -# End Source File -# Begin Source File - -SOURCE=.\extio.c -# End Source File -# Begin Source File - -SOURCE=.\func.c -# End Source File -# Begin Source File - -SOURCE=.\misc.c -# End Source File -# Begin Source File - -SOURCE=.\parse.c -# End Source File -# Begin Source File - -SOURCE=.\rec.c -# End Source File -# Begin Source File - -SOURCE=.\run.c -# End Source File -# Begin Source File - -SOURCE=.\tab.c -# End Source File -# Begin Source File - -SOURCE=.\tree.c -# End Source File -# Begin Source File - -SOURCE=.\val.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# Begin Source File - -SOURCE=.\awk.h -# End Source File -# Begin Source File - -SOURCE=.\awk_i.h -# End Source File -# Begin Source File - -SOURCE=.\extio.h -# End Source File -# Begin Source File - -SOURCE=.\func.h -# End Source File -# Begin Source File - -SOURCE=.\parse.h -# End Source File -# Begin Source File - -SOURCE=.\run.h -# End Source File -# Begin Source File - -SOURCE=.\tab.h -# End Source File -# Begin Source File - -SOURCE=.\tree.h -# End Source File -# Begin Source File - -SOURCE=.\val.h -# End Source File -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/qse/lib/awk/aseawk.vcproj b/qse/lib/awk/aseawk.vcproj deleted file mode 100644 index 212e1a5e..00000000 --- a/qse/lib/awk/aseawk.vcproj +++ /dev/null @@ -1,800 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/qse/lib/awk/aseawk_jni.dsp b/qse/lib/awk/aseawk_jni.dsp deleted file mode 100644 index 07da40d0..00000000 --- a/qse/lib/awk/aseawk_jni.dsp +++ /dev/null @@ -1,113 +0,0 @@ -# Microsoft Developer Studio Project File - Name="aseawk_jni" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 - -CFG=aseawk_jni - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "aseawk_jni.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "aseawk_jni.mak" CFG="aseawk_jni - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "aseawk_jni - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE "aseawk_jni - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "aseawk_jni - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "../release/lib" -# PROP Intermediate_Dir "release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "JNI_EXPORTS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\.." /I "$(JAVA_HOME)\include" /I "$(JAVA_HOME)\include\win32" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_UNICODE" /D "_USRDLL" /FD /c -# SUBTRACT CPP /YX -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 -# ADD LINK32 asecmn.lib aseawk.lib aseutl.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 /implib:"release/aseawk_jni.lib" /libpath:"$(OutDir)" - -!ELSEIF "$(CFG)" == "aseawk_jni - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "../debug/lib" -# PROP Intermediate_Dir "debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "JNI_EXPORTS" /YX /FD /GZ /c -# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "..\.." /I "$(JAVA_HOME)\include" /I "$(JAVA_HOME)\include\win32" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_UNICODE" /D "_USRDLL" /FD /GZ /c -# SUBTRACT CPP /YX -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept -# ADD LINK32 asecmn.lib aseawk.lib aseutl.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /implib:"debug/aseawk_jni.lib" /pdbtype:sept /libpath:"$(OutDir)" - -!ENDIF - -# Begin Target - -# Name "aseawk_jni - Win32 Release" -# Name "aseawk_jni - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=.\jni.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# Begin Source File - -SOURCE=.\jni.h -# End Source File -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/qse/lib/awk/aseawk_jni.vcproj b/qse/lib/awk/aseawk_jni.vcproj deleted file mode 100644 index 376d4107..00000000 --- a/qse/lib/awk/aseawk_jni.vcproj +++ /dev/null @@ -1,442 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/qse/lib/awk/awk.c b/qse/lib/awk/awk.c index 6dd8312d..8e866326 100644 --- a/qse/lib/awk/awk.c +++ b/qse/lib/awk/awk.c @@ -11,132 +11,132 @@ #include "awk.h" -#define SETERR(awk,code) ase_awk_seterrnum(awk,code) +#define SETERR(awk,code) qse_awk_seterrnum(awk,code) #define SETERRARG(awk,code,line,arg,leng) \ do { \ - ase_cstr_t errarg; \ + qse_cstr_t errarg; \ errarg.len = (leng); \ errarg.ptr = (arg); \ - ase_awk_seterror ((awk), (code), (line), &errarg, 1); \ + qse_awk_seterror ((awk), (code), (line), &errarg, 1); \ } while (0) -static void free_afn (ase_map_t* map, void* vptr, ase_size_t vlen) +static void free_afn (qse_map_t* map, void* vptr, qse_size_t vlen) { - ase_awk_t* awk = *(ase_awk_t**)ASE_MAP_XTN(map); - ase_awk_afn_t* f = (ase_awk_afn_t*)vptr; + qse_awk_t* awk = *(qse_awk_t**)QSE_MAP_XTN(map); + qse_awk_afn_t* f = (qse_awk_afn_t*)vptr; /* f->name doesn't have to be freed */ - /*ASE_AWK_FREE (awk, f->name);*/ + /*QSE_AWK_FREE (awk, f->name);*/ - ase_awk_clrpt (awk, f->body); - ASE_AWK_FREE (awk, f); + qse_awk_clrpt (awk, f->body); + QSE_AWK_FREE (awk, f); } -static void free_bfn (ase_map_t* map, void* vptr, ase_size_t vlen) +static void free_bfn (qse_map_t* map, void* vptr, qse_size_t vlen) { - ase_awk_t* awk = *(ase_awk_t**)ASE_MAP_XTN(map); - ase_awk_bfn_t* f = (ase_awk_bfn_t*)vptr; + qse_awk_t* awk = *(qse_awk_t**)QSE_MAP_XTN(map); + qse_awk_bfn_t* f = (qse_awk_bfn_t*)vptr; - ASE_AWK_FREE (awk, f); + QSE_AWK_FREE (awk, f); } -ase_awk_t* ase_awk_open (ase_mmgr_t* mmgr, ase_size_t ext) +qse_awk_t* qse_awk_open (qse_mmgr_t* mmgr, qse_size_t ext) { - ase_awk_t* awk; + qse_awk_t* awk; - if (mmgr == ASE_NULL) + if (mmgr == QSE_NULL) { - mmgr = ASE_MMGR_GETDFL(); + mmgr = QSE_MMGR_GETDFL(); - ASE_ASSERTX (mmgr != ASE_NULL, - "Set the memory manager with ASE_MMGR_SETDFL()"); + QSE_ASSERTX (mmgr != QSE_NULL, + "Set the memory manager with QSE_MMGR_SETDFL()"); - if (mmgr == ASE_NULL) return ASE_NULL; + if (mmgr == QSE_NULL) return QSE_NULL; } - awk = ASE_MMGR_ALLOC (mmgr, ASE_SIZEOF(ase_awk_t) + ext); - if (awk == ASE_NULL) return ASE_NULL; + awk = QSE_MMGR_ALLOC (mmgr, QSE_SIZEOF(qse_awk_t) + ext); + if (awk == QSE_NULL) return QSE_NULL; - ASE_MEMSET (awk, 0, ASE_SIZEOF(ase_awk_t) + ext); + QSE_MEMSET (awk, 0, QSE_SIZEOF(qse_awk_t) + ext); awk->mmgr = mmgr; - awk->token.name = ase_str_open (mmgr, 0, 128); - if (awk->token.name == ASE_NULL) goto oops; + awk->token.name = qse_str_open (mmgr, 0, 128); + if (awk->token.name == QSE_NULL) goto oops; - awk->wtab = ase_map_open (mmgr, ASE_SIZEOF(awk), 512, 70); - if (awk->wtab == ASE_NULL) goto oops; - *(ase_awk_t**)ASE_MAP_XTN(awk->wtab) = awk; - ase_map_setcopier (awk->wtab, ASE_MAP_KEY, ASE_MAP_COPIER_INLINE); - ase_map_setcopier (awk->wtab, ASE_MAP_VAL, ASE_MAP_COPIER_INLINE); - ase_map_setscale (awk->wtab, ASE_MAP_KEY, ASE_SIZEOF(ase_char_t)); - ase_map_setscale (awk->wtab, ASE_MAP_VAL, ASE_SIZEOF(ase_char_t)); + awk->wtab = qse_map_open (mmgr, QSE_SIZEOF(awk), 512, 70); + if (awk->wtab == QSE_NULL) goto oops; + *(qse_awk_t**)QSE_MAP_XTN(awk->wtab) = awk; + qse_map_setcopier (awk->wtab, QSE_MAP_KEY, QSE_MAP_COPIER_INLINE); + qse_map_setcopier (awk->wtab, QSE_MAP_VAL, QSE_MAP_COPIER_INLINE); + qse_map_setscale (awk->wtab, QSE_MAP_KEY, QSE_SIZEOF(qse_char_t)); + qse_map_setscale (awk->wtab, QSE_MAP_VAL, QSE_SIZEOF(qse_char_t)); - awk->rwtab = ase_map_open (mmgr, ASE_SIZEOF(awk), 512, 70); - if (awk->rwtab == ASE_NULL) goto oops; - *(ase_awk_t**)ASE_MAP_XTN(awk->rwtab) = awk; - ase_map_setcopier (awk->rwtab, ASE_MAP_KEY, ASE_MAP_COPIER_INLINE); - ase_map_setcopier (awk->rwtab, ASE_MAP_VAL, ASE_MAP_COPIER_INLINE); - ase_map_setscale (awk->rwtab, ASE_MAP_KEY, ASE_SIZEOF(ase_char_t)); - ase_map_setscale (awk->rwtab, ASE_MAP_VAL, ASE_SIZEOF(ase_char_t)); + awk->rwtab = qse_map_open (mmgr, QSE_SIZEOF(awk), 512, 70); + if (awk->rwtab == QSE_NULL) goto oops; + *(qse_awk_t**)QSE_MAP_XTN(awk->rwtab) = awk; + qse_map_setcopier (awk->rwtab, QSE_MAP_KEY, QSE_MAP_COPIER_INLINE); + qse_map_setcopier (awk->rwtab, QSE_MAP_VAL, QSE_MAP_COPIER_INLINE); + qse_map_setscale (awk->rwtab, QSE_MAP_KEY, QSE_SIZEOF(qse_char_t)); + qse_map_setscale (awk->rwtab, QSE_MAP_VAL, QSE_SIZEOF(qse_char_t)); /* TODO: initial map size?? */ - awk->tree.afns = ase_map_open (mmgr, ASE_SIZEOF(awk), 512, 70); - if (awk->tree.afns == ASE_NULL) goto oops; - *(ase_awk_t**)ASE_MAP_XTN(awk->tree.afns) = awk; - ase_map_setcopier (awk->tree.afns, ASE_MAP_KEY, ASE_MAP_COPIER_INLINE); - ase_map_setfreeer (awk->tree.afns, ASE_MAP_VAL, free_afn); - ase_map_setscale (awk->tree.afns, ASE_MAP_KEY, ASE_SIZEOF(ase_char_t)); + awk->tree.afns = qse_map_open (mmgr, QSE_SIZEOF(awk), 512, 70); + if (awk->tree.afns == QSE_NULL) goto oops; + *(qse_awk_t**)QSE_MAP_XTN(awk->tree.afns) = awk; + qse_map_setcopier (awk->tree.afns, QSE_MAP_KEY, QSE_MAP_COPIER_INLINE); + qse_map_setfreeer (awk->tree.afns, QSE_MAP_VAL, free_afn); + qse_map_setscale (awk->tree.afns, QSE_MAP_KEY, QSE_SIZEOF(qse_char_t)); - awk->parse.afns = ase_map_open (mmgr, ASE_SIZEOF(awk), 256, 70); - if (awk->parse.afns == ASE_NULL) goto oops; - *(ase_awk_t**)ASE_MAP_XTN(awk->parse.afns) = awk; - ase_map_setcopier (awk->parse.afns, ASE_MAP_KEY, ASE_MAP_COPIER_INLINE); - ase_map_setcopier (awk->parse.afns, ASE_MAP_VAL, ASE_MAP_COPIER_INLINE); - ase_map_setscale (awk->parse.afns, ASE_MAP_KEY, ASE_SIZEOF(ase_char_t)); + awk->parse.afns = qse_map_open (mmgr, QSE_SIZEOF(awk), 256, 70); + if (awk->parse.afns == QSE_NULL) goto oops; + *(qse_awk_t**)QSE_MAP_XTN(awk->parse.afns) = awk; + qse_map_setcopier (awk->parse.afns, QSE_MAP_KEY, QSE_MAP_COPIER_INLINE); + qse_map_setcopier (awk->parse.afns, QSE_MAP_VAL, QSE_MAP_COPIER_INLINE); + qse_map_setscale (awk->parse.afns, QSE_MAP_KEY, QSE_SIZEOF(qse_char_t)); - awk->parse.named = ase_map_open (mmgr, ASE_SIZEOF(awk), 256, 70); - if (awk->parse.named == ASE_NULL) goto oops; - *(ase_awk_t**)ASE_MAP_XTN(awk->parse.named) = awk; - ase_map_setcopier (awk->parse.named, ASE_MAP_KEY, ASE_MAP_COPIER_INLINE); - ase_map_setcopier (awk->parse.named, ASE_MAP_VAL, ASE_MAP_COPIER_INLINE); - ase_map_setscale (awk->parse.named, ASE_MAP_KEY, ASE_SIZEOF(ase_char_t)); + awk->parse.named = qse_map_open (mmgr, QSE_SIZEOF(awk), 256, 70); + if (awk->parse.named == QSE_NULL) goto oops; + *(qse_awk_t**)QSE_MAP_XTN(awk->parse.named) = awk; + qse_map_setcopier (awk->parse.named, QSE_MAP_KEY, QSE_MAP_COPIER_INLINE); + qse_map_setcopier (awk->parse.named, QSE_MAP_VAL, QSE_MAP_COPIER_INLINE); + qse_map_setscale (awk->parse.named, QSE_MAP_KEY, QSE_SIZEOF(qse_char_t)); - awk->parse.globals = ase_lda_open (mmgr, ASE_SIZEOF(awk), 128); - awk->parse.locals = ase_lda_open (mmgr, ASE_SIZEOF(awk), 64); - awk->parse.params = ase_lda_open (mmgr, ASE_SIZEOF(awk), 32); + awk->parse.globals = qse_lda_open (mmgr, QSE_SIZEOF(awk), 128); + awk->parse.locals = qse_lda_open (mmgr, QSE_SIZEOF(awk), 64); + awk->parse.params = qse_lda_open (mmgr, QSE_SIZEOF(awk), 32); - if (awk->parse.globals == ASE_NULL || - awk->parse.locals == ASE_NULL || - awk->parse.params == ASE_NULL) goto oops; + if (awk->parse.globals == QSE_NULL || + awk->parse.locals == QSE_NULL || + awk->parse.params == QSE_NULL) goto oops; - *(ase_awk_t**)ASE_LDA_XTN(awk->parse.globals) = awk; - ase_lda_setcopier (awk->parse.globals, ASE_LDA_COPIER_INLINE); - ase_lda_setscale (awk->parse.globals, ASE_SIZEOF(ase_char_t)); + *(qse_awk_t**)QSE_LDA_XTN(awk->parse.globals) = awk; + qse_lda_setcopier (awk->parse.globals, QSE_LDA_COPIER_INLINE); + qse_lda_setscale (awk->parse.globals, QSE_SIZEOF(qse_char_t)); - *(ase_awk_t**)ASE_LDA_XTN(awk->parse.locals) = awk; - ase_lda_setcopier (awk->parse.locals, ASE_LDA_COPIER_INLINE); - ase_lda_setscale (awk->parse.locals, ASE_SIZEOF(ase_char_t)); + *(qse_awk_t**)QSE_LDA_XTN(awk->parse.locals) = awk; + qse_lda_setcopier (awk->parse.locals, QSE_LDA_COPIER_INLINE); + qse_lda_setscale (awk->parse.locals, QSE_SIZEOF(qse_char_t)); - *(ase_awk_t**)ASE_LDA_XTN(awk->parse.params) = awk; - ase_lda_setcopier (awk->parse.params, ASE_LDA_COPIER_INLINE); - ase_lda_setscale (awk->parse.params, ASE_SIZEOF(ase_char_t)); + *(qse_awk_t**)QSE_LDA_XTN(awk->parse.params) = awk; + qse_lda_setcopier (awk->parse.params, QSE_LDA_COPIER_INLINE); + qse_lda_setscale (awk->parse.params, QSE_SIZEOF(qse_char_t)); awk->option = 0; - awk->errnum = ASE_AWK_ENOERR; + awk->errnum = QSE_AWK_ENOERR; awk->errlin = 0; - awk->stopall = ASE_FALSE; + awk->stopall = QSE_FALSE; awk->parse.nlocals_max = 0; awk->tree.nglobals = 0; awk->tree.nbglobals = 0; - awk->tree.begin = ASE_NULL; - awk->tree.begin_tail = ASE_NULL; - awk->tree.end = ASE_NULL; - awk->tree.end_tail = ASE_NULL; - awk->tree.chain = ASE_NULL; - awk->tree.chain_tail = ASE_NULL; + awk->tree.begin = QSE_NULL; + awk->tree.begin_tail = QSE_NULL; + awk->tree.end = QSE_NULL; + awk->tree.end_tail = QSE_NULL; + awk->tree.chain = QSE_NULL; + awk->tree.chain_tail = QSE_NULL; awk->tree.chain_size = 0; awk->token.prev.type = 0; @@ -146,113 +146,113 @@ ase_awk_t* ase_awk_open (ase_mmgr_t* mmgr, ase_size_t ext) awk->token.line = 0; awk->token.column = 0; - awk->src.lex.curc = ASE_CHAR_EOF; + awk->src.lex.curc = QSE_CHAR_EOF; awk->src.lex.ungotc_count = 0; awk->src.lex.line = 1; awk->src.lex.column = 1; awk->src.shared.buf_pos = 0; awk->src.shared.buf_len = 0; - awk->bfn.sys = ASE_NULL; - awk->bfn.user = ase_map_open (mmgr, ASE_SIZEOF(awk), 512, 70); - if (awk->bfn.user == ASE_NULL) goto oops; - *(ase_awk_t**)ASE_MAP_XTN(awk->bfn.user) = awk; - ase_map_setcopier (awk->bfn.user, ASE_MAP_KEY, ASE_MAP_COPIER_INLINE); - ase_map_setfreeer (awk->bfn.user, ASE_MAP_VAL, free_bfn); - ase_map_setscale (awk->bfn.user, ASE_MAP_KEY, ASE_SIZEOF(ase_char_t)); + awk->bfn.sys = QSE_NULL; + awk->bfn.user = qse_map_open (mmgr, QSE_SIZEOF(awk), 512, 70); + if (awk->bfn.user == QSE_NULL) goto oops; + *(qse_awk_t**)QSE_MAP_XTN(awk->bfn.user) = awk; + qse_map_setcopier (awk->bfn.user, QSE_MAP_KEY, QSE_MAP_COPIER_INLINE); + qse_map_setfreeer (awk->bfn.user, QSE_MAP_VAL, free_bfn); + qse_map_setscale (awk->bfn.user, QSE_MAP_KEY, QSE_SIZEOF(qse_char_t)); awk->parse.depth.cur.block = 0; awk->parse.depth.cur.loop = 0; awk->parse.depth.cur.expr = 0; - ase_awk_setmaxdepth (awk, ASE_AWK_DEPTH_BLOCK_PARSE, 0); - ase_awk_setmaxdepth (awk, ASE_AWK_DEPTH_BLOCK_RUN, 0); - ase_awk_setmaxdepth (awk, ASE_AWK_DEPTH_EXPR_PARSE, 0); - ase_awk_setmaxdepth (awk, ASE_AWK_DEPTH_EXPR_RUN, 0); - ase_awk_setmaxdepth (awk, ASE_AWK_DEPTH_REX_BUILD, 0); - ase_awk_setmaxdepth (awk, ASE_AWK_DEPTH_REX_MATCH, 0); + qse_awk_setmaxdepth (awk, QSE_AWK_DEPTH_BLOCK_PARSE, 0); + qse_awk_setmaxdepth (awk, QSE_AWK_DEPTH_BLOCK_RUN, 0); + qse_awk_setmaxdepth (awk, QSE_AWK_DEPTH_EXPR_PARSE, 0); + qse_awk_setmaxdepth (awk, QSE_AWK_DEPTH_EXPR_RUN, 0); + qse_awk_setmaxdepth (awk, QSE_AWK_DEPTH_REX_BUILD, 0); + qse_awk_setmaxdepth (awk, QSE_AWK_DEPTH_REX_MATCH, 0); - awk->assoc_data = ASE_NULL; + awk->assoc_data = QSE_NULL; - if (ase_awk_initglobals (awk) == -1) goto oops; + if (qse_awk_initglobals (awk) == -1) goto oops; return awk; oops: - if (awk->bfn.user) ase_map_close (awk->bfn.user); - if (awk->parse.params) ase_lda_close (awk->parse.params); - if (awk->parse.locals) ase_lda_close (awk->parse.locals); - if (awk->parse.globals) ase_lda_close (awk->parse.globals); - if (awk->parse.named) ase_map_close (awk->parse.named); - if (awk->parse.afns) ase_map_close (awk->parse.afns); - if (awk->tree.afns) ase_map_close (awk->tree.afns); - if (awk->rwtab) ase_map_close (awk->rwtab); - if (awk->wtab) ase_map_close (awk->wtab); - if (awk->token.name) ase_str_close (awk->token.name); - ASE_AWK_FREE (awk, awk); + if (awk->bfn.user) qse_map_close (awk->bfn.user); + if (awk->parse.params) qse_lda_close (awk->parse.params); + if (awk->parse.locals) qse_lda_close (awk->parse.locals); + if (awk->parse.globals) qse_lda_close (awk->parse.globals); + if (awk->parse.named) qse_map_close (awk->parse.named); + if (awk->parse.afns) qse_map_close (awk->parse.afns); + if (awk->tree.afns) qse_map_close (awk->tree.afns); + if (awk->rwtab) qse_map_close (awk->rwtab); + if (awk->wtab) qse_map_close (awk->wtab); + if (awk->token.name) qse_str_close (awk->token.name); + QSE_AWK_FREE (awk, awk); - return ASE_NULL; + return QSE_NULL; } -int ase_awk_close (ase_awk_t* awk) +int qse_awk_close (qse_awk_t* awk) { - ase_size_t i; + qse_size_t i; - if (ase_awk_clear (awk) == -1) return -1; - /*ase_awk_clrbfn (awk);*/ - ase_map_close (awk->bfn.user); + if (qse_awk_clear (awk) == -1) return -1; + /*qse_awk_clrbfn (awk);*/ + qse_map_close (awk->bfn.user); - ase_lda_close (awk->parse.params); - ase_lda_close (awk->parse.locals); - ase_lda_close (awk->parse.globals); - ase_map_close (awk->parse.named); - ase_map_close (awk->parse.afns); + qse_lda_close (awk->parse.params); + qse_lda_close (awk->parse.locals); + qse_lda_close (awk->parse.globals); + qse_map_close (awk->parse.named); + qse_map_close (awk->parse.afns); - ase_map_close (awk->tree.afns); - ase_map_close (awk->rwtab); - ase_map_close (awk->wtab); + qse_map_close (awk->tree.afns); + qse_map_close (awk->rwtab); + qse_map_close (awk->wtab); - ase_str_close (awk->token.name); + qse_str_close (awk->token.name); - for (i = 0; i < ASE_COUNTOF(awk->errstr); i++) + for (i = 0; i < QSE_COUNTOF(awk->errstr); i++) { - if (awk->errstr[i] != ASE_NULL) + if (awk->errstr[i] != QSE_NULL) { - ASE_AWK_FREE (awk, awk->errstr[i]); - awk->errstr[i] = ASE_NULL; + QSE_AWK_FREE (awk, awk->errstr[i]); + awk->errstr[i] = QSE_NULL; } } - /* ASE_AWK_ALLOC, ASE_AWK_FREE, etc can not be used + /* QSE_AWK_ALLOC, QSE_AWK_FREE, etc can not be used * from the next line onwards */ - ASE_AWK_FREE (awk, awk); + QSE_AWK_FREE (awk, awk); return 0; } -int ase_awk_clear (ase_awk_t* awk) +int qse_awk_clear (qse_awk_t* awk) { - awk->stopall = ASE_FALSE; + awk->stopall = QSE_FALSE; - ASE_MEMSET (&awk->src.ios, 0, ASE_SIZEOF(awk->src.ios)); - awk->src.lex.curc = ASE_CHAR_EOF; + QSE_MEMSET (&awk->src.ios, 0, QSE_SIZEOF(awk->src.ios)); + awk->src.lex.curc = QSE_CHAR_EOF; awk->src.lex.ungotc_count = 0; awk->src.lex.line = 1; awk->src.lex.column = 1; awk->src.shared.buf_pos = 0; awk->src.shared.buf_len = 0; - ASE_ASSERT (ASE_LDA_SIZE(awk->parse.globals) == awk->tree.nglobals); + QSE_ASSERT (QSE_LDA_SIZE(awk->parse.globals) == awk->tree.nglobals); /* delete all non-builtin global variables */ - ase_lda_delete ( + qse_lda_delete ( awk->parse.globals, awk->tree.nbglobals, - ASE_LDA_SIZE(awk->parse.globals) - awk->tree.nbglobals); + QSE_LDA_SIZE(awk->parse.globals) - awk->tree.nbglobals); - ase_lda_clear (awk->parse.locals); - ase_lda_clear (awk->parse.params); - ase_map_clear (awk->parse.named); - ase_map_clear (awk->parse.afns); + qse_lda_clear (awk->parse.locals); + qse_lda_clear (awk->parse.params); + qse_map_clear (awk->parse.named); + qse_map_clear (awk->parse.afns); awk->parse.nlocals_max = 0; awk->parse.depth.cur.block = 0; @@ -265,189 +265,189 @@ int ase_awk_clear (ase_awk_t* awk) awk->tree.nglobals = 0; */ awk->tree.nglobals = awk->tree.nbglobals; - awk->tree.cur_afn.ptr = ASE_NULL; + awk->tree.cur_afn.ptr = QSE_NULL; awk->tree.cur_afn.len = 0; - ase_map_clear (awk->tree.afns); + qse_map_clear (awk->tree.afns); - if (awk->tree.begin != ASE_NULL) + if (awk->tree.begin != QSE_NULL) { - ase_awk_nde_t* next = awk->tree.begin->next; - /*ASE_ASSERT (awk->tree.begin->next == ASE_NULL);*/ - ase_awk_clrpt (awk, awk->tree.begin); - awk->tree.begin = ASE_NULL; - awk->tree.begin_tail = ASE_NULL; + qse_awk_nde_t* next = awk->tree.begin->next; + /*QSE_ASSERT (awk->tree.begin->next == QSE_NULL);*/ + qse_awk_clrpt (awk, awk->tree.begin); + awk->tree.begin = QSE_NULL; + awk->tree.begin_tail = QSE_NULL; } - if (awk->tree.end != ASE_NULL) + if (awk->tree.end != QSE_NULL) { - /*ASE_ASSERT (awk->tree.end->next == ASE_NULL);*/ - ase_awk_clrpt (awk, awk->tree.end); - awk->tree.end = ASE_NULL; - awk->tree.end_tail = ASE_NULL; + /*QSE_ASSERT (awk->tree.end->next == QSE_NULL);*/ + qse_awk_clrpt (awk, awk->tree.end); + awk->tree.end = QSE_NULL; + awk->tree.end_tail = QSE_NULL; } - while (awk->tree.chain != ASE_NULL) + while (awk->tree.chain != QSE_NULL) { - ase_awk_chain_t* next = awk->tree.chain->next; + qse_awk_chain_t* next = awk->tree.chain->next; - if (awk->tree.chain->pattern != ASE_NULL) - ase_awk_clrpt (awk, awk->tree.chain->pattern); - if (awk->tree.chain->action != ASE_NULL) - ase_awk_clrpt (awk, awk->tree.chain->action); - ASE_AWK_FREE (awk, awk->tree.chain); + if (awk->tree.chain->pattern != QSE_NULL) + qse_awk_clrpt (awk, awk->tree.chain->pattern); + if (awk->tree.chain->action != QSE_NULL) + qse_awk_clrpt (awk, awk->tree.chain->action); + QSE_AWK_FREE (awk, awk->tree.chain); awk->tree.chain = next; } - awk->tree.chain_tail = ASE_NULL; + awk->tree.chain_tail = QSE_NULL; awk->tree.chain_size = 0; return 0; } -void* ase_awk_getxtn (ase_awk_t* awk) +void* qse_awk_getxtn (qse_awk_t* awk) { return (void*)(awk + 1); } -ase_mmgr_t* ase_awk_getmmgr (ase_awk_t* awk) +qse_mmgr_t* qse_awk_getmmgr (qse_awk_t* awk) { return awk->mmgr; } -void ase_awk_setmmgr (ase_awk_t* awk, ase_mmgr_t* mmgr) +void qse_awk_setmmgr (qse_awk_t* awk, qse_mmgr_t* mmgr) { awk->mmgr = mmgr; } -ase_ccls_t* ase_awk_getccls (ase_awk_t* awk) +qse_ccls_t* qse_awk_getccls (qse_awk_t* awk) { return awk->ccls; } -void ase_awk_setccls (ase_awk_t* awk, ase_ccls_t* ccls) +void qse_awk_setccls (qse_awk_t* awk, qse_ccls_t* ccls) { - ASE_ASSERT (ccls->is_upper != ASE_NULL); - ASE_ASSERT (ccls->is_lower != ASE_NULL); - ASE_ASSERT (ccls->is_alpha != ASE_NULL); - ASE_ASSERT (ccls->is_digit != ASE_NULL); - ASE_ASSERT (ccls->is_xdigit != ASE_NULL); - ASE_ASSERT (ccls->is_alnum != ASE_NULL); - ASE_ASSERT (ccls->is_space != ASE_NULL); - ASE_ASSERT (ccls->is_print != ASE_NULL); - ASE_ASSERT (ccls->is_graph != ASE_NULL); - ASE_ASSERT (ccls->is_cntrl != ASE_NULL); - ASE_ASSERT (ccls->is_punct != ASE_NULL); - ASE_ASSERT (ccls->to_upper != ASE_NULL); - ASE_ASSERT (ccls->to_lower != ASE_NULL); + QSE_ASSERT (ccls->is_upper != QSE_NULL); + QSE_ASSERT (ccls->is_lower != QSE_NULL); + QSE_ASSERT (ccls->is_alpha != QSE_NULL); + QSE_ASSERT (ccls->is_digit != QSE_NULL); + QSE_ASSERT (ccls->is_xdigit != QSE_NULL); + QSE_ASSERT (ccls->is_alnum != QSE_NULL); + QSE_ASSERT (ccls->is_space != QSE_NULL); + QSE_ASSERT (ccls->is_print != QSE_NULL); + QSE_ASSERT (ccls->is_graph != QSE_NULL); + QSE_ASSERT (ccls->is_cntrl != QSE_NULL); + QSE_ASSERT (ccls->is_punct != QSE_NULL); + QSE_ASSERT (ccls->to_upper != QSE_NULL); + QSE_ASSERT (ccls->to_lower != QSE_NULL); awk->ccls = ccls; } -ase_awk_prmfns_t* ase_awk_getprmfns (ase_awk_t* awk) +qse_awk_prmfns_t* qse_awk_getprmfns (qse_awk_t* awk) { return awk->prmfns; } -void ase_awk_setprmfns (ase_awk_t* awk, ase_awk_prmfns_t* prmfns) +void qse_awk_setprmfns (qse_awk_t* awk, qse_awk_prmfns_t* prmfns) { - ASE_ASSERT (prmfns->pow != ASE_NULL); - ASE_ASSERT (prmfns->sprintf != ASE_NULL); - ASE_ASSERT (prmfns->dprintf != ASE_NULL); + QSE_ASSERT (prmfns->pow != QSE_NULL); + QSE_ASSERT (prmfns->sprintf != QSE_NULL); + QSE_ASSERT (prmfns->dprintf != QSE_NULL); awk->prmfns = prmfns; } -int ase_awk_getoption (ase_awk_t* awk) +int qse_awk_getoption (qse_awk_t* awk) { return awk->option; } -void ase_awk_setoption (ase_awk_t* awk, int opt) +void qse_awk_setoption (qse_awk_t* awk, int opt) { awk->option = opt; } -void ase_awk_stopall (ase_awk_t* awk) +void qse_awk_stopall (qse_awk_t* awk) { - awk->stopall = ASE_TRUE; + awk->stopall = QSE_TRUE; } -int ase_awk_getword (ase_awk_t* awk, - const ase_char_t* okw, ase_size_t olen, - const ase_char_t** nkw, ase_size_t* nlen) +int qse_awk_getword (qse_awk_t* awk, + const qse_char_t* okw, qse_size_t olen, + const qse_char_t** nkw, qse_size_t* nlen) { - ase_map_pair_t* p; + qse_map_pair_t* p; - p = ase_map_search (awk->wtab, okw, olen); - if (p == ASE_NULL) return -1; + p = qse_map_search (awk->wtab, okw, olen); + if (p == QSE_NULL) return -1; - *nkw = ((ase_cstr_t*)p->vptr)->ptr; - *nlen = ((ase_cstr_t*)p->vptr)->len; + *nkw = ((qse_cstr_t*)p->vptr)->ptr; + *nlen = ((qse_cstr_t*)p->vptr)->len; return 0; } -int ase_awk_unsetword (ase_awk_t* awk, const ase_char_t* kw, ase_size_t len) +int qse_awk_unsetword (qse_awk_t* awk, const qse_char_t* kw, qse_size_t len) { - ase_map_pair_t* p; + qse_map_pair_t* p; - p = ase_map_search (awk->wtab, kw, len); - if (p == ASE_NULL) + p = qse_map_search (awk->wtab, kw, len); + if (p == QSE_NULL) { - SETERRARG (awk, ASE_AWK_ENOENT, 0, kw, len); + SETERRARG (awk, QSE_AWK_ENOENT, 0, kw, len); return -1; } - ase_map_delete (awk->rwtab, ASE_MAP_VPTR(p), ASE_MAP_VLEN(p)); - ase_map_delete (awk->wtab, kw, len); + qse_map_delete (awk->rwtab, QSE_MAP_VPTR(p), QSE_MAP_VLEN(p)); + qse_map_delete (awk->wtab, kw, len); return 0; } -void ase_awk_unsetallwords (ase_awk_t* awk) +void qse_awk_unsetallwords (qse_awk_t* awk) { - ase_map_clear (awk->wtab); - ase_map_clear (awk->rwtab); + qse_map_clear (awk->wtab); + qse_map_clear (awk->rwtab); } -int ase_awk_setword (ase_awk_t* awk, - const ase_char_t* okw, ase_size_t olen, - const ase_char_t* nkw, ase_size_t nlen) +int qse_awk_setword (qse_awk_t* awk, + const qse_char_t* okw, qse_size_t olen, + const qse_char_t* nkw, qse_size_t nlen) { - ase_cstr_t* vn, * vo; + qse_cstr_t* vn, * vo; - if (nkw == ASE_NULL || nlen == 0) + if (nkw == QSE_NULL || nlen == 0) { - ase_map_pair_t* p; + qse_map_pair_t* p; - if (okw == ASE_NULL || olen == 0) + if (okw == QSE_NULL || olen == 0) { /* clear the entire table */ - ase_awk_unsetallwords (awk); + qse_awk_unsetallwords (awk); return 0; } - return ase_awk_unsetword (awk, okw, olen); + return qse_awk_unsetword (awk, okw, olen); } - else if (okw == ASE_NULL || olen == 0) + else if (okw == QSE_NULL || olen == 0) { - SETERR (awk, ASE_AWK_EINVAL); + SETERR (awk, QSE_AWK_EINVAL); return -1; } /* set the word */ - if (ase_map_upsert (awk->wtab, - (ase_char_t*)okw, olen, (ase_char_t*)nkw, nlen) == ASE_NULL) + if (qse_map_upsert (awk->wtab, + (qse_char_t*)okw, olen, (qse_char_t*)nkw, nlen) == QSE_NULL) { - SETERR (awk, ASE_AWK_ENOMEM); + SETERR (awk, QSE_AWK_ENOMEM); return -1; } - if (ase_map_upsert (awk->rwtab, - (ase_char_t*)nkw, nlen, (ase_char_t*)okw, olen) == ASE_NULL) + if (qse_map_upsert (awk->rwtab, + (qse_char_t*)nkw, nlen, (qse_char_t*)okw, olen) == QSE_NULL) { - ase_map_delete (awk->wtab, okw, olen); - SETERR (awk, ASE_AWK_ENOMEM); + qse_map_delete (awk->wtab, okw, olen); + SETERR (awk, QSE_AWK_ENOMEM); return -1; } @@ -455,14 +455,14 @@ int ase_awk_setword (ase_awk_t* awk, } /* TODO: XXXX */ -int ase_awk_setrexfns (ase_awk_t* awk, ase_awk_rexfns_t* rexfns) +int qse_awk_setrexfns (qse_awk_t* awk, qse_awk_rexfns_t* rexfns) { - if (rexfns->build == ASE_NULL || - rexfns->match == ASE_NULL || - rexfns->free == ASE_NULL || - rexfns->isempty == ASE_NULL) + if (rexfns->build == QSE_NULL || + rexfns->match == QSE_NULL || + rexfns->free == QSE_NULL || + rexfns->isempty == QSE_NULL) { - SETERR (awk, ASE_AWK_EINVAL); + SETERR (awk, QSE_AWK_EINVAL); return -1; } diff --git a/qse/lib/awk/awk.h b/qse/lib/awk/awk.h index e2acd5f8..73f9e23e 100644 --- a/qse/lib/awk/awk.h +++ b/qse/lib/awk/awk.h @@ -4,20 +4,20 @@ * {License} */ -#ifndef _ASE_LIB_AWK_AWK_H_ -#define _ASE_LIB_AWK_AWK_H_ +#ifndef _QSE_LIB_AWK_AWK_H_ +#define _QSE_LIB_AWK_AWK_H_ #include "../cmn/mem.h" #include "../cmn/chr.h" -#include -#include -#include -#include +#include +#include +#include +#include -typedef struct ase_awk_chain_t ase_awk_chain_t; -typedef struct ase_awk_tree_t ase_awk_tree_t; +typedef struct qse_awk_chain_t qse_awk_chain_t; +typedef struct qse_awk_tree_t qse_awk_tree_t; -#include +#include #include "tree.h" #include "func.h" #include "parse.h" @@ -30,56 +30,56 @@ typedef struct ase_awk_tree_t ase_awk_tree_t; #pragma warning (disable: 4296) #endif -#define ASE_AWK_MAX_GLOBALS 9999 -#define ASE_AWK_MAX_LOCALS 9999 -#define ASE_AWK_MAX_PARAMS 9999 +#define QSE_AWK_MAX_GLOBALS 9999 +#define QSE_AWK_MAX_LOCALS 9999 +#define QSE_AWK_MAX_PARAMS 9999 -#define ASE_AWK_ALLOC(awk,size) ASE_MMGR_ALLOC((awk)->mmgr,size) -#define ASE_AWK_REALLOC(awk,ptr,size) ASE_MMGR_REALLOC((awk)->mmgr,ptr,size) -#define ASE_AWK_FREE(awk,ptr) ASE_MMGR_FREE((awk)->mmgr,ptr) +#define QSE_AWK_ALLOC(awk,size) QSE_MMGR_ALLOC((awk)->mmgr,size) +#define QSE_AWK_REALLOC(awk,ptr,size) QSE_MMGR_REALLOC((awk)->mmgr,ptr,size) +#define QSE_AWK_FREE(awk,ptr) QSE_MMGR_FREE((awk)->mmgr,ptr) -#define ASE_AWK_ISUPPER(awk,c) ASE_CCLS_ISUPPER((awk)->ccls,c) -#define ASE_AWK_ISLOWER(awk,c) ASE_CCLS_ISLOWER((awk)->ccls,c) -#define ASE_AWK_ISALPHA(awk,c) ASE_CCLS_ISALPHA((awk)->ccls,c) -#define ASE_AWK_ISDIGIT(awk,c) ASE_CCLS_ISDIGIT((awk)->ccls,c) -#define ASE_AWK_ISXDIGIT(awk,c) ASE_CCLS_ISXDIGIT((awk)->ccls,c) -#define ASE_AWK_ISALNUM(awk,c) ASE_CCLS_ISALNUM((awk)->ccls,c) -#define ASE_AWK_ISSPACE(awk,c) ASE_CCLS_ISSPACE((awk)->ccls,c) -#define ASE_AWK_ISPRINT(awk,c) ASE_CCLS_ISPRINT((awk)->ccls,c) -#define ASE_AWK_ISGRAPH(awk,c) ASE_CCLS_ISGRAPH((awk)->ccls,c) -#define ASE_AWK_ISCNTRL(awk,c) ASE_CCLS_ISCNTRL((awk)->ccls,c) -#define ASE_AWK_ISPUNCT(awk,c) ASE_CCLS_ISPUNCT((awk)->ccls,c) -#define ASE_AWK_TOUPPER(awk,c) ASE_CCLS_TOUPPER((awk)->ccls,c) -#define ASE_AWK_TOLOWER(awk,c) ASE_CCLS_TOLOWER((awk)->ccls,c) +#define QSE_AWK_ISUPPER(awk,c) QSE_CCLS_ISUPPER((awk)->ccls,c) +#define QSE_AWK_ISLOWER(awk,c) QSE_CCLS_ISLOWER((awk)->ccls,c) +#define QSE_AWK_ISALPHA(awk,c) QSE_CCLS_ISALPHA((awk)->ccls,c) +#define QSE_AWK_ISDIGIT(awk,c) QSE_CCLS_ISDIGIT((awk)->ccls,c) +#define QSE_AWK_ISXDIGIT(awk,c) QSE_CCLS_ISXDIGIT((awk)->ccls,c) +#define QSE_AWK_ISALNUM(awk,c) QSE_CCLS_ISALNUM((awk)->ccls,c) +#define QSE_AWK_ISSPACE(awk,c) QSE_CCLS_ISSPACE((awk)->ccls,c) +#define QSE_AWK_ISPRINT(awk,c) QSE_CCLS_ISPRINT((awk)->ccls,c) +#define QSE_AWK_ISGRAPH(awk,c) QSE_CCLS_ISGRAPH((awk)->ccls,c) +#define QSE_AWK_ISCNTRL(awk,c) QSE_CCLS_ISCNTRL((awk)->ccls,c) +#define QSE_AWK_ISPUNCT(awk,c) QSE_CCLS_ISPUNCT((awk)->ccls,c) +#define QSE_AWK_TOUPPER(awk,c) QSE_CCLS_TOUPPER((awk)->ccls,c) +#define QSE_AWK_TOLOWER(awk,c) QSE_CCLS_TOLOWER((awk)->ccls,c) -#define ASE_AWK_STRDUP(awk,str) (ase_strdup(str,(awk)->mmgr)) -#define ASE_AWK_STRXDUP(awk,str,len) (ase_strxdup(str,len,(awk)->mmgr)) +#define QSE_AWK_STRDUP(awk,str) (qse_strdup(str,(awk)->mmgr)) +#define QSE_AWK_STRXDUP(awk,str,len) (qse_strxdup(str,len,(awk)->mmgr)) -struct ase_awk_tree_t +struct qse_awk_tree_t { - ase_size_t nglobals; /* total number of globals */ - ase_size_t nbglobals; /* number of intrinsic globals */ - ase_cstr_t cur_afn; - ase_map_t* afns; /* awk function map */ + qse_size_t nglobals; /* total number of globals */ + qse_size_t nbglobals; /* number of intrinsic globals */ + qse_cstr_t cur_afn; + qse_map_t* afns; /* awk function map */ - ase_awk_nde_t* begin; - ase_awk_nde_t* begin_tail; + qse_awk_nde_t* begin; + qse_awk_nde_t* begin_tail; - ase_awk_nde_t* end; - ase_awk_nde_t* end_tail; + qse_awk_nde_t* end; + qse_awk_nde_t* end_tail; - ase_awk_chain_t* chain; - ase_awk_chain_t* chain_tail; - ase_size_t chain_size; /* number of nodes in the chain */ + qse_awk_chain_t* chain; + qse_awk_chain_t* chain_tail; + qse_size_t chain_size; /* number of nodes in the chain */ int ok; }; -struct ase_awk_t +struct qse_awk_t { - ase_mmgr_t* mmgr; - ase_ccls_t* ccls; - ase_awk_prmfns_t* prmfns; + qse_mmgr_t* mmgr; + qse_ccls_t* ccls; + qse_awk_prmfns_t* prmfns; void* assoc_data; @@ -87,15 +87,15 @@ struct ase_awk_t int option; /* word table */ - ase_map_t* wtab; + qse_map_t* wtab; /* reverse word table */ - ase_map_t* rwtab; + qse_map_t* rwtab; /* regular expression processing routines */ - ase_awk_rexfns_t* rexfns; + qse_awk_rexfns_t* rexfns; /* parse tree */ - ase_awk_tree_t tree; + qse_awk_tree_t tree; /* temporary information that the parser needs */ struct @@ -111,63 +111,63 @@ struct ase_awk_t { struct { - ase_size_t block; - ase_size_t loop; - ase_size_t expr; /* expression */ + qse_size_t block; + qse_size_t loop; + qse_size_t expr; /* expression */ } cur; struct { - ase_size_t block; - ase_size_t expr; + qse_size_t block; + qse_size_t expr; } max; } depth; /* function calls */ - ase_map_t* afns; + qse_map_t* afns; /* named variables */ - ase_map_t* named; + qse_map_t* named; /* global variables */ - ase_lda_t* globals; + qse_lda_t* globals; /* local variables */ - ase_lda_t* locals; + qse_lda_t* locals; /* parameters to a function */ - ase_lda_t* params; + qse_lda_t* params; /* maximum number of local variables */ - ase_size_t nlocals_max; + qse_size_t nlocals_max; - ase_awk_nde_t* (*parse_block) ( - ase_awk_t*,ase_size_t,ase_bool_t); + qse_awk_nde_t* (*parse_block) ( + qse_awk_t*,qse_size_t,qse_bool_t); } parse; /* source code management */ struct { - ase_awk_srcios_t ios; + qse_awk_srcios_t ios; struct { - ase_cint_t curc; - ase_cint_t ungotc[5]; - ase_size_t ungotc_line[5]; - ase_size_t ungotc_column[5]; - ase_size_t ungotc_count; + qse_cint_t curc; + qse_cint_t ungotc[5]; + qse_size_t ungotc_line[5]; + qse_size_t ungotc_column[5]; + qse_size_t ungotc_count; - ase_size_t line; - ase_size_t column; + qse_size_t line; + qse_size_t column; } lex; struct { - ase_char_t buf[512]; - ase_size_t buf_pos; - ase_size_t buf_len; + qse_char_t buf[512]; + qse_size_t buf_pos; + qse_size_t buf_len; } shared; } src; @@ -177,21 +177,21 @@ struct ase_awk_t struct { int type; - ase_size_t line; - ase_size_t column; + qse_size_t line; + qse_size_t column; } prev; int type; - ase_str_t* name; - ase_size_t line; - ase_size_t column; + qse_str_t* name; + qse_size_t line; + qse_size_t column; } token; /* intrinsic functions */ struct { - ase_awk_bfn_t* sys; - ase_map_t* user; + qse_awk_bfn_t* sys; + qse_map_t* user; } bfn; struct @@ -200,8 +200,8 @@ struct ase_awk_t { struct { - ase_size_t block; - ase_size_t expr; + qse_size_t block; + qse_size_t expr; } max; } depth; } run; @@ -212,79 +212,79 @@ struct ase_awk_t { struct { - ase_size_t build; - ase_size_t match; + qse_size_t build; + qse_size_t match; } max; } depth; } rex; struct { - ase_char_t fmt[1024]; + qse_char_t fmt[1024]; } tmp; /* housekeeping */ int errnum; - ase_size_t errlin; - ase_char_t errmsg[256]; - ase_char_t* errstr[ASE_AWK_NUMERRNUM]; + qse_size_t errlin; + qse_char_t errmsg[256]; + qse_char_t* errstr[QSE_AWK_NUMERRNUM]; - ase_bool_t stopall; + qse_bool_t stopall; }; -struct ase_awk_chain_t +struct qse_awk_chain_t { - ase_awk_nde_t* pattern; - ase_awk_nde_t* action; - ase_awk_chain_t* next; + qse_awk_nde_t* pattern; + qse_awk_nde_t* action; + qse_awk_chain_t* next; }; -struct ase_awk_run_t +struct qse_awk_run_t { int id; - ase_map_t* named; + qse_map_t* named; void** stack; - ase_size_t stack_top; - ase_size_t stack_base; - ase_size_t stack_limit; + qse_size_t stack_top; + qse_size_t stack_base; + qse_size_t stack_limit; int exit_level; - ase_awk_val_ref_t* fcache[128]; - /*ase_awk_val_str_t* scache32[128]; - ase_awk_val_str_t* scache64[128];*/ - ase_size_t fcache_count; - /*ase_size_t scache32_count; - ase_size_t scache64_count;*/ + qse_awk_val_ref_t* fcache[128]; + /*qse_awk_val_str_t* scache32[128]; + qse_awk_val_str_t* scache64[128];*/ + qse_size_t fcache_count; + /*qse_size_t scache32_count; + qse_size_t scache64_count;*/ struct { - ase_awk_val_int_t* ifree; - ase_awk_val_chunk_t* ichunk; - ase_awk_val_real_t* rfree; - ase_awk_val_chunk_t* rchunk; + qse_awk_val_int_t* ifree; + qse_awk_val_chunk_t* ichunk; + qse_awk_val_real_t* rfree; + qse_awk_val_chunk_t* rchunk; } vmgr; - ase_awk_nde_blk_t* active_block; - ase_byte_t* pattern_range_state; + qse_awk_nde_blk_t* active_block; + qse_byte_t* pattern_range_state; struct { - ase_char_t buf[1024]; - ase_size_t buf_pos; - ase_size_t buf_len; - ase_bool_t eof; + qse_char_t buf[1024]; + qse_size_t buf_pos; + qse_size_t buf_len; + qse_bool_t eof; - ase_str_t line; - ase_awk_val_t* d0; /* $0 */ + qse_str_t line; + qse_awk_val_t* d0; /* $0 */ - ase_size_t maxflds; - ase_size_t nflds; /* NF */ + qse_size_t maxflds; + qse_size_t nflds; /* NF */ struct { - ase_char_t* ptr; - ase_size_t len; - ase_awk_val_t* val; /* $1 .. $NF */ + qse_char_t* ptr; + qse_size_t len; + qse_awk_val_t* val; /* $1 .. $NF */ }* flds; } inrec; @@ -295,54 +295,54 @@ struct ase_awk_run_t void* fs; int ignorecase; - ase_long_t nr; - ase_long_t fnr; + qse_long_t nr; + qse_long_t fnr; struct { - ase_char_t* ptr; - ase_size_t len; + qse_char_t* ptr; + qse_size_t len; } convfmt; struct { - ase_char_t* ptr; - ase_size_t len; + qse_char_t* ptr; + qse_size_t len; } ofmt; struct { - ase_char_t* ptr; - ase_size_t len; + qse_char_t* ptr; + qse_size_t len; } ofs; struct { - ase_char_t* ptr; - ase_size_t len; + qse_char_t* ptr; + qse_size_t len; } ors; struct { - ase_char_t* ptr; - ase_size_t len; + qse_char_t* ptr; + qse_size_t len; } subsep; } global; /* extio chain */ struct { - ase_awk_io_t handler[ASE_AWK_EXTIO_NUM]; + qse_awk_io_t handler[QSE_AWK_EXTIO_NUM]; void* data; - ase_awk_extio_t* chain; + qse_awk_extio_t* chain; } extio; struct { - ase_str_t fmt; - ase_str_t out; + qse_str_t fmt; + qse_str_t out; struct { - ase_char_t* ptr; - ase_size_t len; /* length */ - ase_size_t inc; /* increment */ + qse_char_t* ptr; + qse_size_t len; /* length */ + qse_size_t inc; /* increment */ } tmp; } format; @@ -350,33 +350,33 @@ struct ase_awk_run_t { struct { - ase_size_t block; - ase_size_t expr; /* expression */ + qse_size_t block; + qse_size_t expr; /* expression */ } cur; struct { - ase_size_t block; - ase_size_t expr; + qse_size_t block; + qse_size_t expr; } max; } depth; int errnum; - ase_size_t errlin; - ase_char_t errmsg[256]; + qse_size_t errlin; + qse_char_t errmsg[256]; void* data; - ase_awk_t* awk; - ase_awk_runcbs_t* cbs; + qse_awk_t* awk; + qse_awk_runcbs_t* cbs; }; -#define ASE_AWK_FREEREX(awk,code) ase_freerex((awk)->mmgr,code) -#define ASE_AWK_ISEMPTYREX(awk,code) ase_isemptyrex(code) -#define ASE_AWK_BUILDREX(awk,ptn,len,errnum) \ - ase_awk_buildrex(awk,ptn,len,errnum) -#define ASE_AWK_MATCHREX(awk,code,option,str,len,match_ptr,match_len,errnum) \ - ase_awk_matchrex(awk,code,option,str,len,match_ptr,match_len,errnum) +#define QSE_AWK_FREEREX(awk,code) qse_freerex((awk)->mmgr,code) +#define QSE_AWK_ISEMPTYREX(awk,code) qse_isemptyrex(code) +#define QSE_AWK_BUILDREX(awk,ptn,len,errnum) \ + qse_awk_buildrex(awk,ptn,len,errnum) +#define QSE_AWK_MATCHREX(awk,code,option,str,len,match_ptr,match_len,errnum) \ + qse_awk_matchrex(awk,code,option,str,len,match_ptr,match_len,errnum) #endif diff --git a/qse/lib/awk/awk.txt b/qse/lib/awk/awk.txt index 44474c37..78be830b 100644 --- a/qse/lib/awk/awk.txt +++ b/qse/lib/awk/awk.txt @@ -32,12 +32,12 @@ Actions Variables -global variables (enabled when awk->opt & ASE_AWK_OPT_VARDCL) +global variables (enabled when awk->opt & QSE_AWK_OPT_VARDCL) global x; global x, y; -local variables (enabled when awk->opt & ASE_AWK_OPT_VARDCL) +local variables (enabled when awk->opt & QSE_AWK_OPT_VARDCL) local x; local x, y; @@ -47,12 +47,12 @@ function arguments (enabled always) function funca (x, y) -local variables in function declaration (enabled when awk->opt & ASE_AWK_OPT_FUNCLOCAL) +local variables in function declaration (enabled when awk->opt & QSE_AWK_OPT_FUNCLOCAL) function funca (x, y, v1, v2) -variables without any declarations (enabled when awk->opt & ASE_AWK_OPT_NAMEDVAR) +variables without any declarations (enabled when awk->opt & QSE_AWK_OPT_NAMEDVAR) x = 10; // x is put into the global hash table. diff --git a/qse/lib/awk/descrip.mms b/qse/lib/awk/descrip.mms deleted file mode 100644 index d0646b1a..00000000 --- a/qse/lib/awk/descrip.mms +++ /dev/null @@ -1,25 +0,0 @@ -# -# OpenVMS MMS/MMK -# - -objects = awk.obj,err.obj,tree.obj,tab.obj,parse.obj,run.obj,rec.obj,val.obj,func.obj,misc.obj,extio.obj - -CFLAGS = /include="../.." -#CFLAGS = /pointer_size=long /include="../.." -LIBRFLAGS = - -aseawk.olb : $(objects) - $(LIBR)/create $(MMS$TARGET) $(objects) -# $(LIBR)/replace $(LIBRFLAGS) $(MMS$TARGET),$(objects) - -awk.obj depends_on awk.c -err.obj depends_on err.c -tree.obj depends_on tree.c -tab.obj depends_on tab.c -parse.obj depends_on parse.c -run.obj depends_on run.c -rec.obj depends_on rec.c -val.obj depends_on val.c -func.obj depends_on func.c -misc.obj depends_on misc.c -extio.obj depends_on extio.c diff --git a/qse/lib/awk/err.c b/qse/lib/awk/err.c index 7cdbd28a..d44e5d87 100644 --- a/qse/lib/awk/err.c +++ b/qse/lib/awk/err.c @@ -6,246 +6,246 @@ #include "awk.h" -static const ase_char_t* __geterrstr (int errnum) +static const qse_char_t* __geterrstr (int errnum) { - static const ase_char_t* errstr[] = + static const qse_char_t* errstr[] = { - ASE_T("no error"), - ASE_T("custom error"), + QSE_T("no error"), + QSE_T("custom error"), - ASE_T("invalid parameter or data"), - ASE_T("out of memory"), - ASE_T("not supported"), - ASE_T("operation not allowed"), - ASE_T("no such device"), - ASE_T("no space left on device"), - ASE_T("too many open files"), - ASE_T("too many links"), - ASE_T("resource temporarily unavailable"), - ASE_T("'%.*s' not existing"), - ASE_T("'%.*s' already exists"), - ASE_T("file or data too big"), - ASE_T("system too busy"), - ASE_T("is a directory"), - ASE_T("i/o error"), + QSE_T("invalid parameter or data"), + QSE_T("out of memory"), + QSE_T("not supported"), + QSE_T("operation not allowed"), + QSE_T("no such device"), + QSE_T("no space left on device"), + QSE_T("too many open files"), + QSE_T("too many links"), + QSE_T("resource temporarily unavailable"), + QSE_T("'%.*s' not existing"), + QSE_T("'%.*s' already exists"), + QSE_T("file or data too big"), + QSE_T("system too busy"), + QSE_T("is a directory"), + QSE_T("i/o error"), - ASE_T("cannot open '%.*s'"), - ASE_T("cannot read '%.*s'"), - ASE_T("cannot write '%.*s'"), - ASE_T("cannot close '%.*s'"), + QSE_T("cannot open '%.*s'"), + QSE_T("cannot read '%.*s'"), + QSE_T("cannot write '%.*s'"), + QSE_T("cannot close '%.*s'"), - ASE_T("internal error that should never have happened"), - ASE_T("general run-time error"), - ASE_T("block nested too deeply"), - ASE_T("expressio nested too deeply"), + QSE_T("internal error that should never have happened"), + QSE_T("general run-time error"), + QSE_T("block nested too deeply"), + QSE_T("expressio nested too deeply"), - ASE_T("cannot open source input"), - ASE_T("cannot close source input"), - ASE_T("cannot read source input"), + QSE_T("cannot open source input"), + QSE_T("cannot close source input"), + QSE_T("cannot read source input"), - ASE_T("cannot open source output"), - ASE_T("cannot close source output"), - ASE_T("cannot write source output"), + QSE_T("cannot open source output"), + QSE_T("cannot close source output"), + QSE_T("cannot write source output"), - ASE_T("invalid character '%.*s'"), - ASE_T("invalid digit '%.*s'"), - ASE_T("cannot unget character"), + QSE_T("invalid character '%.*s'"), + QSE_T("invalid digit '%.*s'"), + QSE_T("cannot unget character"), - ASE_T("unexpected end of source"), - ASE_T("a comment not closed properly"), - ASE_T("a string not closed with a quote"), - ASE_T("unexpected end of a regular expression"), - ASE_T("a left brace expected in place of '%.*s'"), - ASE_T("a left parenthesis expected in place of '%.*s'"), - ASE_T("a right parenthesis expected in place of '%.*s'"), - ASE_T("a right bracket expected in place of '%.*s'"), - ASE_T("a comma expected in place of '%.*s'"), - ASE_T("a semicolon expected in place of '%.*s'"), - ASE_T("a colon expected in place of '%.*s'"), - ASE_T("statement not ending with a semicolon"), - ASE_T("'in' expected in place of '%.*s'"), - ASE_T("right-hand side of the 'in' operator not a variable"), - ASE_T("invalid expression"), + QSE_T("unexpected end of source"), + QSE_T("a comment not closed properly"), + QSE_T("a string not closed with a quote"), + QSE_T("unexpected end of a regular expression"), + QSE_T("a left brace expected in place of '%.*s'"), + QSE_T("a left parenthesis expected in place of '%.*s'"), + QSE_T("a right parenthesis expected in place of '%.*s'"), + QSE_T("a right bracket expected in place of '%.*s'"), + QSE_T("a comma expected in place of '%.*s'"), + QSE_T("a semicolon expected in place of '%.*s'"), + QSE_T("a colon expected in place of '%.*s'"), + QSE_T("statement not ending with a semicolon"), + QSE_T("'in' expected in place of '%.*s'"), + QSE_T("right-hand side of the 'in' operator not a variable"), + QSE_T("invalid expression"), - ASE_T("keyword 'function' expected in place of '%.*s'"), - ASE_T("keyword 'while' expected in place of '%.*s'"), - ASE_T("invalid assignment statement"), - ASE_T("an identifier expected in place of '%.*s'"), - ASE_T("'%.*s' not a valid function name"), - ASE_T("BEGIN not followed by a left bracket on the same line"), - ASE_T("END not followed by a left bracket on the same line"), - ASE_T("duplicate BEGIN"), - ASE_T("duplicate END"), - ASE_T("intrinsic function '%.*s' redefined"), - ASE_T("function '%.*s' redefined"), - ASE_T("global variable '%.*s' redefined"), - ASE_T("parameter '%.*s' redefined"), - ASE_T("variable '%.*s' redefined"), - ASE_T("duplicate parameter name '%.*s'"), - ASE_T("duplicate global variable '%.*s'"), - ASE_T("duplicate local variable '%.*s'"), - ASE_T("'%.*s' not a valid parameter name"), - ASE_T("'%.*s' not a valid variable name"), - ASE_T("undefined identifier '%.*s'"), - ASE_T("l-value required"), - ASE_T("too many global variables"), - ASE_T("too many local variables"), - ASE_T("too many parameters"), - ASE_T("delete statement not followed by a normal variable"), - ASE_T("reset statement not followed by a normal variable"), - ASE_T("break statement outside a loop"), - ASE_T("continue statement outside a loop"), - ASE_T("next statement illegal in the BEGIN block"), - ASE_T("next statement illegal in the END block"), - ASE_T("nextfile statement illegal in the BEGIN block"), - ASE_T("nextfile statement illegal in the END block"), - ASE_T("printf not followed by any arguments"), - ASE_T("both prefix and postfix increment/decrement operator present"), - ASE_T("coprocess not supported by getline"), + QSE_T("keyword 'function' expected in place of '%.*s'"), + QSE_T("keyword 'while' expected in place of '%.*s'"), + QSE_T("invalid assignment statement"), + QSE_T("an identifier expected in place of '%.*s'"), + QSE_T("'%.*s' not a valid function name"), + QSE_T("BEGIN not followed by a left bracket on the same line"), + QSE_T("END not followed by a left bracket on the same line"), + QSE_T("duplicate BEGIN"), + QSE_T("duplicate END"), + QSE_T("intrinsic function '%.*s' redefined"), + QSE_T("function '%.*s' redefined"), + QSE_T("global variable '%.*s' redefined"), + QSE_T("parameter '%.*s' redefined"), + QSE_T("variable '%.*s' redefined"), + QSE_T("duplicate parameter name '%.*s'"), + QSE_T("duplicate global variable '%.*s'"), + QSE_T("duplicate local variable '%.*s'"), + QSE_T("'%.*s' not a valid parameter name"), + QSE_T("'%.*s' not a valid variable name"), + QSE_T("undefined identifier '%.*s'"), + QSE_T("l-value required"), + QSE_T("too many global variables"), + QSE_T("too many local variables"), + QSE_T("too many parameters"), + QSE_T("delete statement not followed by a normal variable"), + QSE_T("reset statement not followed by a normal variable"), + QSE_T("break statement outside a loop"), + QSE_T("continue statement outside a loop"), + QSE_T("next statement illegal in the BEGIN block"), + QSE_T("next statement illegal in the END block"), + QSE_T("nextfile statement illegal in the BEGIN block"), + QSE_T("nextfile statement illegal in the END block"), + QSE_T("printf not followed by any arguments"), + QSE_T("both prefix and postfix increment/decrement operator present"), + QSE_T("coprocess not supported by getline"), - ASE_T("divide by zero"), - ASE_T("invalid operand"), - ASE_T("wrong position index"), - ASE_T("too few arguments"), - ASE_T("too many arguments"), - ASE_T("function '%.*s' not found"), - ASE_T("variable not indexable"), - ASE_T("variable '%.*s' not deletable"), - ASE_T("value not a map"), - ASE_T("right-hand side of the 'in' operator not a map"), - ASE_T("right-hand side of the 'in' operator not a map nor nil"), - ASE_T("value not referenceable"), - ASE_T("value not assignable"), - ASE_T("an indexed value cannot be assigned a map"), - ASE_T("a positional value cannot be assigned a map"), - ASE_T("map '%.*s' not assignable with a scalar"), - ASE_T("cannot change a scalar value to a map"), - ASE_T("a map is not allowed"), - ASE_T("invalid value type"), - ASE_T("delete statement called with a wrong target"), - ASE_T("reset statement called with a wrong target"), - ASE_T("next statement called from the BEGIN block"), - ASE_T("next statement called from the END block"), - ASE_T("nextfile statement called from the BEGIN block"), - ASE_T("nextfile statement called from the END block"), - ASE_T("wrong implementation of intrinsic function handler"), - ASE_T("intrinsic function handler returned an error"), - ASE_T("wrong implementation of user-defined io handler"), - ASE_T("no such io name found"), - ASE_T("i/o handler returned an error"), - ASE_T("i/o name empty"), - ASE_T("i/o name containing a null character"), - ASE_T("not sufficient arguments to formatting sequence"), - ASE_T("recursion detected in format conversion"), - ASE_T("invalid character in CONVFMT"), - ASE_T("invalid character in OFMT"), + QSE_T("divide by zero"), + QSE_T("invalid operand"), + QSE_T("wrong position index"), + QSE_T("too few arguments"), + QSE_T("too many arguments"), + QSE_T("function '%.*s' not found"), + QSE_T("variable not indexable"), + QSE_T("variable '%.*s' not deletable"), + QSE_T("value not a map"), + QSE_T("right-hand side of the 'in' operator not a map"), + QSE_T("right-hand side of the 'in' operator not a map nor nil"), + QSE_T("value not referenceable"), + QSE_T("value not assignable"), + QSE_T("an indexed value cannot be assigned a map"), + QSE_T("a positional value cannot be assigned a map"), + QSE_T("map '%.*s' not assignable with a scalar"), + QSE_T("cannot change a scalar value to a map"), + QSE_T("a map is not allowed"), + QSE_T("invalid value type"), + QSE_T("delete statement called with a wrong target"), + QSE_T("reset statement called with a wrong target"), + QSE_T("next statement called from the BEGIN block"), + QSE_T("next statement called from the END block"), + QSE_T("nextfile statement called from the BEGIN block"), + QSE_T("nextfile statement called from the END block"), + QSE_T("wrong implementation of intrinsic function handler"), + QSE_T("intrinsic function handler returned an error"), + QSE_T("wrong implementation of user-defined io handler"), + QSE_T("no such io name found"), + QSE_T("i/o handler returned an error"), + QSE_T("i/o name empty"), + QSE_T("i/o name containing a null character"), + QSE_T("not sufficient arguments to formatting sequence"), + QSE_T("recursion detected in format conversion"), + QSE_T("invalid character in CONVFMT"), + QSE_T("invalid character in OFMT"), - ASE_T("recursion too deep in the regular expression"), - ASE_T("a right parenthesis expected in the regular expression"), - ASE_T("a right bracket expected in the regular expression"), - ASE_T("a right brace expected in the regular expression"), - ASE_T("unbalanced parenthesis in the regular expression"), - ASE_T("a colon expected in the regular expression"), - ASE_T("invalid character range in the regular expression"), - ASE_T("invalid character class in the regular expression"), - ASE_T("invalid boundary range in the regular expression"), - ASE_T("unexpected end of the regular expression"), - ASE_T("garbage after the regular expression") + QSE_T("recursion too deep in the regular expression"), + QSE_T("a right parenthesis expected in the regular expression"), + QSE_T("a right bracket expected in the regular expression"), + QSE_T("a right brace expected in the regular expression"), + QSE_T("unbalanced parenthesis in the regular expression"), + QSE_T("a colon expected in the regular expression"), + QSE_T("invalid character range in the regular expression"), + QSE_T("invalid character class in the regular expression"), + QSE_T("invalid boundary range in the regular expression"), + QSE_T("unexpected end of the regular expression"), + QSE_T("garbage after the regular expression") }; - if (errnum >= 0 && errnum < ASE_COUNTOF(errstr)) + if (errnum >= 0 && errnum < QSE_COUNTOF(errstr)) { return errstr[errnum]; } - return ASE_T("unknown error"); + return QSE_T("unknown error"); } -const ase_char_t* ase_awk_geterrstr (ase_awk_t* awk, int num) +const qse_char_t* qse_awk_geterrstr (qse_awk_t* awk, int num) { - if (awk != ASE_NULL && - awk->errstr[num] != ASE_NULL) return awk->errstr[num]; + if (awk != QSE_NULL && + awk->errstr[num] != QSE_NULL) return awk->errstr[num]; return __geterrstr (num); } -int ase_awk_seterrstr (ase_awk_t* awk, int num, const ase_char_t* str) +int qse_awk_seterrstr (qse_awk_t* awk, int num, const qse_char_t* str) { - ase_char_t* dup; + qse_char_t* dup; - if (str == ASE_NULL) dup = ASE_NULL; + if (str == QSE_NULL) dup = QSE_NULL; else { - dup = ASE_AWK_STRDUP (awk, str); - if (dup == ASE_NULL) return -1; + dup = QSE_AWK_STRDUP (awk, str); + if (dup == QSE_NULL) return -1; } - if (awk->errstr[num] != ASE_NULL) - ASE_AWK_FREE (awk, awk->errstr[num]); + if (awk->errstr[num] != QSE_NULL) + QSE_AWK_FREE (awk, awk->errstr[num]); else awk->errstr[num] = dup; return 0; } -int ase_awk_geterrnum (ase_awk_t* awk) +int qse_awk_geterrnum (qse_awk_t* awk) { return awk->errnum; } -ase_size_t ase_awk_geterrlin (ase_awk_t* awk) +qse_size_t qse_awk_geterrlin (qse_awk_t* awk) { return awk->errlin; } -const ase_char_t* ase_awk_geterrmsg (ase_awk_t* awk) +const qse_char_t* qse_awk_geterrmsg (qse_awk_t* awk) { - if (awk->errmsg[0] == ASE_T('\0')) - return ase_awk_geterrstr (awk, awk->errnum); + if (awk->errmsg[0] == QSE_T('\0')) + return qse_awk_geterrstr (awk, awk->errnum); return awk->errmsg; } -void ase_awk_geterror ( - ase_awk_t* awk, int* errnum, - ase_size_t* errlin, const ase_char_t** errmsg) +void qse_awk_geterror ( + qse_awk_t* awk, int* errnum, + qse_size_t* errlin, const qse_char_t** errmsg) { - if (errnum != ASE_NULL) *errnum = awk->errnum; - if (errlin != ASE_NULL) *errlin = awk->errlin; - if (errmsg != ASE_NULL) + if (errnum != QSE_NULL) *errnum = awk->errnum; + if (errlin != QSE_NULL) *errlin = awk->errlin; + if (errmsg != QSE_NULL) { - if (awk->errmsg[0] == ASE_T('\0')) - *errmsg = ase_awk_geterrstr (awk, awk->errnum); + if (awk->errmsg[0] == QSE_T('\0')) + *errmsg = qse_awk_geterrstr (awk, awk->errnum); else *errmsg = awk->errmsg; } } -void ase_awk_seterrnum (ase_awk_t* awk, int errnum) +void qse_awk_seterrnum (qse_awk_t* awk, int errnum) { awk->errnum = errnum; awk->errlin = 0; - awk->errmsg[0] = ASE_T('\0'); + awk->errmsg[0] = QSE_T('\0'); } -void ase_awk_seterrmsg (ase_awk_t* awk, - int errnum, ase_size_t errlin, const ase_char_t* errmsg) +void qse_awk_seterrmsg (qse_awk_t* awk, + int errnum, qse_size_t errlin, const qse_char_t* errmsg) { awk->errnum = errnum; awk->errlin = errlin; - ase_strxcpy (awk->errmsg, ASE_COUNTOF(awk->errmsg), errmsg); + qse_strxcpy (awk->errmsg, QSE_COUNTOF(awk->errmsg), errmsg); } -void ase_awk_seterror ( - ase_awk_t* awk, int errnum, ase_size_t errlin, - const ase_cstr_t* errarg, ase_size_t argcnt) +void qse_awk_seterror ( + qse_awk_t* awk, int errnum, qse_size_t errlin, + const qse_cstr_t* errarg, qse_size_t argcnt) { - const ase_char_t* errfmt; - ase_size_t fmtlen; + const qse_char_t* errfmt; + qse_size_t fmtlen; - ASE_ASSERT (argcnt <= 5); + QSE_ASSERT (argcnt <= 5); awk->errnum = errnum; awk->errlin = errlin; - errfmt = ase_awk_geterrstr (awk, errnum); - fmtlen = ase_strlen(errfmt); + errfmt = qse_awk_geterrstr (awk, errnum); + fmtlen = qse_strlen(errfmt); switch (argcnt) { @@ -253,35 +253,35 @@ void ase_awk_seterror ( awk->prmfns->sprintf ( awk->prmfns->data, awk->errmsg, - ASE_COUNTOF(awk->errmsg), + QSE_COUNTOF(awk->errmsg), errfmt); return; case 1: { - ase_char_t tmp[ASE_COUNTOF(awk->errmsg)]; - ase_size_t len, tl; + qse_char_t tmp[QSE_COUNTOF(awk->errmsg)]; + qse_size_t len, tl; - if (fmtlen < ASE_COUNTOF(awk->errmsg) && - errarg[0].len + fmtlen >= ASE_COUNTOF(awk->errmsg)) + if (fmtlen < QSE_COUNTOF(awk->errmsg) && + errarg[0].len + fmtlen >= QSE_COUNTOF(awk->errmsg)) { - len = ASE_COUNTOF(awk->errmsg) - fmtlen - 3 - 1; - tl = ase_strxncpy (tmp, ASE_COUNTOF(tmp), errarg[0].ptr, len); - tmp[tl] = ASE_T('.'); - tmp[tl+1] = ASE_T('.'); - tmp[tl+2] = ASE_T('.'); + len = QSE_COUNTOF(awk->errmsg) - fmtlen - 3 - 1; + tl = qse_strxncpy (tmp, QSE_COUNTOF(tmp), errarg[0].ptr, len); + tmp[tl] = QSE_T('.'); + tmp[tl+1] = QSE_T('.'); + tmp[tl+2] = QSE_T('.'); len += 3; } else { len = errarg[0].len; - ase_strxncpy (tmp, ASE_COUNTOF(tmp), errarg[0].ptr, len); + qse_strxncpy (tmp, QSE_COUNTOF(tmp), errarg[0].ptr, len); } awk->prmfns->sprintf ( awk->prmfns->data, awk->errmsg, - ASE_COUNTOF(awk->errmsg), + QSE_COUNTOF(awk->errmsg), errfmt, (int)len, tmp); return; } @@ -290,7 +290,7 @@ void ase_awk_seterror ( awk->prmfns->sprintf ( awk->prmfns->data, awk->errmsg, - ASE_COUNTOF(awk->errmsg), + QSE_COUNTOF(awk->errmsg), errfmt, (int)errarg[0].len, errarg[0].ptr, (int)errarg[1].len, errarg[1].ptr); @@ -300,7 +300,7 @@ void ase_awk_seterror ( awk->prmfns->sprintf ( awk->prmfns->data, awk->errmsg, - ASE_COUNTOF(awk->errmsg), + QSE_COUNTOF(awk->errmsg), errfmt, (int)errarg[0].len, errarg[0].ptr, (int)errarg[1].len, errarg[1].ptr, @@ -311,7 +311,7 @@ void ase_awk_seterror ( awk->prmfns->sprintf ( awk->prmfns->data, awk->errmsg, - ASE_COUNTOF(awk->errmsg), + QSE_COUNTOF(awk->errmsg), errfmt, (int)errarg[0].len, errarg[0].ptr, (int)errarg[1].len, errarg[1].ptr, @@ -323,7 +323,7 @@ void ase_awk_seterror ( awk->prmfns->sprintf ( awk->prmfns->data, awk->errmsg, - ASE_COUNTOF(awk->errmsg), + QSE_COUNTOF(awk->errmsg), errfmt, (int)errarg[0].len, errarg[0].ptr, (int)errarg[1].len, errarg[1].ptr, @@ -334,68 +334,68 @@ void ase_awk_seterror ( } } -int ase_awk_getrunerrnum (ase_awk_run_t* run) +int qse_awk_getrunerrnum (qse_awk_run_t* run) { return run->errnum; } -ase_size_t ase_awk_getrunerrlin (ase_awk_run_t* run) +qse_size_t qse_awk_getrunerrlin (qse_awk_run_t* run) { return run->errlin; } -const ase_char_t* ase_awk_getrunerrmsg (ase_awk_run_t* run) +const qse_char_t* qse_awk_getrunerrmsg (qse_awk_run_t* run) { - if (run->errmsg[0] == ASE_T('\0')) - return ase_awk_geterrstr (run->awk, run->errnum); + if (run->errmsg[0] == QSE_T('\0')) + return qse_awk_geterrstr (run->awk, run->errnum); return run->errmsg; } -void ase_awk_setrunerrnum (ase_awk_run_t* run, int errnum) +void qse_awk_setrunerrnum (qse_awk_run_t* run, int errnum) { run->errnum = errnum; run->errlin = 0; - run->errmsg[0] = ASE_T('\0'); + run->errmsg[0] = QSE_T('\0'); } -void ase_awk_setrunerrmsg (ase_awk_run_t* run, - int errnum, ase_size_t errlin, const ase_char_t* errmsg) +void qse_awk_setrunerrmsg (qse_awk_run_t* run, + int errnum, qse_size_t errlin, const qse_char_t* errmsg) { run->errnum = errnum; run->errlin = errlin; - ase_strxcpy (run->errmsg, ASE_COUNTOF(run->errmsg), errmsg); + qse_strxcpy (run->errmsg, QSE_COUNTOF(run->errmsg), errmsg); } -void ase_awk_getrunerror ( - ase_awk_run_t* run, int* errnum, - ase_size_t* errlin, const ase_char_t** errmsg) +void qse_awk_getrunerror ( + qse_awk_run_t* run, int* errnum, + qse_size_t* errlin, const qse_char_t** errmsg) { - if (errnum != ASE_NULL) *errnum = run->errnum; - if (errlin != ASE_NULL) *errlin = run->errlin; - if (errmsg != ASE_NULL) + if (errnum != QSE_NULL) *errnum = run->errnum; + if (errlin != QSE_NULL) *errlin = run->errlin; + if (errmsg != QSE_NULL) { - if (run->errmsg[0] == ASE_T('\0')) - *errmsg = ase_awk_geterrstr (run->awk, run->errnum); + if (run->errmsg[0] == QSE_T('\0')) + *errmsg = qse_awk_geterrstr (run->awk, run->errnum); else *errmsg = run->errmsg; } } -void ase_awk_setrunerror ( - ase_awk_run_t* run, int errnum, ase_size_t errlin, - const ase_cstr_t* errarg, ase_size_t argcnt) +void qse_awk_setrunerror ( + qse_awk_run_t* run, int errnum, qse_size_t errlin, + const qse_cstr_t* errarg, qse_size_t argcnt) { - const ase_char_t* errfmt; - ase_size_t fmtlen; + const qse_char_t* errfmt; + qse_size_t fmtlen; - ASE_ASSERT (argcnt <= 5); + QSE_ASSERT (argcnt <= 5); run->errnum = errnum; run->errlin = errlin; - errfmt = ase_awk_geterrstr (run->awk, errnum); - fmtlen = ase_strlen (errfmt); + errfmt = qse_awk_geterrstr (run->awk, errnum); + fmtlen = qse_strlen (errfmt); switch (argcnt) { @@ -405,7 +405,7 @@ void ase_awk_setrunerror ( run->awk->prmfns->sprintf ( run->awk->prmfns->data, run->errmsg, - ASE_COUNTOF(run->errmsg), + QSE_COUNTOF(run->errmsg), errfmt); return; @@ -414,29 +414,29 @@ void ase_awk_setrunerror ( /* TODO: what if the argument contains a null character? * handle the case more gracefully than now... */ - ase_char_t tmp[ASE_COUNTOF(run->errmsg)]; - ase_size_t len, tl; + qse_char_t tmp[QSE_COUNTOF(run->errmsg)]; + qse_size_t len, tl; - if (fmtlen < ASE_COUNTOF(run->errmsg) && - errarg[0].len + fmtlen >= ASE_COUNTOF(run->errmsg)) + if (fmtlen < QSE_COUNTOF(run->errmsg) && + errarg[0].len + fmtlen >= QSE_COUNTOF(run->errmsg)) { - len = ASE_COUNTOF(run->errmsg) - fmtlen - 3 - 1; - tl = ase_strxncpy (tmp, ASE_COUNTOF(tmp), errarg[0].ptr, len); - tmp[tl] = ASE_T('.'); - tmp[tl+1] = ASE_T('.'); - tmp[tl+2] = ASE_T('.'); + len = QSE_COUNTOF(run->errmsg) - fmtlen - 3 - 1; + tl = qse_strxncpy (tmp, QSE_COUNTOF(tmp), errarg[0].ptr, len); + tmp[tl] = QSE_T('.'); + tmp[tl+1] = QSE_T('.'); + tmp[tl+2] = QSE_T('.'); len += 3; } else { len = errarg[0].len; - ase_strxncpy (tmp, ASE_COUNTOF(tmp), errarg[0].ptr, len); + qse_strxncpy (tmp, QSE_COUNTOF(tmp), errarg[0].ptr, len); } run->awk->prmfns->sprintf ( run->awk->prmfns->data, run->errmsg, - ASE_COUNTOF(run->errmsg), + QSE_COUNTOF(run->errmsg), errfmt, len, tmp); return; } @@ -445,7 +445,7 @@ void ase_awk_setrunerror ( run->awk->prmfns->sprintf ( run->awk->prmfns->data, run->errmsg, - ASE_COUNTOF(run->errmsg), + QSE_COUNTOF(run->errmsg), errfmt, errarg[0].len, errarg[0].ptr, errarg[1].len, errarg[1].ptr); @@ -455,7 +455,7 @@ void ase_awk_setrunerror ( run->awk->prmfns->sprintf ( run->awk->prmfns->data, run->errmsg, - ASE_COUNTOF(run->errmsg), + QSE_COUNTOF(run->errmsg), errfmt, errarg[0].len, errarg[0].ptr, errarg[1].len, errarg[1].ptr, @@ -466,7 +466,7 @@ void ase_awk_setrunerror ( run->awk->prmfns->sprintf ( run->awk->prmfns->data, run->errmsg, - ASE_COUNTOF(run->errmsg), + QSE_COUNTOF(run->errmsg), errfmt, errarg[0].len, errarg[0].ptr, errarg[1].len, errarg[1].ptr, @@ -478,7 +478,7 @@ void ase_awk_setrunerror ( run->awk->prmfns->sprintf ( run->awk->prmfns->data, run->errmsg, - ASE_COUNTOF(run->errmsg), + QSE_COUNTOF(run->errmsg), errfmt, errarg[0].len, errarg[0].ptr, errarg[1].len, errarg[1].ptr, diff --git a/qse/lib/awk/extio.c b/qse/lib/awk/extio.c index 30cff01e..4c09c373 100644 --- a/qse/lib/awk/extio.c +++ b/qse/lib/awk/extio.c @@ -18,21 +18,21 @@ enum static int in_type_map[] = { /* the order should match the order of the - * ASE_AWK_IN_XXX values in tree.h */ - ASE_AWK_EXTIO_PIPE, - ASE_AWK_EXTIO_COPROC, - ASE_AWK_EXTIO_FILE, - ASE_AWK_EXTIO_CONSOLE + * QSE_AWK_IN_XXX values in tree.h */ + QSE_AWK_EXTIO_PIPE, + QSE_AWK_EXTIO_COPROC, + QSE_AWK_EXTIO_FILE, + QSE_AWK_EXTIO_CONSOLE }; static int in_mode_map[] = { /* the order should match the order of the - * ASE_AWK_IN_XXX values in tree.h */ - ASE_AWK_EXTIO_PIPE_READ, + * QSE_AWK_IN_XXX values in tree.h */ + QSE_AWK_EXTIO_PIPE_READ, 0, - ASE_AWK_EXTIO_FILE_READ, - ASE_AWK_EXTIO_CONSOLE_READ + QSE_AWK_EXTIO_FILE_READ, + QSE_AWK_EXTIO_CONSOLE_READ }; static int in_mask_map[] = @@ -46,23 +46,23 @@ static int in_mask_map[] = static int out_type_map[] = { /* the order should match the order of the - * ASE_AWK_OUT_XXX values in tree.h */ - ASE_AWK_EXTIO_PIPE, - ASE_AWK_EXTIO_COPROC, - ASE_AWK_EXTIO_FILE, - ASE_AWK_EXTIO_FILE, - ASE_AWK_EXTIO_CONSOLE + * QSE_AWK_OUT_XXX values in tree.h */ + QSE_AWK_EXTIO_PIPE, + QSE_AWK_EXTIO_COPROC, + QSE_AWK_EXTIO_FILE, + QSE_AWK_EXTIO_FILE, + QSE_AWK_EXTIO_CONSOLE }; static int out_mode_map[] = { /* the order should match the order of the - * ASE_AWK_OUT_XXX values in tree.h */ - ASE_AWK_EXTIO_PIPE_WRITE, + * QSE_AWK_OUT_XXX values in tree.h */ + QSE_AWK_EXTIO_PIPE_WRITE, 0, - ASE_AWK_EXTIO_FILE_WRITE, - ASE_AWK_EXTIO_FILE_APPEND, - ASE_AWK_EXTIO_CONSOLE_WRITE + QSE_AWK_EXTIO_FILE_WRITE, + QSE_AWK_EXTIO_FILE_APPEND, + QSE_AWK_EXTIO_CONSOLE_WRITE }; static int out_mask_map[] = @@ -74,23 +74,23 @@ static int out_mask_map[] = MASK_WRITE }; -int ase_awk_readextio ( - ase_awk_run_t* run, int in_type, - const ase_char_t* name, ase_str_t* buf) +int qse_awk_readextio ( + qse_awk_run_t* run, int in_type, + const qse_char_t* name, qse_str_t* buf) { - ase_awk_extio_t* p = run->extio.chain; - ase_awk_io_t handler; + qse_awk_extio_t* p = run->extio.chain; + qse_awk_io_t handler; int extio_type, extio_mode, extio_mask, ret, n; - ase_ssize_t x; - ase_awk_val_t* rs; - ase_char_t* rs_ptr; - ase_size_t rs_len; - ase_size_t line_len = 0; - ase_char_t c = ASE_T('\0'), pc; + qse_ssize_t x; + qse_awk_val_t* rs; + qse_char_t* rs_ptr; + qse_size_t rs_len; + qse_size_t line_len = 0; + qse_char_t c = QSE_T('\0'), pc; - ASE_ASSERT (in_type >= 0 && in_type <= ASE_COUNTOF(in_type_map)); - ASE_ASSERT (in_type >= 0 && in_type <= ASE_COUNTOF(in_mode_map)); - ASE_ASSERT (in_type >= 0 && in_type <= ASE_COUNTOF(in_mask_map)); + QSE_ASSERT (in_type >= 0 && in_type <= QSE_COUNTOF(in_type_map)); + QSE_ASSERT (in_type >= 0 && in_type <= QSE_COUNTOF(in_mode_map)); + QSE_ASSERT (in_type >= 0 && in_type <= QSE_COUNTOF(in_mask_map)); /* translate the in_type into the relevant extio type and mode */ extio_type = in_type_map[in_type]; @@ -98,64 +98,64 @@ int ase_awk_readextio ( extio_mask = in_mask_map[in_type]; handler = run->extio.handler[extio_type]; - if (handler == ASE_NULL) + if (handler == QSE_NULL) { /* no io handler provided */ - ase_awk_setrunerrnum (run, ASE_AWK_EIOUSER); + qse_awk_setrunerrnum (run, QSE_AWK_EIOUSER); return -1; } - while (p != ASE_NULL) + while (p != QSE_NULL) { if (p->type == (extio_type | extio_mask) && - ase_strcmp (p->name,name) == 0) break; + qse_strcmp (p->name,name) == 0) break; p = p->next; } - if (p == ASE_NULL) + if (p == QSE_NULL) { - p = (ase_awk_extio_t*) ASE_AWK_ALLOC ( - run->awk, ASE_SIZEOF(ase_awk_extio_t)); - if (p == ASE_NULL) + p = (qse_awk_extio_t*) QSE_AWK_ALLOC ( + run->awk, QSE_SIZEOF(qse_awk_extio_t)); + if (p == QSE_NULL) { - ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM); + qse_awk_setrunerrnum (run, QSE_AWK_ENOMEM); return -1; } - p->name = ASE_AWK_STRDUP (run->awk, name); - if (p->name == ASE_NULL) + p->name = QSE_AWK_STRDUP (run->awk, name); + if (p->name == QSE_NULL) { - ASE_AWK_FREE (run->awk, p); - ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM); + QSE_AWK_FREE (run->awk, p); + qse_awk_setrunerrnum (run, QSE_AWK_ENOMEM); return -1; } p->run = run; p->type = (extio_type | extio_mask); p->mode = extio_mode; - p->handle = ASE_NULL; - p->next = ASE_NULL; + p->handle = QSE_NULL; + p->next = QSE_NULL; p->data = run->extio.data; - p->in.buf[0] = ASE_T('\0'); + p->in.buf[0] = QSE_T('\0'); p->in.pos = 0; p->in.len = 0; - p->in.eof = ASE_FALSE; - p->in.eos = ASE_FALSE; + p->in.eof = QSE_FALSE; + p->in.eos = QSE_FALSE; - ase_awk_setrunerrnum (run, ASE_AWK_ENOERR); + qse_awk_setrunerrnum (run, QSE_AWK_ENOERR); - x = handler (ASE_AWK_IO_OPEN, p, ASE_NULL, 0); + x = handler (QSE_AWK_IO_OPEN, p, QSE_NULL, 0); if (x <= -1) { - ASE_AWK_FREE (run->awk, p->name); - ASE_AWK_FREE (run->awk, p); + QSE_AWK_FREE (run->awk, p->name); + QSE_AWK_FREE (run->awk, p); - if (run->errnum == ASE_AWK_ENOERR) + if (run->errnum == QSE_AWK_ENOERR) { /* if the error number has not been * set by the user handler */ - ase_awk_setrunerrnum (run, ASE_AWK_EIOIMPL); + qse_awk_setrunerrnum (run, QSE_AWK_EIOIMPL); } return -1; @@ -172,7 +172,7 @@ int ase_awk_readextio ( * entire pattern-block matching and exeuction. */ if (x == 0) { - p->in.eos = ASE_TRUE; + p->in.eos = QSE_TRUE; return 0; } } @@ -184,29 +184,29 @@ int ase_awk_readextio ( } /* ready to read a line */ - ase_str_clear (buf); + qse_str_clear (buf); /* get the record separator */ - rs = ase_awk_getglobal (run, ASE_AWK_GLOBAL_RS); - ase_awk_refupval (run, rs); + rs = qse_awk_getglobal (run, QSE_AWK_GLOBAL_RS); + qse_awk_refupval (run, rs); - if (rs->type == ASE_AWK_VAL_NIL) + if (rs->type == QSE_AWK_VAL_NIL) { - rs_ptr = ASE_NULL; + rs_ptr = QSE_NULL; rs_len = 0; } - else if (rs->type == ASE_AWK_VAL_STR) + else if (rs->type == QSE_AWK_VAL_STR) { - rs_ptr = ((ase_awk_val_str_t*)rs)->buf; - rs_len = ((ase_awk_val_str_t*)rs)->len; + rs_ptr = ((qse_awk_val_str_t*)rs)->buf; + rs_len = ((qse_awk_val_str_t*)rs)->len; } else { - rs_ptr = ase_awk_valtostr ( - run, rs, ASE_AWK_VALTOSTR_CLEAR, ASE_NULL, &rs_len); - if (rs_ptr == ASE_NULL) + rs_ptr = qse_awk_valtostr ( + run, rs, QSE_AWK_VALTOSTR_CLEAR, QSE_NULL, &rs_len); + if (rs_ptr == QSE_NULL) { - ase_awk_refdownval (run, rs); + qse_awk_refdownval (run, rs); return -1; } } @@ -218,25 +218,25 @@ int ase_awk_readextio ( { if (p->in.pos >= p->in.len) { - ase_ssize_t n; + qse_ssize_t n; if (p->in.eof) { - if (ASE_STR_LEN(buf) == 0) ret = 0; + if (QSE_STR_LEN(buf) == 0) ret = 0; break; } - ase_awk_setrunerrnum (run, ASE_AWK_ENOERR); + qse_awk_setrunerrnum (run, QSE_AWK_ENOERR); - n = handler (ASE_AWK_IO_READ, - p, p->in.buf, ASE_COUNTOF(p->in.buf)); + n = handler (QSE_AWK_IO_READ, + p, p->in.buf, QSE_COUNTOF(p->in.buf)); if (n <= -1) { - if (run->errnum == ASE_AWK_ENOERR) + if (run->errnum == QSE_AWK_ENOERR) { /* if the error number has not been * set by the user handler */ - ase_awk_setrunerrnum (run, ASE_AWK_EIOIMPL); + qse_awk_setrunerrnum (run, QSE_AWK_EIOIMPL); } ret = -1; @@ -245,9 +245,9 @@ int ase_awk_readextio ( if (n == 0) { - p->in.eof = ASE_TRUE; + p->in.eof = QSE_TRUE; - if (ASE_STR_LEN(buf) == 0) ret = 0; + if (QSE_STR_LEN(buf) == 0) ret = 0; else if (rs_len >= 2) { /* when RS is multiple characters, it needs to check @@ -255,15 +255,15 @@ int ase_awk_readextio ( * the buffer has been appened with the last character * after the previous matchrex has failed */ - const ase_char_t* match_ptr; - ase_size_t match_len; + const qse_char_t* match_ptr; + qse_size_t match_len; - ASE_ASSERT (run->global.rs != ASE_NULL); + QSE_ASSERT (run->global.rs != QSE_NULL); - n = ASE_AWK_MATCHREX ( + n = QSE_AWK_MATCHREX ( run->awk, run->global.rs, - ((run->global.ignorecase)? ASE_REX_IGNORECASE: 0), - ASE_STR_PTR(buf), ASE_STR_LEN(buf), + ((run->global.ignorecase)? QSE_REX_IGNORECASE: 0), + QSE_STR_PTR(buf), QSE_STR_LEN(buf), &match_ptr, &match_len, &run->errnum); if (n == -1) { @@ -275,11 +275,11 @@ int ase_awk_readextio ( { /* the match should be found at the end of * the current buffer */ - ASE_ASSERT ( - ASE_STR_PTR(buf) + ASE_STR_LEN(buf) == + QSE_ASSERT ( + QSE_STR_PTR(buf) + QSE_STR_LEN(buf) == match_ptr + match_len); - ASE_STR_LEN(buf) -= match_len; + QSE_STR_LEN(buf) -= match_len; break; } } @@ -294,15 +294,15 @@ int ase_awk_readextio ( pc = c; c = p->in.buf[p->in.pos++]; - if (rs_ptr == ASE_NULL) + if (rs_ptr == QSE_NULL) { /* separate by a new line */ - if (c == ASE_T('\n')) + if (c == QSE_T('\n')) { - if (pc == ASE_T('\r') && - ASE_STR_LEN(buf) > 0) + if (pc == QSE_T('\r') && + QSE_STR_LEN(buf) > 0) { - ASE_STR_LEN(buf) -= 1; + QSE_STR_LEN(buf) -= 1; } break; } @@ -310,18 +310,18 @@ int ase_awk_readextio ( else if (rs_len == 0) { /* separate by a blank line */ - if (c == ASE_T('\n')) + if (c == QSE_T('\n')) { - if (pc == ASE_T('\r') && - ASE_STR_LEN(buf) > 0) + if (pc == QSE_T('\r') && + QSE_STR_LEN(buf) > 0) { - ASE_STR_LEN(buf) -= 1; + QSE_STR_LEN(buf) -= 1; } } - if (line_len == 0 && c == ASE_T('\n')) + if (line_len == 0 && c == QSE_T('\n')) { - if (ASE_STR_LEN(buf) <= 0) + if (QSE_STR_LEN(buf) <= 0) { /* if the record is empty when a blank * line is encountered, the line @@ -333,7 +333,7 @@ int ase_awk_readextio ( /* when a blank line is encountered, * it needs to snip off the line * terminator of the previous line */ - ASE_STR_LEN(buf) -= 1; + QSE_STR_LEN(buf) -= 1; break; } } @@ -343,15 +343,15 @@ int ase_awk_readextio ( } else { - const ase_char_t* match_ptr; - ase_size_t match_len; + const qse_char_t* match_ptr; + qse_size_t match_len; - ASE_ASSERT (run->global.rs != ASE_NULL); + QSE_ASSERT (run->global.rs != QSE_NULL); - n = ASE_AWK_MATCHREX ( + n = QSE_AWK_MATCHREX ( run->awk, run->global.rs, - ((run->global.ignorecase)? ASE_REX_IGNORECASE: 0), - ASE_STR_PTR(buf), ASE_STR_LEN(buf), + ((run->global.ignorecase)? QSE_REX_IGNORECASE: 0), + QSE_STR_PTR(buf), QSE_STR_LEN(buf), &match_ptr, &match_len, &run->errnum); if (n == -1) { @@ -364,77 +364,77 @@ int ase_awk_readextio ( { /* the match should be found at the end of * the current buffer */ - ASE_ASSERT ( - ASE_STR_PTR(buf) + ASE_STR_LEN(buf) == + QSE_ASSERT ( + QSE_STR_PTR(buf) + QSE_STR_LEN(buf) == match_ptr + match_len); - ASE_STR_LEN(buf) -= match_len; + QSE_STR_LEN(buf) -= match_len; p->in.pos--; /* unread the character in c */ break; } } - if (ase_str_ccat (buf, c) == (ase_size_t)-1) + if (qse_str_ccat (buf, c) == (qse_size_t)-1) { - ase_awk_setrunerror ( - run, ASE_AWK_ENOMEM, 0, ASE_NULL, 0); + qse_awk_setrunerror ( + run, QSE_AWK_ENOMEM, 0, QSE_NULL, 0); ret = -1; break; } /* TODO: handle different line terminator like \r\n */ - if (c == ASE_T('\n')) line_len = 0; + if (c == QSE_T('\n')) line_len = 0; else line_len = line_len + 1; } - if (rs_ptr != ASE_NULL && - rs->type != ASE_AWK_VAL_STR) ASE_AWK_FREE (run->awk, rs_ptr); - ase_awk_refdownval (run, rs); + if (rs_ptr != QSE_NULL && + rs->type != QSE_AWK_VAL_STR) QSE_AWK_FREE (run->awk, rs_ptr); + qse_awk_refdownval (run, rs); return ret; } -#include -int ase_awk_writeextio_val ( - ase_awk_run_t* run, int out_type, - const ase_char_t* name, ase_awk_val_t* v) +#include +int qse_awk_writeextio_val ( + qse_awk_run_t* run, int out_type, + const qse_char_t* name, qse_awk_val_t* v) { - ase_char_t* str; - ase_size_t len; + qse_char_t* str; + qse_size_t len; int n; - if (v->type == ASE_AWK_VAL_STR) + if (v->type == QSE_AWK_VAL_STR) { - str = ((ase_awk_val_str_t*)v)->buf; - len = ((ase_awk_val_str_t*)v)->len; + str = ((qse_awk_val_str_t*)v)->buf; + len = ((qse_awk_val_str_t*)v)->len; } else { - str = ase_awk_valtostr ( + str = qse_awk_valtostr ( run, v, - ASE_AWK_VALTOSTR_CLEAR | ASE_AWK_VALTOSTR_PRINT, - ASE_NULL, &len); - if (str == ASE_NULL) return -1; + QSE_AWK_VALTOSTR_CLEAR | QSE_AWK_VALTOSTR_PRINT, + QSE_NULL, &len); + if (str == QSE_NULL) return -1; } - n = ase_awk_writeextio_str (run, out_type, name, str, len); + n = qse_awk_writeextio_str (run, out_type, name, str, len); - if (v->type != ASE_AWK_VAL_STR) ASE_AWK_FREE (run->awk, str); + if (v->type != QSE_AWK_VAL_STR) QSE_AWK_FREE (run->awk, str); return n; } -int ase_awk_writeextio_str ( - ase_awk_run_t* run, int out_type, - const ase_char_t* name, ase_char_t* str, ase_size_t len) +int qse_awk_writeextio_str ( + qse_awk_run_t* run, int out_type, + const qse_char_t* name, qse_char_t* str, qse_size_t len) { - ase_awk_extio_t* p = run->extio.chain; - ase_awk_io_t handler; + qse_awk_extio_t* p = run->extio.chain; + qse_awk_io_t handler; int extio_type, extio_mode, extio_mask; - ase_ssize_t n; + qse_ssize_t n; - ASE_ASSERT (out_type >= 0 && out_type <= ASE_COUNTOF(out_type_map)); - ASE_ASSERT (out_type >= 0 && out_type <= ASE_COUNTOF(out_mode_map)); - ASE_ASSERT (out_type >= 0 && out_type <= ASE_COUNTOF(out_mask_map)); + QSE_ASSERT (out_type >= 0 && out_type <= QSE_COUNTOF(out_type_map)); + QSE_ASSERT (out_type >= 0 && out_type <= QSE_COUNTOF(out_mode_map)); + QSE_ASSERT (out_type >= 0 && out_type <= QSE_COUNTOF(out_mask_map)); /* translate the out_type into the relevant extio type and mode */ extio_type = out_type_map[out_type]; @@ -442,71 +442,71 @@ int ase_awk_writeextio_str ( extio_mask = out_mask_map[out_type]; handler = run->extio.handler[extio_type]; - if (handler == ASE_NULL) + if (handler == QSE_NULL) { /* no io handler provided */ - ase_awk_setrunerrnum (run, ASE_AWK_EIOUSER); + qse_awk_setrunerrnum (run, QSE_AWK_EIOUSER); return -1; } /* look for the corresponding extio for name */ - while (p != ASE_NULL) + while (p != QSE_NULL) { /* the file "1.tmp", in the following code snippets, * would be opened by the first print statement, but not by * the second print statement. this is because - * both ASE_AWK_OUT_FILE and ASE_AWK_OUT_FILE_APPEND are - * translated to ASE_AWK_EXTIO_FILE and it is used to + * both QSE_AWK_OUT_FILE and QSE_AWK_OUT_FILE_APPEND are + * translated to QSE_AWK_EXTIO_FILE and it is used to * keep track of file handles.. * * print "1111" >> "1.tmp" * print "1111" > "1.tmp" */ if (p->type == (extio_type | extio_mask) && - ase_strcmp (p->name, name) == 0) break; + qse_strcmp (p->name, name) == 0) break; p = p->next; } /* if there is not corresponding extio for name, create one */ - if (p == ASE_NULL) + if (p == QSE_NULL) { - p = (ase_awk_extio_t*) ASE_AWK_ALLOC ( - run->awk, ASE_SIZEOF(ase_awk_extio_t)); - if (p == ASE_NULL) + p = (qse_awk_extio_t*) QSE_AWK_ALLOC ( + run->awk, QSE_SIZEOF(qse_awk_extio_t)); + if (p == QSE_NULL) { - ase_awk_setrunerror ( - run, ASE_AWK_ENOMEM, 0, ASE_NULL, 0); + qse_awk_setrunerror ( + run, QSE_AWK_ENOMEM, 0, QSE_NULL, 0); return -1; } - p->name = ASE_AWK_STRDUP (run->awk, name); - if (p->name == ASE_NULL) + p->name = QSE_AWK_STRDUP (run->awk, name); + if (p->name == QSE_NULL) { - ASE_AWK_FREE (run->awk, p); - ase_awk_setrunerror ( - run, ASE_AWK_ENOMEM, 0, ASE_NULL, 0); + QSE_AWK_FREE (run->awk, p); + qse_awk_setrunerror ( + run, QSE_AWK_ENOMEM, 0, QSE_NULL, 0); return -1; } p->run = run; p->type = (extio_type | extio_mask); p->mode = extio_mode; - p->handle = ASE_NULL; - p->next = ASE_NULL; + p->handle = QSE_NULL; + p->next = QSE_NULL; p->data = run->extio.data; - p->out.eof = ASE_FALSE; - p->out.eos = ASE_FALSE; + p->out.eof = QSE_FALSE; + p->out.eos = QSE_FALSE; - ase_awk_setrunerrnum (run, ASE_AWK_ENOERR); - n = handler (ASE_AWK_IO_OPEN, p, ASE_NULL, 0); + qse_awk_setrunerrnum (run, QSE_AWK_ENOERR); + n = handler (QSE_AWK_IO_OPEN, p, QSE_NULL, 0); if (n <= -1) { - ASE_AWK_FREE (run->awk, p->name); - ASE_AWK_FREE (run->awk, p); + QSE_AWK_FREE (run->awk, p->name); + QSE_AWK_FREE (run->awk, p); - if (run->errnum == ASE_AWK_ENOERR) - ase_awk_setrunerrnum (run, ASE_AWK_EIOIMPL); + if (run->errnum == QSE_AWK_ENOERR) + qse_awk_setrunerrnum (run, QSE_AWK_EIOIMPL); return -1; } @@ -522,7 +522,7 @@ int ase_awk_writeextio_str ( * entire pattern-block matching and exeuction. */ if (n == 0) { - p->out.eos = ASE_TRUE; + p->out.eos = QSE_TRUE; return 0; } } @@ -542,19 +542,19 @@ int ase_awk_writeextio_str ( while (len > 0) { - ase_awk_setrunerrnum (run, ASE_AWK_ENOERR); - n = handler (ASE_AWK_IO_WRITE, p, str, len); + qse_awk_setrunerrnum (run, QSE_AWK_ENOERR); + n = handler (QSE_AWK_IO_WRITE, p, str, len); if (n <= -1) { - if (run->errnum == ASE_AWK_ENOERR) - ase_awk_setrunerrnum (run, ASE_AWK_EIOIMPL); + if (run->errnum == QSE_AWK_ENOERR) + qse_awk_setrunerrnum (run, QSE_AWK_EIOIMPL); return -1; } if (n == 0) { - p->out.eof = ASE_TRUE; + p->out.eof = QSE_TRUE; return 0; } @@ -565,18 +565,18 @@ int ase_awk_writeextio_str ( return 1; } -int ase_awk_flushextio ( - ase_awk_run_t* run, int out_type, const ase_char_t* name) +int qse_awk_flushextio ( + qse_awk_run_t* run, int out_type, const qse_char_t* name) { - ase_awk_extio_t* p = run->extio.chain; - ase_awk_io_t handler; + qse_awk_extio_t* p = run->extio.chain; + qse_awk_io_t handler; int extio_type, /*extio_mode,*/ extio_mask; - ase_ssize_t n; - ase_bool_t ok = ASE_FALSE; + qse_ssize_t n; + qse_bool_t ok = QSE_FALSE; - ASE_ASSERT (out_type >= 0 && out_type <= ASE_COUNTOF(out_type_map)); - ASE_ASSERT (out_type >= 0 && out_type <= ASE_COUNTOF(out_mode_map)); - ASE_ASSERT (out_type >= 0 && out_type <= ASE_COUNTOF(out_mask_map)); + QSE_ASSERT (out_type >= 0 && out_type <= QSE_COUNTOF(out_type_map)); + QSE_ASSERT (out_type >= 0 && out_type <= QSE_COUNTOF(out_mode_map)); + QSE_ASSERT (out_type >= 0 && out_type <= QSE_COUNTOF(out_mask_map)); /* translate the out_type into the relevant extio type and mode */ extio_type = out_type_map[out_type]; @@ -584,30 +584,30 @@ int ase_awk_flushextio ( extio_mask = out_mask_map[out_type]; handler = run->extio.handler[extio_type]; - if (handler == ASE_NULL) + if (handler == QSE_NULL) { /* no io handler provided */ - ase_awk_setrunerrnum (run, ASE_AWK_EIOUSER); + qse_awk_setrunerrnum (run, QSE_AWK_EIOUSER); return -1; } /* look for the corresponding extio for name */ - while (p != ASE_NULL) + while (p != QSE_NULL) { if (p->type == (extio_type | extio_mask) && - (name == ASE_NULL || ase_strcmp(p->name,name) == 0)) + (name == QSE_NULL || qse_strcmp(p->name,name) == 0)) { - ase_awk_setrunerrnum (run, ASE_AWK_ENOERR); - n = handler (ASE_AWK_IO_FLUSH, p, ASE_NULL, 0); + qse_awk_setrunerrnum (run, QSE_AWK_ENOERR); + n = handler (QSE_AWK_IO_FLUSH, p, QSE_NULL, 0); if (n <= -1) { - if (run->errnum == ASE_AWK_ENOERR) - ase_awk_setrunerrnum (run, ASE_AWK_EIOIMPL); + if (run->errnum == QSE_AWK_ENOERR) + qse_awk_setrunerrnum (run, QSE_AWK_EIOIMPL); return -1; } - ok = ASE_TRUE; + ok = QSE_TRUE; } p = p->next; @@ -616,21 +616,21 @@ int ase_awk_flushextio ( if (ok) return 0; /* there is no corresponding extio for name */ - ase_awk_setrunerrnum (run, ASE_AWK_EIONONE); + qse_awk_setrunerrnum (run, QSE_AWK_EIONONE); return -1; } -int ase_awk_nextextio_read ( - ase_awk_run_t* run, int in_type, const ase_char_t* name) +int qse_awk_nextextio_read ( + qse_awk_run_t* run, int in_type, const qse_char_t* name) { - ase_awk_extio_t* p = run->extio.chain; - ase_awk_io_t handler; + qse_awk_extio_t* p = run->extio.chain; + qse_awk_io_t handler; int extio_type, /*extio_mode,*/ extio_mask; - ase_ssize_t n; + qse_ssize_t n; - ASE_ASSERT (in_type >= 0 && in_type <= ASE_COUNTOF(in_type_map)); - ASE_ASSERT (in_type >= 0 && in_type <= ASE_COUNTOF(in_mode_map)); - ASE_ASSERT (in_type >= 0 && in_type <= ASE_COUNTOF(in_mask_map)); + QSE_ASSERT (in_type >= 0 && in_type <= QSE_COUNTOF(in_type_map)); + QSE_ASSERT (in_type >= 0 && in_type <= QSE_COUNTOF(in_mode_map)); + QSE_ASSERT (in_type >= 0 && in_type <= QSE_COUNTOF(in_mask_map)); /* translate the in_type into the relevant extio type and mode */ extio_type = in_type_map[in_type]; @@ -638,26 +638,26 @@ int ase_awk_nextextio_read ( extio_mask = in_mask_map[in_type]; handler = run->extio.handler[extio_type]; - if (handler == ASE_NULL) + if (handler == QSE_NULL) { /* no io handler provided */ - ase_awk_setrunerrnum (run, ASE_AWK_EIOUSER); + qse_awk_setrunerrnum (run, QSE_AWK_EIOUSER); return -1; } - while (p != ASE_NULL) + while (p != QSE_NULL) { if (p->type == (extio_type | extio_mask) && - ase_strcmp (p->name,name) == 0) break; + qse_strcmp (p->name,name) == 0) break; p = p->next; } - if (p == ASE_NULL) + if (p == QSE_NULL) { /* something is totally wrong */ - ASE_ASSERT ( + QSE_ASSERT ( !"should never happen - cannot find the relevant extio entry"); - ase_awk_setrunerror (run, ASE_AWK_EINTERN, 0, ASE_NULL, 0); + qse_awk_setrunerror (run, QSE_AWK_EINTERN, 0, QSE_NULL, 0); return -1; } @@ -667,12 +667,12 @@ int ase_awk_nextextio_read ( return 0; } - ase_awk_setrunerrnum (run, ASE_AWK_ENOERR); - n = handler (ASE_AWK_IO_NEXT, p, ASE_NULL, 0); + qse_awk_setrunerrnum (run, QSE_AWK_ENOERR); + n = handler (QSE_AWK_IO_NEXT, p, QSE_NULL, 0); if (n <= -1) { - if (run->errnum == ASE_AWK_ENOERR) - ase_awk_setrunerrnum (run, ASE_AWK_EIOIMPL); + if (run->errnum == QSE_AWK_ENOERR) + qse_awk_setrunerrnum (run, QSE_AWK_EIOIMPL); return -1; } @@ -681,14 +681,14 @@ int ase_awk_nextextio_read ( /* the next stream cannot be opened. * set the eos flags so that the next call to nextextio_read * will return 0 without executing the handler */ - p->in.eos = ASE_TRUE; + p->in.eos = QSE_TRUE; return 0; } else { /* as the next stream has been opened successfully, * the eof flag should be cleared if set */ - p->in.eof = ASE_FALSE; + p->in.eof = QSE_FALSE; /* also the previous input buffer must be reset */ p->in.pos = 0; @@ -698,17 +698,17 @@ int ase_awk_nextextio_read ( } } -int ase_awk_nextextio_write ( - ase_awk_run_t* run, int out_type, const ase_char_t* name) +int qse_awk_nextextio_write ( + qse_awk_run_t* run, int out_type, const qse_char_t* name) { - ase_awk_extio_t* p = run->extio.chain; - ase_awk_io_t handler; + qse_awk_extio_t* p = run->extio.chain; + qse_awk_io_t handler; int extio_type, /*extio_mode,*/ extio_mask; - ase_ssize_t n; + qse_ssize_t n; - ASE_ASSERT (out_type >= 0 && out_type <= ASE_COUNTOF(out_type_map)); - ASE_ASSERT (out_type >= 0 && out_type <= ASE_COUNTOF(out_mode_map)); - ASE_ASSERT (out_type >= 0 && out_type <= ASE_COUNTOF(out_mask_map)); + QSE_ASSERT (out_type >= 0 && out_type <= QSE_COUNTOF(out_type_map)); + QSE_ASSERT (out_type >= 0 && out_type <= QSE_COUNTOF(out_mode_map)); + QSE_ASSERT (out_type >= 0 && out_type <= QSE_COUNTOF(out_mask_map)); /* translate the out_type into the relevant extio type and mode */ extio_type = out_type_map[out_type]; @@ -716,26 +716,26 @@ int ase_awk_nextextio_write ( extio_mask = out_mask_map[out_type]; handler = run->extio.handler[extio_type]; - if (handler == ASE_NULL) + if (handler == QSE_NULL) { /* no io handler provided */ - ase_awk_setrunerrnum (run, ASE_AWK_EIOUSER); + qse_awk_setrunerrnum (run, QSE_AWK_EIOUSER); return -1; } - while (p != ASE_NULL) + while (p != QSE_NULL) { if (p->type == (extio_type | extio_mask) && - ase_strcmp (p->name,name) == 0) break; + qse_strcmp (p->name,name) == 0) break; p = p->next; } - if (p == ASE_NULL) + if (p == QSE_NULL) { /* something is totally wrong */ - ASE_ASSERT (!"should never happen - cannot find the relevant extio entry"); + QSE_ASSERT (!"should never happen - cannot find the relevant extio entry"); - ase_awk_setrunerror (run, ASE_AWK_EINTERN, 0, ASE_NULL, 0); + qse_awk_setrunerror (run, QSE_AWK_EINTERN, 0, QSE_NULL, 0); return -1; } @@ -745,12 +745,12 @@ int ase_awk_nextextio_write ( return 0; } - ase_awk_setrunerrnum (run, ASE_AWK_ENOERR); - n = handler (ASE_AWK_IO_NEXT, p, ASE_NULL, 0); + qse_awk_setrunerrnum (run, QSE_AWK_ENOERR); + n = handler (QSE_AWK_IO_NEXT, p, QSE_NULL, 0); if (n <= -1) { - if (run->errnum == ASE_AWK_ENOERR) - ase_awk_setrunerrnum (run, ASE_AWK_EIOIMPL); + if (run->errnum == QSE_AWK_ENOERR) + qse_awk_setrunerrnum (run, QSE_AWK_EIOIMPL); return -1; } @@ -759,28 +759,28 @@ int ase_awk_nextextio_write ( /* the next stream cannot be opened. * set the eos flags so that the next call to nextextio_write * will return 0 without executing the handler */ - p->out.eos = ASE_TRUE; + p->out.eos = QSE_TRUE; return 0; } else { /* as the next stream has been opened successfully, * the eof flag should be cleared if set */ - p->out.eof = ASE_FALSE; + p->out.eof = QSE_FALSE; return 1; } } -int ase_awk_closeextio_read ( - ase_awk_run_t* run, int in_type, const ase_char_t* name) +int qse_awk_closeextio_read ( + qse_awk_run_t* run, int in_type, const qse_char_t* name) { - ase_awk_extio_t* p = run->extio.chain, * px = ASE_NULL; - ase_awk_io_t handler; + qse_awk_extio_t* p = run->extio.chain, * px = QSE_NULL; + qse_awk_io_t handler; int extio_type, /*extio_mode,*/ extio_mask; - ASE_ASSERT (in_type >= 0 && in_type <= ASE_COUNTOF(in_type_map)); - ASE_ASSERT (in_type >= 0 && in_type <= ASE_COUNTOF(in_mode_map)); - ASE_ASSERT (in_type >= 0 && in_type <= ASE_COUNTOF(in_mask_map)); + QSE_ASSERT (in_type >= 0 && in_type <= QSE_COUNTOF(in_type_map)); + QSE_ASSERT (in_type >= 0 && in_type <= QSE_COUNTOF(in_mode_map)); + QSE_ASSERT (in_type >= 0 && in_type <= QSE_COUNTOF(in_mask_map)); /* translate the in_type into the relevant extio type and mode */ extio_type = in_type_map[in_type]; @@ -788,36 +788,36 @@ int ase_awk_closeextio_read ( extio_mask = in_mask_map[in_type]; handler = run->extio.handler[extio_type]; - if (handler == ASE_NULL) + if (handler == QSE_NULL) { /* no io handler provided */ - ase_awk_setrunerrnum (run, ASE_AWK_EIOUSER); + qse_awk_setrunerrnum (run, QSE_AWK_EIOUSER); return -1; } - while (p != ASE_NULL) + while (p != QSE_NULL) { if (p->type == (extio_type | extio_mask) && - ase_strcmp (p->name, name) == 0) + qse_strcmp (p->name, name) == 0) { - ase_awk_io_t handler; + qse_awk_io_t handler; handler = run->extio.handler[p->type & MASK_CLEAR]; - if (handler != ASE_NULL) + if (handler != QSE_NULL) { - if (handler (ASE_AWK_IO_CLOSE, p, ASE_NULL, 0) <= -1) + if (handler (QSE_AWK_IO_CLOSE, p, QSE_NULL, 0) <= -1) { /* this is not a run-time error.*/ - ase_awk_setrunerror (run, ASE_AWK_EIOIMPL, 0, ASE_NULL, 0); + qse_awk_setrunerror (run, QSE_AWK_EIOIMPL, 0, QSE_NULL, 0); return -1; } } - if (px != ASE_NULL) px->next = p->next; + if (px != QSE_NULL) px->next = p->next; else run->extio.chain = p->next; - ASE_AWK_FREE (run->awk, p->name); - ASE_AWK_FREE (run->awk, p); + QSE_AWK_FREE (run->awk, p->name); + QSE_AWK_FREE (run->awk, p); return 0; } @@ -826,20 +826,20 @@ int ase_awk_closeextio_read ( } /* the name given is not found */ - ase_awk_setrunerrnum (run, ASE_AWK_EIONONE); + qse_awk_setrunerrnum (run, QSE_AWK_EIONONE); return -1; } -int ase_awk_closeextio_write ( - ase_awk_run_t* run, int out_type, const ase_char_t* name) +int qse_awk_closeextio_write ( + qse_awk_run_t* run, int out_type, const qse_char_t* name) { - ase_awk_extio_t* p = run->extio.chain, * px = ASE_NULL; - ase_awk_io_t handler; + qse_awk_extio_t* p = run->extio.chain, * px = QSE_NULL; + qse_awk_io_t handler; int extio_type, /*extio_mode,*/ extio_mask; - ASE_ASSERT (out_type >= 0 && out_type <= ASE_COUNTOF(out_type_map)); - ASE_ASSERT (out_type >= 0 && out_type <= ASE_COUNTOF(out_mode_map)); - ASE_ASSERT (out_type >= 0 && out_type <= ASE_COUNTOF(out_mask_map)); + QSE_ASSERT (out_type >= 0 && out_type <= QSE_COUNTOF(out_type_map)); + QSE_ASSERT (out_type >= 0 && out_type <= QSE_COUNTOF(out_mode_map)); + QSE_ASSERT (out_type >= 0 && out_type <= QSE_COUNTOF(out_mask_map)); /* translate the out_type into the relevant extio type and mode */ extio_type = out_type_map[out_type]; @@ -847,37 +847,37 @@ int ase_awk_closeextio_write ( extio_mask = out_mask_map[out_type]; handler = run->extio.handler[extio_type]; - if (handler == ASE_NULL) + if (handler == QSE_NULL) { /* no io handler provided */ - ase_awk_setrunerror (run, ASE_AWK_EIOUSER, 0, ASE_NULL, 0); + qse_awk_setrunerror (run, QSE_AWK_EIOUSER, 0, QSE_NULL, 0); return -1; } - while (p != ASE_NULL) + while (p != QSE_NULL) { if (p->type == (extio_type | extio_mask) && - ase_strcmp (p->name, name) == 0) + qse_strcmp (p->name, name) == 0) { - ase_awk_io_t handler; + qse_awk_io_t handler; handler = run->extio.handler[p->type & MASK_CLEAR]; - if (handler != ASE_NULL) + if (handler != QSE_NULL) { - ase_awk_setrunerrnum (run, ASE_AWK_ENOERR); - if (handler (ASE_AWK_IO_CLOSE, p, ASE_NULL, 0) <= -1) + qse_awk_setrunerrnum (run, QSE_AWK_ENOERR); + if (handler (QSE_AWK_IO_CLOSE, p, QSE_NULL, 0) <= -1) { - if (run->errnum == ASE_AWK_ENOERR) - ase_awk_setrunerrnum (run, ASE_AWK_EIOIMPL); + if (run->errnum == QSE_AWK_ENOERR) + qse_awk_setrunerrnum (run, QSE_AWK_EIOIMPL); return -1; } } - if (px != ASE_NULL) px->next = p->next; + if (px != QSE_NULL) px->next = p->next; else run->extio.chain = p->next; - ASE_AWK_FREE (run->awk, p->name); - ASE_AWK_FREE (run->awk, p); + QSE_AWK_FREE (run->awk, p->name); + QSE_AWK_FREE (run->awk, p); return 0; } @@ -885,40 +885,40 @@ int ase_awk_closeextio_write ( p = p->next; } - ase_awk_setrunerrnum (run, ASE_AWK_EIONONE); + qse_awk_setrunerrnum (run, QSE_AWK_EIONONE); return -1; } -int ase_awk_closeextio (ase_awk_run_t* run, const ase_char_t* name) +int qse_awk_closeextio (qse_awk_run_t* run, const qse_char_t* name) { - ase_awk_extio_t* p = run->extio.chain, * px = ASE_NULL; + qse_awk_extio_t* p = run->extio.chain, * px = QSE_NULL; - while (p != ASE_NULL) + while (p != QSE_NULL) { /* it handles the first that matches the given name * regardless of the extio type */ - if (ase_strcmp (p->name, name) == 0) + if (qse_strcmp (p->name, name) == 0) { - ase_awk_io_t handler; + qse_awk_io_t handler; handler = run->extio.handler[p->type & MASK_CLEAR]; - if (handler != ASE_NULL) + if (handler != QSE_NULL) { - ase_awk_setrunerrnum (run, ASE_AWK_ENOERR); - if (handler (ASE_AWK_IO_CLOSE, p, ASE_NULL, 0) <= -1) + qse_awk_setrunerrnum (run, QSE_AWK_ENOERR); + if (handler (QSE_AWK_IO_CLOSE, p, QSE_NULL, 0) <= -1) { /* this is not a run-time error.*/ - if (run->errnum == ASE_AWK_ENOERR) - ase_awk_setrunerrnum (run, ASE_AWK_EIOIMPL); + if (run->errnum == QSE_AWK_ENOERR) + qse_awk_setrunerrnum (run, QSE_AWK_EIOIMPL); return -1; } } - if (px != ASE_NULL) px->next = p->next; + if (px != QSE_NULL) px->next = p->next; else run->extio.chain = p->next; - ASE_AWK_FREE (run->awk, p->name); - ASE_AWK_FREE (run->awk, p); + QSE_AWK_FREE (run->awk, p->name); + QSE_AWK_FREE (run->awk, p); return 0; } @@ -927,36 +927,36 @@ int ase_awk_closeextio (ase_awk_run_t* run, const ase_char_t* name) p = p->next; } - ase_awk_setrunerrnum (run, ASE_AWK_EIONONE); + qse_awk_setrunerrnum (run, QSE_AWK_EIONONE); return -1; } -void ase_awk_clearextio (ase_awk_run_t* run) +void qse_awk_clearextio (qse_awk_run_t* run) { - ase_awk_extio_t* next; - ase_awk_io_t handler; - ase_ssize_t n; + qse_awk_extio_t* next; + qse_awk_io_t handler; + qse_ssize_t n; - while (run->extio.chain != ASE_NULL) + while (run->extio.chain != QSE_NULL) { handler = run->extio.handler[ run->extio.chain->type & MASK_CLEAR]; next = run->extio.chain->next; - if (handler != ASE_NULL) + if (handler != QSE_NULL) { - ase_awk_setrunerrnum (run, ASE_AWK_ENOERR); - n = handler (ASE_AWK_IO_CLOSE, run->extio.chain, ASE_NULL, 0); + qse_awk_setrunerrnum (run, QSE_AWK_ENOERR); + n = handler (QSE_AWK_IO_CLOSE, run->extio.chain, QSE_NULL, 0); if (n <= -1) { - if (run->errnum == ASE_AWK_ENOERR) - ase_awk_setrunerrnum (run, ASE_AWK_EIOIMPL); + if (run->errnum == QSE_AWK_ENOERR) + qse_awk_setrunerrnum (run, QSE_AWK_EIOIMPL); /* TODO: some warnings need to be shown??? */ } } - ASE_AWK_FREE (run->awk, run->extio.chain->name); - ASE_AWK_FREE (run->awk, run->extio.chain); + QSE_AWK_FREE (run->awk, run->extio.chain->name); + QSE_AWK_FREE (run->awk, run->extio.chain); run->extio.chain = next; } diff --git a/qse/lib/awk/extio.h b/qse/lib/awk/extio.h index 76832de5..192d0c5d 100644 --- a/qse/lib/awk/extio.h +++ b/qse/lib/awk/extio.h @@ -4,41 +4,41 @@ * {License} */ -#ifndef _ASE_LIB_AWK_EXTIO_H_ -#define _ASE_LIB_AWK_EXTIO_H_ +#ifndef _QSE_LIB_AWK_EXTIO_H_ +#define _QSE_LIB_AWK_EXTIO_H_ #ifdef __cplusplus extern "C" #endif -int ase_awk_readextio ( - ase_awk_run_t* run, int in_type, - const ase_char_t* name, ase_str_t* buf); +int qse_awk_readextio ( + qse_awk_run_t* run, int in_type, + const qse_char_t* name, qse_str_t* buf); -int ase_awk_writeextio_val ( - ase_awk_run_t* run, int out_type, - const ase_char_t* name, ase_awk_val_t* v); +int qse_awk_writeextio_val ( + qse_awk_run_t* run, int out_type, + const qse_char_t* name, qse_awk_val_t* v); -int ase_awk_writeextio_str ( - ase_awk_run_t* run, int out_type, - const ase_char_t* name, ase_char_t* str, ase_size_t len); +int qse_awk_writeextio_str ( + qse_awk_run_t* run, int out_type, + const qse_char_t* name, qse_char_t* str, qse_size_t len); -int ase_awk_flushextio ( - ase_awk_run_t* run, int out_type, const ase_char_t* name); +int qse_awk_flushextio ( + qse_awk_run_t* run, int out_type, const qse_char_t* name); -int ase_awk_nextextio_read ( - ase_awk_run_t* run, int in_type, const ase_char_t* name); +int qse_awk_nextextio_read ( + qse_awk_run_t* run, int in_type, const qse_char_t* name); -int ase_awk_nextextio_write ( - ase_awk_run_t* run, int out_type, const ase_char_t* name); +int qse_awk_nextextio_write ( + qse_awk_run_t* run, int out_type, const qse_char_t* name); -int ase_awk_closeextio_read ( - ase_awk_run_t* run, int in_type, const ase_char_t* name); -int ase_awk_closeextio_write ( - ase_awk_run_t* run, int out_type, const ase_char_t* name); -int ase_awk_closeextio (ase_awk_run_t* run, const ase_char_t* name); +int qse_awk_closeextio_read ( + qse_awk_run_t* run, int in_type, const qse_char_t* name); +int qse_awk_closeextio_write ( + qse_awk_run_t* run, int out_type, const qse_char_t* name); +int qse_awk_closeextio (qse_awk_run_t* run, const qse_char_t* name); -void ase_awk_clearextio (ase_awk_run_t* run); +void qse_awk_clearextio (qse_awk_run_t* run); #ifdef __cplusplus } diff --git a/qse/lib/awk/func.c b/qse/lib/awk/func.c index 1ae96c5a..3414dbbf 100644 --- a/qse/lib/awk/func.c +++ b/qse/lib/awk/func.c @@ -6,152 +6,152 @@ #include "awk.h" -static int bfn_close (ase_awk_run_t*, const ase_char_t*, ase_size_t); -static int bfn_fflush (ase_awk_run_t*, const ase_char_t*, ase_size_t); -static int bfn_index (ase_awk_run_t*, const ase_char_t*, ase_size_t); -static int bfn_length (ase_awk_run_t*, const ase_char_t*, ase_size_t); -static int bfn_substr (ase_awk_run_t*, const ase_char_t*, ase_size_t); -static int bfn_split (ase_awk_run_t*, const ase_char_t*, ase_size_t); -static int bfn_tolower (ase_awk_run_t*, const ase_char_t*, ase_size_t); -static int bfn_toupper (ase_awk_run_t*, const ase_char_t*, ase_size_t); -static int bfn_gsub (ase_awk_run_t*, const ase_char_t*, ase_size_t); -static int bfn_sub (ase_awk_run_t*, const ase_char_t*, ase_size_t); -static int bfn_match (ase_awk_run_t*, const ase_char_t*, ase_size_t); -static int bfn_sprintf (ase_awk_run_t*, const ase_char_t*, ase_size_t); +static int bfn_close (qse_awk_run_t*, const qse_char_t*, qse_size_t); +static int bfn_fflush (qse_awk_run_t*, const qse_char_t*, qse_size_t); +static int bfn_index (qse_awk_run_t*, const qse_char_t*, qse_size_t); +static int bfn_length (qse_awk_run_t*, const qse_char_t*, qse_size_t); +static int bfn_substr (qse_awk_run_t*, const qse_char_t*, qse_size_t); +static int bfn_split (qse_awk_run_t*, const qse_char_t*, qse_size_t); +static int bfn_tolower (qse_awk_run_t*, const qse_char_t*, qse_size_t); +static int bfn_toupper (qse_awk_run_t*, const qse_char_t*, qse_size_t); +static int bfn_gsub (qse_awk_run_t*, const qse_char_t*, qse_size_t); +static int bfn_sub (qse_awk_run_t*, const qse_char_t*, qse_size_t); +static int bfn_match (qse_awk_run_t*, const qse_char_t*, qse_size_t); +static int bfn_sprintf (qse_awk_run_t*, const qse_char_t*, qse_size_t); #undef MAX -#define MAX ASE_TYPE_UNSIGNED_MAX(ase_size_t) +#define MAX QSE_TYPE_UNSIGNED_MAX(qse_size_t) -static ase_awk_bfn_t sys_bfn[] = +static qse_awk_bfn_t sys_bfn[] = { /* io functions */ - { {ASE_T("close"), 5}, ASE_AWK_EXTIO, {1, 1, ASE_NULL}, bfn_close}, - { {ASE_T("fflush"), 6}, ASE_AWK_EXTIO, {0, 1, ASE_NULL}, bfn_fflush}, + { {QSE_T("close"), 5}, QSE_AWK_EXTIO, {1, 1, QSE_NULL}, bfn_close}, + { {QSE_T("fflush"), 6}, QSE_AWK_EXTIO, {0, 1, QSE_NULL}, bfn_fflush}, /* string functions */ - { {ASE_T("index"), 5}, 0, {2, 2, ASE_NULL}, bfn_index}, - { {ASE_T("substr"), 6}, 0, {2, 3, ASE_NULL}, bfn_substr}, - { {ASE_T("length"), 6}, 0, {1, 1, ASE_NULL}, bfn_length}, - { {ASE_T("split"), 5}, 0, {2, 3, ASE_T("vrv")}, bfn_split}, - { {ASE_T("tolower"), 7}, 0, {1, 1, ASE_NULL}, bfn_tolower}, - { {ASE_T("toupper"), 7}, 0, {1, 1, ASE_NULL}, bfn_toupper}, - { {ASE_T("gsub"), 4}, 0, {2, 3, ASE_T("xvr")}, bfn_gsub}, - { {ASE_T("sub"), 3}, 0, {2, 3, ASE_T("xvr")}, bfn_sub}, - { {ASE_T("match"), 5}, 0, {2, 2, ASE_T("vx")}, bfn_match}, - { {ASE_T("sprintf"), 7}, 0, {1, MAX, ASE_NULL}, bfn_sprintf}, + { {QSE_T("index"), 5}, 0, {2, 2, QSE_NULL}, bfn_index}, + { {QSE_T("substr"), 6}, 0, {2, 3, QSE_NULL}, bfn_substr}, + { {QSE_T("length"), 6}, 0, {1, 1, QSE_NULL}, bfn_length}, + { {QSE_T("split"), 5}, 0, {2, 3, QSE_T("vrv")}, bfn_split}, + { {QSE_T("tolower"), 7}, 0, {1, 1, QSE_NULL}, bfn_tolower}, + { {QSE_T("toupper"), 7}, 0, {1, 1, QSE_NULL}, bfn_toupper}, + { {QSE_T("gsub"), 4}, 0, {2, 3, QSE_T("xvr")}, bfn_gsub}, + { {QSE_T("sub"), 3}, 0, {2, 3, QSE_T("xvr")}, bfn_sub}, + { {QSE_T("match"), 5}, 0, {2, 2, QSE_T("vx")}, bfn_match}, + { {QSE_T("sprintf"), 7}, 0, {1, MAX, QSE_NULL}, bfn_sprintf}, - { {ASE_NULL, 0}, 0, {0, 0, ASE_NULL}, ASE_NULL} + { {QSE_NULL, 0}, 0, {0, 0, QSE_NULL}, QSE_NULL} }; -void* ase_awk_addfunc ( - ase_awk_t* awk, const ase_char_t* name, ase_size_t name_len, - int when_valid, ase_size_t min_args, ase_size_t max_args, - const ase_char_t* arg_spec, - int (*handler)(ase_awk_run_t*,const ase_char_t*,ase_size_t)) +void* qse_awk_addfunc ( + qse_awk_t* awk, const qse_char_t* name, qse_size_t name_len, + int when_valid, qse_size_t min_args, qse_size_t max_args, + const qse_char_t* arg_spec, + int (*handler)(qse_awk_run_t*,const qse_char_t*,qse_size_t)) { - ase_awk_bfn_t* bfn; - ase_size_t spec_len; + qse_awk_bfn_t* bfn; + qse_size_t spec_len; if (name_len <= 0) { - ase_awk_seterror (awk, ASE_AWK_EINVAL, 0, ASE_NULL, 0); - return ASE_NULL; + qse_awk_seterror (awk, QSE_AWK_EINVAL, 0, QSE_NULL, 0); + return QSE_NULL; } - if (ase_awk_getbfn (awk, name, name_len) != ASE_NULL) + if (qse_awk_getbfn (awk, name, name_len) != QSE_NULL) { - ase_cstr_t errarg; + qse_cstr_t errarg; errarg.ptr = name; errarg.len = name_len; - ase_awk_seterror (awk, ASE_AWK_EEXIST, 0, &errarg, 1); - return ASE_NULL; + qse_awk_seterror (awk, QSE_AWK_EEXIST, 0, &errarg, 1); + return QSE_NULL; } - spec_len = (arg_spec == ASE_NULL)? 0: ase_strlen(arg_spec); + spec_len = (arg_spec == QSE_NULL)? 0: qse_strlen(arg_spec); - bfn = (ase_awk_bfn_t*) ASE_AWK_ALLOC (awk, - ASE_SIZEOF(ase_awk_bfn_t) + - (name_len+1) * ASE_SIZEOF(ase_char_t) + - (spec_len+1) * ASE_SIZEOF(ase_char_t)); - if (bfn == ASE_NULL) + bfn = (qse_awk_bfn_t*) QSE_AWK_ALLOC (awk, + QSE_SIZEOF(qse_awk_bfn_t) + + (name_len+1) * QSE_SIZEOF(qse_char_t) + + (spec_len+1) * QSE_SIZEOF(qse_char_t)); + if (bfn == QSE_NULL) { - ase_awk_seterrnum (awk, ASE_AWK_ENOMEM); - return ASE_NULL; + qse_awk_seterrnum (awk, QSE_AWK_ENOMEM); + return QSE_NULL; } - bfn->name.ptr = (ase_char_t*)(bfn + 1); + bfn->name.ptr = (qse_char_t*)(bfn + 1); bfn->name.len = name_len; - ase_strxncpy (bfn->name.ptr, name_len+1, name, name_len); + qse_strxncpy (bfn->name.ptr, name_len+1, name, name_len); bfn->valid = when_valid; bfn->arg.min = min_args; bfn->arg.max = max_args; - if (arg_spec == ASE_NULL) bfn->arg.spec = ASE_NULL; + if (arg_spec == QSE_NULL) bfn->arg.spec = QSE_NULL; else { bfn->arg.spec = bfn->name.ptr + bfn->name.len + 1; - ase_strxcpy (bfn->arg.spec, spec_len+1, arg_spec); + qse_strxcpy (bfn->arg.spec, spec_len+1, arg_spec); } bfn->handler = handler; - if (ase_map_insert (awk->bfn.user, - (ase_char_t*)name, name_len, bfn, 0) == ASE_NULL) + if (qse_map_insert (awk->bfn.user, + (qse_char_t*)name, name_len, bfn, 0) == QSE_NULL) { - ASE_AWK_FREE (awk, bfn); - ase_awk_seterrnum (awk, ASE_AWK_ENOMEM); - return ASE_NULL; + QSE_AWK_FREE (awk, bfn); + qse_awk_seterrnum (awk, QSE_AWK_ENOMEM); + return QSE_NULL; } return bfn; } -int ase_awk_delfunc ( - ase_awk_t* awk, const ase_char_t* name, ase_size_t name_len) +int qse_awk_delfunc ( + qse_awk_t* awk, const qse_char_t* name, qse_size_t name_len) { - if (ase_map_delete (awk->bfn.user, name, name_len) == -1) + if (qse_map_delete (awk->bfn.user, name, name_len) == -1) { - ase_cstr_t errarg; + qse_cstr_t errarg; errarg.ptr = name; errarg.len = name_len; - ase_awk_seterror (awk, ASE_AWK_ENOENT, 0, &errarg, 1); + qse_awk_seterror (awk, QSE_AWK_ENOENT, 0, &errarg, 1); return -1; } return 0; } -void ase_awk_clrbfn (ase_awk_t* awk) +void qse_awk_clrbfn (qse_awk_t* awk) { - ase_map_clear (awk->bfn.user); + qse_map_clear (awk->bfn.user); } -ase_awk_bfn_t* ase_awk_getbfn ( - ase_awk_t* awk, const ase_char_t* name, ase_size_t len) +qse_awk_bfn_t* qse_awk_getbfn ( + qse_awk_t* awk, const qse_char_t* name, qse_size_t len) { - ase_awk_bfn_t* bfn; - ase_map_pair_t* pair; - const ase_char_t* k; - ase_size_t l; + qse_awk_bfn_t* bfn; + qse_map_pair_t* pair; + const qse_char_t* k; + qse_size_t l; /* search the system function table */ - for (bfn = sys_bfn; bfn->name.ptr != ASE_NULL; bfn++) + for (bfn = sys_bfn; bfn->name.ptr != QSE_NULL; bfn++) { if (bfn->valid != 0 && (awk->option & bfn->valid) != bfn->valid) continue; - pair = ase_map_search ( + pair = qse_map_search ( awk->wtab, bfn->name.ptr, bfn->name.len); - if (pair != ASE_NULL) + if (pair != QSE_NULL) { /* found in the customized word table */ - k = ASE_MAP_VPTR(pair); - l = ASE_MAP_VLEN(pair); + k = QSE_MAP_VPTR(pair); + l = QSE_MAP_VLEN(pair); } else { @@ -159,41 +159,41 @@ ase_awk_bfn_t* ase_awk_getbfn ( l = bfn->name.len; } - if (ase_strxncmp (k, l, name, len) == 0) return bfn; + if (qse_strxncmp (k, l, name, len) == 0) return bfn; } /* NOTE: I suspect this block of code might be very fragile. - * because I'm trying to support ase_awk_setword in + * because I'm trying to support qse_awk_setword in * a very flimsy way here. Would it be better to drop - * ase_awk_setword totally? */ - pair = ase_map_search (awk->rwtab, name, len); - if (pair != ASE_NULL) + * qse_awk_setword totally? */ + pair = qse_map_search (awk->rwtab, name, len); + if (pair != QSE_NULL) { /* the current name is a target name for * one of the original word. */ - k = ASE_MAP_VPTR(pair); - l = ASE_MAP_VLEN(pair); + k = QSE_MAP_VPTR(pair); + l = QSE_MAP_VLEN(pair); } else { - pair = ase_map_search (awk->wtab, name, len); - if (pair != ASE_NULL) + pair = qse_map_search (awk->wtab, name, len); + if (pair != QSE_NULL) { - k = ASE_MAP_VPTR(pair); - l = ASE_MAP_VLEN(pair); + k = QSE_MAP_VPTR(pair); + l = QSE_MAP_VLEN(pair); - if (ase_strxncmp (name, len, k, l) != 0) + if (qse_strxncmp (name, len, k, l) != 0) { /* it name is not a target name but has * a target name different from itself, * it cannot be a intrinsic function name. * * For instance, name is "sin" here after - * ase_awk_setword ("sin", "cain") is called. + * qse_awk_setword ("sin", "cain") is called. * If name were "cain", it would be handled * in the outmost if block */ - return ASE_NULL; + return QSE_NULL; } } else @@ -204,42 +204,42 @@ ase_awk_bfn_t* ase_awk_getbfn ( } /* END NOTE */ - pair = ase_map_search (awk->bfn.user, k, l); - if (pair == ASE_NULL) return ASE_NULL; + pair = qse_map_search (awk->bfn.user, k, l); + if (pair == QSE_NULL) return QSE_NULL; - bfn = (ase_awk_bfn_t*)ASE_MAP_VPTR(pair); - if (bfn->valid != 0 && (awk->option & bfn->valid) == 0) return ASE_NULL; + bfn = (qse_awk_bfn_t*)QSE_MAP_VPTR(pair); + if (bfn->valid != 0 && (awk->option & bfn->valid) == 0) return QSE_NULL; return bfn; } static int bfn_close ( - ase_awk_run_t* run, const ase_char_t* fnm, ase_size_t fnl) + qse_awk_run_t* run, const qse_char_t* fnm, qse_size_t fnl) { - ase_size_t nargs; - ase_awk_val_t* v, * a0; + qse_size_t nargs; + qse_awk_val_t* v, * a0; int n; - ase_char_t* name; - ase_size_t len; + qse_char_t* name; + qse_size_t len; - nargs = ase_awk_getnargs (run); - ASE_ASSERT (nargs == 1); + nargs = qse_awk_getnargs (run); + QSE_ASSERT (nargs == 1); /* TODO: support close (xxx, "to"/"from") like gawk */ - a0 = ase_awk_getarg (run, 0); - ASE_ASSERT (a0 != ASE_NULL); + a0 = qse_awk_getarg (run, 0); + QSE_ASSERT (a0 != QSE_NULL); - if (a0->type == ASE_AWK_VAL_STR) + if (a0->type == QSE_AWK_VAL_STR) { - name = ((ase_awk_val_str_t*)a0)->buf; - len = ((ase_awk_val_str_t*)a0)->len; + name = ((qse_awk_val_str_t*)a0)->buf; + len = ((qse_awk_val_str_t*)a0)->len; } else { - name = ase_awk_valtostr ( - run, a0, ASE_AWK_VALTOSTR_CLEAR, ASE_NULL, &len); - if (name == ASE_NULL) return -1; + name = qse_awk_valtostr ( + run, a0, QSE_AWK_VALTOSTR_CLEAR, QSE_NULL, &len); + if (name == QSE_NULL) return -1; } if (len == 0) @@ -252,67 +252,67 @@ static int bfn_close ( * an empty string for its identification because closeextio * closes any extios that match the name given unlike * closeextio_read or closeextio_write. */ - if (a0->type != ASE_AWK_VAL_STR) ASE_AWK_FREE (run->awk, name); + if (a0->type != QSE_AWK_VAL_STR) QSE_AWK_FREE (run->awk, name); n = -1; goto skip_close; } while (len > 0) { - if (name[--len] == ASE_T('\0')) + if (name[--len] == QSE_T('\0')) { /* the name contains a null string. * make close return -1 */ - if (a0->type != ASE_AWK_VAL_STR) - ASE_AWK_FREE (run->awk, name); + if (a0->type != QSE_AWK_VAL_STR) + QSE_AWK_FREE (run->awk, name); n = -1; goto skip_close; } } - n = ase_awk_closeextio (run, name); + n = qse_awk_closeextio (run, name); /* - if (n == -1 && run->errnum != ASE_AWK_EIONONE) + if (n == -1 && run->errnum != QSE_AWK_EIONONE) { - if (a0->type != ASE_AWK_VAL_STR) - ASE_AWK_FREE (run->awk, name); + if (a0->type != QSE_AWK_VAL_STR) + QSE_AWK_FREE (run->awk, name); return -1; } */ - if (a0->type != ASE_AWK_VAL_STR) ASE_AWK_FREE (run->awk, name); + if (a0->type != QSE_AWK_VAL_STR) QSE_AWK_FREE (run->awk, name); skip_close: - v = ase_awk_makeintval (run, (ase_long_t)n); - if (v == ASE_NULL) + v = qse_awk_makeintval (run, (qse_long_t)n); + if (v == QSE_NULL) { - /*ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM);*/ + /*qse_awk_setrunerrnum (run, QSE_AWK_ENOMEM);*/ return -1; } - ase_awk_setretval (run, v); + qse_awk_setretval (run, v); return 0; } static int flush_extio ( - ase_awk_run_t* run, int extio, const ase_char_t* name, int n) + qse_awk_run_t* run, int extio, const qse_char_t* name, int n) { int n2; - if (run->extio.handler[extio] != ASE_NULL) + if (run->extio.handler[extio] != QSE_NULL) { - n2 = ase_awk_flushextio (run, extio, name); + n2 = qse_awk_flushextio (run, extio, name); if (n2 == -1) { /* - if (run->errnum == ASE_AWK_EIOIMPL) n = -1; - else if (run->errnum == ASE_AWK_EIONONE) + if (run->errnum == QSE_AWK_EIOIMPL) n = -1; + else if (run->errnum == QSE_AWK_EIONONE) { if (n != 0) n = -2; } else n = -99; */ - if (run->errnum == ASE_AWK_EIONONE) + if (run->errnum == QSE_AWK_EIONONE) { if (n != 0) n = -2; } @@ -325,38 +325,38 @@ static int flush_extio ( } static int bfn_fflush ( - ase_awk_run_t* run, const ase_char_t* fnm, ase_size_t fnl) + qse_awk_run_t* run, const qse_char_t* fnm, qse_size_t fnl) { - ase_size_t nargs; - ase_awk_val_t* a0; - ase_char_t* str0; - ase_size_t len0; + qse_size_t nargs; + qse_awk_val_t* a0; + qse_char_t* str0; + qse_size_t len0; int n; - nargs = ase_awk_getnargs (run); - ASE_ASSERT (nargs == 0 || nargs == 1); + nargs = qse_awk_getnargs (run); + QSE_ASSERT (nargs == 0 || nargs == 1); if (nargs == 0) { /* flush the console output. * fflush() should return -1 on errors */ - n = ase_awk_flushextio (run, ASE_AWK_OUT_CONSOLE, ASE_T("")); + n = qse_awk_flushextio (run, QSE_AWK_OUT_CONSOLE, QSE_T("")); } else { - ase_char_t* ptr, * end; + qse_char_t* ptr, * end; - a0 = ase_awk_getarg (run, 0); - if (a0->type == ASE_AWK_VAL_STR) + a0 = qse_awk_getarg (run, 0); + if (a0->type == QSE_AWK_VAL_STR) { - str0 = ((ase_awk_val_str_t*)a0)->buf; - len0 = ((ase_awk_val_str_t*)a0)->len; + str0 = ((qse_awk_val_str_t*)a0)->buf; + len0 = ((qse_awk_val_str_t*)a0)->len; } else { - str0 = ase_awk_valtostr ( - run, a0, ASE_AWK_VALTOSTR_CLEAR, ASE_NULL, &len0); - if (str0 == ASE_NULL) return -1; + str0 = qse_awk_valtostr ( + run, a0, QSE_AWK_VALTOSTR_CLEAR, QSE_NULL, &len0); + if (str0 == QSE_NULL) return -1; } @@ -365,10 +365,10 @@ static int bfn_fflush ( ptr = str0; end = str0 + len0; while (ptr < end) { - if (*ptr == ASE_T('\0')) + if (*ptr == QSE_T('\0')) { - if (a0->type != ASE_AWK_VAL_STR) - ASE_AWK_FREE (run->awk, str0); + if (a0->type != QSE_AWK_VAL_STR) + QSE_AWK_FREE (run->awk, str0); n = -1; goto skip_flush; } @@ -378,16 +378,16 @@ static int bfn_fflush ( /* flush the given extio */ n = flush_extio ( - run, ASE_AWK_EXTIO_FILE, - ((len0 == 0)? ASE_NULL: str0), 1); + run, QSE_AWK_EXTIO_FILE, + ((len0 == 0)? QSE_NULL: str0), 1); /*if (n == -99) return -1;*/ n = flush_extio ( - run, ASE_AWK_EXTIO_PIPE, - ((len0 == 0)? ASE_NULL: str0), n); + run, QSE_AWK_EXTIO_PIPE, + ((len0 == 0)? QSE_NULL: str0), n); /*if (n == -99) return -1;*/ n = flush_extio ( - run, ASE_AWK_EXTIO_COPROC, - ((len0 == 0)? ASE_NULL: str0), n); + run, QSE_AWK_EXTIO_COPROC, + ((len0 == 0)? QSE_NULL: str0), n); /*if (n == -99) return -1;*/ /* if n remains 1, no ip handlers have been defined for @@ -396,280 +396,280 @@ static int bfn_fflush ( * if n is -1, the io handler has returned an error */ if (n != 0) n = -1; - if (a0->type != ASE_AWK_VAL_STR) ASE_AWK_FREE (run->awk, str0); + if (a0->type != QSE_AWK_VAL_STR) QSE_AWK_FREE (run->awk, str0); } skip_flush: - a0 = ase_awk_makeintval (run, (ase_long_t)n); - if (a0 == ASE_NULL) + a0 = qse_awk_makeintval (run, (qse_long_t)n); + if (a0 == QSE_NULL) { - /*ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM);*/ + /*qse_awk_setrunerrnum (run, QSE_AWK_ENOMEM);*/ return -1; } - ase_awk_setretval (run, a0); + qse_awk_setretval (run, a0); return 0; } static int bfn_index ( - ase_awk_run_t* run, const ase_char_t* fnm, ase_size_t fnl) + qse_awk_run_t* run, const qse_char_t* fnm, qse_size_t fnl) { - ase_size_t nargs; - ase_awk_val_t* a0, * a1; - ase_char_t* str0, * str1, * ptr; - ase_size_t len0, len1; - ase_long_t idx; + qse_size_t nargs; + qse_awk_val_t* a0, * a1; + qse_char_t* str0, * str1, * ptr; + qse_size_t len0, len1; + qse_long_t idx; - nargs = ase_awk_getnargs (run); - ASE_ASSERT (nargs == 2); + nargs = qse_awk_getnargs (run); + QSE_ASSERT (nargs == 2); - a0 = ase_awk_getarg (run, 0); - a1 = ase_awk_getarg (run, 1); + a0 = qse_awk_getarg (run, 0); + a1 = qse_awk_getarg (run, 1); - if (a0->type == ASE_AWK_VAL_STR) + if (a0->type == QSE_AWK_VAL_STR) { - str0 = ((ase_awk_val_str_t*)a0)->buf; - len0 = ((ase_awk_val_str_t*)a0)->len; + str0 = ((qse_awk_val_str_t*)a0)->buf; + len0 = ((qse_awk_val_str_t*)a0)->len; } else { - str0 = ase_awk_valtostr ( - run, a0, ASE_AWK_VALTOSTR_CLEAR, ASE_NULL, &len0); - if (str0 == ASE_NULL) return -1; + str0 = qse_awk_valtostr ( + run, a0, QSE_AWK_VALTOSTR_CLEAR, QSE_NULL, &len0); + if (str0 == QSE_NULL) return -1; } - if (a1->type == ASE_AWK_VAL_STR) + if (a1->type == QSE_AWK_VAL_STR) { - str1 = ((ase_awk_val_str_t*)a1)->buf; - len1 = ((ase_awk_val_str_t*)a1)->len; + str1 = ((qse_awk_val_str_t*)a1)->buf; + len1 = ((qse_awk_val_str_t*)a1)->len; } else { - str1 = ase_awk_valtostr ( - run, a1, ASE_AWK_VALTOSTR_CLEAR, ASE_NULL, &len1); - if (str1 == ASE_NULL) + str1 = qse_awk_valtostr ( + run, a1, QSE_AWK_VALTOSTR_CLEAR, QSE_NULL, &len1); + if (str1 == QSE_NULL) { - if (a0->type != ASE_AWK_VAL_STR) - ASE_AWK_FREE (run->awk, str0); + if (a0->type != QSE_AWK_VAL_STR) + QSE_AWK_FREE (run->awk, str0); return -1; } } - ptr = ase_strxnstr (str0, len0, str1, len1); - idx = (ptr == ASE_NULL)? -1: (ase_long_t)(ptr - str0); + ptr = qse_strxnstr (str0, len0, str1, len1); + idx = (ptr == QSE_NULL)? -1: (qse_long_t)(ptr - str0); - if (ase_awk_getoption(run->awk) & ASE_AWK_BASEONE) idx = idx + 1; + if (qse_awk_getoption(run->awk) & QSE_AWK_BASEONE) idx = idx + 1; - if (a0->type != ASE_AWK_VAL_STR) ASE_AWK_FREE (run->awk, str0); - if (a1->type != ASE_AWK_VAL_STR) ASE_AWK_FREE (run->awk, str1); + if (a0->type != QSE_AWK_VAL_STR) QSE_AWK_FREE (run->awk, str0); + if (a1->type != QSE_AWK_VAL_STR) QSE_AWK_FREE (run->awk, str1); - a0 = ase_awk_makeintval (run, idx); - if (a0 == ASE_NULL) + a0 = qse_awk_makeintval (run, idx); + if (a0 == QSE_NULL) { - /*ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM);*/ + /*qse_awk_setrunerrnum (run, QSE_AWK_ENOMEM);*/ return -1; } - ase_awk_setretval (run, a0); + qse_awk_setretval (run, a0); return 0; } static int bfn_length ( - ase_awk_run_t* run, const ase_char_t* fnm, ase_size_t fnl) + qse_awk_run_t* run, const qse_char_t* fnm, qse_size_t fnl) { - ase_size_t nargs; - ase_awk_val_t* v; - ase_char_t* str; - ase_size_t len; + qse_size_t nargs; + qse_awk_val_t* v; + qse_char_t* str; + qse_size_t len; - nargs = ase_awk_getnargs (run); - ASE_ASSERT (nargs == 1); + nargs = qse_awk_getnargs (run); + QSE_ASSERT (nargs == 1); - v = ase_awk_getarg (run, 0); - if (v->type == ASE_AWK_VAL_STR) + v = qse_awk_getarg (run, 0); + if (v->type == QSE_AWK_VAL_STR) { - len = ((ase_awk_val_str_t*)v)->len; + len = ((qse_awk_val_str_t*)v)->len; } else { - str = ase_awk_valtostr ( - run, v, ASE_AWK_VALTOSTR_CLEAR, ASE_NULL, &len); - if (str == ASE_NULL) return -1; - ASE_AWK_FREE (run->awk, str); + str = qse_awk_valtostr ( + run, v, QSE_AWK_VALTOSTR_CLEAR, QSE_NULL, &len); + if (str == QSE_NULL) return -1; + QSE_AWK_FREE (run->awk, str); } - v = ase_awk_makeintval (run, len); - if (v == ASE_NULL) + v = qse_awk_makeintval (run, len); + if (v == QSE_NULL) { - /*ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM);*/ + /*qse_awk_setrunerrnum (run, QSE_AWK_ENOMEM);*/ return -1; } - ase_awk_setretval (run, v); + qse_awk_setretval (run, v); return 0; } static int bfn_substr ( - ase_awk_run_t* run, const ase_char_t* fnm, ase_size_t fnl) + qse_awk_run_t* run, const qse_char_t* fnm, qse_size_t fnl) { - ase_size_t nargs; - ase_awk_val_t* a0, * a1, * a2, * r; - ase_char_t* str; - ase_size_t len; - ase_long_t lindex, lcount; - ase_real_t rindex, rcount; + qse_size_t nargs; + qse_awk_val_t* a0, * a1, * a2, * r; + qse_char_t* str; + qse_size_t len; + qse_long_t lindex, lcount; + qse_real_t rindex, rcount; int n; - nargs = ase_awk_getnargs (run); - ASE_ASSERT (nargs >= 2 && nargs <= 3); + nargs = qse_awk_getnargs (run); + QSE_ASSERT (nargs >= 2 && nargs <= 3); - a0 = ase_awk_getarg (run, 0); - a1 = ase_awk_getarg (run, 1); - a2 = (nargs >= 3)? ase_awk_getarg (run, 2): ASE_NULL; + a0 = qse_awk_getarg (run, 0); + a1 = qse_awk_getarg (run, 1); + a2 = (nargs >= 3)? qse_awk_getarg (run, 2): QSE_NULL; - if (a0->type == ASE_AWK_VAL_STR) + if (a0->type == QSE_AWK_VAL_STR) { - str = ((ase_awk_val_str_t*)a0)->buf; - len = ((ase_awk_val_str_t*)a0)->len; + str = ((qse_awk_val_str_t*)a0)->buf; + len = ((qse_awk_val_str_t*)a0)->len; } else { - str = ase_awk_valtostr ( - run, a0, ASE_AWK_VALTOSTR_CLEAR, ASE_NULL, &len); - if (str == ASE_NULL) return -1; + str = qse_awk_valtostr ( + run, a0, QSE_AWK_VALTOSTR_CLEAR, QSE_NULL, &len); + if (str == QSE_NULL) return -1; } - n = ase_awk_valtonum (run, a1, &lindex, &rindex); + n = qse_awk_valtonum (run, a1, &lindex, &rindex); if (n == -1) { - if (a0->type != ASE_AWK_VAL_STR) ASE_AWK_FREE (run->awk, str); + if (a0->type != QSE_AWK_VAL_STR) QSE_AWK_FREE (run->awk, str); return -1; } - if (n == 1) lindex = (ase_long_t)rindex; + if (n == 1) lindex = (qse_long_t)rindex; - if (a2 == ASE_NULL) lcount = (ase_long_t)len; + if (a2 == QSE_NULL) lcount = (qse_long_t)len; else { - n = ase_awk_valtonum (run, a2, &lcount, &rcount); + n = qse_awk_valtonum (run, a2, &lcount, &rcount); if (n == -1) { - if (a0->type != ASE_AWK_VAL_STR) - ASE_AWK_FREE (run->awk, str); + if (a0->type != QSE_AWK_VAL_STR) + QSE_AWK_FREE (run->awk, str); return -1; } - if (n == 1) lcount = (ase_long_t)rcount; + if (n == 1) lcount = (qse_long_t)rcount; } - if (ase_awk_getoption(run->awk) & ASE_AWK_BASEONE) lindex = lindex - 1; - if (lindex >= (ase_long_t)len) lindex = (ase_long_t)len; + if (qse_awk_getoption(run->awk) & QSE_AWK_BASEONE) lindex = lindex - 1; + if (lindex >= (qse_long_t)len) lindex = (qse_long_t)len; else if (lindex < 0) lindex = 0; if (lcount < 0) lcount = 0; - else if (lcount > (ase_long_t)len - lindex) + else if (lcount > (qse_long_t)len - lindex) { - lcount = (ase_long_t)len - lindex; + lcount = (qse_long_t)len - lindex; } - r = ase_awk_makestrval (run, &str[lindex], (ase_size_t)lcount); - if (r == ASE_NULL) + r = qse_awk_makestrval (run, &str[lindex], (qse_size_t)lcount); + if (r == QSE_NULL) { - if (a0->type != ASE_AWK_VAL_STR) ASE_AWK_FREE (run->awk, str); - /*ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM);*/ + if (a0->type != QSE_AWK_VAL_STR) QSE_AWK_FREE (run->awk, str); + /*qse_awk_setrunerrnum (run, QSE_AWK_ENOMEM);*/ return -1; } - if (a0->type != ASE_AWK_VAL_STR) ASE_AWK_FREE (run->awk, str); - ase_awk_setretval (run, r); + if (a0->type != QSE_AWK_VAL_STR) QSE_AWK_FREE (run->awk, str); + qse_awk_setretval (run, r); return 0; } static int bfn_split ( - ase_awk_run_t* run, const ase_char_t* fnm, ase_size_t fnl) + qse_awk_run_t* run, const qse_char_t* fnm, qse_size_t fnl) { - ase_size_t nargs; - ase_awk_val_t* a0, * a1, * a2, * t1, * t2, ** a1_ref; - ase_char_t* str, * str_free, * p, * tok; - ase_size_t str_len, str_left, tok_len; - ase_long_t sta, num; - ase_char_t key[ASE_SIZEOF(ase_long_t)*8+2]; - ase_size_t key_len; - ase_char_t* fs_ptr, * fs_free; - ase_size_t fs_len; - void* fs_rex = ASE_NULL; - void* fs_rex_free = ASE_NULL; + qse_size_t nargs; + qse_awk_val_t* a0, * a1, * a2, * t1, * t2, ** a1_ref; + qse_char_t* str, * str_free, * p, * tok; + qse_size_t str_len, str_left, tok_len; + qse_long_t sta, num; + qse_char_t key[QSE_SIZEOF(qse_long_t)*8+2]; + qse_size_t key_len; + qse_char_t* fs_ptr, * fs_free; + qse_size_t fs_len; + void* fs_rex = QSE_NULL; + void* fs_rex_free = QSE_NULL; int errnum; - nargs = ase_awk_getnargs (run); - ASE_ASSERT (nargs >= 2 && nargs <= 3); + nargs = qse_awk_getnargs (run); + QSE_ASSERT (nargs >= 2 && nargs <= 3); - a0 = ase_awk_getarg (run, 0); - a1 = ase_awk_getarg (run, 1); - a2 = (nargs >= 3)? ase_awk_getarg (run, 2): ASE_NULL; + a0 = qse_awk_getarg (run, 0); + a1 = qse_awk_getarg (run, 1); + a2 = (nargs >= 3)? qse_awk_getarg (run, 2): QSE_NULL; - ASE_ASSERT (a1->type == ASE_AWK_VAL_REF); + QSE_ASSERT (a1->type == QSE_AWK_VAL_REF); - if (((ase_awk_val_ref_t*)a1)->id >= ASE_AWK_VAL_REF_NAMEDIDX && - ((ase_awk_val_ref_t*)a1)->id <= ASE_AWK_VAL_REF_ARGIDX) + if (((qse_awk_val_ref_t*)a1)->id >= QSE_AWK_VAL_REF_NAMEDIDX && + ((qse_awk_val_ref_t*)a1)->id <= QSE_AWK_VAL_REF_ARGIDX) { /* an indexed value should not be assigned another map */ - ase_awk_setrunerrnum (run, ASE_AWK_EIDXVALASSMAP); + qse_awk_setrunerrnum (run, QSE_AWK_EIDXVALASSMAP); return -1; } - if (((ase_awk_val_ref_t*)a1)->id == ASE_AWK_VAL_REF_POS) + if (((qse_awk_val_ref_t*)a1)->id == QSE_AWK_VAL_REF_POS) { /* a positional should not be assigned a map */ - ase_awk_setrunerrnum (run, ASE_AWK_EPOSVALASSMAP); + qse_awk_setrunerrnum (run, QSE_AWK_EPOSVALASSMAP); return -1; } - a1_ref = (ase_awk_val_t**)((ase_awk_val_ref_t*)a1)->adr; - if ((*a1_ref)->type != ASE_AWK_VAL_NIL && - (*a1_ref)->type != ASE_AWK_VAL_MAP) + a1_ref = (qse_awk_val_t**)((qse_awk_val_ref_t*)a1)->adr; + if ((*a1_ref)->type != QSE_AWK_VAL_NIL && + (*a1_ref)->type != QSE_AWK_VAL_MAP) { /* cannot change a scalar value to a map */ - ase_awk_setrunerrnum (run, ASE_AWK_ESCALARTOMAP); + qse_awk_setrunerrnum (run, QSE_AWK_ESCALARTOMAP); return -1; } - if (a0->type == ASE_AWK_VAL_STR) + if (a0->type == QSE_AWK_VAL_STR) { - str = ((ase_awk_val_str_t*)a0)->buf; - str_len = ((ase_awk_val_str_t*)a0)->len; - str_free = ASE_NULL; + str = ((qse_awk_val_str_t*)a0)->buf; + str_len = ((qse_awk_val_str_t*)a0)->len; + str_free = QSE_NULL; } else { - str = ase_awk_valtostr ( - run, a0, ASE_AWK_VALTOSTR_CLEAR, ASE_NULL, &str_len); - if (str == ASE_NULL) return -1; + str = qse_awk_valtostr ( + run, a0, QSE_AWK_VALTOSTR_CLEAR, QSE_NULL, &str_len); + if (str == QSE_NULL) return -1; str_free = str; } - if (a2 == ASE_NULL) + if (a2 == QSE_NULL) { /* get the value from FS */ - t1 = ase_awk_getglobal (run, ASE_AWK_GLOBAL_FS); - if (t1->type == ASE_AWK_VAL_NIL) + t1 = qse_awk_getglobal (run, QSE_AWK_GLOBAL_FS); + if (t1->type == QSE_AWK_VAL_NIL) { - fs_ptr = ASE_T(" "); + fs_ptr = QSE_T(" "); fs_len = 1; - fs_free = ASE_NULL; + fs_free = QSE_NULL; } - else if (t1->type == ASE_AWK_VAL_STR) + else if (t1->type == QSE_AWK_VAL_STR) { - fs_ptr = ((ase_awk_val_str_t*)t1)->buf; - fs_len = ((ase_awk_val_str_t*)t1)->len; - fs_free = ASE_NULL; + fs_ptr = ((qse_awk_val_str_t*)t1)->buf; + fs_len = ((qse_awk_val_str_t*)t1)->len; + fs_free = QSE_NULL; } else { - fs_ptr = ase_awk_valtostr ( - run, t1, ASE_AWK_VALTOSTR_CLEAR, ASE_NULL, &fs_len); - if (fs_ptr == ASE_NULL) + fs_ptr = qse_awk_valtostr ( + run, t1, QSE_AWK_VALTOSTR_CLEAR, QSE_NULL, &fs_len); + if (fs_ptr == QSE_NULL) { - if (str_free != ASE_NULL) - ASE_AWK_FREE (run->awk, str_free); + if (str_free != QSE_NULL) + QSE_AWK_FREE (run->awk, str_free); return -1; } fs_free = fs_ptr; @@ -678,25 +678,25 @@ static int bfn_split ( if (fs_len > 1) { fs_rex = run->global.fs; - fs_rex_free = ASE_NULL; + fs_rex_free = QSE_NULL; } } else { - if (a2->type == ASE_AWK_VAL_STR) + if (a2->type == QSE_AWK_VAL_STR) { - fs_ptr = ((ase_awk_val_str_t*)a2)->buf; - fs_len = ((ase_awk_val_str_t*)a2)->len; - fs_free = ASE_NULL; + fs_ptr = ((qse_awk_val_str_t*)a2)->buf; + fs_len = ((qse_awk_val_str_t*)a2)->len; + fs_free = QSE_NULL; } else { - fs_ptr = ase_awk_valtostr ( - run, a2, ASE_AWK_VALTOSTR_CLEAR, ASE_NULL, &fs_len); - if (fs_ptr == ASE_NULL) + fs_ptr = qse_awk_valtostr ( + run, a2, QSE_AWK_VALTOSTR_CLEAR, QSE_NULL, &fs_len); + if (fs_ptr == QSE_NULL) { - if (str_free != ASE_NULL) - ASE_AWK_FREE (run->awk, str_free); + if (str_free != QSE_NULL) + QSE_AWK_FREE (run->awk, str_free); return -1; } fs_free = fs_ptr; @@ -704,118 +704,118 @@ static int bfn_split ( if (fs_len > 1) { - fs_rex = ASE_AWK_BUILDREX ( + fs_rex = QSE_AWK_BUILDREX ( run->awk, fs_ptr, fs_len, &errnum); - if (fs_rex == ASE_NULL) + if (fs_rex == QSE_NULL) { - if (str_free != ASE_NULL) - ASE_AWK_FREE (run->awk, str_free); - if (fs_free != ASE_NULL) - ASE_AWK_FREE (run->awk, fs_free); - ase_awk_setrunerrnum (run, errnum); + if (str_free != QSE_NULL) + QSE_AWK_FREE (run->awk, str_free); + if (fs_free != QSE_NULL) + QSE_AWK_FREE (run->awk, fs_free); + qse_awk_setrunerrnum (run, errnum); return -1; } fs_rex_free = fs_rex; } } - t1 = ase_awk_makemapval (run); - if (t1 == ASE_NULL) + t1 = qse_awk_makemapval (run); + if (t1 == QSE_NULL) { - if (str_free != ASE_NULL) - ASE_AWK_FREE (run->awk, str_free); - if (fs_free != ASE_NULL) - ASE_AWK_FREE (run->awk, fs_free); - if (fs_rex_free != ASE_NULL) - ASE_AWK_FREEREX (run->awk, fs_rex_free); - /*ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM);*/ + if (str_free != QSE_NULL) + QSE_AWK_FREE (run->awk, str_free); + if (fs_free != QSE_NULL) + QSE_AWK_FREE (run->awk, fs_free); + if (fs_rex_free != QSE_NULL) + QSE_AWK_FREEREX (run->awk, fs_rex_free); + /*qse_awk_setrunerrnum (run, QSE_AWK_ENOMEM);*/ return -1; } - ase_awk_refdownval (run, *a1_ref); + qse_awk_refdownval (run, *a1_ref); *a1_ref = t1; - ase_awk_refupval (run, *a1_ref); + qse_awk_refupval (run, *a1_ref); p = str; str_left = str_len; - sta = (ase_awk_getoption(run->awk) & ASE_AWK_BASEONE)? 1: 0; + sta = (qse_awk_getoption(run->awk) & QSE_AWK_BASEONE)? 1: 0; num = sta; - while (p != ASE_NULL) + while (p != QSE_NULL) { if (fs_len <= 1) { - p = ase_awk_strxntok (run, + p = qse_awk_strxntok (run, p, str_len, fs_ptr, fs_len, &tok, &tok_len); } else { - p = ase_awk_strxntokbyrex (run, p, str_len, + p = qse_awk_strxntokbyrex (run, p, str_len, fs_rex, &tok, &tok_len, &errnum); - if (p == ASE_NULL && errnum != ASE_AWK_ENOERR) + if (p == QSE_NULL && errnum != QSE_AWK_ENOERR) { - if (str_free != ASE_NULL) - ASE_AWK_FREE (run->awk, str_free); - if (fs_free != ASE_NULL) - ASE_AWK_FREE (run->awk, fs_free); - if (fs_rex_free != ASE_NULL) - ASE_AWK_FREEREX (run->awk, fs_rex_free); - ase_awk_setrunerrnum (run, errnum); + if (str_free != QSE_NULL) + QSE_AWK_FREE (run->awk, str_free); + if (fs_free != QSE_NULL) + QSE_AWK_FREE (run->awk, fs_free); + if (fs_rex_free != QSE_NULL) + QSE_AWK_FREEREX (run->awk, fs_rex_free); + qse_awk_setrunerrnum (run, errnum); return -1; } } - if (num == 0 && p == ASE_NULL && tok_len == 0) + if (num == 0 && p == QSE_NULL && tok_len == 0) { /* no field at all*/ break; } - ASE_ASSERT ( - (tok != ASE_NULL && tok_len > 0) || tok_len == 0); + QSE_ASSERT ( + (tok != QSE_NULL && tok_len > 0) || tok_len == 0); /* create the field string */ - t2 = ase_awk_makestrval (run, tok, tok_len); - if (t2 == ASE_NULL) + t2 = qse_awk_makestrval (run, tok, tok_len); + if (t2 == QSE_NULL) { - if (str_free != ASE_NULL) - ASE_AWK_FREE (run->awk, str_free); - if (fs_free != ASE_NULL) - ASE_AWK_FREE (run->awk, fs_free); - if (fs_rex_free != ASE_NULL) - ASE_AWK_FREEREX (run->awk, fs_rex_free); - /*ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM);*/ + if (str_free != QSE_NULL) + QSE_AWK_FREE (run->awk, str_free); + if (fs_free != QSE_NULL) + QSE_AWK_FREE (run->awk, fs_free); + if (fs_rex_free != QSE_NULL) + QSE_AWK_FREEREX (run->awk, fs_rex_free); + /*qse_awk_setrunerrnum (run, QSE_AWK_ENOMEM);*/ return -1; } /* put it into the map */ - key_len = ase_awk_longtostr ( - num, 10, ASE_NULL, key, ASE_COUNTOF(key)); - ASE_ASSERT (key_len != (ase_size_t)-1); + key_len = qse_awk_longtostr ( + num, 10, QSE_NULL, key, QSE_COUNTOF(key)); + QSE_ASSERT (key_len != (qse_size_t)-1); /* don't forget to update the reference count when you * handle the assignment-like situation. anyway, it is * incremented in advance as if the assignment was successful. * it is decremented if the assignement fails. */ - ase_awk_refupval (run, t2); + qse_awk_refupval (run, t2); - if (ase_map_insert ( - ((ase_awk_val_map_t*)t1)->map, - key, key_len, t2, 0) == ASE_NULL) + if (qse_map_insert ( + ((qse_awk_val_map_t*)t1)->map, + key, key_len, t2, 0) == QSE_NULL) { /* assignment failed. restore the reference counter */ - ase_awk_refdownval (run, t2); + qse_awk_refdownval (run, t2); - if (str_free != ASE_NULL) - ASE_AWK_FREE (run->awk, str_free); - if (fs_free != ASE_NULL) - ASE_AWK_FREE (run->awk, fs_free); - if (fs_rex_free != ASE_NULL) - ASE_AWK_FREEREX (run->awk, fs_rex_free); + if (str_free != QSE_NULL) + QSE_AWK_FREE (run->awk, str_free); + if (fs_free != QSE_NULL) + QSE_AWK_FREE (run->awk, fs_free); + if (fs_rex_free != QSE_NULL) + QSE_AWK_FREEREX (run->awk, fs_rex_free); - /* ase_map_insert() fails if the key exists. + /* qse_map_insert() fails if the key exists. * that can't happen here. so set the error code * to ENOMEM */ - ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM); + qse_awk_setrunerrnum (run, QSE_AWK_ENOMEM); return -1; } @@ -823,153 +823,153 @@ static int bfn_split ( str_len = str_left - (p - str); } - if (str_free != ASE_NULL) ASE_AWK_FREE (run->awk, str_free); - if (fs_free != ASE_NULL) ASE_AWK_FREE (run->awk, fs_free); - if (fs_rex_free != ASE_NULL) ASE_AWK_FREEREX (run->awk, fs_rex_free); + if (str_free != QSE_NULL) QSE_AWK_FREE (run->awk, str_free); + if (fs_free != QSE_NULL) QSE_AWK_FREE (run->awk, fs_free); + if (fs_rex_free != QSE_NULL) QSE_AWK_FREEREX (run->awk, fs_rex_free); if (sta == 1) num--; - t1 = ase_awk_makeintval (run, num); - if (t1 == ASE_NULL) + t1 = qse_awk_makeintval (run, num); + if (t1 == QSE_NULL) { - /*ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM);*/ + /*qse_awk_setrunerrnum (run, QSE_AWK_ENOMEM);*/ return -1; } - ase_awk_setretval (run, t1); + qse_awk_setretval (run, t1); return 0; } static int bfn_tolower ( - ase_awk_run_t* run, const ase_char_t* fnm, ase_size_t fnl) + qse_awk_run_t* run, const qse_char_t* fnm, qse_size_t fnl) { - ase_size_t nargs; - ase_char_t* str; - ase_size_t len, i; - ase_awk_val_t* a0, * r; + qse_size_t nargs; + qse_char_t* str; + qse_size_t len, i; + qse_awk_val_t* a0, * r; - nargs = ase_awk_getnargs (run); - ASE_ASSERT (nargs == 1); + nargs = qse_awk_getnargs (run); + QSE_ASSERT (nargs == 1); - a0 = ase_awk_getarg (run, 0); + a0 = qse_awk_getarg (run, 0); - if (a0->type == ASE_AWK_VAL_STR) + if (a0->type == QSE_AWK_VAL_STR) { - str = ((ase_awk_val_str_t*)a0)->buf; - len = ((ase_awk_val_str_t*)a0)->len; + str = ((qse_awk_val_str_t*)a0)->buf; + len = ((qse_awk_val_str_t*)a0)->len; } else { - str = ase_awk_valtostr ( - run, a0, ASE_AWK_VALTOSTR_CLEAR, ASE_NULL, &len); - if (str == ASE_NULL) return -1; + str = qse_awk_valtostr ( + run, a0, QSE_AWK_VALTOSTR_CLEAR, QSE_NULL, &len); + if (str == QSE_NULL) return -1; } - for (i = 0; i < len; i++) str[i] = ASE_AWK_TOLOWER (run->awk, str[i]); + for (i = 0; i < len; i++) str[i] = QSE_AWK_TOLOWER (run->awk, str[i]); - r = ase_awk_makestrval (run, str, len); - if (r == ASE_NULL) + r = qse_awk_makestrval (run, str, len); + if (r == QSE_NULL) { - if (a0->type != ASE_AWK_VAL_STR) ASE_AWK_FREE (run->awk, str); - /*ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM);*/ + if (a0->type != QSE_AWK_VAL_STR) QSE_AWK_FREE (run->awk, str); + /*qse_awk_setrunerrnum (run, QSE_AWK_ENOMEM);*/ return -1; } - if (a0->type != ASE_AWK_VAL_STR) ASE_AWK_FREE (run->awk, str); - ase_awk_setretval (run, r); + if (a0->type != QSE_AWK_VAL_STR) QSE_AWK_FREE (run->awk, str); + qse_awk_setretval (run, r); return 0; } static int bfn_toupper ( - ase_awk_run_t* run, const ase_char_t* fnm, ase_size_t fnl) + qse_awk_run_t* run, const qse_char_t* fnm, qse_size_t fnl) { - ase_size_t nargs; - ase_char_t* str; - ase_size_t len, i; - ase_awk_val_t* a0, * r; + qse_size_t nargs; + qse_char_t* str; + qse_size_t len, i; + qse_awk_val_t* a0, * r; - nargs = ase_awk_getnargs (run); - ASE_ASSERT (nargs == 1); + nargs = qse_awk_getnargs (run); + QSE_ASSERT (nargs == 1); - a0 = ase_awk_getarg (run, 0); + a0 = qse_awk_getarg (run, 0); - if (a0->type == ASE_AWK_VAL_STR) + if (a0->type == QSE_AWK_VAL_STR) { - str = ((ase_awk_val_str_t*)a0)->buf; - len = ((ase_awk_val_str_t*)a0)->len; + str = ((qse_awk_val_str_t*)a0)->buf; + len = ((qse_awk_val_str_t*)a0)->len; } else { - str = ase_awk_valtostr ( - run, a0, ASE_AWK_VALTOSTR_CLEAR, ASE_NULL, &len); - if (str == ASE_NULL) return -1; + str = qse_awk_valtostr ( + run, a0, QSE_AWK_VALTOSTR_CLEAR, QSE_NULL, &len); + if (str == QSE_NULL) return -1; } - for (i = 0; i < len; i++) str[i] = ASE_AWK_TOUPPER (run->awk, str[i]); + for (i = 0; i < len; i++) str[i] = QSE_AWK_TOUPPER (run->awk, str[i]); - r = ase_awk_makestrval (run, str, len); - if (r == ASE_NULL) + r = qse_awk_makestrval (run, str, len); + if (r == QSE_NULL) { - if (a0->type != ASE_AWK_VAL_STR) ASE_AWK_FREE (run->awk, str); - /*ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM);*/ + if (a0->type != QSE_AWK_VAL_STR) QSE_AWK_FREE (run->awk, str); + /*qse_awk_setrunerrnum (run, QSE_AWK_ENOMEM);*/ return -1; } - if (a0->type != ASE_AWK_VAL_STR) ASE_AWK_FREE (run->awk, str); - ase_awk_setretval (run, r); + if (a0->type != QSE_AWK_VAL_STR) QSE_AWK_FREE (run->awk, str); + qse_awk_setretval (run, r); return 0; } -static int __substitute (ase_awk_run_t* run, ase_long_t max_count) +static int __substitute (qse_awk_run_t* run, qse_long_t max_count) { - ase_size_t nargs; - ase_awk_val_t* a0, * a1, * a2, ** a2_ref, * v; - ase_char_t* a0_ptr, * a1_ptr, * a2_ptr; - ase_size_t a0_len, a1_len, a2_len; - ase_char_t* a0_ptr_free = ASE_NULL; - ase_char_t* a1_ptr_free = ASE_NULL; - ase_char_t* a2_ptr_free = ASE_NULL; - void* rex = ASE_NULL; + qse_size_t nargs; + qse_awk_val_t* a0, * a1, * a2, ** a2_ref, * v; + qse_char_t* a0_ptr, * a1_ptr, * a2_ptr; + qse_size_t a0_len, a1_len, a2_len; + qse_char_t* a0_ptr_free = QSE_NULL; + qse_char_t* a1_ptr_free = QSE_NULL; + qse_char_t* a2_ptr_free = QSE_NULL; + void* rex = QSE_NULL; int opt, n; - const ase_char_t* cur_ptr, * mat_ptr; - ase_size_t cur_len, mat_len, i, m; - ase_str_t new; - ase_long_t sub_count; + const qse_char_t* cur_ptr, * mat_ptr; + qse_size_t cur_len, mat_len, i, m; + qse_str_t new; + qse_long_t sub_count; - nargs = ase_awk_getnargs (run); - ASE_ASSERT (nargs >= 2 && nargs <= 3); + nargs = qse_awk_getnargs (run); + QSE_ASSERT (nargs >= 2 && nargs <= 3); - a0 = ase_awk_getarg (run, 0); - a1 = ase_awk_getarg (run, 1); - a2 = (nargs >= 3)? ase_awk_getarg (run, 2): ASE_NULL; + a0 = qse_awk_getarg (run, 0); + a1 = qse_awk_getarg (run, 1); + a2 = (nargs >= 3)? qse_awk_getarg (run, 2): QSE_NULL; - ASE_ASSERT (a2 == ASE_NULL || a2->type == ASE_AWK_VAL_REF); + QSE_ASSERT (a2 == QSE_NULL || a2->type == QSE_AWK_VAL_REF); #define FREE_A_PTRS(awk) \ do { \ - if (a2_ptr_free != ASE_NULL) ASE_AWK_FREE (awk, a2_ptr_free); \ - if (a1_ptr_free != ASE_NULL) ASE_AWK_FREE (awk, a1_ptr_free); \ - if (a0_ptr_free != ASE_NULL) ASE_AWK_FREE (awk, a0_ptr_free); \ + if (a2_ptr_free != QSE_NULL) QSE_AWK_FREE (awk, a2_ptr_free); \ + if (a1_ptr_free != QSE_NULL) QSE_AWK_FREE (awk, a1_ptr_free); \ + if (a0_ptr_free != QSE_NULL) QSE_AWK_FREE (awk, a0_ptr_free); \ } while (0) #define FREE_A0_REX(awk,rex) \ do { \ - if (a0->type != ASE_AWK_VAL_REX) ASE_AWK_FREEREX (awk, rex); \ + if (a0->type != QSE_AWK_VAL_REX) QSE_AWK_FREEREX (awk, rex); \ } while (0) - if (a0->type == ASE_AWK_VAL_REX) + if (a0->type == QSE_AWK_VAL_REX) { - rex = ((ase_awk_val_rex_t*)a0)->code; + rex = ((qse_awk_val_rex_t*)a0)->code; } - else if (a0->type == ASE_AWK_VAL_STR) + else if (a0->type == QSE_AWK_VAL_STR) { - a0_ptr = ((ase_awk_val_str_t*)a0)->buf; - a0_len = ((ase_awk_val_str_t*)a0)->len; + a0_ptr = ((qse_awk_val_str_t*)a0)->buf; + a0_len = ((qse_awk_val_str_t*)a0)->len; } else { - a0_ptr = ase_awk_valtostr ( - run, a0, ASE_AWK_VALTOSTR_CLEAR, ASE_NULL, &a0_len); - if (a0_ptr == ASE_NULL) + a0_ptr = qse_awk_valtostr ( + run, a0, QSE_AWK_VALTOSTR_CLEAR, QSE_NULL, &a0_len); + if (a0_ptr == QSE_NULL) { FREE_A_PTRS (run->awk); return -1; @@ -977,16 +977,16 @@ static int __substitute (ase_awk_run_t* run, ase_long_t max_count) a0_ptr_free = a0_ptr; } - if (a1->type == ASE_AWK_VAL_STR) + if (a1->type == QSE_AWK_VAL_STR) { - a1_ptr = ((ase_awk_val_str_t*)a1)->buf; - a1_len = ((ase_awk_val_str_t*)a1)->len; + a1_ptr = ((qse_awk_val_str_t*)a1)->buf; + a1_len = ((qse_awk_val_str_t*)a1)->len; } else { - a1_ptr = ase_awk_valtostr ( - run, a1, ASE_AWK_VALTOSTR_CLEAR, ASE_NULL, &a1_len); - if (a1_ptr == ASE_NULL) + a1_ptr = qse_awk_valtostr ( + run, a1, QSE_AWK_VALTOSTR_CLEAR, QSE_NULL, &a1_len); + if (a1_ptr == QSE_NULL) { FREE_A_PTRS (run->awk); return -1; @@ -994,21 +994,21 @@ static int __substitute (ase_awk_run_t* run, ase_long_t max_count) a1_ptr_free = a1_ptr; } - if (a2 == ASE_NULL) + if (a2 == QSE_NULL) { /* is this correct? any needs to use inrec.d0? */ - a2_ptr = ASE_STR_PTR(&run->inrec.line); - a2_len = ASE_STR_LEN(&run->inrec.line); + a2_ptr = QSE_STR_PTR(&run->inrec.line); + a2_len = QSE_STR_LEN(&run->inrec.line); } - else if (((ase_awk_val_ref_t*)a2)->id == ASE_AWK_VAL_REF_POS) + else if (((qse_awk_val_ref_t*)a2)->id == QSE_AWK_VAL_REF_POS) { - ase_size_t idx; + qse_size_t idx; - idx = (ase_size_t)((ase_awk_val_ref_t*)a2)->adr; + idx = (qse_size_t)((qse_awk_val_ref_t*)a2)->adr; if (idx == 0) { - a2_ptr = ASE_STR_PTR(&run->inrec.line); - a2_len = ASE_STR_LEN(&run->inrec.line); + a2_ptr = QSE_STR_PTR(&run->inrec.line); + a2_len = QSE_STR_LEN(&run->inrec.line); } else if (idx <= run->inrec.nflds) { @@ -1017,32 +1017,32 @@ static int __substitute (ase_awk_run_t* run, ase_long_t max_count) } else { - a2_ptr = ASE_T(""); + a2_ptr = QSE_T(""); a2_len = 0; } } else { - a2_ref = (ase_awk_val_t**)((ase_awk_val_ref_t*)a2)->adr; + a2_ref = (qse_awk_val_t**)((qse_awk_val_ref_t*)a2)->adr; - if ((*a2_ref)->type == ASE_AWK_VAL_MAP) + if ((*a2_ref)->type == QSE_AWK_VAL_MAP) { FREE_A_PTRS (run->awk); /* a map is not allowed as the third parameter */ - ase_awk_setrunerrnum (run, ASE_AWK_EMAPNOTALLOWED); + qse_awk_setrunerrnum (run, QSE_AWK_EMAPNOTALLOWED); return -1; } - if ((*a2_ref)->type == ASE_AWK_VAL_STR) + if ((*a2_ref)->type == QSE_AWK_VAL_STR) { - a2_ptr = ((ase_awk_val_str_t*)(*a2_ref))->buf; - a2_len = ((ase_awk_val_str_t*)(*a2_ref))->len; + a2_ptr = ((qse_awk_val_str_t*)(*a2_ref))->buf; + a2_len = ((qse_awk_val_str_t*)(*a2_ref))->len; } else { - a2_ptr = ase_awk_valtostr ( - run, *a2_ref, ASE_AWK_VALTOSTR_CLEAR, ASE_NULL, &a2_len); - if (a2_ptr == ASE_NULL) + a2_ptr = qse_awk_valtostr ( + run, *a2_ref, QSE_AWK_VALTOSTR_CLEAR, QSE_NULL, &a2_len); + if (a2_ptr == QSE_NULL) { FREE_A_PTRS (run->awk); return -1; @@ -1051,25 +1051,25 @@ static int __substitute (ase_awk_run_t* run, ase_long_t max_count) } } - if (ase_str_init (&new, run->awk->mmgr, a2_len) == ASE_NULL) + if (qse_str_init (&new, run->awk->mmgr, a2_len) == QSE_NULL) { FREE_A_PTRS (run->awk); - ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM); + qse_awk_setrunerrnum (run, QSE_AWK_ENOMEM); return -1; } - if (a0->type != ASE_AWK_VAL_REX) + if (a0->type != QSE_AWK_VAL_REX) { - rex = ASE_AWK_BUILDREX (run->awk, a0_ptr, a0_len, &run->errnum); - if (rex == ASE_NULL) + rex = QSE_AWK_BUILDREX (run->awk, a0_ptr, a0_len, &run->errnum); + if (rex == QSE_NULL) { - ase_str_fini (&new); + qse_str_fini (&new); FREE_A_PTRS (run->awk); return -1; } } - opt = (run->global.ignorecase)? ASE_REX_IGNORECASE: 0; + opt = (run->global.ignorecase)? QSE_REX_IGNORECASE: 0; cur_ptr = a2_ptr; cur_len = a2_len; sub_count = 0; @@ -1078,7 +1078,7 @@ static int __substitute (ase_awk_run_t* run, ase_long_t max_count) { if (max_count == 0 || sub_count < max_count) { - n = ASE_AWK_MATCHREX ( + n = QSE_AWK_MATCHREX ( run->awk, rex, opt, cur_ptr, cur_len, &mat_ptr, &mat_len, &run->errnum); } @@ -1087,7 +1087,7 @@ static int __substitute (ase_awk_run_t* run, ase_long_t max_count) if (n == -1) { FREE_A0_REX (run->awk, rex); - ase_str_fini (&new); + qse_str_fini (&new); FREE_A_PTRS (run->awk); return -1; } @@ -1095,22 +1095,22 @@ static int __substitute (ase_awk_run_t* run, ase_long_t max_count) if (n == 0) { /* no more match found */ - if (ase_str_ncat ( - &new, cur_ptr, cur_len) == (ase_size_t)-1) + if (qse_str_ncat ( + &new, cur_ptr, cur_len) == (qse_size_t)-1) { FREE_A0_REX (run->awk, rex); - ase_str_fini (&new); + qse_str_fini (&new); FREE_A_PTRS (run->awk); return -1; } break; } - if (ase_str_ncat ( - &new, cur_ptr, mat_ptr - cur_ptr) == (ase_size_t)-1) + if (qse_str_ncat ( + &new, cur_ptr, mat_ptr - cur_ptr) == (qse_size_t)-1) { FREE_A0_REX (run->awk, rex); - ase_str_fini (&new); + qse_str_fini (&new); FREE_A_PTRS (run->awk); return -1; } @@ -1118,25 +1118,25 @@ static int __substitute (ase_awk_run_t* run, ase_long_t max_count) for (i = 0; i < a1_len; i++) { if ((i+1) < a1_len && - a1_ptr[i] == ASE_T('\\') && - a1_ptr[i+1] == ASE_T('&')) + a1_ptr[i] == QSE_T('\\') && + a1_ptr[i+1] == QSE_T('&')) { - m = ase_str_ccat (&new, ASE_T('&')); + m = qse_str_ccat (&new, QSE_T('&')); i++; } - else if (a1_ptr[i] == ASE_T('&')) + else if (a1_ptr[i] == QSE_T('&')) { - m = ase_str_ncat (&new, mat_ptr, mat_len); + m = qse_str_ncat (&new, mat_ptr, mat_len); } else { - m = ase_str_ccat (&new, a1_ptr[i]); + m = qse_str_ccat (&new, a1_ptr[i]); } - if (m == (ase_size_t)-1) + if (m == (qse_size_t)-1) { FREE_A0_REX (run->awk, rex); - ase_str_fini (&new); + qse_str_fini (&new); FREE_A_PTRS (run->awk); return -1; } @@ -1151,262 +1151,262 @@ static int __substitute (ase_awk_run_t* run, ase_long_t max_count) if (sub_count > 0) { - if (a2 == ASE_NULL) + if (a2 == QSE_NULL) { - if (ase_awk_setrec (run, 0, - ASE_STR_PTR(&new), ASE_STR_LEN(&new)) == -1) + if (qse_awk_setrec (run, 0, + QSE_STR_PTR(&new), QSE_STR_LEN(&new)) == -1) { - ase_str_fini (&new); + qse_str_fini (&new); FREE_A_PTRS (run->awk); return -1; } } - else if (((ase_awk_val_ref_t*)a2)->id == ASE_AWK_VAL_REF_POS) + else if (((qse_awk_val_ref_t*)a2)->id == QSE_AWK_VAL_REF_POS) { int n; - n = ase_awk_setrec ( - run, (ase_size_t)((ase_awk_val_ref_t*)a2)->adr, - ASE_STR_PTR(&new), ASE_STR_LEN(&new)); + n = qse_awk_setrec ( + run, (qse_size_t)((qse_awk_val_ref_t*)a2)->adr, + QSE_STR_PTR(&new), QSE_STR_LEN(&new)); if (n == -1) { - ase_str_fini (&new); + qse_str_fini (&new); FREE_A_PTRS (run->awk); return -1; } } else { - v = ase_awk_makestrval (run, - ASE_STR_PTR(&new), ASE_STR_LEN(&new)); - if (v == ASE_NULL) + v = qse_awk_makestrval (run, + QSE_STR_PTR(&new), QSE_STR_LEN(&new)); + if (v == QSE_NULL) { - ase_str_fini (&new); + qse_str_fini (&new); FREE_A_PTRS (run->awk); - /*ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM);*/ + /*qse_awk_setrunerrnum (run, QSE_AWK_ENOMEM);*/ return -1; } - ase_awk_refdownval (run, *a2_ref); + qse_awk_refdownval (run, *a2_ref); *a2_ref = v; - ase_awk_refupval (run, *a2_ref); + qse_awk_refupval (run, *a2_ref); } } - ase_str_fini (&new); + qse_str_fini (&new); FREE_A_PTRS (run->awk); #undef FREE_A0_REX #undef FREE_A_PTRS - v = ase_awk_makeintval (run, sub_count); - if (v == ASE_NULL) + v = qse_awk_makeintval (run, sub_count); + if (v == QSE_NULL) { - /*ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM);*/ + /*qse_awk_setrunerrnum (run, QSE_AWK_ENOMEM);*/ return -1; } - ase_awk_setretval (run, v); + qse_awk_setretval (run, v); return 0; } static int bfn_gsub ( - ase_awk_run_t* run, const ase_char_t* fnm, ase_size_t fnl) + qse_awk_run_t* run, const qse_char_t* fnm, qse_size_t fnl) { return __substitute (run, 0); } static int bfn_sub ( - ase_awk_run_t* run, const ase_char_t* fnm, ase_size_t fnl) + qse_awk_run_t* run, const qse_char_t* fnm, qse_size_t fnl) { return __substitute (run, 1); } static int bfn_match ( - ase_awk_run_t* run, const ase_char_t* fnm, ase_size_t fnl) + qse_awk_run_t* run, const qse_char_t* fnm, qse_size_t fnl) { - ase_size_t nargs; - ase_awk_val_t* a0, * a1; - ase_char_t* str0, * str1; - ase_size_t len0, len1; - ase_long_t idx; + qse_size_t nargs; + qse_awk_val_t* a0, * a1; + qse_char_t* str0, * str1; + qse_size_t len0, len1; + qse_long_t idx; void* rex; int opt, n; - const ase_char_t* mat_ptr; - ase_size_t mat_len; + const qse_char_t* mat_ptr; + qse_size_t mat_len; - nargs = ase_awk_getnargs (run); - ASE_ASSERT (nargs == 2); + nargs = qse_awk_getnargs (run); + QSE_ASSERT (nargs == 2); - a0 = ase_awk_getarg (run, 0); - a1 = ase_awk_getarg (run, 1); + a0 = qse_awk_getarg (run, 0); + a1 = qse_awk_getarg (run, 1); - if (a0->type == ASE_AWK_VAL_STR) + if (a0->type == QSE_AWK_VAL_STR) { - str0 = ((ase_awk_val_str_t*)a0)->buf; - len0 = ((ase_awk_val_str_t*)a0)->len; + str0 = ((qse_awk_val_str_t*)a0)->buf; + len0 = ((qse_awk_val_str_t*)a0)->len; } else { - str0 = ase_awk_valtostr ( - run, a0, ASE_AWK_VALTOSTR_CLEAR, ASE_NULL, &len0); - if (str0 == ASE_NULL) return -1; + str0 = qse_awk_valtostr ( + run, a0, QSE_AWK_VALTOSTR_CLEAR, QSE_NULL, &len0); + if (str0 == QSE_NULL) return -1; } - if (a1->type == ASE_AWK_VAL_REX) + if (a1->type == QSE_AWK_VAL_REX) { - rex = ((ase_awk_val_rex_t*)a1)->code; + rex = ((qse_awk_val_rex_t*)a1)->code; } else { - if (a1->type == ASE_AWK_VAL_STR) + if (a1->type == QSE_AWK_VAL_STR) { - str1 = ((ase_awk_val_str_t*)a1)->buf; - len1 = ((ase_awk_val_str_t*)a1)->len; + str1 = ((qse_awk_val_str_t*)a1)->buf; + len1 = ((qse_awk_val_str_t*)a1)->len; } else { - str1 = ase_awk_valtostr ( - run, a1, ASE_AWK_VALTOSTR_CLEAR, ASE_NULL, &len1); - if (str1 == ASE_NULL) + str1 = qse_awk_valtostr ( + run, a1, QSE_AWK_VALTOSTR_CLEAR, QSE_NULL, &len1); + if (str1 == QSE_NULL) { - if (a0->type != ASE_AWK_VAL_STR) - ASE_AWK_FREE (run->awk, str0); + if (a0->type != QSE_AWK_VAL_STR) + QSE_AWK_FREE (run->awk, str0); return -1; } } - rex = ASE_AWK_BUILDREX (run->awk, str1, len1, &run->errnum); - if (rex == ASE_NULL) + rex = QSE_AWK_BUILDREX (run->awk, str1, len1, &run->errnum); + if (rex == QSE_NULL) { - if (a0->type != ASE_AWK_VAL_STR) - ASE_AWK_FREE (run->awk, str0); + if (a0->type != QSE_AWK_VAL_STR) + QSE_AWK_FREE (run->awk, str0); return -1; } - if (a1->type != ASE_AWK_VAL_STR) ASE_AWK_FREE (run->awk, str1); + if (a1->type != QSE_AWK_VAL_STR) QSE_AWK_FREE (run->awk, str1); } - opt = (run->global.ignorecase)? ASE_REX_IGNORECASE: 0; - n = ASE_AWK_MATCHREX ( + opt = (run->global.ignorecase)? QSE_REX_IGNORECASE: 0; + n = QSE_AWK_MATCHREX ( run->awk, rex, opt, str0, len0, &mat_ptr, &mat_len, &run->errnum); - if (a0->type != ASE_AWK_VAL_STR) ASE_AWK_FREE (run->awk, str0); - if (a1->type != ASE_AWK_VAL_REX) ASE_AWK_FREEREX (run->awk, rex); + if (a0->type != QSE_AWK_VAL_STR) QSE_AWK_FREE (run->awk, str0); + if (a1->type != QSE_AWK_VAL_REX) QSE_AWK_FREEREX (run->awk, rex); if (n == -1) return -1; - idx = (n == 0)? -1: (ase_long_t)(mat_ptr - str0); - if (ase_awk_getoption(run->awk) & ASE_AWK_BASEONE) idx = idx + 1; + idx = (n == 0)? -1: (qse_long_t)(mat_ptr - str0); + if (qse_awk_getoption(run->awk) & QSE_AWK_BASEONE) idx = idx + 1; - a0 = ase_awk_makeintval (run, idx); - if (a0 == ASE_NULL) + a0 = qse_awk_makeintval (run, idx); + if (a0 == QSE_NULL) { - /*ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM);*/ + /*qse_awk_setrunerrnum (run, QSE_AWK_ENOMEM);*/ return -1; } - ase_awk_refupval (run, a0); + qse_awk_refupval (run, a0); - a1 = ase_awk_makeintval (run, - ((n == 0)? (ase_long_t)-1: (ase_long_t)mat_len)); - if (a1 == ASE_NULL) + a1 = qse_awk_makeintval (run, + ((n == 0)? (qse_long_t)-1: (qse_long_t)mat_len)); + if (a1 == QSE_NULL) { - ase_awk_refdownval (run, a0); - /*ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM);*/ + qse_awk_refdownval (run, a0); + /*qse_awk_setrunerrnum (run, QSE_AWK_ENOMEM);*/ return -1; } - ase_awk_refupval (run, a1); + qse_awk_refupval (run, a1); - if (ase_awk_setglobal (run, ASE_AWK_GLOBAL_RSTART, a0) == -1) + if (qse_awk_setglobal (run, QSE_AWK_GLOBAL_RSTART, a0) == -1) { - ase_awk_refdownval (run, a1); - ase_awk_refdownval (run, a0); + qse_awk_refdownval (run, a1); + qse_awk_refdownval (run, a0); return -1; } - if (ase_awk_setglobal (run, ASE_AWK_GLOBAL_RLENGTH, a1) == -1) + if (qse_awk_setglobal (run, QSE_AWK_GLOBAL_RLENGTH, a1) == -1) { - ase_awk_refdownval (run, a1); - ase_awk_refdownval (run, a0); + qse_awk_refdownval (run, a1); + qse_awk_refdownval (run, a0); return -1; } - ase_awk_setretval (run, a0); + qse_awk_setretval (run, a0); - ase_awk_refdownval (run, a1); - ase_awk_refdownval (run, a0); + qse_awk_refdownval (run, a1); + qse_awk_refdownval (run, a0); return 0; } static int bfn_sprintf ( - ase_awk_run_t* run, const ase_char_t* fnm, ase_size_t fnl) + qse_awk_run_t* run, const qse_char_t* fnm, qse_size_t fnl) { - ase_size_t nargs; - ase_awk_val_t* a0; - ase_str_t out, fbu; - ase_xstr_t cs0; - ase_xstr_t x; + qse_size_t nargs; + qse_awk_val_t* a0; + qse_str_t out, fbu; + qse_xstr_t cs0; + qse_xstr_t x; - nargs = ase_awk_getnargs (run); - ASE_ASSERT (nargs > 0); + nargs = qse_awk_getnargs (run); + QSE_ASSERT (nargs > 0); - if (ase_str_init (&out, run->awk->mmgr, 256) == ASE_NULL) + if (qse_str_init (&out, run->awk->mmgr, 256) == QSE_NULL) { - ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM); + qse_awk_setrunerrnum (run, QSE_AWK_ENOMEM); return -1; } - if (ase_str_init (&fbu, run->awk->mmgr, 256) == ASE_NULL) + if (qse_str_init (&fbu, run->awk->mmgr, 256) == QSE_NULL) { - ase_str_fini (&out); - ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM); + qse_str_fini (&out); + qse_awk_setrunerrnum (run, QSE_AWK_ENOMEM); return -1; } - a0 = ase_awk_getarg (run, 0); - if (a0->type == ASE_AWK_VAL_STR) + a0 = qse_awk_getarg (run, 0); + if (a0->type == QSE_AWK_VAL_STR) { - cs0.ptr = ((ase_awk_val_str_t*)a0)->buf; - cs0.len = ((ase_awk_val_str_t*)a0)->len; + cs0.ptr = ((qse_awk_val_str_t*)a0)->buf; + cs0.len = ((qse_awk_val_str_t*)a0)->len; } else { - cs0.ptr = ase_awk_valtostr ( - run, a0, ASE_AWK_VALTOSTR_CLEAR, ASE_NULL, &cs0.len); - if (cs0.ptr == ASE_NULL) + cs0.ptr = qse_awk_valtostr ( + run, a0, QSE_AWK_VALTOSTR_CLEAR, QSE_NULL, &cs0.len); + if (cs0.ptr == QSE_NULL) { - ase_str_fini (&fbu); - ase_str_fini (&out); + qse_str_fini (&fbu); + qse_str_fini (&out); return -1; } } - x.ptr = ase_awk_format (run, - &out, &fbu, cs0.ptr, cs0.len, nargs, ASE_NULL, &x.len); - if (a0->type != ASE_AWK_VAL_STR) ASE_AWK_FREE (run->awk, cs0.ptr); - if (x.ptr == ASE_NULL) + x.ptr = qse_awk_format (run, + &out, &fbu, cs0.ptr, cs0.len, nargs, QSE_NULL, &x.len); + if (a0->type != QSE_AWK_VAL_STR) QSE_AWK_FREE (run->awk, cs0.ptr); + if (x.ptr == QSE_NULL) { - ase_str_fini (&fbu); - ase_str_fini (&out); + qse_str_fini (&fbu); + qse_str_fini (&out); return -1; } - /*a0 = ase_awk_makestrval_nodup (run, x.ptr, x.len);*/ - a0 = ase_awk_makestrval (run, x.ptr, x.len); - if (a0 == ASE_NULL) + /*a0 = qse_awk_makestrval_nodup (run, x.ptr, x.len);*/ + a0 = qse_awk_makestrval (run, x.ptr, x.len); + if (a0 == QSE_NULL) { - ase_str_fini (&fbu); - ase_str_fini (&out); - /*ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM);*/ + qse_str_fini (&fbu); + qse_str_fini (&out); + /*qse_awk_setrunerrnum (run, QSE_AWK_ENOMEM);*/ return -1; } - ase_str_fini (&fbu); - /*ase_str_yield (&out, ASE_NULL, 0);*/ - ase_str_fini (&out); - ase_awk_setretval (run, a0); + qse_str_fini (&fbu); + /*qse_str_yield (&out, QSE_NULL, 0);*/ + qse_str_fini (&out); + qse_awk_setretval (run, a0); return 0; } diff --git a/qse/lib/awk/func.h b/qse/lib/awk/func.h index 8725c06a..c32c28aa 100644 --- a/qse/lib/awk/func.h +++ b/qse/lib/awk/func.h @@ -4,39 +4,39 @@ * {License} */ -#ifndef _ASE_LIB_AWK_FUNC_H_ -#define _ASE_LIB_AWK_FUNC_H_ +#ifndef _QSE_LIB_AWK_FUNC_H_ +#define _QSE_LIB_AWK_FUNC_H_ -typedef struct ase_awk_bfn_t ase_awk_bfn_t; +typedef struct qse_awk_bfn_t qse_awk_bfn_t; -struct ase_awk_bfn_t +struct qse_awk_bfn_t { struct { - ase_char_t* ptr; - ase_size_t len; + qse_char_t* ptr; + qse_size_t len; } name; int valid; /* the entry is valid when this option is set */ struct { - ase_size_t min; - ase_size_t max; - ase_char_t* spec; + qse_size_t min; + qse_size_t max; + qse_char_t* spec; } arg; - int (*handler) (ase_awk_run_t*, const ase_char_t*, ase_size_t); + int (*handler) (qse_awk_run_t*, const qse_char_t*, qse_size_t); - /*ase_awk_bfn_t* next;*/ + /*qse_awk_bfn_t* next;*/ }; #ifdef __cplusplus extern "C" { #endif -ase_awk_bfn_t* ase_awk_getbfn ( - ase_awk_t* awk, const ase_char_t* name, ase_size_t len); +qse_awk_bfn_t* qse_awk_getbfn ( + qse_awk_t* awk, const qse_char_t* name, qse_size_t len); #ifdef __cplusplus } diff --git a/qse/lib/awk/generrcode-java.awk b/qse/lib/awk/generrcode-java.awk deleted file mode 100644 index cfc5ce54..00000000 --- a/qse/lib/awk/generrcode-java.awk +++ /dev/null @@ -1,34 +0,0 @@ -# -# generrcode-java.awk -# -# aseawk -f generrcode-java.awk awk.h -# - -BEGIN { - collect=0; - tab2="\t"; - tab3="\t\t"; - count=0; -} - -/^[[:space:]]*enum[[:space:]]+ase_awk_errnum_t[[:space:]]*$/ { - collect=1; - print tab2 "// generated by generrcode-java.awk"; - #print tab2 "enum ErrorCode"; - #print tab2 "{"; -} - -collect && /^[[:space:]]*};[[:space:]]*$/ { - #print tab2 "};"; - print tab2 "// end of error codes"; - print ""; - collect=0; -} - -collect && /^[[:space:]]*ASE_AWK_E[[:alnum:]]+/ { - split ($1, flds, ","); - name=flds[1]; - - print tab2 "public static final int " substr (name,10,length(name)-9) " = " count++ ";"; -} - diff --git a/qse/lib/awk/generrcode-net.awk b/qse/lib/awk/generrcode-net.awk deleted file mode 100644 index c760334e..00000000 --- a/qse/lib/awk/generrcode-net.awk +++ /dev/null @@ -1,34 +0,0 @@ -# -# generrcode-net.awk -# -# aseawk -f generrcode-net.awk awk.h -# - -BEGIN { - collect=0; - tab3="\t\t"; - tab4="\t\t\t"; -} - -/^[[:space:]]*enum[[:space:]]+ase_awk_errnum_t[[:space:]]*$/ { - collect=1; - print tab3 "// generated by generrcode-net.awk"; - print tab3 "enum class ERROR: int"; - print tab3 "{"; -} - -collect && /^[[:space:]]*};[[:space:]]*$/ { - print tab3 "};"; - print tab3 "// end of enum class ERROR"; - print ""; - collect=0; -} - -collect && /^[[:space:]]*ASE_AWK_E[[:alnum:]]+/ { - split ($1, flds, ","); - name=flds[1]; - - x = substr (name,10,length(name)-9); - print tab4 x " = ASE::Awk::ERR_" x ","; -} - diff --git a/qse/lib/awk/generrcode.awk b/qse/lib/awk/generrcode.awk index d9168892..09bc2324 100644 --- a/qse/lib/awk/generrcode.awk +++ b/qse/lib/awk/generrcode.awk @@ -1,7 +1,7 @@ # # generrcode.awk # -# aseawk -f generrcode.awk awk.h +# qseawk -f generrcode.awk awk.h # BEGIN { @@ -10,7 +10,7 @@ BEGIN { tab4="\t\t\t"; } -/^[[:space:]]*enum[[:space:]]+ase_awk_errnum_t[[:space:]]*$/ { +/^[[:space:]]*enum[[:space:]]+qse_awk_errnum_t[[:space:]]*$/ { collect=1; print tab3 "// generated by generrcode.awk"; print tab3 "enum ErrorCode"; @@ -24,7 +24,7 @@ collect && /^[[:space:]]*};[[:space:]]*$/ { collect=0; } -collect && /^[[:space:]]*ASE_AWK_E[[:alnum:]]+/ { +collect && /^[[:space:]]*QSE_AWK_E[[:alnum:]]+/ { split ($1, flds, ","); name=flds[1]; diff --git a/qse/lib/awk/genoptcode.awk b/qse/lib/awk/genoptcode.awk index 0c1149bc..900c5f48 100644 --- a/qse/lib/awk/genoptcode.awk +++ b/qse/lib/awk/genoptcode.awk @@ -1,7 +1,7 @@ # # genoptcode.awk # -# aseawk -f generror.awk awk.h +# qseawk -f generror.awk awk.h # BEGIN { @@ -10,7 +10,7 @@ BEGIN { tab4="\t\t\t"; } -/^[[:space:]]*enum[[:space:]]+ase_awk_option_t[[:space:]]*$/ { +/^[[:space:]]*enum[[:space:]]+qse_awk_option_t[[:space:]]*$/ { collect=1; print tab3 "// generated by genoptcode.awk"; print tab3 "enum Option"; @@ -24,7 +24,7 @@ collect && /^[[:space:]]*};[[:space:]]*$/ { collect=0; } -collect && /^[[:space:]]*ASE_AWK_[[:alnum:]]+/ { +collect && /^[[:space:]]*QSE_AWK_[[:alnum:]]+/ { split ($1, flds, ","); name=flds[1]; diff --git a/qse/lib/awk/jni-dmc.def b/qse/lib/awk/jni-dmc.def deleted file mode 100644 index c3d7c300..00000000 --- a/qse/lib/awk/jni-dmc.def +++ /dev/null @@ -1,41 +0,0 @@ -LIBRARY "aseawk_jni.dll" -EXETYPE NT - -EXPORTS - Java_ase_awk_Awk_open - Java_ase_awk_Awk_close - Java_ase_awk_Awk_parse - Java_ase_awk_Awk_run - Java_ase_awk_Awk_stop - Java_ase_awk_Awk_getmaxdepth - Java_ase_awk_Awk_setmaxdepth - Java_ase_awk_Awk_getoption - Java_ase_awk_Awk_setoption - Java_ase_awk_Awk_getdebug - Java_ase_awk_Awk_setdebug - Java_ase_awk_Awk_getword - Java_ase_awk_Awk_setword - Java_ase_awk_Awk_addfunc - Java_ase_awk_Awk_delfunc - Java_ase_awk_Awk_setfilename - Java_ase_awk_Awk_setofilename - Java_ase_awk_Awk_strftime - Java_ase_awk_Awk_strfgmtime - Java_ase_awk_Awk_system - Java_ase_awk_Context_stop - Java_ase_awk_Context_getglobal - Java_ase_awk_Context_setglobal - Java_ase_awk_Argument_getintval - Java_ase_awk_Argument_getrealval - Java_ase_awk_Argument_getstrval - Java_ase_awk_Argument_isindexed - Java_ase_awk_Argument_getindexed - Java_ase_awk_Argument_clearval - Java_ase_awk_Return_isindexed - Java_ase_awk_Return_setintval - Java_ase_awk_Return_setrealval - Java_ase_awk_Return_setstrval - Java_ase_awk_Return_setindexedintval - Java_ase_awk_Return_setindexedrealval - Java_ase_awk_Return_setindexedstrval - Java_ase_awk_Return_clearval diff --git a/qse/lib/awk/jni.c b/qse/lib/awk/jni.c deleted file mode 100644 index f7272030..00000000 --- a/qse/lib/awk/jni.c +++ /dev/null @@ -1,2851 +0,0 @@ -/* - * $Id: jni.c 363 2008-09-04 10:58:08Z baconevi $ - * - * {License} - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "../cmn/mem.h" -#include "../cmn/chr.h" -#include - -#ifdef _WIN32 -#include -#include -#endif - -#if defined(_WIN32) && defined(_DEBUG) && defined(_MSC_VER) -#define _CRTDBG_MAP_ALLOC -#include -#endif - -#ifndef ASE_CHAR_IS_WCHAR - #error this module supports ASE_CHAR_IS_WCHAR only -#endif - -#define CLASS_OUTOFMEMORYERROR "java/lang/OutOfMemoryError" -#define CLASS_EXCEPTION "ase/awk/Exception" -#define CLASS_EXTIO "ase/awk/Extio" -#define CLASS_CONTEXT "ase/awk/Context" -#define CLASS_ARGUMENT "ase/awk/Argument" -#define CLASS_RETURN "ase/awk/Return" -#define FIELD_AWKID "awkid" -#define FIELD_RUNID "runid" -#define FIELD_VALID "valid" - -#if defined(_WIN32) && defined(_MSC_VER) && (_MSC_VER>=1400) - #pragma warning(disable:4996) - - #define time_t __time64_t - #define time _time64 - #define localtime _localtime64 - #define gmtime _gmtime64 -#endif - -enum -{ - SOURCE_READ = 1, - SOURCE_WRITE = 2 -}; - -static ase_ssize_t read_source ( - int cmd, void* arg, ase_char_t* data, ase_size_t count); -static ase_ssize_t write_source ( - int cmd, void* arg, ase_char_t* data, ase_size_t count); -static ase_ssize_t process_extio ( - int cmd, void* arg, ase_char_t* data, ase_size_t count); - -static ase_char_t* dup_str ( - ase_awk_t* awk, const jchar* str, ase_size_t len); -static int get_str ( - JNIEnv* env, ase_awk_t* awk, jstring str, - const jchar** jptr, ase_char_t** aptr, jsize* outlen); -static void free_str ( - JNIEnv* env, ase_awk_t* awk, jstring str, - const jchar* jptr, ase_char_t* aptr); - -static jstring new_str ( - JNIEnv* env, ase_awk_t* awk, const ase_char_t* ptr, ase_size_t len); - -typedef struct awk_data_t awk_data_t; -typedef struct srcio_data_t srcio_data_t; -typedef struct runio_data_t runio_data_t; -typedef struct run_data_t run_data_t; - -struct awk_data_t -{ - int debug; -}; - -struct srcio_data_t -{ - JNIEnv* env; - jobject obj; -}; - -struct runio_data_t -{ - JNIEnv* env; - jobject obj; -}; - -struct run_data_t -{ - JNIEnv* env; - jobject obj; - - ase_size_t errlin; - int errnum; - ase_char_t errmsg[256]; - - jclass exception_class; - jclass context_class; - jclass argument_class; - jclass return_class; - - jmethodID context_init; - jmethodID argument_init; - jmethodID return_init; - - jmethodID exception_get_code; - jmethodID exception_get_line; - jmethodID exception_get_message; - - jmethodID context_clear; - - jfieldID argument_valid; - jfieldID return_valid; - - jobject context_object; -}; - -static ase_real_t awk_pow (void* custom, ase_real_t x, ase_real_t y) -{ - return pow (x, y); -} - -static int awk_sprintf ( - void* custom, ase_char_t* buf, ase_size_t size, - const ase_char_t* fmt, ...) -{ - int n; - - va_list ap; - va_start (ap, fmt); - n = ase_vsprintf (buf, size, fmt, ap); - va_end (ap); - - return n; -} - -static void awk_dprintf (void* custom, const ase_char_t* fmt, ...) -{ - va_list ap; - va_start (ap, fmt); - ase_vfprintf (stderr, fmt, ap); - va_end (ap); -} - -#ifndef NDEBUG -void ase_assert_abort (void) -{ - abort (); -} - -void ase_assert_printf (const ase_char_t* fmt, ...) -{ - va_list ap; - va_start (ap, fmt); -#ifdef _WIN32 - { - TCHAR buf[512]; - _vsntprintf (buf, ASE_COUNTOF(buf), fmt, ap); - MessageBox (ASE_NULL, buf, _T("ASSERTION FAILURE"), MB_OK | MB_ICONERROR); - } -#else - ase_vfprintf (stdout, fmt, ap); -#endif - va_end (ap); -} -#endif - -static void throw_exception ( - JNIEnv* env, const ase_char_t* msg, jint code, jint line) -{ - jclass except_class; - jmethodID except_cons; - jstring except_msg; - jthrowable except_obj; - ase_size_t len; - jsize chunk; - - except_class = (*env)->FindClass (env, CLASS_EXCEPTION); - if (except_class == ASE_NULL) - { - /* the exception to be thrown by FindClass is not cleared. - * 1. this should not happend as the ase.awk.Exception - * class should always be there. - * 2. if it happens, this exception may abort the entire - * program as the exception is not likely to be handled - * explicitly by the java program. */ - return; - } - - except_cons = (*env)->GetMethodID ( - env, except_class, "", "(Ljava/lang/String;II)V"); - if (except_cons == ASE_NULL) - { - /* the potential exception to be thrown by the GetMethodID - * method is not cleared here for the same reason as the - * FindClass method above */ - (*env)->DeleteLocalRef (env, except_class); - return; - } - - len = ase_strlen(msg); - chunk = (len > ASE_TYPE_MAX(jsize))? ASE_TYPE_MAX(jsize): (jsize)len; - - if (chunk > 0 && ASE_SIZEOF(jchar) != ASE_SIZEOF(ase_char_t)) - { - jsize i; - - #if defined(_WIN32) && defined(__DMC__) - jchar* tmp = (jchar*) GlobalAlloc (GMEM_FIXED, ASE_SIZEOF(jchar)*chunk); - #else - jchar* tmp = (jchar*) malloc (ASE_SIZEOF(jchar)*chunk); - #endif - if (tmp == ASE_NULL) - { - (*env)->DeleteLocalRef (env, except_class); - - except_class = (*env)->FindClass ( - env, CLASS_OUTOFMEMORYERROR); - if (except_class == ASE_NULL) return; - - (*env)->ThrowNew (env, except_class, "out of memory"); - (*env)->DeleteLocalRef (env, except_class); - return; - } - - for (i = 0; i < chunk; i++) tmp[i] = (jchar)msg[i]; - except_msg = (*env)->NewString (env, tmp, chunk); - #if defined(_WIN32) && defined(__DMC__) - GlobalFree ((HGLOBAL)tmp); - #else - free (tmp); - #endif - } - else - { - except_msg = (*env)->NewString (env, (jchar*)msg, chunk); - } - - if (except_msg == ASE_NULL) - { - (*env)->DeleteLocalRef (env, except_class); - return; - } - - except_obj = (*env)->NewObject ( - env, except_class, except_cons, - except_msg, code, line); - - (*env)->DeleteLocalRef (env, except_msg); - (*env)->DeleteLocalRef (env, except_class); - - if (except_obj == ASE_NULL) return; - - (*env)->Throw (env, except_obj); - (*env)->DeleteLocalRef (env, except_obj); -} - -#define THROW_STATIC_EXCEPTION(env,errnum) \ - throw_exception (env, ase_awk_geterrstr(ASE_NULL, errnum), errnum, 0) - -#define EXCEPTION_ON_ASE_NULL_AWK(env,awk) \ - if (awk == ASE_NULL) \ - { \ - THROW_STATIC_EXCEPTION(env,ASE_AWK_ENOPER); \ - return; \ - } - -#define EXCEPTION_ON_ASE_NULL_AWK_RETURNING(env,awk,ret) \ - if (awk == ASE_NULL) \ - { \ - THROW_STATIC_EXCEPTION(env,ASE_AWK_ENOPER); \ - return ret; \ - } - -#define THROW_NOMEM_EXCEPTION(env) \ - THROW_STATIC_EXCEPTION(env,ASE_AWK_ENOMEM) - -#define THROW_AWK_EXCEPTION(env,awk) \ - throw_exception ( \ - env, \ - ase_awk_geterrmsg(awk), \ - (jint)ase_awk_geterrnum(awk), \ - (jint)ase_awk_geterrlin(awk)) - -#define THROW_RUN_EXCEPTION(env,run) \ - throw_exception ( \ - env, \ - ase_awk_getrunerrmsg(run), \ - (jint)ase_awk_getrunerrnum(run), \ - (jint)ase_awk_getrunerrlin(run)) - - -static jboolean is_debug (ase_awk_t* awk) -{ - awk_data_t* awk_data = (awk_data_t*)ase_awk_getextension (awk); - return awk_data->debug? JNI_TRUE: JNI_FALSE; -} - -JNIEXPORT void JNICALL Java_ase_awk_Awk_open (JNIEnv* env, jobject obj) -{ - jclass class; - jfieldID handle; - ase_awk_t* awk; - ase_awk_prmfns_t prmfns; - awk_data_t* awk_data; - int opt; - -#if defined(_WIN32) && defined(_DEBUG) - OutputDebugStringW (L"<<>>\n"); - #if defined(_MSC_VER) - _CrtSetDbgFlag (_CRTDBG_LEAK_CHECK_DF | _CRTDBG_ALLOC_MEM_DF); - #endif -#endif - - awk = ase_awk_open (ASE_NULL, ASE_SIZEOF(awk_data_t), ASE_NULL); - if (awk == ASE_NULL) - { - THROW_NOMEM_EXCEPTION (env); - return; - } - - awk_data = (awk_data_t*) ase_awk_getextension (awk); - awk_data->debug = 0; - awk_data->prmfns.pow = awk_pow; - awk_data->prmfns.sprintf = awk_sprintf; - awk_data->prmfns.dprintf = awk_dprintf; - awk_data->prmfns.data = ASE_NULL; - - ase_awk_setccls (awk, ASE_GETCCLS()); - ase_awk_setprmfns (awk, &awk_data->prmfns); - - class = (*env)->GetObjectClass(env, obj); - handle = (*env)->GetFieldID (env, class, FIELD_AWKID, "J"); - (*env)->DeleteLocalRef (env, class); - if (handle == ASE_NULL) - { - /* internal error. no handle field - * NoSuchFieldError, ExceptionInitializerError, - * OutOfMemoryError might have occurred */ - ase_awk_close (awk); -#if defined(_WIN32) && defined(__DMC__) - awk_free (heap, awk_data); - HeapDestroy (heap); -#else - awk_free (ASE_NULL, awk_data); -#endif - return; - } - - (*env)->SetLongField (env, obj, handle, (jlong)awk); - - opt = ASE_AWK_IMPLICIT | - ASE_AWK_EXTIO | - ASE_AWK_BLOCKLESS | - ASE_AWK_BASEONE | - ASE_AWK_PABLOCK; - - ase_awk_setoption (awk, opt); - -#if defined(_WIN32) && defined(_DEBUG) - OutputDebugStringW (L"<<>>\n"); -#endif -} - -JNIEXPORT void JNICALL Java_ase_awk_Awk_close (JNIEnv* env, jobject obj, jlong awkid) -{ - ase_awk_t* awk; - awk_data_t* tmp; - - awk = (ase_awk_t*)awkid; - /* don't like to throw an exception for close. - * i find doing so very irritating, especially when it - * should be called in an exception handler */ - if (awk == ASE_NULL) return; - -#if defined(_WIN32) && defined(_DEBUG) - OutputDebugStringW (L"<<>>\n"); -#endif - - tmp = (awk_data_t*)ase_awk_getextension (awk); -#if defined(_WIN32) && defined(__DMC__) - HANDLE heap = tmp->heap; -#endif - ase_awk_close (awk); - -#if defined(_WIN32) && defined(__DMC__) - awk_free (heap, tmp); - HeapDestroy (heap); -#else - awk_free (ASE_NULL, tmp); -#endif - -#if defined(_WIN32) && defined(_DEBUG) - OutputDebugStringW (L"<<>>\n"); - #if defined(_MSC_VER) - _CrtDumpMemoryLeaks (); - #endif -#endif - -} - -JNIEXPORT void JNICALL Java_ase_awk_Awk_parse (JNIEnv* env, jobject obj, jlong awkid) -{ - ase_awk_t* awk; - ase_awk_srcios_t srcios; - srcio_data_t srcio_data; - - awk = (ase_awk_t*) awkid; - EXCEPTION_ON_ASE_NULL_AWK (env, awk); - - srcio_data.env = env; - srcio_data.obj = obj; - - srcios.in = read_source; - srcios.out = write_source; - srcios.data = &srcio_data; - - if (ase_awk_parse (awk, &srcios) == -1) - { - THROW_AWK_EXCEPTION (env, awk); - return; - } -} - -#define DELETE_CLASS_REFS(env, run_data) \ - do { \ - (*env)->DeleteLocalRef (env, run_data.exception_class); \ - (*env)->DeleteLocalRef (env, run_data.context_class); \ - (*env)->DeleteLocalRef (env, run_data.argument_class); \ - (*env)->DeleteLocalRef (env, run_data.return_class); \ - if (run_data.context_object != ASE_NULL) \ - (*env)->DeleteLocalRef (env, run_data.context_object); \ - } while (0) - -static void on_run_start (ase_awk_run_t* run, void* custom) -{ - run_data_t* run_data; - JNIEnv* env; - jobject obj; - jfieldID runid; - - run_data = (run_data_t*)ase_awk_getruncustomdata (run); - - env = run_data->env; - obj = run_data->obj; - - runid = (*env)->GetFieldID (env, run_data->context_class, FIELD_RUNID, "J"); - (*env)->SetLongField (env, run_data->context_object, runid, (jlong)run); -} - -static void on_run_end (ase_awk_run_t* run, int errnum, void* custom) -{ - run_data_t* run_data; - JNIEnv* env; - jobject obj; - jfieldID runid_field; - jlong runid; - - run_data = (run_data_t*)ase_awk_getruncustomdata (run); - - env = run_data->env; - obj = run_data->obj; - - runid_field = (*env)->GetFieldID (env, run_data->context_class, FIELD_RUNID, "J"); - runid = (*env)->GetLongField (env, run_data->context_object, runid_field); - - if (errnum != ASE_AWK_ENOERR) - { - ase_char_t* tmp; - - ase_awk_getrunerror ( - (ase_awk_run_t*)runid, &run_data->errnum, - &run_data->errlin, &tmp); - ase_strxcpy (run_data->errmsg, - ASE_COUNTOF(run_data->errmsg), tmp); - } - - /* runid field is not valid any more */ - (*env)->SetLongField (env, run_data->context_object, runid_field, (jlong)0); - - -} - -JNIEXPORT void JNICALL Java_ase_awk_Awk_run (JNIEnv* env, jobject obj, jlong awkid, jstring mfn, jobjectArray args) -{ - ase_awk_t* awk; - ase_awk_runcbs_t runcbs; - ase_awk_runios_t runios; - runio_data_t runio_data; - run_data_t run_data; - ase_char_t* mmm; - ase_awk_runarg_t* runarg = ASE_NULL; - - jsize len, i, j; - const jchar* ptr; - - awk = (ase_awk_t*) awkid; - EXCEPTION_ON_ASE_NULL_AWK (env, awk); - - memset (&run_data, 0, sizeof(run_data)); - - run_data.env = env; - run_data.obj = obj; - - run_data.errnum = ASE_AWK_ENOERR; - run_data.errlin = 0; - - /* would global reference be necessary? */ - run_data.exception_class = (*env)->FindClass (env, CLASS_EXCEPTION); - run_data.context_class = (*env)->FindClass (env, CLASS_CONTEXT); - run_data.argument_class = (*env)->FindClass (env, CLASS_ARGUMENT); - run_data.return_class = (*env)->FindClass (env, CLASS_RETURN); - - ASE_ASSERT (run_data.exception_class != ASE_NULL); - ASE_ASSERT (run_data.context_class != ASE_NULL); - ASE_ASSERT (run_data.argument_class != ASE_NULL); - ASE_ASSERT (run_data.return_class != ASE_NULL); - - run_data.context_init = (*env)->GetMethodID ( - env, run_data.context_class, "", "(Lase/awk/Awk;)V"); - run_data.argument_init = (*env)->GetMethodID ( - env, run_data.argument_class, "", "(Lase/awk/Context;JJ)V"); - run_data.return_init = (*env)->GetMethodID ( - env, run_data.return_class, "", "(JJ)V"); - - ASE_ASSERT (run_data.context_init != ASE_NULL); - ASE_ASSERT (run_data.argument_init != ASE_NULL); - ASE_ASSERT (run_data.return_init != ASE_NULL); - - run_data.exception_get_code = (*env)->GetMethodID ( - env, run_data.exception_class, "getCode", "()I"); - run_data.exception_get_line = (*env)->GetMethodID ( - env, run_data.exception_class, "getLine", "()I"); - run_data.exception_get_message = (*env)->GetMethodID ( - env, run_data.exception_class, "getMessage", "()Ljava/lang/String;"); - - ASE_ASSERT (run_data.exception_get_code != ASE_NULL); - ASE_ASSERT (run_data.exception_get_line != ASE_NULL); - ASE_ASSERT (run_data.exception_get_message != ASE_NULL); - - run_data.context_clear = (*env)->GetMethodID ( - env, run_data.context_class, "clear", "()V"); - - ASE_ASSERT (run_data.context_clear != ASE_NULL); - - run_data.argument_valid = (*env)->GetFieldID ( - env, run_data.argument_class, FIELD_VALID, "J"); - run_data.return_valid = (*env)->GetFieldID ( - env, run_data.return_class, FIELD_VALID, "J"); - if (run_data.argument_valid == ASE_NULL || - run_data.return_valid == ASE_NULL) - { - if (is_debug(awk)) (*env)->ExceptionDescribe (env); - (*env)->ExceptionClear (env); - DELETE_CLASS_REFS (env, run_data); - THROW_NOMEM_EXCEPTION (env); - return; - } - - /* No NewGlobalRef are needed on obj and run_data->context_object - * because they are valid while this run method runs */ - run_data.context_object = (*env)->NewObject ( - env, run_data.context_class, run_data.context_init, obj); - if (run_data.context_object == ASE_NULL) - { - if (is_debug(awk)) (*env)->ExceptionDescribe (env); - (*env)->ExceptionClear (env); - DELETE_CLASS_REFS (env, run_data); - THROW_NOMEM_EXCEPTION (env); - return; - } - - runio_data.env = env; - runio_data.obj = obj; - - runios.pipe = process_extio; - runios.coproc = ASE_NULL; - runios.file = process_extio; - runios.console = process_extio; - runios.data = &runio_data; - - ASE_MEMSET (&runcbs, 0, ASE_SIZEOF(runcbs)); - runcbs.on_start = on_run_start; - runcbs.on_end = on_run_end; - runcbs.data = ASE_NULL; - - if (mfn == ASE_NULL) - { - mmm = ASE_NULL; - ptr = ASE_NULL; - } - else - { - /* process the main entry point */ - len = (*env)->GetStringLength (env, mfn); - - if (len > 0) - { - ptr = (*env)->GetStringChars (env, mfn, JNI_FALSE); - if (ptr == ASE_NULL) - { - (*env)->ExceptionClear (env); - DELETE_CLASS_REFS (env, run_data); - THROW_NOMEM_EXCEPTION (env); - return; - } - - mmm = (ase_char_t*) ase_awk_alloc (awk, ASE_SIZEOF(ase_char_t)*(len+1)); - if (mmm == ASE_NULL) - { - (*env)->ReleaseStringChars (env, mfn, ptr); - DELETE_CLASS_REFS (env, run_data); - THROW_NOMEM_EXCEPTION (env); - return; - } - - for (i = 0; i < len; i++) - { - mmm[i] = (ase_char_t)ptr[i]; - if (mmm[i] == ASE_T('\0')) - { - ase_awk_free (awk, mmm); - (*env)->ReleaseStringChars (env, mfn, ptr); - DELETE_CLASS_REFS (env, run_data); - throw_exception ( - env, - ASE_T("main function name not valid"), - ASE_AWK_EINVAL, - 0); - return; - } - } - mmm[len] = ASE_T('\0'); - } - else - { - mmm = ASE_NULL; - ptr = ASE_NULL; - } - } - - if (args != ASE_NULL) - { - /* compose arguments */ - - len = (*env)->GetArrayLength (env, args); - - runarg = ase_awk_alloc (awk, sizeof(ase_awk_runarg_t) * (len+1)); - if (runarg == ASE_NULL) - { - if (mmm != ASE_NULL) ase_awk_free (awk, mmm); - if (ptr != ASE_NULL) (*env)->ReleaseStringChars (env, mfn, ptr); - DELETE_CLASS_REFS (env, run_data); - THROW_NOMEM_EXCEPTION (env); - return; - } - - for (i = 0; i < len; i++) - { - const jchar* tmp; - jstring obj = (jstring)(*env)->GetObjectArrayElement (env, args, i); - - runarg[i].len = (*env)->GetStringLength (env, obj); - tmp = (*env)->GetStringChars (env, obj, JNI_FALSE); - if (tmp == ASE_NULL) - { - for (j = 0; j < i; j++) ase_awk_free (awk, runarg[j].ptr); - ase_awk_free (awk, runarg); - - (*env)->DeleteLocalRef (env, obj); - - if (mmm != ASE_NULL && mmm) ase_awk_free (awk, mmm); - if (ptr != ASE_NULL) (*env)->ReleaseStringChars (env, mfn, ptr); - DELETE_CLASS_REFS (env, run_data); - - THROW_NOMEM_EXCEPTION (env); - return; - } - - runarg[i].ptr = dup_str (awk, tmp, runarg[i].len); - if (runarg[i].ptr == ASE_NULL) - { - for (j = 0; j < i; j++) ase_awk_free (awk, runarg[j].ptr); - ase_awk_free (awk, runarg); - - (*env)->ReleaseStringChars (env, obj, tmp); - (*env)->DeleteLocalRef (env, obj); - - if (mmm != ASE_NULL) ase_awk_free (awk, mmm); - if (ptr != ASE_NULL) (*env)->ReleaseStringChars (env, mfn, ptr); - DELETE_CLASS_REFS (env, run_data); - THROW_NOMEM_EXCEPTION (env); - return; - } - - (*env)->ReleaseStringChars (env, obj, tmp); - (*env)->DeleteLocalRef (env, obj); - } - - runarg[i].ptr = ASE_NULL; - runarg[i].len = 0; - } - - if (ase_awk_run (awk, mmm, &runios, &runcbs, runarg, &run_data) == -1 || - run_data.errnum != ASE_AWK_ENOERR) - { - if (runarg != ASE_NULL) - { - for (i = 0; i < len; i++) ase_awk_free (awk, runarg[i].ptr); - ase_awk_free (awk, runarg); - } - - if (mmm != ASE_NULL) ase_awk_free (awk, mmm); - if (ptr != ASE_NULL) (*env)->ReleaseStringChars (env, mfn, ptr); - DELETE_CLASS_REFS (env, run_data); - - if (run_data.errnum != ASE_AWK_ENOERR) - { - throw_exception ( - env, - run_data.errmsg, - (jint)run_data.errnum, - (jint)run_data.errlin); - } - else THROW_AWK_EXCEPTION (env, awk); - return; - } - - if (runarg != ASE_NULL) - { - for (i = 0; i < len; i++) ase_awk_free (awk, runarg[i].ptr); - ase_awk_free (awk, runarg); - } - - if (mmm != ASE_NULL) ase_awk_free (awk, mmm); - if (ptr != ASE_NULL) (*env)->ReleaseStringChars (env, mfn, ptr); - DELETE_CLASS_REFS (env, run_data); -} - -JNIEXPORT void JNICALL Java_ase_awk_Awk_stop (JNIEnv* env, jobject obj, jlong awkid) -{ - ase_awk_t* awk = (ase_awk_t*)awkid; - EXCEPTION_ON_ASE_NULL_AWK (env, awk); - ase_awk_stopall (awk); -} - -static ase_ssize_t java_open_source (JNIEnv* env, jobject obj, int mode) -{ - jclass class; - jfieldID handle; - jmethodID mid; - jint ret; - ase_awk_t* awk; - - class = (*env)->GetObjectClass(env, obj); - handle = (*env)->GetFieldID (env, class, FIELD_AWKID, "J"); - mid = (*env)->GetMethodID (env, class, "openSource", "(I)I"); - (*env)->DeleteLocalRef (env, class); - if (handle == ASE_NULL) - { - (*env)->ExceptionClear (env); - return -1; - } - awk = (ase_awk_t*)(*env)->GetLongField (env, obj, handle); - - if (mid == ASE_NULL) - { - if (is_debug(awk)) (*env)->ExceptionDescribe (env); - (*env)->ExceptionClear (env); - return -1; - } - - ret = (*env)->CallIntMethod (env, obj, mid, mode); - if ((*env)->ExceptionCheck(env)) - { - if (is_debug(awk)) (*env)->ExceptionDescribe (env); - (*env)->ExceptionClear (env); - ret = -1; - } - - return ret; -} - -static ase_ssize_t java_close_source (JNIEnv* env, jobject obj, int mode) -{ - jclass class; - jfieldID handle; - jmethodID mid; - jint ret; - ase_awk_t* awk; - - class = (*env)->GetObjectClass(env, obj); - handle = (*env)->GetFieldID (env, class, FIELD_AWKID, "J"); - mid = (*env)->GetMethodID (env, class, "closeSource", "(I)I"); - (*env)->DeleteLocalRef (env, class); - if (handle == ASE_NULL) - { - (*env)->ExceptionClear (env); - return -1; - } - awk = (ase_awk_t*)(*env)->GetLongField (env, obj, handle); - - if (mid == ASE_NULL) - { - if (is_debug(awk)) (*env)->ExceptionDescribe (env); - (*env)->ExceptionClear (env); - return -1; - } - - ret = (*env)->CallIntMethod (env, obj, mid, mode); - if ((*env)->ExceptionCheck(env)) - { - if (is_debug(awk)) (*env)->ExceptionDescribe (env); - (*env)->ExceptionClear (env); - ret = -1; - } - - return ret; -} - -static ase_ssize_t java_read_source ( - JNIEnv* env, jobject obj, ase_char_t* buf, ase_size_t size) -{ - jclass class; - jfieldID handle; - jmethodID mid; - jcharArray array; - jchar* tmp; - jint ret, i; - ase_awk_t* awk; - jsize chunk; - - class = (*env)->GetObjectClass(env, obj); - handle = (*env)->GetFieldID (env, class, FIELD_AWKID, "J"); - mid = (*env)->GetMethodID (env, class, "readSource", "([CI)I"); - (*env)->DeleteLocalRef (env, class); - if (handle == ASE_NULL) - { - (*env)->ExceptionClear (env); - return -1; - } - awk = (ase_awk_t*)(*env)->GetLongField (env, obj, handle); - - if (mid == ASE_NULL) - { - if (is_debug(awk)) (*env)->ExceptionDescribe (env); - (*env)->ExceptionClear (env); - return -1; - } - - chunk = (size > ASE_TYPE_MAX(jsize))? ASE_TYPE_MAX(jsize): (jsize)size; - - array = (*env)->NewCharArray (env, chunk); - if (array == ASE_NULL) - { - if (is_debug(awk)) (*env)->ExceptionDescribe (env); - (*env)->ExceptionClear (env); - return -1; - } - - ret = (*env)->CallIntMethod (env, obj, mid, array, chunk); - if ((*env)->ExceptionCheck(env)) - { - if (is_debug(awk)) (*env)->ExceptionDescribe (env); - (*env)->ExceptionClear (env); - ret = -1; - } - - tmp = (*env)->GetCharArrayElements (env, array, 0); - for (i = 0; i < ret; i++) buf[i] = (ase_char_t)tmp[i]; - (*env)->ReleaseCharArrayElements (env, array, tmp, 0); - - (*env)->DeleteLocalRef (env, array); - return i; -} - -static ase_ssize_t java_write_source ( - JNIEnv* env, jobject obj, ase_char_t* buf, ase_size_t size) -{ - jclass class; - jfieldID handle; - jmethodID mid; - jcharArray array; - jchar* tmp; - jint ret; - ase_awk_t* awk; - jsize chunk, i; - - class = (*env)->GetObjectClass(env, obj); - handle = (*env)->GetFieldID (env, class, FIELD_AWKID, "J"); - mid = (*env)->GetMethodID (env, class, "writeSource", "([CI)I"); - (*env)->DeleteLocalRef (env, class); - if (handle == ASE_NULL) - { - (*env)->ExceptionClear (env); - return -1; - } - awk = (ase_awk_t*)(*env)->GetLongField (env, obj, handle); - - if (mid == ASE_NULL) - { - if (is_debug(awk)) (*env)->ExceptionDescribe (env); - (*env)->ExceptionClear (env); - return -1; - } - - /* handle upto 'chunk' characters, let the rest be handled by - * the underlying engine */ - chunk = (size > ASE_TYPE_MAX(jsize))? ASE_TYPE_MAX(jsize): (jsize)size; - - array = (*env)->NewCharArray (env, chunk); - if (array == ASE_NULL) - { - if (is_debug(awk)) (*env)->ExceptionDescribe (env); - (*env)->ExceptionClear (env); - return -1; - } - - tmp = (*env)->GetCharArrayElements (env, array, 0); - for (i = 0; i < chunk; i++) tmp[i] = (jchar)buf[i]; - (*env)->ReleaseCharArrayElements (env, array, tmp, 0); - - ret = (*env)->CallIntMethod (env, obj, mid, array, chunk); - if ((*env)->ExceptionCheck(env)) - { - if (is_debug(awk)) (*env)->ExceptionDescribe (env); - (*env)->ExceptionClear (env); - ret = -1; - } - - (*env)->DeleteLocalRef (env, array); - return ret; -} - -static ase_ssize_t java_open_extio ( - JNIEnv* env, jobject obj, char* meth, ase_awk_extio_t* extio) -{ - jclass class; - jfieldID handle; - jmethodID mid; - jclass extio_class; - jmethodID extio_cons; - jobject extio_object; - jstring extio_name; - jint ret; - ase_awk_t* awk; - - /* get the method - meth */ - class = (*env)->GetObjectClass(env, obj); - handle = (*env)->GetFieldID (env, class, FIELD_AWKID, "J"); - mid = (*env)->GetMethodID (env, class, meth, "(Lase/awk/Extio;)I"); - (*env)->DeleteLocalRef (env, class); - - if (handle == ASE_NULL) - { - (*env)->ExceptionClear (env); - return -1; - } - awk = (ase_awk_t*)(*env)->GetLongField (env, obj, handle); - - if (mid == ASE_NULL) - { - if (is_debug(awk)) (*env)->ExceptionDescribe (env); - (*env)->ExceptionClear (env); - return -1; - } - - /* look for extio class */ - extio_class = (*env)->FindClass (env, CLASS_EXTIO); - if (extio_class == ASE_NULL) - { - if (is_debug(awk)) (*env)->ExceptionDescribe (env); - (*env)->ExceptionClear (env); - return -1; - } - - /* get the constructor */ - extio_cons = (*env)->GetMethodID ( - env, extio_class, "", "(Ljava/lang/String;IIJ)V"); - if (extio_cons == ASE_NULL) - { - if (is_debug(awk)) (*env)->ExceptionDescribe (env); - (*env)->ExceptionClear (env); - (*env)->DeleteLocalRef (env, extio_class); - return -1; - } - - /* construct the name */ - extio_name = new_str (env, awk, extio->name, ase_strlen(extio->name)); - if (extio_name == ASE_NULL) - { - (*env)->DeleteLocalRef (env, extio_class); - return -1; - } - - /* construct the extio object */ - extio_object = (*env)->NewObject ( - env, extio_class, extio_cons, - extio_name, extio->type & 0xFF, extio->mode, (jlong)extio->run); - (*env)->DeleteLocalRef (env, extio_class); - if (extio_object == ASE_NULL) - { - if (is_debug(awk)) (*env)->ExceptionDescribe (env); - (*env)->ExceptionClear (env); - (*env)->DeleteLocalRef (env, extio_name); - return -1; - } - - (*env)->DeleteLocalRef (env, extio_name); - - /* execute the method */ - ret = (*env)->CallIntMethod (env, obj, mid, extio_object); - if ((*env)->ExceptionCheck(env)) - { - /* clear the exception */ - if (is_debug(awk)) (*env)->ExceptionDescribe (env); - (*env)->ExceptionClear (env); - ret = -1; - } - - if (ret >= 0) - { - /* ret == -1 failed to open the stream - * ret == 0 opened the stream and reached its end - * ret == 1 opened the stream. */ - extio->handle = (*env)->NewGlobalRef (env, extio_object); - /* - if (extio->handle == ASE_NULL) - { - // TODO: close the stream ... - if (is_debug(awk)) (*env)->ExceptionDescribe (env); - (*env)->ExceptionClear (env); - ret = -1; - } - */ - } - - (*env)->DeleteLocalRef (env, extio_object); - return ret; -} - -static ase_ssize_t java_close_extio ( - JNIEnv* env, jobject obj, char* meth, ase_awk_extio_t* extio) -{ - jclass class; - jfieldID handle; - jmethodID mid; - jint ret; - ase_awk_t* awk; - - class = (*env)->GetObjectClass(env, obj); - handle = (*env)->GetFieldID (env, class, FIELD_AWKID, "J"); - mid = (*env)->GetMethodID (env, class, meth, "(Lase/awk/Extio;)I"); - (*env)->DeleteLocalRef (env, class); - - if (handle == ASE_NULL) - { - (*env)->ExceptionClear (env); - return -1; - } - awk = (ase_awk_t*)(*env)->GetLongField (env, obj, handle); - if (mid == ASE_NULL) - { - if (is_debug(awk)) (*env)->ExceptionDescribe (env); - (*env)->ExceptionClear (env); - return -1; - } - - ret = (*env)->CallIntMethod (env, obj, mid, extio->handle); - if ((*env)->ExceptionCheck(env)) - { - if (is_debug(awk)) (*env)->ExceptionDescribe (env); - (*env)->ExceptionClear (env); - ret = -1; - } - - if (ret >= 0) - { - /* ret == -1 failed to close the stream - * ret == 0 closed the stream */ - (*env)->DeleteGlobalRef (env, extio->handle); - extio->handle = ASE_NULL; - } - - return ret; -} - -static ase_ssize_t java_read_extio ( - JNIEnv* env, jobject obj, char* meth, - ase_awk_extio_t* extio, ase_char_t* buf, ase_size_t size) -{ - jclass class; - jfieldID handle; - jmethodID mid; - jcharArray array; - jchar* tmp; - jint ret, i; - ase_awk_t* awk; - jsize chunk; - - class = (*env)->GetObjectClass(env, obj); - handle = (*env)->GetFieldID (env, class, FIELD_AWKID, "J"); - mid = (*env)->GetMethodID (env, class, meth, "(Lase/awk/Extio;[CI)I"); - (*env)->DeleteLocalRef (env, class); - - if (handle == ASE_NULL) - { - (*env)->ExceptionClear (env); - return -1; - } - awk = (ase_awk_t*)(*env)->GetLongField (env, obj, handle); - - if (mid == ASE_NULL) - { - if (is_debug(awk)) (*env)->ExceptionDescribe (env); - (*env)->ExceptionClear (env); - return -1; - } - - /* shrink the buffer if it exceeds java's capability */ - chunk = (size > ASE_TYPE_MAX(jsize))? ASE_TYPE_MAX(jsize): (jsize)size; - - array = (*env)->NewCharArray (env, chunk); - if (array == ASE_NULL) - { - if (is_debug(awk)) (*env)->ExceptionDescribe (env); - (*env)->ExceptionClear (env); - return -1; - } - - ret = (*env)->CallIntMethod (env, obj, mid, extio->handle, array, chunk); - if ((*env)->ExceptionCheck(env)) - { - if (is_debug(awk)) (*env)->ExceptionDescribe (env); - (*env)->ExceptionClear (env); - ret = -1; - } - - if (ret > 0) - { - tmp = (*env)->GetCharArrayElements (env, array, 0); - for (i = 0; i < ret; i++) buf[i] = (ase_char_t)tmp[i]; - (*env)->ReleaseCharArrayElements (env, array, tmp, 0); - } - - (*env)->DeleteLocalRef (env, array); - return ret; -} - -static ase_ssize_t java_write_extio ( - JNIEnv* env, jobject obj, char* meth, - ase_awk_extio_t* extio, ase_char_t* data, ase_size_t size) -{ - jclass class; - jfieldID handle; - jmethodID mid; - jcharArray array; - jchar* tmp; - jint ret; - ase_awk_t* awk; - jsize chunk, i; - - class = (*env)->GetObjectClass(env, obj); - handle = (*env)->GetFieldID (env, class, FIELD_AWKID, "J"); - mid = (*env)->GetMethodID (env, class, meth, "(Lase/awk/Extio;[CI)I"); - (*env)->DeleteLocalRef (env, class); - - if (handle == ASE_NULL) - { - (*env)->ExceptionClear (env); - return -1; - } - awk = (ase_awk_t*)(*env)->GetLongField (env, obj, handle); - if (mid == ASE_NULL) - { - if (is_debug(awk)) (*env)->ExceptionDescribe (env); - (*env)->ExceptionClear (env); - return -1; - } - - chunk = (size > ASE_TYPE_MAX(jsize))? ASE_TYPE_MAX(jsize): (jsize)size; - - array = (*env)->NewCharArray (env, chunk); - if (array == ASE_NULL) - { - if (is_debug(awk)) (*env)->ExceptionDescribe (env); - (*env)->ExceptionClear (env); - return -1; - } - - tmp = (*env)->GetCharArrayElements (env, array, 0); - for (i = 0; i < chunk; i++) tmp[i] = (jchar)data[i]; - (*env)->ReleaseCharArrayElements (env, array, tmp, 0); - - ret = (*env)->CallIntMethod (env, obj, mid, extio->handle, array, chunk); - if ((*env)->ExceptionCheck(env)) - { - if (is_debug(awk)) (*env)->ExceptionDescribe (env); - (*env)->ExceptionClear (env); - ret = -1; - } - - (*env)->DeleteLocalRef (env, array); - return ret; -} - - -static ase_ssize_t java_flush_extio ( - JNIEnv* env, jobject obj, char* meth, ase_awk_extio_t* extio) -{ - jclass class; - jfieldID handle; - jmethodID mid; - jint ret; - ase_awk_t* awk; - - class = (*env)->GetObjectClass(env, obj); - handle = (*env)->GetFieldID (env, class, FIELD_AWKID, "J"); - mid = (*env)->GetMethodID (env, class, meth, "(Lase/awk/Extio;)I"); - (*env)->DeleteLocalRef (env, class); - if (handle == ASE_NULL) - { - (*env)->ExceptionClear (env); - return -1; - } - awk = (ase_awk_t*)(*env)->GetLongField (env, obj, handle); - if (mid == ASE_NULL) - { - if (is_debug(awk)) (*env)->ExceptionDescribe (env); - (*env)->ExceptionClear (env); - return -1; - } - - ret = (*env)->CallIntMethod (env, obj, mid, extio->handle); - if ((*env)->ExceptionCheck(env)) - { - if (is_debug(awk)) (*env)->ExceptionDescribe (env); - (*env)->ExceptionClear (env); - ret = -1; - } - - return ret; -} - -static ase_ssize_t java_next_extio ( - JNIEnv* env, jobject obj, char* meth, ase_awk_extio_t* extio) -{ - jclass class; - jfieldID handle; - jmethodID mid; - jint ret; - ase_awk_t* awk; - - class = (*env)->GetObjectClass(env, obj); - handle = (*env)->GetFieldID (env, class, FIELD_AWKID, "J"); - mid = (*env)->GetMethodID (env, class, meth, "(Lase/awk/Extio;)I"); - (*env)->DeleteLocalRef (env, class); - if (handle == ASE_NULL) - { - (*env)->ExceptionClear (env); - return -1; - } - awk = (ase_awk_t*)(*env)->GetLongField (env, obj, handle); - if (mid == ASE_NULL) - { - (*env)->ExceptionClear (env); - return -1; - } - - ret = (*env)->CallIntMethod (env, obj, mid, extio->handle); - if ((*env)->ExceptionCheck(env)) - { - if (is_debug(awk)) (*env)->ExceptionDescribe (env); - (*env)->ExceptionClear (env); - ret = -1; - } - - return ret; -} - -static ase_ssize_t read_source ( - int cmd, void* arg, ase_char_t* data, ase_size_t count) -{ - srcio_data_t* srcio_data = (srcio_data_t*)arg; - - if (cmd == ASE_AWK_IO_OPEN) - { - return java_open_source ( - srcio_data->env, srcio_data->obj, SOURCE_READ); - } - else if (cmd == ASE_AWK_IO_CLOSE) - { - return java_close_source ( - srcio_data->env, srcio_data->obj, SOURCE_READ); - } - else if (cmd == ASE_AWK_IO_READ) - { - return java_read_source ( - srcio_data->env, srcio_data->obj, data, count); - } - - return -1; -} - -static ase_ssize_t write_source ( - int cmd, void* arg, ase_char_t* data, ase_size_t count) -{ - srcio_data_t* srcio_data = (srcio_data_t*)arg; - - if (cmd == ASE_AWK_IO_OPEN) - { - return java_open_source ( - srcio_data->env, srcio_data->obj, SOURCE_WRITE); - } - else if (cmd == ASE_AWK_IO_CLOSE) - { - return java_close_source ( - srcio_data->env, srcio_data->obj, SOURCE_WRITE); - } - else if (cmd == ASE_AWK_IO_WRITE) - { - return java_write_source ( - srcio_data->env, srcio_data->obj, data, count); - } - - return -1; -} - -static ase_ssize_t process_extio ( - int cmd, void* arg, ase_char_t* data, ase_size_t size) -{ - ase_awk_extio_t* epa = (ase_awk_extio_t*)arg; - runio_data_t* runio_data = (runio_data_t*)epa->data; - - switch (cmd) - { - - case ASE_AWK_IO_OPEN: - return java_open_extio ( - runio_data->env, runio_data->obj, - "openExtio", epa); - - case ASE_AWK_IO_CLOSE: - return java_close_extio ( - runio_data->env, runio_data->obj, - "closeExtio", epa); - - case ASE_AWK_IO_READ: - return java_read_extio ( - runio_data->env, runio_data->obj, - "readExtio", epa, data, size); - - case ASE_AWK_IO_WRITE: - - return java_write_extio ( - runio_data->env, runio_data->obj, - "writeExtio", epa, data, size); - - case ASE_AWK_IO_FLUSH: - return java_flush_extio ( - runio_data->env, runio_data->obj, - "flushExtio", epa); - - case ASE_AWK_IO_NEXT: - return java_next_extio ( - runio_data->env, runio_data->obj, - "nextExtio", epa); - - } - - return -1; -} - -static int handle_bfn ( - ase_awk_run_t* run, const ase_char_t* fnm, ase_size_t fnl) -{ - run_data_t* run_data; - ase_awk_t* awk; - - JNIEnv* env; - jobject obj; - - jclass class; - jmethodID method; - jthrowable throwable; - jstring name; - jsize i, nargs; - jobjectArray args; - jobject arg, ret; - ase_awk_val_t* v; - jlong vi; - - ase_size_t nargs_ase; - - awk = ase_awk_getrunawk (run); - run_data = ase_awk_getruncustomdata (run); - - nargs_ase = ase_awk_getnargs (run); - nargs = (nargs_ase > ASE_TYPE_MAX(jsize))? ASE_TYPE_MAX(jsize): (jsize)nargs_ase; - - env = run_data->env; - obj = run_data->obj; - - name = new_str (env, awk, fnm, fnl); - if (name == ASE_NULL) - { - ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM); - return -1; - } - - class = (*env)->GetObjectClass(env, obj); - method = (*env)->GetMethodID ( - env, class, "handleFunction", - "(Lase/awk/Context;Ljava/lang/String;Lase/awk/Return;[Lase/awk/Argument;)V"); - (*env)->DeleteLocalRef (env, class); - if (method == ASE_NULL) - { - /* if the method is not found, the exception is thrown. - * clear it to prevent it from being thrown */ - (*env)->DeleteLocalRef (env, name); - if (is_debug(awk)) (*env)->ExceptionDescribe (env); - (*env)->ExceptionClear (env); - ase_awk_setrunerrnum (run, ASE_AWK_EINTERN); - return -1; - } - - ret = (*env)->NewObject (env, - run_data->return_class, run_data->return_init, - (jlong)run, (jlong)0); - if (ret == ASE_NULL) - { - (*env)->DeleteLocalRef (env, name); - if (is_debug(awk)) (*env)->ExceptionDescribe (env); - (*env)->ExceptionClear (env); - ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM); - return -1; - } - - args = (*env)->NewObjectArray ( - env, nargs, run_data->argument_class, ASE_NULL); - if (args == ASE_NULL) - { - /* no ref-down on ret.runid as it is still ase_awk_val_nil */ - (*env)->DeleteLocalRef (env, ret); - - (*env)->DeleteLocalRef (env, name); - if (is_debug(awk)) (*env)->ExceptionDescribe (env); - (*env)->ExceptionClear (env); - ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM); - return -1; - } - - for (i = 0; i < nargs; i++) - { - v = ase_awk_getarg (run, i); - - /* these arguments are not registered for clearance into - * the context. so ASE_NULL is passed as the first argument - * to the constructor of the Argument class. It is because - * the reference count of these arguments are still positive - * while this function runs. However, if you ever use an - * argument outside the current context, it may cause - * a program failure such as program crash */ - arg = (*env)->NewObject (env, - run_data->argument_class, run_data->argument_init, - ASE_NULL, (jlong)run, (jlong)v); - if (arg == ASE_NULL) - { - if ((*env)->ExceptionCheck(env)) - { - if (is_debug(awk)) - (*env)->ExceptionDescribe (env); - (*env)->ExceptionClear (env); - } - (*env)->DeleteLocalRef (env, args); - - /* no ref-down on ret.runid as it is - * still ase_awk_val_nil */ - (*env)->DeleteLocalRef (env, ret); - (*env)->DeleteLocalRef (env, name); - ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM); - return -1; - } - - (*env)->SetObjectArrayElement (env, args, i, arg); - if (arg != ASE_NULL) (*env)->DeleteLocalRef (env, arg); - } - - (*env)->CallVoidMethod ( - env, obj, method, run_data->context_object, name, ret, args); - throwable = (*env)->ExceptionOccurred(env); - if (throwable) - { - jint code; - jstring mesg; - ase_char_t* rptr; - const jchar* ptr; - jsize len; - jclass class; - - if (is_debug(awk)) (*env)->ExceptionDescribe (env); - (*env)->ExceptionClear (env); - (*env)->DeleteLocalRef (env, args); - - /* invoke context.clear */ - (*env)->CallVoidMethod (env, run_data->context_object, run_data->context_clear); - if ((*env)->ExceptionCheck(env)) - { - if (is_debug(awk)) (*env)->ExceptionDescribe (env); - (*env)->ExceptionClear (env); - } - - /* refdown on ret.valid is needed here */ - vi = (*env)->GetLongField (env, ret, run_data->return_valid); - if (vi != 0) - { - ase_awk_refdownval (run, (ase_awk_val_t*)vi); - (*env)->SetLongField (env, ret, run_data->return_valid ,(jlong)0); - } - - (*env)->DeleteLocalRef (env, ret); - (*env)->DeleteLocalRef (env, name); - - class = (*env)->GetObjectClass (env, throwable); - if (!(*env)->IsSameObject(env,class,run_data->exception_class)) - { - (*env)->DeleteLocalRef (env, class); - ase_awk_setrunerrnum (run, ASE_AWK_EBFNIMPL); - return -1; - } - (*env)->DeleteLocalRef (env, class); - - code = (*env)->CallIntMethod (env, throwable, run_data->exception_get_code); - if ((*env)->ExceptionCheck(env)) - { - if (is_debug(awk)) (*env)->ExceptionDescribe (env); - (*env)->ExceptionClear (env); - ase_awk_setrunerrnum (run, ASE_AWK_EBFNIMPL); - return -1; - } - if (code == ASE_AWK_ENOERR) code = ASE_AWK_EBFNIMPL; - - /* the line information is not important in this context. - * it will be replaced by the underlying engine anyhow. */ - /*line = (*env)->CallIntMethod (env, throwable, run_data->exception_get_line);*/ - mesg = (*env)->CallObjectMethod (env, throwable, run_data->exception_get_message); - if ((*env)->ExceptionCheck(env)) - { - if (is_debug(awk)) (*env)->ExceptionDescribe (env); - (*env)->ExceptionClear (env); - ase_awk_setrunerrnum (run, ASE_AWK_EBFNIMPL); - return -1; - } - - if (mesg == ASE_NULL) - { - /* there is no message given */ - ase_awk_setrunerrnum (run, code); - return -1; - } - - len = (*env)->GetStringLength (env, mesg); - ptr = (*env)->GetStringChars (env, mesg, JNI_FALSE); - - if (len > 0 && ASE_SIZEOF(jchar) != ASE_SIZEOF(ase_char_t)) - { - jsize x; - rptr = (ase_char_t*) ase_awk_alloc (awk, ASE_SIZEOF(ase_char_t)*len); - if (rptr == ASE_NULL) - { - /* ran out of memory in exception handling. - * it is freaking studid. */ - ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM); - goto error_in_exception_handler; - } - for (x = 0; x < len; x++) rptr[x] = (ase_char_t)ptr[x]; - } - else rptr = (ase_char_t*)ptr; - - ase_awk_setrunerrmsg (run, code, 0, rptr); - if (rptr != ptr) ase_awk_free (awk, rptr); - - error_in_exception_handler: - (*env)->ReleaseStringChars (env, mesg, ptr); - (*env)->DeleteLocalRef (env, throwable); - return -1; - } - - vi = (*env)->GetLongField (env, ret, run_data->return_valid); - if (vi != 0) - { - ase_awk_setretval (run, (ase_awk_val_t*)vi); - - /* invalidate the value field in return object */ - ase_awk_refdownval (run, (ase_awk_val_t*)vi); - (*env)->SetLongField (env, ret, run_data->return_valid, (jlong)0); - } - - (*env)->DeleteLocalRef (env, args); - (*env)->DeleteLocalRef (env, ret); - (*env)->DeleteLocalRef (env, name); - - (*env)->CallVoidMethod (env, - run_data->context_object, run_data->context_clear); - if ((*env)->ExceptionCheck(env)) - { - if (is_debug(awk)) (*env)->ExceptionDescribe (env); - (*env)->ExceptionClear (env); - ase_awk_setrunerrnum (run, ASE_AWK_EBFNIMPL); - return -1; - } - - return 0; -} - -JNIEXPORT void JNICALL Java_ase_awk_Awk_addfunc ( - JNIEnv* env, jobject obj, jstring name, jint min_args, jint max_args) -{ - jclass class; - jfieldID handle; - jint n; - - ase_awk_t* awk; - const jchar* ptr; - jsize len; - - class = (*env)->GetObjectClass(env, obj); - handle = (*env)->GetFieldID (env, class, FIELD_AWKID, "J"); - (*env)->DeleteLocalRef (env, class); - if (handle == ASE_NULL) - { - /* internal error. no handle field - * NoSuchFieldError, ExceptionInitializerError, - * OutOfMemoryError might have occurred */ - return; - } - - awk = (ase_awk_t*) (*env)->GetLongField (env, obj, handle); - - len = (*env)->GetStringLength (env, name); - ptr = (*env)->GetStringChars (env, name, JNI_FALSE); - if (ptr == ASE_NULL) - { - (*env)->ExceptionClear (env); - THROW_NOMEM_EXCEPTION (env); - return; - } - - if (len > 0 && ASE_SIZEOF(jchar) != ASE_SIZEOF(ase_char_t)) - { - jsize x; - ase_char_t* tmp = (ase_char_t*) - ase_awk_alloc (awk, ASE_SIZEOF(ase_char_t)*len); - if (tmp == ASE_NULL) - { - (*env)->ReleaseStringChars (env, name, ptr); - THROW_NOMEM_EXCEPTION (env); - return; - } - - for (x = 0; x < len; x++) tmp[x] = (ase_char_t)ptr[x]; - n = (ase_awk_addfunc (awk, tmp, len, 0, - min_args, max_args, ASE_NULL, handle_bfn) == ASE_NULL)? -1: 0; - ase_awk_free (awk, tmp); - } - else - { - n = (ase_awk_addfunc (awk, (ase_char_t*)ptr, len, 0, - min_args, max_args, ASE_NULL, handle_bfn) == ASE_NULL)? -1: 0; - } - - - (*env)->ReleaseStringChars (env, name, ptr); - if (n == -1) THROW_AWK_EXCEPTION (env, awk); -} - -JNIEXPORT void JNICALL Java_ase_awk_Awk_delfunc ( - JNIEnv* env, jobject obj, jstring name) -{ - jclass class; - jfieldID handle; - jint n; - - ase_awk_t* awk; - const jchar* ptr; - jsize len; - - class = (*env)->GetObjectClass(env, obj); - handle = (*env)->GetFieldID (env, class, FIELD_AWKID, "J"); - (*env)->DeleteLocalRef (env, class); - if (handle == ASE_NULL) - { - /* internal error. no handle field - * NoSuchFieldError, ExceptionInitializerError, - * OutOfMemoryError might have occurred */ - return; - } - - awk = (ase_awk_t*) (*env)->GetLongField (env, obj, handle); - - len = (*env)->GetStringLength (env, name); - ptr = (*env)->GetStringChars (env, name, JNI_FALSE); - if (ptr == ASE_NULL) - { - (*env)->ExceptionClear (env); - THROW_NOMEM_EXCEPTION (env); - return; - } - - if (len > 0 && ASE_SIZEOF(jchar) != ASE_SIZEOF(ase_char_t)) - { - jsize x; - ase_char_t* tmp = (ase_char_t*) - ase_awk_alloc (awk, ASE_SIZEOF(ase_char_t)*len); - if (tmp == ASE_NULL) - { - (*env)->ReleaseStringChars (env, name, ptr); - THROW_NOMEM_EXCEPTION (env); - return; - } - - for (x = 0; x < len; x++) tmp[x] = (ase_char_t)ptr[x]; - n = ase_awk_delfunc (awk, tmp, len); - ase_awk_free (awk, tmp); - } - else - { - n = ase_awk_delfunc (awk, (ase_char_t*)ptr, len); - } - - (*env)->ReleaseStringChars (env, name, ptr); - if (n == -1) THROW_AWK_EXCEPTION (env, awk); -} - -JNIEXPORT jint JNICALL Java_ase_awk_Awk_getmaxdepth (JNIEnv* env, jobject obj, jlong awkid, jint id) -{ - ase_awk_t* awk = (ase_awk_t*)awkid; - EXCEPTION_ON_ASE_NULL_AWK_RETURNING (env, awk, 0); - return (jint)ase_awk_getmaxdepth (awk, id); -} - -JNIEXPORT void JNICALL Java_ase_awk_Awk_setmaxdepth (JNIEnv* env, jobject obj, jlong awkid, jint ids, jint depth) -{ - ase_awk_t* awk = (ase_awk_t*)awkid; - EXCEPTION_ON_ASE_NULL_AWK (env, awk); - ase_awk_setmaxdepth (awk, ids, depth); -} - -JNIEXPORT jint JNICALL Java_ase_awk_Awk_getoption (JNIEnv* env, jobject obj, jlong awkid) -{ - ase_awk_t* awk = (ase_awk_t*)awkid; - EXCEPTION_ON_ASE_NULL_AWK_RETURNING (env, awk, 0); - return ase_awk_getoption (awk); -} - -JNIEXPORT void JNICALL Java_ase_awk_Awk_setoption (JNIEnv* env, jobject obj, jlong awkid, jint options) -{ - ase_awk_t* awk = (ase_awk_t*)awkid; - EXCEPTION_ON_ASE_NULL_AWK (env, awk); - ase_awk_setoption (awk, (int)options); -} - -JNIEXPORT jboolean JNICALL Java_ase_awk_Awk_getdebug (JNIEnv* env, jobject obj, jlong awkid) -{ - ase_awk_t* awk = (ase_awk_t*)awkid; - EXCEPTION_ON_ASE_NULL_AWK_RETURNING (env, awk, JNI_FALSE); - return ((awk_data_t*)ase_awk_getextension(awk))->debug? JNI_TRUE: JNI_FALSE; -} - -JNIEXPORT void JNICALL Java_ase_awk_Awk_setdebug ( - JNIEnv* env, jobject obj, jlong awkid, jboolean debug) -{ - ase_awk_t* awk = (ase_awk_t*)awkid; - EXCEPTION_ON_ASE_NULL_AWK (env, awk); - ((awk_data_t*)ase_awk_getextension(awk))->debug = debug; -} - -JNIEXPORT jstring JNICALL Java_ase_awk_Awk_getword ( - JNIEnv* env, jobject obj, jlong awkid, jstring ow) -{ - ase_awk_t* awk; - const jchar* ojp = ASE_NULL; - jsize olen = 0; - ase_size_t nlen; - ase_char_t* oap, * nap; - jstring ret; - - awk = (ase_awk_t*) awkid; - EXCEPTION_ON_ASE_NULL_AWK_RETURNING (env, awk, ASE_NULL); - - if (ow == ASE_NULL) return ASE_NULL; - - if (get_str(env,awk,ow,&ojp,&oap,&olen) == -1) - { - THROW_NOMEM_EXCEPTION (env); - return ASE_NULL; - } - - if (ase_awk_getword (awk, oap, olen, &nap, &nlen) == -1) - { - free_str (env, awk, ow, ojp, oap); - return ASE_NULL; - } - - free_str (env, awk, ow, ojp, oap); - - ret = new_str (env, awk, nap, nlen); - if (ret == ASE_NULL) THROW_NOMEM_EXCEPTION (env); - return ret; -} - -JNIEXPORT void JNICALL Java_ase_awk_Awk_setword ( - JNIEnv* env, jobject obj, jlong awkid, jstring ow, jstring nw) -{ - ase_awk_t* awk; - const jchar* ojp = ASE_NULL, * njp = ASE_NULL; - jsize olen = 0, nlen = 0; - ase_char_t* oap = ASE_NULL, * nap = ASE_NULL; - jint r; - - awk = (ase_awk_t*) awkid; - EXCEPTION_ON_ASE_NULL_AWK (env, awk); - - if (ow != ASE_NULL) - { - if (get_str(env,awk,ow,&ojp,&oap,&olen) == -1) - { - THROW_NOMEM_EXCEPTION (env); - return; - } - } - - if (nw != ASE_NULL) - { - if (get_str(env,awk,nw,&njp,&nap,&nlen) == -1) - { - if (ow != ASE_NULL) free_str (env, awk, ow, ojp, oap); - THROW_NOMEM_EXCEPTION (env); - return; - } - } - - r = ase_awk_setword (awk, oap, olen, nap, nlen); - - if (nw != ASE_NULL) free_str (env, awk, nw, njp, nap); - if (ow != ASE_NULL) free_str (env, awk, ow, ojp, oap); - - if (r == -1) THROW_AWK_EXCEPTION (env, awk); -} - -JNIEXPORT void JNICALL Java_ase_awk_Awk_setfilename ( - JNIEnv* env, jobject obj, jlong runid, jstring name) -{ - ase_awk_run_t* run = (ase_awk_run_t*)runid; - const jchar* ptr; - jsize len; - jint n; - - ase_awk_t* awk = ase_awk_getrunawk (run); - - len = (*env)->GetStringLength (env, name); - ptr = (*env)->GetStringChars (env, name, JNI_FALSE); - if (ptr == ASE_NULL) - { - (*env)->ExceptionClear (env); - THROW_NOMEM_EXCEPTION (env); - return; - } - - if (len > 0 && ASE_SIZEOF(jchar) != ASE_SIZEOF(ase_char_t)) - { - jsize x; - ase_char_t* tmp = (ase_char_t*) - ase_awk_alloc (awk, ASE_SIZEOF(ase_char_t)*len); - if (tmp == ASE_NULL) - { - (*env)->ReleaseStringChars (env, name, ptr); - THROW_NOMEM_EXCEPTION (env); - return; - } - - for (x = 0; x < len; x++) tmp[x] = (ase_char_t)ptr[x]; - n = ase_awk_setfilename (run, tmp, len); - ase_awk_free (awk, tmp); - } - else - { - n = ase_awk_setfilename (run, (ase_char_t*)ptr, len); - } - - (*env)->ReleaseStringChars (env, name, ptr); - - if (n == -1) THROW_RUN_EXCEPTION (env, run); -} - -JNIEXPORT void JNICALL Java_ase_awk_Awk_setofilename ( - JNIEnv* env, jobject obj, jlong runid, jstring name) -{ - ase_awk_run_t* run = (ase_awk_run_t*)runid; - const jchar* ptr; - jsize len; - jint n; - - ase_awk_t* awk = ase_awk_getrunawk (run); - - len = (*env)->GetStringLength (env, name); - ptr = (*env)->GetStringChars (env, name, JNI_FALSE); - if (ptr == ASE_NULL) - { - (*env)->ExceptionClear (env); - THROW_NOMEM_EXCEPTION (env); - return; - } - - if (len > 0 && ASE_SIZEOF(jchar) != ASE_SIZEOF(ase_char_t)) - { - jsize x; - ase_char_t* tmp = (ase_char_t*) - ase_awk_alloc (awk, ASE_SIZEOF(ase_char_t)*len); - if (tmp == ASE_NULL) - { - (*env)->ReleaseStringChars (env, name, ptr); - THROW_NOMEM_EXCEPTION (env); - return; - } - - for (x = 0; x < len; x++) tmp[x] = (ase_char_t)ptr[x]; - n = ase_awk_setofilename (run, tmp, len); - ase_awk_free (awk, tmp); - } - else - { - n = ase_awk_setofilename (run, (ase_char_t*)ptr, len); - } - - (*env)->ReleaseStringChars (env, name, ptr); - - if (n == -1) THROW_RUN_EXCEPTION (env, run); -} - -static jstring JNICALL call_strftime ( - JNIEnv* env, jobject obj, jstring fmt, struct tm* tm) -{ - ase_char_t buf[128]; - ase_size_t len, i; - const jchar* ptr; - ase_char_t* tmp; - jstring ret; - - jclass class; - jfieldID handle; - ase_awk_t* awk; - - class = (*env)->GetObjectClass(env, obj); - handle = (*env)->GetFieldID (env, class, FIELD_AWKID, "J"); - (*env)->DeleteLocalRef (env, class); - if (handle == ASE_NULL) - { - /* internal error. no handle field - * NoSuchFieldError, ExceptionInitializerError, - * OutOfMemoryError might have occurred */ - return ASE_NULL; - } - awk = (ase_awk_t*) (*env)->GetLongField (env, obj, handle); - - len = (*env)->GetStringLength (env, fmt); - ptr = (*env)->GetStringChars (env, fmt, JNI_FALSE); - if (ptr == ASE_NULL) - { - (*env)->ExceptionClear (env); - THROW_NOMEM_EXCEPTION (env); - return ASE_NULL; - } - - tmp = (ase_char_t*) ase_awk_alloc (awk, ASE_SIZEOF(ase_char_t)*(len+1)); - if (tmp == ASE_NULL) - { - (*env)->ReleaseStringChars (env, fmt, ptr); - THROW_NOMEM_EXCEPTION (env); - return ASE_NULL; - } - - for (i = 0; i < len; i++) tmp[i] = (ase_char_t)ptr[i]; - tmp[i] = ASE_T('\0'); - - len = wcsftime (buf, ASE_COUNTOF(buf), tmp, tm); - - ase_awk_free (awk, tmp); - (*env)->ReleaseStringChars (env, fmt, ptr); - - ret = new_str (env, awk, buf, len); - if (ret == ASE_NULL) THROW_NOMEM_EXCEPTION (env); - return ret; -} - - -JNIEXPORT jstring JNICALL Java_ase_awk_Awk_strftime ( - JNIEnv* env, jobject obj, jstring fmt, jlong sec) -{ - struct tm* tm; - time_t t = (time_t)sec; - -#ifdef _WIN32 - tm = localtime (&t); -#else - struct tm tmb; - tm = localtime_r (&t, &tmb); -#endif - - return call_strftime (env, obj, fmt, tm); -} - -JNIEXPORT jstring JNICALL Java_ase_awk_Awk_strfgmtime ( - JNIEnv* env, jobject obj, jstring fmt, jlong sec) -{ - struct tm* tm; - time_t t = (time_t)sec; - -#ifdef _WIN32 - tm = gmtime (&t); -#else - struct tm tmb; - tm = gmtime_r (&t, &tmb); -#endif - - return call_strftime (env, obj, fmt, tm); -} - -JNIEXPORT jint JNICALL Java_ase_awk_Awk_system ( - JNIEnv* env, jobject obj, jstring cmd) -{ - ase_size_t len, i; - const jchar* ptr; - ase_char_t* tmp; - jint ret; - - jclass class; - jfieldID handle; - ase_awk_t* awk; - - class = (*env)->GetObjectClass(env, obj); - handle = (*env)->GetFieldID (env, class, FIELD_AWKID, "J"); - (*env)->DeleteLocalRef (env, class); - if (handle == ASE_NULL) - { - /* internal error. no handle field - * NoSuchFieldError, ExceptionInitializerError, - * OutOfMemoryError might have occurred */ - return -1; - } - awk = (ase_awk_t*) (*env)->GetLongField (env, obj, handle); - - len = (*env)->GetStringLength (env, cmd); - ptr = (*env)->GetStringChars (env, cmd, JNI_FALSE); - if (ptr == ASE_NULL) - { - (*env)->ExceptionClear (env); - THROW_NOMEM_EXCEPTION (env); - return -1; - } - - tmp = (ase_char_t*) ase_awk_alloc (awk, ASE_SIZEOF(ase_char_t)*(len+1)); - if (tmp == ASE_NULL) - { - (*env)->ReleaseStringChars (env, cmd, ptr); - THROW_NOMEM_EXCEPTION (env); - return -1; - } - - for (i = 0; i < len; i++) tmp[i] = (ase_char_t)ptr[i]; - tmp[i] = ASE_T('\0'); - - (*env)->ReleaseStringChars (env, cmd, ptr); - -#ifdef _WIN32 - ret = _tsystem(tmp); -#else - char* mbs = (char*)ase_awk_alloc (awk, len*5+1); - if (mbs == ASE_NULL) - { - ase_awk_free (awk, tmp); - return -1; - } - - size_t mbl = wcstombs (mbs, tmp, len*5); - if (mbl == (size_t)-1) - { - ase_awk_free (awk, mbs); - ase_awk_free (awk, tmp); - return -1; - } - mbs[mbl] = '\0'; - ret = system(mbs); - ase_awk_free (awk, mbs); -#endif - - ase_awk_free (awk, tmp); - return ret; -} - -JNIEXPORT void JNICALL Java_ase_awk_Context_stop (JNIEnv* env, jobject obj, jlong runid) -{ - ase_awk_stop ((ase_awk_run_t*)runid); -} - -JNIEXPORT void JNICALL Java_ase_awk_Context_setglobal (JNIEnv* env, jobject obj, jlong runid, jint id, jobject ret) -{ - ase_awk_run_t* run = (ase_awk_run_t*)runid; - run_data_t* run_data; - ase_awk_val_t* v; - jlong vi; - - run_data = (run_data_t*)ase_awk_getruncustomdata (run); - - vi = (*env)->GetLongField (env, ret, run_data->return_valid); - v = (vi == 0)? ase_awk_val_nil: (ase_awk_val_t*)vi; - /* invalidate the value field in the return object */ - (*env)->SetLongField (env, ret, run_data->return_valid, (jlong)0); - - if (ase_awk_setglobal(run,id,v) == -1) - { - if (vi != 0) ase_awk_refdownval (run, v); - THROW_RUN_EXCEPTION (env, run); - return; - } - - if (vi != 0) ase_awk_refdownval (run, v); -} - -JNIEXPORT jobject JNICALL Java_ase_awk_Context_getglobal (JNIEnv* env, jobject obj, jlong runid, jint id) -{ - ase_awk_run_t* run = (ase_awk_run_t*)runid; - ase_awk_t* awk; - run_data_t* run_data; - ase_awk_val_t* g; - jobject arg; - - run_data = (run_data_t*)ase_awk_getruncustomdata (run); - awk = ase_awk_getrunawk (run); - - g = ase_awk_getglobal(run, id); - - ASE_ASSERTX ((*env)->IsSameObject(env,obj,run_data->context_object), - "this object(obj) should be the same object as the context object(run_data->context_object)"); - - arg = (*env)->NewObject (env, - run_data->argument_class, run_data->argument_init, - obj, (jlong)run, (jlong)g); - if (arg == ASE_NULL) - { - if (is_debug(awk)) (*env)->ExceptionDescribe (env); - (*env)->ExceptionClear (env); - THROW_NOMEM_EXCEPTION (env); - return ASE_NULL; - } - - /* the reference is incremented. this incremented reference is - * decremented in Argument.clear called from Context.clear. - * Note that the context object (obj) is passed to the contrustor of - * the argument class in the call to NewObject above */ - ase_awk_refupval (run, g); - return arg; -} - -JNIEXPORT jlong JNICALL Java_ase_awk_Argument_getintval (JNIEnv* env, jobject obj, jlong runid, jlong valid) -{ - ase_awk_run_t* run = (ase_awk_run_t*)runid; - int n; - ase_long_t lv = 0; - ase_real_t rv = 0.0; - - n = ase_awk_valtonum (run, (ase_awk_val_t*)valid, &lv, &rv); - if (n == -1) THROW_RUN_EXCEPTION (env, run); - else if (n == 1) lv = (ase_long_t)rv; - - return (jlong)lv; -} - -JNIEXPORT jdouble JNICALL Java_ase_awk_Argument_getrealval (JNIEnv* env, jobject obj, jlong runid, jlong valid) -{ - ase_awk_run_t* run = (ase_awk_run_t*)runid; - int n; - ase_long_t lv = 0; - ase_real_t rv = 0.0; - - n = ase_awk_valtonum (run, (ase_awk_val_t*)valid, &lv, &rv); - if (n == -1) THROW_RUN_EXCEPTION (env, run); - else if (n == 0) rv = (ase_real_t)lv; - - return (jdouble)rv; -} - -JNIEXPORT jstring JNICALL Java_ase_awk_Argument_getstrval (JNIEnv* env, jobject obj, jlong runid, jlong valid) -{ - ase_awk_run_t* run = (ase_awk_run_t*)runid; - ase_awk_val_t* val = (ase_awk_val_t*)valid; - ase_awk_t* awk = ase_awk_getrunawk (run); - - ase_char_t* str; - ase_size_t len; - jstring ret = ASE_NULL; - - str = ase_awk_valtostr ( - run, val, ASE_AWK_VALTOSTR_CLEAR, ASE_NULL, &len); - if (str == ASE_NULL) - { - THROW_RUN_EXCEPTION (env, run); - return ret; - } - - ret = new_str (env, awk, str, len); - ase_awk_free (awk, str); - - if (ret == ASE_NULL) - { - if (is_debug(awk)) (*env)->ExceptionDescribe (env); - (*env)->ExceptionClear (env); - THROW_NOMEM_EXCEPTION (env); - } - - return ret; -} - -JNIEXPORT jboolean JNICALL Java_ase_awk_Argument_isindexed (JNIEnv* env, jobject obj, jlong runid, jlong valid) -{ - ase_awk_val_t* val = (ase_awk_val_t*)valid; - return (ASE_AWK_VAL_TYPE(val) == ASE_AWK_VAL_MAP)? JNI_TRUE: JNI_FALSE; -} - -JNIEXPORT jobject JNICALL Java_ase_awk_Argument_getindexed (JNIEnv* env, jobject obj, jlong runid, jlong valid, jstring index) -{ - ase_awk_run_t* run = (ase_awk_run_t*)runid; - ase_awk_val_t* val = (ase_awk_val_t*)valid; - ase_awk_t* awk = ase_awk_getrunawk (run); - run_data_t* run_data = (run_data_t*)ase_awk_getruncustomdata (run); - ase_pair_t* pair; - jobject arg; - - const jchar* ptr; - ase_char_t* rptr; - ase_size_t len; - - if (ASE_AWK_VAL_TYPE(val) != ASE_AWK_VAL_MAP) return ASE_NULL; - - len = (*env)->GetStringLength (env, index); - ptr = (*env)->GetStringChars (env, index, JNI_FALSE); - if (ptr == ASE_NULL) goto nomem; - - if (len > 0 && ASE_SIZEOF(jchar) != ASE_SIZEOF(ase_char_t)) - { - ase_size_t x; - rptr = (ase_char_t*) ase_awk_alloc (awk, ASE_SIZEOF(ase_char_t)*len); - if (rptr == ASE_NULL) - { - (*env)->ReleaseStringChars (env, index, ptr); - goto nomem; - } - for (x = 0; x < len; x++) rptr[x] = (ase_char_t)ptr[x]; - } - else rptr = (ase_char_t*)ptr; - - pair = ase_map_search (((ase_awk_val_map_t*)val)->map, rptr, len); - if (ptr != rptr) ase_awk_free (awk, rptr); - (*env)->ReleaseStringChars (env, index, ptr); - - /* the key is not found. it is not an error. val is just nil */ - if (pair == ASE_NULL) return ASE_NULL;; - - arg = (*env)->NewObject (env, - run_data->argument_class, run_data->argument_init, - run_data->context_object, (jlong)run, (jlong)pair->val); - if (arg == ASE_NULL) goto nomem; - - /* the reference is incremented. this incremented reference is - * decremented in Argument.clear called from Context.clear. - * Note that the context object (run_data->context_object) is - * passed to the contrustor of the argument class in the call - * to NewObject above */ - ase_awk_refupval (run, pair->val); - return arg; - -nomem: - if ((*env)->ExceptionCheck(env)) - { - if (is_debug(awk)) (*env)->ExceptionDescribe (env); - (*env)->ExceptionClear (env); - } - - THROW_NOMEM_EXCEPTION (env); - return ASE_NULL; -} - -JNIEXPORT void JNICALL Java_ase_awk_Argument_clearval (JNIEnv* env, jobject obj, jlong runid, jlong valid) -{ - ase_awk_run_t* run = (ase_awk_run_t*)runid; - ase_awk_val_t* val = (ase_awk_val_t*)valid; - run_data_t* run_data; - - run_data = (run_data_t*)ase_awk_getruncustomdata (run); - - if (val != ASE_NULL) ase_awk_refdownval (run, val); - (*env)->SetLongField (env, obj, run_data->argument_valid, (jlong)0); -} - - -JNIEXPORT jboolean JNICALL Java_ase_awk_Return_isindexed (JNIEnv* env, jobject obj, jlong runid, jlong valid) -{ - ase_awk_run_t* run = (ase_awk_run_t*)runid; - ase_awk_val_t* val = (ase_awk_val_t*)valid; - - return (val != ASE_NULL && ASE_AWK_VAL_TYPE(val) == ASE_AWK_VAL_MAP)? JNI_TRUE: JNI_FALSE; -} - -JNIEXPORT void JNICALL Java_ase_awk_Return_setintval (JNIEnv* env, jobject obj, jlong runid, jlong valid, jlong newval) -{ - ase_awk_run_t* run = (ase_awk_run_t*)runid; - ase_awk_val_t* val = (ase_awk_val_t*)valid; - ase_awk_val_t* nv; - run_data_t* run_data; - - run_data = (run_data_t*)ase_awk_getruncustomdata (run); - - nv = ase_awk_makeintval (run, newval); - if (nv == ASE_NULL) - { - THROW_RUN_EXCEPTION (env, run); - return; - } - - if (val != ASE_NULL) ase_awk_refdownval (run, val); - - (*env)->SetLongField (env, obj, run_data->return_valid, (jlong)nv); - ase_awk_refupval (run, nv); -} - -JNIEXPORT void JNICALL Java_ase_awk_Return_setrealval (JNIEnv* env, jobject obj, jlong runid, jlong valid, jdouble newval) -{ - ase_awk_run_t* run = (ase_awk_run_t*)runid; - ase_awk_val_t* val = (ase_awk_val_t*)valid; - ase_awk_val_t* nv; - run_data_t* run_data; - - run_data = (run_data_t*)ase_awk_getruncustomdata (run); - - nv = ase_awk_makerealval (run, newval); - if (nv == ASE_NULL) - { - THROW_RUN_EXCEPTION (env, run); - return; - } - - if (val != ASE_NULL) ase_awk_refdownval (run, val); - - (*env)->SetLongField (env, obj, run_data->return_valid, (jlong)nv); - ase_awk_refupval (run, nv); -} - -JNIEXPORT void JNICALL Java_ase_awk_Return_setstrval (JNIEnv* env, jobject obj, jlong runid, jlong valid, jstring newval) -{ - ase_awk_run_t* run = (ase_awk_run_t*)runid; - ase_awk_val_t* val = (ase_awk_val_t*)valid; - ase_awk_val_t* nv; - ase_awk_t* awk; - run_data_t* run_data; - - const jchar* jptr; - ase_char_t* aptr; - jsize len; - - awk = ase_awk_getrunawk (run); - run_data = (run_data_t*)ase_awk_getruncustomdata (run); - - if (get_str(env,awk,newval,&jptr,&aptr,&len) == -1) - { - THROW_NOMEM_EXCEPTION (env); - return; - } - - nv = (ase_awk_val_t*)ase_awk_makestrval (run, aptr, len); - if (nv == ASE_NULL) - { - free_str (env, awk, newval, jptr, aptr); - THROW_RUN_EXCEPTION (env, run); - return; - } - - free_str (env, awk, newval, jptr, aptr); - if (val != ASE_NULL) ase_awk_refdownval (run, val); - - (*env)->SetLongField (env, obj, run_data->return_valid, (jlong)nv); - ase_awk_refupval (run, nv); -} - -JNIEXPORT void JNICALL Java_ase_awk_Return_setindexedintval (JNIEnv* env, jobject obj, jlong runid, jlong valid, jstring index, jlong newval) -{ - ase_awk_run_t* run = (ase_awk_run_t*)runid; - ase_awk_val_t* val = (ase_awk_val_t*)valid; - ase_awk_t* awk; - run_data_t* run_data; - - int opt; - const jchar* jptr; - ase_char_t* aptr; - jsize len; - - awk = ase_awk_getrunawk (run); - run_data = (run_data_t*)ase_awk_getruncustomdata (run); - - opt = ase_awk_getoption (awk); - if ((opt & ASE_AWK_MAPTOVAR) != ASE_AWK_MAPTOVAR) - { - /* refer to run_return in run.c */ - ase_awk_setrunerrnum (run, ASE_AWK_EMAPNOTALLOWED); - THROW_RUN_EXCEPTION (env, run); - return; - } - - if (val == ASE_NULL || ASE_AWK_VAL_TYPE(val) != ASE_AWK_VAL_MAP) - { - ase_awk_val_t* x; - ase_awk_val_t* x2; - ase_pair_t* pair; - - x = ase_awk_makemapval (run); - if (x == ASE_NULL) - { - THROW_RUN_EXCEPTION (env, run); - return; - } - - ase_awk_refupval (run, x); - - x2 = ase_awk_makeintval (run, newval); - if (x2 == ASE_NULL) - { - ase_awk_refdownval (run, x); - THROW_RUN_EXCEPTION (env, run); - return; - } - - ase_awk_refupval (run, x2); - - if (get_str(env,awk,index,&jptr,&aptr,&len) == -1) - { - ase_awk_refdownval (run, x2); - ase_awk_refdownval (run, x); - THROW_NOMEM_EXCEPTION (env); - return; - } - - pair = ase_map_upsert ( - ((ase_awk_val_map_t*)x)->map, aptr, len, x2); - free_str (env, awk, index, jptr, aptr); - if (pair == ASE_NULL) - { - ase_awk_refdownval (run, x2); - ase_awk_refdownval (run, x); - THROW_RUN_EXCEPTION (env, run); - return; - } - - if (val != ASE_NULL) ase_awk_refdownval (run, val); - (*env)->SetLongField (env, obj, run_data->return_valid, (jlong)x); - } - else - { - ase_awk_val_t* x2; - ase_pair_t* pair; - - x2 = ase_awk_makeintval (run, newval); - if (x2 == ASE_NULL) - { - THROW_RUN_EXCEPTION (env, run); - return; - } - - ase_awk_refupval (run, x2); - - if (get_str(env,awk,index,&jptr,&aptr,&len) == -1) - { - ase_awk_refdownval (run, x2); - THROW_NOMEM_EXCEPTION (env); - return; - } - pair = ase_map_upsert ( - ((ase_awk_val_map_t*)val)->map, aptr, len, x2); - free_str (env, awk, index, jptr, aptr); - if (pair == ASE_NULL) - { - ase_awk_refdownval (run, x2); - THROW_NOMEM_EXCEPTION (env); - return; - } - } -} - -JNIEXPORT void JNICALL Java_ase_awk_Return_setindexedrealval (JNIEnv* env, jobject obj, jlong runid, jlong valid, jstring index, jdouble newval) -{ - ase_awk_run_t* run = (ase_awk_run_t*)runid; - ase_awk_val_t* val = (ase_awk_val_t*)valid; - ase_awk_t* awk; - run_data_t* run_data; - - int opt; - const jchar* jptr; - ase_char_t* aptr; - jsize len; - - awk = ase_awk_getrunawk (run); - run_data = (run_data_t*)ase_awk_getruncustomdata (run); - - opt = ase_awk_getoption (awk); - if ((opt & ASE_AWK_MAPTOVAR) != ASE_AWK_MAPTOVAR) - { - /* refer to run_return in run.c */ - ase_awk_setrunerrnum (run, ASE_AWK_EMAPNOTALLOWED); - THROW_RUN_EXCEPTION (env, run); - return; - } - - if (val == ASE_NULL || ASE_AWK_VAL_TYPE(val) != ASE_AWK_VAL_MAP) - { - ase_awk_val_t* x; - ase_awk_val_t* x2; - ase_pair_t* pair; - - x = ase_awk_makemapval (run); - if (x == ASE_NULL) - { - THROW_RUN_EXCEPTION (env, run); - return; - } - - ase_awk_refupval (run, x); - - x2 = ase_awk_makerealval (run, newval); - if (x2 == ASE_NULL) - { - ase_awk_refdownval (run, x); - THROW_RUN_EXCEPTION (env, run); - return; - } - - ase_awk_refupval (run, x2); - - if (get_str(env,awk,index,&jptr,&aptr,&len) == -1) - { - ase_awk_refdownval (run, x2); - ase_awk_refdownval (run, x); - THROW_NOMEM_EXCEPTION (env); - return; - } - - pair = ase_map_upsert ( - ((ase_awk_val_map_t*)x)->map, aptr, len, x2); - free_str (env, awk, index, jptr, aptr); - if (pair == ASE_NULL) - { - ase_awk_refdownval (run, x2); - ase_awk_refdownval (run, x); - THROW_RUN_EXCEPTION (env, run); - return; - } - - if (val != ASE_NULL) ase_awk_refdownval (run, val); - (*env)->SetLongField (env, obj, run_data->return_valid, (jlong)x); - } - else - { - ase_awk_val_t* x2; - ase_pair_t* pair; - - x2 = ase_awk_makerealval (run, newval); - if (x2 == ASE_NULL) - { - THROW_RUN_EXCEPTION (env, run); - return; - } - - ase_awk_refupval (run, x2); - - if (get_str(env,awk,index,&jptr,&aptr,&len) == -1) - { - ase_awk_refdownval (run, x2); - THROW_NOMEM_EXCEPTION (env); - return; - } - pair = ase_map_upsert ( - ((ase_awk_val_map_t*)val)->map, aptr, len, x2); - free_str (env, awk, index, jptr, aptr); - if (pair == ASE_NULL) - { - ase_awk_refdownval (run, x2); - THROW_NOMEM_EXCEPTION (env); - return; - } - } -} - -JNIEXPORT void JNICALL Java_ase_awk_Return_setindexedstrval (JNIEnv* env, jobject obj, jlong runid, jlong valid, jstring index, jstring newval) -{ - ase_awk_run_t* run = (ase_awk_run_t*)runid; - ase_awk_val_t* val = (ase_awk_val_t*)valid; - ase_awk_t* awk; - run_data_t* run_data; - - int opt; - const jchar* jptr; - ase_char_t* aptr; - jsize len; - - awk = ase_awk_getrunawk (run); - run_data = (run_data_t*)ase_awk_getruncustomdata (run); - - opt = ase_awk_getoption (awk); - if ((opt & ASE_AWK_MAPTOVAR) != ASE_AWK_MAPTOVAR) - { - /* refer to run_return in run.c */ - ase_awk_setrunerrnum (run, ASE_AWK_EMAPNOTALLOWED); - THROW_RUN_EXCEPTION (env, run); - return; - } - - if (val == ASE_NULL || ASE_AWK_VAL_TYPE(val) != ASE_AWK_VAL_MAP) - { - ase_awk_val_t* x; - ase_awk_val_t* x2; - ase_pair_t* pair; - - x = ase_awk_makemapval (run); - if (x == ASE_NULL) - { - THROW_RUN_EXCEPTION (env, run); - return; - } - - ase_awk_refupval (run, x); - - if (get_str(env,awk,newval,&jptr,&aptr,&len) == -1) - { - ase_awk_refdownval (run, x); - THROW_NOMEM_EXCEPTION (env); - return; - } - x2 = ase_awk_makestrval (run, aptr, len); - free_str (env, awk, index, jptr, aptr); - if (x2 == ASE_NULL) - { - ase_awk_refdownval (run, x); - THROW_RUN_EXCEPTION (env, run); - return; - } - - ase_awk_refupval (run, x2); - - if (get_str(env,awk,index,&jptr,&aptr,&len) == -1) - { - ase_awk_refdownval (run, x2); - ase_awk_refdownval (run, x); - THROW_NOMEM_EXCEPTION (env); - return; - } - pair = ase_map_upsert ( - ((ase_awk_val_map_t*)x)->map, aptr, len, x2); - free_str (env, awk, index, jptr, aptr); - if (pair == ASE_NULL) - { - ase_awk_refdownval (run, x2); - ase_awk_refdownval (run, x); - THROW_RUN_EXCEPTION (env, run); - return; - } - - if (val != ASE_NULL) ase_awk_refdownval (run, val); - (*env)->SetLongField (env, obj, run_data->return_valid, (jlong)x); - } - else - { - ase_awk_val_t* x2; - ase_pair_t* pair; - - if (get_str(env,awk,newval,&jptr,&aptr,&len) == -1) - { - THROW_NOMEM_EXCEPTION (env); - return; - } - x2 = ase_awk_makestrval (run, aptr, len); - free_str (env, awk, index, jptr, aptr); - if (x2 == ASE_NULL) - { - THROW_RUN_EXCEPTION (env, run); - return; - } - - ase_awk_refupval (run, x2); - - if (get_str(env,awk,index,&jptr,&aptr,&len) == -1) - { - ase_awk_refdownval (run, x2); - THROW_NOMEM_EXCEPTION (env); - return; - } - pair = ase_map_upsert ( - ((ase_awk_val_map_t*)val)->map, aptr, len, x2); - free_str (env, awk, index, jptr, aptr); - if (pair == ASE_NULL) - { - ase_awk_refdownval (run, x2); - THROW_NOMEM_EXCEPTION (env); - return; - } - } -} - -JNIEXPORT void JNICALL Java_ase_awk_Return_clearval (JNIEnv* env, jobject obj, jlong runid, jlong valid) -{ - ase_awk_run_t* run = (ase_awk_run_t*)runid; - ase_awk_val_t* val = (ase_awk_val_t*)valid; - run_data_t* run_data; - - run_data = (run_data_t*)ase_awk_getruncustomdata (run); - - if (val != ASE_NULL) ase_awk_refdownval (run, val); - (*env)->SetLongField (env, obj, run_data->return_valid, (jlong)0); -} - -static ase_char_t* dup_str (ase_awk_t* awk, const jchar* str, ase_size_t len) -{ - if (len > 0 && ASE_SIZEOF(jchar) != ASE_SIZEOF(ase_char_t)) - { - ase_char_t* tmp; - ase_size_t i; - - tmp = (ase_char_t*) ase_awk_alloc (awk, (len+1) * ASE_SIZEOF(ase_char_t)); - if (tmp == ASE_NULL) return ASE_NULL; - - for (i = 0; i < (ase_size_t)len; i++) tmp[i] = (ase_char_t)str[i]; - tmp[i] = ASE_T('\0'); - - return tmp; - } - else - { - ase_char_t* tmp; - - tmp = (ase_char_t*) ase_awk_alloc (awk, (len+1) * ASE_SIZEOF(ase_char_t)); - if (tmp == ASE_NULL) return ASE_NULL; - - ase_strncpy (tmp, (ase_char_t*)str, len); - return tmp; - } -} - -static int get_str ( - JNIEnv* env, ase_awk_t* awk, jstring str, - const jchar** jptr, ase_char_t** aptr, jsize* outlen) -{ - jsize len; - const jchar* ptr; - - len = (*env)->GetStringLength (env, str); - ptr = (*env)->GetStringChars (env, str, JNI_FALSE); - if (ptr == ASE_NULL) - { - (*env)->ExceptionClear (env); - return -1; - } - - if (len > 0 && ASE_SIZEOF(jchar) != ASE_SIZEOF(ase_char_t)) - { - jsize x; - - ase_char_t* tmp = (ase_char_t*) - ase_awk_alloc (awk, ASE_SIZEOF(ase_char_t)*len); - if (tmp == ASE_NULL) - { - (*env)->ReleaseStringChars (env, str, ptr); - return -1; - } - - for (x = 0; x < len; x++) tmp[x] = (ase_char_t)ptr[x]; - - *outlen = len; - *jptr = ptr; - *aptr = tmp; - } - else - { - *outlen = len; - *jptr = ptr; - *aptr = (ase_char_t*)ptr; - } - - return 0; -} - -static void free_str ( - JNIEnv* env, ase_awk_t* awk, jstring str, - const jchar* jptr, ase_char_t* aptr) -{ - if (jptr != aptr) ase_awk_free (awk, aptr); - (*env)->ReleaseStringChars (env, str, jptr); -} - - -static jstring new_str ( - JNIEnv* env, ase_awk_t* awk, const ase_char_t* ptr, ase_size_t len) -{ - jstring ret; - jsize i, chunk; - - chunk = (len > ASE_TYPE_MAX(jsize))? ASE_TYPE_MAX(jsize): (jsize)len; - if (chunk > 0 && ASE_SIZEOF(jchar) != ASE_SIZEOF(ase_char_t)) - { - jchar* tmp = (jchar*) ase_awk_alloc (awk, ASE_SIZEOF(jchar)*chunk); - if (tmp == ASE_NULL) return ASE_NULL; - - for (i = 0; i < chunk; i++) tmp[i] = (jchar)ptr[i]; - ret = (*env)->NewString (env, tmp, chunk); - ase_awk_free (awk, tmp); - } - else - { - - ret = (*env)->NewString (env, (jchar*)ptr, chunk); - } - - if (ret == ASE_NULL) - { - if (is_debug(awk)) (*env)->ExceptionDescribe (env); - (*env)->ExceptionClear (env); - return ASE_NULL; - } - - return ret; -} diff --git a/qse/lib/awk/jni.def b/qse/lib/awk/jni.def deleted file mode 100644 index 170fd9a7..00000000 --- a/qse/lib/awk/jni.def +++ /dev/null @@ -1,40 +0,0 @@ -LIBRARY "aseawk_jni.dll" - -EXPORTS - Java_ase_awk_Awk_open - Java_ase_awk_Awk_close - Java_ase_awk_Awk_parse - Java_ase_awk_Awk_run - Java_ase_awk_Awk_stop - Java_ase_awk_Awk_getmaxdepth - Java_ase_awk_Awk_setmaxdepth - Java_ase_awk_Awk_getoption - Java_ase_awk_Awk_setoption - Java_ase_awk_Awk_getdebug - Java_ase_awk_Awk_setdebug - Java_ase_awk_Awk_getword - Java_ase_awk_Awk_setword - Java_ase_awk_Awk_addfunc - Java_ase_awk_Awk_delfunc - Java_ase_awk_Awk_setfilename - Java_ase_awk_Awk_setofilename - Java_ase_awk_Awk_strftime - Java_ase_awk_Awk_strfgmtime - Java_ase_awk_Awk_system - Java_ase_awk_Context_stop - Java_ase_awk_Context_getglobal - Java_ase_awk_Context_setglobal - Java_ase_awk_Argument_getintval - Java_ase_awk_Argument_getrealval - Java_ase_awk_Argument_getstrval - Java_ase_awk_Argument_isindexed - Java_ase_awk_Argument_getindexed - Java_ase_awk_Argument_clearval - Java_ase_awk_Return_isindexed - Java_ase_awk_Return_setintval - Java_ase_awk_Return_setrealval - Java_ase_awk_Return_setstrval - Java_ase_awk_Return_setindexedintval - Java_ase_awk_Return_setindexedrealval - Java_ase_awk_Return_setindexedstrval - Java_ase_awk_Return_clearval diff --git a/qse/lib/awk/jni.h b/qse/lib/awk/jni.h deleted file mode 100644 index 7066a452..00000000 --- a/qse/lib/awk/jni.h +++ /dev/null @@ -1,88 +0,0 @@ -/* - * $Id: jni.h 363 2008-09-04 10:58:08Z baconevi $ - * - * {License} - */ - -#ifndef _ASE_LIB_AWK_JNI_H_ -#define _ASE_LIB_AWK_JNI_H_ - -#if defined(__APPLE__) && defined(__MACH__) -#include -#else -#include -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -JNIEXPORT void JNICALL Java_ase_awk_Awk_open (JNIEnv* env, jobject obj); -JNIEXPORT void JNICALL Java_ase_awk_Awk_close (JNIEnv* env, jobject obj, jlong awkid); -JNIEXPORT void JNICALL Java_ase_awk_Awk_parse (JNIEnv* env, jobject obj, jlong awkid); -JNIEXPORT void JNICALL Java_ase_awk_Awk_run ( - JNIEnv* env, jobject obj, jlong awkid, jstring mfn, jobjectArray args); -JNIEXPORT void JNICALL Java_ase_awk_Awk_stop (JNIEnv* env, jobject obj, jlong awkid); - -JNIEXPORT void JNICALL Java_ase_awk_Awk_addfunc ( - JNIEnv* env, jobject obj, jstring name, jint min_args, jint max_args); -JNIEXPORT void JNICALL Java_ase_awk_Awk_delfunc ( - JNIEnv* env, jobject obj, jstring name); - -JNIEXPORT jint JNICALL Java_ase_awk_Awk_getmaxdepth ( - JNIEnv* env, jobject obj, jlong awkid, jint id); -JNIEXPORT void JNICALL Java_ase_awk_Awk_setmaxdepth ( - JNIEnv* env, jobject obj, jlong awkid, jint ids, jint depth); - -JNIEXPORT jint JNICALL Java_ase_awk_Awk_getoption ( - JNIEnv* env, jobject obj, jlong awkid); -JNIEXPORT void JNICALL Java_ase_awk_Awk_setoption ( - JNIEnv* env, jobject obj, jlong awkid, jint options); - -JNIEXPORT jboolean JNICALL Java_ase_awk_Awk_getdebug ( - JNIEnv* env, jobject obj, jlong awkid); -JNIEXPORT void JNICALL Java_ase_awk_Awk_setdebug ( - JNIEnv* env, jobject obj, jlong awkid, jboolean debug); - -JNIEXPORT jstring JNICALL Java_ase_awk_Awk_getword ( - JNIEnv* env, jobject obj, jlong awkid, jstring ow); -JNIEXPORT void JNICALL Java_ase_awk_Awk_setword ( - JNIEnv* env, jobject obj, jlong awkid, jstring ow, jstring nw); - -JNIEXPORT void JNICALL Java_ase_awk_Awk_setfilename ( - JNIEnv* env, jobject obj, jlong runid, jstring name); -JNIEXPORT void JNICALL Java_ase_awk_Awk_setofilename ( - JNIEnv* env, jobject obj, jlong runid, jstring name); - -JNIEXPORT jstring JNICALL Java_ase_awk_Awk_strftime ( - JNIEnv* env, jobject obj, jstring fmt, jlong sec); -JNIEXPORT jstring JNICALL Java_ase_awk_Awk_strfgmtime ( - JNIEnv* env, jobject obj, jstring fmt, jlong sec); -JNIEXPORT jint JNICALL Java_ase_awk_Awk_system ( - JNIEnv* env, jobject obj, jstring cmd); - -JNIEXPORT void JNICALL Java_ase_awk_Context_stop (JNIEnv* env, jobject obj, jlong runid); -JNIEXPORT jobject JNICALL Java_ase_awk_Context_getglobal (JNIEnv* env, jobject obj, jlong runid, jint id); -JNIEXPORT void JNICALL Java_ase_awk_Context_setglobal (JNIEnv* env, jobject obj, jlong runid, jint id, jobject ret); - -JNIEXPORT jlong JNICALL Java_ase_awk_Argument_getintval (JNIEnv* env, jobject obj, jlong runid, jlong valid); -JNIEXPORT jdouble JNICALL Java_ase_awk_Argument_getrealval (JNIEnv* env, jobject obj, jlong runid, jlong valid); -JNIEXPORT jstring JNICALL Java_ase_awk_Argument_getstrval (JNIEnv* env, jobject obj, jlong runid, jlong valid); -JNIEXPORT jboolean JNICALL Java_ase_awk_Argument_isindexed (JNIEnv* env, jobject obj, jlong runid, jlong valid); -JNIEXPORT jobject JNICALL Java_ase_awk_Argument_getindexed (JNIEnv* env, jobject obj, jlong runid, jlong valid, jstring index); -JNIEXPORT void JNICALL Java_ase_awk_Argument_clearval (JNIEnv* env, jobject obj, jlong runid, jlong valid); - -JNIEXPORT jboolean JNICALL Java_ase_awk_Return_isindexed (JNIEnv* env, jobject obj, jlong runid, jlong valid); -JNIEXPORT void JNICALL Java_ase_awk_Return_setintval (JNIEnv* env, jobject obj, jlong runid, jlong valid, jlong newval); -JNIEXPORT void JNICALL Java_ase_awk_Return_setrealval (JNIEnv* env, jobject obj, jlong runid, jlong valid, jdouble newval); -JNIEXPORT void JNICALL Java_ase_awk_Return_setstrval (JNIEnv* env, jobject obj, jlong runid, jlong valid, jstring newval); -JNIEXPORT void JNICALL Java_ase_awk_Return_setindexedintval (JNIEnv* env, jobject obj, jlong runid, jlong valid, jstring index, jlong newval); -JNIEXPORT void JNICALL Java_ase_awk_Return_setindexedrealval (JNIEnv* env, jobject obj, jlong runid, jlong valid, jstring index, jdouble newval); -JNIEXPORT void JNICALL Java_ase_awk_Return_setindexedstrval (JNIEnv* env, jobject obj, jlong runid, jlong valid, jstring index, jstring newval); -JNIEXPORT void JNICALL Java_ase_awk_Return_clearval (JNIEnv* env, jobject obj, jlong runid, jlong valid); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/qse/lib/awk/makefile.in b/qse/lib/awk/makefile.in index 05336543..3bf59832 100644 --- a/qse/lib/awk/makefile.in +++ b/qse/lib/awk/makefile.in @@ -40,7 +40,7 @@ am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/include/ase/config.h +CONFIG_HEADER = $(top_builddir)/include/qse/config.h CONFIG_CLEAN_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ diff --git a/qse/lib/awk/misc.c b/qse/lib/awk/misc.c index e97b0872..c7846e96 100644 --- a/qse/lib/awk/misc.c +++ b/qse/lib/awk/misc.c @@ -6,54 +6,54 @@ #include "awk.h" -void* ase_awk_alloc (ase_awk_t* awk, ase_size_t size) +void* qse_awk_alloc (qse_awk_t* awk, qse_size_t size) { - return ASE_AWK_ALLOC (awk, size); + return QSE_AWK_ALLOC (awk, size); } -void ase_awk_free (ase_awk_t* awk, void* ptr) +void qse_awk_free (qse_awk_t* awk, void* ptr) { - ASE_AWK_FREE (awk, ptr); + QSE_AWK_FREE (awk, ptr); } -ase_char_t* ase_awk_strdup (ase_awk_t* awk, const ase_char_t* s) +qse_char_t* qse_awk_strdup (qse_awk_t* awk, const qse_char_t* s) { - return ASE_AWK_STRDUP (awk, s); + return QSE_AWK_STRDUP (awk, s); } -ase_char_t* ase_awk_strxdup (ase_awk_t* awk, const ase_char_t* s, ase_size_t l) +qse_char_t* qse_awk_strxdup (qse_awk_t* awk, const qse_char_t* s, qse_size_t l) { - return ASE_AWK_STRXDUP (awk, s, l); + return QSE_AWK_STRXDUP (awk, s, l); } -ase_long_t ase_awk_strxtolong ( - ase_awk_t* awk, const ase_char_t* str, ase_size_t len, - int base, const ase_char_t** endptr) +qse_long_t qse_awk_strxtolong ( + qse_awk_t* awk, const qse_char_t* str, qse_size_t len, + int base, const qse_char_t** endptr) { - ase_long_t n = 0; - const ase_char_t* p; - const ase_char_t* end; - ase_size_t rem; + qse_long_t n = 0; + const qse_char_t* p; + const qse_char_t* end; + qse_size_t rem; int digit, negative = 0; - ASE_ASSERT (base < 37); + QSE_ASSERT (base < 37); p = str; end = str + len; /* strip off leading spaces */ - /*while (ASE_AWK_ISSPACE(awk,*p)) p++;*/ + /*while (QSE_AWK_ISSPACE(awk,*p)) p++;*/ /* check for a sign */ - /*while (*p != ASE_T('\0')) */ + /*while (*p != QSE_T('\0')) */ while (p < end) { - if (*p == ASE_T('-')) + if (*p == QSE_T('-')) { negative = ~negative; p++; } - else if (*p == ASE_T('+')) p++; + else if (*p == QSE_T('+')) p++; else break; } @@ -61,16 +61,16 @@ ase_long_t ase_awk_strxtolong ( rem = end - p; if (base == 0) { - if (rem >= 1 && *p == ASE_T('0')) + if (rem >= 1 && *p == QSE_T('0')) { p++; if (rem == 1) base = 8; - else if (*p == ASE_T('x') || *p == ASE_T('X')) + else if (*p == QSE_T('x') || *p == QSE_T('X')) { p++; base = 16; } - else if (*p == ASE_T('b') || *p == ASE_T('B')) + else if (*p == QSE_T('b') || *p == QSE_T('B')) { p++; base = 2; } @@ -80,25 +80,25 @@ ase_long_t ase_awk_strxtolong ( } else if (rem >= 2 && base == 16) { - if (*p == ASE_T('0') && - (*(p+1) == ASE_T('x') || *(p+1) == ASE_T('X'))) p += 2; + if (*p == QSE_T('0') && + (*(p+1) == QSE_T('x') || *(p+1) == QSE_T('X'))) p += 2; } else if (rem >= 2 && base == 2) { - if (*p == ASE_T('0') && - (*(p+1) == ASE_T('b') || *(p+1) == ASE_T('B'))) p += 2; + if (*p == QSE_T('0') && + (*(p+1) == QSE_T('b') || *(p+1) == QSE_T('B'))) p += 2; } /* process the digits */ - /*while (*p != ASE_T('\0'))*/ + /*while (*p != QSE_T('\0'))*/ while (p < end) { - if (*p >= ASE_T('0') && *p <= ASE_T('9')) - digit = *p - ASE_T('0'); - else if (*p >= ASE_T('A') && *p <= ASE_T('Z')) - digit = *p - ASE_T('A') + 10; - else if (*p >= ASE_T('a') && *p <= ASE_T('z')) - digit = *p - ASE_T('a') + 10; + if (*p >= QSE_T('0') && *p <= QSE_T('9')) + digit = *p - QSE_T('0'); + else if (*p >= QSE_T('A') && *p <= QSE_T('Z')) + digit = *p - QSE_T('A') + 10; + else if (*p >= QSE_T('a') && *p <= QSE_T('z')) + digit = *p - QSE_T('a') + 10; else break; if (digit >= base) break; @@ -107,13 +107,13 @@ ase_long_t ase_awk_strxtolong ( p++; } - if (endptr != ASE_NULL) *endptr = p; + if (endptr != QSE_NULL) *endptr = p; return (negative)? -n: n; } /* - * ase_awk_strtoreal is almost a replica of strtod. + * qse_awk_strtoreal is almost a replica of strtod. * * strtod.c -- * @@ -133,21 +133,21 @@ ase_long_t ase_awk_strxtolong ( #define MAX_EXPONENT 511 -ase_real_t ase_awk_strtoreal (ase_awk_t* awk, const ase_char_t* str) +qse_real_t qse_awk_strtoreal (qse_awk_t* awk, const qse_char_t* str) { /* * Table giving binary powers of 10. Entry is 10^2^i. * Used to convert decimal exponents into floating-point numbers. */ - static ase_real_t powers_of_10[] = + static qse_real_t powers_of_10[] = { 10., 100., 1.0e4, 1.0e8, 1.0e16, 1.0e32, 1.0e64, 1.0e128, 1.0e256 }; - ase_real_t fraction, dbl_exp, * d; - const ase_char_t* p; - ase_cint_t c; + qse_real_t fraction, dbl_exp, * d; + const qse_char_t* p; + qse_cint_t c; int exp = 0; /* Esseonent read from "EX" field */ /* @@ -162,23 +162,23 @@ ase_real_t ase_awk_strtoreal (ase_awk_t* awk, const ase_char_t* str) int frac_exp; int mant_size; /* Number of digits in mantissa. */ int dec_pt; /* Number of mantissa digits BEFORE decimal point */ - const ase_char_t *pexp; /* Temporarily holds location of exponent in string */ + const qse_char_t *pexp; /* Temporarily holds location of exponent in string */ int negative = 0, exp_negative = 0; p = str; /* strip off leading blanks */ - /*while (ASE_AWK_ISSPACE(awk,*p)) p++;*/ + /*while (QSE_AWK_ISSPACE(awk,*p)) p++;*/ /* check for a sign */ - while (*p != ASE_T('\0')) + while (*p != QSE_T('\0')) { - if (*p == ASE_T('-')) + if (*p == QSE_T('-')) { negative = ~negative; p++; } - else if (*p == ASE_T('+')) p++; + else if (*p == QSE_T('+')) p++; else break; } @@ -188,9 +188,9 @@ ase_real_t ase_awk_strtoreal (ase_awk_t* awk, const ase_char_t* str) for (mant_size = 0; ; mant_size++) { c = *p; - if (!ASE_AWK_ISDIGIT (awk, c)) + if (!QSE_AWK_ISDIGIT (awk, c)) { - if ((c != ASE_T('.')) || (dec_pt >= 0)) break; + if ((c != QSE_T('.')) || (dec_pt >= 0)) break; dec_pt = mant_size; } p++; @@ -238,51 +238,51 @@ ase_real_t ase_awk_strtoreal (ase_awk_t* awk, const ase_char_t* str) { c = *p; p++; - if (c == ASE_T('.')) + if (c == QSE_T('.')) { c = *p; p++; } - frac1 = 10 * frac1 + (c - ASE_T('0')); + frac1 = 10 * frac1 + (c - QSE_T('0')); } frac2 = 0; for (; mant_size > 0; mant_size--) { c = *p; p++; - if (c == ASE_T('.')) + if (c == QSE_T('.')) { c = *p; p++; } - frac2 = 10*frac2 + (c - ASE_T('0')); + frac2 = 10*frac2 + (c - QSE_T('0')); } fraction = (1.0e9 * frac1) + frac2; } /* Skim off the exponent */ p = pexp; - if ((*p == ASE_T('E')) || (*p == ASE_T('e'))) + if ((*p == QSE_T('E')) || (*p == QSE_T('e'))) { p++; - if (*p == ASE_T('-')) + if (*p == QSE_T('-')) { exp_negative = 1; p++; } else { - if (*p == ASE_T('+')) p++; + if (*p == QSE_T('+')) p++; exp_negative = 0; } - if (!ASE_AWK_ISDIGIT (awk, *p)) + if (!QSE_AWK_ISDIGIT (awk, *p)) { /* p = pexp; */ /* goto done; */ goto no_exp; } - while (ASE_AWK_ISDIGIT (awk, *p)) + while (QSE_AWK_ISDIGIT (awk, *p)) { - exp = exp * 10 + (*p - ASE_T('0')); + exp = exp * 10 + (*p - QSE_T('0')); p++; } } @@ -320,23 +320,23 @@ done: return (negative)? -fraction: fraction; } -ase_real_t ase_awk_strxtoreal ( - ase_awk_t* awk, const ase_char_t* str, ase_size_t len, - const ase_char_t** endptr) +qse_real_t qse_awk_strxtoreal ( + qse_awk_t* awk, const qse_char_t* str, qse_size_t len, + const qse_char_t** endptr) { /* * Table giving binary powers of 10. Entry is 10^2^i. * Used to convert decimal exponents into floating-point numbers. */ - static ase_real_t powers_of_10[] = + static qse_real_t powers_of_10[] = { 10., 100., 1.0e4, 1.0e8, 1.0e16, 1.0e32, 1.0e64, 1.0e128, 1.0e256 }; - ase_real_t fraction, dbl_exp, * d; - const ase_char_t* p, * end; - ase_cint_t c; + qse_real_t fraction, dbl_exp, * d; + const qse_char_t* p, * end; + qse_cint_t c; int exp = 0; /* Esseonent read from "EX" field */ /* @@ -351,24 +351,24 @@ ase_real_t ase_awk_strxtoreal ( int frac_exp; int mant_size; /* Number of digits in mantissa. */ int dec_pt; /* Number of mantissa digits BEFORE decimal point */ - const ase_char_t *pexp; /* Temporarily holds location of exponent in string */ + const qse_char_t *pexp; /* Temporarily holds location of exponent in string */ int negative = 0, exp_negative = 0; p = str; end = str + len; /* Strip off leading blanks and check for a sign */ - /*while (ASE_AWK_ISSPACE(awk,*p)) p++;*/ + /*while (QSE_AWK_ISSPACE(awk,*p)) p++;*/ - /*while (*p != ASE_T('\0')) */ + /*while (*p != QSE_T('\0')) */ while (p < end) { - if (*p == ASE_T('-')) + if (*p == QSE_T('-')) { negative = ~negative; p++; } - else if (*p == ASE_T('+')) p++; + else if (*p == QSE_T('+')) p++; else break; } @@ -379,9 +379,9 @@ ase_real_t ase_awk_strxtoreal ( for (mant_size = 0; p < end; mant_size++) { c = *p; - if (!ASE_AWK_ISDIGIT (awk, c)) + if (!QSE_AWK_ISDIGIT (awk, c)) { - if (c != ASE_T('.') || dec_pt >= 0) break; + if (c != QSE_T('.') || dec_pt >= 0) break; dec_pt = mant_size; } p++; @@ -404,7 +404,7 @@ ase_real_t ase_awk_strxtoreal ( mant_size--; /* One of the digits was the point */ } - if (mant_size > 18) /* TODO: is 18 correct for ase_real_t??? */ + if (mant_size > 18) /* TODO: is 18 correct for qse_real_t??? */ { frac_exp = dec_pt - 18; mant_size = 18; @@ -430,58 +430,58 @@ ase_real_t ase_awk_strxtoreal ( { c = *p; p++; - if (c == ASE_T('.')) + if (c == QSE_T('.')) { c = *p; p++; } - frac1 = 10 * frac1 + (c - ASE_T('0')); + frac1 = 10 * frac1 + (c - QSE_T('0')); } frac2 = 0; for (; mant_size > 0; mant_size--) { c = *p++; - if (c == ASE_T('.')) + if (c == QSE_T('.')) { c = *p; p++; } - frac2 = 10 * frac2 + (c - ASE_T('0')); + frac2 = 10 * frac2 + (c - QSE_T('0')); } fraction = (1.0e9 * frac1) + frac2; } /* Skim off the exponent */ p = pexp; - if (p < end && (*p == ASE_T('E') || *p == ASE_T('e'))) + if (p < end && (*p == QSE_T('E') || *p == QSE_T('e'))) { p++; if (p < end) { - if (*p == ASE_T('-')) + if (*p == QSE_T('-')) { exp_negative = 1; p++; } else { - if (*p == ASE_T('+')) p++; + if (*p == QSE_T('+')) p++; exp_negative = 0; } } else exp_negative = 0; - if (!(p < end && ASE_AWK_ISDIGIT (awk, *p))) + if (!(p < end && QSE_AWK_ISDIGIT (awk, *p))) { /*p = pexp;*/ /*goto done;*/ goto no_exp; } - while (p < end && ASE_AWK_ISDIGIT (awk, *p)) + while (p < end && QSE_AWK_ISDIGIT (awk, *p)) { - exp = exp * 10 + (*p - ASE_T('0')); + exp = exp * 10 + (*p - QSE_T('0')); p++; } } @@ -516,25 +516,25 @@ no_exp: else fraction *= dbl_exp; done: - if (endptr != ASE_NULL) *endptr = p; + if (endptr != QSE_NULL) *endptr = p; return (negative)? -fraction: fraction; } -ase_size_t ase_awk_longtostr ( - ase_long_t value, int radix, const ase_char_t* prefix, - ase_char_t* buf, ase_size_t size) +qse_size_t qse_awk_longtostr ( + qse_long_t value, int radix, const qse_char_t* prefix, + qse_char_t* buf, qse_size_t size) { - ase_long_t t, rem; - ase_size_t len, ret, i; - ase_size_t prefix_len; + qse_long_t t, rem; + qse_size_t len, ret, i; + qse_size_t prefix_len; - prefix_len = (prefix != ASE_NULL)? ase_strlen(prefix): 0; + prefix_len = (prefix != QSE_NULL)? qse_strlen(prefix): 0; t = value; if (t == 0) { /* zero */ - if (buf == ASE_NULL) + if (buf == QSE_NULL) { /* if buf is not given, * return the number of bytes required */ @@ -544,12 +544,12 @@ ase_size_t ase_awk_longtostr ( if (size < prefix_len+1) { /* buffer too small */ - return (ase_size_t)-1; + return (qse_size_t)-1; } for (i = 0; i < prefix_len; i++) buf[i] = prefix[i]; - buf[prefix_len] = ASE_T('0'); - if (size > prefix_len+1) buf[prefix_len+1] = ASE_T('\0'); + buf[prefix_len] = QSE_T('0'); + if (size > prefix_len+1) buf[prefix_len+1] = QSE_T('\0'); return prefix_len+1; } @@ -558,14 +558,14 @@ ase_size_t ase_awk_longtostr ( if (t < 0) { t = -t; len++; } while (t > 0) { len++; t /= radix; } - if (buf == ASE_NULL) + if (buf == QSE_NULL) { /* if buf is not given, return the number of bytes required */ return len; } - if (size < len) return (ase_size_t)-1; /* buffer too small */ - if (size > len) buf[len] = ASE_T('\0'); + if (size < len) return (qse_size_t)-1; /* buffer too small */ + if (size > len) buf[len] = QSE_T('\0'); ret = len; t = value; @@ -575,9 +575,9 @@ ase_size_t ase_awk_longtostr ( { rem = t % radix; if (rem >= 10) - buf[--len] = (ase_char_t)rem + ASE_T('a') - 10; + buf[--len] = (qse_char_t)rem + QSE_T('a') - 10; else - buf[--len] = (ase_char_t)rem + ASE_T('0'); + buf[--len] = (qse_char_t)rem + QSE_T('0'); t /= radix; } @@ -588,7 +588,7 @@ ase_size_t ase_awk_longtostr ( buf[i] = prefix[i-1]; len--; } - buf[--len] = ASE_T('-'); + buf[--len] = QSE_T('-'); } else { @@ -598,44 +598,44 @@ ase_size_t ase_awk_longtostr ( return ret; } -ase_char_t* ase_awk_strtok ( - ase_awk_run_t* run, const ase_char_t* s, - const ase_char_t* delim, ase_char_t** tok, ase_size_t* tok_len) +qse_char_t* qse_awk_strtok ( + qse_awk_run_t* run, const qse_char_t* s, + const qse_char_t* delim, qse_char_t** tok, qse_size_t* tok_len) { - return ase_awk_strxntok ( - run, s, ase_strlen(s), - delim, ase_strlen(delim), tok, tok_len); + return qse_awk_strxntok ( + run, s, qse_strlen(s), + delim, qse_strlen(delim), tok, tok_len); } -ase_char_t* ase_awk_strxtok ( - ase_awk_run_t* run, const ase_char_t* s, ase_size_t len, - const ase_char_t* delim, ase_char_t** tok, ase_size_t* tok_len) +qse_char_t* qse_awk_strxtok ( + qse_awk_run_t* run, const qse_char_t* s, qse_size_t len, + const qse_char_t* delim, qse_char_t** tok, qse_size_t* tok_len) { - return ase_awk_strxntok ( + return qse_awk_strxntok ( run, s, len, - delim, ase_strlen(delim), tok, tok_len); + delim, qse_strlen(delim), tok, tok_len); } -ase_char_t* ase_awk_strntok ( - ase_awk_run_t* run, const ase_char_t* s, - const ase_char_t* delim, ase_size_t delim_len, - ase_char_t** tok, ase_size_t* tok_len) +qse_char_t* qse_awk_strntok ( + qse_awk_run_t* run, const qse_char_t* s, + const qse_char_t* delim, qse_size_t delim_len, + qse_char_t** tok, qse_size_t* tok_len) { - return ase_awk_strxntok ( - run, s, ase_strlen(s), + return qse_awk_strxntok ( + run, s, qse_strlen(s), delim, delim_len, tok, tok_len); } -ase_char_t* ase_awk_strxntok ( - ase_awk_run_t* run, const ase_char_t* s, ase_size_t len, - const ase_char_t* delim, ase_size_t delim_len, - ase_char_t** tok, ase_size_t* tok_len) +qse_char_t* qse_awk_strxntok ( + qse_awk_run_t* run, const qse_char_t* s, qse_size_t len, + const qse_char_t* delim, qse_size_t delim_len, + qse_char_t** tok, qse_size_t* tok_len) { - const ase_char_t* p = s, *d; - const ase_char_t* end = s + len; - const ase_char_t* sp = ASE_NULL, * ep = ASE_NULL; - const ase_char_t* delim_end = delim + delim_len; - ase_char_t c; + const qse_char_t* p = s, *d; + const qse_char_t* end = s + len; + const qse_char_t* sp = QSE_NULL, * ep = QSE_NULL; + const qse_char_t* delim_end = delim + delim_len; + qse_char_t c; int delim_mode; #define __DELIM_NULL 0 @@ -643,14 +643,14 @@ ase_char_t* ase_awk_strxntok ( #define __DELIM_SPACES 2 #define __DELIM_NOSPACES 3 #define __DELIM_COMPOSITE 4 - if (delim == ASE_NULL) delim_mode = __DELIM_NULL; + if (delim == QSE_NULL) delim_mode = __DELIM_NULL; else { delim_mode = __DELIM_EMPTY; for (d = delim; d < delim_end; d++) { - if (ASE_AWK_ISSPACE(run->awk,*d)) + if (QSE_AWK_ISSPACE(run->awk,*d)) { if (delim_mode == __DELIM_EMPTY) delim_mode = __DELIM_SPACES; @@ -675,23 +675,23 @@ ase_char_t* ase_awk_strxntok ( /* TODO: verify the following statement... */ if (delim_mode == __DELIM_SPACES && delim_len == 1 && - delim[0] != ASE_T(' ')) delim_mode = __DELIM_NOSPACES; + delim[0] != QSE_T(' ')) delim_mode = __DELIM_NOSPACES; } if (delim_mode == __DELIM_NULL) { - /* when ASE_NULL is given as "delim", it trims off the + /* when QSE_NULL is given as "delim", it trims off the * leading and trailing spaces characters off the source * string "s" eventually. */ - while (p < end && ASE_AWK_ISSPACE(run->awk,*p)) p++; + while (p < end && QSE_AWK_ISSPACE(run->awk,*p)) p++; while (p < end) { c = *p; - if (!ASE_AWK_ISSPACE(run->awk,c)) + if (!QSE_AWK_ISSPACE(run->awk,c)) { - if (sp == ASE_NULL) sp = p; + if (sp == QSE_NULL) sp = p; ep = p; } p++; @@ -712,15 +712,15 @@ ase_char_t* ase_awk_strxntok ( /* each token is delimited by space characters. all leading * and trailing spaces are removed. */ - while (p < end && ASE_AWK_ISSPACE(run->awk,*p)) p++; + while (p < end && QSE_AWK_ISSPACE(run->awk,*p)) p++; while (p < end) { c = *p; - if (ASE_AWK_ISSPACE(run->awk,c)) break; - if (sp == ASE_NULL) sp = p; + if (QSE_AWK_ISSPACE(run->awk,c)) break; + if (sp == QSE_NULL) sp = p; ep = p++; } - while (p < end && ASE_AWK_ISSPACE(run->awk,*p)) p++; + while (p < end && QSE_AWK_ISSPACE(run->awk,*p)) p++; } else if (delim_mode == __DELIM_NOSPACES) { @@ -730,13 +730,13 @@ ase_char_t* ase_awk_strxntok ( { while (p < end) { - c = ASE_AWK_TOUPPER(run->awk, *p); + c = QSE_AWK_TOUPPER(run->awk, *p); for (d = delim; d < delim_end; d++) { - if (c == ASE_AWK_TOUPPER(run->awk,*d)) goto exit_loop; + if (c == QSE_AWK_TOUPPER(run->awk,*d)) goto exit_loop; } - if (sp == ASE_NULL) sp = p; + if (sp == QSE_NULL) sp = p; ep = p++; } } @@ -750,7 +750,7 @@ ase_char_t* ase_awk_strxntok ( if (c == *d) goto exit_loop; } - if (sp == ASE_NULL) sp = p; + if (sp == QSE_NULL) sp = p; ep = p++; } } @@ -760,22 +760,22 @@ ase_char_t* ase_awk_strxntok ( /* each token is delimited by one of non-space charaters * in the delimeter set "delim". however, all space characters * surrounding the token are removed */ - while (p < end && ASE_AWK_ISSPACE(run->awk,*p)) p++; + while (p < end && QSE_AWK_ISSPACE(run->awk,*p)) p++; if (run->global.ignorecase) { while (p < end) { - c = ASE_AWK_TOUPPER(run->awk, *p); - if (ASE_AWK_ISSPACE(run->awk,c)) + c = QSE_AWK_TOUPPER(run->awk, *p); + if (QSE_AWK_ISSPACE(run->awk,c)) { p++; continue; } for (d = delim; d < delim_end; d++) { - if (c == ASE_AWK_TOUPPER(run->awk,*d)) goto exit_loop; + if (c == QSE_AWK_TOUPPER(run->awk,*d)) goto exit_loop; } - if (sp == ASE_NULL) sp = p; + if (sp == QSE_NULL) sp = p; ep = p++; } } @@ -784,7 +784,7 @@ ase_char_t* ase_awk_strxntok ( while (p < end) { c = *p; - if (ASE_AWK_ISSPACE(run->awk,c)) + if (QSE_AWK_ISSPACE(run->awk,c)) { p++; continue; @@ -793,76 +793,76 @@ ase_char_t* ase_awk_strxntok ( { if (c == *d) goto exit_loop; } - if (sp == ASE_NULL) sp = p; + if (sp == QSE_NULL) sp = p; ep = p++; } } } exit_loop: - if (sp == ASE_NULL) + if (sp == QSE_NULL) { - *tok = ASE_NULL; - *tok_len = (ase_size_t)0; + *tok = QSE_NULL; + *tok_len = (qse_size_t)0; } else { - *tok = (ase_char_t*)sp; + *tok = (qse_char_t*)sp; *tok_len = ep - sp + 1; } - /* if ASE_NULL is returned, this function should not be called anymore */ - if (p >= end) return ASE_NULL; + /* if QSE_NULL is returned, this function should not be called anymore */ + if (p >= end) return QSE_NULL; if (delim_mode == __DELIM_EMPTY || - delim_mode == __DELIM_SPACES) return (ase_char_t*)p; - return (ase_char_t*)++p; + delim_mode == __DELIM_SPACES) return (qse_char_t*)p; + return (qse_char_t*)++p; } -ase_char_t* ase_awk_strxntokbyrex ( - ase_awk_run_t* run, const ase_char_t* s, ase_size_t len, - void* rex, ase_char_t** tok, ase_size_t* tok_len, int* errnum) +qse_char_t* qse_awk_strxntokbyrex ( + qse_awk_run_t* run, const qse_char_t* s, qse_size_t len, + void* rex, qse_char_t** tok, qse_size_t* tok_len, int* errnum) { int n; - ase_char_t* match_ptr; - ase_size_t match_len, i; - ase_size_t left = len; - const ase_char_t* ptr = s; - const ase_char_t* str_ptr = s; - ase_size_t str_len = len; + qse_char_t* match_ptr; + qse_size_t match_len, i; + qse_size_t left = len; + const qse_char_t* ptr = s; + const qse_char_t* str_ptr = s; + qse_size_t str_len = len; while (len > 0) { - n = ASE_AWK_MATCHREX ( + n = QSE_AWK_MATCHREX ( run->awk, rex, - ((run->global.ignorecase)? ASE_REX_IGNORECASE: 0), - ptr, left, (const ase_char_t**)&match_ptr, &match_len, + ((run->global.ignorecase)? QSE_REX_IGNORECASE: 0), + ptr, left, (const qse_char_t**)&match_ptr, &match_len, errnum); - if (n == -1) return ASE_NULL; + if (n == -1) return QSE_NULL; if (n == 0) { /* no match has been found. * return the entire string as a token */ - *tok = (ase_char_t*)str_ptr; + *tok = (qse_char_t*)str_ptr; *tok_len = str_len; - *errnum = ASE_AWK_ENOERR; - return ASE_NULL; + *errnum = QSE_AWK_ENOERR; + return QSE_NULL; } - ASE_ASSERT (n == 1); + QSE_ASSERT (n == 1); if (match_len == 0) { ptr++; left--; } - else if (run->awk->option & ASE_AWK_STRIPSPACES) + else if (run->awk->option & QSE_AWK_STRIPSPACES) { /* match at the beginning of the input string */ if (match_ptr == s) { for (i = 0; i < match_len; i++) { - if (!ASE_AWK_ISSPACE(run->awk, match_ptr[i])) + if (!QSE_AWK_ISSPACE(run->awk, match_ptr[i])) goto exit_loop; } @@ -881,76 +881,76 @@ ase_char_t* ase_awk_strxntokbyrex ( exit_loop: if (len == 0) { - *tok = (ase_char_t*)str_ptr; + *tok = (qse_char_t*)str_ptr; *tok_len = str_len; - *errnum = ASE_AWK_ENOERR; - return ASE_NULL; + *errnum = QSE_AWK_ENOERR; + return QSE_NULL; } - *tok = (ase_char_t*)str_ptr; + *tok = (qse_char_t*)str_ptr; *tok_len = match_ptr - str_ptr; for (i = 0; i < match_len; i++) { - if (!ASE_AWK_ISSPACE(run->awk, match_ptr[i])) + if (!QSE_AWK_ISSPACE(run->awk, match_ptr[i])) { - *errnum = ASE_AWK_ENOERR; + *errnum = QSE_AWK_ENOERR; return match_ptr+match_len; } } - *errnum = ASE_AWK_ENOERR; + *errnum = QSE_AWK_ENOERR; - if (run->awk->option & ASE_AWK_STRIPSPACES) + if (run->awk->option & QSE_AWK_STRIPSPACES) { return (match_ptr+match_len >= s+len)? - ASE_NULL: (match_ptr+match_len); + QSE_NULL: (match_ptr+match_len); } else { return (match_ptr+match_len > s+len)? - ASE_NULL: (match_ptr+match_len); + QSE_NULL: (match_ptr+match_len); } } -#define ASE_AWK_REXERRTOERR(err) \ - ((err == ASE_REX_ENOERR)? ASE_AWK_ENOERR: \ - (err == ASE_REX_ENOMEM)? ASE_AWK_ENOMEM: \ - (err == ASE_REX_ERECUR)? ASE_AWK_EREXRECUR: \ - (err == ASE_REX_ERPAREN)? ASE_AWK_EREXRPAREN: \ - (err == ASE_REX_ERBRACKET)? ASE_AWK_EREXRBRACKET: \ - (err == ASE_REX_ERBRACE)? ASE_AWK_EREXRBRACE: \ - (err == ASE_REX_EUNBALPAR)? ASE_AWK_EREXUNBALPAR: \ - (err == ASE_REX_ECOLON)? ASE_AWK_EREXCOLON: \ - (err == ASE_REX_ECRANGE)? ASE_AWK_EREXCRANGE: \ - (err == ASE_REX_ECCLASS)? ASE_AWK_EREXCCLASS: \ - (err == ASE_REX_EBRANGE)? ASE_AWK_EREXBRANGE: \ - (err == ASE_REX_EEND)? ASE_AWK_EREXEND: \ - (err == ASE_REX_EGARBAGE)? ASE_AWK_EREXGARBAGE: \ - ASE_AWK_EINTERN) +#define QSE_AWK_REXERRTOERR(err) \ + ((err == QSE_REX_ENOERR)? QSE_AWK_ENOERR: \ + (err == QSE_REX_ENOMEM)? QSE_AWK_ENOMEM: \ + (err == QSE_REX_ERECUR)? QSE_AWK_EREXRECUR: \ + (err == QSE_REX_ERPAREN)? QSE_AWK_EREXRPAREN: \ + (err == QSE_REX_ERBRACKET)? QSE_AWK_EREXRBRACKET: \ + (err == QSE_REX_ERBRACE)? QSE_AWK_EREXRBRACE: \ + (err == QSE_REX_EUNBALPAR)? QSE_AWK_EREXUNBALPAR: \ + (err == QSE_REX_ECOLON)? QSE_AWK_EREXCOLON: \ + (err == QSE_REX_ECRANGE)? QSE_AWK_EREXCRANGE: \ + (err == QSE_REX_ECCLASS)? QSE_AWK_EREXCCLASS: \ + (err == QSE_REX_EBRANGE)? QSE_AWK_EREXBRANGE: \ + (err == QSE_REX_EEND)? QSE_AWK_EREXEND: \ + (err == QSE_REX_EGARBAGE)? QSE_AWK_EREXGARBAGE: \ + QSE_AWK_EINTERN) -void* ase_awk_buildrex ( - ase_awk_t* awk, const ase_char_t* ptn, ase_size_t len, int* errnum) +void* qse_awk_buildrex ( + qse_awk_t* awk, const qse_char_t* ptn, qse_size_t len, int* errnum) { int err; void* p; - p = ase_buildrex ( + p = qse_buildrex ( awk->mmgr, awk->rex.depth.max.build, ptn, len, &err); - if (p == ASE_NULL) *errnum = ASE_AWK_REXERRTOERR(err); + if (p == QSE_NULL) *errnum = QSE_AWK_REXERRTOERR(err); return p; } -int ase_awk_matchrex ( - ase_awk_t* awk, void* code, int option, - const ase_char_t* str, ase_size_t len, - const ase_char_t** match_ptr, ase_size_t* match_len, int* errnum) +int qse_awk_matchrex ( + qse_awk_t* awk, void* code, int option, + const qse_char_t* str, qse_size_t len, + const qse_char_t** match_ptr, qse_size_t* match_len, int* errnum) { int err, x; - x = ase_matchrex ( + x = qse_matchrex ( awk->mmgr, awk->ccls, awk->rex.depth.max.match, code, option, str, len, match_ptr, match_len, &err); - if (x < 0) *errnum = ASE_AWK_REXERRTOERR(err); + if (x < 0) *errnum = QSE_AWK_REXERRTOERR(err); return x; } diff --git a/qse/lib/awk/misc.h b/qse/lib/awk/misc.h index bfc17300..a06360a8 100644 --- a/qse/lib/awk/misc.h +++ b/qse/lib/awk/misc.h @@ -4,43 +4,43 @@ * {License} */ -#ifndef _ASE_LIB_AWK_MISC_H_ -#define _ASE_LIB_AWK_MISC_H_ +#ifndef _QSE_LIB_AWK_MISC_H_ +#define _QSE_LIB_AWK_MISC_H_ #ifdef __cplusplus extern "C" { #endif -ase_char_t* ase_awk_strtok ( - ase_awk_run_t* run, const ase_char_t* s, - const ase_char_t* delim, ase_char_t** tok, ase_size_t* tok_len); +qse_char_t* qse_awk_strtok ( + qse_awk_run_t* run, const qse_char_t* s, + const qse_char_t* delim, qse_char_t** tok, qse_size_t* tok_len); -ase_char_t* ase_awk_strxtok ( - ase_awk_run_t* run, const ase_char_t* s, ase_size_t len, - const ase_char_t* delim, ase_char_t** tok, ase_size_t* tok_len); +qse_char_t* qse_awk_strxtok ( + qse_awk_run_t* run, const qse_char_t* s, qse_size_t len, + const qse_char_t* delim, qse_char_t** tok, qse_size_t* tok_len); -ase_char_t* ase_awk_strntok ( - ase_awk_run_t* run, const ase_char_t* s, - const ase_char_t* delim, ase_size_t delim_len, - ase_char_t** tok, ase_size_t* tok_len); +qse_char_t* qse_awk_strntok ( + qse_awk_run_t* run, const qse_char_t* s, + const qse_char_t* delim, qse_size_t delim_len, + qse_char_t** tok, qse_size_t* tok_len); -ase_char_t* ase_awk_strxntok ( - ase_awk_run_t* run, const ase_char_t* s, ase_size_t len, - const ase_char_t* delim, ase_size_t delim_len, - ase_char_t** tok, ase_size_t* tok_len); +qse_char_t* qse_awk_strxntok ( + qse_awk_run_t* run, const qse_char_t* s, qse_size_t len, + const qse_char_t* delim, qse_size_t delim_len, + qse_char_t** tok, qse_size_t* tok_len); -ase_char_t* ase_awk_strxntokbyrex ( - ase_awk_run_t* run, const ase_char_t* s, ase_size_t len, - void* rex, ase_char_t** tok, ase_size_t* tok_len, int* errnum); +qse_char_t* qse_awk_strxntokbyrex ( + qse_awk_run_t* run, const qse_char_t* s, qse_size_t len, + void* rex, qse_char_t** tok, qse_size_t* tok_len, int* errnum); -void* ase_awk_buildrex ( - ase_awk_t* awk, const ase_char_t* ptn, ase_size_t len, int* errnum); +void* qse_awk_buildrex ( + qse_awk_t* awk, const qse_char_t* ptn, qse_size_t len, int* errnum); -int ase_awk_matchrex ( - ase_awk_t* awk, void* code, int option, - const ase_char_t* str, ase_size_t len, - const ase_char_t** match_ptr, ase_size_t* match_len, int* errnum); +int qse_awk_matchrex ( + qse_awk_t* awk, void* code, int option, + const qse_char_t* str, qse_size_t len, + const qse_char_t** match_ptr, qse_size_t* match_len, int* errnum); #ifdef __cplusplus } diff --git a/qse/lib/awk/msw-bcc.mak b/qse/lib/awk/msw-bcc.mak deleted file mode 100644 index 20482249..00000000 --- a/qse/lib/awk/msw-bcc.mak +++ /dev/null @@ -1,208 +0,0 @@ -NAME = aseawk - -!ifndef MODE -MODE = release -!endif - -JNI_INC = \ - -I"$(JAVA_HOME)\include" \ - -I"$(JAVA_HOME)\include\win32" - -CC = bcc32 -CXX = bcc32 -LD = ilink32 -AR = tlib -JAVAC = javac -JAR = jar - - -CFLAGS = -WM -WU -RT- -w -q -I..\.. -CXXFLAGS = -WM -WU -RT- -w -q -I..\.. - -!IF "$(MODE)" == "debug" -CFLAGS = $(CFLAGS) -D_DEBUG -DDEBUG -CXXFLAGS = $(CXXFLAGS) -D_DEBUG -DDEBUG -!ELSEIF "$(MODE)" == "release" -CFLAGS = $(CFLAGS) -DNDEBUG -O2 -CXXFLAGS = $(CXXFLAGS) -DNDEBUG -O2 -!ELSE -CFLAGS = $(CFLAGS) -CXXFLAGS = $(CXXFLAGS) -!ENDIF - -JAVACFLAGS = -classpath ..\.. -Xlint:unchecked - -LDFLAGS = -Tpd -ap -Gn -c -q -L..\$(MODE)\lib -STARTUP = c0d32w.obj -LIBS = import32.lib cw32mt.lib asecmn.lib aseutl.lib $(NAME).lib - -OUT_DIR = ..\$(MODE)\lib -OUT_FILE_LIB = $(OUT_DIR)\$(NAME).lib -OUT_FILE_JNI = $(OUT_DIR)\$(NAME)_jni.dll -OUT_FILE_LIB_CXX = "$(OUT_DIR)\$(NAME)++.lib" -OUT_FILE_JAR = $(OUT_DIR)\$(NAME).jar - -TMP_DIR = $(MODE) -TMP_DIR_CXX = $(TMP_DIR)\cxx - -OBJ_FILES_LIB = \ - $(TMP_DIR)\awk.obj \ - $(TMP_DIR)\err.obj \ - $(TMP_DIR)\tree.obj \ - $(TMP_DIR)\tab.obj \ - $(TMP_DIR)\parse.obj \ - $(TMP_DIR)\run.obj \ - $(TMP_DIR)\rec.obj \ - $(TMP_DIR)\val.obj \ - $(TMP_DIR)\func.obj \ - $(TMP_DIR)\misc.obj \ - $(TMP_DIR)\extio.obj - -OBJ_FILES_JNI = $(TMP_DIR)\jni.obj - -OBJ_FILES_LIB_CXX = \ - $(TMP_DIR)\cxx\Awk.obj \ - $(TMP_DIR)\cxx\StdAwk.obj - -OBJ_FILES_JAR = \ - $(TMP_DIR)\ase\awk\Awk.class \ - $(TMP_DIR)\ase\awk\StdAwk.class \ - $(TMP_DIR)\ase\awk\Context.class \ - $(TMP_DIR)\ase\awk\Clearable.class \ - $(TMP_DIR)\ase\awk\Argument.class \ - $(TMP_DIR)\ase\awk\Return.class \ - $(TMP_DIR)\ase\awk\Extio.class \ - $(TMP_DIR)\ase\awk\IO.class \ - $(TMP_DIR)\ase\awk\Console.class \ - $(TMP_DIR)\ase\awk\File.class \ - $(TMP_DIR)\ase\awk\Pipe.class \ - $(TMP_DIR)\ase\awk\Exception.class - -TARGETS = lib -!if "$(JAVA_HOME)" != "" -TARGETS = $(TARGETS) jnidll jar -JNI_INC = -I"$(JAVA_HOME)\include" -I"$(JAVA_HOME)\include\win32" -!endif - -all: $(TARGETS) - -lib: $(TMP_DIR) $(OUT_DIR) $(OUT_DIR_CXX) $(OUT_FILE_LIB) $(OUT_FILE_LIB_CXX) - -jnidll: $(TMP_DIR) $(OUT_DIR) $(OUT_FILE_JNI) - -jar: $(OUT_FILE_JAR) - -$(OUT_FILE_LIB): $(OBJ_FILES_LIB) - $(AR) $(OUT_FILE_LIB) @&&! -+-$(**: = &^ -+-) -! - -$(OUT_FILE_LIB_CXX): $(OBJ_FILES_LIB_CXX) - $(AR) $(OUT_FILE_LIB_CXX) @&&! -+-$(**: = &^ -+-) -! - -$(OUT_FILE_JNI): $(OUT_FILE_LIB) $(OBJ_FILES_JNI) - $(LD) $(LDFLAGS) $(STARTUP) $(OBJ_FILES_JNI),$(OUT_FILE_JNI),,$(LIBS),jni.def, - -$(OUT_FILE_JAR): $(OBJ_FILES_JAR) - $(JAR) -Mcvf $(OUT_FILE_JAR) -C $(TMP_DIR) ase - -$(TMP_DIR)\awk.obj: awk.c - $(CC) $(CFLAGS) -o$@ -c awk.c - -$(TMP_DIR)\err.obj: err.c - $(CC) $(CFLAGS) -o$@ -c err.c - -$(TMP_DIR)\tree.obj: tree.c - $(CC) $(CFLAGS) -o$@ -c tree.c - -$(TMP_DIR)\tab.obj: tab.c - $(CC) $(CFLAGS) -o$@ -c tab.c - -$(TMP_DIR)\parse.obj: parse.c - $(CC) $(CFLAGS) -o$@ -c parse.c - -$(TMP_DIR)\run.obj: run.c - $(CC) $(CFLAGS) -o$@ -c run.c - -$(TMP_DIR)\rec.obj: rec.c - $(CC) $(CFLAGS) -o$@ -c rec.c - -$(TMP_DIR)\val.obj: val.c - $(CC) $(CFLAGS) -o$@ -c val.c - -$(TMP_DIR)\func.obj: func.c - $(CC) $(CFLAGS) -o$@ -c func.c - -$(TMP_DIR)\misc.obj: misc.c - $(CC) $(CFLAGS) -o$@ -c misc.c - -$(TMP_DIR)\extio.obj: extio.c - $(CC) $(CFLAGS) -o$@ -c extio.c - -$(TMP_DIR)\jni.obj: jni.c - $(CC) $(CFLAGS) $(JNI_INC) -o$@ -c jni.c - -$(TMP_DIR)\cxx\Awk.obj: Awk.cpp Awk.hpp - $(CXX) $(CXXFLAGS) -o$@ -c Awk.cpp - -$(TMP_DIR)\cxx\StdAwk.obj: StdAwk.cpp StdAwk.hpp Awk.hpp - $(CXX) $(CXXFLAGS) -o$@ -c StdAwk.cpp - -$(TMP_DIR)\ase\awk\Awk.class: Awk.java - $(JAVAC) $(JAVACFLAGS) -d $(TMP_DIR) Awk.java - -$(TMP_DIR)\ase\awk\StdAwk.class: StdAwk.java - $(JAVAC) $(JAVACFLAGS) -d $(TMP_DIR) StdAwk.java - -$(TMP_DIR)\ase\awk\Context.class: Context.java - $(JAVAC) $(JAVACFLAGS) -d $(TMP_DIR) Context.java - -$(TMP_DIR)\ase\awk\Clearable.class: Clearable.java - $(JAVAC) $(JAVACFLAGS) -d $(TMP_DIR) Clearable.java - -$(TMP_DIR)\ase\awk\Argument.class: Argument.java - $(JAVAC) $(JAVACFLAGS) -d $(TMP_DIR) Argument.java - -$(TMP_DIR)\ase\awk\Return.class: Return.java - $(JAVAC) $(JAVACFLAGS) -d $(TMP_DIR) Return.java - -$(TMP_DIR)\ase\awk\Extio.class: Extio.java - $(JAVAC) $(JAVACFLAGS) -d $(TMP_DIR) Extio.java - -$(TMP_DIR)\ase\awk\IO.class: IO.java - $(JAVAC) $(JAVACFLAGS) -d $(TMP_DIR) IO.java - -$(TMP_DIR)\ase\awk\Console.class: Console.java - $(JAVAC) $(JAVACFLAGS) -d $(TMP_DIR) Console.java - -$(TMP_DIR)\ase\awk\File.class: File.java - $(JAVAC) $(JAVACFLAGS) -d $(TMP_DIR) File.java - -$(TMP_DIR)\ase\awk\Pipe.class: Pipe.java - $(JAVAC) $(JAVACFLAGS) -d $(TMP_DIR) Pipe.java - -$(TMP_DIR)\ase\awk\Exception.class: Exception.java - $(JAVAC) $(JAVACFLAGS) -d $(TMP_DIR) Exception.java - -$(OUT_DIR): - -md $(OUT_DIR) - -$(TMP_DIR): - -md $(TMP_DIR) - -$(TMP_DIR_CXX): $(TMP_DIR) - -md $(TMP_DIR_CXX) - -clean: - -del $(OUT_FILE_LIB) - -del $(OUT_FILE_JNI) - -del $(OUT_FILE_JAR) - -del $(OUT_FILE_LIB_CXX) - -del $(OBJ_FILES_LIB) - -del $(OBJ_FILES_JNI) - -del $(OBJ_FILES_JAR) - -del $(OBJ_FILES_LIB_CXX) diff --git a/qse/lib/awk/msw-cl.mak b/qse/lib/awk/msw-cl.mak deleted file mode 100644 index c488cb4a..00000000 --- a/qse/lib/awk/msw-cl.mak +++ /dev/null @@ -1,219 +0,0 @@ -NAME = aseawk -MODE = release - - -!if !defined(CPU) || "$(CPU)" == "" -CPU = $(PROCESSOR_ARCHITECTURE) -!endif - -!if "$(CPU)" == "" -CPU = i386 -!endif - -CC = cl -CXX = cl -LD = link -AR = link -JAVAC = javac -JAR = jar - -CFLAGS = /nologo /W3 -I..\.. -CXXFLAGS = /nologo /W3 -I..\.. -JAVACFLAGS = -classpath ..\.. -Xlint:unchecked - -#LDFLAGS = /subsystem:console -LDFLAGS = /subsystem:windows -LIBS= - -!IF "$(MODE)" == "debug" -CFLAGS = $(CFLAGS) -D_DEBUG -DDEBUG /MTd /Zi -CXXFLAGS = $(CXXFLAGS) -D_DEBUG -DDEBUG /MTd /Zi -!ELSEIF "$(MODE)" == "release" -CFLAGS = $(CFLAGS) -DNDEBUG /MT /O2 -CXXFLAGS = $(CXXFLAGS) -DNDEBUG /MT /O2 -!ELSE -CFLAGS = $(CFLAGS) /MT -CXXFLAGS = $(CXXFLAGS) /MT -!ENDIF - -OUT_DIR = ..\$(MODE)\lib -OUT_FILE_LIB = $(OUT_DIR)\$(NAME).lib -OUT_FILE_JNI = $(OUT_DIR)\$(NAME)_jni.dll -OUT_FILE_LIB_CXX = $(OUT_DIR)\$(NAME)++.lib -OUT_FILE_JAR = $(OUT_DIR)\$(NAME).jar - -TMP_DIR = $(MODE) -TMP_DIR_CXX = $(TMP_DIR)\cxx - -OBJ_FILES_LIB = \ - $(TMP_DIR)\awk.obj \ - $(TMP_DIR)\err.obj \ - $(TMP_DIR)\tree.obj \ - $(TMP_DIR)\tab.obj \ - $(TMP_DIR)\parse.obj \ - $(TMP_DIR)\run.obj \ - $(TMP_DIR)\rec.obj \ - $(TMP_DIR)\val.obj \ - $(TMP_DIR)\func.obj \ - $(TMP_DIR)\misc.obj \ - $(TMP_DIR)\extio.obj - -OBJ_FILES_JNI = $(TMP_DIR)\jni.obj - -OBJ_FILES_LIB_CXX = \ - $(TMP_DIR)\cxx\Awk.obj \ - $(TMP_DIR)\cxx\StdAwk.obj - -OBJ_FILES_JAR = \ - $(TMP_DIR)\ase\awk\Awk.class \ - $(TMP_DIR)\ase\awk\StdAwk.class \ - $(TMP_DIR)\ase\awk\Context.class \ - $(TMP_DIR)\ase\awk\Clearable.class \ - $(TMP_DIR)\ase\awk\Argument.class \ - $(TMP_DIR)\ase\awk\Return.class \ - $(TMP_DIR)\ase\awk\Extio.class \ - $(TMP_DIR)\ase\awk\IO.class \ - $(TMP_DIR)\ase\awk\Console.class \ - $(TMP_DIR)\ase\awk\File.class \ - $(TMP_DIR)\ase\awk\Pipe.class \ - $(TMP_DIR)\ase\awk\Exception.class - -LIBS_JNIDLL=user32.lib $(OUT_FILE_LIB) asecmn.lib aseutl.lib - -!if "$(CPU)" == "IA64" || "$(CPU)" == "AMD64" -# comment out the following line if you encounter this link error. -# LINK : fatal error LNK1181: cannot open input file 'bufferoverflowu.lib' -LIBS_JNIDLL = $(LIBS_JNIDLL) bufferoverflowu.lib -!endif - -TARGETS = lib -!if "$(JAVA_HOME)" != "" -TARGETS = $(TARGETS) jnidll jar -JNI_INC = -I"$(JAVA_HOME)\include" -I"$(JAVA_HOME)\include\win32" -!endif - -all: $(TARGETS) - -lib: $(OUT_FILE_LIB) $(OUT_FILE_LIB_CXX) - -jnidll: $(OUT_FILE_JNI) - -jar: $(OUT_FILE_JAR) - -$(OUT_FILE_LIB): $(TMP_DIR) $(OUT_DIR) $(OBJ_FILES_LIB) - $(AR) /lib @<< -/nologo /out:$(OUT_FILE_LIB) $(OBJ_FILES_LIB) -<< - -$(OUT_FILE_LIB_CXX): $(TMP_DIR_CXX) $(OUT_FILE_LIB) $(OBJ_FILES_LIB_CXX) - $(AR) /lib @<< -/nologo /out:$(OUT_FILE_LIB_CXX) $(OBJ_FILES_LIB_CXX) -<< - -$(OUT_FILE_JNI): $(OUT_FILE_LIB) $(OBJ_FILES_JNI) - $(LD) /dll /def:jni.def $(LDFLAGS) /release @<< -/nologo /out:$(OUT_FILE_JNI) $(OBJ_FILES_JNI) /libpath:../$(MODE)/lib /implib:tmp.lib $(LIBS_JNIDLL) -<< - del tmp.lib tmp.exp - - -$(OUT_FILE_JAR): $(OBJ_FILES_JAR) - $(JAR) -Mcvf $(OUT_FILE_JAR) -C $(TMP_DIR) ase - -$(TMP_DIR)\awk.obj: awk.c - $(CC) $(CFLAGS) /Fo$@ /c awk.c - -$(TMP_DIR)\err.obj: err.c - $(CC) $(CFLAGS) /Fo$@ /c err.c - -$(TMP_DIR)\tree.obj: tree.c - $(CC) $(CFLAGS) /Fo$@ /c tree.c - -$(TMP_DIR)\tab.obj: tab.c - $(CC) $(CFLAGS) /Fo$@ /c tab.c - -$(TMP_DIR)\parse.obj: parse.c - $(CC) $(CFLAGS) /Fo$@ /c parse.c - -$(TMP_DIR)\run.obj: run.c - $(CC) $(CFLAGS) /Fo$@ /c run.c - -$(TMP_DIR)\rec.obj: rec.c - $(CC) $(CFLAGS) /Fo$@ /c rec.c - -$(TMP_DIR)\val.obj: val.c - $(CC) $(CFLAGS) /Fo$@ /c val.c - -$(TMP_DIR)\func.obj: func.c - $(CC) $(CFLAGS) /Fo$@ /c func.c - -$(TMP_DIR)\misc.obj: misc.c - $(CC) $(CFLAGS) /Fo$@ /c misc.c - -$(TMP_DIR)\extio.obj: extio.c - $(CC) $(CFLAGS) /Fo$@ /c extio.c - -$(TMP_DIR)\jni.obj: jni.c - $(CC) $(CFLAGS) $(JNI_INC) /Fo$@ /c jni.c - -$(TMP_DIR)\cxx\Awk.obj: Awk.cpp Awk.hpp - $(CXX) $(CXXFLAGS) /Fo$@ /c Awk.cpp - -$(TMP_DIR)\cxx\StdAwk.obj: StdAwk.cpp StdAwk.hpp Awk.hpp - $(CXX) $(CXXFLAGS) /Fo$@ /c StdAwk.cpp - -$(TMP_DIR)\ase\awk\Awk.class: Awk.java - $(JAVAC) $(JAVACFLAGS) -d $(TMP_DIR) Awk.java - -$(TMP_DIR)\ase\awk\StdAwk.class: StdAwk.java - $(JAVAC) $(JAVACFLAGS) -d $(TMP_DIR) StdAwk.java - -$(TMP_DIR)\ase\awk\Context.class: Context.java - $(JAVAC) $(JAVACFLAGS) -d $(TMP_DIR) Context.java - -$(TMP_DIR)\ase\awk\Clearable.class: Clearable.java - $(JAVAC) $(JAVACFLAGS) -d $(TMP_DIR) Clearable.java - -$(TMP_DIR)\ase\awk\Argument.class: Argument.java - $(JAVAC) $(JAVACFLAGS) -d $(TMP_DIR) Argument.java - -$(TMP_DIR)\ase\awk\Return.class: Return.java - $(JAVAC) $(JAVACFLAGS) -d $(TMP_DIR) Return.java - -$(TMP_DIR)\ase\awk\Extio.class: Extio.java - $(JAVAC) $(JAVACFLAGS) -d $(TMP_DIR) Extio.java - -$(TMP_DIR)\ase\awk\IO.class: IO.java - $(JAVAC) $(JAVACFLAGS) -d $(TMP_DIR) IO.java - -$(TMP_DIR)\ase\awk\Console.class: Console.java - $(JAVAC) $(JAVACFLAGS) -d $(TMP_DIR) Console.java - -$(TMP_DIR)\ase\awk\File.class: File.java - $(JAVAC) $(JAVACFLAGS) -d $(TMP_DIR) File.java - -$(TMP_DIR)\ase\awk\Pipe.class: Pipe.java - $(JAVAC) $(JAVACFLAGS) -d $(TMP_DIR) Pipe.java - -$(TMP_DIR)\ase\awk\Exception.class: Exception.java - $(JAVAC) $(JAVACFLAGS) -d $(TMP_DIR) Exception.java - -$(OUT_DIR): - -md $(OUT_DIR) - -$(TMP_DIR): - -md $(TMP_DIR) - -$(TMP_DIR_CXX): $(TMP_DIR) - -md $(TMP_DIR_CXX) - -clean: - -del $(OUT_FILE_LIB) - -del $(OUT_FILE_JNI) - -del $(OUT_FILE_JAR) - -del $(OUT_FILE_LIB_CXX) - -del $(OBJ_FILES_LIB) - -del $(OBJ_FILES_JNI) - -del $(OBJ_FILES_JAR) - -del $(OBJ_FILES_LIB_CXX) - diff --git a/qse/lib/awk/msw-dmc.mak b/qse/lib/awk/msw-dmc.mak deleted file mode 100644 index 9d2f4a8c..00000000 --- a/qse/lib/awk/msw-dmc.mak +++ /dev/null @@ -1,155 +0,0 @@ -NAME = aseawk -MODE = release - -JNI_INC = \ - -I"$(JAVA_HOME)\include" \ - -I"$(JAVA_HOME)\include\win32" - -CC = dmc -LD = dmc -AR = lib -JAVAC = javac -JAR = jar - -CFLAGS = -mn -I..\.. -DUNICODE -D_UNICODE #-D_DEBUG -JAVACFLAGS = -classpath ..\.. -Xlint:unchecked - -OUT_DIR = ..\$(MODE)\lib -OUT_FILE_LIB = $(OUT_DIR)\$(NAME).lib -OUT_FILE_JNI = $(OUT_DIR)\$(NAME)_jni.dll -OUT_FILE_JAR = $(OUT_DIR)\$(NAME).jar - -TMP_DIR = $(MODE) - -OBJ_FILES_LIB = \ - $(TMP_DIR)\awk.obj \ - $(TMP_DIR)\err.obj \ - $(TMP_DIR)\tree.obj \ - $(TMP_DIR)\tab.obj \ - $(TMP_DIR)\parse.obj \ - $(TMP_DIR)\run.obj \ - $(TMP_DIR)\rec.obj \ - $(TMP_DIR)\val.obj \ - $(TMP_DIR)\func.obj \ - $(TMP_DIR)\misc.obj \ - $(TMP_DIR)\extio.obj - -OBJ_FILES_JNI = $(TMP_DIR)\jni.obj - -OBJ_FILES_JAR = \ - $(TMP_DIR)\ase\awk\Awk.class \ - $(TMP_DIR)\ase\awk\StdAwk.class \ - $(TMP_DIR)\ase\awk\Context.class \ - $(TMP_DIR)\ase\awk\Clearable.class \ - $(TMP_DIR)\ase\awk\Argument.class \ - $(TMP_DIR)\ase\awk\Return.class - $(TMP_DIR)\ase\awk\Extio.class \ - $(TMP_DIR)\ase\awk\IO.class \ - $(TMP_DIR)\ase\awk\Console.class \ - $(TMP_DIR)\ase\awk\File.class \ - $(TMP_DIR)\ase\awk\Pipe.class \ - $(TMP_DIR)\ase\awk\Exception.class - -all: lib - -lib: $(OUT_FILE_LIB) - -jnidll: $(OUT_FILE_JNI) - -jar: $(OUT_FILE_JAR) - -$(OUT_FILE_LIB): $(TMP_DIR) $(OUT_DIR) $(OBJ_FILES_LIB) - $(AR) -c $(OUT_FILE_LIB) $(OBJ_FILES_LIB) - -$(OUT_FILE_JNI): $(OUT_FILE_LIB) $(OBJ_FILES_JNI) - $(LD) -WD -o$(OUT_FILE_JNI) $(OBJ_FILES_JNI) $(OUT_FILE_LIB) $(OUT_DIR)\asecmn.lib $(OUT_DIR)\aseutl.lib kernel32.lib jni-dmc.def - -$(OUT_FILE_JAR): $(OBJ_FILES_JAR) - $(JAR) -Mcvf $(OUT_FILE_JAR) -C $(TMP_DIR) ase - -$(TMP_DIR)\awk.obj: awk.c - $(CC) $(CFLAGS) -o$@ -c awk.c - -$(TMP_DIR)\err.obj: err.c - $(CC) $(CFLAGS) -o$@ -c err.c - -$(TMP_DIR)\tree.obj: tree.c - $(CC) $(CFLAGS) -o$@ -c tree.c - -$(TMP_DIR)\tab.obj: tab.c - $(CC) $(CFLAGS) -o$@ -c tab.c - -$(TMP_DIR)\parse.obj: parse.c - $(CC) $(CFLAGS) -o$@ -c parse.c - -$(TMP_DIR)\run.obj: run.c - $(CC) $(CFLAGS) -o$@ -c run.c - -$(TMP_DIR)\rec.obj: rec.c - $(CC) $(CFLAGS) -o$@ -c rec.c - -$(TMP_DIR)\val.obj: val.c - $(CC) $(CFLAGS) -o$@ -c val.c - -$(TMP_DIR)\func.obj: func.c - $(CC) $(CFLAGS) -o$@ -c func.c - -$(TMP_DIR)\misc.obj: misc.c - $(CC) $(CFLAGS) -o$@ -c misc.c - -$(TMP_DIR)\extio.obj: extio.c - $(CC) $(CFLAGS) -o$@ -c extio.c - -$(TMP_DIR)\jni.obj: jni.c - $(CC) $(CFLAGS) $(JNI_INC) -o$@ -c jni.c - -$(TMP_DIR)\ase\awk\Awk.class: Awk.java - $(JAVAC) $(JAVACFLAGS) -d $(TMP_DIR) Awk.java - -$(TMP_DIR)\ase\awk\StdAwk.class: StdAwk.java - $(JAVAC) $(JAVACFLAGS) -d $(TMP_DIR) StdAwk.java - -$(TMP_DIR)\ase\awk\Context.class: Context.java - $(JAVAC) $(JAVACFLAGS) -d $(TMP_DIR) Context.java - -$(TMP_DIR)\ase\awk\Clearable.class: Clearable.java - $(JAVAC) $(JAVACFLAGS) -d $(TMP_DIR) Clearable.java - -$(TMP_DIR)\ase\awk\Argument.class: Argument.java - $(JAVAC) $(JAVACFLAGS) -d $(TMP_DIR) Argument.java - -$(TMP_DIR)\ase\awk\Return.class: Return.java - $(JAVAC) $(JAVACFLAGS) -d $(TMP_DIR) Return.java - -$(TMP_DIR)\ase\awk\Extio.class: Extio.java - $(JAVAC) $(JAVACFLAGS) -d $(TMP_DIR) Extio.java - -$(TMP_DIR)\ase\awk\IO.class: IO.java - $(JAVAC) $(JAVACFLAGS) -d $(TMP_DIR) IO.java - -$(TMP_DIR)\ase\awk\Console.class: Console.java - $(JAVAC) $(JAVACFLAGS) -d $(TMP_DIR) Console.java - -$(TMP_DIR)\ase\awk\File.class: File.java - $(JAVAC) $(JAVACFLAGS) -d $(TMP_DIR) File.java - -$(TMP_DIR)\ase\awk\Pipe.class: Pipe.java - $(JAVAC) $(JAVACFLAGS) -d $(TMP_DIR) Pipe.java - -$(TMP_DIR)\ase\awk\Exception.class: Exception.java - $(JAVAC) $(JAVACFLAGS) -d $(TMP_DIR) Exception.java - -$(OUT_DIR): - md $(OUT_DIR) - -$(TMP_DIR): - md $(TMP_DIR) - -clean: - del $(OUT_FILE_LIB) - del $(OUT_FILE_JNI) - del $(OUT_FILE_JAR) - del $(OBJ_FILES_LIB) - del $(OBJ_FILES_JNI) - del $(OBJ_FILES_JAR) - diff --git a/qse/lib/awk/parse.c b/qse/lib/awk/parse.c index 27fa690d..7afceebd 100644 --- a/qse/lib/awk/parse.c +++ b/qse/lib/awk/parse.c @@ -131,111 +131,111 @@ struct binmap_t int binop; }; -static int parse (ase_awk_t* awk); +static int parse (qse_awk_t* awk); -static ase_awk_t* parse_progunit (ase_awk_t* awk); -static ase_awk_t* collect_globals (ase_awk_t* awk); -static void adjust_static_globals (ase_awk_t* awk); +static qse_awk_t* parse_progunit (qse_awk_t* awk); +static qse_awk_t* collect_globals (qse_awk_t* awk); +static void adjust_static_globals (qse_awk_t* awk); -static ase_size_t get_global ( - ase_awk_t* awk, const ase_char_t* name, ase_size_t len); -static ase_size_t find_global ( - ase_awk_t* awk, const ase_char_t* name, ase_size_t len); +static qse_size_t get_global ( + qse_awk_t* awk, const qse_char_t* name, qse_size_t len); +static qse_size_t find_global ( + qse_awk_t* awk, const qse_char_t* name, qse_size_t len); static int add_global ( - ase_awk_t* awk, const ase_char_t* name, ase_size_t len, - ase_size_t line, int force); -static ase_awk_t* collect_locals ( - ase_awk_t* awk, ase_size_t nlocals, ase_bool_t istop); + qse_awk_t* awk, const qse_char_t* name, qse_size_t len, + qse_size_t line, int force); +static qse_awk_t* collect_locals ( + qse_awk_t* awk, qse_size_t nlocals, qse_bool_t istop); -static ase_awk_nde_t* parse_function (ase_awk_t* awk); -static ase_awk_nde_t* parse_begin (ase_awk_t* awk); -static ase_awk_nde_t* parse_end (ase_awk_t* awk); -static ase_awk_chain_t* parse_pattern_block ( - ase_awk_t* awk, ase_awk_nde_t* ptn, ase_bool_t blockless); +static qse_awk_nde_t* parse_function (qse_awk_t* awk); +static qse_awk_nde_t* parse_begin (qse_awk_t* awk); +static qse_awk_nde_t* parse_end (qse_awk_t* awk); +static qse_awk_chain_t* parse_pattern_block ( + qse_awk_t* awk, qse_awk_nde_t* ptn, qse_bool_t blockless); -static ase_awk_nde_t* parse_block (ase_awk_t* awk, ase_size_t line, ase_bool_t istop); -static ase_awk_nde_t* parse_block_dc (ase_awk_t* awk, ase_size_t line, ase_bool_t istop); -static ase_awk_nde_t* parse_statement (ase_awk_t* awk, ase_size_t line); -static ase_awk_nde_t* parse_statement_nb (ase_awk_t* awk, ase_size_t line); +static qse_awk_nde_t* parse_block (qse_awk_t* awk, qse_size_t line, qse_bool_t istop); +static qse_awk_nde_t* parse_block_dc (qse_awk_t* awk, qse_size_t line, qse_bool_t istop); +static qse_awk_nde_t* parse_statement (qse_awk_t* awk, qse_size_t line); +static qse_awk_nde_t* parse_statement_nb (qse_awk_t* awk, qse_size_t line); -static ase_awk_nde_t* parse_expression (ase_awk_t* awk, ase_size_t line); -static ase_awk_nde_t* parse_expression0 (ase_awk_t* awk, ase_size_t line); -static ase_awk_nde_t* parse_basic_expr (ase_awk_t* awk, ase_size_t line); +static qse_awk_nde_t* parse_expression (qse_awk_t* awk, qse_size_t line); +static qse_awk_nde_t* parse_expression0 (qse_awk_t* awk, qse_size_t line); +static qse_awk_nde_t* parse_basic_expr (qse_awk_t* awk, qse_size_t line); -static ase_awk_nde_t* parse_binary_expr ( - ase_awk_t* awk, ase_size_t line, int skipnl, const binmap_t* binmap, - ase_awk_nde_t*(*next_level_func)(ase_awk_t*,ase_size_t)); +static qse_awk_nde_t* parse_binary_expr ( + qse_awk_t* awk, qse_size_t line, int skipnl, const binmap_t* binmap, + qse_awk_nde_t*(*next_level_func)(qse_awk_t*,qse_size_t)); -static ase_awk_nde_t* parse_logical_or (ase_awk_t* awk, ase_size_t line); -static ase_awk_nde_t* parse_logical_and (ase_awk_t* awk, ase_size_t line); -static ase_awk_nde_t* parse_in (ase_awk_t* awk, ase_size_t line); -static ase_awk_nde_t* parse_regex_match (ase_awk_t* awk, ase_size_t line); -static ase_awk_nde_t* parse_bitwise_or (ase_awk_t* awk, ase_size_t line); -static ase_awk_nde_t* parse_bitwise_or_with_extio (ase_awk_t* awk, ase_size_t line); -static ase_awk_nde_t* parse_bitwise_xor (ase_awk_t* awk, ase_size_t line); -static ase_awk_nde_t* parse_bitwise_and (ase_awk_t* awk, ase_size_t line); -static ase_awk_nde_t* parse_equality (ase_awk_t* awk, ase_size_t line); -static ase_awk_nde_t* parse_relational (ase_awk_t* awk, ase_size_t line); -static ase_awk_nde_t* parse_shift (ase_awk_t* awk, ase_size_t line); -static ase_awk_nde_t* parse_concat (ase_awk_t* awk, ase_size_t line); -static ase_awk_nde_t* parse_additive (ase_awk_t* awk, ase_size_t line); -static ase_awk_nde_t* parse_multiplicative (ase_awk_t* awk, ase_size_t line); +static qse_awk_nde_t* parse_logical_or (qse_awk_t* awk, qse_size_t line); +static qse_awk_nde_t* parse_logical_and (qse_awk_t* awk, qse_size_t line); +static qse_awk_nde_t* parse_in (qse_awk_t* awk, qse_size_t line); +static qse_awk_nde_t* parse_regex_match (qse_awk_t* awk, qse_size_t line); +static qse_awk_nde_t* parse_bitwise_or (qse_awk_t* awk, qse_size_t line); +static qse_awk_nde_t* parse_bitwise_or_with_extio (qse_awk_t* awk, qse_size_t line); +static qse_awk_nde_t* parse_bitwise_xor (qse_awk_t* awk, qse_size_t line); +static qse_awk_nde_t* parse_bitwise_and (qse_awk_t* awk, qse_size_t line); +static qse_awk_nde_t* parse_equality (qse_awk_t* awk, qse_size_t line); +static qse_awk_nde_t* parse_relational (qse_awk_t* awk, qse_size_t line); +static qse_awk_nde_t* parse_shift (qse_awk_t* awk, qse_size_t line); +static qse_awk_nde_t* parse_concat (qse_awk_t* awk, qse_size_t line); +static qse_awk_nde_t* parse_additive (qse_awk_t* awk, qse_size_t line); +static qse_awk_nde_t* parse_multiplicative (qse_awk_t* awk, qse_size_t line); -static ase_awk_nde_t* parse_unary (ase_awk_t* awk, ase_size_t line); -static ase_awk_nde_t* parse_exponent (ase_awk_t* awk, ase_size_t line); -static ase_awk_nde_t* parse_unary_exp (ase_awk_t* awk, ase_size_t line); -static ase_awk_nde_t* parse_increment (ase_awk_t* awk, ase_size_t line); -static ase_awk_nde_t* parse_primary (ase_awk_t* awk, ase_size_t line); -static ase_awk_nde_t* parse_primary_ident (ase_awk_t* awk, ase_size_t line); +static qse_awk_nde_t* parse_unary (qse_awk_t* awk, qse_size_t line); +static qse_awk_nde_t* parse_exponent (qse_awk_t* awk, qse_size_t line); +static qse_awk_nde_t* parse_unary_exp (qse_awk_t* awk, qse_size_t line); +static qse_awk_nde_t* parse_increment (qse_awk_t* awk, qse_size_t line); +static qse_awk_nde_t* parse_primary (qse_awk_t* awk, qse_size_t line); +static qse_awk_nde_t* parse_primary_ident (qse_awk_t* awk, qse_size_t line); -static ase_awk_nde_t* parse_hashidx ( - ase_awk_t* awk, ase_char_t* name, ase_size_t name_len, - ase_size_t line); -static ase_awk_nde_t* parse_fncall ( - ase_awk_t* awk, ase_char_t* name, ase_size_t name_len, - ase_awk_bfn_t* bfn, ase_size_t line); -static ase_awk_nde_t* parse_if (ase_awk_t* awk, ase_size_t line); -static ase_awk_nde_t* parse_while (ase_awk_t* awk, ase_size_t line); -static ase_awk_nde_t* parse_for (ase_awk_t* awk, ase_size_t line); -static ase_awk_nde_t* parse_dowhile (ase_awk_t* awk, ase_size_t line); -static ase_awk_nde_t* parse_break (ase_awk_t* awk, ase_size_t line); -static ase_awk_nde_t* parse_continue (ase_awk_t* awk, ase_size_t line); -static ase_awk_nde_t* parse_return (ase_awk_t* awk, ase_size_t line); -static ase_awk_nde_t* parse_exit (ase_awk_t* awk, ase_size_t line); -static ase_awk_nde_t* parse_next (ase_awk_t* awk, ase_size_t line); -static ase_awk_nde_t* parse_nextfile (ase_awk_t* awk, ase_size_t line, int out); -static ase_awk_nde_t* parse_delete (ase_awk_t* awk, ase_size_t line); -static ase_awk_nde_t* parse_reset (ase_awk_t* awk, ase_size_t line); -static ase_awk_nde_t* parse_print (ase_awk_t* awk, ase_size_t line, int type); +static qse_awk_nde_t* parse_hashidx ( + qse_awk_t* awk, qse_char_t* name, qse_size_t name_len, + qse_size_t line); +static qse_awk_nde_t* parse_fncall ( + qse_awk_t* awk, qse_char_t* name, qse_size_t name_len, + qse_awk_bfn_t* bfn, qse_size_t line); +static qse_awk_nde_t* parse_if (qse_awk_t* awk, qse_size_t line); +static qse_awk_nde_t* parse_while (qse_awk_t* awk, qse_size_t line); +static qse_awk_nde_t* parse_for (qse_awk_t* awk, qse_size_t line); +static qse_awk_nde_t* parse_dowhile (qse_awk_t* awk, qse_size_t line); +static qse_awk_nde_t* parse_break (qse_awk_t* awk, qse_size_t line); +static qse_awk_nde_t* parse_continue (qse_awk_t* awk, qse_size_t line); +static qse_awk_nde_t* parse_return (qse_awk_t* awk, qse_size_t line); +static qse_awk_nde_t* parse_exit (qse_awk_t* awk, qse_size_t line); +static qse_awk_nde_t* parse_next (qse_awk_t* awk, qse_size_t line); +static qse_awk_nde_t* parse_nextfile (qse_awk_t* awk, qse_size_t line, int out); +static qse_awk_nde_t* parse_delete (qse_awk_t* awk, qse_size_t line); +static qse_awk_nde_t* parse_reset (qse_awk_t* awk, qse_size_t line); +static qse_awk_nde_t* parse_print (qse_awk_t* awk, qse_size_t line, int type); -static int get_token (ase_awk_t* awk); -static int get_number (ase_awk_t* awk); -static int get_charstr (ase_awk_t* awk); -static int get_rexstr (ase_awk_t* awk); +static int get_token (qse_awk_t* awk); +static int get_number (qse_awk_t* awk); +static int get_charstr (qse_awk_t* awk); +static int get_rexstr (qse_awk_t* awk); static int get_string ( - ase_awk_t* awk, ase_char_t end_char, - ase_char_t esc_char, ase_bool_t keep_esc_char); -static int get_char (ase_awk_t* awk); -static int unget_char (ase_awk_t* awk, ase_cint_t c); -static int skip_spaces (ase_awk_t* awk); -static int skip_comment (ase_awk_t* awk); + qse_awk_t* awk, qse_char_t end_char, + qse_char_t esc_char, qse_bool_t keep_esc_char); +static int get_char (qse_awk_t* awk); +static int unget_char (qse_awk_t* awk, qse_cint_t c); +static int skip_spaces (qse_awk_t* awk); +static int skip_comment (qse_awk_t* awk); static int classify_ident ( - ase_awk_t* awk, const ase_char_t* name, ase_size_t len); -static int assign_to_opcode (ase_awk_t* awk); -static int is_plain_var (ase_awk_nde_t* nde); -static int is_var (ase_awk_nde_t* nde); + qse_awk_t* awk, const qse_char_t* name, qse_size_t len); +static int assign_to_opcode (qse_awk_t* awk); +static int is_plain_var (qse_awk_nde_t* nde); +static int is_var (qse_awk_nde_t* nde); -static int deparse (ase_awk_t* awk); -static ase_map_walk_t deparse_func (ase_map_t* map, ase_map_pair_t* pair, void* arg); -static int put_char (ase_awk_t* awk, ase_char_t c); -static int flush_out (ase_awk_t* awk); +static int deparse (qse_awk_t* awk); +static qse_map_walk_t deparse_func (qse_map_t* map, qse_map_pair_t* pair, void* arg); +static int put_char (qse_awk_t* awk, qse_char_t c); +static int flush_out (qse_awk_t* awk); typedef struct kwent_t kwent_t; struct kwent_t { - const ase_char_t* name; - ase_size_t name_len; + const qse_char_t* name; + qse_size_t name_len; int type; int valid; /* the entry is valid when this option is set */ }; @@ -244,94 +244,94 @@ struct kwent_t static kwent_t kwtab[] = { /* operators */ - { ASE_T("in"), 2, TOKEN_IN, 0 }, + { QSE_T("in"), 2, TOKEN_IN, 0 }, /* top-level block starters */ - { ASE_T("BEGIN"), 5, TOKEN_BEGIN, ASE_AWK_PABLOCK }, - { ASE_T("END"), 3, TOKEN_END, ASE_AWK_PABLOCK }, - { ASE_T("function"), 8, TOKEN_FUNCTION, 0 }, + { QSE_T("BEGIN"), 5, TOKEN_BEGIN, QSE_AWK_PABLOCK }, + { QSE_T("END"), 3, TOKEN_END, QSE_AWK_PABLOCK }, + { QSE_T("function"), 8, TOKEN_FUNCTION, 0 }, /* keywords for variable declaration */ - { ASE_T("local"), 5, TOKEN_LOCAL, ASE_AWK_EXPLICIT }, - { ASE_T("global"), 6, TOKEN_GLOBAL, ASE_AWK_EXPLICIT }, + { QSE_T("local"), 5, TOKEN_LOCAL, QSE_AWK_EXPLICIT }, + { QSE_T("global"), 6, TOKEN_GLOBAL, QSE_AWK_EXPLICIT }, /* keywords that start statements excluding expression statements */ - { ASE_T("if"), 2, TOKEN_IF, 0 }, - { ASE_T("else"), 4, TOKEN_ELSE, 0 }, - { ASE_T("while"), 5, TOKEN_WHILE, 0 }, - { ASE_T("for"), 3, TOKEN_FOR, 0 }, - { ASE_T("do"), 2, TOKEN_DO, 0 }, - { ASE_T("break"), 5, TOKEN_BREAK, 0 }, - { ASE_T("continue"), 8, TOKEN_CONTINUE, 0 }, - { ASE_T("return"), 6, TOKEN_RETURN, 0 }, - { ASE_T("exit"), 4, TOKEN_EXIT, 0 }, - { ASE_T("next"), 4, TOKEN_NEXT, ASE_AWK_PABLOCK }, - { ASE_T("nextfile"), 8, TOKEN_NEXTFILE, ASE_AWK_PABLOCK }, - { ASE_T("nextofile"), 9, TOKEN_NEXTOFILE, ASE_AWK_PABLOCK | ASE_AWK_NEXTOFILE }, - { ASE_T("delete"), 6, TOKEN_DELETE, 0 }, - { ASE_T("reset"), 5, TOKEN_RESET, ASE_AWK_RESET }, - { ASE_T("print"), 5, TOKEN_PRINT, ASE_AWK_EXTIO }, - { ASE_T("printf"), 6, TOKEN_PRINTF, ASE_AWK_EXTIO }, + { QSE_T("if"), 2, TOKEN_IF, 0 }, + { QSE_T("else"), 4, TOKEN_ELSE, 0 }, + { QSE_T("while"), 5, TOKEN_WHILE, 0 }, + { QSE_T("for"), 3, TOKEN_FOR, 0 }, + { QSE_T("do"), 2, TOKEN_DO, 0 }, + { QSE_T("break"), 5, TOKEN_BREAK, 0 }, + { QSE_T("continue"), 8, TOKEN_CONTINUE, 0 }, + { QSE_T("return"), 6, TOKEN_RETURN, 0 }, + { QSE_T("exit"), 4, TOKEN_EXIT, 0 }, + { QSE_T("next"), 4, TOKEN_NEXT, QSE_AWK_PABLOCK }, + { QSE_T("nextfile"), 8, TOKEN_NEXTFILE, QSE_AWK_PABLOCK }, + { QSE_T("nextofile"), 9, TOKEN_NEXTOFILE, QSE_AWK_PABLOCK | QSE_AWK_NEXTOFILE }, + { QSE_T("delete"), 6, TOKEN_DELETE, 0 }, + { QSE_T("reset"), 5, TOKEN_RESET, QSE_AWK_RESET }, + { QSE_T("print"), 5, TOKEN_PRINT, QSE_AWK_EXTIO }, + { QSE_T("printf"), 6, TOKEN_PRINTF, QSE_AWK_EXTIO }, /* keywords that can start an expression */ - { ASE_T("getline"), 7, TOKEN_GETLINE, ASE_AWK_EXTIO }, + { QSE_T("getline"), 7, TOKEN_GETLINE, QSE_AWK_EXTIO }, - { ASE_NULL, 0, 0, 0 } + { QSE_NULL, 0, 0, 0 } }; typedef struct global_t global_t; struct global_t { - const ase_char_t* name; - ase_size_t name_len; + const qse_char_t* name; + qse_size_t name_len; int valid; }; static global_t gtab[] = { - { ASE_T("ARGC"), 4, 0 }, - { ASE_T("ARGV"), 4, 0 }, + { QSE_T("ARGC"), 4, 0 }, + { QSE_T("ARGV"), 4, 0 }, /* output real-to-str conversion format for other cases than 'print' */ - { ASE_T("CONVFMT"), 7, 0 }, + { QSE_T("CONVFMT"), 7, 0 }, /* current input file name */ - { ASE_T("FILENAME"), 8, ASE_AWK_PABLOCK }, + { QSE_T("FILENAME"), 8, QSE_AWK_PABLOCK }, /* input record number in current file */ - { ASE_T("FNR"), 3, ASE_AWK_PABLOCK }, + { QSE_T("FNR"), 3, QSE_AWK_PABLOCK }, /* input field separator */ - { ASE_T("FS"), 2, 0 }, + { QSE_T("FS"), 2, 0 }, /* ignore case in string comparison */ - { ASE_T("IGNORECASE"), 10, 0 }, + { QSE_T("IGNORECASE"), 10, 0 }, /* number of fields in current input record * NF is also updated if you assign a value to $0. so it is not - * associated with ASE_AWK_PABLOCK */ - { ASE_T("NF"), 2, 0 }, + * associated with QSE_AWK_PABLOCK */ + { QSE_T("NF"), 2, 0 }, /* input record number */ - { ASE_T("NR"), 2, ASE_AWK_PABLOCK }, + { QSE_T("NR"), 2, QSE_AWK_PABLOCK }, /* current output file name */ - { ASE_T("OFILENAME"), 9, ASE_AWK_PABLOCK | ASE_AWK_NEXTOFILE }, + { QSE_T("OFILENAME"), 9, QSE_AWK_PABLOCK | QSE_AWK_NEXTOFILE }, /* output real-to-str conversion format for 'print' */ - { ASE_T("OFMT"), 4, ASE_AWK_EXTIO}, + { QSE_T("OFMT"), 4, QSE_AWK_EXTIO}, /* output field separator for 'print' */ - { ASE_T("OFS"), 3, ASE_AWK_EXTIO }, + { QSE_T("OFS"), 3, QSE_AWK_EXTIO }, /* output record separator. used for 'print' and blockless output */ - { ASE_T("ORS"), 3, ASE_AWK_EXTIO }, + { QSE_T("ORS"), 3, QSE_AWK_EXTIO }, - { ASE_T("RLENGTH"), 7, 0 }, - { ASE_T("RS"), 2, 0 }, - { ASE_T("RSTART"), 6, 0 }, - { ASE_T("SUBSEP"), 6, 0 } + { QSE_T("RLENGTH"), 7, 0 }, + { QSE_T("RS"), 2, 0 }, + { QSE_T("RSTART"), 6, 0 }, + { QSE_T("SUBSEP"), 6, 0 } }; #define GET_CHAR(awk) \ @@ -350,65 +350,65 @@ static global_t gtab[] = #define ADD_TOKEN_CHAR(awk,c) \ do { \ - if (ase_str_ccat((awk)->token.name,(c)) == (ase_size_t)-1) \ + if (qse_str_ccat((awk)->token.name,(c)) == (qse_size_t)-1) \ { \ - ase_awk_seterror (awk, ASE_AWK_ENOMEM, (awk)->token.line, ASE_NULL, 0); \ + qse_awk_seterror (awk, QSE_AWK_ENOMEM, (awk)->token.line, QSE_NULL, 0); \ return -1; \ } \ } while (0) #define ADD_TOKEN_STR(awk,s,l) \ do { \ - if (ase_str_ncat((awk)->token.name,(s),(l)) == (ase_size_t)-1) \ + if (qse_str_ncat((awk)->token.name,(s),(l)) == (qse_size_t)-1) \ { \ - ase_awk_seterror (awk, ASE_AWK_ENOMEM, (awk)->token.line, ASE_NULL, 0); \ + qse_awk_seterror (awk, QSE_AWK_ENOMEM, (awk)->token.line, QSE_NULL, 0); \ return -1; \ } \ } while (0) #define MATCH(awk,token_type) ((awk)->token.type == (token_type)) -#define CLRERR(awk) ase_awk_seterrnum(awk,ASE_AWK_ENOERR) -#define ISNOERR(awk) ((awk)->errnum == ASE_AWK_ENOERR) -#define SETERR(awk,code) ase_awk_seterrnum(awk,code) -#define SETERRLIN(awk,code,line) ase_awk_seterror(awk,code,line,ASE_NULL,0) +#define CLRERR(awk) qse_awk_seterrnum(awk,QSE_AWK_ENOERR) +#define ISNOERR(awk) ((awk)->errnum == QSE_AWK_ENOERR) +#define SETERR(awk,code) qse_awk_seterrnum(awk,code) +#define SETERRLIN(awk,code,line) qse_awk_seterror(awk,code,line,QSE_NULL,0) #define SETERRTOK(awk,code) \ do { \ - ase_cstr_t errarg; \ - errarg.len = ASE_STR_LEN((awk)->token.name); \ - errarg.ptr = ASE_STR_PTR((awk)->token.name); \ + qse_cstr_t errarg; \ + errarg.len = QSE_STR_LEN((awk)->token.name); \ + errarg.ptr = QSE_STR_PTR((awk)->token.name); \ if (MATCH(awk,TOKEN_EOF)) \ - ase_awk_seterror (awk, code, (awk)->token.prev.line, &errarg, 1); \ + qse_awk_seterror (awk, code, (awk)->token.prev.line, &errarg, 1); \ else \ - ase_awk_seterror (awk, code, (awk)->token.line, &errarg, 1); \ + qse_awk_seterror (awk, code, (awk)->token.line, &errarg, 1); \ } while (0) #define SETERRARG(awk,code,line,arg,leng) \ do { \ - ase_cstr_t errarg; \ + qse_cstr_t errarg; \ errarg.len = (leng); \ errarg.ptr = (arg); \ - ase_awk_seterror ((awk), (code), (line), &errarg, 1); \ + qse_awk_seterror ((awk), (code), (line), &errarg, 1); \ } while (0) #define MATCH_TERMINATOR(awk) \ (MATCH((awk),TOKEN_SEMICOLON) || \ MATCH((awk),TOKEN_NEWLINE) || \ - ((awk->option & ASE_AWK_NEWLINE) && MATCH((awk),TOKEN_RBRACE))) + ((awk->option & QSE_AWK_NEWLINE) && MATCH((awk),TOKEN_RBRACE))) -ase_size_t ase_awk_getmaxdepth (ase_awk_t* awk, int type) +qse_size_t qse_awk_getmaxdepth (qse_awk_t* awk, int type) { - return (type == ASE_AWK_DEPTH_BLOCK_PARSE)? awk->parse.depth.max.block: - (type == ASE_AWK_DEPTH_BLOCK_RUN)? awk->run.depth.max.block: - (type == ASE_AWK_DEPTH_EXPR_PARSE)? awk->parse.depth.max.expr: - (type == ASE_AWK_DEPTH_EXPR_RUN)? awk->run.depth.max.expr: - (type == ASE_AWK_DEPTH_REX_BUILD)? awk->rex.depth.max.build: - (type == ASE_AWK_DEPTH_REX_MATCH)? awk->rex.depth.max.match: 0; + return (type == QSE_AWK_DEPTH_BLOCK_PARSE)? awk->parse.depth.max.block: + (type == QSE_AWK_DEPTH_BLOCK_RUN)? awk->run.depth.max.block: + (type == QSE_AWK_DEPTH_EXPR_PARSE)? awk->parse.depth.max.expr: + (type == QSE_AWK_DEPTH_EXPR_RUN)? awk->run.depth.max.expr: + (type == QSE_AWK_DEPTH_REX_BUILD)? awk->rex.depth.max.build: + (type == QSE_AWK_DEPTH_REX_MATCH)? awk->rex.depth.max.match: 0; } -void ase_awk_setmaxdepth (ase_awk_t* awk, int types, ase_size_t depth) +void qse_awk_setmaxdepth (qse_awk_t* awk, int types, qse_size_t depth) { - if (types & ASE_AWK_DEPTH_BLOCK_PARSE) + if (types & QSE_AWK_DEPTH_BLOCK_PARSE) { awk->parse.depth.max.block = depth; if (depth <= 0) @@ -417,102 +417,102 @@ void ase_awk_setmaxdepth (ase_awk_t* awk, int types, ase_size_t depth) awk->parse.parse_block = parse_block_dc; } - if (types & ASE_AWK_DEPTH_EXPR_PARSE) + if (types & QSE_AWK_DEPTH_EXPR_PARSE) { awk->parse.depth.max.expr = depth; } - if (types & ASE_AWK_DEPTH_BLOCK_RUN) + if (types & QSE_AWK_DEPTH_BLOCK_RUN) { awk->run.depth.max.block = depth; } - if (types & ASE_AWK_DEPTH_EXPR_RUN) + if (types & QSE_AWK_DEPTH_EXPR_RUN) { awk->run.depth.max.expr = depth; } - if (types & ASE_AWK_DEPTH_REX_BUILD) + if (types & QSE_AWK_DEPTH_REX_BUILD) { awk->rex.depth.max.build = depth; } - if (types & ASE_AWK_DEPTH_REX_MATCH) + if (types & QSE_AWK_DEPTH_REX_MATCH) { awk->rex.depth.max.match = depth; } } -const ase_char_t* ase_awk_getglobalname ( - ase_awk_t* awk, ase_size_t idx, ase_size_t* len) +const qse_char_t* qse_awk_getglobalname ( + qse_awk_t* awk, qse_size_t idx, qse_size_t* len) { /* *len = gtab[idx].name_len; return gtab[idx].name; */ - ASE_ASSERT (idx < ASE_LDA_SIZE(&awk->parse.globals)); + QSE_ASSERT (idx < QSE_LDA_SIZE(&awk->parse.globals)); - *len = ASE_LDA_DLEN(awk->parse.globals,idx); - return ASE_LDA_DPTR(awk->parse.globals,idx); + *len = QSE_LDA_DLEN(awk->parse.globals,idx); + return QSE_LDA_DPTR(awk->parse.globals,idx); } -ase_cstr_t* ase_awk_getkw (ase_awk_t* awk, int id, ase_cstr_t* s) +qse_cstr_t* qse_awk_getkw (qse_awk_t* awk, int id, qse_cstr_t* s) { - ase_map_pair_t* p; + qse_map_pair_t* p; s->ptr = kwtab[id].name; s->len = kwtab[id].name_len; - p = ase_map_search (awk->wtab, s->ptr, s->len); - if (p != ASE_NULL) + p = qse_map_search (awk->wtab, s->ptr, s->len); + if (p != QSE_NULL) { - s->ptr = ASE_MAP_VPTR(p); - s->len = ASE_MAP_VLEN(p); + s->ptr = QSE_MAP_VPTR(p); + s->len = QSE_MAP_VLEN(p); } return s; } -int ase_awk_parse (ase_awk_t* awk, ase_awk_srcios_t* srcios) +int qse_awk_parse (qse_awk_t* awk, qse_awk_srcios_t* srcios) { int n; - ASE_ASSERTX (awk->ccls != ASE_NULL, "Call ase_setccls() first"); - ASE_ASSERTX (awk->prmfns != ASE_NULL, "Call ase_setprmfns() first"); + QSE_ASSERTX (awk->ccls != QSE_NULL, "Call qse_setccls() first"); + QSE_ASSERTX (awk->prmfns != QSE_NULL, "Call qse_setprmfns() first"); - ASE_ASSERTX ( - srcios != ASE_NULL && srcios->in != ASE_NULL, + QSE_ASSERTX ( + srcios != QSE_NULL && srcios->in != QSE_NULL, "the source code input stream must be provided at least"); - ASE_ASSERT (awk->parse.depth.cur.loop == 0); - ASE_ASSERT (awk->parse.depth.cur.expr == 0); + QSE_ASSERT (awk->parse.depth.cur.loop == 0); + QSE_ASSERT (awk->parse.depth.cur.expr == 0); - ase_awk_clear (awk); - ASE_MEMCPY (&awk->src.ios, srcios, ASE_SIZEOF(awk->src.ios)); + qse_awk_clear (awk); + QSE_MEMCPY (&awk->src.ios, srcios, QSE_SIZEOF(awk->src.ios)); n = parse (awk); - ASE_ASSERT (awk->parse.depth.cur.loop == 0); - ASE_ASSERT (awk->parse.depth.cur.expr == 0); + QSE_ASSERT (awk->parse.depth.cur.loop == 0); + QSE_ASSERT (awk->parse.depth.cur.expr == 0); return n; } -static int parse (ase_awk_t* awk) +static int parse (qse_awk_t* awk) { int n = 0; - ase_ssize_t op; + qse_ssize_t op; - ASE_ASSERT (awk->src.ios.in != ASE_NULL); + QSE_ASSERT (awk->src.ios.in != QSE_NULL); CLRERR (awk); op = awk->src.ios.in ( - ASE_AWK_IO_OPEN, awk->src.ios.data, ASE_NULL, 0); + QSE_AWK_IO_OPEN, awk->src.ios.data, QSE_NULL, 0); if (op <= -1) { /* cannot open the source file. * it doesn't even have to call CLOSE */ - if (ISNOERR(awk)) SETERR (awk, ASE_AWK_ESINOP); + if (ISNOERR(awk)) SETERR (awk, QSE_AWK_ESINOP); return -1; } @@ -539,38 +539,38 @@ static int parse (ase_awk_t* awk) } if (MATCH(awk,TOKEN_EOF)) break; - if (parse_progunit(awk) == ASE_NULL) EXIT_PARSE(-1); + if (parse_progunit(awk) == QSE_NULL) EXIT_PARSE(-1); } - if ((awk->option & ASE_AWK_EXPLICIT) && - !(awk->option & ASE_AWK_IMPLICIT)) + if ((awk->option & QSE_AWK_EXPLICIT) && + !(awk->option & QSE_AWK_IMPLICIT)) { - ase_map_pair_t* p; - ase_size_t buckno; + qse_map_pair_t* p; + qse_size_t buckno; - p = ase_map_getfirstpair (awk->parse.afns, &buckno); - while (p != ASE_NULL) + p = qse_map_getfirstpair (awk->parse.afns, &buckno); + while (p != QSE_NULL) { - if (ase_map_search (awk->tree.afns, - ASE_MAP_KPTR(p), ASE_MAP_KLEN(p)) == ASE_NULL) + if (qse_map_search (awk->tree.afns, + QSE_MAP_KPTR(p), QSE_MAP_KLEN(p)) == QSE_NULL) { /* TODO: set better error no & line */ - SETERRARG (awk, ASE_AWK_EFNNONE, - *(ase_size_t*)ASE_MAP_VPTR(p), - ASE_MAP_KPTR(p), - ASE_MAP_KLEN(p)); + SETERRARG (awk, QSE_AWK_EFNNONE, + *(qse_size_t*)QSE_MAP_VPTR(p), + QSE_MAP_KPTR(p), + QSE_MAP_KLEN(p)); EXIT_PARSE(-1); } - p = ase_map_getnextpair (awk->parse.afns, p, &buckno); + p = qse_map_getnextpair (awk->parse.afns, p, &buckno); } } } - ASE_ASSERT (awk->tree.nglobals == awk->parse.globals.size); + QSE_ASSERT (awk->tree.nglobals == awk->parse.globals.size); - if (awk->src.ios.out != ASE_NULL) + if (awk->src.ios.out != QSE_NULL) { if (deparse (awk) == -1) EXIT_PARSE(-1); } @@ -579,24 +579,24 @@ static int parse (ase_awk_t* awk) exit_parse: if (n == 0) CLRERR (awk); if (awk->src.ios.in ( - ASE_AWK_IO_CLOSE, awk->src.ios.data, ASE_NULL, 0) != 0) + QSE_AWK_IO_CLOSE, awk->src.ios.data, QSE_NULL, 0) != 0) { if (n == 0) { /* this is to keep the earlier error above * that might be more critical than this */ - if (ISNOERR(awk)) SETERR (awk, ASE_AWK_ESINCL); + if (ISNOERR(awk)) SETERR (awk, QSE_AWK_ESINCL); n = -1; } } - if (n == -1) ase_awk_clear (awk); + if (n == -1) qse_awk_clear (awk); else awk->tree.ok = 1; return n; } -static ase_awk_t* parse_progunit (ase_awk_t* awk) +static qse_awk_t* parse_progunit (qse_awk_t* awk) { /* global xxx, xxxx; @@ -606,116 +606,116 @@ static ase_awk_t* parse_progunit (ase_awk_t* awk) function name (parameter-list) { statement } */ - ASE_ASSERT (awk->parse.depth.cur.loop == 0); + QSE_ASSERT (awk->parse.depth.cur.loop == 0); - if ((awk->option & ASE_AWK_EXPLICIT) && MATCH(awk,TOKEN_GLOBAL)) + if ((awk->option & QSE_AWK_EXPLICIT) && MATCH(awk,TOKEN_GLOBAL)) { - ase_size_t nglobals; + qse_size_t nglobals; awk->parse.id.block = PARSE_GLOBAL; - if (get_token(awk) == -1) return ASE_NULL; + if (get_token(awk) == -1) return QSE_NULL; - ASE_ASSERT (awk->tree.nglobals == ASE_LDA_SIZE(&awk->parse.globals)); + QSE_ASSERT (awk->tree.nglobals == QSE_LDA_SIZE(&awk->parse.globals)); nglobals = awk->tree.nglobals; - if (collect_globals (awk) == ASE_NULL) + if (collect_globals (awk) == QSE_NULL) { - ase_lda_delete ( + qse_lda_delete ( awk->parse.globals, nglobals, - ASE_LDA_SIZE(awk->parse.globals) - nglobals); + QSE_LDA_SIZE(awk->parse.globals) - nglobals); awk->tree.nglobals = nglobals; - return ASE_NULL; + return QSE_NULL; } } else if (MATCH(awk,TOKEN_FUNCTION)) { awk->parse.id.block = PARSE_FUNCTION; - if (parse_function (awk) == ASE_NULL) return ASE_NULL; + if (parse_function (awk) == QSE_NULL) return QSE_NULL; } else if (MATCH(awk,TOKEN_BEGIN)) { - if ((awk->option & ASE_AWK_PABLOCK) == 0) + if ((awk->option & QSE_AWK_PABLOCK) == 0) { - SETERRTOK (awk, ASE_AWK_EFUNC); - return ASE_NULL; + SETERRTOK (awk, QSE_AWK_EFUNC); + return QSE_NULL; } /* - if (awk->tree.begin != ASE_NULL) + if (awk->tree.begin != QSE_NULL) { - SETERRLIN (awk, ASE_AWK_EDUPBEG, awk->token.prev.line); - return ASE_NULL; + SETERRLIN (awk, QSE_AWK_EDUPBEG, awk->token.prev.line); + return QSE_NULL; } */ awk->parse.id.block = PARSE_BEGIN; - if (get_token(awk) == -1) return ASE_NULL; + if (get_token(awk) == -1) return QSE_NULL; if (MATCH(awk,TOKEN_NEWLINE) || MATCH(awk,TOKEN_EOF)) { - /* when ASE_AWK_NEWLINE is set, + /* when QSE_AWK_NEWLINE is set, * BEGIN and { should be located on the same line */ - SETERRLIN (awk, ASE_AWK_EBLKBEG, awk->token.prev.line); - return ASE_NULL; + SETERRLIN (awk, QSE_AWK_EBLKBEG, awk->token.prev.line); + return QSE_NULL; } if (!MATCH(awk,TOKEN_LBRACE)) { - SETERRTOK (awk, ASE_AWK_ELBRACE); - return ASE_NULL; + SETERRTOK (awk, QSE_AWK_ELBRACE); + return QSE_NULL; } awk->parse.id.block = PARSE_BEGIN_BLOCK; - if (parse_begin (awk) == ASE_NULL) return ASE_NULL; + if (parse_begin (awk) == QSE_NULL) return QSE_NULL; } else if (MATCH(awk,TOKEN_END)) { - if ((awk->option & ASE_AWK_PABLOCK) == 0) + if ((awk->option & QSE_AWK_PABLOCK) == 0) { - SETERRTOK (awk, ASE_AWK_EFUNC); - return ASE_NULL; + SETERRTOK (awk, QSE_AWK_EFUNC); + return QSE_NULL; } /* - if (awk->tree.end != ASE_NULL) + if (awk->tree.end != QSE_NULL) { - SETERRLIN (awk, ASE_AWK_EDUPEND, awk->token.prev.line); - return ASE_NULL; + SETERRLIN (awk, QSE_AWK_EDUPEND, awk->token.prev.line); + return QSE_NULL; } */ awk->parse.id.block = PARSE_END; - if (get_token(awk) == -1) return ASE_NULL; + if (get_token(awk) == -1) return QSE_NULL; if (MATCH(awk,TOKEN_NEWLINE) || MATCH(awk,TOKEN_EOF)) { - /* when ASE_AWK_NEWLINE is set, + /* when QSE_AWK_NEWLINE is set, * END and { should be located on the same line */ - SETERRLIN (awk, ASE_AWK_EBLKEND, awk->token.prev.line); - return ASE_NULL; + SETERRLIN (awk, QSE_AWK_EBLKEND, awk->token.prev.line); + return QSE_NULL; } if (!MATCH(awk,TOKEN_LBRACE)) { - SETERRTOK (awk, ASE_AWK_ELBRACE); - return ASE_NULL; + SETERRTOK (awk, QSE_AWK_ELBRACE); + return QSE_NULL; } awk->parse.id.block = PARSE_END_BLOCK; - if (parse_end (awk) == ASE_NULL) return ASE_NULL; + if (parse_end (awk) == QSE_NULL) return QSE_NULL; } else if (MATCH(awk,TOKEN_LBRACE)) { /* patternless block */ - if ((awk->option & ASE_AWK_PABLOCK) == 0) + if ((awk->option & QSE_AWK_PABLOCK) == 0) { - SETERRTOK (awk, ASE_AWK_EFUNC); - return ASE_NULL; + SETERRTOK (awk, QSE_AWK_EFUNC); + return QSE_NULL; } awk->parse.id.block = PARSE_ACTION_BLOCK; if (parse_pattern_block ( - awk, ASE_NULL, ASE_FALSE) == ASE_NULL) return ASE_NULL; + awk, QSE_NULL, QSE_FALSE) == QSE_NULL) return QSE_NULL; } else { @@ -728,48 +728,48 @@ static ase_awk_t* parse_progunit (ase_awk_t* awk) (pattern) pattern, pattern */ - ase_awk_nde_t* ptn; + qse_awk_nde_t* ptn; - if ((awk->option & ASE_AWK_PABLOCK) == 0) + if ((awk->option & QSE_AWK_PABLOCK) == 0) { - SETERRTOK (awk, ASE_AWK_EFUNC); - return ASE_NULL; + SETERRTOK (awk, QSE_AWK_EFUNC); + return QSE_NULL; } awk->parse.id.block = PARSE_PATTERN; ptn = parse_expression (awk, awk->token.line); - if (ptn == ASE_NULL) return ASE_NULL; + if (ptn == QSE_NULL) return QSE_NULL; - ASE_ASSERT (ptn->next == ASE_NULL); + QSE_ASSERT (ptn->next == QSE_NULL); if (MATCH(awk,TOKEN_COMMA)) { if (get_token (awk) == -1) { - ase_awk_clrpt (awk, ptn); - return ASE_NULL; + qse_awk_clrpt (awk, ptn); + return QSE_NULL; } ptn->next = parse_expression (awk, awk->token.line); - if (ptn->next == ASE_NULL) + if (ptn->next == QSE_NULL) { - ase_awk_clrpt (awk, ptn); - return ASE_NULL; + qse_awk_clrpt (awk, ptn); + return QSE_NULL; } } if (MATCH(awk,TOKEN_NEWLINE) || MATCH(awk,TOKEN_EOF)) { /* blockless pattern */ - ase_bool_t newline = MATCH(awk,TOKEN_NEWLINE); - ase_size_t tline = awk->token.prev.line; + qse_bool_t newline = MATCH(awk,TOKEN_NEWLINE); + qse_size_t tline = awk->token.prev.line; awk->parse.id.block = PARSE_ACTION_BLOCK; - if (parse_pattern_block(awk,ptn,ASE_TRUE) == ASE_NULL) + if (parse_pattern_block(awk,ptn,QSE_TRUE) == QSE_NULL) { - ase_awk_clrpt (awk, ptn); - return ASE_NULL; + qse_awk_clrpt (awk, ptn); + return QSE_NULL; } if (newline) @@ -778,19 +778,19 @@ static ase_awk_t* parse_progunit (ase_awk_t* awk) { /* ptn has been added to the chain. * it doesn't have to be cleared here - * as ase_awk_clear does it */ - /*ase_awk_clrpt (awk, ptn);*/ - return ASE_NULL; + * as qse_awk_clear does it */ + /*qse_awk_clrpt (awk, ptn);*/ + return QSE_NULL; } } - if ((awk->option & ASE_AWK_EXTIO) != ASE_AWK_EXTIO) + if ((awk->option & QSE_AWK_EXTIO) != QSE_AWK_EXTIO) { - /* blockless pattern requires ASE_AWK_EXTIO + /* blockless pattern requires QSE_AWK_EXTIO * to be ON because the implicit block is * "print $0" */ - SETERRLIN (awk, ASE_AWK_ENOSUP, tline); - return ASE_NULL; + SETERRLIN (awk, QSE_AWK_ENOSUP, tline); + return QSE_NULL; } } else @@ -798,17 +798,17 @@ static ase_awk_t* parse_progunit (ase_awk_t* awk) /* parse the action block */ if (!MATCH(awk,TOKEN_LBRACE)) { - ase_awk_clrpt (awk, ptn); - SETERRTOK (awk, ASE_AWK_ELBRACE); - return ASE_NULL; + qse_awk_clrpt (awk, ptn); + SETERRTOK (awk, QSE_AWK_ELBRACE); + return QSE_NULL; } awk->parse.id.block = PARSE_ACTION_BLOCK; if (parse_pattern_block ( - awk, ptn, ASE_FALSE) == ASE_NULL) + awk, ptn, QSE_FALSE) == QSE_NULL) { - ase_awk_clrpt (awk, ptn); - return ASE_NULL; + qse_awk_clrpt (awk, ptn); + return QSE_NULL; } } } @@ -816,91 +816,91 @@ static ase_awk_t* parse_progunit (ase_awk_t* awk) return awk; } -static ase_awk_nde_t* parse_function (ase_awk_t* awk) +static qse_awk_nde_t* parse_function (qse_awk_t* awk) { - ase_char_t* name; - ase_char_t* name_dup; - ase_size_t name_len; - ase_awk_nde_t* body; - ase_awk_afn_t* afn; - ase_size_t nargs, g; - ase_map_pair_t* pair; + qse_char_t* name; + qse_char_t* name_dup; + qse_size_t name_len; + qse_awk_nde_t* body; + qse_awk_afn_t* afn; + qse_size_t nargs, g; + qse_map_pair_t* pair; /* eat up the keyword 'function' and get the next token */ - ASE_ASSERT (MATCH(awk,TOKEN_FUNCTION)); - if (get_token(awk) == -1) return ASE_NULL; + QSE_ASSERT (MATCH(awk,TOKEN_FUNCTION)); + if (get_token(awk) == -1) return QSE_NULL; /* match a function name */ if (!MATCH(awk,TOKEN_IDENT)) { /* cannot find a valid identifier for a function name */ - SETERRTOK (awk, ASE_AWK_EFNNAME); - return ASE_NULL; + SETERRTOK (awk, QSE_AWK_EFNNAME); + return QSE_NULL; } - name = ASE_STR_PTR(awk->token.name); - name_len = ASE_STR_LEN(awk->token.name); + name = QSE_STR_PTR(awk->token.name); + name_len = QSE_STR_LEN(awk->token.name); /* check if it is a builtin function */ - if (ase_awk_getbfn (awk, name, name_len) != ASE_NULL) + if (qse_awk_getbfn (awk, name, name_len) != QSE_NULL) { - SETERRARG (awk, ASE_AWK_EBFNRED, awk->token.line, name, name_len); - return ASE_NULL; + SETERRARG (awk, QSE_AWK_EBFNRED, awk->token.line, name, name_len); + return QSE_NULL; } - if (ase_map_search (awk->tree.afns, name, name_len) != ASE_NULL) + if (qse_map_search (awk->tree.afns, name, name_len) != QSE_NULL) { /* the function is defined previously */ SETERRARG ( - awk, ASE_AWK_EAFNRED, awk->token.line, + awk, QSE_AWK_EAFNRED, awk->token.line, name, name_len); - return ASE_NULL; + return QSE_NULL; } /* check if it coincides to be a global variable name */ g = find_global (awk, name, name_len); - if (g != ASE_LDA_INVALID) + if (g != QSE_LDA_INVALID) { SETERRARG ( - awk, ASE_AWK_EGBLRED, awk->token.line, + awk, QSE_AWK_EGBLRED, awk->token.line, name, name_len); - return ASE_NULL; + return QSE_NULL; } /* clone the function name before it is overwritten */ - name_dup = ASE_AWK_STRXDUP (awk, name, name_len); - if (name_dup == ASE_NULL) + name_dup = QSE_AWK_STRXDUP (awk, name, name_len); + if (name_dup == QSE_NULL) { - SETERRLIN (awk, ASE_AWK_ENOMEM, awk->token.line); - return ASE_NULL; + SETERRLIN (awk, QSE_AWK_ENOMEM, awk->token.line); + return QSE_NULL; } /* get the next token */ if (get_token(awk) == -1) { - ASE_AWK_FREE (awk, name_dup); - return ASE_NULL; + QSE_AWK_FREE (awk, name_dup); + return QSE_NULL; } /* match a left parenthesis */ if (!MATCH(awk,TOKEN_LPAREN)) { /* a function name is not followed by a left parenthesis */ - ASE_AWK_FREE (awk, name_dup); + QSE_AWK_FREE (awk, name_dup); - SETERRTOK (awk, ASE_AWK_ELPAREN); - return ASE_NULL; + SETERRTOK (awk, QSE_AWK_ELPAREN); + return QSE_NULL; } /* get the next token */ if (get_token(awk) == -1) { - ASE_AWK_FREE (awk, name_dup); - return ASE_NULL; + QSE_AWK_FREE (awk, name_dup); + return QSE_NULL; } /* make sure that parameter table is empty */ - ASE_ASSERT (ASE_LDA_SIZE(&awk->parse.params) == 0); + QSE_ASSERT (QSE_LDA_SIZE(&awk->parse.params) == 0); /* read parameter list */ if (MATCH(awk,TOKEN_RPAREN)) @@ -908,27 +908,27 @@ static ase_awk_nde_t* parse_function (ase_awk_t* awk) /* no function parameter found. get the next token */ if (get_token(awk) == -1) { - ASE_AWK_FREE (awk, name_dup); - return ASE_NULL; + QSE_AWK_FREE (awk, name_dup); + return QSE_NULL; } } else { while (1) { - ase_char_t* param; - ase_size_t param_len; + qse_char_t* param; + qse_size_t param_len; if (!MATCH(awk,TOKEN_IDENT)) { - ASE_AWK_FREE (awk, name_dup); - ase_lda_clear (awk->parse.params); - SETERRTOK (awk, ASE_AWK_EBADPAR); - return ASE_NULL; + QSE_AWK_FREE (awk, name_dup); + qse_lda_clear (awk->parse.params); + SETERRTOK (awk, QSE_AWK_EBADPAR); + return QSE_NULL; } - param = ASE_STR_PTR(awk->token.name); - param_len = ASE_STR_LEN(awk->token.name); + param = QSE_STR_PTR(awk->token.name); + param_len = QSE_STR_LEN(awk->token.name); /* NOTE: the following is not a conflict. * so the parameter is not checked against @@ -939,103 +939,103 @@ static ase_awk_nde_t* parse_function (ase_awk_t* awk) */ /* check if a parameter conflicts with other parameters */ - if (ase_lda_search (awk->parse.params, - 0, param, param_len) != ASE_LDA_INVALID) + if (qse_lda_search (awk->parse.params, + 0, param, param_len) != QSE_LDA_INVALID) { - ASE_AWK_FREE (awk, name_dup); - ase_lda_clear (awk->parse.params); + QSE_AWK_FREE (awk, name_dup); + qse_lda_clear (awk->parse.params); SETERRARG ( - awk, ASE_AWK_EDUPPAR, awk->token.line, + awk, QSE_AWK_EDUPPAR, awk->token.line, param, param_len); - return ASE_NULL; + return QSE_NULL; } /* push the parameter to the parameter list */ - if (ASE_LDA_SIZE(awk->parse.params) >= ASE_AWK_MAX_PARAMS) + if (QSE_LDA_SIZE(awk->parse.params) >= QSE_AWK_MAX_PARAMS) { - ASE_AWK_FREE (awk, name_dup); - ase_lda_clear (awk->parse.params); + QSE_AWK_FREE (awk, name_dup); + qse_lda_clear (awk->parse.params); - SETERRTOK (awk, ASE_AWK_EPARTM); - return ASE_NULL; + SETERRTOK (awk, QSE_AWK_EPARTM); + return QSE_NULL; } - if (ase_lda_insert ( + if (qse_lda_insert ( awk->parse.params, - ASE_LDA_SIZE(awk->parse.params), - param, param_len) == ASE_LDA_INVALID) + QSE_LDA_SIZE(awk->parse.params), + param, param_len) == QSE_LDA_INVALID) { - ASE_AWK_FREE (awk, name_dup); - ase_lda_clear (awk->parse.params); + QSE_AWK_FREE (awk, name_dup); + qse_lda_clear (awk->parse.params); - SETERRLIN (awk, ASE_AWK_ENOMEM, awk->token.line); - return ASE_NULL; + SETERRLIN (awk, QSE_AWK_ENOMEM, awk->token.line); + return QSE_NULL; } if (get_token (awk) == -1) { - ASE_AWK_FREE (awk, name_dup); - ase_lda_clear (awk->parse.params); - return ASE_NULL; + QSE_AWK_FREE (awk, name_dup); + qse_lda_clear (awk->parse.params); + return QSE_NULL; } if (MATCH(awk,TOKEN_RPAREN)) break; if (!MATCH(awk,TOKEN_COMMA)) { - ASE_AWK_FREE (awk, name_dup); - ase_lda_clear (awk->parse.params); + QSE_AWK_FREE (awk, name_dup); + qse_lda_clear (awk->parse.params); - SETERRTOK (awk, ASE_AWK_ECOMMA); - return ASE_NULL; + SETERRTOK (awk, QSE_AWK_ECOMMA); + return QSE_NULL; } if (get_token(awk) == -1) { - ASE_AWK_FREE (awk, name_dup); - ase_lda_clear (awk->parse.params); - return ASE_NULL; + QSE_AWK_FREE (awk, name_dup); + qse_lda_clear (awk->parse.params); + return QSE_NULL; } } if (get_token(awk) == -1) { - ASE_AWK_FREE (awk, name_dup); - ase_lda_clear (awk->parse.params); - return ASE_NULL; + QSE_AWK_FREE (awk, name_dup); + qse_lda_clear (awk->parse.params); + return QSE_NULL; } } /* function body can be placed on a different line * from a function name and the parameters even if - * ASE_AWK_NEWLINE is set. note TOKEN_NEWLINE is + * QSE_AWK_NEWLINE is set. note TOKEN_NEWLINE is * available only when the option is set. */ while (MATCH(awk,TOKEN_NEWLINE)) { if (get_token(awk) == -1) { - ASE_AWK_FREE (awk, name_dup); - ase_lda_clear (awk->parse.params); - return ASE_NULL; + QSE_AWK_FREE (awk, name_dup); + qse_lda_clear (awk->parse.params); + return QSE_NULL; } } /* check if the function body starts with a left brace */ if (!MATCH(awk,TOKEN_LBRACE)) { - ASE_AWK_FREE (awk, name_dup); - ase_lda_clear (awk->parse.params); + QSE_AWK_FREE (awk, name_dup); + qse_lda_clear (awk->parse.params); - SETERRTOK (awk, ASE_AWK_ELBRACE); - return ASE_NULL; + SETERRTOK (awk, QSE_AWK_ELBRACE); + return QSE_NULL; } if (get_token(awk) == -1) { - ASE_AWK_FREE (awk, name_dup); - ase_lda_clear (awk->parse.params); - return ASE_NULL; + QSE_AWK_FREE (awk, name_dup); + qse_lda_clear (awk->parse.params); + return QSE_NULL; } /* remember the current function name so that the body parser @@ -1044,76 +1044,76 @@ static ase_awk_nde_t* parse_function (ase_awk_t* awk) awk->tree.cur_afn.len = name_len; /* actual function body */ - body = awk->parse.parse_block (awk, awk->token.prev.line, ASE_TRUE); + body = awk->parse.parse_block (awk, awk->token.prev.line, QSE_TRUE); /* clear the current function name remembered */ - awk->tree.cur_afn.ptr = ASE_NULL; + awk->tree.cur_afn.ptr = QSE_NULL; awk->tree.cur_afn.len = 0; - if (body == ASE_NULL) + if (body == QSE_NULL) { - ASE_AWK_FREE (awk, name_dup); - ase_lda_clear (awk->parse.params); - return ASE_NULL; + QSE_AWK_FREE (awk, name_dup); + qse_lda_clear (awk->parse.params); + return QSE_NULL; } /* TODO: study furthur if the parameter names should be saved * for some reasons - might be needed for deparsing output */ - nargs = ASE_LDA_SIZE(awk->parse.params); + nargs = QSE_LDA_SIZE(awk->parse.params); /* parameter names are not required anymore. clear them */ - ase_lda_clear (awk->parse.params); + qse_lda_clear (awk->parse.params); - afn = (ase_awk_afn_t*) ASE_AWK_ALLOC (awk, ASE_SIZEOF(ase_awk_afn_t)); - if (afn == ASE_NULL) + afn = (qse_awk_afn_t*) QSE_AWK_ALLOC (awk, QSE_SIZEOF(qse_awk_afn_t)); + if (afn == QSE_NULL) { - ASE_AWK_FREE (awk, name_dup); - ase_awk_clrpt (awk, body); + QSE_AWK_FREE (awk, name_dup); + qse_awk_clrpt (awk, body); - SETERRLIN (awk, ASE_AWK_ENOMEM, awk->token.line); - return ASE_NULL; + SETERRLIN (awk, QSE_AWK_ENOMEM, awk->token.line); + return QSE_NULL; } - afn->name.ptr = ASE_NULL; /* function name is set below */ + afn->name.ptr = QSE_NULL; /* function name is set below */ afn->name.len = 0; afn->nargs = nargs; afn->body = body; - pair = ase_map_insert (awk->tree.afns, name_dup, name_len, afn, 0); - if (pair == ASE_NULL) + pair = qse_map_insert (awk->tree.afns, name_dup, name_len, afn, 0); + if (pair == QSE_NULL) { - /* if ase_map_insert() fails for other reasons than memory + /* if qse_map_insert() fails for other reasons than memory * shortage, there should be implementaion errors as duplicate * functions are detected earlier in this function */ - ASE_AWK_FREE (awk, name_dup); - ase_awk_clrpt (awk, body); - ASE_AWK_FREE (awk, afn); + QSE_AWK_FREE (awk, name_dup); + qse_awk_clrpt (awk, body); + QSE_AWK_FREE (awk, afn); - SETERRLIN (awk, ASE_AWK_ENOMEM, awk->token.line); - return ASE_NULL; + SETERRLIN (awk, QSE_AWK_ENOMEM, awk->token.line); + return QSE_NULL; } /* do some trick to save a string. make it back-point at the key part * of the pair */ - afn->name.ptr = ASE_MAP_KPTR(pair); - afn->name.len = ASE_MAP_KLEN(pair); - ASE_AWK_FREE (awk, name_dup); + afn->name.ptr = QSE_MAP_KPTR(pair); + afn->name.len = QSE_MAP_KLEN(pair); + QSE_AWK_FREE (awk, name_dup); /* remove an undefined function call entry from the parse.afn table */ - ase_map_delete (awk->parse.afns, afn->name.ptr, name_len); + qse_map_delete (awk->parse.afns, afn->name.ptr, name_len); return body; } -static ase_awk_nde_t* parse_begin (ase_awk_t* awk) +static qse_awk_nde_t* parse_begin (qse_awk_t* awk) { - ase_awk_nde_t* nde; + qse_awk_nde_t* nde; - ASE_ASSERT (MATCH(awk,TOKEN_LBRACE)); + QSE_ASSERT (MATCH(awk,TOKEN_LBRACE)); - if (get_token(awk) == -1) return ASE_NULL; - nde = awk->parse.parse_block (awk, awk->token.prev.line, ASE_TRUE); - if (nde == ASE_NULL) return ASE_NULL; + if (get_token(awk) == -1) return QSE_NULL; + nde = awk->parse.parse_block (awk, awk->token.prev.line, QSE_TRUE); + if (nde == QSE_NULL) return QSE_NULL; - if (awk->tree.begin == ASE_NULL) + if (awk->tree.begin == QSE_NULL) { awk->tree.begin = nde; awk->tree.begin_tail = nde; @@ -1127,17 +1127,17 @@ static ase_awk_nde_t* parse_begin (ase_awk_t* awk) return nde; } -static ase_awk_nde_t* parse_end (ase_awk_t* awk) +static qse_awk_nde_t* parse_end (qse_awk_t* awk) { - ase_awk_nde_t* nde; + qse_awk_nde_t* nde; - ASE_ASSERT (MATCH(awk,TOKEN_LBRACE)); + QSE_ASSERT (MATCH(awk,TOKEN_LBRACE)); - if (get_token(awk) == -1) return ASE_NULL; - nde = awk->parse.parse_block (awk, awk->token.prev.line, ASE_TRUE); - if (nde == ASE_NULL) return ASE_NULL; + if (get_token(awk) == -1) return QSE_NULL; + nde = awk->parse.parse_block (awk, awk->token.prev.line, QSE_TRUE); + if (nde == QSE_NULL) return QSE_NULL; - if (awk->tree.end == ASE_NULL) + if (awk->tree.end == QSE_NULL) { awk->tree.end = nde; awk->tree.end_tail = nde; @@ -1150,37 +1150,37 @@ static ase_awk_nde_t* parse_end (ase_awk_t* awk) return nde; } -static ase_awk_chain_t* parse_pattern_block ( - ase_awk_t* awk, ase_awk_nde_t* ptn, ase_bool_t blockless) +static qse_awk_chain_t* parse_pattern_block ( + qse_awk_t* awk, qse_awk_nde_t* ptn, qse_bool_t blockless) { - ase_awk_nde_t* nde; - ase_awk_chain_t* chain; - ase_size_t line = awk->token.line; + qse_awk_nde_t* nde; + qse_awk_chain_t* chain; + qse_size_t line = awk->token.line; - if (blockless) nde = ASE_NULL; + if (blockless) nde = QSE_NULL; else { - ASE_ASSERT (MATCH(awk,TOKEN_LBRACE)); - if (get_token(awk) == -1) return ASE_NULL; - nde = awk->parse.parse_block (awk, line, ASE_TRUE); - if (nde == ASE_NULL) return ASE_NULL; + QSE_ASSERT (MATCH(awk,TOKEN_LBRACE)); + if (get_token(awk) == -1) return QSE_NULL; + nde = awk->parse.parse_block (awk, line, QSE_TRUE); + if (nde == QSE_NULL) return QSE_NULL; } - chain = (ase_awk_chain_t*) - ASE_AWK_ALLOC (awk, ASE_SIZEOF(ase_awk_chain_t)); - if (chain == ASE_NULL) + chain = (qse_awk_chain_t*) + QSE_AWK_ALLOC (awk, QSE_SIZEOF(qse_awk_chain_t)); + if (chain == QSE_NULL) { - ase_awk_clrpt (awk, nde); + qse_awk_clrpt (awk, nde); - SETERRLIN (awk, ASE_AWK_ENOMEM, line); - return ASE_NULL; + SETERRLIN (awk, QSE_AWK_ENOMEM, line); + return QSE_NULL; } chain->pattern = ptn; chain->action = nde; - chain->next = ASE_NULL; + chain->next = QSE_NULL; - if (awk->tree.chain == ASE_NULL) + if (awk->tree.chain == QSE_NULL) { awk->tree.chain = chain; awk->tree.chain_tail = chain; @@ -1196,18 +1196,18 @@ static ase_awk_chain_t* parse_pattern_block ( return chain; } -static ase_awk_nde_t* parse_block ( - ase_awk_t* awk, ase_size_t line, ase_bool_t istop) +static qse_awk_nde_t* parse_block ( + qse_awk_t* awk, qse_size_t line, qse_bool_t istop) { - ase_awk_nde_t* head, * curr, * nde; - ase_awk_nde_blk_t* block; - ase_size_t nlocals, nlocals_max, tmp; + qse_awk_nde_t* head, * curr, * nde; + qse_awk_nde_blk_t* block; + qse_size_t nlocals, nlocals_max, tmp; - nlocals = ASE_LDA_SIZE(awk->parse.locals); + nlocals = QSE_LDA_SIZE(awk->parse.locals); nlocals_max = awk->parse.nlocals_max; /* local variable declarations */ - if (awk->option & ASE_AWK_EXPLICIT) + if (awk->option & QSE_AWK_EXPLICIT) { while (1) { @@ -1215,43 +1215,43 @@ static ase_awk_nde_t* parse_block ( if (get_token(awk) == -1) { - ase_lda_delete ( + qse_lda_delete ( awk->parse.locals, nlocals, - ASE_LDA_SIZE(awk->parse.locals)-nlocals); - return ASE_NULL; + QSE_LDA_SIZE(awk->parse.locals)-nlocals); + return QSE_NULL; } - if (collect_locals (awk, nlocals, istop) == ASE_NULL) + if (collect_locals (awk, nlocals, istop) == QSE_NULL) { - ase_lda_delete ( + qse_lda_delete ( awk->parse.locals, nlocals, - ASE_LDA_SIZE(awk->parse.locals)-nlocals); - return ASE_NULL; + QSE_LDA_SIZE(awk->parse.locals)-nlocals); + return QSE_NULL; } } } /* block body */ - head = ASE_NULL; curr = ASE_NULL; + head = QSE_NULL; curr = QSE_NULL; while (1) { /* skip new lines within a block */ while (MATCH(awk,TOKEN_NEWLINE)) { - if (get_token(awk) == -1) return ASE_NULL; + if (get_token(awk) == -1) return QSE_NULL; } /* if EOF is met before the right brace, this is an error */ if (MATCH(awk,TOKEN_EOF)) { - ase_lda_delete ( + qse_lda_delete ( awk->parse.locals, nlocals, - ASE_LDA_SIZE(awk->parse.locals) - nlocals); - if (head != ASE_NULL) ase_awk_clrpt (awk, head); + QSE_LDA_SIZE(awk->parse.locals) - nlocals); + if (head != QSE_NULL) qse_awk_clrpt (awk, head); - SETERRLIN (awk, ASE_AWK_EENDSRC, awk->token.prev.line); - return ASE_NULL; + SETERRLIN (awk, QSE_AWK_EENDSRC, awk->token.prev.line); + return QSE_NULL; } /* end the block when the right brace is met */ @@ -1259,11 +1259,11 @@ static ase_awk_nde_t* parse_block ( { if (get_token(awk) == -1) { - ase_lda_delete ( + qse_lda_delete ( awk->parse.locals, nlocals, - ASE_LDA_SIZE(awk->parse.locals)-nlocals); - if (head != ASE_NULL) ase_awk_clrpt (awk, head); - return ASE_NULL; + QSE_LDA_SIZE(awk->parse.locals)-nlocals); + if (head != QSE_NULL) qse_awk_clrpt (awk, head); + return QSE_NULL; } break; @@ -1271,59 +1271,59 @@ static ase_awk_nde_t* parse_block ( /* parse an actual statement in a block */ nde = parse_statement (awk, awk->token.line); - if (nde == ASE_NULL) + if (nde == QSE_NULL) { - ase_lda_delete ( + qse_lda_delete ( awk->parse.locals, nlocals, - ASE_LDA_SIZE(awk->parse.locals)-nlocals); - if (head != ASE_NULL) ase_awk_clrpt (awk, head); - return ASE_NULL; + QSE_LDA_SIZE(awk->parse.locals)-nlocals); + if (head != QSE_NULL) qse_awk_clrpt (awk, head); + return QSE_NULL; } /* remove unnecessary statements such as adjacent * null statements */ - if (nde->type == ASE_AWK_NDE_NULL) + if (nde->type == QSE_AWK_NDE_NULL) { - ase_awk_clrpt (awk, nde); + qse_awk_clrpt (awk, nde); continue; } - if (nde->type == ASE_AWK_NDE_BLK && - ((ase_awk_nde_blk_t*)nde)->body == ASE_NULL) + if (nde->type == QSE_AWK_NDE_BLK && + ((qse_awk_nde_blk_t*)nde)->body == QSE_NULL) { - ase_awk_clrpt (awk, nde); + qse_awk_clrpt (awk, nde); continue; } - if (curr == ASE_NULL) head = nde; + if (curr == QSE_NULL) head = nde; else curr->next = nde; curr = nde; } - block = (ase_awk_nde_blk_t*) - ASE_AWK_ALLOC (awk, ASE_SIZEOF(ase_awk_nde_blk_t)); - if (block == ASE_NULL) + block = (qse_awk_nde_blk_t*) + QSE_AWK_ALLOC (awk, QSE_SIZEOF(qse_awk_nde_blk_t)); + if (block == QSE_NULL) { - ase_lda_delete ( + qse_lda_delete ( awk->parse.locals, nlocals, - ASE_LDA_SIZE(awk->parse.locals)-nlocals); - ase_awk_clrpt (awk, head); + QSE_LDA_SIZE(awk->parse.locals)-nlocals); + qse_awk_clrpt (awk, head); - SETERRLIN (awk, ASE_AWK_ENOMEM, line); - return ASE_NULL; + SETERRLIN (awk, QSE_AWK_ENOMEM, line); + return QSE_NULL; } - tmp = ASE_LDA_SIZE(awk->parse.locals); + tmp = QSE_LDA_SIZE(awk->parse.locals); if (tmp > awk->parse.nlocals_max) awk->parse.nlocals_max = tmp; /* remove all locals to move it up to the top level */ - ase_lda_delete (awk->parse.locals, nlocals, tmp - nlocals); + qse_lda_delete (awk->parse.locals, nlocals, tmp - nlocals); /* adjust the number of locals for a block without any statements */ - /* if (head == ASE_NULL) tmp = 0; */ + /* if (head == QSE_NULL) tmp = 0; */ - block->type = ASE_AWK_NDE_BLK; + block->type = QSE_AWK_NDE_BLK; block->line = line; - block->next = ASE_NULL; + block->next = QSE_NULL; block->body = head; /* TODO: not only local variables but also nested blocks, @@ -1342,20 +1342,20 @@ static ase_awk_nde_t* parse_block ( block->nlocals = 0; } - return (ase_awk_nde_t*)block; + return (qse_awk_nde_t*)block; } -static ase_awk_nde_t* parse_block_dc ( - ase_awk_t* awk, ase_size_t line, ase_bool_t istop) +static qse_awk_nde_t* parse_block_dc ( + qse_awk_t* awk, qse_size_t line, qse_bool_t istop) { - ase_awk_nde_t* nde; + qse_awk_nde_t* nde; - ASE_ASSERT (awk->parse.depth.max.block > 0); + QSE_ASSERT (awk->parse.depth.max.block > 0); if (awk->parse.depth.cur.block >= awk->parse.depth.max.block) { - SETERRLIN (awk, ASE_AWK_EBLKNST, awk->token.prev.line); - return ASE_NULL; + SETERRLIN (awk, QSE_AWK_EBLKNST, awk->token.prev.line); + return QSE_NULL; } awk->parse.depth.cur.block++; @@ -1365,58 +1365,58 @@ static ase_awk_nde_t* parse_block_dc ( return nde; } -int ase_awk_initglobals (ase_awk_t* awk) +int qse_awk_initglobals (qse_awk_t* awk) { int id; - /* ase_awk_initglobals is not generic-purpose. call this from - * ase_awk_open only. */ - ASE_ASSERT (awk->tree.nbglobals == 0 && awk->tree.nglobals == 0); + /* qse_awk_initglobals is not generic-purpose. call this from + * qse_awk_open only. */ + QSE_ASSERT (awk->tree.nbglobals == 0 && awk->tree.nglobals == 0); awk->tree.nbglobals = 0; awk->tree.nglobals = 0; - for (id = ASE_AWK_MIN_GLOBAL_ID; id <= ASE_AWK_MAX_GLOBAL_ID; id++) + for (id = QSE_AWK_MIN_GLOBAL_ID; id <= QSE_AWK_MAX_GLOBAL_ID; id++) { - ase_size_t g; + qse_size_t g; - g = ase_lda_insert ( + g = qse_lda_insert ( awk->parse.globals, - ASE_LDA_SIZE(awk->parse.globals), - (ase_char_t*)gtab[id].name, + QSE_LDA_SIZE(awk->parse.globals), + (qse_char_t*)gtab[id].name, gtab[id].name_len); - if (g == ASE_LDA_INVALID) return -1; + if (g == QSE_LDA_INVALID) return -1; - ASE_ASSERT ((int)g == id); + QSE_ASSERT ((int)g == id); awk->tree.nbglobals++; awk->tree.nglobals++; } - ASE_ASSERT (awk->tree.nbglobals == - ASE_AWK_MAX_GLOBAL_ID-ASE_AWK_MIN_GLOBAL_ID+1); + QSE_ASSERT (awk->tree.nbglobals == + QSE_AWK_MAX_GLOBAL_ID-QSE_AWK_MIN_GLOBAL_ID+1); return 0; } -static void adjust_static_globals (ase_awk_t* awk) +static void adjust_static_globals (qse_awk_t* awk) { int id; - ASE_ASSERT (awk->tree.nbglobals >= - ASE_AWK_MAX_GLOBAL_ID - ASE_AWK_MAX_GLOBAL_ID + 1); + QSE_ASSERT (awk->tree.nbglobals >= + QSE_AWK_MAX_GLOBAL_ID - QSE_AWK_MAX_GLOBAL_ID + 1); - for (id = ASE_AWK_MIN_GLOBAL_ID; id <= ASE_AWK_MAX_GLOBAL_ID; id++) + for (id = QSE_AWK_MIN_GLOBAL_ID; id <= QSE_AWK_MAX_GLOBAL_ID; id++) { if (gtab[id].valid != 0 && (awk->option & gtab[id].valid) != gtab[id].valid) { /*awk->parse.globals.buf[id].name.len = 0;*/ - ASE_LDA_DLEN(awk->parse.globals,id) = 0; + QSE_LDA_DLEN(awk->parse.globals,id) = 0; } else { /*awk->parse.globals.buf[id].name.len = gtab[id].name_len;*/ - ASE_LDA_DLEN(awk->parse.globals,id) = gtab[id].name_len; + QSE_LDA_DLEN(awk->parse.globals,id) = gtab[id].name_len; } } } @@ -1425,109 +1425,109 @@ typedef struct check_global_t check_global_t; struct check_global_t { - ase_cstr_t name; - ase_size_t index; - ase_lda_walk_t walk; + qse_cstr_t name; + qse_size_t index; + qse_lda_walk_t walk; }; -static ase_lda_walk_t check_global (ase_lda_t* lda, ase_size_t index, void* arg) +static qse_lda_walk_t check_global (qse_lda_t* lda, qse_size_t index, void* arg) { - ase_cstr_t tmp; - ase_awk_t* awk = *(ase_awk_t**)ASE_LDA_XTN(lda); + qse_cstr_t tmp; + qse_awk_t* awk = *(qse_awk_t**)QSE_LDA_XTN(lda); check_global_t* cg = (check_global_t*)arg; - tmp.ptr = ASE_LDA_DPTR(lda,index); - tmp.len = ASE_LDA_DLEN(lda,index); + tmp.ptr = QSE_LDA_DPTR(lda,index); + tmp.len = QSE_LDA_DLEN(lda,index); if (index < awk->tree.nbglobals) { - ase_map_pair_t* pair; + qse_map_pair_t* pair; - pair = ase_map_search (awk->wtab, tmp.ptr, tmp.len); - if (pair != ASE_NULL) + pair = qse_map_search (awk->wtab, tmp.ptr, tmp.len); + if (pair != QSE_NULL) { - tmp.ptr = ((ase_cstr_t*)(pair->vptr))->ptr; - tmp.len = ((ase_cstr_t*)(pair->vptr))->len; + tmp.ptr = ((qse_cstr_t*)(pair->vptr))->ptr; + tmp.len = ((qse_cstr_t*)(pair->vptr))->len; } } - if (ase_strxncmp(tmp.ptr, tmp.len, cg->name.ptr, cg->name.len) == 0) + if (qse_strxncmp(tmp.ptr, tmp.len, cg->name.ptr, cg->name.len) == 0) { cg->index = index; - return ASE_LDA_WALK_STOP; + return QSE_LDA_WALK_STOP; } return cg->walk; } -static ase_size_t get_global ( - ase_awk_t* awk, const ase_char_t* name, ase_size_t len) +static qse_size_t get_global ( + qse_awk_t* awk, const qse_char_t* name, qse_size_t len) { check_global_t cg; cg.name.ptr = name; cg.name.len = len; - cg.index = ASE_LDA_INVALID; - cg.walk = ASE_LDA_WALK_BACKWARD; + cg.index = QSE_LDA_INVALID; + cg.walk = QSE_LDA_WALK_BACKWARD; - /* return ase_lda_rsearch ( - awk->parse.globals, ASE_LDA_SIZE(awk->parse.globals), + /* return qse_lda_rsearch ( + awk->parse.globals, QSE_LDA_SIZE(awk->parse.globals), name, len); */ - ase_lda_rwalk (awk->parse.globals, check_global, &cg); + qse_lda_rwalk (awk->parse.globals, check_global, &cg); return cg.index; } -static ase_size_t find_global ( - ase_awk_t* awk, const ase_char_t* name, ase_size_t len) +static qse_size_t find_global ( + qse_awk_t* awk, const qse_char_t* name, qse_size_t len) { check_global_t cg; cg.name.ptr = name; cg.name.len = len; - cg.index = ASE_LDA_INVALID; - cg.walk = ASE_LDA_WALK_FORWARD; + cg.index = QSE_LDA_INVALID; + cg.walk = QSE_LDA_WALK_FORWARD; - /* return ase_lda_search (awk->parse.globals, 0, name, len); */ + /* return qse_lda_search (awk->parse.globals, 0, name, len); */ - ase_lda_walk (awk->parse.globals, check_global, &cg); + qse_lda_walk (awk->parse.globals, check_global, &cg); return cg.index; } static int add_global ( - ase_awk_t* awk, const ase_char_t* name, ase_size_t len, - ase_size_t line, int disabled) + qse_awk_t* awk, const qse_char_t* name, qse_size_t len, + qse_size_t line, int disabled) { - ase_size_t nglobals; + qse_size_t nglobals; #if 0 - if (awk->option & ASE_AWK_UNIQUEFN) + if (awk->option & QSE_AWK_UNIQUEFN) { #endif /* check if it conflict with a builtin function name */ - if (ase_awk_getbfn (awk, name, len) != ASE_NULL) + if (qse_awk_getbfn (awk, name, len) != QSE_NULL) { SETERRARG ( - awk, ASE_AWK_EBFNRED, awk->token.line, + awk, QSE_AWK_EBFNRED, awk->token.line, name, len); return -1; } /* check if it conflict with a function name */ - if (ase_map_search (awk->tree.afns, name, len) != ASE_NULL) + if (qse_map_search (awk->tree.afns, name, len) != QSE_NULL) { SETERRARG ( - awk, ASE_AWK_EAFNRED, line, + awk, QSE_AWK_EAFNRED, line, name, len); return -1; } /* check if it conflict with a function name * caught in the function call table */ - if (ase_map_search (awk->parse.afns, name, len) != ASE_NULL) + if (qse_map_search (awk->parse.afns, name, len) != QSE_NULL) { SETERRARG ( - awk, ASE_AWK_EAFNRED, line, + awk, QSE_AWK_EAFNRED, line, name, len); return -1; } @@ -1536,55 +1536,55 @@ static int add_global ( #endif /* check if it conflicts with other global variable names */ - if (find_global (awk, name, len) != ASE_LDA_INVALID) + if (find_global (awk, name, len) != QSE_LDA_INVALID) { - SETERRARG (awk, ASE_AWK_EDUPGBL, line, name, len); + SETERRARG (awk, QSE_AWK_EDUPGBL, line, name, len); return -1; } - nglobals = ASE_LDA_SIZE (awk->parse.globals); - if (nglobals >= ASE_AWK_MAX_GLOBALS) + nglobals = QSE_LDA_SIZE (awk->parse.globals); + if (nglobals >= QSE_AWK_MAX_GLOBALS) { - SETERRLIN (awk, ASE_AWK_EGBLTM, line); + SETERRLIN (awk, QSE_AWK_EGBLTM, line); return -1; } - if (ase_lda_insert (awk->parse.globals, - ASE_LDA_SIZE(awk->parse.globals), - (ase_char_t*)name, len) == ASE_LDA_INVALID) + if (qse_lda_insert (awk->parse.globals, + QSE_LDA_SIZE(awk->parse.globals), + (qse_char_t*)name, len) == QSE_LDA_INVALID) { - SETERRLIN (awk, ASE_AWK_ENOMEM, line); + SETERRLIN (awk, QSE_AWK_ENOMEM, line); return -1; } - ASE_ASSERT (nglobals == ASE_LDA_SIZE(awk->parse.globals) - 1); + QSE_ASSERT (nglobals == QSE_LDA_SIZE(awk->parse.globals) - 1); /* the disabled item is inserted normally but * the name length is reset to zero. */ - if (disabled) ASE_LDA_DLEN(awk->parse.globals,nglobals) = 0; + if (disabled) QSE_LDA_DLEN(awk->parse.globals,nglobals) = 0; - awk->tree.nglobals = ASE_LDA_SIZE (awk->parse.globals); - ASE_ASSERT (nglobals == awk->tree.nglobals-1); + awk->tree.nglobals = QSE_LDA_SIZE (awk->parse.globals); + QSE_ASSERT (nglobals == awk->tree.nglobals-1); /* return the id which is the index to the global table. */ return (int)nglobals; } -int ase_awk_addglobal ( - ase_awk_t* awk, const ase_char_t* name, ase_size_t len) +int qse_awk_addglobal ( + qse_awk_t* awk, const qse_char_t* name, qse_size_t len) { int n; if (len <= 0) { - SETERR (awk, ASE_AWK_EINVAL); + SETERR (awk, QSE_AWK_EINVAL); return -1; } if (awk->tree.nglobals > awk->tree.nbglobals) { - /* this function is not allow after ase_awk_parse is called */ - SETERR (awk, ASE_AWK_ENOPER); + /* this function is not allow after qse_awk_parse is called */ + SETERR (awk, QSE_AWK_ENOPER); return -1; } n = add_global (awk, name, len, 0, 0); @@ -1596,138 +1596,138 @@ int ase_awk_addglobal ( return n; } -int ase_awk_delglobal ( - ase_awk_t* awk, const ase_char_t* name, ase_size_t len) +int qse_awk_delglobal ( + qse_awk_t* awk, const qse_char_t* name, qse_size_t len) { - ase_size_t n; + qse_size_t n; -#define ASE_AWK_NUM_STATIC_GLOBALS \ - (ASE_AWK_MAX_GLOBAL_ID-ASE_AWK_MIN_GLOBAL_ID+1) +#define QSE_AWK_NUM_STATIC_GLOBALS \ + (QSE_AWK_MAX_GLOBAL_ID-QSE_AWK_MIN_GLOBAL_ID+1) if (awk->tree.nglobals > awk->tree.nbglobals) { - /* this function is not allow after ase_awk_parse is called */ - SETERR (awk, ASE_AWK_ENOPER); + /* this function is not allow after qse_awk_parse is called */ + SETERR (awk, QSE_AWK_ENOPER); return -1; } - n = ase_lda_search (awk->parse.globals, - ASE_AWK_NUM_STATIC_GLOBALS, name, len); - if (n == ASE_LDA_INVALID) + n = qse_lda_search (awk->parse.globals, + QSE_AWK_NUM_STATIC_GLOBALS, name, len); + if (n == QSE_LDA_INVALID) { - SETERRARG (awk, ASE_AWK_ENOENT, 0, name, len); + SETERRARG (awk, QSE_AWK_ENOENT, 0, name, len); return -1; } /* invalidate the name if deletion is requested. * this approach does not delete the entry. - * if ase_awk_addglobal is called with the same name + * if qse_awk_addglobal is called with the same name * again, the entry will be appended again. * never call this funciton unless it is really required. */ /* - awk->parse.globals.buf[n].name.ptr[0] = ASE_T('\0'); + awk->parse.globals.buf[n].name.ptr[0] = QSE_T('\0'); awk->parse.globals.buf[n].name.len = 0; */ - n = ase_lda_uplete (awk->parse.globals, n, 1); - ASE_ASSERT (n == 1); + n = qse_lda_uplete (awk->parse.globals, n, 1); + QSE_ASSERT (n == 1); return 0; } -static ase_awk_t* collect_globals (ase_awk_t* awk) +static qse_awk_t* collect_globals (qse_awk_t* awk) { while (1) { if (!MATCH(awk,TOKEN_IDENT)) { - SETERRTOK (awk, ASE_AWK_EBADVAR); - return ASE_NULL; + SETERRTOK (awk, QSE_AWK_EBADVAR); + return QSE_NULL; } if (add_global ( awk, - ASE_STR_PTR(awk->token.name), - ASE_STR_LEN(awk->token.name), - awk->token.line, 0) == -1) return ASE_NULL; + QSE_STR_PTR(awk->token.name), + QSE_STR_LEN(awk->token.name), + awk->token.line, 0) == -1) return QSE_NULL; - if (get_token(awk) == -1) return ASE_NULL; + if (get_token(awk) == -1) return QSE_NULL; if (MATCH_TERMINATOR(awk)) break; if (!MATCH(awk,TOKEN_COMMA)) { - SETERRTOK (awk, ASE_AWK_ECOMMA); - return ASE_NULL; + SETERRTOK (awk, QSE_AWK_ECOMMA); + return QSE_NULL; } - if (get_token(awk) == -1) return ASE_NULL; + if (get_token(awk) == -1) return QSE_NULL; } /* skip a semicolon */ - if (get_token(awk) == -1) return ASE_NULL; + if (get_token(awk) == -1) return QSE_NULL; return awk; } -static ase_awk_t* collect_locals ( - ase_awk_t* awk, ase_size_t nlocals, ase_bool_t istop) +static qse_awk_t* collect_locals ( + qse_awk_t* awk, qse_size_t nlocals, qse_bool_t istop) { - ase_xstr_t local; - ase_size_t n; + qse_xstr_t local; + qse_size_t n; while (1) { if (!MATCH(awk,TOKEN_IDENT)) { - SETERRTOK (awk, ASE_AWK_EBADVAR); - return ASE_NULL; + SETERRTOK (awk, QSE_AWK_EBADVAR); + return QSE_NULL; } - local.ptr = ASE_STR_PTR(awk->token.name); - local.len = ASE_STR_LEN(awk->token.name); + local.ptr = QSE_STR_PTR(awk->token.name); + local.len = QSE_STR_LEN(awk->token.name); #if 0 - if (awk->option & ASE_AWK_UNIQUEFN) + if (awk->option & QSE_AWK_UNIQUEFN) { - ase_bool_t iscur = ASE_FALSE; + qse_bool_t iscur = QSE_FALSE; #endif /* check if it conflict with a builtin function name * function f() { local length; } */ - if (ase_awk_getbfn (awk, local.ptr, local.len) != ASE_NULL) + if (qse_awk_getbfn (awk, local.ptr, local.len) != QSE_NULL) { SETERRARG ( - awk, ASE_AWK_EBFNRED, awk->token.line, + awk, QSE_AWK_EBFNRED, awk->token.line, local.ptr, local.len); - return ASE_NULL; + return QSE_NULL; } #if 0 /* check if it conflict with a function name */ - if (awk->tree.cur_afn.ptr != ASE_NULL) + if (awk->tree.cur_afn.ptr != QSE_NULL) { - iscur = (ase_strxncmp ( + iscur = (qse_strxncmp ( awk->tree.cur_afn.ptr, awk->tree.cur_afn.len, local.ptr, local.len) == 0); } - if (iscur || ase_map_search (awk->tree.afns, local.ptr, local.len) != ASE_NULL) + if (iscur || qse_map_search (awk->tree.afns, local.ptr, local.len) != QSE_NULL) { SETERRARG ( - awk, ASE_AWK_EAFNRED, awk->token.line, + awk, QSE_AWK_EAFNRED, awk->token.line, local.ptr, local.len); - return ASE_NULL; + return QSE_NULL; } /* check if it conflict with a function name * caught in the function call table */ - if (ase_map_search (awk->parse.afns, - local.ptr, local.len) != ASE_NULL) + if (qse_map_search (awk->parse.afns, + local.ptr, local.len) != QSE_NULL) { SETERRARG ( - awk, ASE_AWK_EAFNRED, awk->token.line, + awk, QSE_AWK_EAFNRED, awk->token.line, local.ptr, local.len); - return ASE_NULL; + return QSE_NULL; } } #endif @@ -1735,125 +1735,125 @@ static ase_awk_t* collect_locals ( if (istop) { /* check if it conflicts with a paremeter name */ - n = ase_lda_search (awk->parse.params, 0, local.ptr, local.len); - if (n != ASE_LDA_INVALID) + n = qse_lda_search (awk->parse.params, 0, local.ptr, local.len); + if (n != QSE_LDA_INVALID) { SETERRARG ( - awk, ASE_AWK_EPARRED, awk->token.line, + awk, QSE_AWK_EPARRED, awk->token.line, local.ptr, local.len); - return ASE_NULL; + return QSE_NULL; } } /* check if it conflicts with other local variable names */ - n = ase_lda_search ( + n = qse_lda_search ( awk->parse.locals, - nlocals, /*((awk->option&ASE_AWK_SHADING)? nlocals:0)*/ + nlocals, /*((awk->option&QSE_AWK_SHADING)? nlocals:0)*/ local.ptr, local.len); - if (n != ASE_LDA_INVALID) + if (n != QSE_LDA_INVALID) { SETERRARG ( - awk, ASE_AWK_EDUPLCL, awk->token.line, + awk, QSE_AWK_EDUPLCL, awk->token.line, local.ptr, local.len); - return ASE_NULL; + return QSE_NULL; } /* check if it conflicts with global variable names */ n = find_global (awk, local.ptr, local.len); - if (n != ASE_LDA_INVALID) + if (n != QSE_LDA_INVALID) { if (n < awk->tree.nbglobals) { /* conflicting with a static global variable */ SETERRARG ( - awk, ASE_AWK_EDUPLCL, awk->token.line, + awk, QSE_AWK_EDUPLCL, awk->token.line, local.ptr, local.len); - return ASE_NULL; + return QSE_NULL; } #if 0 - if (!(awk->option & ASE_AWK_SHADING)) + if (!(awk->option & QSE_AWK_SHADING)) { /* conflicting with a normal global variable */ SETERRARG ( - awk, ASE_AWK_EDUPLCL, awk->token.line, + awk, QSE_AWK_EDUPLCL, awk->token.line, local.ptr, local.len); - return ASE_NULL; + return QSE_NULL; } #endif } - if (ASE_LDA_SIZE(awk->parse.locals) >= ASE_AWK_MAX_LOCALS) + if (QSE_LDA_SIZE(awk->parse.locals) >= QSE_AWK_MAX_LOCALS) { - SETERRLIN (awk, ASE_AWK_ELCLTM, awk->token.line); - return ASE_NULL; + SETERRLIN (awk, QSE_AWK_ELCLTM, awk->token.line); + return QSE_NULL; } - if (ase_lda_insert ( + if (qse_lda_insert ( awk->parse.locals, - ASE_LDA_SIZE(awk->parse.locals), - local.ptr, local.len) == ASE_LDA_INVALID) + QSE_LDA_SIZE(awk->parse.locals), + local.ptr, local.len) == QSE_LDA_INVALID) { - SETERRLIN (awk, ASE_AWK_ENOMEM, awk->token.line); - return ASE_NULL; + SETERRLIN (awk, QSE_AWK_ENOMEM, awk->token.line); + return QSE_NULL; } - if (get_token(awk) == -1) return ASE_NULL; + if (get_token(awk) == -1) return QSE_NULL; if (MATCH_TERMINATOR(awk)) break; if (!MATCH(awk,TOKEN_COMMA)) { - SETERRTOK (awk, ASE_AWK_ECOMMA); - return ASE_NULL; + SETERRTOK (awk, QSE_AWK_ECOMMA); + return QSE_NULL; } - if (get_token(awk) == -1) return ASE_NULL; + if (get_token(awk) == -1) return QSE_NULL; } /* skip a semicolon */ - if (get_token(awk) == -1) return ASE_NULL; + if (get_token(awk) == -1) return QSE_NULL; return awk; } -static ase_awk_nde_t* parse_statement (ase_awk_t* awk, ase_size_t line) +static qse_awk_nde_t* parse_statement (qse_awk_t* awk, qse_size_t line) { - ase_awk_nde_t* nde; + qse_awk_nde_t* nde; /* skip new lines before a statement */ while (MATCH(awk,TOKEN_NEWLINE)) { - if (get_token(awk) == -1) return ASE_NULL; + if (get_token(awk) == -1) return QSE_NULL; } if (MATCH(awk,TOKEN_SEMICOLON)) { /* null statement */ - nde = (ase_awk_nde_t*) - ASE_AWK_ALLOC (awk, ASE_SIZEOF(ase_awk_nde_t)); - if (nde == ASE_NULL) + nde = (qse_awk_nde_t*) + QSE_AWK_ALLOC (awk, QSE_SIZEOF(qse_awk_nde_t)); + if (nde == QSE_NULL) { - SETERRLIN (awk, ASE_AWK_ENOMEM, line); - return ASE_NULL; + SETERRLIN (awk, QSE_AWK_ENOMEM, line); + return QSE_NULL; } - nde->type = ASE_AWK_NDE_NULL; + nde->type = QSE_AWK_NDE_NULL; nde->line = line; - nde->next = ASE_NULL; + nde->next = QSE_NULL; if (get_token(awk) == -1) { - ASE_AWK_FREE (awk, nde); - return ASE_NULL; + QSE_AWK_FREE (awk, nde); + return QSE_NULL; } } else if (MATCH(awk,TOKEN_LBRACE)) { /* a block statemnt { ... } */ - if (get_token(awk) == -1) return ASE_NULL; + if (get_token(awk) == -1) return QSE_NULL; nde = awk->parse.parse_block ( - awk, awk->token.prev.line, ASE_FALSE); + awk, awk->token.prev.line, QSE_FALSE); } else { @@ -1879,19 +1879,19 @@ static ase_awk_nde_t* parse_statement (ase_awk_t* awk, ase_size_t line) } /* parse a non-block statement */ -static ase_awk_nde_t* parse_statement_nb (ase_awk_t* awk, ase_size_t line) +static qse_awk_nde_t* parse_statement_nb (qse_awk_t* awk, qse_size_t line) { - ase_awk_nde_t* nde; + qse_awk_nde_t* nde; /* keywords that don't require any terminating semicolon */ if (MATCH(awk,TOKEN_IF)) { - if (get_token(awk) == -1) return ASE_NULL; + if (get_token(awk) == -1) return QSE_NULL; return parse_if (awk, line); } else if (MATCH(awk,TOKEN_WHILE)) { - if (get_token(awk) == -1) return ASE_NULL; + if (get_token(awk) == -1) return QSE_NULL; awk->parse.depth.cur.loop++; nde = parse_while (awk, line); @@ -1901,7 +1901,7 @@ static ase_awk_nde_t* parse_statement_nb (ase_awk_t* awk, ase_size_t line) } else if (MATCH(awk,TOKEN_FOR)) { - if (get_token(awk) == -1) return ASE_NULL; + if (get_token(awk) == -1) return QSE_NULL; awk->parse.depth.cur.loop++; nde = parse_for (awk, line); @@ -1913,7 +1913,7 @@ static ase_awk_nde_t* parse_statement_nb (ase_awk_t* awk, ase_size_t line) /* keywords that require a terminating semicolon */ if (MATCH(awk,TOKEN_DO)) { - if (get_token(awk) == -1) return ASE_NULL; + if (get_token(awk) == -1) return QSE_NULL; awk->parse.depth.cur.loop++; nde = parse_dowhile (awk, line); @@ -1923,97 +1923,97 @@ static ase_awk_nde_t* parse_statement_nb (ase_awk_t* awk, ase_size_t line) } else if (MATCH(awk,TOKEN_BREAK)) { - if (get_token(awk) == -1) return ASE_NULL; + if (get_token(awk) == -1) return QSE_NULL; nde = parse_break (awk, line); } else if (MATCH(awk,TOKEN_CONTINUE)) { - if (get_token(awk) == -1) return ASE_NULL; + if (get_token(awk) == -1) return QSE_NULL; nde = parse_continue (awk, line); } else if (MATCH(awk,TOKEN_RETURN)) { - if (get_token(awk) == -1) return ASE_NULL; + if (get_token(awk) == -1) return QSE_NULL; nde = parse_return (awk, line); } else if (MATCH(awk,TOKEN_EXIT)) { - if (get_token(awk) == -1) return ASE_NULL; + if (get_token(awk) == -1) return QSE_NULL; nde = parse_exit (awk, line); } else if (MATCH(awk,TOKEN_NEXT)) { - if (get_token(awk) == -1) return ASE_NULL; + if (get_token(awk) == -1) return QSE_NULL; nde = parse_next (awk, line); } else if (MATCH(awk,TOKEN_NEXTFILE)) { - if (get_token(awk) == -1) return ASE_NULL; + if (get_token(awk) == -1) return QSE_NULL; nde = parse_nextfile (awk, line, 0); } else if (MATCH(awk,TOKEN_NEXTOFILE)) { - if (get_token(awk) == -1) return ASE_NULL; + if (get_token(awk) == -1) return QSE_NULL; nde = parse_nextfile (awk, line, 1); } else if (MATCH(awk,TOKEN_DELETE)) { - if (get_token(awk) == -1) return ASE_NULL; + if (get_token(awk) == -1) return QSE_NULL; nde = parse_delete (awk, line); } else if (MATCH(awk,TOKEN_RESET)) { - if (get_token(awk) == -1) return ASE_NULL; + if (get_token(awk) == -1) return QSE_NULL; nde = parse_reset (awk, line); } else if (MATCH(awk,TOKEN_PRINT)) { - if (get_token(awk) == -1) return ASE_NULL; - nde = parse_print (awk, line, ASE_AWK_NDE_PRINT); + if (get_token(awk) == -1) return QSE_NULL; + nde = parse_print (awk, line, QSE_AWK_NDE_PRINT); } else if (MATCH(awk,TOKEN_PRINTF)) { - if (get_token(awk) == -1) return ASE_NULL; - nde = parse_print (awk, line, ASE_AWK_NDE_PRINTF); + if (get_token(awk) == -1) return QSE_NULL; + nde = parse_print (awk, line, QSE_AWK_NDE_PRINTF); } else { nde = parse_expression (awk, line); } - if (nde == ASE_NULL) return ASE_NULL; + if (nde == QSE_NULL) return QSE_NULL; /* check if a statement ends with a semicolon */ if (MATCH_TERMINATOR(awk)) { /* eat up the semicolon or a new line and read in the next token - * when ASE_AWK_NEWLINE is set, a statement may end with }. + * when QSE_AWK_NEWLINE is set, a statement may end with }. * it should not be eaten up here. */ if (!MATCH(awk,TOKEN_RBRACE) && get_token(awk) == -1) { - if (nde != ASE_NULL) ase_awk_clrpt (awk, nde); - return ASE_NULL; + if (nde != QSE_NULL) qse_awk_clrpt (awk, nde); + return QSE_NULL; } } else { - if (nde != ASE_NULL) ase_awk_clrpt (awk, nde); - SETERRLIN (awk, ASE_AWK_ESTMEND, awk->token.prev.line); - return ASE_NULL; + if (nde != QSE_NULL) qse_awk_clrpt (awk, nde); + SETERRLIN (awk, QSE_AWK_ESTMEND, awk->token.prev.line); + return QSE_NULL; } return nde; } -static ase_awk_nde_t* parse_expression (ase_awk_t* awk, ase_size_t line) +static qse_awk_nde_t* parse_expression (qse_awk_t* awk, qse_size_t line) { - ase_awk_nde_t* nde; + qse_awk_nde_t* nde; if (awk->parse.depth.max.expr > 0 && awk->parse.depth.cur.expr >= awk->parse.depth.max.expr) { - SETERRLIN (awk, ASE_AWK_EEXPRNST, line); - return ASE_NULL; + SETERRLIN (awk, QSE_AWK_EEXPRNST, line); + return QSE_NULL; } awk->parse.depth.cur.expr++; @@ -2023,14 +2023,14 @@ static ase_awk_nde_t* parse_expression (ase_awk_t* awk, ase_size_t line) return nde; } -static ase_awk_nde_t* parse_expression0 (ase_awk_t* awk, ase_size_t line) +static qse_awk_nde_t* parse_expression0 (qse_awk_t* awk, qse_size_t line) { - ase_awk_nde_t* x, * y; - ase_awk_nde_ass_t* nde; + qse_awk_nde_t* x, * y; + qse_awk_nde_ass_t* nde; int opcode; x = parse_basic_expr (awk, line); - if (x == ASE_NULL) return ASE_NULL; + if (x == QSE_NULL) return QSE_NULL; opcode = assign_to_opcode (awk); if (opcode == -1) @@ -2039,133 +2039,133 @@ static ase_awk_nde_t* parse_expression0 (ase_awk_t* awk, ase_size_t line) return x; } - ASE_ASSERT (x->next == ASE_NULL); - if (!is_var(x) && x->type != ASE_AWK_NDE_POS) + QSE_ASSERT (x->next == QSE_NULL); + if (!is_var(x) && x->type != QSE_AWK_NDE_POS) { - ase_awk_clrpt (awk, x); - SETERRLIN (awk, ASE_AWK_EASSIGN, line); - return ASE_NULL; + qse_awk_clrpt (awk, x); + SETERRLIN (awk, QSE_AWK_EASSIGN, line); + return QSE_NULL; } if (get_token(awk) == -1) { - ase_awk_clrpt (awk, x); - return ASE_NULL; + qse_awk_clrpt (awk, x); + return QSE_NULL; } /*y = parse_basic_expr (awk);*/ y = parse_expression (awk, awk->token.line); - if (y == ASE_NULL) + if (y == QSE_NULL) { - ase_awk_clrpt (awk, x); - return ASE_NULL; + qse_awk_clrpt (awk, x); + return QSE_NULL; } - nde = (ase_awk_nde_ass_t*) - ASE_AWK_ALLOC (awk, ASE_SIZEOF(ase_awk_nde_ass_t)); - if (nde == ASE_NULL) + nde = (qse_awk_nde_ass_t*) + QSE_AWK_ALLOC (awk, QSE_SIZEOF(qse_awk_nde_ass_t)); + if (nde == QSE_NULL) { - ase_awk_clrpt (awk, x); - ase_awk_clrpt (awk, y); + qse_awk_clrpt (awk, x); + qse_awk_clrpt (awk, y); - SETERRLIN (awk, ASE_AWK_ENOMEM, line); - return ASE_NULL; + SETERRLIN (awk, QSE_AWK_ENOMEM, line); + return QSE_NULL; } - nde->type = ASE_AWK_NDE_ASS; + nde->type = QSE_AWK_NDE_ASS; nde->line = line; - nde->next = ASE_NULL; + nde->next = QSE_NULL; nde->opcode = opcode; nde->left = x; nde->right = y; - return (ase_awk_nde_t*)nde; + return (qse_awk_nde_t*)nde; } -static ase_awk_nde_t* parse_basic_expr (ase_awk_t* awk, ase_size_t line) +static qse_awk_nde_t* parse_basic_expr (qse_awk_t* awk, qse_size_t line) { - ase_awk_nde_t* nde, * n1, * n2; + qse_awk_nde_t* nde, * n1, * n2; nde = parse_logical_or (awk, line); - if (nde == ASE_NULL) return ASE_NULL; + if (nde == QSE_NULL) return QSE_NULL; if (MATCH(awk,TOKEN_QUEST)) { - ase_awk_nde_cnd_t* tmp; + qse_awk_nde_cnd_t* tmp; - if (get_token(awk) == -1) return ASE_NULL; + if (get_token(awk) == -1) return QSE_NULL; /*n1 = parse_basic_expr (awk, awk->token.line);*/ n1 = parse_expression (awk, awk->token.line); - if (n1 == ASE_NULL) + if (n1 == QSE_NULL) { - ase_awk_clrpt (awk, nde); - return ASE_NULL; + qse_awk_clrpt (awk, nde); + return QSE_NULL; } if (!MATCH(awk,TOKEN_COLON)) { - SETERRTOK (awk, ASE_AWK_ECOLON); - return ASE_NULL; + SETERRTOK (awk, QSE_AWK_ECOLON); + return QSE_NULL; } - if (get_token(awk) == -1) return ASE_NULL; + if (get_token(awk) == -1) return QSE_NULL; /*n2 = parse_basic_expr (awk, awk->token.line);*/ n2 = parse_expression (awk, awk->token.line); - if (n2 == ASE_NULL) + if (n2 == QSE_NULL) { - ase_awk_clrpt (awk, nde); - ase_awk_clrpt (awk, n1); - return ASE_NULL; + qse_awk_clrpt (awk, nde); + qse_awk_clrpt (awk, n1); + return QSE_NULL; } - tmp = (ase_awk_nde_cnd_t*) ASE_AWK_ALLOC ( - awk, ASE_SIZEOF(ase_awk_nde_cnd_t)); - if (tmp == ASE_NULL) + tmp = (qse_awk_nde_cnd_t*) QSE_AWK_ALLOC ( + awk, QSE_SIZEOF(qse_awk_nde_cnd_t)); + if (tmp == QSE_NULL) { - ase_awk_clrpt (awk, nde); - ase_awk_clrpt (awk, n1); - ase_awk_clrpt (awk, n2); + qse_awk_clrpt (awk, nde); + qse_awk_clrpt (awk, n1); + qse_awk_clrpt (awk, n2); - SETERRLIN (awk, ASE_AWK_ENOMEM, line); - return ASE_NULL; + SETERRLIN (awk, QSE_AWK_ENOMEM, line); + return QSE_NULL; } - tmp->type = ASE_AWK_NDE_CND; + tmp->type = QSE_AWK_NDE_CND; tmp->line = line; - tmp->next = ASE_NULL; + tmp->next = QSE_NULL; tmp->test = nde; tmp->left = n1; tmp->right = n2; - nde = (ase_awk_nde_t*)tmp; + nde = (qse_awk_nde_t*)tmp; } return nde; } -static ase_awk_nde_t* parse_binary_expr ( - ase_awk_t* awk, ase_size_t line, int skipnl, const binmap_t* binmap, - ase_awk_nde_t*(*next_level_func)(ase_awk_t*,ase_size_t)) +static qse_awk_nde_t* parse_binary_expr ( + qse_awk_t* awk, qse_size_t line, int skipnl, const binmap_t* binmap, + qse_awk_nde_t*(*next_level_func)(qse_awk_t*,qse_size_t)) { - ase_awk_nde_exp_t* nde; - ase_awk_nde_t* left, * right; + qse_awk_nde_exp_t* nde; + qse_awk_nde_t* left, * right; int opcode; left = next_level_func (awk, line); - if (left == ASE_NULL) return ASE_NULL; + if (left == QSE_NULL) return QSE_NULL; while (1) { const binmap_t* p = binmap; - ase_bool_t matched = ASE_FALSE; + qse_bool_t matched = QSE_FALSE; while (p->token != TOKEN_EOF) { if (MATCH(awk,p->token)) { opcode = p->binop; - matched = ASE_TRUE; + matched = QSE_TRUE; break; } p++; @@ -2176,83 +2176,83 @@ static ase_awk_nde_t* parse_binary_expr ( { if (get_token(awk) == -1) { - ase_awk_clrpt (awk, left); - return ASE_NULL; + qse_awk_clrpt (awk, left); + return QSE_NULL; } } while (skipnl && MATCH(awk,TOKEN_NEWLINE)); right = next_level_func (awk, awk->token.line); - if (right == ASE_NULL) + if (right == QSE_NULL) { - ase_awk_clrpt (awk, left); - return ASE_NULL; + qse_awk_clrpt (awk, left); + return QSE_NULL; } - nde = (ase_awk_nde_exp_t*) ASE_AWK_ALLOC ( - awk, ASE_SIZEOF(ase_awk_nde_exp_t)); - if (nde == ASE_NULL) + nde = (qse_awk_nde_exp_t*) QSE_AWK_ALLOC ( + awk, QSE_SIZEOF(qse_awk_nde_exp_t)); + if (nde == QSE_NULL) { - ase_awk_clrpt (awk, right); - ase_awk_clrpt (awk, left); + qse_awk_clrpt (awk, right); + qse_awk_clrpt (awk, left); - SETERRLIN (awk, ASE_AWK_ENOMEM, line); - return ASE_NULL; + SETERRLIN (awk, QSE_AWK_ENOMEM, line); + return QSE_NULL; } - nde->type = ASE_AWK_NDE_EXP_BIN; + nde->type = QSE_AWK_NDE_EXP_BIN; nde->line = line; - nde->next = ASE_NULL; + nde->next = QSE_NULL; nde->opcode = opcode; nde->left = left; nde->right = right; - left = (ase_awk_nde_t*)nde; + left = (qse_awk_nde_t*)nde; } return left; } -static ase_awk_nde_t* parse_logical_or (ase_awk_t* awk, ase_size_t line) +static qse_awk_nde_t* parse_logical_or (qse_awk_t* awk, qse_size_t line) { static binmap_t map[] = { - { TOKEN_LOR, ASE_AWK_BINOP_LOR }, + { TOKEN_LOR, QSE_AWK_BINOP_LOR }, { TOKEN_EOF, 0 } }; return parse_binary_expr (awk, line, 1, map, parse_logical_and); } -static ase_awk_nde_t* parse_logical_and (ase_awk_t* awk, ase_size_t line) +static qse_awk_nde_t* parse_logical_and (qse_awk_t* awk, qse_size_t line) { static binmap_t map[] = { - { TOKEN_LAND, ASE_AWK_BINOP_LAND }, + { TOKEN_LAND, QSE_AWK_BINOP_LAND }, { TOKEN_EOF, 0 } }; return parse_binary_expr (awk, line, 1, map, parse_in); } -static ase_awk_nde_t* parse_in (ase_awk_t* awk, ase_size_t line) +static qse_awk_nde_t* parse_in (qse_awk_t* awk, qse_size_t line) { /* static binmap_t map[] = { - { TOKEN_IN, ASE_AWK_BINOP_IN }, + { TOKEN_IN, QSE_AWK_BINOP_IN }, { TOKEN_EOF, 0 } }; return parse_binary_expr (awk, line, 0, map, parse_regex_match); */ - ase_awk_nde_exp_t* nde; - ase_awk_nde_t* left, * right; - ase_size_t line2; + qse_awk_nde_exp_t* nde; + qse_awk_nde_t* left, * right; + qse_size_t line2; left = parse_regex_match (awk, line); - if (left == ASE_NULL) return ASE_NULL; + if (left == QSE_NULL) return QSE_NULL; while (1) { @@ -2260,67 +2260,67 @@ static ase_awk_nde_t* parse_in (ase_awk_t* awk, ase_size_t line) if (get_token(awk) == -1) { - ase_awk_clrpt (awk, left); - return ASE_NULL; + qse_awk_clrpt (awk, left); + return QSE_NULL; } line2 = awk->token.line; right = parse_regex_match (awk, line2); - if (right == ASE_NULL) + if (right == QSE_NULL) { - ase_awk_clrpt (awk, left); - return ASE_NULL; + qse_awk_clrpt (awk, left); + return QSE_NULL; } if (!is_plain_var(right)) { - ase_awk_clrpt (awk, right); - ase_awk_clrpt (awk, left); + qse_awk_clrpt (awk, right); + qse_awk_clrpt (awk, left); - SETERRLIN (awk, ASE_AWK_ENOTVAR, line2); - return ASE_NULL; + SETERRLIN (awk, QSE_AWK_ENOTVAR, line2); + return QSE_NULL; } - nde = (ase_awk_nde_exp_t*) ASE_AWK_ALLOC ( - awk, ASE_SIZEOF(ase_awk_nde_exp_t)); - if (nde == ASE_NULL) + nde = (qse_awk_nde_exp_t*) QSE_AWK_ALLOC ( + awk, QSE_SIZEOF(qse_awk_nde_exp_t)); + if (nde == QSE_NULL) { - ase_awk_clrpt (awk, right); - ase_awk_clrpt (awk, left); + qse_awk_clrpt (awk, right); + qse_awk_clrpt (awk, left); - SETERRLIN (awk, ASE_AWK_ENOMEM, line); - return ASE_NULL; + SETERRLIN (awk, QSE_AWK_ENOMEM, line); + return QSE_NULL; } - nde->type = ASE_AWK_NDE_EXP_BIN; + nde->type = QSE_AWK_NDE_EXP_BIN; nde->line = line; - nde->next = ASE_NULL; - nde->opcode = ASE_AWK_BINOP_IN; + nde->next = QSE_NULL; + nde->opcode = QSE_AWK_BINOP_IN; nde->left = left; nde->right = right; - left = (ase_awk_nde_t*)nde; + left = (qse_awk_nde_t*)nde; } return left; } -static ase_awk_nde_t* parse_regex_match (ase_awk_t* awk, ase_size_t line) +static qse_awk_nde_t* parse_regex_match (qse_awk_t* awk, qse_size_t line) { static binmap_t map[] = { - { TOKEN_TILDE, ASE_AWK_BINOP_MA }, - { TOKEN_NM, ASE_AWK_BINOP_NM }, + { TOKEN_TILDE, QSE_AWK_BINOP_MA }, + { TOKEN_NM, QSE_AWK_BINOP_NM }, { TOKEN_EOF, 0 }, }; return parse_binary_expr (awk, line, 0, map, parse_bitwise_or); } -static ase_awk_nde_t* parse_bitwise_or (ase_awk_t* awk, ase_size_t line) +static qse_awk_nde_t* parse_bitwise_or (qse_awk_t* awk, qse_size_t line) { - if (awk->option & ASE_AWK_EXTIO) + if (awk->option & QSE_AWK_EXTIO) { return parse_bitwise_or_with_extio (awk, line); } @@ -2328,7 +2328,7 @@ static ase_awk_nde_t* parse_bitwise_or (ase_awk_t* awk, ase_size_t line) { static binmap_t map[] = { - { TOKEN_BOR, ASE_AWK_BINOP_BOR }, + { TOKEN_BOR, QSE_AWK_BINOP_BOR }, { TOKEN_EOF, 0 } }; @@ -2337,39 +2337,39 @@ static ase_awk_nde_t* parse_bitwise_or (ase_awk_t* awk, ase_size_t line) } } -static ase_awk_nde_t* parse_bitwise_or_with_extio (ase_awk_t* awk, ase_size_t line) +static qse_awk_nde_t* parse_bitwise_or_with_extio (qse_awk_t* awk, qse_size_t line) { - ase_awk_nde_t* left, * right; + qse_awk_nde_t* left, * right; left = parse_bitwise_xor (awk, line); - if (left == ASE_NULL) return ASE_NULL; + if (left == QSE_NULL) return QSE_NULL; while (1) { int in_type; if (MATCH(awk,TOKEN_BOR)) - in_type = ASE_AWK_IN_PIPE; + in_type = QSE_AWK_IN_PIPE; else if (MATCH(awk,TOKEN_BORAND)) - in_type = ASE_AWK_IN_COPROC; + in_type = QSE_AWK_IN_COPROC; else break; if (get_token(awk) == -1) { - ase_awk_clrpt (awk, left); - return ASE_NULL; + qse_awk_clrpt (awk, left); + return QSE_NULL; } if (MATCH(awk,TOKEN_GETLINE)) { - ase_awk_nde_getline_t* nde; - ase_awk_nde_t* var = ASE_NULL; + qse_awk_nde_getline_t* nde; + qse_awk_nde_t* var = QSE_NULL; /* piped getline */ if (get_token(awk) == -1) { - ase_awk_clrpt (awk, left); - return ASE_NULL; + qse_awk_clrpt (awk, left); + return QSE_NULL; } /* TODO: is this correct? */ @@ -2379,152 +2379,152 @@ static ase_awk_nde_t* parse_bitwise_or_with_extio (ase_awk_t* awk, ase_size_t li /* command | getline var */ var = parse_primary (awk, awk->token.line); - if (var == ASE_NULL) + if (var == QSE_NULL) { - ase_awk_clrpt (awk, left); - return ASE_NULL; + qse_awk_clrpt (awk, left); + return QSE_NULL; } } - nde = (ase_awk_nde_getline_t*) ASE_AWK_ALLOC ( - awk, ASE_SIZEOF(ase_awk_nde_getline_t)); - if (nde == ASE_NULL) + nde = (qse_awk_nde_getline_t*) QSE_AWK_ALLOC ( + awk, QSE_SIZEOF(qse_awk_nde_getline_t)); + if (nde == QSE_NULL) { - ase_awk_clrpt (awk, left); + qse_awk_clrpt (awk, left); - SETERRLIN (awk, ASE_AWK_ENOMEM, line); - return ASE_NULL; + SETERRLIN (awk, QSE_AWK_ENOMEM, line); + return QSE_NULL; } - nde->type = ASE_AWK_NDE_GETLINE; + nde->type = QSE_AWK_NDE_GETLINE; nde->line = line; - nde->next = ASE_NULL; + nde->next = QSE_NULL; nde->var = var; nde->in_type = in_type; nde->in = left; - left = (ase_awk_nde_t*)nde; + left = (qse_awk_nde_t*)nde; } else { - ase_awk_nde_exp_t* nde; + qse_awk_nde_exp_t* nde; - if (in_type == ASE_AWK_IN_COPROC) + if (in_type == QSE_AWK_IN_COPROC) { - ase_awk_clrpt (awk, left); + qse_awk_clrpt (awk, left); /* TODO: support coprocess */ - SETERRLIN (awk, ASE_AWK_EGLNCPS, line); - return ASE_NULL; + SETERRLIN (awk, QSE_AWK_EGLNCPS, line); + return QSE_NULL; } right = parse_bitwise_xor (awk, awk->token.line); - if (right == ASE_NULL) + if (right == QSE_NULL) { - ase_awk_clrpt (awk, left); - return ASE_NULL; + qse_awk_clrpt (awk, left); + return QSE_NULL; } - nde = (ase_awk_nde_exp_t*) ASE_AWK_ALLOC ( - awk, ASE_SIZEOF(ase_awk_nde_exp_t)); - if (nde == ASE_NULL) + nde = (qse_awk_nde_exp_t*) QSE_AWK_ALLOC ( + awk, QSE_SIZEOF(qse_awk_nde_exp_t)); + if (nde == QSE_NULL) { - ase_awk_clrpt (awk, right); - ase_awk_clrpt (awk, left); + qse_awk_clrpt (awk, right); + qse_awk_clrpt (awk, left); - SETERRLIN (awk, ASE_AWK_ENOMEM, line); - return ASE_NULL; + SETERRLIN (awk, QSE_AWK_ENOMEM, line); + return QSE_NULL; } - nde->type = ASE_AWK_NDE_EXP_BIN; + nde->type = QSE_AWK_NDE_EXP_BIN; nde->line = line; - nde->next = ASE_NULL; - nde->opcode = ASE_AWK_BINOP_BOR; + nde->next = QSE_NULL; + nde->opcode = QSE_AWK_BINOP_BOR; nde->left = left; nde->right = right; - left = (ase_awk_nde_t*)nde; + left = (qse_awk_nde_t*)nde; } } return left; } -static ase_awk_nde_t* parse_bitwise_xor (ase_awk_t* awk, ase_size_t line) +static qse_awk_nde_t* parse_bitwise_xor (qse_awk_t* awk, qse_size_t line) { static binmap_t map[] = { - { TOKEN_BXOR, ASE_AWK_BINOP_BXOR }, + { TOKEN_BXOR, QSE_AWK_BINOP_BXOR }, { TOKEN_EOF, 0 } }; return parse_binary_expr (awk, line, 0, map, parse_bitwise_and); } -static ase_awk_nde_t* parse_bitwise_and (ase_awk_t* awk, ase_size_t line) +static qse_awk_nde_t* parse_bitwise_and (qse_awk_t* awk, qse_size_t line) { static binmap_t map[] = { - { TOKEN_BAND, ASE_AWK_BINOP_BAND }, + { TOKEN_BAND, QSE_AWK_BINOP_BAND }, { TOKEN_EOF, 0 } }; return parse_binary_expr (awk, line, 0, map, parse_equality); } -static ase_awk_nde_t* parse_equality (ase_awk_t* awk, ase_size_t line) +static qse_awk_nde_t* parse_equality (qse_awk_t* awk, qse_size_t line) { static binmap_t map[] = { - { TOKEN_EQ, ASE_AWK_BINOP_EQ }, - { TOKEN_NE, ASE_AWK_BINOP_NE }, + { TOKEN_EQ, QSE_AWK_BINOP_EQ }, + { TOKEN_NE, QSE_AWK_BINOP_NE }, { TOKEN_EOF, 0 } }; return parse_binary_expr (awk, line, 0, map, parse_relational); } -static ase_awk_nde_t* parse_relational (ase_awk_t* awk, ase_size_t line) +static qse_awk_nde_t* parse_relational (qse_awk_t* awk, qse_size_t line) { static binmap_t map[] = { - { TOKEN_GT, ASE_AWK_BINOP_GT }, - { TOKEN_GE, ASE_AWK_BINOP_GE }, - { TOKEN_LT, ASE_AWK_BINOP_LT }, - { TOKEN_LE, ASE_AWK_BINOP_LE }, + { TOKEN_GT, QSE_AWK_BINOP_GT }, + { TOKEN_GE, QSE_AWK_BINOP_GE }, + { TOKEN_LT, QSE_AWK_BINOP_LT }, + { TOKEN_LE, QSE_AWK_BINOP_LE }, { TOKEN_EOF, 0 } }; return parse_binary_expr (awk, line, 0, map, - ((awk->option & ASE_AWK_SHIFT)? parse_shift: parse_concat)); + ((awk->option & QSE_AWK_SHIFT)? parse_shift: parse_concat)); } -static ase_awk_nde_t* parse_shift (ase_awk_t* awk, ase_size_t line) +static qse_awk_nde_t* parse_shift (qse_awk_t* awk, qse_size_t line) { static binmap_t map[] = { - { TOKEN_LSHIFT, ASE_AWK_BINOP_LSHIFT }, - { TOKEN_RSHIFT, ASE_AWK_BINOP_RSHIFT }, + { TOKEN_LSHIFT, QSE_AWK_BINOP_LSHIFT }, + { TOKEN_RSHIFT, QSE_AWK_BINOP_RSHIFT }, { TOKEN_EOF, 0 } }; return parse_binary_expr (awk, line, 0, map, parse_concat); } -static ase_awk_nde_t* parse_concat (ase_awk_t* awk, ase_size_t line) +static qse_awk_nde_t* parse_concat (qse_awk_t* awk, qse_size_t line) { - ase_awk_nde_exp_t* nde; - ase_awk_nde_t* left, * right; + qse_awk_nde_exp_t* nde; + qse_awk_nde_t* left, * right; left = parse_additive (awk, line); - if (left == ASE_NULL) return ASE_NULL; + if (left == QSE_NULL) return QSE_NULL; while (1) { if (MATCH(awk,TOKEN_PERIOD)) { - if (!(awk->option & ASE_AWK_EXPLICIT)) break; - if (get_token(awk) == -1) return ASE_NULL; + if (!(awk->option & QSE_AWK_EXPLICIT)) break; + if (get_token(awk) == -1) return QSE_NULL; } else if (MATCH(awk,TOKEN_LPAREN) || MATCH(awk,TOKEN_DOLLAR) || @@ -2535,191 +2535,191 @@ static ase_awk_nde_t* parse_concat (ase_awk_t* awk, ase_size_t line) awk->token.type >= TOKEN_GETLINE) { /* TODO: is the check above sufficient? */ - if (!(awk->option & ASE_AWK_IMPLICIT)) break; + if (!(awk->option & QSE_AWK_IMPLICIT)) break; } else break; right = parse_additive (awk, awk->token.line); - if (right == ASE_NULL) + if (right == QSE_NULL) { - ase_awk_clrpt (awk, left); - return ASE_NULL; + qse_awk_clrpt (awk, left); + return QSE_NULL; } - nde = (ase_awk_nde_exp_t*) ASE_AWK_ALLOC ( - awk, ASE_SIZEOF(ase_awk_nde_exp_t)); - if (nde == ASE_NULL) + nde = (qse_awk_nde_exp_t*) QSE_AWK_ALLOC ( + awk, QSE_SIZEOF(qse_awk_nde_exp_t)); + if (nde == QSE_NULL) { - ase_awk_clrpt (awk, left); - ase_awk_clrpt (awk, right); + qse_awk_clrpt (awk, left); + qse_awk_clrpt (awk, right); - SETERRLIN (awk, ASE_AWK_ENOMEM, line); - return ASE_NULL; + SETERRLIN (awk, QSE_AWK_ENOMEM, line); + return QSE_NULL; } - nde->type = ASE_AWK_NDE_EXP_BIN; + nde->type = QSE_AWK_NDE_EXP_BIN; nde->line = line; - nde->next = ASE_NULL; - nde->opcode = ASE_AWK_BINOP_CONCAT; + nde->next = QSE_NULL; + nde->opcode = QSE_AWK_BINOP_CONCAT; nde->left = left; nde->right = right; - left = (ase_awk_nde_t*)nde; + left = (qse_awk_nde_t*)nde; } return left; } -static ase_awk_nde_t* parse_additive (ase_awk_t* awk, ase_size_t line) +static qse_awk_nde_t* parse_additive (qse_awk_t* awk, qse_size_t line) { static binmap_t map[] = { - { TOKEN_PLUS, ASE_AWK_BINOP_PLUS }, - { TOKEN_MINUS, ASE_AWK_BINOP_MINUS }, + { TOKEN_PLUS, QSE_AWK_BINOP_PLUS }, + { TOKEN_MINUS, QSE_AWK_BINOP_MINUS }, { TOKEN_EOF, 0 } }; return parse_binary_expr (awk, line, 0, map, parse_multiplicative); } -static ase_awk_nde_t* parse_multiplicative (ase_awk_t* awk, ase_size_t line) +static qse_awk_nde_t* parse_multiplicative (qse_awk_t* awk, qse_size_t line) { static binmap_t map[] = { - { TOKEN_MUL, ASE_AWK_BINOP_MUL }, - { TOKEN_DIV, ASE_AWK_BINOP_DIV }, - { TOKEN_IDIV, ASE_AWK_BINOP_IDIV }, - { TOKEN_MOD, ASE_AWK_BINOP_MOD }, - /* { TOKEN_EXP, ASE_AWK_BINOP_EXP }, */ + { TOKEN_MUL, QSE_AWK_BINOP_MUL }, + { TOKEN_DIV, QSE_AWK_BINOP_DIV }, + { TOKEN_IDIV, QSE_AWK_BINOP_IDIV }, + { TOKEN_MOD, QSE_AWK_BINOP_MOD }, + /* { TOKEN_EXP, QSE_AWK_BINOP_EXP }, */ { TOKEN_EOF, 0 } }; return parse_binary_expr (awk, line, 0, map, parse_unary); } -static ase_awk_nde_t* parse_unary (ase_awk_t* awk, ase_size_t line) +static qse_awk_nde_t* parse_unary (qse_awk_t* awk, qse_size_t line) { - ase_awk_nde_exp_t* nde; - ase_awk_nde_t* left; + qse_awk_nde_exp_t* nde; + qse_awk_nde_t* left; int opcode; - opcode = (MATCH(awk,TOKEN_PLUS))? ASE_AWK_UNROP_PLUS: - (MATCH(awk,TOKEN_MINUS))? ASE_AWK_UNROP_MINUS: - (MATCH(awk,TOKEN_LNOT))? ASE_AWK_UNROP_LNOT: - (MATCH(awk,TOKEN_TILDE))? ASE_AWK_UNROP_BNOT: -1; + opcode = (MATCH(awk,TOKEN_PLUS))? QSE_AWK_UNROP_PLUS: + (MATCH(awk,TOKEN_MINUS))? QSE_AWK_UNROP_MINUS: + (MATCH(awk,TOKEN_LNOT))? QSE_AWK_UNROP_LNOT: + (MATCH(awk,TOKEN_TILDE))? QSE_AWK_UNROP_BNOT: -1; /*if (opcode == -1) return parse_increment (awk);*/ if (opcode == -1) return parse_exponent (awk, line); - if (get_token(awk) == -1) return ASE_NULL; + if (get_token(awk) == -1) return QSE_NULL; if (awk->parse.depth.max.expr > 0 && awk->parse.depth.cur.expr >= awk->parse.depth.max.expr) { - SETERRLIN (awk, ASE_AWK_EEXPRNST, awk->token.line); - return ASE_NULL; + SETERRLIN (awk, QSE_AWK_EEXPRNST, awk->token.line); + return QSE_NULL; } awk->parse.depth.cur.expr++; left = parse_unary (awk, awk->token.line); awk->parse.depth.cur.expr--; - if (left == ASE_NULL) return ASE_NULL; + if (left == QSE_NULL) return QSE_NULL; - nde = (ase_awk_nde_exp_t*) - ASE_AWK_ALLOC (awk, ASE_SIZEOF(ase_awk_nde_exp_t)); - if (nde == ASE_NULL) + nde = (qse_awk_nde_exp_t*) + QSE_AWK_ALLOC (awk, QSE_SIZEOF(qse_awk_nde_exp_t)); + if (nde == QSE_NULL) { - ase_awk_clrpt (awk, left); + qse_awk_clrpt (awk, left); - SETERRLIN (awk, ASE_AWK_ENOMEM, line); - return ASE_NULL; + SETERRLIN (awk, QSE_AWK_ENOMEM, line); + return QSE_NULL; } - nde->type = ASE_AWK_NDE_EXP_UNR; + nde->type = QSE_AWK_NDE_EXP_UNR; nde->line = line; - nde->next = ASE_NULL; + nde->next = QSE_NULL; nde->opcode = opcode; nde->left = left; - nde->right = ASE_NULL; + nde->right = QSE_NULL; - return (ase_awk_nde_t*)nde; + return (qse_awk_nde_t*)nde; } -static ase_awk_nde_t* parse_exponent (ase_awk_t* awk, ase_size_t line) +static qse_awk_nde_t* parse_exponent (qse_awk_t* awk, qse_size_t line) { static binmap_t map[] = { - { TOKEN_EXP, ASE_AWK_BINOP_EXP }, + { TOKEN_EXP, QSE_AWK_BINOP_EXP }, { TOKEN_EOF, 0 } }; return parse_binary_expr (awk, line, 0, map, parse_unary_exp); } -static ase_awk_nde_t* parse_unary_exp (ase_awk_t* awk, ase_size_t line) +static qse_awk_nde_t* parse_unary_exp (qse_awk_t* awk, qse_size_t line) { - ase_awk_nde_exp_t* nde; - ase_awk_nde_t* left; + qse_awk_nde_exp_t* nde; + qse_awk_nde_t* left; int opcode; - opcode = (MATCH(awk,TOKEN_PLUS))? ASE_AWK_UNROP_PLUS: - (MATCH(awk,TOKEN_MINUS))? ASE_AWK_UNROP_MINUS: - (MATCH(awk,TOKEN_LNOT))? ASE_AWK_UNROP_LNOT: - (MATCH(awk,TOKEN_TILDE))? ASE_AWK_UNROP_BNOT: -1; + opcode = (MATCH(awk,TOKEN_PLUS))? QSE_AWK_UNROP_PLUS: + (MATCH(awk,TOKEN_MINUS))? QSE_AWK_UNROP_MINUS: + (MATCH(awk,TOKEN_LNOT))? QSE_AWK_UNROP_LNOT: + (MATCH(awk,TOKEN_TILDE))? QSE_AWK_UNROP_BNOT: -1; if (opcode == -1) return parse_increment (awk, line); - if (get_token(awk) == -1) return ASE_NULL; + if (get_token(awk) == -1) return QSE_NULL; if (awk->parse.depth.max.expr > 0 && awk->parse.depth.cur.expr >= awk->parse.depth.max.expr) { - SETERRLIN (awk, ASE_AWK_EEXPRNST, awk->token.line); - return ASE_NULL; + SETERRLIN (awk, QSE_AWK_EEXPRNST, awk->token.line); + return QSE_NULL; } awk->parse.depth.cur.expr++; left = parse_unary (awk, awk->token.line); awk->parse.depth.cur.expr--; - if (left == ASE_NULL) return ASE_NULL; + if (left == QSE_NULL) return QSE_NULL; - nde = (ase_awk_nde_exp_t*) - ASE_AWK_ALLOC (awk, ASE_SIZEOF(ase_awk_nde_exp_t)); - if (nde == ASE_NULL) + nde = (qse_awk_nde_exp_t*) + QSE_AWK_ALLOC (awk, QSE_SIZEOF(qse_awk_nde_exp_t)); + if (nde == QSE_NULL) { - ase_awk_clrpt (awk, left); + qse_awk_clrpt (awk, left); - SETERRLIN (awk, ASE_AWK_ENOMEM, line); - return ASE_NULL; + SETERRLIN (awk, QSE_AWK_ENOMEM, line); + return QSE_NULL; } - nde->type = ASE_AWK_NDE_EXP_UNR; + nde->type = QSE_AWK_NDE_EXP_UNR; nde->line = line; - nde->next = ASE_NULL; + nde->next = QSE_NULL; nde->opcode = opcode; nde->left = left; - nde->right = ASE_NULL; + nde->right = QSE_NULL; - return (ase_awk_nde_t*)nde; + return (qse_awk_nde_t*)nde; } -static ase_awk_nde_t* parse_increment (ase_awk_t* awk, ase_size_t line) +static qse_awk_nde_t* parse_increment (qse_awk_t* awk, qse_size_t line) { - ase_awk_nde_exp_t* nde; - ase_awk_nde_t* left; + qse_awk_nde_exp_t* nde; + qse_awk_nde_t* left; int type, opcode, opcode1, opcode2; /* check for prefix increment operator */ - opcode1 = MATCH(awk,TOKEN_PLUSPLUS)? ASE_AWK_INCOP_PLUS: - MATCH(awk,TOKEN_MINUSMINUS)? ASE_AWK_INCOP_MINUS: -1; + opcode1 = MATCH(awk,TOKEN_PLUSPLUS)? QSE_AWK_INCOP_PLUS: + MATCH(awk,TOKEN_MINUSMINUS)? QSE_AWK_INCOP_MINUS: -1; if (opcode1 != -1) { - if (get_token(awk) == -1) return ASE_NULL; + if (get_token(awk) == -1) return QSE_NULL; } left = parse_primary (awk, line); - if (left == ASE_NULL) return ASE_NULL; + if (left == QSE_NULL) return QSE_NULL; - if (awk->option & ASE_AWK_IMPLICIT) + if (awk->option & QSE_AWK_IMPLICIT) { /* concatenation operation by whitepaces are allowed * if this option is set. the ++/-- operator following @@ -2727,21 +2727,21 @@ static ase_awk_nde_t* parse_increment (ase_awk_t* awk, ase_size_t line) * for example, "abc" ++ 10 => "abc" . ++10 */ /*if (!is_var(left)) return left; XXX */ - if (!is_var(left) && left->type != ASE_AWK_NDE_POS) return left; + if (!is_var(left) && left->type != QSE_AWK_NDE_POS) return left; } /* check for postfix increment operator */ - opcode2 = MATCH(awk,TOKEN_PLUSPLUS)? ASE_AWK_INCOP_PLUS: - MATCH(awk,TOKEN_MINUSMINUS)? ASE_AWK_INCOP_MINUS: -1; + opcode2 = MATCH(awk,TOKEN_PLUSPLUS)? QSE_AWK_INCOP_PLUS: + MATCH(awk,TOKEN_MINUSMINUS)? QSE_AWK_INCOP_MINUS: -1; if (opcode1 != -1 && opcode2 != -1) { /* both prefix and postfix increment operator. * not allowed */ - ase_awk_clrpt (awk, left); + qse_awk_clrpt (awk, left); - SETERRLIN (awk, ASE_AWK_EPREPST, line); - return ASE_NULL; + SETERRLIN (awk, QSE_AWK_EPREPST, line); + return QSE_NULL; } else if (opcode1 == -1 && opcode2 == -1) { @@ -2751,39 +2751,39 @@ static ase_awk_nde_t* parse_increment (ase_awk_t* awk, ase_size_t line) else if (opcode1 != -1) { /* prefix increment operator */ - type = ASE_AWK_NDE_EXP_INCPRE; + type = QSE_AWK_NDE_EXP_INCPRE; opcode = opcode1; } else if (opcode2 != -1) { /* postfix increment operator */ - type = ASE_AWK_NDE_EXP_INCPST; + type = QSE_AWK_NDE_EXP_INCPST; opcode = opcode2; - if (get_token(awk) == -1) return ASE_NULL; + if (get_token(awk) == -1) return QSE_NULL; } - nde = (ase_awk_nde_exp_t*) - ASE_AWK_ALLOC (awk, ASE_SIZEOF(ase_awk_nde_exp_t)); - if (nde == ASE_NULL) + nde = (qse_awk_nde_exp_t*) + QSE_AWK_ALLOC (awk, QSE_SIZEOF(qse_awk_nde_exp_t)); + if (nde == QSE_NULL) { - ase_awk_clrpt (awk, left); + qse_awk_clrpt (awk, left); - SETERRLIN (awk, ASE_AWK_ENOMEM, line); - return ASE_NULL; + SETERRLIN (awk, QSE_AWK_ENOMEM, line); + return QSE_NULL; } nde->type = type; nde->line = line; - nde->next = ASE_NULL; + nde->next = QSE_NULL; nde->opcode = opcode; nde->left = left; - nde->right = ASE_NULL; + nde->right = QSE_NULL; - return (ase_awk_nde_t*)nde; + return (qse_awk_nde_t*)nde; } -static ase_awk_nde_t* parse_primary (ase_awk_t* awk, ase_size_t line) +static qse_awk_nde_t* parse_primary (qse_awk_t* awk, qse_size_t line) { if (MATCH(awk,TOKEN_IDENT)) { @@ -2791,239 +2791,239 @@ static ase_awk_nde_t* parse_primary (ase_awk_t* awk, ase_size_t line) } else if (MATCH(awk,TOKEN_INT)) { - ase_awk_nde_int_t* nde; + qse_awk_nde_int_t* nde; - nde = (ase_awk_nde_int_t*) ASE_AWK_ALLOC ( - awk, ASE_SIZEOF(ase_awk_nde_int_t)); - if (nde == ASE_NULL) + nde = (qse_awk_nde_int_t*) QSE_AWK_ALLOC ( + awk, QSE_SIZEOF(qse_awk_nde_int_t)); + if (nde == QSE_NULL) { - SETERRLIN (awk, ASE_AWK_ENOMEM, line); - return ASE_NULL; + SETERRLIN (awk, QSE_AWK_ENOMEM, line); + return QSE_NULL; } - nde->type = ASE_AWK_NDE_INT; + nde->type = QSE_AWK_NDE_INT; nde->line = line; - nde->next = ASE_NULL; - nde->val = ase_awk_strxtolong (awk, - ASE_STR_PTR(awk->token.name), - ASE_STR_LEN(awk->token.name), 0, ASE_NULL); - nde->str = ASE_AWK_STRXDUP (awk, - ASE_STR_PTR(awk->token.name), - ASE_STR_LEN(awk->token.name)); - if (nde->str == ASE_NULL) + nde->next = QSE_NULL; + nde->val = qse_awk_strxtolong (awk, + QSE_STR_PTR(awk->token.name), + QSE_STR_LEN(awk->token.name), 0, QSE_NULL); + nde->str = QSE_AWK_STRXDUP (awk, + QSE_STR_PTR(awk->token.name), + QSE_STR_LEN(awk->token.name)); + if (nde->str == QSE_NULL) { - ASE_AWK_FREE (awk, nde); - return ASE_NULL; + QSE_AWK_FREE (awk, nde); + return QSE_NULL; } - nde->len = ASE_STR_LEN(awk->token.name); + nde->len = QSE_STR_LEN(awk->token.name); - ASE_ASSERT ( - ASE_STR_LEN(awk->token.name) == - ase_strlen(ASE_STR_PTR(awk->token.name))); + QSE_ASSERT ( + QSE_STR_LEN(awk->token.name) == + qse_strlen(QSE_STR_PTR(awk->token.name))); if (get_token(awk) == -1) { - ASE_AWK_FREE (awk, nde->str); - ASE_AWK_FREE (awk, nde); - return ASE_NULL; + QSE_AWK_FREE (awk, nde->str); + QSE_AWK_FREE (awk, nde); + return QSE_NULL; } - return (ase_awk_nde_t*)nde; + return (qse_awk_nde_t*)nde; } else if (MATCH(awk,TOKEN_REAL)) { - ase_awk_nde_real_t* nde; + qse_awk_nde_real_t* nde; - nde = (ase_awk_nde_real_t*) ASE_AWK_ALLOC ( - awk, ASE_SIZEOF(ase_awk_nde_real_t)); - if (nde == ASE_NULL) + nde = (qse_awk_nde_real_t*) QSE_AWK_ALLOC ( + awk, QSE_SIZEOF(qse_awk_nde_real_t)); + if (nde == QSE_NULL) { - SETERRLIN (awk, ASE_AWK_ENOMEM, line); - return ASE_NULL; + SETERRLIN (awk, QSE_AWK_ENOMEM, line); + return QSE_NULL; } - nde->type = ASE_AWK_NDE_REAL; + nde->type = QSE_AWK_NDE_REAL; nde->line = line; - nde->next = ASE_NULL; - nde->val = ase_awk_strxtoreal (awk, - ASE_STR_PTR(awk->token.name), - ASE_STR_LEN(awk->token.name), ASE_NULL); - nde->str = ASE_AWK_STRXDUP (awk, - ASE_STR_PTR(awk->token.name), - ASE_STR_LEN(awk->token.name)); - if (nde->str == ASE_NULL) + nde->next = QSE_NULL; + nde->val = qse_awk_strxtoreal (awk, + QSE_STR_PTR(awk->token.name), + QSE_STR_LEN(awk->token.name), QSE_NULL); + nde->str = QSE_AWK_STRXDUP (awk, + QSE_STR_PTR(awk->token.name), + QSE_STR_LEN(awk->token.name)); + if (nde->str == QSE_NULL) { - ASE_AWK_FREE (awk, nde); - return ASE_NULL; + QSE_AWK_FREE (awk, nde); + return QSE_NULL; } - nde->len = ASE_STR_LEN(awk->token.name); + nde->len = QSE_STR_LEN(awk->token.name); - ASE_ASSERT ( - ASE_STR_LEN(awk->token.name) == - ase_strlen(ASE_STR_PTR(awk->token.name))); + QSE_ASSERT ( + QSE_STR_LEN(awk->token.name) == + qse_strlen(QSE_STR_PTR(awk->token.name))); if (get_token(awk) == -1) { - ASE_AWK_FREE (awk, nde->str); - ASE_AWK_FREE (awk, nde); - return ASE_NULL; + QSE_AWK_FREE (awk, nde->str); + QSE_AWK_FREE (awk, nde); + return QSE_NULL; } - return (ase_awk_nde_t*)nde; + return (qse_awk_nde_t*)nde; } else if (MATCH(awk,TOKEN_STR)) { - ase_awk_nde_str_t* nde; + qse_awk_nde_str_t* nde; - nde = (ase_awk_nde_str_t*) ASE_AWK_ALLOC ( - awk, ASE_SIZEOF(ase_awk_nde_str_t)); - if (nde == ASE_NULL) + nde = (qse_awk_nde_str_t*) QSE_AWK_ALLOC ( + awk, QSE_SIZEOF(qse_awk_nde_str_t)); + if (nde == QSE_NULL) { - SETERRLIN (awk, ASE_AWK_ENOMEM, line); - return ASE_NULL; + SETERRLIN (awk, QSE_AWK_ENOMEM, line); + return QSE_NULL; } - nde->type = ASE_AWK_NDE_STR; + nde->type = QSE_AWK_NDE_STR; nde->line = line; - nde->next = ASE_NULL; - nde->len = ASE_STR_LEN(awk->token.name); - nde->buf = ASE_AWK_STRXDUP (awk, - ASE_STR_PTR(awk->token.name), nde->len); - if (nde->buf == ASE_NULL) + nde->next = QSE_NULL; + nde->len = QSE_STR_LEN(awk->token.name); + nde->buf = QSE_AWK_STRXDUP (awk, + QSE_STR_PTR(awk->token.name), nde->len); + if (nde->buf == QSE_NULL) { - ASE_AWK_FREE (awk, nde); - SETERRLIN (awk, ASE_AWK_ENOMEM, line); - return ASE_NULL; + QSE_AWK_FREE (awk, nde); + SETERRLIN (awk, QSE_AWK_ENOMEM, line); + return QSE_NULL; } if (get_token(awk) == -1) { - ASE_AWK_FREE (awk, nde->buf); - ASE_AWK_FREE (awk, nde); - return ASE_NULL; + QSE_AWK_FREE (awk, nde->buf); + QSE_AWK_FREE (awk, nde); + return QSE_NULL; } - return (ase_awk_nde_t*)nde; + return (qse_awk_nde_t*)nde; } else if (MATCH(awk,TOKEN_DIV)) { - ase_awk_nde_rex_t* nde; + qse_awk_nde_rex_t* nde; int errnum; /* the regular expression is tokenized here because * of the context-sensitivity of the slash symbol */ SET_TOKEN_TYPE (awk, TOKEN_REX); - ase_str_clear (awk->token.name); - if (get_rexstr (awk) == -1) return ASE_NULL; - ASE_ASSERT (MATCH(awk,TOKEN_REX)); + qse_str_clear (awk->token.name); + if (get_rexstr (awk) == -1) return QSE_NULL; + QSE_ASSERT (MATCH(awk,TOKEN_REX)); - nde = (ase_awk_nde_rex_t*) ASE_AWK_ALLOC ( - awk, ASE_SIZEOF(ase_awk_nde_rex_t)); - if (nde == ASE_NULL) + nde = (qse_awk_nde_rex_t*) QSE_AWK_ALLOC ( + awk, QSE_SIZEOF(qse_awk_nde_rex_t)); + if (nde == QSE_NULL) { - SETERRLIN (awk, ASE_AWK_ENOMEM, line); - return ASE_NULL; + SETERRLIN (awk, QSE_AWK_ENOMEM, line); + return QSE_NULL; } - nde->type = ASE_AWK_NDE_REX; + nde->type = QSE_AWK_NDE_REX; nde->line = line; - nde->next = ASE_NULL; + nde->next = QSE_NULL; - nde->len = ASE_STR_LEN(awk->token.name); - nde->buf = ASE_AWK_STRXDUP (awk, - ASE_STR_PTR(awk->token.name), - ASE_STR_LEN(awk->token.name)); - if (nde->buf == ASE_NULL) + nde->len = QSE_STR_LEN(awk->token.name); + nde->buf = QSE_AWK_STRXDUP (awk, + QSE_STR_PTR(awk->token.name), + QSE_STR_LEN(awk->token.name)); + if (nde->buf == QSE_NULL) { - ASE_AWK_FREE (awk, nde); - SETERRLIN (awk, ASE_AWK_ENOMEM, line); - return ASE_NULL; + QSE_AWK_FREE (awk, nde); + SETERRLIN (awk, QSE_AWK_ENOMEM, line); + return QSE_NULL; } - nde->code = ASE_AWK_BUILDREX (awk, - ASE_STR_PTR(awk->token.name), - ASE_STR_LEN(awk->token.name), + nde->code = QSE_AWK_BUILDREX (awk, + QSE_STR_PTR(awk->token.name), + QSE_STR_LEN(awk->token.name), &errnum); - if (nde->code == ASE_NULL) + if (nde->code == QSE_NULL) { - ASE_AWK_FREE (awk, nde->buf); - ASE_AWK_FREE (awk, nde); + QSE_AWK_FREE (awk, nde->buf); + QSE_AWK_FREE (awk, nde); SETERRLIN (awk, errnum, line); - return ASE_NULL; + return QSE_NULL; } if (get_token(awk) == -1) { - ASE_AWK_FREE (awk, nde->buf); - ASE_AWK_FREE (awk, nde->code); - ASE_AWK_FREE (awk, nde); - return ASE_NULL; + QSE_AWK_FREE (awk, nde->buf); + QSE_AWK_FREE (awk, nde->code); + QSE_AWK_FREE (awk, nde); + return QSE_NULL; } - return (ase_awk_nde_t*)nde; + return (qse_awk_nde_t*)nde; } else if (MATCH(awk,TOKEN_DOLLAR)) { - ase_awk_nde_pos_t* nde; - ase_awk_nde_t* prim; + qse_awk_nde_pos_t* nde; + qse_awk_nde_t* prim; - if (get_token(awk)) return ASE_NULL; + if (get_token(awk)) return QSE_NULL; prim = parse_primary (awk, awk->token.line); - if (prim == ASE_NULL) return ASE_NULL; + if (prim == QSE_NULL) return QSE_NULL; - nde = (ase_awk_nde_pos_t*) ASE_AWK_ALLOC ( - awk, ASE_SIZEOF(ase_awk_nde_pos_t)); - if (nde == ASE_NULL) + nde = (qse_awk_nde_pos_t*) QSE_AWK_ALLOC ( + awk, QSE_SIZEOF(qse_awk_nde_pos_t)); + if (nde == QSE_NULL) { - ase_awk_clrpt (awk, prim); - SETERRLIN (awk, ASE_AWK_ENOMEM, line); - return ASE_NULL; + qse_awk_clrpt (awk, prim); + SETERRLIN (awk, QSE_AWK_ENOMEM, line); + return QSE_NULL; } - nde->type = ASE_AWK_NDE_POS; + nde->type = QSE_AWK_NDE_POS; nde->line = line; - nde->next = ASE_NULL; + nde->next = QSE_NULL; nde->val = prim; - return (ase_awk_nde_t*)nde; + return (qse_awk_nde_t*)nde; } else if (MATCH(awk,TOKEN_LPAREN)) { - ase_awk_nde_t* nde; - ase_awk_nde_t* last; + qse_awk_nde_t* nde; + qse_awk_nde_t* last; /* eat up the left parenthesis */ - if (get_token(awk) == -1) return ASE_NULL; + if (get_token(awk) == -1) return QSE_NULL; /* parse the sub-expression inside the parentheses */ nde = parse_expression (awk, awk->token.line); - if (nde == ASE_NULL) return ASE_NULL; + if (nde == QSE_NULL) return QSE_NULL; /* parse subsequent expressions separated by a comma, if any */ last = nde; - ASE_ASSERT (last->next == ASE_NULL); + QSE_ASSERT (last->next == QSE_NULL); while (MATCH(awk,TOKEN_COMMA)) { - ase_awk_nde_t* tmp; + qse_awk_nde_t* tmp; if (get_token(awk) == -1) { - ase_awk_clrpt (awk, nde); - return ASE_NULL; + qse_awk_clrpt (awk, nde); + return QSE_NULL; } tmp = parse_expression (awk, awk->token.line); - if (tmp == ASE_NULL) + if (tmp == QSE_NULL) { - ase_awk_clrpt (awk, nde); - return ASE_NULL; + qse_awk_clrpt (awk, nde); + return QSE_NULL; } - ASE_ASSERT (tmp->next == ASE_NULL); + QSE_ASSERT (tmp->next == QSE_NULL); last->next = tmp; last = tmp; } @@ -3032,25 +3032,25 @@ static ase_awk_nde_t* parse_primary (ase_awk_t* awk, ase_size_t line) /* check for the closing parenthesis */ if (!MATCH(awk,TOKEN_RPAREN)) { - ase_awk_clrpt (awk, nde); + qse_awk_clrpt (awk, nde); - SETERRTOK (awk, ASE_AWK_ERPAREN); - return ASE_NULL; + SETERRTOK (awk, QSE_AWK_ERPAREN); + return QSE_NULL; } if (get_token(awk) == -1) { - ase_awk_clrpt (awk, nde); - return ASE_NULL; + qse_awk_clrpt (awk, nde); + return QSE_NULL; } /* check if it is a chained node */ - if (nde->next != ASE_NULL) + if (nde->next != QSE_NULL) { /* if so, it is a expression group */ /* (expr1, expr2, expr2) */ - ase_awk_nde_grp_t* tmp; + qse_awk_nde_grp_t* tmp; if ((awk->parse.id.stmnt != TOKEN_PRINT && awk->parse.id.stmnt != TOKEN_PRINTF) || @@ -3058,28 +3058,28 @@ static ase_awk_nde_t* parse_primary (ase_awk_t* awk, ase_size_t line) { if (!MATCH(awk,TOKEN_IN)) { - ase_awk_clrpt (awk, nde); + qse_awk_clrpt (awk, nde); - SETERRTOK (awk, ASE_AWK_EIN); - return ASE_NULL; + SETERRTOK (awk, QSE_AWK_EIN); + return QSE_NULL; } } - tmp = (ase_awk_nde_grp_t*) ASE_AWK_ALLOC ( - awk, ASE_SIZEOF(ase_awk_nde_grp_t)); - if (tmp == ASE_NULL) + tmp = (qse_awk_nde_grp_t*) QSE_AWK_ALLOC ( + awk, QSE_SIZEOF(qse_awk_nde_grp_t)); + if (tmp == QSE_NULL) { - ase_awk_clrpt (awk, nde); - SETERRLIN (awk, ASE_AWK_ENOMEM, line); - return ASE_NULL; + qse_awk_clrpt (awk, nde); + SETERRLIN (awk, QSE_AWK_ENOMEM, line); + return QSE_NULL; } - tmp->type = ASE_AWK_NDE_GRP; + tmp->type = QSE_AWK_NDE_GRP; tmp->line = line; - tmp->next = ASE_NULL; + tmp->next = QSE_NULL; tmp->body = nde; - nde = (ase_awk_nde_t*)tmp; + nde = (qse_awk_nde_t*)tmp; } /* ----------------- */ @@ -3087,17 +3087,17 @@ static ase_awk_nde_t* parse_primary (ase_awk_t* awk, ase_size_t line) } else if (MATCH(awk,TOKEN_GETLINE)) { - ase_awk_nde_getline_t* nde; - ase_awk_nde_t* var = ASE_NULL; - ase_awk_nde_t* in = ASE_NULL; + qse_awk_nde_getline_t* nde; + qse_awk_nde_t* var = QSE_NULL; + qse_awk_nde_t* in = QSE_NULL; - if (get_token(awk) == -1) return ASE_NULL; + if (get_token(awk) == -1) return QSE_NULL; if (MATCH(awk,TOKEN_IDENT)) { /* getline var */ var = parse_primary (awk, awk->token.line); - if (var == ASE_NULL) return ASE_NULL; + if (var == QSE_NULL) return QSE_NULL; } if (MATCH(awk, TOKEN_LT)) @@ -3105,338 +3105,338 @@ static ase_awk_nde_t* parse_primary (ase_awk_t* awk, ase_size_t line) /* getline [var] < file */ if (get_token(awk) == -1) { - if (var != ASE_NULL) ase_awk_clrpt (awk, var); - return ASE_NULL; + if (var != QSE_NULL) qse_awk_clrpt (awk, var); + return QSE_NULL; } /* TODO: is this correct? */ /*in = parse_expression (awk);*/ in = parse_primary (awk, awk->token.line); - if (in == ASE_NULL) + if (in == QSE_NULL) { - if (var != ASE_NULL) ase_awk_clrpt (awk, var); - return ASE_NULL; + if (var != QSE_NULL) qse_awk_clrpt (awk, var); + return QSE_NULL; } } - nde = (ase_awk_nde_getline_t*) ASE_AWK_ALLOC ( - awk, ASE_SIZEOF(ase_awk_nde_getline_t)); - if (nde == ASE_NULL) + nde = (qse_awk_nde_getline_t*) QSE_AWK_ALLOC ( + awk, QSE_SIZEOF(qse_awk_nde_getline_t)); + if (nde == QSE_NULL) { - if (var != ASE_NULL) ase_awk_clrpt (awk, var); - if (in != ASE_NULL) ase_awk_clrpt (awk, in); - SETERRLIN (awk, ASE_AWK_ENOMEM, line); - return ASE_NULL; + if (var != QSE_NULL) qse_awk_clrpt (awk, var); + if (in != QSE_NULL) qse_awk_clrpt (awk, in); + SETERRLIN (awk, QSE_AWK_ENOMEM, line); + return QSE_NULL; } - nde->type = ASE_AWK_NDE_GETLINE; + nde->type = QSE_AWK_NDE_GETLINE; nde->line = line; - nde->next = ASE_NULL; + nde->next = QSE_NULL; nde->var = var; - nde->in_type = (in == ASE_NULL)? - ASE_AWK_IN_CONSOLE: ASE_AWK_IN_FILE; + nde->in_type = (in == QSE_NULL)? + QSE_AWK_IN_CONSOLE: QSE_AWK_IN_FILE; nde->in = in; - return (ase_awk_nde_t*)nde; + return (qse_awk_nde_t*)nde; } /* valid expression introducer is expected */ - SETERRLIN (awk, ASE_AWK_EEXPRES, + SETERRLIN (awk, QSE_AWK_EEXPRES, (MATCH(awk,TOKEN_EOF)? awk->token.prev.line: line)); - return ASE_NULL; + return QSE_NULL; } -static ase_awk_nde_t* parse_primary_ident (ase_awk_t* awk, ase_size_t line) +static qse_awk_nde_t* parse_primary_ident (qse_awk_t* awk, qse_size_t line) { - ase_char_t* name_dup; - ase_size_t name_len; - ase_awk_bfn_t* bfn; - ase_size_t idxa; + qse_char_t* name_dup; + qse_size_t name_len; + qse_awk_bfn_t* bfn; + qse_size_t idxa; - ASE_ASSERT (MATCH(awk,TOKEN_IDENT)); + QSE_ASSERT (MATCH(awk,TOKEN_IDENT)); - name_dup = ASE_AWK_STRXDUP (awk, - ASE_STR_PTR(awk->token.name), - ASE_STR_LEN(awk->token.name)); - if (name_dup == ASE_NULL) + name_dup = QSE_AWK_STRXDUP (awk, + QSE_STR_PTR(awk->token.name), + QSE_STR_LEN(awk->token.name)); + if (name_dup == QSE_NULL) { - SETERRLIN (awk, ASE_AWK_ENOMEM, line); - return ASE_NULL; + SETERRLIN (awk, QSE_AWK_ENOMEM, line); + return QSE_NULL; } - name_len = ASE_STR_LEN(awk->token.name); + name_len = QSE_STR_LEN(awk->token.name); if (get_token(awk) == -1) { - ASE_AWK_FREE (awk, name_dup); - return ASE_NULL; + QSE_AWK_FREE (awk, name_dup); + return QSE_NULL; } /* check if name_dup is an intrinsic function name */ - bfn = ase_awk_getbfn (awk, name_dup, name_len); - if (bfn != ASE_NULL) + bfn = qse_awk_getbfn (awk, name_dup, name_len); + if (bfn != QSE_NULL) { - ase_awk_nde_t* nde; + qse_awk_nde_t* nde; if (!MATCH(awk,TOKEN_LPAREN)) { /* an intrinsic function should be in the form * of the function call */ - ASE_AWK_FREE (awk, name_dup); - SETERRTOK (awk, ASE_AWK_ELPAREN); - return ASE_NULL; + QSE_AWK_FREE (awk, name_dup); + SETERRTOK (awk, QSE_AWK_ELPAREN); + return QSE_NULL; } nde = parse_fncall (awk, name_dup, name_len, bfn, line); - if (nde == ASE_NULL) ASE_AWK_FREE (awk, name_dup); - return (ase_awk_nde_t*)nde; + if (nde == QSE_NULL) QSE_AWK_FREE (awk, name_dup); + return (qse_awk_nde_t*)nde; } /* now we know that name_dup is a normal identifier. */ if (MATCH(awk,TOKEN_LBRACK)) { - ase_awk_nde_t* nde; + qse_awk_nde_t* nde; nde = parse_hashidx (awk, name_dup, name_len, line); - if (nde == ASE_NULL) ASE_AWK_FREE (awk, name_dup); - return (ase_awk_nde_t*)nde; + if (nde == QSE_NULL) QSE_AWK_FREE (awk, name_dup); + return (qse_awk_nde_t*)nde; } - else if ((idxa = ase_lda_rsearch (awk->parse.locals, ASE_LDA_SIZE(awk->parse.locals), name_dup, name_len)) != ASE_LDA_INVALID) + else if ((idxa = qse_lda_rsearch (awk->parse.locals, QSE_LDA_SIZE(awk->parse.locals), name_dup, name_len)) != QSE_LDA_INVALID) { /* local variable */ - ase_awk_nde_var_t* nde; + qse_awk_nde_var_t* nde; if (MATCH(awk,TOKEN_LPAREN)) { /* a local variable is not a function */ - SETERRARG (awk, ASE_AWK_EFNNAME, line, name_dup, name_len); - ASE_AWK_FREE (awk, name_dup); - return ASE_NULL; + SETERRARG (awk, QSE_AWK_EFNNAME, line, name_dup, name_len); + QSE_AWK_FREE (awk, name_dup); + return QSE_NULL; } - nde = (ase_awk_nde_var_t*) ASE_AWK_ALLOC ( - awk, ASE_SIZEOF(ase_awk_nde_var_t)); - if (nde == ASE_NULL) + nde = (qse_awk_nde_var_t*) QSE_AWK_ALLOC ( + awk, QSE_SIZEOF(qse_awk_nde_var_t)); + if (nde == QSE_NULL) { - ASE_AWK_FREE (awk, name_dup); - SETERRLIN (awk, ASE_AWK_ENOMEM, line); - return ASE_NULL; + QSE_AWK_FREE (awk, name_dup); + SETERRLIN (awk, QSE_AWK_ENOMEM, line); + return QSE_NULL; } - nde->type = ASE_AWK_NDE_LOCAL; + nde->type = QSE_AWK_NDE_LOCAL; nde->line = line; - nde->next = ASE_NULL; - /*nde->id.name.ptr = ASE_NULL;*/ + nde->next = QSE_NULL; + /*nde->id.name.ptr = QSE_NULL;*/ nde->id.name.ptr = name_dup; nde->id.name.len = name_len; nde->id.idxa = idxa; - nde->idx = ASE_NULL; + nde->idx = QSE_NULL; - return (ase_awk_nde_t*)nde; + return (qse_awk_nde_t*)nde; } - else if ((idxa = ase_lda_search (awk->parse.params, 0, name_dup, name_len)) != ASE_LDA_INVALID) + else if ((idxa = qse_lda_search (awk->parse.params, 0, name_dup, name_len)) != QSE_LDA_INVALID) { /* parameter */ - ase_awk_nde_var_t* nde; + qse_awk_nde_var_t* nde; if (MATCH(awk,TOKEN_LPAREN)) { /* a parameter is not a function */ - SETERRARG (awk, ASE_AWK_EFNNAME, line, name_dup, name_len); - ASE_AWK_FREE (awk, name_dup); - return ASE_NULL; + SETERRARG (awk, QSE_AWK_EFNNAME, line, name_dup, name_len); + QSE_AWK_FREE (awk, name_dup); + return QSE_NULL; } - nde = (ase_awk_nde_var_t*) ASE_AWK_ALLOC ( - awk, ASE_SIZEOF(ase_awk_nde_var_t)); - if (nde == ASE_NULL) + nde = (qse_awk_nde_var_t*) QSE_AWK_ALLOC ( + awk, QSE_SIZEOF(qse_awk_nde_var_t)); + if (nde == QSE_NULL) { - ASE_AWK_FREE (awk, name_dup); - SETERRLIN (awk, ASE_AWK_ENOMEM, line); - return ASE_NULL; + QSE_AWK_FREE (awk, name_dup); + SETERRLIN (awk, QSE_AWK_ENOMEM, line); + return QSE_NULL; } - nde->type = ASE_AWK_NDE_ARG; + nde->type = QSE_AWK_NDE_ARG; nde->line = line; - nde->next = ASE_NULL; - /*nde->id.name = ASE_NULL;*/ + nde->next = QSE_NULL; + /*nde->id.name = QSE_NULL;*/ nde->id.name.ptr = name_dup; nde->id.name.len = name_len; nde->id.idxa = idxa; - nde->idx = ASE_NULL; + nde->idx = QSE_NULL; - return (ase_awk_nde_t*)nde; + return (qse_awk_nde_t*)nde; } - else if ((idxa = get_global (awk, name_dup, name_len)) != ASE_LDA_INVALID) + else if ((idxa = get_global (awk, name_dup, name_len)) != QSE_LDA_INVALID) { /* global variable */ - ase_awk_nde_var_t* nde; + qse_awk_nde_var_t* nde; if (MATCH(awk,TOKEN_LPAREN)) { /* a global variable is not a function */ - SETERRARG (awk, ASE_AWK_EFNNAME, line, name_dup, name_len); - ASE_AWK_FREE (awk, name_dup); - return ASE_NULL; + SETERRARG (awk, QSE_AWK_EFNNAME, line, name_dup, name_len); + QSE_AWK_FREE (awk, name_dup); + return QSE_NULL; } - nde = (ase_awk_nde_var_t*) ASE_AWK_ALLOC ( - awk, ASE_SIZEOF(ase_awk_nde_var_t)); - if (nde == ASE_NULL) + nde = (qse_awk_nde_var_t*) QSE_AWK_ALLOC ( + awk, QSE_SIZEOF(qse_awk_nde_var_t)); + if (nde == QSE_NULL) { - ASE_AWK_FREE (awk, name_dup); - SETERRLIN (awk, ASE_AWK_ENOMEM, line); - return ASE_NULL; + QSE_AWK_FREE (awk, name_dup); + SETERRLIN (awk, QSE_AWK_ENOMEM, line); + return QSE_NULL; } - nde->type = ASE_AWK_NDE_GLOBAL; + nde->type = QSE_AWK_NDE_GLOBAL; nde->line = line; - nde->next = ASE_NULL; - /*nde->id.name = ASE_NULL;*/ + nde->next = QSE_NULL; + /*nde->id.name = QSE_NULL;*/ nde->id.name.ptr = name_dup; nde->id.name.len = name_len; nde->id.idxa = idxa; - nde->idx = ASE_NULL; + nde->idx = QSE_NULL; - return (ase_awk_nde_t*)nde; + return (qse_awk_nde_t*)nde; } else if (MATCH(awk,TOKEN_LPAREN)) { /* function call */ - ase_awk_nde_t* nde; + qse_awk_nde_t* nde; - if (awk->option & ASE_AWK_IMPLICIT) + if (awk->option & QSE_AWK_IMPLICIT) { - if (ase_map_search (awk->parse.named, - name_dup, name_len) != ASE_NULL) + if (qse_map_search (awk->parse.named, + name_dup, name_len) != QSE_NULL) { /* a function call conflicts with a named variable */ - SETERRARG (awk, ASE_AWK_EVARRED, line, name_dup, name_len); - ASE_AWK_FREE (awk, name_dup); - return ASE_NULL; + SETERRARG (awk, QSE_AWK_EVARRED, line, name_dup, name_len); + QSE_AWK_FREE (awk, name_dup); + return QSE_NULL; } } - nde = parse_fncall (awk, name_dup, name_len, ASE_NULL, line); - if (nde == ASE_NULL) ASE_AWK_FREE (awk, name_dup); - return (ase_awk_nde_t*)nde; + nde = parse_fncall (awk, name_dup, name_len, QSE_NULL, line); + if (nde == QSE_NULL) QSE_AWK_FREE (awk, name_dup); + return (qse_awk_nde_t*)nde; } else { /* named variable */ - ase_awk_nde_var_t* nde; + qse_awk_nde_var_t* nde; - nde = (ase_awk_nde_var_t*) ASE_AWK_ALLOC ( - awk, ASE_SIZEOF(ase_awk_nde_var_t)); - if (nde == ASE_NULL) + nde = (qse_awk_nde_var_t*) QSE_AWK_ALLOC ( + awk, QSE_SIZEOF(qse_awk_nde_var_t)); + if (nde == QSE_NULL) { - ASE_AWK_FREE (awk, name_dup); - SETERRLIN (awk, ASE_AWK_ENOMEM, line); - return ASE_NULL; + QSE_AWK_FREE (awk, name_dup); + SETERRLIN (awk, QSE_AWK_ENOMEM, line); + return QSE_NULL; } - if (awk->option & ASE_AWK_IMPLICIT) + if (awk->option & QSE_AWK_IMPLICIT) { #if 0 - if (awk->option & ASE_AWK_UNIQUEFN) + if (awk->option & QSE_AWK_UNIQUEFN) { #endif - ase_bool_t iscur = ASE_FALSE; + qse_bool_t iscur = QSE_FALSE; /* the name should not conflict with a function name */ /* check if it is a builtin function */ - if (ase_awk_getbfn (awk, name_dup, name_len) != ASE_NULL) + if (qse_awk_getbfn (awk, name_dup, name_len) != QSE_NULL) { - SETERRARG (awk, ASE_AWK_EBFNRED, line, name_dup, name_len); + SETERRARG (awk, QSE_AWK_EBFNRED, line, name_dup, name_len); goto exit_func; } /* check if it is an AWK function */ - if (awk->tree.cur_afn.ptr != ASE_NULL) + if (awk->tree.cur_afn.ptr != QSE_NULL) { - iscur = (ase_strxncmp ( + iscur = (qse_strxncmp ( awk->tree.cur_afn.ptr, awk->tree.cur_afn.len, name_dup, name_len) == 0); } - if (iscur || ase_map_search (awk->tree.afns, name_dup, name_len) != ASE_NULL) + if (iscur || qse_map_search (awk->tree.afns, name_dup, name_len) != QSE_NULL) { /* the function is defined previously */ - SETERRARG (awk, ASE_AWK_EAFNRED, line, name_dup, name_len); + SETERRARG (awk, QSE_AWK_EAFNRED, line, name_dup, name_len); goto exit_func; } - if (ase_map_search (awk->parse.afns, - name_dup, name_len) != ASE_NULL) + if (qse_map_search (awk->parse.afns, + name_dup, name_len) != QSE_NULL) { /* is it one of the function calls found so far? */ - SETERRARG (awk, ASE_AWK_EAFNRED, line, name_dup, name_len); + SETERRARG (awk, QSE_AWK_EAFNRED, line, name_dup, name_len); goto exit_func; } #if 0 } #endif - nde->type = ASE_AWK_NDE_NAMED; + nde->type = QSE_AWK_NDE_NAMED; nde->line = line; - nde->next = ASE_NULL; + nde->next = QSE_NULL; nde->id.name.ptr = name_dup; nde->id.name.len = name_len; - nde->id.idxa = (ase_size_t)-1; - nde->idx = ASE_NULL; + nde->id.idxa = (qse_size_t)-1; + nde->idx = QSE_NULL; /* collect unique instances of a named variables for reference */ - if (ase_map_upsert (awk->parse.named, + if (qse_map_upsert (awk->parse.named, name_dup, name_len, - &line, ASE_SIZEOF(line)) == ASE_NULL) + &line, QSE_SIZEOF(line)) == QSE_NULL) { - SETERRLIN (awk, ASE_AWK_ENOMEM, line); + SETERRLIN (awk, QSE_AWK_ENOMEM, line); goto exit_func; } - return (ase_awk_nde_t*)nde; + return (qse_awk_nde_t*)nde; } /* undefined variable */ - SETERRARG (awk, ASE_AWK_EUNDEF, line, name_dup, name_len); + SETERRARG (awk, QSE_AWK_EUNDEF, line, name_dup, name_len); exit_func: - ASE_AWK_FREE (awk, name_dup); - ASE_AWK_FREE (awk, nde); + QSE_AWK_FREE (awk, name_dup); + QSE_AWK_FREE (awk, nde); - return ASE_NULL; + return QSE_NULL; } } -static ase_awk_nde_t* parse_hashidx ( - ase_awk_t* awk, ase_char_t* name, ase_size_t name_len, ase_size_t line) +static qse_awk_nde_t* parse_hashidx ( + qse_awk_t* awk, qse_char_t* name, qse_size_t name_len, qse_size_t line) { - ase_awk_nde_t* idx, * tmp, * last; - ase_awk_nde_var_t* nde; - ase_size_t idxa; + qse_awk_nde_t* idx, * tmp, * last; + qse_awk_nde_var_t* nde; + qse_size_t idxa; - idx = ASE_NULL; - last = ASE_NULL; + idx = QSE_NULL; + last = QSE_NULL; do { if (get_token(awk) == -1) { - if (idx != ASE_NULL) ase_awk_clrpt (awk, idx); - return ASE_NULL; + if (idx != QSE_NULL) qse_awk_clrpt (awk, idx); + return QSE_NULL; } tmp = parse_expression (awk, awk->token.line); - if (tmp == ASE_NULL) + if (tmp == QSE_NULL) { - if (idx != ASE_NULL) ase_awk_clrpt (awk, idx); - return ASE_NULL; + if (idx != QSE_NULL) qse_awk_clrpt (awk, idx); + return QSE_NULL; } - if (idx == ASE_NULL) + if (idx == QSE_NULL) { - ASE_ASSERT (last == ASE_NULL); + QSE_ASSERT (last == QSE_NULL); idx = tmp; last = tmp; } else @@ -3447,159 +3447,159 @@ static ase_awk_nde_t* parse_hashidx ( } while (MATCH(awk,TOKEN_COMMA)); - ASE_ASSERT (idx != ASE_NULL); + QSE_ASSERT (idx != QSE_NULL); if (!MATCH(awk,TOKEN_RBRACK)) { - ase_awk_clrpt (awk, idx); + qse_awk_clrpt (awk, idx); - SETERRTOK (awk, ASE_AWK_ERBRACK); - return ASE_NULL; + SETERRTOK (awk, QSE_AWK_ERBRACK); + return QSE_NULL; } if (get_token(awk) == -1) { - ase_awk_clrpt (awk, idx); - return ASE_NULL; + qse_awk_clrpt (awk, idx); + return QSE_NULL; } - nde = (ase_awk_nde_var_t*) - ASE_AWK_ALLOC (awk, ASE_SIZEOF(ase_awk_nde_var_t)); - if (nde == ASE_NULL) + nde = (qse_awk_nde_var_t*) + QSE_AWK_ALLOC (awk, QSE_SIZEOF(qse_awk_nde_var_t)); + if (nde == QSE_NULL) { - ase_awk_clrpt (awk, idx); - SETERRLIN (awk, ASE_AWK_ENOMEM, line); - return ASE_NULL; + qse_awk_clrpt (awk, idx); + SETERRLIN (awk, QSE_AWK_ENOMEM, line); + return QSE_NULL; } /* search the local variable list */ - idxa = ase_lda_rsearch (awk->parse.locals, ASE_LDA_SIZE(awk->parse.locals), name, name_len); - if (idxa != ASE_LDA_INVALID) + idxa = qse_lda_rsearch (awk->parse.locals, QSE_LDA_SIZE(awk->parse.locals), name, name_len); + if (idxa != QSE_LDA_INVALID) { - nde->type = ASE_AWK_NDE_LOCALIDX; + nde->type = QSE_AWK_NDE_LOCALIDX; nde->line = line; - nde->next = ASE_NULL; - /*nde->id.name = ASE_NULL; */ + nde->next = QSE_NULL; + /*nde->id.name = QSE_NULL; */ nde->id.name.ptr = name; nde->id.name.len = name_len; nde->id.idxa = idxa; nde->idx = idx; - return (ase_awk_nde_t*)nde; + return (qse_awk_nde_t*)nde; } /* search the parameter name list */ - idxa = ase_lda_search (awk->parse.params, 0, name, name_len); - if (idxa != ASE_LDA_INVALID) + idxa = qse_lda_search (awk->parse.params, 0, name, name_len); + if (idxa != QSE_LDA_INVALID) { - nde->type = ASE_AWK_NDE_ARGIDX; + nde->type = QSE_AWK_NDE_ARGIDX; nde->line = line; - nde->next = ASE_NULL; - /*nde->id.name = ASE_NULL; */ + nde->next = QSE_NULL; + /*nde->id.name = QSE_NULL; */ nde->id.name.ptr = name; nde->id.name.len = name_len; nde->id.idxa = idxa; nde->idx = idx; - return (ase_awk_nde_t*)nde; + return (qse_awk_nde_t*)nde; } /* gets the global variable index */ idxa = get_global (awk, name, name_len); - if (idxa != ASE_LDA_INVALID) + if (idxa != QSE_LDA_INVALID) { - nde->type = ASE_AWK_NDE_GLOBALIDX; + nde->type = QSE_AWK_NDE_GLOBALIDX; nde->line = line; - nde->next = ASE_NULL; - /*nde->id.name = ASE_NULL;*/ + nde->next = QSE_NULL; + /*nde->id.name = QSE_NULL;*/ nde->id.name.ptr = name; nde->id.name.len = name_len; nde->id.idxa = idxa; nde->idx = idx; - return (ase_awk_nde_t*)nde; + return (qse_awk_nde_t*)nde; } - if (awk->option & ASE_AWK_IMPLICIT) + if (awk->option & QSE_AWK_IMPLICIT) { #if 0 - if (awk->option & ASE_AWK_UNIQUEFN) + if (awk->option & QSE_AWK_UNIQUEFN) { #endif - ase_bool_t iscur = ASE_FALSE; + qse_bool_t iscur = QSE_FALSE; /* check if it is a builtin function */ - if (ase_awk_getbfn (awk, name, name_len) != ASE_NULL) + if (qse_awk_getbfn (awk, name, name_len) != QSE_NULL) { - SETERRARG (awk, ASE_AWK_EBFNRED, line, name, name_len); + SETERRARG (awk, QSE_AWK_EBFNRED, line, name, name_len); goto exit_func; } /* check if it is an AWK function */ - if (awk->tree.cur_afn.ptr != ASE_NULL) + if (awk->tree.cur_afn.ptr != QSE_NULL) { - iscur = (ase_strxncmp ( + iscur = (qse_strxncmp ( awk->tree.cur_afn.ptr, awk->tree.cur_afn.len, name, name_len) == 0); } - if (iscur || ase_map_search (awk->tree.afns, name, name_len) != ASE_NULL) + if (iscur || qse_map_search (awk->tree.afns, name, name_len) != QSE_NULL) { /* the function is defined previously */ - SETERRARG (awk, ASE_AWK_EAFNRED, line, name, name_len); + SETERRARG (awk, QSE_AWK_EAFNRED, line, name, name_len); goto exit_func; } - if (ase_map_search ( - awk->parse.afns, name, name_len) != ASE_NULL) + if (qse_map_search ( + awk->parse.afns, name, name_len) != QSE_NULL) { /* is it one of the function calls found so far? */ - SETERRARG (awk, ASE_AWK_EAFNRED, line, name, name_len); + SETERRARG (awk, QSE_AWK_EAFNRED, line, name, name_len); goto exit_func; } #if 0 } #endif - nde->type = ASE_AWK_NDE_NAMEDIDX; + nde->type = QSE_AWK_NDE_NAMEDIDX; nde->line = line; - nde->next = ASE_NULL; + nde->next = QSE_NULL; nde->id.name.ptr = name; nde->id.name.len = name_len; - nde->id.idxa = (ase_size_t)-1; + nde->id.idxa = (qse_size_t)-1; nde->idx = idx; - return (ase_awk_nde_t*)nde; + return (qse_awk_nde_t*)nde; } /* undefined variable */ - SETERRARG (awk, ASE_AWK_EUNDEF, line, name, name_len); + SETERRARG (awk, QSE_AWK_EUNDEF, line, name, name_len); exit_func: - ase_awk_clrpt (awk, idx); - ASE_AWK_FREE (awk, nde); + qse_awk_clrpt (awk, idx); + QSE_AWK_FREE (awk, nde); - return ASE_NULL; + return QSE_NULL; } -static ase_awk_nde_t* parse_fncall ( - ase_awk_t* awk, ase_char_t* name, ase_size_t name_len, - ase_awk_bfn_t* bfn, ase_size_t line) +static qse_awk_nde_t* parse_fncall ( + qse_awk_t* awk, qse_char_t* name, qse_size_t name_len, + qse_awk_bfn_t* bfn, qse_size_t line) { - ase_awk_nde_t* head, * curr, * nde; - ase_awk_nde_call_t* call; - ase_size_t nargs; + qse_awk_nde_t* head, * curr, * nde; + qse_awk_nde_call_t* call; + qse_size_t nargs; - if (get_token(awk) == -1) return ASE_NULL; + if (get_token(awk) == -1) return QSE_NULL; - head = curr = ASE_NULL; + head = curr = QSE_NULL; nargs = 0; if (MATCH(awk,TOKEN_RPAREN)) { /* no parameters to the function call */ - if (get_token(awk) == -1) return ASE_NULL; + if (get_token(awk) == -1) return QSE_NULL; } else { @@ -3608,13 +3608,13 @@ static ase_awk_nde_t* parse_fncall ( while (1) { nde = parse_expression (awk, awk->token.line); - if (nde == ASE_NULL) + if (nde == QSE_NULL) { - if (head != ASE_NULL) ase_awk_clrpt (awk, head); - return ASE_NULL; + if (head != QSE_NULL) qse_awk_clrpt (awk, head); + return QSE_NULL; } - if (head == ASE_NULL) head = nde; + if (head == QSE_NULL) head = nde; else curr->next = nde; curr = nde; @@ -3624,45 +3624,45 @@ static ase_awk_nde_t* parse_fncall ( { if (get_token(awk) == -1) { - if (head != ASE_NULL) - ase_awk_clrpt (awk, head); - return ASE_NULL; + if (head != QSE_NULL) + qse_awk_clrpt (awk, head); + return QSE_NULL; } break; } if (!MATCH(awk,TOKEN_COMMA)) { - if (head != ASE_NULL) ase_awk_clrpt (awk, head); + if (head != QSE_NULL) qse_awk_clrpt (awk, head); - SETERRTOK (awk, ASE_AWK_ECOMMA); - return ASE_NULL; + SETERRTOK (awk, QSE_AWK_ECOMMA); + return QSE_NULL; } if (get_token(awk) == -1) { - if (head != ASE_NULL) ase_awk_clrpt (awk, head); - return ASE_NULL; + if (head != QSE_NULL) qse_awk_clrpt (awk, head); + return QSE_NULL; } } } - call = (ase_awk_nde_call_t*) - ASE_AWK_ALLOC (awk, ASE_SIZEOF(ase_awk_nde_call_t)); - if (call == ASE_NULL) + call = (qse_awk_nde_call_t*) + QSE_AWK_ALLOC (awk, QSE_SIZEOF(qse_awk_nde_call_t)); + if (call == QSE_NULL) { - if (head != ASE_NULL) ase_awk_clrpt (awk, head); + if (head != QSE_NULL) qse_awk_clrpt (awk, head); - SETERRLIN (awk, ASE_AWK_ENOMEM, line); - return ASE_NULL; + SETERRLIN (awk, QSE_AWK_ENOMEM, line); + return QSE_NULL; } - if (bfn != ASE_NULL) + if (bfn != QSE_NULL) { - call->type = ASE_AWK_NDE_BFN; + call->type = QSE_AWK_NDE_BFN; call->line = line; - call->next = ASE_NULL; + call->next = QSE_NULL; /*call->what.bfn = bfn; */ call->what.bfn.name.ptr = name; @@ -3670,8 +3670,8 @@ static ase_awk_nde_t* parse_fncall ( /* NOTE: oname is the original as in the bfn table. * it would not duplicated here and not freed in - * ase_awk_clrpt either. so ase_awk_delfunc between - * ase_awk_parse and ase_awk_run may cause the program + * qse_awk_clrpt either. so qse_awk_delfunc between + * qse_awk_parse and qse_awk_run may cause the program * to fail. */ call->what.bfn.oname.ptr = bfn->name.ptr; call->what.bfn.oname.len = bfn->name.len; @@ -3686,189 +3686,189 @@ static ase_awk_nde_t* parse_fncall ( } else { - call->type = ASE_AWK_NDE_AFN; + call->type = QSE_AWK_NDE_AFN; call->line = line; - call->next = ASE_NULL; + call->next = QSE_NULL; call->what.afn.name.ptr = name; call->what.afn.name.len = name_len; call->args = head; call->nargs = nargs; #if 0 - if (((awk->option & ASE_AWK_EXPLICIT) && - !(awk->option & ASE_AWK_IMPLICIT)) /*|| - (awk->option & ASE_AWK_UNIQUEFN)*/) + if (((awk->option & QSE_AWK_EXPLICIT) && + !(awk->option & QSE_AWK_IMPLICIT)) /*|| + (awk->option & QSE_AWK_UNIQUEFN)*/) { #endif /* store a non-builtin function call into the parse.afns table */ - if (ase_map_upsert ( + if (qse_map_upsert ( awk->parse.afns, name, name_len, - &line, ASE_SIZEOF(line)) == ASE_NULL) + &line, QSE_SIZEOF(line)) == QSE_NULL) { - ASE_AWK_FREE (awk, call); - if (head != ASE_NULL) ase_awk_clrpt (awk, head); - SETERRLIN (awk, ASE_AWK_ENOMEM, line); - return ASE_NULL; + QSE_AWK_FREE (awk, call); + if (head != QSE_NULL) qse_awk_clrpt (awk, head); + SETERRLIN (awk, QSE_AWK_ENOMEM, line); + return QSE_NULL; } #if 0 } #endif } - return (ase_awk_nde_t*)call; + return (qse_awk_nde_t*)call; } -static ase_awk_nde_t* parse_if (ase_awk_t* awk, ase_size_t line) +static qse_awk_nde_t* parse_if (qse_awk_t* awk, qse_size_t line) { - ase_awk_nde_t* test; - ase_awk_nde_t* then_part; - ase_awk_nde_t* else_part; - ase_awk_nde_if_t* nde; + qse_awk_nde_t* test; + qse_awk_nde_t* then_part; + qse_awk_nde_t* else_part; + qse_awk_nde_if_t* nde; if (!MATCH(awk,TOKEN_LPAREN)) { - SETERRTOK (awk, ASE_AWK_ELPAREN); - return ASE_NULL; + SETERRTOK (awk, QSE_AWK_ELPAREN); + return QSE_NULL; } - if (get_token(awk) == -1) return ASE_NULL; + if (get_token(awk) == -1) return QSE_NULL; test = parse_expression (awk, awk->token.line); - if (test == ASE_NULL) return ASE_NULL; + if (test == QSE_NULL) return QSE_NULL; if (!MATCH(awk,TOKEN_RPAREN)) { - ase_awk_clrpt (awk, test); + qse_awk_clrpt (awk, test); - SETERRTOK (awk, ASE_AWK_ERPAREN); - return ASE_NULL; + SETERRTOK (awk, QSE_AWK_ERPAREN); + return QSE_NULL; } if (get_token(awk) == -1) { - ase_awk_clrpt (awk, test); - return ASE_NULL; + qse_awk_clrpt (awk, test); + return QSE_NULL; } then_part = parse_statement (awk, awk->token.line); - if (then_part == ASE_NULL) + if (then_part == QSE_NULL) { - ase_awk_clrpt (awk, test); - return ASE_NULL; + qse_awk_clrpt (awk, test); + return QSE_NULL; } if (MATCH(awk,TOKEN_ELSE)) { if (get_token(awk) == -1) { - ase_awk_clrpt (awk, then_part); - ase_awk_clrpt (awk, test); - return ASE_NULL; + qse_awk_clrpt (awk, then_part); + qse_awk_clrpt (awk, test); + return QSE_NULL; } else_part = parse_statement (awk, awk->token.prev.line); - if (else_part == ASE_NULL) + if (else_part == QSE_NULL) { - ase_awk_clrpt (awk, then_part); - ase_awk_clrpt (awk, test); - return ASE_NULL; + qse_awk_clrpt (awk, then_part); + qse_awk_clrpt (awk, test); + return QSE_NULL; } } - else else_part = ASE_NULL; + else else_part = QSE_NULL; - nde = (ase_awk_nde_if_t*) - ASE_AWK_ALLOC (awk, ASE_SIZEOF(ase_awk_nde_if_t)); - if (nde == ASE_NULL) + nde = (qse_awk_nde_if_t*) + QSE_AWK_ALLOC (awk, QSE_SIZEOF(qse_awk_nde_if_t)); + if (nde == QSE_NULL) { - ase_awk_clrpt (awk, else_part); - ase_awk_clrpt (awk, then_part); - ase_awk_clrpt (awk, test); + qse_awk_clrpt (awk, else_part); + qse_awk_clrpt (awk, then_part); + qse_awk_clrpt (awk, test); - SETERRLIN (awk, ASE_AWK_ENOMEM, line); - return ASE_NULL; + SETERRLIN (awk, QSE_AWK_ENOMEM, line); + return QSE_NULL; } - nde->type = ASE_AWK_NDE_IF; + nde->type = QSE_AWK_NDE_IF; nde->line = line; - nde->next = ASE_NULL; + nde->next = QSE_NULL; nde->test = test; nde->then_part = then_part; nde->else_part = else_part; - return (ase_awk_nde_t*)nde; + return (qse_awk_nde_t*)nde; } -static ase_awk_nde_t* parse_while (ase_awk_t* awk, ase_size_t line) +static qse_awk_nde_t* parse_while (qse_awk_t* awk, qse_size_t line) { - ase_awk_nde_t* test, * body; - ase_awk_nde_while_t* nde; + qse_awk_nde_t* test, * body; + qse_awk_nde_while_t* nde; if (!MATCH(awk,TOKEN_LPAREN)) { - SETERRTOK (awk, ASE_AWK_ELPAREN); - return ASE_NULL; + SETERRTOK (awk, QSE_AWK_ELPAREN); + return QSE_NULL; } - if (get_token(awk) == -1) return ASE_NULL; + if (get_token(awk) == -1) return QSE_NULL; test = parse_expression (awk, awk->token.line); - if (test == ASE_NULL) return ASE_NULL; + if (test == QSE_NULL) return QSE_NULL; if (!MATCH(awk,TOKEN_RPAREN)) { - ase_awk_clrpt (awk, test); + qse_awk_clrpt (awk, test); - SETERRTOK (awk, ASE_AWK_ERPAREN); - return ASE_NULL; + SETERRTOK (awk, QSE_AWK_ERPAREN); + return QSE_NULL; } if (get_token(awk) == -1) { - ase_awk_clrpt (awk, test); - return ASE_NULL; + qse_awk_clrpt (awk, test); + return QSE_NULL; } body = parse_statement (awk, awk->token.line); - if (body == ASE_NULL) + if (body == QSE_NULL) { - ase_awk_clrpt (awk, test); - return ASE_NULL; + qse_awk_clrpt (awk, test); + return QSE_NULL; } - nde = (ase_awk_nde_while_t*) - ASE_AWK_ALLOC (awk, ASE_SIZEOF(ase_awk_nde_while_t)); - if (nde == ASE_NULL) + nde = (qse_awk_nde_while_t*) + QSE_AWK_ALLOC (awk, QSE_SIZEOF(qse_awk_nde_while_t)); + if (nde == QSE_NULL) { - ase_awk_clrpt (awk, body); - ase_awk_clrpt (awk, test); + qse_awk_clrpt (awk, body); + qse_awk_clrpt (awk, test); - SETERRLIN (awk, ASE_AWK_ENOMEM, line); - return ASE_NULL; + SETERRLIN (awk, QSE_AWK_ENOMEM, line); + return QSE_NULL; } - nde->type = ASE_AWK_NDE_WHILE; + nde->type = QSE_AWK_NDE_WHILE; nde->line = line; - nde->next = ASE_NULL; + nde->next = QSE_NULL; nde->test = test; nde->body = body; - return (ase_awk_nde_t*)nde; + return (qse_awk_nde_t*)nde; } -static ase_awk_nde_t* parse_for (ase_awk_t* awk, ase_size_t line) +static qse_awk_nde_t* parse_for (qse_awk_t* awk, qse_size_t line) { - ase_awk_nde_t* init, * test, * incr, * body; - ase_awk_nde_for_t* nde; - ase_awk_nde_foreach_t* nde2; + qse_awk_nde_t* init, * test, * incr, * body; + qse_awk_nde_for_t* nde; + qse_awk_nde_foreach_t* nde2; if (!MATCH(awk,TOKEN_LPAREN)) { - SETERRTOK (awk, ASE_AWK_ELPAREN); - return ASE_NULL; + SETERRTOK (awk, QSE_AWK_ELPAREN); + return QSE_NULL; } - if (get_token(awk) == -1) return ASE_NULL; + if (get_token(awk) == -1) return QSE_NULL; - if (MATCH(awk,TOKEN_SEMICOLON)) init = ASE_NULL; + if (MATCH(awk,TOKEN_SEMICOLON)) init = QSE_NULL; else { /* this line is very ugly. it checks the entire next @@ -3877,59 +3877,59 @@ static ase_awk_nde_t* parse_for (ase_awk_t* awk, ase_size_t line) int no_foreach = MATCH(awk,TOKEN_LPAREN); init = parse_expression (awk, awk->token.line); - if (init == ASE_NULL) return ASE_NULL; + if (init == QSE_NULL) return QSE_NULL; - if (!no_foreach && init->type == ASE_AWK_NDE_EXP_BIN && - ((ase_awk_nde_exp_t*)init)->opcode == ASE_AWK_BINOP_IN && - is_plain_var(((ase_awk_nde_exp_t*)init)->left)) + if (!no_foreach && init->type == QSE_AWK_NDE_EXP_BIN && + ((qse_awk_nde_exp_t*)init)->opcode == QSE_AWK_BINOP_IN && + is_plain_var(((qse_awk_nde_exp_t*)init)->left)) { /* switch to foreach */ if (!MATCH(awk,TOKEN_RPAREN)) { - ase_awk_clrpt (awk, init); - SETERRTOK (awk, ASE_AWK_ERPAREN); - return ASE_NULL; + qse_awk_clrpt (awk, init); + SETERRTOK (awk, QSE_AWK_ERPAREN); + return QSE_NULL; } if (get_token(awk) == -1) { - ase_awk_clrpt (awk, init); - return ASE_NULL; + qse_awk_clrpt (awk, init); + return QSE_NULL; } body = parse_statement (awk, awk->token.line); - if (body == ASE_NULL) + if (body == QSE_NULL) { - ase_awk_clrpt (awk, init); - return ASE_NULL; + qse_awk_clrpt (awk, init); + return QSE_NULL; } - nde2 = (ase_awk_nde_foreach_t*) ASE_AWK_ALLOC ( - awk, ASE_SIZEOF(ase_awk_nde_foreach_t)); - if (nde2 == ASE_NULL) + nde2 = (qse_awk_nde_foreach_t*) QSE_AWK_ALLOC ( + awk, QSE_SIZEOF(qse_awk_nde_foreach_t)); + if (nde2 == QSE_NULL) { - ase_awk_clrpt (awk, init); - ase_awk_clrpt (awk, body); + qse_awk_clrpt (awk, init); + qse_awk_clrpt (awk, body); - SETERRLIN (awk, ASE_AWK_ENOMEM, line); - return ASE_NULL; + SETERRLIN (awk, QSE_AWK_ENOMEM, line); + return QSE_NULL; } - nde2->type = ASE_AWK_NDE_FOREACH; + nde2->type = QSE_AWK_NDE_FOREACH; nde2->line = line; - nde2->next = ASE_NULL; + nde2->next = QSE_NULL; nde2->test = init; nde2->body = body; - return (ase_awk_nde_t*)nde2; + return (qse_awk_nde_t*)nde2; } if (!MATCH(awk,TOKEN_SEMICOLON)) { - ase_awk_clrpt (awk, init); - SETERRTOK (awk, ASE_AWK_ESCOLON); - return ASE_NULL; + qse_awk_clrpt (awk, init); + SETERRTOK (awk, QSE_AWK_ESCOLON); + return QSE_NULL; } } @@ -3937,31 +3937,31 @@ static ase_awk_nde_t* parse_for (ase_awk_t* awk, ase_size_t line) { if (get_token(awk) == -1) { - ase_awk_clrpt (awk, init); - return ASE_NULL; + qse_awk_clrpt (awk, init); + return QSE_NULL; } /* skip new lines after the first semicolon */ } while (MATCH(awk,TOKEN_NEWLINE)); - if (MATCH(awk,TOKEN_SEMICOLON)) test = ASE_NULL; + if (MATCH(awk,TOKEN_SEMICOLON)) test = QSE_NULL; else { test = parse_expression (awk, awk->token.line); - if (test == ASE_NULL) + if (test == QSE_NULL) { - ase_awk_clrpt (awk, init); - return ASE_NULL; + qse_awk_clrpt (awk, init); + return QSE_NULL; } if (!MATCH(awk,TOKEN_SEMICOLON)) { - ase_awk_clrpt (awk, init); - ase_awk_clrpt (awk, test); + qse_awk_clrpt (awk, init); + qse_awk_clrpt (awk, test); - SETERRTOK (awk, ASE_AWK_ESCOLON); - return ASE_NULL; + SETERRTOK (awk, QSE_AWK_ESCOLON); + return QSE_NULL; } } @@ -3969,442 +3969,442 @@ static ase_awk_nde_t* parse_for (ase_awk_t* awk, ase_size_t line) { if (get_token(awk) == -1) { - ase_awk_clrpt (awk, init); - ase_awk_clrpt (awk, test); - return ASE_NULL; + qse_awk_clrpt (awk, init); + qse_awk_clrpt (awk, test); + return QSE_NULL; } /* skip new lines after the second semicolon */ } while (MATCH(awk,TOKEN_NEWLINE)); - if (MATCH(awk,TOKEN_RPAREN)) incr = ASE_NULL; + if (MATCH(awk,TOKEN_RPAREN)) incr = QSE_NULL; else { incr = parse_expression (awk, awk->token.line); - if (incr == ASE_NULL) + if (incr == QSE_NULL) { - ase_awk_clrpt (awk, init); - ase_awk_clrpt (awk, test); - return ASE_NULL; + qse_awk_clrpt (awk, init); + qse_awk_clrpt (awk, test); + return QSE_NULL; } if (!MATCH(awk,TOKEN_RPAREN)) { - ase_awk_clrpt (awk, init); - ase_awk_clrpt (awk, test); - ase_awk_clrpt (awk, incr); + qse_awk_clrpt (awk, init); + qse_awk_clrpt (awk, test); + qse_awk_clrpt (awk, incr); - SETERRTOK (awk, ASE_AWK_ERPAREN); - return ASE_NULL; + SETERRTOK (awk, QSE_AWK_ERPAREN); + return QSE_NULL; } } if (get_token(awk) == -1) { - ase_awk_clrpt (awk, init); - ase_awk_clrpt (awk, test); - ase_awk_clrpt (awk, incr); - return ASE_NULL; + qse_awk_clrpt (awk, init); + qse_awk_clrpt (awk, test); + qse_awk_clrpt (awk, incr); + return QSE_NULL; } body = parse_statement (awk, awk->token.line); - if (body == ASE_NULL) + if (body == QSE_NULL) { - ase_awk_clrpt (awk, init); - ase_awk_clrpt (awk, test); - ase_awk_clrpt (awk, incr); - return ASE_NULL; + qse_awk_clrpt (awk, init); + qse_awk_clrpt (awk, test); + qse_awk_clrpt (awk, incr); + return QSE_NULL; } - nde = (ase_awk_nde_for_t*) - ASE_AWK_ALLOC (awk, ASE_SIZEOF(ase_awk_nde_for_t)); - if (nde == ASE_NULL) + nde = (qse_awk_nde_for_t*) + QSE_AWK_ALLOC (awk, QSE_SIZEOF(qse_awk_nde_for_t)); + if (nde == QSE_NULL) { - ase_awk_clrpt (awk, init); - ase_awk_clrpt (awk, test); - ase_awk_clrpt (awk, incr); - ase_awk_clrpt (awk, body); + qse_awk_clrpt (awk, init); + qse_awk_clrpt (awk, test); + qse_awk_clrpt (awk, incr); + qse_awk_clrpt (awk, body); - SETERRLIN (awk, ASE_AWK_ENOMEM, line); - return ASE_NULL; + SETERRLIN (awk, QSE_AWK_ENOMEM, line); + return QSE_NULL; } - nde->type = ASE_AWK_NDE_FOR; + nde->type = QSE_AWK_NDE_FOR; nde->line = line; - nde->next = ASE_NULL; + nde->next = QSE_NULL; nde->init = init; nde->test = test; nde->incr = incr; nde->body = body; - return (ase_awk_nde_t*)nde; + return (qse_awk_nde_t*)nde; } -static ase_awk_nde_t* parse_dowhile (ase_awk_t* awk, ase_size_t line) +static qse_awk_nde_t* parse_dowhile (qse_awk_t* awk, qse_size_t line) { - ase_awk_nde_t* test, * body; - ase_awk_nde_while_t* nde; + qse_awk_nde_t* test, * body; + qse_awk_nde_while_t* nde; - ASE_ASSERT (awk->token.prev.type == TOKEN_DO); + QSE_ASSERT (awk->token.prev.type == TOKEN_DO); body = parse_statement (awk, awk->token.line); - if (body == ASE_NULL) return ASE_NULL; + if (body == QSE_NULL) return QSE_NULL; while (MATCH(awk,TOKEN_NEWLINE)) { if (get_token(awk) == -1) { - ase_awk_clrpt (awk, body); - return ASE_NULL; + qse_awk_clrpt (awk, body); + return QSE_NULL; } } if (!MATCH(awk,TOKEN_WHILE)) { - ase_awk_clrpt (awk, body); + qse_awk_clrpt (awk, body); - SETERRTOK (awk, ASE_AWK_EWHILE); - return ASE_NULL; + SETERRTOK (awk, QSE_AWK_EWHILE); + return QSE_NULL; } if (get_token(awk) == -1) { - ase_awk_clrpt (awk, body); - return ASE_NULL; + qse_awk_clrpt (awk, body); + return QSE_NULL; } if (!MATCH(awk,TOKEN_LPAREN)) { - ase_awk_clrpt (awk, body); + qse_awk_clrpt (awk, body); - SETERRTOK (awk, ASE_AWK_ELPAREN); - return ASE_NULL; + SETERRTOK (awk, QSE_AWK_ELPAREN); + return QSE_NULL; } if (get_token(awk) == -1) { - ase_awk_clrpt (awk, body); - return ASE_NULL; + qse_awk_clrpt (awk, body); + return QSE_NULL; } test = parse_expression (awk, awk->token.line); - if (test == ASE_NULL) + if (test == QSE_NULL) { - ase_awk_clrpt (awk, body); - return ASE_NULL; + qse_awk_clrpt (awk, body); + return QSE_NULL; } if (!MATCH(awk,TOKEN_RPAREN)) { - ase_awk_clrpt (awk, body); - ase_awk_clrpt (awk, test); + qse_awk_clrpt (awk, body); + qse_awk_clrpt (awk, test); - SETERRTOK (awk, ASE_AWK_ERPAREN); - return ASE_NULL; + SETERRTOK (awk, QSE_AWK_ERPAREN); + return QSE_NULL; } if (get_token(awk) == -1) { - ase_awk_clrpt (awk, body); - ase_awk_clrpt (awk, test); - return ASE_NULL; + qse_awk_clrpt (awk, body); + qse_awk_clrpt (awk, test); + return QSE_NULL; } - nde = (ase_awk_nde_while_t*) - ASE_AWK_ALLOC (awk, ASE_SIZEOF(ase_awk_nde_while_t)); - if (nde == ASE_NULL) + nde = (qse_awk_nde_while_t*) + QSE_AWK_ALLOC (awk, QSE_SIZEOF(qse_awk_nde_while_t)); + if (nde == QSE_NULL) { - ase_awk_clrpt (awk, body); - ase_awk_clrpt (awk, test); + qse_awk_clrpt (awk, body); + qse_awk_clrpt (awk, test); - SETERRLIN (awk, ASE_AWK_ENOMEM, line); - return ASE_NULL; + SETERRLIN (awk, QSE_AWK_ENOMEM, line); + return QSE_NULL; } - nde->type = ASE_AWK_NDE_DOWHILE; + nde->type = QSE_AWK_NDE_DOWHILE; nde->line = line; - nde->next = ASE_NULL; + nde->next = QSE_NULL; nde->test = test; nde->body = body; - return (ase_awk_nde_t*)nde; + return (qse_awk_nde_t*)nde; } -static ase_awk_nde_t* parse_break (ase_awk_t* awk, ase_size_t line) +static qse_awk_nde_t* parse_break (qse_awk_t* awk, qse_size_t line) { - ase_awk_nde_break_t* nde; + qse_awk_nde_break_t* nde; - ASE_ASSERT (awk->token.prev.type == TOKEN_BREAK); + QSE_ASSERT (awk->token.prev.type == TOKEN_BREAK); if (awk->parse.depth.cur.loop <= 0) { - SETERRLIN (awk, ASE_AWK_EBREAK, line); - return ASE_NULL; + SETERRLIN (awk, QSE_AWK_EBREAK, line); + return QSE_NULL; } - nde = (ase_awk_nde_break_t*) - ASE_AWK_ALLOC (awk, ASE_SIZEOF(ase_awk_nde_break_t)); - if (nde == ASE_NULL) + nde = (qse_awk_nde_break_t*) + QSE_AWK_ALLOC (awk, QSE_SIZEOF(qse_awk_nde_break_t)); + if (nde == QSE_NULL) { - SETERRLIN (awk, ASE_AWK_ENOMEM, line); - return ASE_NULL; + SETERRLIN (awk, QSE_AWK_ENOMEM, line); + return QSE_NULL; } - nde->type = ASE_AWK_NDE_BREAK; + nde->type = QSE_AWK_NDE_BREAK; nde->line = line; - nde->next = ASE_NULL; + nde->next = QSE_NULL; - return (ase_awk_nde_t*)nde; + return (qse_awk_nde_t*)nde; } -static ase_awk_nde_t* parse_continue (ase_awk_t* awk, ase_size_t line) +static qse_awk_nde_t* parse_continue (qse_awk_t* awk, qse_size_t line) { - ase_awk_nde_continue_t* nde; + qse_awk_nde_continue_t* nde; - ASE_ASSERT (awk->token.prev.type == TOKEN_CONTINUE); + QSE_ASSERT (awk->token.prev.type == TOKEN_CONTINUE); if (awk->parse.depth.cur.loop <= 0) { - SETERRLIN (awk, ASE_AWK_ECONTINUE, line); - return ASE_NULL; + SETERRLIN (awk, QSE_AWK_ECONTINUE, line); + return QSE_NULL; } - nde = (ase_awk_nde_continue_t*) - ASE_AWK_ALLOC (awk, ASE_SIZEOF(ase_awk_nde_continue_t)); - if (nde == ASE_NULL) + nde = (qse_awk_nde_continue_t*) + QSE_AWK_ALLOC (awk, QSE_SIZEOF(qse_awk_nde_continue_t)); + if (nde == QSE_NULL) { - SETERRLIN (awk, ASE_AWK_ENOMEM, line); - return ASE_NULL; + SETERRLIN (awk, QSE_AWK_ENOMEM, line); + return QSE_NULL; } - nde->type = ASE_AWK_NDE_CONTINUE; + nde->type = QSE_AWK_NDE_CONTINUE; nde->line = line; - nde->next = ASE_NULL; + nde->next = QSE_NULL; - return (ase_awk_nde_t*)nde; + return (qse_awk_nde_t*)nde; } -static ase_awk_nde_t* parse_return (ase_awk_t* awk, ase_size_t line) +static qse_awk_nde_t* parse_return (qse_awk_t* awk, qse_size_t line) { - ase_awk_nde_return_t* nde; - ase_awk_nde_t* val; + qse_awk_nde_return_t* nde; + qse_awk_nde_t* val; - ASE_ASSERT (awk->token.prev.type == TOKEN_RETURN); + QSE_ASSERT (awk->token.prev.type == TOKEN_RETURN); - nde = (ase_awk_nde_return_t*) ASE_AWK_ALLOC ( - awk, ASE_SIZEOF(ase_awk_nde_return_t)); - if (nde == ASE_NULL) + nde = (qse_awk_nde_return_t*) QSE_AWK_ALLOC ( + awk, QSE_SIZEOF(qse_awk_nde_return_t)); + if (nde == QSE_NULL) { - SETERRLIN (awk, ASE_AWK_ENOMEM, line); - return ASE_NULL; + SETERRLIN (awk, QSE_AWK_ENOMEM, line); + return QSE_NULL; } - nde->type = ASE_AWK_NDE_RETURN; + nde->type = QSE_AWK_NDE_RETURN; nde->line = line; - nde->next = ASE_NULL; + nde->next = QSE_NULL; if (MATCH_TERMINATOR(awk)) { /* no return value */ - val = ASE_NULL; + val = QSE_NULL; } else { val = parse_expression (awk, awk->token.line); - if (val == ASE_NULL) + if (val == QSE_NULL) { - ASE_AWK_FREE (awk, nde); - return ASE_NULL; + QSE_AWK_FREE (awk, nde); + return QSE_NULL; } } nde->val = val; - return (ase_awk_nde_t*)nde; + return (qse_awk_nde_t*)nde; } -static ase_awk_nde_t* parse_exit (ase_awk_t* awk, ase_size_t line) +static qse_awk_nde_t* parse_exit (qse_awk_t* awk, qse_size_t line) { - ase_awk_nde_exit_t* nde; - ase_awk_nde_t* val; + qse_awk_nde_exit_t* nde; + qse_awk_nde_t* val; - ASE_ASSERT (awk->token.prev.type == TOKEN_EXIT); + QSE_ASSERT (awk->token.prev.type == TOKEN_EXIT); - nde = (ase_awk_nde_exit_t*) - ASE_AWK_ALLOC (awk, ASE_SIZEOF(ase_awk_nde_exit_t)); - if (nde == ASE_NULL) + nde = (qse_awk_nde_exit_t*) + QSE_AWK_ALLOC (awk, QSE_SIZEOF(qse_awk_nde_exit_t)); + if (nde == QSE_NULL) { - SETERRLIN (awk, ASE_AWK_ENOMEM, line); - return ASE_NULL; + SETERRLIN (awk, QSE_AWK_ENOMEM, line); + return QSE_NULL; } - nde->type = ASE_AWK_NDE_EXIT; + nde->type = QSE_AWK_NDE_EXIT; nde->line = line; - nde->next = ASE_NULL; + nde->next = QSE_NULL; if (MATCH_TERMINATOR(awk)) { /* no exit code */ - val = ASE_NULL; + val = QSE_NULL; } else { val = parse_expression (awk, awk->token.line); - if (val == ASE_NULL) + if (val == QSE_NULL) { - ASE_AWK_FREE (awk, nde); - return ASE_NULL; + QSE_AWK_FREE (awk, nde); + return QSE_NULL; } } nde->val = val; - return (ase_awk_nde_t*)nde; + return (qse_awk_nde_t*)nde; } -static ase_awk_nde_t* parse_next (ase_awk_t* awk, ase_size_t line) +static qse_awk_nde_t* parse_next (qse_awk_t* awk, qse_size_t line) { - ase_awk_nde_next_t* nde; + qse_awk_nde_next_t* nde; - ASE_ASSERT (awk->token.prev.type == TOKEN_NEXT); + QSE_ASSERT (awk->token.prev.type == TOKEN_NEXT); if (awk->parse.id.block == PARSE_BEGIN_BLOCK) { - SETERRLIN (awk, ASE_AWK_ENEXTBEG, line); - return ASE_NULL; + SETERRLIN (awk, QSE_AWK_ENEXTBEG, line); + return QSE_NULL; } if (awk->parse.id.block == PARSE_END_BLOCK) { - SETERRLIN (awk, ASE_AWK_ENEXTEND, line); - return ASE_NULL; + SETERRLIN (awk, QSE_AWK_ENEXTEND, line); + return QSE_NULL; } - nde = (ase_awk_nde_next_t*) - ASE_AWK_ALLOC (awk, ASE_SIZEOF(ase_awk_nde_next_t)); - if (nde == ASE_NULL) + nde = (qse_awk_nde_next_t*) + QSE_AWK_ALLOC (awk, QSE_SIZEOF(qse_awk_nde_next_t)); + if (nde == QSE_NULL) { - SETERRLIN (awk, ASE_AWK_ENOMEM, line); - return ASE_NULL; + SETERRLIN (awk, QSE_AWK_ENOMEM, line); + return QSE_NULL; } - nde->type = ASE_AWK_NDE_NEXT; + nde->type = QSE_AWK_NDE_NEXT; nde->line = line; - nde->next = ASE_NULL; + nde->next = QSE_NULL; - return (ase_awk_nde_t*)nde; + return (qse_awk_nde_t*)nde; } -static ase_awk_nde_t* parse_nextfile (ase_awk_t* awk, ase_size_t line, int out) +static qse_awk_nde_t* parse_nextfile (qse_awk_t* awk, qse_size_t line, int out) { - ase_awk_nde_nextfile_t* nde; + qse_awk_nde_nextfile_t* nde; if (!out && awk->parse.id.block == PARSE_BEGIN_BLOCK) { - SETERRLIN (awk, ASE_AWK_ENEXTFBEG, line); - return ASE_NULL; + SETERRLIN (awk, QSE_AWK_ENEXTFBEG, line); + return QSE_NULL; } if (!out && awk->parse.id.block == PARSE_END_BLOCK) { - SETERRLIN (awk, ASE_AWK_ENEXTFEND, line); - return ASE_NULL; + SETERRLIN (awk, QSE_AWK_ENEXTFEND, line); + return QSE_NULL; } - nde = (ase_awk_nde_nextfile_t*) - ASE_AWK_ALLOC (awk, ASE_SIZEOF(ase_awk_nde_nextfile_t)); - if (nde == ASE_NULL) + nde = (qse_awk_nde_nextfile_t*) + QSE_AWK_ALLOC (awk, QSE_SIZEOF(qse_awk_nde_nextfile_t)); + if (nde == QSE_NULL) { - SETERRLIN (awk, ASE_AWK_ENOMEM, line); - return ASE_NULL; + SETERRLIN (awk, QSE_AWK_ENOMEM, line); + return QSE_NULL; } - nde->type = ASE_AWK_NDE_NEXTFILE; + nde->type = QSE_AWK_NDE_NEXTFILE; nde->line = line; - nde->next = ASE_NULL; + nde->next = QSE_NULL; nde->out = out; - return (ase_awk_nde_t*)nde; + return (qse_awk_nde_t*)nde; } -static ase_awk_nde_t* parse_delete (ase_awk_t* awk, ase_size_t line) +static qse_awk_nde_t* parse_delete (qse_awk_t* awk, qse_size_t line) { - ase_awk_nde_delete_t* nde; - ase_awk_nde_t* var; + qse_awk_nde_delete_t* nde; + qse_awk_nde_t* var; - ASE_ASSERT (awk->token.prev.type == TOKEN_DELETE); + QSE_ASSERT (awk->token.prev.type == TOKEN_DELETE); if (!MATCH(awk,TOKEN_IDENT)) { - SETERRTOK (awk, ASE_AWK_EIDENT); - return ASE_NULL; + SETERRTOK (awk, QSE_AWK_EIDENT); + return QSE_NULL; } var = parse_primary_ident (awk, awk->token.line); - if (var == ASE_NULL) return ASE_NULL; + if (var == QSE_NULL) return QSE_NULL; if (!is_var (var)) { /* a normal identifier is expected */ - ase_awk_clrpt (awk, var); - SETERRLIN (awk, ASE_AWK_EDELETE, line); - return ASE_NULL; + qse_awk_clrpt (awk, var); + SETERRLIN (awk, QSE_AWK_EDELETE, line); + return QSE_NULL; } - nde = (ase_awk_nde_delete_t*) ASE_AWK_ALLOC ( - awk, ASE_SIZEOF(ase_awk_nde_delete_t)); - if (nde == ASE_NULL) + nde = (qse_awk_nde_delete_t*) QSE_AWK_ALLOC ( + awk, QSE_SIZEOF(qse_awk_nde_delete_t)); + if (nde == QSE_NULL) { - SETERRLIN (awk, ASE_AWK_ENOMEM, line); - return ASE_NULL; + SETERRLIN (awk, QSE_AWK_ENOMEM, line); + return QSE_NULL; } - nde->type = ASE_AWK_NDE_DELETE; + nde->type = QSE_AWK_NDE_DELETE; nde->line = line; - nde->next = ASE_NULL; + nde->next = QSE_NULL; nde->var = var; - return (ase_awk_nde_t*)nde; + return (qse_awk_nde_t*)nde; } -static ase_awk_nde_t* parse_reset (ase_awk_t* awk, ase_size_t line) +static qse_awk_nde_t* parse_reset (qse_awk_t* awk, qse_size_t line) { - ase_awk_nde_reset_t* nde; - ase_awk_nde_t* var; + qse_awk_nde_reset_t* nde; + qse_awk_nde_t* var; - ASE_ASSERT (awk->token.prev.type == TOKEN_RESET); + QSE_ASSERT (awk->token.prev.type == TOKEN_RESET); if (!MATCH(awk,TOKEN_IDENT)) { - SETERRTOK (awk, ASE_AWK_EIDENT); - return ASE_NULL; + SETERRTOK (awk, QSE_AWK_EIDENT); + return QSE_NULL; } var = parse_primary_ident (awk, awk->token.line); - if (var == ASE_NULL) return ASE_NULL; + if (var == QSE_NULL) return QSE_NULL; /* unlike delete, it must be followed by a plain variable only */ if (!is_plain_var (var)) { /* a normal identifier is expected */ - ase_awk_clrpt (awk, var); - SETERRLIN (awk, ASE_AWK_ERESET, line); - return ASE_NULL; + qse_awk_clrpt (awk, var); + SETERRLIN (awk, QSE_AWK_ERESET, line); + return QSE_NULL; } - nde = (ase_awk_nde_reset_t*) ASE_AWK_ALLOC ( - awk, ASE_SIZEOF(ase_awk_nde_reset_t)); - if (nde == ASE_NULL) + nde = (qse_awk_nde_reset_t*) QSE_AWK_ALLOC ( + awk, QSE_SIZEOF(qse_awk_nde_reset_t)); + if (nde == QSE_NULL) { - SETERRLIN (awk, ASE_AWK_ENOMEM, line); - return ASE_NULL; + SETERRLIN (awk, QSE_AWK_ENOMEM, line); + return QSE_NULL; } - nde->type = ASE_AWK_NDE_RESET; + nde->type = QSE_AWK_NDE_RESET; nde->line = line; - nde->next = ASE_NULL; + nde->next = QSE_NULL; nde->var = var; - return (ase_awk_nde_t*)nde; + return (qse_awk_nde_t*)nde; } -static ase_awk_nde_t* parse_print (ase_awk_t* awk, ase_size_t line, int type) +static qse_awk_nde_t* parse_print (qse_awk_t* awk, qse_size_t line, int type) { - ase_awk_nde_print_t* nde; - ase_awk_nde_t* args = ASE_NULL; - ase_awk_nde_t* out = ASE_NULL; + qse_awk_nde_print_t* nde; + qse_awk_nde_t* args = QSE_NULL; + qse_awk_nde_t* out = QSE_NULL; int out_type; if (!MATCH_TERMINATOR(awk) && @@ -4413,36 +4413,36 @@ static ase_awk_nde_t* parse_print (ase_awk_t* awk, ase_size_t line, int type) !MATCH(awk,TOKEN_BOR) && !MATCH(awk,TOKEN_BORAND)) { - ase_awk_nde_t* args_tail; - ase_awk_nde_t* tail_prev; + qse_awk_nde_t* args_tail; + qse_awk_nde_t* tail_prev; args = parse_expression (awk, awk->token.line); - if (args == ASE_NULL) return ASE_NULL; + if (args == QSE_NULL) return QSE_NULL; args_tail = args; - tail_prev = ASE_NULL; + tail_prev = QSE_NULL; - if (args->type != ASE_AWK_NDE_GRP) + if (args->type != QSE_AWK_NDE_GRP) { - /* args->type == ASE_AWK_NDE_GRP when print (a, b, c) - * args->type != ASE_AWK_NDE_GRP when print a, b, c */ + /* args->type == QSE_AWK_NDE_GRP when print (a, b, c) + * args->type != QSE_AWK_NDE_GRP when print a, b, c */ while (MATCH(awk,TOKEN_COMMA)) { do { if (get_token(awk) == -1) { - ase_awk_clrpt (awk, args); - return ASE_NULL; + qse_awk_clrpt (awk, args); + return QSE_NULL; } } while (MATCH(awk,TOKEN_NEWLINE)); args_tail->next = parse_expression (awk, awk->token.line); - if (args_tail->next == ASE_NULL) + if (args_tail->next == QSE_NULL) { - ase_awk_clrpt (awk, args); - return ASE_NULL; + qse_awk_clrpt (awk, args); + return QSE_NULL; } tail_prev = args_tail; @@ -4453,113 +4453,113 @@ static ase_awk_nde_t* parse_print (ase_awk_t* awk, ase_size_t line, int type) /* print 1 > 2 would print 1 to the file named 2. * print (1 > 2) would print (1 > 2) on the console */ if (awk->token.prev.type != TOKEN_RPAREN && - args_tail->type == ASE_AWK_NDE_EXP_BIN) + args_tail->type == QSE_AWK_NDE_EXP_BIN) { - ase_awk_nde_exp_t* ep = (ase_awk_nde_exp_t*)args_tail; - if (ep->opcode == ASE_AWK_BINOP_GT) + qse_awk_nde_exp_t* ep = (qse_awk_nde_exp_t*)args_tail; + if (ep->opcode == QSE_AWK_BINOP_GT) { - ase_awk_nde_t* tmp = args_tail; + qse_awk_nde_t* tmp = args_tail; - if (tail_prev != ASE_NULL) + if (tail_prev != QSE_NULL) tail_prev->next = ep->left; else args = ep->left; out = ep->right; - out_type = ASE_AWK_OUT_FILE; + out_type = QSE_AWK_OUT_FILE; - ASE_AWK_FREE (awk, tmp); + QSE_AWK_FREE (awk, tmp); } - else if (ep->opcode == ASE_AWK_BINOP_RSHIFT) + else if (ep->opcode == QSE_AWK_BINOP_RSHIFT) { - ase_awk_nde_t* tmp = args_tail; + qse_awk_nde_t* tmp = args_tail; - if (tail_prev != ASE_NULL) + if (tail_prev != QSE_NULL) tail_prev->next = ep->left; else args = ep->left; out = ep->right; - out_type = ASE_AWK_OUT_FILE_APPEND; + out_type = QSE_AWK_OUT_FILE_APPEND; - ASE_AWK_FREE (awk, tmp); + QSE_AWK_FREE (awk, tmp); } - else if (ep->opcode == ASE_AWK_BINOP_BOR) + else if (ep->opcode == QSE_AWK_BINOP_BOR) { - ase_awk_nde_t* tmp = args_tail; + qse_awk_nde_t* tmp = args_tail; - if (tail_prev != ASE_NULL) + if (tail_prev != QSE_NULL) tail_prev->next = ep->left; else args = ep->left; out = ep->right; - out_type = ASE_AWK_OUT_PIPE; + out_type = QSE_AWK_OUT_PIPE; - ASE_AWK_FREE (awk, tmp); + QSE_AWK_FREE (awk, tmp); } } } - if (out == ASE_NULL) + if (out == QSE_NULL) { - out_type = MATCH(awk,TOKEN_GT)? ASE_AWK_OUT_FILE: - MATCH(awk,TOKEN_RSHIFT)? ASE_AWK_OUT_FILE_APPEND: - MATCH(awk,TOKEN_BOR)? ASE_AWK_OUT_PIPE: - MATCH(awk,TOKEN_BORAND)? ASE_AWK_OUT_COPROC: - ASE_AWK_OUT_CONSOLE; + out_type = MATCH(awk,TOKEN_GT)? QSE_AWK_OUT_FILE: + MATCH(awk,TOKEN_RSHIFT)? QSE_AWK_OUT_FILE_APPEND: + MATCH(awk,TOKEN_BOR)? QSE_AWK_OUT_PIPE: + MATCH(awk,TOKEN_BORAND)? QSE_AWK_OUT_COPROC: + QSE_AWK_OUT_CONSOLE; - if (out_type != ASE_AWK_OUT_CONSOLE) + if (out_type != QSE_AWK_OUT_CONSOLE) { if (get_token(awk) == -1) { - if (args != ASE_NULL) ase_awk_clrpt (awk, args); - return ASE_NULL; + if (args != QSE_NULL) qse_awk_clrpt (awk, args); + return QSE_NULL; } out = parse_expression (awk, awk->token.line); - if (out == ASE_NULL) + if (out == QSE_NULL) { - if (args != ASE_NULL) ase_awk_clrpt (awk, args); - return ASE_NULL; + if (args != QSE_NULL) qse_awk_clrpt (awk, args); + return QSE_NULL; } } } - nde = (ase_awk_nde_print_t*) - ASE_AWK_ALLOC (awk, ASE_SIZEOF(ase_awk_nde_print_t)); - if (nde == ASE_NULL) + nde = (qse_awk_nde_print_t*) + QSE_AWK_ALLOC (awk, QSE_SIZEOF(qse_awk_nde_print_t)); + if (nde == QSE_NULL) { - if (args != ASE_NULL) ase_awk_clrpt (awk, args); - if (out != ASE_NULL) ase_awk_clrpt (awk, out); + if (args != QSE_NULL) qse_awk_clrpt (awk, args); + if (out != QSE_NULL) qse_awk_clrpt (awk, out); - SETERRLIN (awk, ASE_AWK_ENOMEM, line); - return ASE_NULL; + SETERRLIN (awk, QSE_AWK_ENOMEM, line); + return QSE_NULL; } - ASE_ASSERTX ( - type == ASE_AWK_NDE_PRINT || type == ASE_AWK_NDE_PRINTF, - "the node type should be either ASE_AWK_NDE_PRINT or ASE_AWK_NDE_PRINTF"); + QSE_ASSERTX ( + type == QSE_AWK_NDE_PRINT || type == QSE_AWK_NDE_PRINTF, + "the node type should be either QSE_AWK_NDE_PRINT or QSE_AWK_NDE_PRINTF"); - if (type == ASE_AWK_NDE_PRINTF && args == ASE_NULL) + if (type == QSE_AWK_NDE_PRINTF && args == QSE_NULL) { - if (out != ASE_NULL) ase_awk_clrpt (awk, out); - SETERRLIN (awk, ASE_AWK_EPRINTFARG, line); - return ASE_NULL; + if (out != QSE_NULL) qse_awk_clrpt (awk, out); + SETERRLIN (awk, QSE_AWK_EPRINTFARG, line); + return QSE_NULL; } nde->type = type; nde->line = line; - nde->next = ASE_NULL; + nde->next = QSE_NULL; nde->args = args; nde->out_type = out_type; nde->out = out; - return (ase_awk_nde_t*)nde; + return (qse_awk_nde_t*)nde; } -static int get_token (ase_awk_t* awk) +static int get_token (qse_awk_t* awk) { - ase_cint_t c; - ase_size_t line; + qse_cint_t c; + qse_size_t line; int n; line = awk->token.line; @@ -4575,55 +4575,55 @@ static int get_token (ase_awk_t* awk) } while (n == 1); - ase_str_clear (awk->token.name); + qse_str_clear (awk->token.name); awk->token.line = awk->src.lex.line; awk->token.column = awk->src.lex.column; c = awk->src.lex.curc; - if (c == ASE_CHAR_EOF) + if (c == QSE_CHAR_EOF) { - ADD_TOKEN_STR (awk, ASE_T(""), 5); + ADD_TOKEN_STR (awk, QSE_T(""), 5); SET_TOKEN_TYPE (awk, TOKEN_EOF); } - else if (c == ASE_T('\n')) + else if (c == QSE_T('\n')) { - ADD_TOKEN_CHAR (awk, ASE_T('\n')); + ADD_TOKEN_CHAR (awk, QSE_T('\n')); SET_TOKEN_TYPE (awk, TOKEN_NEWLINE); GET_CHAR (awk); } - else if (ASE_AWK_ISDIGIT (awk, c)/*|| c == ASE_T('.')*/) + else if (QSE_AWK_ISDIGIT (awk, c)/*|| c == QSE_T('.')*/) { if (get_number (awk) == -1) return -1; } - else if (c == ASE_T('.')) + else if (c == QSE_T('.')) { GET_CHAR_TO (awk, c); - if ((awk->option & ASE_AWK_EXPLICIT) == 0 && - ASE_AWK_ISDIGIT (awk, c)) + if ((awk->option & QSE_AWK_EXPLICIT) == 0 && + QSE_AWK_ISDIGIT (awk, c)) { - awk->src.lex.curc = ASE_T('.'); + awk->src.lex.curc = QSE_T('.'); UNGET_CHAR (awk, c); if (get_number (awk) == -1) return -1; } - else /*if (ASE_AWK_ISSPACE (awk, c) || c == ASE_CHAR_EOF)*/ + else /*if (QSE_AWK_ISSPACE (awk, c) || c == QSE_CHAR_EOF)*/ { SET_TOKEN_TYPE (awk, TOKEN_PERIOD); - ADD_TOKEN_CHAR (awk, ASE_T('.')); + ADD_TOKEN_CHAR (awk, QSE_T('.')); } /* else { - ase_awk_seterror ( - awk, ASE_AWK_ELXCHR, awk->token.line, - ASE_T("floating point not followed by any valid digits")); + qse_awk_seterror ( + awk, QSE_AWK_ELXCHR, awk->token.line, + QSE_T("floating point not followed by any valid digits")); return -1; } */ } - else if (ASE_AWK_ISALPHA (awk, c) || c == ASE_T('_')) + else if (QSE_AWK_ISALPHA (awk, c) || c == QSE_T('_')) { int type; @@ -4633,24 +4633,24 @@ static int get_token (ase_awk_t* awk) ADD_TOKEN_CHAR (awk, c); GET_CHAR_TO (awk, c); } - while (ASE_AWK_ISALPHA (awk, c) || - c == ASE_T('_') || ASE_AWK_ISDIGIT(awk,c)); + while (QSE_AWK_ISALPHA (awk, c) || + c == QSE_T('_') || QSE_AWK_ISDIGIT(awk,c)); type = classify_ident (awk, - ASE_STR_PTR(awk->token.name), - ASE_STR_LEN(awk->token.name)); + QSE_STR_PTR(awk->token.name), + QSE_STR_LEN(awk->token.name)); SET_TOKEN_TYPE (awk, type); } - else if (c == ASE_T('\"')) + else if (c == QSE_T('\"')) { SET_TOKEN_TYPE (awk, TOKEN_STR); if (get_charstr(awk) == -1) return -1; } - else if (c == ASE_T('=')) + else if (c == QSE_T('=')) { ADD_TOKEN_CHAR (awk, c); GET_CHAR_TO (awk, c); - if (c == ASE_T('=')) + if (c == QSE_T('=')) { SET_TOKEN_TYPE (awk, TOKEN_EQ); ADD_TOKEN_CHAR (awk, c); @@ -4661,17 +4661,17 @@ static int get_token (ase_awk_t* awk) SET_TOKEN_TYPE (awk, TOKEN_ASSIGN); } } - else if (c == ASE_T('!')) + else if (c == QSE_T('!')) { ADD_TOKEN_CHAR (awk, c); GET_CHAR_TO (awk, c); - if (c == ASE_T('=')) + if (c == QSE_T('=')) { SET_TOKEN_TYPE (awk, TOKEN_NE); ADD_TOKEN_CHAR (awk, c); GET_CHAR (awk); } - else if (c == ASE_T('~')) + else if (c == QSE_T('~')) { SET_TOKEN_TYPE (awk, TOKEN_NM); ADD_TOKEN_CHAR (awk, c); @@ -4682,15 +4682,15 @@ static int get_token (ase_awk_t* awk) SET_TOKEN_TYPE (awk, TOKEN_LNOT); } } - else if (c == ASE_T('>')) + else if (c == QSE_T('>')) { ADD_TOKEN_CHAR (awk, c); GET_CHAR_TO (awk, c); - if (c == ASE_T('>')) + if (c == QSE_T('>')) { ADD_TOKEN_CHAR (awk, c); GET_CHAR_TO (awk, c); - if ((awk->option & ASE_AWK_SHIFT) && c == ASE_T('=')) + if ((awk->option & QSE_AWK_SHIFT) && c == QSE_T('=')) { SET_TOKEN_TYPE (awk, TOKEN_RSHIFT_ASSIGN); ADD_TOKEN_CHAR (awk, c); @@ -4701,7 +4701,7 @@ static int get_token (ase_awk_t* awk) SET_TOKEN_TYPE (awk, TOKEN_RSHIFT); } } - else if (c == ASE_T('=')) + else if (c == QSE_T('=')) { SET_TOKEN_TYPE (awk, TOKEN_GE); ADD_TOKEN_CHAR (awk, c); @@ -4712,16 +4712,16 @@ static int get_token (ase_awk_t* awk) SET_TOKEN_TYPE (awk, TOKEN_GT); } } - else if (c == ASE_T('<')) + else if (c == QSE_T('<')) { ADD_TOKEN_CHAR (awk, c); GET_CHAR_TO (awk, c); - if ((awk->option & ASE_AWK_SHIFT) && c == ASE_T('<')) + if ((awk->option & QSE_AWK_SHIFT) && c == QSE_T('<')) { ADD_TOKEN_CHAR (awk, c); GET_CHAR_TO (awk, c); - if (c == ASE_T('=')) + if (c == QSE_T('=')) { SET_TOKEN_TYPE (awk, TOKEN_LSHIFT_ASSIGN); ADD_TOKEN_CHAR (awk, c); @@ -4732,7 +4732,7 @@ static int get_token (ase_awk_t* awk) SET_TOKEN_TYPE (awk, TOKEN_LSHIFT); } } - else if (c == ASE_T('=')) + else if (c == QSE_T('=')) { SET_TOKEN_TYPE (awk, TOKEN_LE); ADD_TOKEN_CHAR (awk, c); @@ -4743,23 +4743,23 @@ static int get_token (ase_awk_t* awk) SET_TOKEN_TYPE (awk, TOKEN_LT); } } - else if (c == ASE_T('|')) + else if (c == QSE_T('|')) { ADD_TOKEN_CHAR (awk, c); GET_CHAR_TO (awk, c); - if (c == ASE_T('|')) + if (c == QSE_T('|')) { SET_TOKEN_TYPE (awk, TOKEN_LOR); ADD_TOKEN_CHAR (awk, c); GET_CHAR (awk); } - else if ((awk->option & ASE_AWK_COPROC) && c == ASE_T('&')) + else if ((awk->option & QSE_AWK_COPROC) && c == QSE_T('&')) { SET_TOKEN_TYPE (awk, TOKEN_BORAND); ADD_TOKEN_CHAR (awk, c); GET_CHAR (awk); } - else if (c == ASE_T('=')) + else if (c == QSE_T('=')) { SET_TOKEN_TYPE (awk, TOKEN_BOR_ASSIGN); ADD_TOKEN_CHAR (awk, c); @@ -4770,17 +4770,17 @@ static int get_token (ase_awk_t* awk) SET_TOKEN_TYPE (awk, TOKEN_BOR); } } - else if (c == ASE_T('&')) + else if (c == QSE_T('&')) { ADD_TOKEN_CHAR (awk, c); GET_CHAR_TO (awk, c); - if (c == ASE_T('&')) + if (c == QSE_T('&')) { SET_TOKEN_TYPE (awk, TOKEN_LAND); ADD_TOKEN_CHAR (awk, c); GET_CHAR (awk); } - else if (c == ASE_T('=')) + else if (c == QSE_T('=')) { SET_TOKEN_TYPE (awk, TOKEN_BAND_ASSIGN); ADD_TOKEN_CHAR (awk, c); @@ -4791,35 +4791,35 @@ static int get_token (ase_awk_t* awk) SET_TOKEN_TYPE (awk, TOKEN_BAND); } } - else if (c == ASE_T('^')) + else if (c == QSE_T('^')) { ADD_TOKEN_CHAR (awk, c); GET_CHAR_TO (awk, c); - if (c == ASE_T('=')) + if (c == QSE_T('=')) { - SET_TOKEN_TYPE (awk, ((awk->option & ASE_AWK_BXOR)? + SET_TOKEN_TYPE (awk, ((awk->option & QSE_AWK_BXOR)? TOKEN_BXOR_ASSIGN: TOKEN_EXP_ASSIGN)); ADD_TOKEN_CHAR (awk, c); GET_CHAR (awk); } else { - SET_TOKEN_TYPE (awk, ((awk->option & ASE_AWK_BXOR)? + SET_TOKEN_TYPE (awk, ((awk->option & QSE_AWK_BXOR)? TOKEN_BXOR: TOKEN_EXP)); } } - else if (c == ASE_T('+')) + else if (c == QSE_T('+')) { ADD_TOKEN_CHAR (awk, c); GET_CHAR_TO (awk, c); - if (c == ASE_T('+')) + if (c == QSE_T('+')) { SET_TOKEN_TYPE (awk, TOKEN_PLUSPLUS); ADD_TOKEN_CHAR (awk, c); GET_CHAR (awk); } - else if (c == ASE_T('=')) + else if (c == QSE_T('=')) { SET_TOKEN_TYPE (awk, TOKEN_PLUS_ASSIGN); ADD_TOKEN_CHAR (awk, c); @@ -4830,17 +4830,17 @@ static int get_token (ase_awk_t* awk) SET_TOKEN_TYPE (awk, TOKEN_PLUS); } } - else if (c == ASE_T('-')) + else if (c == QSE_T('-')) { ADD_TOKEN_CHAR (awk, c); GET_CHAR_TO (awk, c); - if (c == ASE_T('-')) + if (c == QSE_T('-')) { SET_TOKEN_TYPE (awk, TOKEN_MINUSMINUS); ADD_TOKEN_CHAR (awk, c); GET_CHAR (awk); } - else if (c == ASE_T('=')) + else if (c == QSE_T('=')) { SET_TOKEN_TYPE (awk, TOKEN_MINUS_ASSIGN); ADD_TOKEN_CHAR (awk, c); @@ -4851,22 +4851,22 @@ static int get_token (ase_awk_t* awk) SET_TOKEN_TYPE (awk, TOKEN_MINUS); } } - else if (c == ASE_T('*')) + else if (c == QSE_T('*')) { ADD_TOKEN_CHAR (awk, c); GET_CHAR_TO (awk, c); - if (c == ASE_T('=')) + if (c == QSE_T('=')) { SET_TOKEN_TYPE (awk, TOKEN_MUL_ASSIGN); ADD_TOKEN_CHAR (awk, c); GET_CHAR (awk); } - else if (c == ASE_T('*')) + else if (c == QSE_T('*')) { ADD_TOKEN_CHAR (awk, c); GET_CHAR_TO (awk, c); - if (c == ASE_T('=')) + if (c == QSE_T('=')) { SET_TOKEN_TYPE (awk, TOKEN_EXP_ASSIGN); ADD_TOKEN_CHAR (awk, c); @@ -4882,22 +4882,22 @@ static int get_token (ase_awk_t* awk) SET_TOKEN_TYPE (awk, TOKEN_MUL); } } - else if (c == ASE_T('/')) + else if (c == QSE_T('/')) { ADD_TOKEN_CHAR (awk, c); GET_CHAR_TO (awk, c); - if (c == ASE_T('=')) + if (c == QSE_T('=')) { SET_TOKEN_TYPE (awk, TOKEN_DIV_ASSIGN); ADD_TOKEN_CHAR (awk, c); GET_CHAR (awk); } - else if ((awk->option & ASE_AWK_IDIV) && c == ASE_T('/')) + else if ((awk->option & QSE_AWK_IDIV) && c == QSE_T('/')) { ADD_TOKEN_CHAR (awk, c); GET_CHAR_TO (awk, c); - if (c == ASE_T('=')) + if (c == QSE_T('=')) { SET_TOKEN_TYPE (awk, TOKEN_IDIV_ASSIGN); ADD_TOKEN_CHAR (awk, c); @@ -4913,12 +4913,12 @@ static int get_token (ase_awk_t* awk) SET_TOKEN_TYPE (awk, TOKEN_DIV); } } - else if (c == ASE_T('%')) + else if (c == QSE_T('%')) { ADD_TOKEN_CHAR (awk, c); GET_CHAR_TO (awk, c); - if (c == ASE_T('=')) + if (c == QSE_T('=')) { SET_TOKEN_TYPE (awk, TOKEN_MOD_ASSIGN); ADD_TOKEN_CHAR (awk, c); @@ -4934,26 +4934,26 @@ static int get_token (ase_awk_t* awk) int i; static struct { - ase_char_t c; + qse_char_t c; int t; } tab[] = { - { ASE_T('~'), TOKEN_TILDE }, - { ASE_T('('), TOKEN_LPAREN }, - { ASE_T(')'), TOKEN_RPAREN }, - { ASE_T('{'), TOKEN_LBRACE }, - { ASE_T('}'), TOKEN_RBRACE }, - { ASE_T('['), TOKEN_LBRACK }, - { ASE_T(']'), TOKEN_RBRACK }, - { ASE_T('$'), TOKEN_DOLLAR }, - { ASE_T(','), TOKEN_COMMA }, - { ASE_T(';'), TOKEN_SEMICOLON }, - { ASE_T(':'), TOKEN_COLON }, - { ASE_T('?'), TOKEN_QUEST }, - { ASE_CHAR_EOF, TOKEN_EOF } + { QSE_T('~'), TOKEN_TILDE }, + { QSE_T('('), TOKEN_LPAREN }, + { QSE_T(')'), TOKEN_RPAREN }, + { QSE_T('{'), TOKEN_LBRACE }, + { QSE_T('}'), TOKEN_RBRACE }, + { QSE_T('['), TOKEN_LBRACK }, + { QSE_T(']'), TOKEN_RBRACK }, + { QSE_T('$'), TOKEN_DOLLAR }, + { QSE_T(','), TOKEN_COMMA }, + { QSE_T(';'), TOKEN_SEMICOLON }, + { QSE_T(':'), TOKEN_COLON }, + { QSE_T('?'), TOKEN_QUEST }, + { QSE_CHAR_EOF, TOKEN_EOF } }; - for (i = 0; tab[i].c != ASE_CHAR_EOF; i++) + for (i = 0; tab[i].c != QSE_CHAR_EOF; i++) { if (c == tab[i].c) { @@ -4964,8 +4964,8 @@ static int get_token (ase_awk_t* awk) } } - ase_char_t cc = (ase_char_t)c; - SETERRARG (awk, ASE_AWK_ELXCHR, awk->token.line, &cc, 1); + qse_char_t cc = (qse_char_t)c; + SETERRARG (awk, QSE_AWK_ELXCHR, awk->token.line, &cc, 1); return -1; } @@ -4973,21 +4973,21 @@ get_token_ok: return 0; } -static int get_number (ase_awk_t* awk) +static int get_number (qse_awk_t* awk) { - ase_cint_t c; + qse_cint_t c; - ASE_ASSERT (ASE_STR_LEN(awk->token.name) == 0); + QSE_ASSERT (QSE_STR_LEN(awk->token.name) == 0); SET_TOKEN_TYPE (awk, TOKEN_INT); c = awk->src.lex.curc; - if (c == ASE_T('0')) + if (c == QSE_T('0')) { ADD_TOKEN_CHAR (awk, c); GET_CHAR_TO (awk, c); - if (c == ASE_T('x') || c == ASE_T('X')) + if (c == QSE_T('x') || c == QSE_T('X')) { /* hexadecimal number */ do @@ -4995,12 +4995,12 @@ static int get_number (ase_awk_t* awk) ADD_TOKEN_CHAR (awk, c); GET_CHAR_TO (awk, c); } - while (ASE_AWK_ISXDIGIT (awk, c)); + while (QSE_AWK_ISXDIGIT (awk, c)); return 0; } #if 0 - else if (c == ASE_T('b') || c == ASE_T('B')) + else if (c == QSE_T('b') || c == QSE_T('B')) { /* binary number */ do @@ -5008,7 +5008,7 @@ static int get_number (ase_awk_t* awk) ADD_TOKEN_CHAR (awk, c); GET_CHAR_TO (awk, c); } - while (c == ASE_T('0') || c == ASE_T('1')); + while (c == QSE_T('0') || c == QSE_T('1')); return 0; } @@ -5016,16 +5016,16 @@ static int get_number (ase_awk_t* awk) else if (c != '.') { /* octal number */ - while (c >= ASE_T('0') && c <= ASE_T('7')) + while (c >= QSE_T('0') && c <= QSE_T('7')) { ADD_TOKEN_CHAR (awk, c); GET_CHAR_TO (awk, c); } - if (c == ASE_T('8') || c == ASE_T('9')) + if (c == QSE_T('8') || c == QSE_T('9')) { - ase_char_t cc = (ase_char_t)c; - SETERRARG (awk, ASE_AWK_ELXDIG, awk->token.line, &cc, 1); + qse_char_t cc = (qse_char_t)c; + SETERRARG (awk, QSE_AWK_ELXDIG, awk->token.line, &cc, 1); return -1; } @@ -5033,13 +5033,13 @@ static int get_number (ase_awk_t* awk) } } - while (ASE_AWK_ISDIGIT (awk, c)) + while (QSE_AWK_ISDIGIT (awk, c)) { ADD_TOKEN_CHAR (awk, c); GET_CHAR_TO (awk, c); } - if (c == ASE_T('.')) + if (c == QSE_T('.')) { /* floating-point number */ SET_TOKEN_TYPE (awk, TOKEN_REAL); @@ -5047,27 +5047,27 @@ static int get_number (ase_awk_t* awk) ADD_TOKEN_CHAR (awk, c); GET_CHAR_TO (awk, c); - while (ASE_AWK_ISDIGIT (awk, c)) + while (QSE_AWK_ISDIGIT (awk, c)) { ADD_TOKEN_CHAR (awk, c); GET_CHAR_TO (awk, c); } } - if (c == ASE_T('E') || c == ASE_T('e')) + if (c == QSE_T('E') || c == QSE_T('e')) { SET_TOKEN_TYPE (awk, TOKEN_REAL); ADD_TOKEN_CHAR (awk, c); GET_CHAR_TO (awk, c); - if (c == ASE_T('+') || c == ASE_T('-')) + if (c == QSE_T('+') || c == QSE_T('-')) { ADD_TOKEN_CHAR (awk, c); GET_CHAR_TO (awk, c); } - while (ASE_AWK_ISDIGIT (awk, c)) + while (QSE_AWK_ISDIGIT (awk, c)) { ADD_TOKEN_CHAR (awk, c); GET_CHAR_TO (awk, c); @@ -5077,20 +5077,20 @@ static int get_number (ase_awk_t* awk) return 0; } -static int get_charstr (ase_awk_t* awk) +static int get_charstr (qse_awk_t* awk) { - if (awk->src.lex.curc != ASE_T('\"')) + if (awk->src.lex.curc != QSE_T('\"')) { /* the starting quote has been consumed before this function * has been called */ ADD_TOKEN_CHAR (awk, awk->src.lex.curc); } - return get_string (awk, ASE_T('\"'), ASE_T('\\'), ASE_FALSE); + return get_string (awk, QSE_T('\"'), QSE_T('\\'), QSE_FALSE); } -static int get_rexstr (ase_awk_t* awk) +static int get_rexstr (qse_awk_t* awk) { - if (awk->src.lex.curc == ASE_T('/')) + if (awk->src.lex.curc == QSE_T('/')) { /* this part of the function is different from get_charstr * because of the way this function is called */ @@ -5100,34 +5100,34 @@ static int get_rexstr (ase_awk_t* awk) else { ADD_TOKEN_CHAR (awk, awk->src.lex.curc); - return get_string (awk, ASE_T('/'), ASE_T('\\'), ASE_TRUE); + return get_string (awk, QSE_T('/'), QSE_T('\\'), QSE_TRUE); } } static int get_string ( - ase_awk_t* awk, ase_char_t end_char, - ase_char_t esc_char, ase_bool_t keep_esc_char) + qse_awk_t* awk, qse_char_t end_char, + qse_char_t esc_char, qse_bool_t keep_esc_char) { - ase_cint_t c; + qse_cint_t c; int escaped = 0; int digit_count = 0; - ase_cint_t c_acc = 0; + qse_cint_t c_acc = 0; while (1) { GET_CHAR_TO (awk, c); - if (c == ASE_CHAR_EOF) + if (c == QSE_CHAR_EOF) { - SETERRTOK (awk, ASE_AWK_EENDSTR); + SETERRTOK (awk, QSE_AWK_EENDSTR); return -1; } if (escaped == 3) { - if (c >= ASE_T('0') && c <= ASE_T('7')) + if (c >= QSE_T('0') && c <= QSE_T('7')) { - c_acc = c_acc * 8 + c - ASE_T('0'); + c_acc = c_acc * 8 + c - QSE_T('0'); digit_count++; if (digit_count >= escaped) { @@ -5144,9 +5144,9 @@ static int get_string ( } else if (escaped == 2 || escaped == 4 || escaped == 8) { - if (c >= ASE_T('0') && c <= ASE_T('9')) + if (c >= QSE_T('0') && c <= QSE_T('9')) { - c_acc = c_acc * 16 + c - ASE_T('0'); + c_acc = c_acc * 16 + c - QSE_T('0'); digit_count++; if (digit_count >= escaped) { @@ -5155,9 +5155,9 @@ static int get_string ( } continue; } - else if (c >= ASE_T('A') && c <= ASE_T('F')) + else if (c >= QSE_T('A') && c <= QSE_T('F')) { - c_acc = c_acc * 16 + c - ASE_T('A') + 10; + c_acc = c_acc * 16 + c - QSE_T('A') + 10; digit_count++; if (digit_count >= escaped) { @@ -5166,9 +5166,9 @@ static int get_string ( } continue; } - else if (c >= ASE_T('a') && c <= ASE_T('f')) + else if (c >= QSE_T('a') && c <= QSE_T('f')) { - c_acc = c_acc * 16 + c - ASE_T('a') + 10; + c_acc = c_acc * 16 + c - QSE_T('a') + 10; digit_count++; if (digit_count >= escaped) { @@ -5179,10 +5179,10 @@ static int get_string ( } else { - ase_char_t rc; + qse_char_t rc; - rc = (escaped == 2)? ASE_T('x'): - (escaped == 4)? ASE_T('u'): ASE_T('U'); + rc = (escaped == 2)? QSE_T('x'): + (escaped == 4)? QSE_T('u'): QSE_T('U'); if (digit_count == 0) ADD_TOKEN_CHAR (awk, rc); else ADD_TOKEN_CHAR (awk, c_acc); @@ -5207,36 +5207,36 @@ static int get_string ( if (escaped == 1) { - if (c == ASE_T('n')) c = ASE_T('\n'); - else if (c == ASE_T('r')) c = ASE_T('\r'); - else if (c == ASE_T('t')) c = ASE_T('\t'); - else if (c == ASE_T('f')) c = ASE_T('\f'); - else if (c == ASE_T('b')) c = ASE_T('\b'); - else if (c == ASE_T('v')) c = ASE_T('\v'); - else if (c == ASE_T('a')) c = ASE_T('\a'); - else if (c >= ASE_T('0') && c <= ASE_T('7')) + if (c == QSE_T('n')) c = QSE_T('\n'); + else if (c == QSE_T('r')) c = QSE_T('\r'); + else if (c == QSE_T('t')) c = QSE_T('\t'); + else if (c == QSE_T('f')) c = QSE_T('\f'); + else if (c == QSE_T('b')) c = QSE_T('\b'); + else if (c == QSE_T('v')) c = QSE_T('\v'); + else if (c == QSE_T('a')) c = QSE_T('\a'); + else if (c >= QSE_T('0') && c <= QSE_T('7')) { escaped = 3; digit_count = 1; - c_acc = c - ASE_T('0'); + c_acc = c - QSE_T('0'); continue; } - else if (c == ASE_T('x')) + else if (c == QSE_T('x')) { escaped = 2; digit_count = 0; c_acc = 0; continue; } - #ifdef ASE_CHAR_IS_WCHAR - else if (c == ASE_T('u') && ASE_SIZEOF(ase_char_t) >= 2) + #ifdef QSE_CHAR_IS_WCHAR + else if (c == QSE_T('u') && QSE_SIZEOF(qse_char_t) >= 2) { escaped = 4; digit_count = 0; c_acc = 0; continue; } - else if (c == ASE_T('U') && ASE_SIZEOF(ase_char_t) >= 4) + else if (c == QSE_T('U') && QSE_SIZEOF(qse_char_t) >= 4) { escaped = 8; digit_count = 0; @@ -5258,10 +5258,10 @@ static int get_string ( return 0; } -static int get_char (ase_awk_t* awk) +static int get_char (qse_awk_t* awk) { - ase_ssize_t n; - /*ase_char_t c;*/ + qse_ssize_t n; + /*qse_char_t c;*/ if (awk->src.lex.ungotc_count > 0) { @@ -5275,17 +5275,17 @@ static int get_char (ase_awk_t* awk) { CLRERR (awk); n = awk->src.ios.in ( - ASE_AWK_IO_READ, awk->src.ios.data, - awk->src.shared.buf, ASE_COUNTOF(awk->src.shared.buf)); + QSE_AWK_IO_READ, awk->src.ios.data, + awk->src.shared.buf, QSE_COUNTOF(awk->src.shared.buf)); if (n <= -1) { - if (ISNOERR(awk)) SETERR (awk, ASE_AWK_ESINRD); + if (ISNOERR(awk)) SETERR (awk, QSE_AWK_ESINRD); return -1; } if (n == 0) { - awk->src.lex.curc = ASE_CHAR_EOF; + awk->src.lex.curc = QSE_CHAR_EOF; return 0; } @@ -5295,7 +5295,7 @@ static int get_char (ase_awk_t* awk) awk->src.lex.curc = awk->src.shared.buf[awk->src.shared.buf_pos++]; - if (awk->src.lex.curc == ASE_T('\n')) + if (awk->src.lex.curc == QSE_T('\n')) { awk->src.lex.line++; awk->src.lex.column = 1; @@ -5305,11 +5305,11 @@ static int get_char (ase_awk_t* awk) return 0; } -static int unget_char (ase_awk_t* awk, ase_cint_t c) +static int unget_char (qse_awk_t* awk, qse_cint_t c) { - if (awk->src.lex.ungotc_count >= ASE_COUNTOF(awk->src.lex.ungotc)) + if (awk->src.lex.ungotc_count >= QSE_COUNTOF(awk->src.lex.ungotc)) { - SETERRLIN (awk, ASE_AWK_ELXUNG, awk->src.lex.line); + SETERRLIN (awk, QSE_AWK_ELXUNG, awk->src.lex.line); return -1; } @@ -5319,27 +5319,27 @@ static int unget_char (ase_awk_t* awk, ase_cint_t c) return 0; } -static int skip_spaces (ase_awk_t* awk) +static int skip_spaces (qse_awk_t* awk) { - ase_cint_t c = awk->src.lex.curc; + qse_cint_t c = awk->src.lex.curc; - if (awk->option & ASE_AWK_NEWLINE) + if (awk->option & QSE_AWK_NEWLINE) { do { - while (c != ASE_T('\n') && ASE_AWK_ISSPACE(awk,c)) + while (c != QSE_T('\n') && QSE_AWK_ISSPACE(awk,c)) GET_CHAR_TO (awk, c); - if (c == ASE_T('\\')) + if (c == QSE_T('\\')) { int cr = 0; GET_CHAR_TO (awk, c); - if (c == ASE_T('\r')) + if (c == QSE_T('\r')) { cr = 1; GET_CHAR_TO (awk, c); } - if (c == ASE_T('\n')) + if (c == QSE_T('\n')) { GET_CHAR_TO (awk, c); continue; @@ -5347,7 +5347,7 @@ static int skip_spaces (ase_awk_t* awk) else { UNGET_CHAR (awk, c); - if (cr) UNGET_CHAR(awk, ASE_T('\r')); + if (cr) UNGET_CHAR(awk, QSE_T('\r')); } } @@ -5357,56 +5357,56 @@ static int skip_spaces (ase_awk_t* awk) } else { - while (ASE_AWK_ISSPACE (awk, c)) GET_CHAR_TO (awk, c); + while (QSE_AWK_ISSPACE (awk, c)) GET_CHAR_TO (awk, c); } return 0; } -static int skip_comment (ase_awk_t* awk) +static int skip_comment (qse_awk_t* awk) { - ase_cint_t c = awk->src.lex.curc; - ase_size_t line, column; + qse_cint_t c = awk->src.lex.curc; + qse_size_t line, column; - if (c == ASE_T('#')) + if (c == QSE_T('#')) { do { GET_CHAR_TO (awk, c); } - while (c != ASE_T('\n') && c != ASE_CHAR_EOF); + while (c != QSE_T('\n') && c != QSE_CHAR_EOF); - if (!(awk->option & ASE_AWK_NEWLINE)) GET_CHAR (awk); + if (!(awk->option & QSE_AWK_NEWLINE)) GET_CHAR (awk); return 1; /* comment by # */ } - if (c != ASE_T('/')) return 0; /* not a comment */ + if (c != QSE_T('/')) return 0; /* not a comment */ line = awk->src.lex.line; column = awk->src.lex.column; GET_CHAR_TO (awk, c); - if (c == ASE_T('*')) + if (c == QSE_T('*')) { do { GET_CHAR_TO (awk, c); - if (c == ASE_CHAR_EOF) + if (c == QSE_CHAR_EOF) { - SETERRLIN (awk, ASE_AWK_EENDCMT, awk->src.lex.line); + SETERRLIN (awk, QSE_AWK_EENDCMT, awk->src.lex.line); return -1; } - if (c == ASE_T('*')) + if (c == QSE_T('*')) { GET_CHAR_TO (awk, c); - if (c == ASE_CHAR_EOF) + if (c == QSE_CHAR_EOF) { - SETERRLIN (awk, ASE_AWK_EENDCMT, awk->src.lex.line); + SETERRLIN (awk, QSE_AWK_EENDCMT, awk->src.lex.line); return -1; } - if (c == ASE_T('/')) + if (c == QSE_T('/')) { /*GET_CHAR_TO (awk, c);*/ GET_CHAR (awk); @@ -5420,7 +5420,7 @@ static int skip_comment (ase_awk_t* awk) } UNGET_CHAR (awk, c); - awk->src.lex.curc = ASE_T('/'); + awk->src.lex.curc = QSE_T('/'); awk->src.lex.line = line; awk->src.lex.column = column; @@ -5428,24 +5428,24 @@ static int skip_comment (ase_awk_t* awk) } static int classify_ident ( - ase_awk_t* awk, const ase_char_t* name, ase_size_t len) + qse_awk_t* awk, const qse_char_t* name, qse_size_t len) { kwent_t* kwp; - ase_map_pair_t* pair; + qse_map_pair_t* pair; - for (kwp = kwtab; kwp->name != ASE_NULL; kwp++) + for (kwp = kwtab; kwp->name != QSE_NULL; kwp++) { - const ase_char_t* k; - ase_size_t l; + const qse_char_t* k; + qse_size_t l; if (kwp->valid != 0 && (awk->option & kwp->valid) != kwp->valid) continue; - pair = ase_map_search (awk->wtab, kwp->name, kwp->name_len); - if (pair != ASE_NULL) + pair = qse_map_search (awk->wtab, kwp->name, kwp->name_len); + if (pair != QSE_NULL) { - k = ((ase_cstr_t*)(pair->vptr))->ptr; - l = ((ase_cstr_t*)(pair->vptr))->len; + k = ((qse_cstr_t*)(pair->vptr))->ptr; + l = ((qse_cstr_t*)(pair->vptr))->len; } else { @@ -5453,7 +5453,7 @@ static int classify_ident ( l = kwp->name_len; } - if (ase_strxncmp (k, l, name, len) == 0) + if (qse_strxncmp (k, l, name, len) == 0) { return kwp->type; @@ -5463,24 +5463,24 @@ static int classify_ident ( return TOKEN_IDENT; } -static int assign_to_opcode (ase_awk_t* awk) +static int assign_to_opcode (qse_awk_t* awk) { - /* synchronize it with ase_awk_assop_type_t in run.h */ + /* synchronize it with qse_awk_assop_type_t in run.h */ static int assop[] = { - ASE_AWK_ASSOP_NONE, - ASE_AWK_ASSOP_PLUS, - ASE_AWK_ASSOP_MINUS, - ASE_AWK_ASSOP_MUL, - ASE_AWK_ASSOP_DIV, - ASE_AWK_ASSOP_IDIV, - ASE_AWK_ASSOP_MOD, - ASE_AWK_ASSOP_EXP, - ASE_AWK_ASSOP_RSHIFT, - ASE_AWK_ASSOP_LSHIFT, - ASE_AWK_ASSOP_BAND, - ASE_AWK_ASSOP_BXOR, - ASE_AWK_ASSOP_BOR + QSE_AWK_ASSOP_NONE, + QSE_AWK_ASSOP_PLUS, + QSE_AWK_ASSOP_MINUS, + QSE_AWK_ASSOP_MUL, + QSE_AWK_ASSOP_DIV, + QSE_AWK_ASSOP_IDIV, + QSE_AWK_ASSOP_MOD, + QSE_AWK_ASSOP_EXP, + QSE_AWK_ASSOP_RSHIFT, + QSE_AWK_ASSOP_LSHIFT, + QSE_AWK_ASSOP_BAND, + QSE_AWK_ASSOP_BXOR, + QSE_AWK_ASSOP_BOR }; if (awk->token.type >= TOKEN_ASSIGN && @@ -5492,55 +5492,55 @@ static int assign_to_opcode (ase_awk_t* awk) return -1; } -static int is_plain_var (ase_awk_nde_t* nde) +static int is_plain_var (qse_awk_nde_t* nde) { - return nde->type == ASE_AWK_NDE_GLOBAL || - nde->type == ASE_AWK_NDE_LOCAL || - nde->type == ASE_AWK_NDE_ARG || - nde->type == ASE_AWK_NDE_NAMED; + return nde->type == QSE_AWK_NDE_GLOBAL || + nde->type == QSE_AWK_NDE_LOCAL || + nde->type == QSE_AWK_NDE_ARG || + nde->type == QSE_AWK_NDE_NAMED; } -static int is_var (ase_awk_nde_t* nde) +static int is_var (qse_awk_nde_t* nde) { - return nde->type == ASE_AWK_NDE_GLOBAL || - nde->type == ASE_AWK_NDE_LOCAL || - nde->type == ASE_AWK_NDE_ARG || - nde->type == ASE_AWK_NDE_NAMED || - nde->type == ASE_AWK_NDE_GLOBALIDX || - nde->type == ASE_AWK_NDE_LOCALIDX || - nde->type == ASE_AWK_NDE_ARGIDX || - nde->type == ASE_AWK_NDE_NAMEDIDX; + return nde->type == QSE_AWK_NDE_GLOBAL || + nde->type == QSE_AWK_NDE_LOCAL || + nde->type == QSE_AWK_NDE_ARG || + nde->type == QSE_AWK_NDE_NAMED || + nde->type == QSE_AWK_NDE_GLOBALIDX || + nde->type == QSE_AWK_NDE_LOCALIDX || + nde->type == QSE_AWK_NDE_ARGIDX || + nde->type == QSE_AWK_NDE_NAMEDIDX; } struct deparse_func_t { - ase_awk_t* awk; - ase_char_t* tmp; - ase_size_t tmp_len; + qse_awk_t* awk; + qse_char_t* tmp; + qse_size_t tmp_len; int ret; }; -static int deparse (ase_awk_t* awk) +static int deparse (qse_awk_t* awk) { - ase_awk_nde_t* nde; - ase_awk_chain_t* chain; - ase_char_t tmp[ASE_SIZEOF(ase_size_t)*8 + 32]; + qse_awk_nde_t* nde; + qse_awk_chain_t* chain; + qse_char_t tmp[QSE_SIZEOF(qse_size_t)*8 + 32]; struct deparse_func_t df; int n = 0; - ase_ssize_t op; - ase_cstr_t kw; + qse_ssize_t op; + qse_cstr_t kw; - ASE_ASSERT (awk->src.ios.out != ASE_NULL); + QSE_ASSERT (awk->src.ios.out != QSE_NULL); awk->src.shared.buf_len = 0; awk->src.shared.buf_pos = 0; CLRERR (awk); op = awk->src.ios.out ( - ASE_AWK_IO_OPEN, awk->src.ios.data, ASE_NULL, 0); + QSE_AWK_IO_OPEN, awk->src.ios.data, QSE_NULL, 0); if (op <= -1) { - if (ISNOERR(awk)) SETERR (awk, ASE_AWK_ESOUTOP); + if (ISNOERR(awk)) SETERR (awk, QSE_AWK_ESOUTOP); return -1; } @@ -5565,80 +5565,80 @@ static int deparse (ase_awk_t* awk) if (awk->tree.nglobals > awk->tree.nbglobals) { - ase_size_t i, len; + qse_size_t i, len; - ASE_ASSERT (awk->tree.nglobals > 0); + QSE_ASSERT (awk->tree.nglobals > 0); - ase_awk_getkw (awk, KW_GLOBAL, &kw); - if (ase_awk_putsrcstrx(awk,kw.ptr,kw.len) == -1) + qse_awk_getkw (awk, KW_GLOBAL, &kw); + if (qse_awk_putsrcstrx(awk,kw.ptr,kw.len) == -1) { EXIT_DEPARSE (); } - if (ase_awk_putsrcstr (awk, ASE_T(" ")) == -1) + if (qse_awk_putsrcstr (awk, QSE_T(" ")) == -1) { EXIT_DEPARSE (); } for (i = awk->tree.nbglobals; i < awk->tree.nglobals - 1; i++) { - if ((awk->option & ASE_AWK_EXPLICIT) && - !(awk->option & ASE_AWK_IMPLICIT)) + if ((awk->option & QSE_AWK_EXPLICIT) && + !(awk->option & QSE_AWK_IMPLICIT)) { /* use the actual name if no named variable * is allowed */ - if (ase_awk_putsrcstrx (awk, - ASE_LDA_DPTR(awk->parse.globals,i), - ASE_LDA_DLEN(awk->parse.globals,i)) == -1) + if (qse_awk_putsrcstrx (awk, + QSE_LDA_DPTR(awk->parse.globals,i), + QSE_LDA_DLEN(awk->parse.globals,i)) == -1) { EXIT_DEPARSE (); } } else { - len = ase_awk_longtostr ((ase_long_t)i, - 10, ASE_T("__g"), tmp, ASE_COUNTOF(tmp)); - ASE_ASSERT (len != (ase_size_t)-1); - if (ase_awk_putsrcstrx (awk, tmp, len) == -1) + len = qse_awk_longtostr ((qse_long_t)i, + 10, QSE_T("__g"), tmp, QSE_COUNTOF(tmp)); + QSE_ASSERT (len != (qse_size_t)-1); + if (qse_awk_putsrcstrx (awk, tmp, len) == -1) { EXIT_DEPARSE (); } } - if (ase_awk_putsrcstr (awk, ASE_T(", ")) == -1) + if (qse_awk_putsrcstr (awk, QSE_T(", ")) == -1) EXIT_DEPARSE (); } - if ((awk->option & ASE_AWK_EXPLICIT) && - !(awk->option & ASE_AWK_IMPLICIT)) + if ((awk->option & QSE_AWK_EXPLICIT) && + !(awk->option & QSE_AWK_IMPLICIT)) { - if (ase_awk_putsrcstrx (awk, - ASE_LDA_DPTR(awk->parse.globals,i), - ASE_LDA_DLEN(awk->parse.globals,i)) == -1) + if (qse_awk_putsrcstrx (awk, + QSE_LDA_DPTR(awk->parse.globals,i), + QSE_LDA_DLEN(awk->parse.globals,i)) == -1) { EXIT_DEPARSE (); } } else { - len = ase_awk_longtostr ((ase_long_t)i, - 10, ASE_T("__g"), tmp, ASE_COUNTOF(tmp)); - ASE_ASSERT (len != (ase_size_t)-1); - if (ase_awk_putsrcstrx (awk, tmp, len) == -1) + len = qse_awk_longtostr ((qse_long_t)i, + 10, QSE_T("__g"), tmp, QSE_COUNTOF(tmp)); + QSE_ASSERT (len != (qse_size_t)-1); + if (qse_awk_putsrcstrx (awk, tmp, len) == -1) { EXIT_DEPARSE (); } } - if (awk->option & ASE_AWK_CRLF) + if (awk->option & QSE_AWK_CRLF) { - if (ase_awk_putsrcstr (awk, ASE_T(";\r\n\r\n")) == -1) + if (qse_awk_putsrcstr (awk, QSE_T(";\r\n\r\n")) == -1) { EXIT_DEPARSE (); } } else { - if (ase_awk_putsrcstr (awk, ASE_T(";\n\n")) == -1) + if (qse_awk_putsrcstr (awk, QSE_T(";\n\n")) == -1) { EXIT_DEPARSE (); } @@ -5647,94 +5647,94 @@ static int deparse (ase_awk_t* awk) df.awk = awk; df.tmp = tmp; - df.tmp_len = ASE_COUNTOF(tmp); + df.tmp_len = QSE_COUNTOF(tmp); df.ret = 0; - ase_map_walk (awk->tree.afns, deparse_func, &df); + qse_map_walk (awk->tree.afns, deparse_func, &df); if (df.ret == -1) { EXIT_DEPARSE (); } - for (nde = awk->tree.begin; nde != ASE_NULL; nde = nde->next) + for (nde = awk->tree.begin; nde != QSE_NULL; nde = nde->next) { - ase_cstr_t kw; + qse_cstr_t kw; - ase_awk_getkw (awk, KW_BEGIN, &kw); + qse_awk_getkw (awk, KW_BEGIN, &kw); - if (ase_awk_putsrcstrx (awk, kw.ptr, kw.len) == -1) EXIT_DEPARSE (); - if (ase_awk_putsrcstr (awk, ASE_T(" ")) == -1) EXIT_DEPARSE (); - if (ase_awk_prnnde (awk, nde) == -1) EXIT_DEPARSE (); + if (qse_awk_putsrcstrx (awk, kw.ptr, kw.len) == -1) EXIT_DEPARSE (); + if (qse_awk_putsrcstr (awk, QSE_T(" ")) == -1) EXIT_DEPARSE (); + if (qse_awk_prnnde (awk, nde) == -1) EXIT_DEPARSE (); - if (awk->option & ASE_AWK_CRLF) + if (awk->option & QSE_AWK_CRLF) { - if (put_char (awk, ASE_T('\r')) == -1) EXIT_DEPARSE (); + if (put_char (awk, QSE_T('\r')) == -1) EXIT_DEPARSE (); } - if (put_char (awk, ASE_T('\n')) == -1) EXIT_DEPARSE (); + if (put_char (awk, QSE_T('\n')) == -1) EXIT_DEPARSE (); } chain = awk->tree.chain; - while (chain != ASE_NULL) + while (chain != QSE_NULL) { - if (chain->pattern != ASE_NULL) + if (chain->pattern != QSE_NULL) { - if (ase_awk_prnptnpt (awk, chain->pattern) == -1) + if (qse_awk_prnptnpt (awk, chain->pattern) == -1) EXIT_DEPARSE (); } - if (chain->action == ASE_NULL) + if (chain->action == QSE_NULL) { /* blockless pattern */ - if (awk->option & ASE_AWK_CRLF) + if (awk->option & QSE_AWK_CRLF) { - if (put_char (awk, ASE_T('\r')) == -1) + if (put_char (awk, QSE_T('\r')) == -1) EXIT_DEPARSE (); } - if (put_char (awk, ASE_T('\n')) == -1) + if (put_char (awk, QSE_T('\n')) == -1) EXIT_DEPARSE (); } else { - if (chain->pattern != ASE_NULL) + if (chain->pattern != QSE_NULL) { - if (put_char (awk, ASE_T(' ')) == -1) + if (put_char (awk, QSE_T(' ')) == -1) EXIT_DEPARSE (); } - if (ase_awk_prnpt (awk, chain->action) == -1) + if (qse_awk_prnpt (awk, chain->action) == -1) EXIT_DEPARSE (); } - if (awk->option & ASE_AWK_CRLF) + if (awk->option & QSE_AWK_CRLF) { - if (put_char (awk, ASE_T('\r')) == -1) + if (put_char (awk, QSE_T('\r')) == -1) EXIT_DEPARSE (); } - if (put_char (awk, ASE_T('\n')) == -1) + if (put_char (awk, QSE_T('\n')) == -1) EXIT_DEPARSE (); chain = chain->next; } - for (nde = awk->tree.end; nde != ASE_NULL; nde = nde->next) + for (nde = awk->tree.end; nde != QSE_NULL; nde = nde->next) { - ase_cstr_t kw; + qse_cstr_t kw; - ase_awk_getkw (awk, KW_END, &kw); + qse_awk_getkw (awk, KW_END, &kw); - if (ase_awk_putsrcstrx (awk, kw.ptr, kw.len) == -1) EXIT_DEPARSE (); - if (ase_awk_putsrcstr (awk, ASE_T(" ")) == -1) EXIT_DEPARSE (); - if (ase_awk_prnnde (awk, nde) == -1) EXIT_DEPARSE (); + if (qse_awk_putsrcstrx (awk, kw.ptr, kw.len) == -1) EXIT_DEPARSE (); + if (qse_awk_putsrcstr (awk, QSE_T(" ")) == -1) EXIT_DEPARSE (); + if (qse_awk_prnnde (awk, nde) == -1) EXIT_DEPARSE (); /* - if (awk->option & ASE_AWK_CRLF) + if (awk->option & QSE_AWK_CRLF) { - if (put_char (awk, ASE_T('\r')) == -1) EXIT_DEPARSE (); + if (put_char (awk, QSE_T('\r')) == -1) EXIT_DEPARSE (); } - if (put_char (awk, ASE_T('\n')) == -1) EXIT_DEPARSE (); + if (put_char (awk, QSE_T('\n')) == -1) EXIT_DEPARSE (); */ } @@ -5743,11 +5743,11 @@ static int deparse (ase_awk_t* awk) exit_deparse: if (n == 0) CLRERR (awk); if (awk->src.ios.out ( - ASE_AWK_IO_CLOSE, awk->src.ios.data, ASE_NULL, 0) != 0) + QSE_AWK_IO_CLOSE, awk->src.ios.data, QSE_NULL, 0) != 0) { if (n == 0) { - if (ISNOERR(awk)) SETERR (awk, ASE_AWK_ESOUTCL); + if (ISNOERR(awk)) SETERR (awk, QSE_AWK_ESOUTCL); n = -1; } } @@ -5757,95 +5757,95 @@ exit_deparse: -static ase_map_walk_t deparse_func (ase_map_t* map, ase_map_pair_t* pair, void* arg) +static qse_map_walk_t deparse_func (qse_map_t* map, qse_map_pair_t* pair, void* arg) { struct deparse_func_t* df = (struct deparse_func_t*)arg; /* CHECK: */ - ase_awk_afn_t* afn = (ase_awk_afn_t*)ASE_MAP_VPTR(pair); - ase_size_t i, n; - ase_cstr_t kw; + qse_awk_afn_t* afn = (qse_awk_afn_t*)QSE_MAP_VPTR(pair); + qse_size_t i, n; + qse_cstr_t kw; - ASE_ASSERT (ase_strxncmp (ASE_PAIR_KEYPTR(pair), ASE_PAIR_KEYLEN(pair), afn->name.ptr, afn->name.len) == 0); + QSE_ASSERT (qse_strxncmp (QSE_PAIR_KEYPTR(pair), QSE_PAIR_KEYLEN(pair), afn->name.ptr, afn->name.len) == 0); #define PUT_C(x,c) \ if (put_char(x->awk,c)==-1) { \ - x->ret = -1; return ASE_MAP_WALK_STOP; \ + x->ret = -1; return QSE_MAP_WALK_STOP; \ } #define PUT_S(x,str) \ - if (ase_awk_putsrcstr(x->awk,str) == -1) { \ - x->ret = -1; return ASE_MAP_WALK_STOP; \ + if (qse_awk_putsrcstr(x->awk,str) == -1) { \ + x->ret = -1; return QSE_MAP_WALK_STOP; \ } #define PUT_SX(x,str,len) \ - if (ase_awk_putsrcstrx (x->awk, str, len) == -1) { \ - x->ret = -1; return ASE_MAP_WALK_STOP; \ + if (qse_awk_putsrcstrx (x->awk, str, len) == -1) { \ + x->ret = -1; return QSE_MAP_WALK_STOP; \ } - ase_awk_getkw (df->awk, KW_FUNCTION, &kw); + qse_awk_getkw (df->awk, KW_FUNCTION, &kw); PUT_SX (df, kw.ptr, kw.len); - PUT_C (df, ASE_T(' ')); + PUT_C (df, QSE_T(' ')); PUT_SX (df, afn->name.ptr, afn->name.len); - PUT_S (df, ASE_T(" (")); + PUT_S (df, QSE_T(" (")); for (i = 0; i < afn->nargs; ) { - n = ase_awk_longtostr (i++, 10, - ASE_T("__p"), df->tmp, df->tmp_len); - ASE_ASSERT (n != (ase_size_t)-1); + n = qse_awk_longtostr (i++, 10, + QSE_T("__p"), df->tmp, df->tmp_len); + QSE_ASSERT (n != (qse_size_t)-1); PUT_SX (df, df->tmp, n); if (i >= afn->nargs) break; - PUT_S (df, ASE_T(", ")); + PUT_S (df, QSE_T(", ")); } - PUT_S (df, ASE_T(")")); - if (df->awk->option & ASE_AWK_CRLF) PUT_C (df, ASE_T('\r')); + PUT_S (df, QSE_T(")")); + if (df->awk->option & QSE_AWK_CRLF) PUT_C (df, QSE_T('\r')); - PUT_C (df, ASE_T('\n')); + PUT_C (df, QSE_T('\n')); - if (ase_awk_prnpt (df->awk, afn->body) == -1) return -1; - if (df->awk->option & ASE_AWK_CRLF) + if (qse_awk_prnpt (df->awk, afn->body) == -1) return -1; + if (df->awk->option & QSE_AWK_CRLF) { - PUT_C (df, ASE_T('\r')); + PUT_C (df, QSE_T('\r')); } - PUT_C (df, ASE_T('\n')); + PUT_C (df, QSE_T('\n')); - return ASE_MAP_WALK_FORWARD; + return QSE_MAP_WALK_FORWARD; #undef PUT_C #undef PUT_S #undef PUT_SX } -static int put_char (ase_awk_t* awk, ase_char_t c) +static int put_char (qse_awk_t* awk, qse_char_t c) { awk->src.shared.buf[awk->src.shared.buf_len++] = c; - if (awk->src.shared.buf_len >= ASE_COUNTOF(awk->src.shared.buf)) + if (awk->src.shared.buf_len >= QSE_COUNTOF(awk->src.shared.buf)) { if (flush_out (awk) == -1) return -1; } return 0; } -static int flush_out (ase_awk_t* awk) +static int flush_out (qse_awk_t* awk) { - ase_ssize_t n; + qse_ssize_t n; - ASE_ASSERT (awk->src.ios.out != ASE_NULL); + QSE_ASSERT (awk->src.ios.out != QSE_NULL); while (awk->src.shared.buf_pos < awk->src.shared.buf_len) { CLRERR (awk); n = awk->src.ios.out ( - ASE_AWK_IO_WRITE, awk->src.ios.data, + QSE_AWK_IO_WRITE, awk->src.ios.data, &awk->src.shared.buf[awk->src.shared.buf_pos], awk->src.shared.buf_len - awk->src.shared.buf_pos); if (n <= 0) { - if (ISNOERR(awk)) SETERR (awk, ASE_AWK_ESOUTWR); + if (ISNOERR(awk)) SETERR (awk, QSE_AWK_ESOUTWR); return -1; } @@ -5857,9 +5857,9 @@ static int flush_out (ase_awk_t* awk) return 0; } -int ase_awk_putsrcstr (ase_awk_t* awk, const ase_char_t* str) +int qse_awk_putsrcstr (qse_awk_t* awk, const qse_char_t* str) { - while (*str != ASE_T('\0')) + while (*str != QSE_T('\0')) { if (put_char (awk, *str) == -1) return -1; str++; @@ -5868,10 +5868,10 @@ int ase_awk_putsrcstr (ase_awk_t* awk, const ase_char_t* str) return 0; } -int ase_awk_putsrcstrx ( - ase_awk_t* awk, const ase_char_t* str, ase_size_t len) +int qse_awk_putsrcstrx ( + qse_awk_t* awk, const qse_char_t* str, qse_size_t len) { - const ase_char_t* end = str + len; + const qse_char_t* end = str + len; while (str < end) { diff --git a/qse/lib/awk/parse.h b/qse/lib/awk/parse.h index 9bfb0243..91979cbc 100644 --- a/qse/lib/awk/parse.h +++ b/qse/lib/awk/parse.h @@ -4,8 +4,8 @@ * {License} */ -#ifndef _ASE_LIB_AWK_PARSE_H_ -#define _ASE_LIB_AWK_PARSE_H_ +#ifndef _QSE_LIB_AWK_PARSE_H_ +#define _QSE_LIB_AWK_PARSE_H_ /* these enums should match kwtab in parse.c */ enum kw_t @@ -39,16 +39,16 @@ enum kw_t extern "C" { #endif -int ase_awk_putsrcstr (ase_awk_t* awk, const ase_char_t* str); -int ase_awk_putsrcstrx ( - ase_awk_t* awk, const ase_char_t* str, ase_size_t len); +int qse_awk_putsrcstr (qse_awk_t* awk, const qse_char_t* str); +int qse_awk_putsrcstrx ( + qse_awk_t* awk, const qse_char_t* str, qse_size_t len); -const ase_char_t* ase_awk_getglobalname ( - ase_awk_t* awk, ase_size_t idx, ase_size_t* len); -ase_cstr_t* ase_awk_getkw (ase_awk_t* awk, int id, ase_cstr_t* s); +const qse_char_t* qse_awk_getglobalname ( + qse_awk_t* awk, qse_size_t idx, qse_size_t* len); +qse_cstr_t* qse_awk_getkw (qse_awk_t* awk, int id, qse_cstr_t* s); -int ase_awk_initglobals (ase_awk_t* awk); +int qse_awk_initglobals (qse_awk_t* awk); #ifdef __cplusplus } diff --git a/qse/lib/awk/rec.c b/qse/lib/awk/rec.c index 006aca09..f75bcae7 100644 --- a/qse/lib/awk/rec.c +++ b/qse/lib/awk/rec.c @@ -6,53 +6,53 @@ #include "awk.h" -static int split_record (ase_awk_run_t* run); +static int split_record (qse_awk_run_t* run); static int recomp_record_fields ( - ase_awk_run_t* run, ase_size_t lv, - const ase_char_t* str, ase_size_t len); + qse_awk_run_t* run, qse_size_t lv, + const qse_char_t* str, qse_size_t len); -int ase_awk_setrec ( - ase_awk_run_t* run, ase_size_t idx, - const ase_char_t* str, ase_size_t len) +int qse_awk_setrec ( + qse_awk_run_t* run, qse_size_t idx, + const qse_char_t* str, qse_size_t len) { - ase_awk_val_t* v; + qse_awk_val_t* v; if (idx == 0) { - if (str == ASE_STR_PTR(&run->inrec.line) && - len == ASE_STR_LEN(&run->inrec.line)) + if (str == QSE_STR_PTR(&run->inrec.line) && + len == QSE_STR_LEN(&run->inrec.line)) { - if (ase_awk_clrrec (run, ASE_TRUE) == -1) return -1; + if (qse_awk_clrrec (run, QSE_TRUE) == -1) return -1; } else { - if (ase_awk_clrrec (run, ASE_FALSE) == -1) return -1; + if (qse_awk_clrrec (run, QSE_FALSE) == -1) return -1; - if (ase_str_ncpy (&run->inrec.line, str, len) == (ase_size_t)-1) + if (qse_str_ncpy (&run->inrec.line, str, len) == (qse_size_t)-1) { - ase_awk_clrrec (run, ASE_FALSE); - ase_awk_setrunerror ( - run, ASE_AWK_ENOMEM, 0, ASE_NULL, 0); + qse_awk_clrrec (run, QSE_FALSE); + qse_awk_setrunerror ( + run, QSE_AWK_ENOMEM, 0, QSE_NULL, 0); return -1; } } - v = ase_awk_makestrval (run, str, len); - if (v == ASE_NULL) + v = qse_awk_makestrval (run, str, len); + if (v == QSE_NULL) { - ase_awk_clrrec (run, ASE_FALSE); + qse_awk_clrrec (run, QSE_FALSE); return -1; } - ASE_ASSERT (run->inrec.d0->type == ASE_AWK_VAL_NIL); + QSE_ASSERT (run->inrec.d0->type == QSE_AWK_VAL_NIL); /* d0 should be cleared before the next line is reached - * as it doesn't call ase_awk_refdownval on run->inrec.d0 */ + * as it doesn't call qse_awk_refdownval on run->inrec.d0 */ run->inrec.d0 = v; - ase_awk_refupval (run, v); + qse_awk_refupval (run, v); if (split_record (run) == -1) { - ase_awk_clrrec (run, ASE_FALSE); + qse_awk_clrrec (run, QSE_FALSE); return -1; } } @@ -60,206 +60,206 @@ int ase_awk_setrec ( { if (recomp_record_fields (run, idx, str, len) == -1) { - ase_awk_clrrec (run, ASE_FALSE); + qse_awk_clrrec (run, QSE_FALSE); return -1; } /* recompose $0 */ - v = ase_awk_makestrval (run, - ASE_STR_PTR(&run->inrec.line), - ASE_STR_LEN(&run->inrec.line)); - if (v == ASE_NULL) + v = qse_awk_makestrval (run, + QSE_STR_PTR(&run->inrec.line), + QSE_STR_LEN(&run->inrec.line)); + if (v == QSE_NULL) { - ase_awk_clrrec (run, ASE_FALSE); + qse_awk_clrrec (run, QSE_FALSE); return -1; } - ase_awk_refdownval (run, run->inrec.d0); + qse_awk_refdownval (run, run->inrec.d0); run->inrec.d0 = v; - ase_awk_refupval (run, v); + qse_awk_refupval (run, v); } return 0; } -static int split_record (ase_awk_run_t* run) +static int split_record (qse_awk_run_t* run) { - ase_char_t* p, * tok; - ase_size_t len, tok_len, nflds; - ase_awk_val_t* v, * fs; - ase_char_t* fs_ptr, * fs_free; - ase_size_t fs_len; + qse_char_t* p, * tok; + qse_size_t len, tok_len, nflds; + qse_awk_val_t* v, * fs; + qse_char_t* fs_ptr, * fs_free; + qse_size_t fs_len; int errnum; /* inrec should be cleared before split_record is called */ - ASE_ASSERT (run->inrec.nflds == 0); + QSE_ASSERT (run->inrec.nflds == 0); /* get FS */ - fs = ase_awk_getglobal (run, ASE_AWK_GLOBAL_FS); - if (fs->type == ASE_AWK_VAL_NIL) + fs = qse_awk_getglobal (run, QSE_AWK_GLOBAL_FS); + if (fs->type == QSE_AWK_VAL_NIL) { - fs_ptr = ASE_T(" "); + fs_ptr = QSE_T(" "); fs_len = 1; - fs_free = ASE_NULL; + fs_free = QSE_NULL; } - else if (fs->type == ASE_AWK_VAL_STR) + else if (fs->type == QSE_AWK_VAL_STR) { - fs_ptr = ((ase_awk_val_str_t*)fs)->buf; - fs_len = ((ase_awk_val_str_t*)fs)->len; - fs_free = ASE_NULL; + fs_ptr = ((qse_awk_val_str_t*)fs)->buf; + fs_len = ((qse_awk_val_str_t*)fs)->len; + fs_free = QSE_NULL; } else { - fs_ptr = ase_awk_valtostr ( - run, fs, ASE_AWK_VALTOSTR_CLEAR, ASE_NULL, &fs_len); - if (fs_ptr == ASE_NULL) return -1; + fs_ptr = qse_awk_valtostr ( + run, fs, QSE_AWK_VALTOSTR_CLEAR, QSE_NULL, &fs_len); + if (fs_ptr == QSE_NULL) return -1; fs_free = fs_ptr; } /* scan the input record to count the fields */ - p = ASE_STR_PTR(&run->inrec.line); - len = ASE_STR_LEN(&run->inrec.line); + p = QSE_STR_PTR(&run->inrec.line); + len = QSE_STR_LEN(&run->inrec.line); nflds = 0; - while (p != ASE_NULL) + while (p != QSE_NULL) { if (fs_len <= 1) { - p = ase_awk_strxntok (run, + p = qse_awk_strxntok (run, p, len, fs_ptr, fs_len, &tok, &tok_len); } else { - p = ase_awk_strxntokbyrex (run, p, len, + p = qse_awk_strxntokbyrex (run, p, len, run->global.fs, &tok, &tok_len, &errnum); - if (p == ASE_NULL && errnum != ASE_AWK_ENOERR) + if (p == QSE_NULL && errnum != QSE_AWK_ENOERR) { - if (fs_free != ASE_NULL) - ASE_AWK_FREE (run->awk, fs_free); - ase_awk_setrunerror (run, errnum, 0, ASE_NULL, 0); + if (fs_free != QSE_NULL) + QSE_AWK_FREE (run->awk, fs_free); + qse_awk_setrunerror (run, errnum, 0, QSE_NULL, 0); return -1; } } - if (nflds == 0 && p == ASE_NULL && tok_len == 0) + if (nflds == 0 && p == QSE_NULL && tok_len == 0) { /* there are no fields. it can just return here - * as ase_awk_clrrec has been called before this */ - if (fs_free != ASE_NULL) ASE_AWK_FREE (run->awk, fs_free); + * as qse_awk_clrrec has been called before this */ + if (fs_free != QSE_NULL) QSE_AWK_FREE (run->awk, fs_free); return 0; } - ASE_ASSERT ((tok != ASE_NULL && tok_len > 0) || tok_len == 0); + QSE_ASSERT ((tok != QSE_NULL && tok_len > 0) || tok_len == 0); nflds++; - len = ASE_STR_LEN(&run->inrec.line) - - (p - ASE_STR_PTR(&run->inrec.line)); + len = QSE_STR_LEN(&run->inrec.line) - + (p - QSE_STR_PTR(&run->inrec.line)); } /* allocate space */ if (nflds > run->inrec.maxflds) { - void* tmp = ASE_AWK_ALLOC ( - run->awk, ASE_SIZEOF(*run->inrec.flds) * nflds); - if (tmp == ASE_NULL) + void* tmp = QSE_AWK_ALLOC ( + run->awk, QSE_SIZEOF(*run->inrec.flds) * nflds); + if (tmp == QSE_NULL) { - if (fs_free != ASE_NULL) ASE_AWK_FREE (run->awk, fs_free); - ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, ASE_NULL, 0); + if (fs_free != QSE_NULL) QSE_AWK_FREE (run->awk, fs_free); + qse_awk_setrunerror (run, QSE_AWK_ENOMEM, 0, QSE_NULL, 0); return -1; } - if (run->inrec.flds != ASE_NULL) - ASE_AWK_FREE (run->awk, run->inrec.flds); + if (run->inrec.flds != QSE_NULL) + QSE_AWK_FREE (run->awk, run->inrec.flds); run->inrec.flds = tmp; run->inrec.maxflds = nflds; } /* scan again and split it */ - p = ASE_STR_PTR(&run->inrec.line); - len = ASE_STR_LEN(&run->inrec.line); + p = QSE_STR_PTR(&run->inrec.line); + len = QSE_STR_LEN(&run->inrec.line); - while (p != ASE_NULL) + while (p != QSE_NULL) { if (fs_len <= 1) { - p = ase_awk_strxntok ( + p = qse_awk_strxntok ( run, p, len, fs_ptr, fs_len, &tok, &tok_len); } else { - p = ase_awk_strxntokbyrex (run, p, len, + p = qse_awk_strxntokbyrex (run, p, len, run->global.fs, &tok, &tok_len, &errnum); - if (p == ASE_NULL && errnum != ASE_AWK_ENOERR) + if (p == QSE_NULL && errnum != QSE_AWK_ENOERR) { - if (fs_free != ASE_NULL) - ASE_AWK_FREE (run->awk, fs_free); - ase_awk_setrunerror (run, errnum, 0, ASE_NULL, 0); + if (fs_free != QSE_NULL) + QSE_AWK_FREE (run->awk, fs_free); + qse_awk_setrunerror (run, errnum, 0, QSE_NULL, 0); return -1; } } - ASE_ASSERT ((tok != ASE_NULL && tok_len > 0) || tok_len == 0); + QSE_ASSERT ((tok != QSE_NULL && tok_len > 0) || tok_len == 0); run->inrec.flds[run->inrec.nflds].ptr = tok; run->inrec.flds[run->inrec.nflds].len = tok_len; run->inrec.flds[run->inrec.nflds].val = - ase_awk_makestrval (run, tok, tok_len); + qse_awk_makestrval (run, tok, tok_len); - if (run->inrec.flds[run->inrec.nflds].val == ASE_NULL) + if (run->inrec.flds[run->inrec.nflds].val == QSE_NULL) { - if (fs_free != ASE_NULL) ASE_AWK_FREE (run->awk, fs_free); + if (fs_free != QSE_NULL) QSE_AWK_FREE (run->awk, fs_free); return -1; } - ase_awk_refupval (run, run->inrec.flds[run->inrec.nflds].val); + qse_awk_refupval (run, run->inrec.flds[run->inrec.nflds].val); run->inrec.nflds++; - len = ASE_STR_LEN(&run->inrec.line) - - (p - ASE_STR_PTR(&run->inrec.line)); + len = QSE_STR_LEN(&run->inrec.line) - + (p - QSE_STR_PTR(&run->inrec.line)); } - if (fs_free != ASE_NULL) ASE_AWK_FREE (run->awk, fs_free); + if (fs_free != QSE_NULL) QSE_AWK_FREE (run->awk, fs_free); /* set the number of fields */ - v = ase_awk_makeintval (run, (ase_long_t)nflds); - if (v == ASE_NULL) return -1; + v = qse_awk_makeintval (run, (qse_long_t)nflds); + if (v == QSE_NULL) return -1; - ase_awk_refupval (run, v); - if (ase_awk_setglobal (run, ASE_AWK_GLOBAL_NF, v) == -1) + qse_awk_refupval (run, v); + if (qse_awk_setglobal (run, QSE_AWK_GLOBAL_NF, v) == -1) { - ase_awk_refdownval (run, v); + qse_awk_refdownval (run, v); return -1; } - ase_awk_refdownval (run, v); - ASE_ASSERT (nflds == run->inrec.nflds); + qse_awk_refdownval (run, v); + QSE_ASSERT (nflds == run->inrec.nflds); return 0; } -int ase_awk_clrrec (ase_awk_run_t* run, ase_bool_t skip_inrec_line) +int qse_awk_clrrec (qse_awk_run_t* run, qse_bool_t skip_inrec_line) { - ase_size_t i; + qse_size_t i; int n = 0; - if (run->inrec.d0 != ase_awk_val_nil) + if (run->inrec.d0 != qse_awk_val_nil) { - ase_awk_refdownval (run, run->inrec.d0); - run->inrec.d0 = ase_awk_val_nil; + qse_awk_refdownval (run, run->inrec.d0); + run->inrec.d0 = qse_awk_val_nil; } if (run->inrec.nflds > 0) { - ASE_ASSERT (run->inrec.flds != ASE_NULL); + QSE_ASSERT (run->inrec.flds != QSE_NULL); for (i = 0; i < run->inrec.nflds; i++) { - ASE_ASSERT (run->inrec.flds[i].val != ASE_NULL); - ase_awk_refdownval (run, run->inrec.flds[i].val); + QSE_ASSERT (run->inrec.flds[i].val != QSE_NULL); + qse_awk_refdownval (run, run->inrec.flds[i].val); } run->inrec.nflds = 0; - if (ase_awk_setglobal ( - run, ASE_AWK_GLOBAL_NF, ase_awk_val_zero) == -1) + if (qse_awk_setglobal ( + run, QSE_AWK_GLOBAL_NF, qse_awk_val_zero) == -1) { /* first of all, this should never happen. * if it happened, it would return an error @@ -268,23 +268,23 @@ int ase_awk_clrrec (ase_awk_run_t* run, ase_bool_t skip_inrec_line) } } - ASE_ASSERT (run->inrec.nflds == 0); - if (!skip_inrec_line) ase_str_clear (&run->inrec.line); + QSE_ASSERT (run->inrec.nflds == 0); + if (!skip_inrec_line) qse_str_clear (&run->inrec.line); return n; } static int recomp_record_fields ( - ase_awk_run_t* run, ase_size_t lv, - const ase_char_t* str, ase_size_t len) + qse_awk_run_t* run, qse_size_t lv, + const qse_char_t* str, qse_size_t len) { - ase_awk_val_t* v; - ase_size_t max, i, nflds; + qse_awk_val_t* v; + qse_size_t max, i, nflds; /* recomposes the record and the fields when $N has been assigned * a new value and recomputes NF accordingly */ - ASE_ASSERT (lv > 0); + QSE_ASSERT (lv > 0); max = (lv > run->inrec.nflds)? lv: run->inrec.nflds; nflds = run->inrec.nflds; @@ -296,33 +296,33 @@ static int recomp_record_fields ( * number of fields that the current record can hold, * the field spaces are resized */ - if (run->awk->mmgr->realloc != ASE_NULL) + if (run->awk->mmgr->realloc != QSE_NULL) { - tmp = ASE_AWK_REALLOC ( + tmp = QSE_AWK_REALLOC ( run->awk, run->inrec.flds, - ASE_SIZEOF(*run->inrec.flds) * max); - if (tmp == ASE_NULL) + QSE_SIZEOF(*run->inrec.flds) * max); + if (tmp == QSE_NULL) { - ase_awk_setrunerror ( - run, ASE_AWK_ENOMEM, 0, ASE_NULL, 0); + qse_awk_setrunerror ( + run, QSE_AWK_ENOMEM, 0, QSE_NULL, 0); return -1; } } else { - tmp = ASE_AWK_ALLOC ( - run->awk, ASE_SIZEOF(*run->inrec.flds) * max); - if (tmp == ASE_NULL) + tmp = QSE_AWK_ALLOC ( + run->awk, QSE_SIZEOF(*run->inrec.flds) * max); + if (tmp == QSE_NULL) { - ase_awk_setrunerror ( - run, ASE_AWK_ENOMEM, 0, ASE_NULL, 0); + qse_awk_setrunerror ( + run, QSE_AWK_ENOMEM, 0, QSE_NULL, 0); return -1; } - if (run->inrec.flds != ASE_NULL) + if (run->inrec.flds != QSE_NULL) { - ASE_MEMCPY (tmp, run->inrec.flds, - ASE_SIZEOF(*run->inrec.flds)*run->inrec.maxflds); - ASE_AWK_FREE (run->awk, run->inrec.flds); + QSE_MEMCPY (tmp, run->inrec.flds, + QSE_SIZEOF(*run->inrec.flds)*run->inrec.maxflds); + QSE_AWK_FREE (run->awk, run->inrec.flds); } } @@ -332,109 +332,109 @@ static int recomp_record_fields ( lv = lv - 1; /* adjust the value to 0-based index */ - ase_str_clear (&run->inrec.line); + qse_str_clear (&run->inrec.line); for (i = 0; i < max; i++) { if (i > 0) { - if (ase_str_ncat ( + if (qse_str_ncat ( &run->inrec.line, run->global.ofs.ptr, - run->global.ofs.len) == (ase_size_t)-1) + run->global.ofs.len) == (qse_size_t)-1) { - ase_awk_setrunerror ( - run, ASE_AWK_ENOMEM, 0, ASE_NULL, 0); + qse_awk_setrunerror ( + run, QSE_AWK_ENOMEM, 0, QSE_NULL, 0); return -1; } } if (i == lv) { - ase_awk_val_t* tmp; + qse_awk_val_t* tmp; run->inrec.flds[i].ptr = - ASE_STR_PTR(&run->inrec.line) + - ASE_STR_LEN(&run->inrec.line); + QSE_STR_PTR(&run->inrec.line) + + QSE_STR_LEN(&run->inrec.line); run->inrec.flds[i].len = len; - if (ase_str_ncat ( - &run->inrec.line, str, len) == (ase_size_t)-1) + if (qse_str_ncat ( + &run->inrec.line, str, len) == (qse_size_t)-1) { - ase_awk_setrunerror ( - run, ASE_AWK_ENOMEM, 0, ASE_NULL, 0); + qse_awk_setrunerror ( + run, QSE_AWK_ENOMEM, 0, QSE_NULL, 0); return -1; } - tmp = ase_awk_makestrval (run, str,len); - if (tmp == ASE_NULL) return -1; + tmp = qse_awk_makestrval (run, str,len); + if (tmp == QSE_NULL) return -1; if (i < nflds) - ase_awk_refdownval (run, run->inrec.flds[i].val); + qse_awk_refdownval (run, run->inrec.flds[i].val); else run->inrec.nflds++; run->inrec.flds[i].val = tmp; - ase_awk_refupval (run, tmp); + qse_awk_refupval (run, tmp); } else if (i >= nflds) { run->inrec.flds[i].ptr = - ASE_STR_PTR(&run->inrec.line) + - ASE_STR_LEN(&run->inrec.line); + QSE_STR_PTR(&run->inrec.line) + + QSE_STR_LEN(&run->inrec.line); run->inrec.flds[i].len = 0; - if (ase_str_cat ( - &run->inrec.line, ASE_T("")) == (ase_size_t)-1) + if (qse_str_cat ( + &run->inrec.line, QSE_T("")) == (qse_size_t)-1) { - ase_awk_setrunerror ( - run, ASE_AWK_ENOMEM, 0, ASE_NULL, 0); + qse_awk_setrunerror ( + run, QSE_AWK_ENOMEM, 0, QSE_NULL, 0); return -1; } - /* ase_awk_refdownval should not be called over + /* qse_awk_refdownval should not be called over * run->inrec.flds[i].val as it is not initialized * to any valid values */ - /*ase_awk_refdownval (run, run->inrec.flds[i].val);*/ - run->inrec.flds[i].val = ase_awk_val_zls; - ase_awk_refupval (run, ase_awk_val_zls); + /*qse_awk_refdownval (run, run->inrec.flds[i].val);*/ + run->inrec.flds[i].val = qse_awk_val_zls; + qse_awk_refupval (run, qse_awk_val_zls); run->inrec.nflds++; } else { - ase_awk_val_str_t* tmp; + qse_awk_val_str_t* tmp; - tmp = (ase_awk_val_str_t*)run->inrec.flds[i].val; + tmp = (qse_awk_val_str_t*)run->inrec.flds[i].val; run->inrec.flds[i].ptr = - ASE_STR_PTR(&run->inrec.line) + - ASE_STR_LEN(&run->inrec.line); + QSE_STR_PTR(&run->inrec.line) + + QSE_STR_LEN(&run->inrec.line); run->inrec.flds[i].len = tmp->len; - if (ase_str_ncat (&run->inrec.line, - tmp->buf, tmp->len) == (ase_size_t)-1) + if (qse_str_ncat (&run->inrec.line, + tmp->buf, tmp->len) == (qse_size_t)-1) { - ase_awk_setrunerror ( - run, ASE_AWK_ENOMEM, 0, ASE_NULL, 0); + qse_awk_setrunerror ( + run, QSE_AWK_ENOMEM, 0, QSE_NULL, 0); return -1; } } } - v = ase_awk_getglobal (run, ASE_AWK_GLOBAL_NF); - ASE_ASSERT (v->type == ASE_AWK_VAL_INT); + v = qse_awk_getglobal (run, QSE_AWK_GLOBAL_NF); + QSE_ASSERT (v->type == QSE_AWK_VAL_INT); - if (((ase_awk_val_int_t*)v)->val != max) + if (((qse_awk_val_int_t*)v)->val != max) { - v = ase_awk_makeintval (run, (ase_long_t)max); - if (v == ASE_NULL) return -1; + v = qse_awk_makeintval (run, (qse_long_t)max); + if (v == QSE_NULL) return -1; - ase_awk_refupval (run, v); - if (ase_awk_setglobal (run, ASE_AWK_GLOBAL_NF, v) == -1) + qse_awk_refupval (run, v); + if (qse_awk_setglobal (run, QSE_AWK_GLOBAL_NF, v) == -1) { - ase_awk_refdownval (run, v); + qse_awk_refdownval (run, v); return -1; } - ase_awk_refdownval (run, v); + qse_awk_refdownval (run, v); } return 0; diff --git a/qse/lib/awk/run.c b/qse/lib/awk/run.c index abfa229d..02dc8dfa 100644 --- a/qse/lib/awk/run.c +++ b/qse/lib/awk/run.c @@ -7,7 +7,7 @@ #include "awk.h" #ifdef DEBUG_RUN -#include +#include #endif #define CMP_ERROR -99 @@ -22,7 +22,7 @@ #define STACK_AT(run,n) ((run)->stack[(run)->stack_base+(n)]) #define STACK_NARGS(run) (STACK_AT(run,3)) #define STACK_ARG(run,n) STACK_AT(run,3+1+(n)) -#define STACK_LOCAL(run,n) STACK_AT(run,3+(ase_size_t)STACK_NARGS(run)+1+(n)) +#define STACK_LOCAL(run,n) STACK_AT(run,3+(qse_size_t)STACK_NARGS(run)+1+(n)) #define STACK_RETVAL(run) STACK_AT(run,2) #define STACK_GLOBAL(run,n) ((run)->stack[(n)]) #define STACK_RETVAL_GLOBAL(run) ((run)->stack[(run)->awk->tree.nglobals+2]) @@ -38,317 +38,317 @@ enum exit_level_t EXIT_ABORT }; -#define DEFAULT_CONVFMT ASE_T("%.6g") -#define DEFAULT_OFMT ASE_T("%.6g") -#define DEFAULT_OFS ASE_T(" ") -#define DEFAULT_ORS ASE_T("\n") -#define DEFAULT_ORS_CRLF ASE_T("\r\n") -#define DEFAULT_SUBSEP ASE_T("\034") +#define DEFAULT_CONVFMT QSE_T("%.6g") +#define DEFAULT_OFMT QSE_T("%.6g") +#define DEFAULT_OFS QSE_T(" ") +#define DEFAULT_ORS QSE_T("\n") +#define DEFAULT_ORS_CRLF QSE_T("\r\n") +#define DEFAULT_SUBSEP QSE_T("\034") /* the index of a positional variable should be a positive interger * equal to or less than the maximum value of the type by which * the index is represented. but it has an extra check against the - * maximum value of ase_size_t as the reference is represented - * in a pointer variable of ase_awk_val_ref_t and sizeof(void*) is - * equal to sizeof(ase_size_t). */ + * maximum value of qse_size_t as the reference is represented + * in a pointer variable of qse_awk_val_ref_t and sizeof(void*) is + * equal to sizeof(qse_size_t). */ #define IS_VALID_POSIDX(idx) \ ((idx) >= 0 && \ - (idx) < ASE_TYPE_MAX(ase_long_t) && \ - (idx) < ASE_TYPE_MAX(ase_size_t)) + (idx) < QSE_TYPE_MAX(qse_long_t) && \ + (idx) < QSE_TYPE_MAX(qse_size_t)) static int set_global ( - ase_awk_run_t* run, ase_size_t idx, - ase_awk_nde_var_t* var, ase_awk_val_t* val); + qse_awk_run_t* run, qse_size_t idx, + qse_awk_nde_var_t* var, qse_awk_val_t* val); static int init_run ( - ase_awk_run_t* run, ase_awk_t* awk, - ase_awk_runios_t* runios, void* data); -static void deinit_run (ase_awk_run_t* run); + qse_awk_run_t* run, qse_awk_t* awk, + qse_awk_runios_t* runios, void* data); +static void deinit_run (qse_awk_run_t* run); static int build_runarg ( - ase_awk_run_t* run, ase_awk_runarg_t* runarg, ase_size_t* nargs); -static void cleanup_globals (ase_awk_run_t* run); -static int set_globals_to_default (ase_awk_run_t* run); + qse_awk_run_t* run, qse_awk_runarg_t* runarg, qse_size_t* nargs); +static void cleanup_globals (qse_awk_run_t* run); +static int set_globals_to_default (qse_awk_run_t* run); static int run_main ( - ase_awk_run_t* run, const ase_char_t* main, - ase_awk_runarg_t* runarg); + qse_awk_run_t* run, const qse_char_t* main, + qse_awk_runarg_t* runarg); -static int run_pattern_blocks (ase_awk_run_t* run); +static int run_pattern_blocks (qse_awk_run_t* run); static int run_pattern_block_chain ( - ase_awk_run_t* run, ase_awk_chain_t* chain); + qse_awk_run_t* run, qse_awk_chain_t* chain); static int run_pattern_block ( - ase_awk_run_t* run, ase_awk_chain_t* chain, ase_size_t block_no); -static int run_block (ase_awk_run_t* run, ase_awk_nde_blk_t* nde); -static int run_block0 (ase_awk_run_t* run, ase_awk_nde_blk_t* nde); -static int run_statement (ase_awk_run_t* run, ase_awk_nde_t* nde); -static int run_if (ase_awk_run_t* run, ase_awk_nde_if_t* nde); -static int run_while (ase_awk_run_t* run, ase_awk_nde_while_t* nde); -static int run_for (ase_awk_run_t* run, ase_awk_nde_for_t* nde); -static int run_foreach (ase_awk_run_t* run, ase_awk_nde_foreach_t* nde); -static int run_break (ase_awk_run_t* run, ase_awk_nde_break_t* nde); -static int run_continue (ase_awk_run_t* run, ase_awk_nde_continue_t* nde); -static int run_return (ase_awk_run_t* run, ase_awk_nde_return_t* nde); -static int run_exit (ase_awk_run_t* run, ase_awk_nde_exit_t* nde); -static int run_next (ase_awk_run_t* run, ase_awk_nde_next_t* nde); -static int run_nextfile (ase_awk_run_t* run, ase_awk_nde_nextfile_t* nde); -static int run_delete (ase_awk_run_t* run, ase_awk_nde_delete_t* nde); -static int run_reset (ase_awk_run_t* run, ase_awk_nde_reset_t* nde); -static int run_print (ase_awk_run_t* run, ase_awk_nde_print_t* nde); -static int run_printf (ase_awk_run_t* run, ase_awk_nde_print_t* nde); + qse_awk_run_t* run, qse_awk_chain_t* chain, qse_size_t block_no); +static int run_block (qse_awk_run_t* run, qse_awk_nde_blk_t* nde); +static int run_block0 (qse_awk_run_t* run, qse_awk_nde_blk_t* nde); +static int run_statement (qse_awk_run_t* run, qse_awk_nde_t* nde); +static int run_if (qse_awk_run_t* run, qse_awk_nde_if_t* nde); +static int run_while (qse_awk_run_t* run, qse_awk_nde_while_t* nde); +static int run_for (qse_awk_run_t* run, qse_awk_nde_for_t* nde); +static int run_foreach (qse_awk_run_t* run, qse_awk_nde_foreach_t* nde); +static int run_break (qse_awk_run_t* run, qse_awk_nde_break_t* nde); +static int run_continue (qse_awk_run_t* run, qse_awk_nde_continue_t* nde); +static int run_return (qse_awk_run_t* run, qse_awk_nde_return_t* nde); +static int run_exit (qse_awk_run_t* run, qse_awk_nde_exit_t* nde); +static int run_next (qse_awk_run_t* run, qse_awk_nde_next_t* nde); +static int run_nextfile (qse_awk_run_t* run, qse_awk_nde_nextfile_t* nde); +static int run_delete (qse_awk_run_t* run, qse_awk_nde_delete_t* nde); +static int run_reset (qse_awk_run_t* run, qse_awk_nde_reset_t* nde); +static int run_print (qse_awk_run_t* run, qse_awk_nde_print_t* nde); +static int run_printf (qse_awk_run_t* run, qse_awk_nde_print_t* nde); static int output_formatted ( - ase_awk_run_t* run, int out_type, const ase_char_t* dst, - const ase_char_t* fmt, ase_size_t fmt_len, ase_awk_nde_t* args); + qse_awk_run_t* run, int out_type, const qse_char_t* dst, + const qse_char_t* fmt, qse_size_t fmt_len, qse_awk_nde_t* args); -static ase_awk_val_t* eval_expression (ase_awk_run_t* run, ase_awk_nde_t* nde); -static ase_awk_val_t* eval_expression0 (ase_awk_run_t* run, ase_awk_nde_t* nde); +static qse_awk_val_t* eval_expression (qse_awk_run_t* run, qse_awk_nde_t* nde); +static qse_awk_val_t* eval_expression0 (qse_awk_run_t* run, qse_awk_nde_t* nde); -static ase_awk_val_t* eval_group (ase_awk_run_t* run, ase_awk_nde_t* nde); +static qse_awk_val_t* eval_group (qse_awk_run_t* run, qse_awk_nde_t* nde); -static ase_awk_val_t* eval_assignment ( - ase_awk_run_t* run, ase_awk_nde_t* nde); -static ase_awk_val_t* do_assignment ( - ase_awk_run_t* run, ase_awk_nde_t* var, ase_awk_val_t* val); -static ase_awk_val_t* do_assignment_scalar ( - ase_awk_run_t* run, ase_awk_nde_var_t* var, ase_awk_val_t* val); -static ase_awk_val_t* do_assignment_map ( - ase_awk_run_t* run, ase_awk_nde_var_t* var, ase_awk_val_t* val); -static ase_awk_val_t* do_assignment_pos ( - ase_awk_run_t* run, ase_awk_nde_pos_t* pos, ase_awk_val_t* val); +static qse_awk_val_t* eval_assignment ( + qse_awk_run_t* run, qse_awk_nde_t* nde); +static qse_awk_val_t* do_assignment ( + qse_awk_run_t* run, qse_awk_nde_t* var, qse_awk_val_t* val); +static qse_awk_val_t* do_assignment_scalar ( + qse_awk_run_t* run, qse_awk_nde_var_t* var, qse_awk_val_t* val); +static qse_awk_val_t* do_assignment_map ( + qse_awk_run_t* run, qse_awk_nde_var_t* var, qse_awk_val_t* val); +static qse_awk_val_t* do_assignment_pos ( + qse_awk_run_t* run, qse_awk_nde_pos_t* pos, qse_awk_val_t* val); -static ase_awk_val_t* eval_binary ( - ase_awk_run_t* run, ase_awk_nde_t* nde); -static ase_awk_val_t* eval_binop_lor ( - ase_awk_run_t* run, ase_awk_nde_t* left, ase_awk_nde_t* right); -static ase_awk_val_t* eval_binop_land ( - ase_awk_run_t* run, ase_awk_nde_t* left, ase_awk_nde_t* right); -static ase_awk_val_t* eval_binop_in ( - ase_awk_run_t* run, ase_awk_nde_t* left, ase_awk_nde_t* right); -static ase_awk_val_t* eval_binop_bor ( - ase_awk_run_t* run, ase_awk_val_t* left, ase_awk_val_t* right); -static ase_awk_val_t* eval_binop_bxor ( - ase_awk_run_t* run, ase_awk_val_t* left, ase_awk_val_t* right); -static ase_awk_val_t* eval_binop_band ( - ase_awk_run_t* run, ase_awk_val_t* left, ase_awk_val_t* right); -static ase_awk_val_t* eval_binop_eq ( - ase_awk_run_t* run, ase_awk_val_t* left, ase_awk_val_t* right); -static ase_awk_val_t* eval_binop_ne ( - ase_awk_run_t* run, ase_awk_val_t* left, ase_awk_val_t* right); -static ase_awk_val_t* eval_binop_gt ( - ase_awk_run_t* run, ase_awk_val_t* left, ase_awk_val_t* right); -static ase_awk_val_t* eval_binop_ge ( - ase_awk_run_t* run, ase_awk_val_t* left, ase_awk_val_t* right); -static ase_awk_val_t* eval_binop_lt ( - ase_awk_run_t* run, ase_awk_val_t* left, ase_awk_val_t* right); -static ase_awk_val_t* eval_binop_le ( - ase_awk_run_t* run, ase_awk_val_t* left, ase_awk_val_t* right); -static ase_awk_val_t* eval_binop_lshift ( - ase_awk_run_t* run, ase_awk_val_t* left, ase_awk_val_t* right); -static ase_awk_val_t* eval_binop_rshift ( - ase_awk_run_t* run, ase_awk_val_t* left, ase_awk_val_t* right); -static ase_awk_val_t* eval_binop_plus ( - ase_awk_run_t* run, ase_awk_val_t* left, ase_awk_val_t* right); -static ase_awk_val_t* eval_binop_minus ( - ase_awk_run_t* run, ase_awk_val_t* left, ase_awk_val_t* right); -static ase_awk_val_t* eval_binop_mul ( - ase_awk_run_t* run, ase_awk_val_t* left, ase_awk_val_t* right); -static ase_awk_val_t* eval_binop_div ( - ase_awk_run_t* run, ase_awk_val_t* left, ase_awk_val_t* right); -static ase_awk_val_t* eval_binop_idiv ( - ase_awk_run_t* run, ase_awk_val_t* left, ase_awk_val_t* right); -static ase_awk_val_t* eval_binop_mod ( - ase_awk_run_t* run, ase_awk_val_t* left, ase_awk_val_t* right); -static ase_awk_val_t* eval_binop_exp ( - ase_awk_run_t* run, ase_awk_val_t* left, ase_awk_val_t* right); -static ase_awk_val_t* eval_binop_concat ( - ase_awk_run_t* run, ase_awk_val_t* left, ase_awk_val_t* right); -static ase_awk_val_t* eval_binop_ma ( - ase_awk_run_t* run, ase_awk_nde_t* left, ase_awk_nde_t* right); -static ase_awk_val_t* eval_binop_nm ( - ase_awk_run_t* run, ase_awk_nde_t* left, ase_awk_nde_t* right); -static ase_awk_val_t* eval_binop_match0 ( - ase_awk_run_t* run, ase_awk_val_t* left, ase_awk_val_t* right, - ase_size_t lline, ase_size_t rline, int ret); +static qse_awk_val_t* eval_binary ( + qse_awk_run_t* run, qse_awk_nde_t* nde); +static qse_awk_val_t* eval_binop_lor ( + qse_awk_run_t* run, qse_awk_nde_t* left, qse_awk_nde_t* right); +static qse_awk_val_t* eval_binop_land ( + qse_awk_run_t* run, qse_awk_nde_t* left, qse_awk_nde_t* right); +static qse_awk_val_t* eval_binop_in ( + qse_awk_run_t* run, qse_awk_nde_t* left, qse_awk_nde_t* right); +static qse_awk_val_t* eval_binop_bor ( + qse_awk_run_t* run, qse_awk_val_t* left, qse_awk_val_t* right); +static qse_awk_val_t* eval_binop_bxor ( + qse_awk_run_t* run, qse_awk_val_t* left, qse_awk_val_t* right); +static qse_awk_val_t* eval_binop_band ( + qse_awk_run_t* run, qse_awk_val_t* left, qse_awk_val_t* right); +static qse_awk_val_t* eval_binop_eq ( + qse_awk_run_t* run, qse_awk_val_t* left, qse_awk_val_t* right); +static qse_awk_val_t* eval_binop_ne ( + qse_awk_run_t* run, qse_awk_val_t* left, qse_awk_val_t* right); +static qse_awk_val_t* eval_binop_gt ( + qse_awk_run_t* run, qse_awk_val_t* left, qse_awk_val_t* right); +static qse_awk_val_t* eval_binop_ge ( + qse_awk_run_t* run, qse_awk_val_t* left, qse_awk_val_t* right); +static qse_awk_val_t* eval_binop_lt ( + qse_awk_run_t* run, qse_awk_val_t* left, qse_awk_val_t* right); +static qse_awk_val_t* eval_binop_le ( + qse_awk_run_t* run, qse_awk_val_t* left, qse_awk_val_t* right); +static qse_awk_val_t* eval_binop_lshift ( + qse_awk_run_t* run, qse_awk_val_t* left, qse_awk_val_t* right); +static qse_awk_val_t* eval_binop_rshift ( + qse_awk_run_t* run, qse_awk_val_t* left, qse_awk_val_t* right); +static qse_awk_val_t* eval_binop_plus ( + qse_awk_run_t* run, qse_awk_val_t* left, qse_awk_val_t* right); +static qse_awk_val_t* eval_binop_minus ( + qse_awk_run_t* run, qse_awk_val_t* left, qse_awk_val_t* right); +static qse_awk_val_t* eval_binop_mul ( + qse_awk_run_t* run, qse_awk_val_t* left, qse_awk_val_t* right); +static qse_awk_val_t* eval_binop_div ( + qse_awk_run_t* run, qse_awk_val_t* left, qse_awk_val_t* right); +static qse_awk_val_t* eval_binop_idiv ( + qse_awk_run_t* run, qse_awk_val_t* left, qse_awk_val_t* right); +static qse_awk_val_t* eval_binop_mod ( + qse_awk_run_t* run, qse_awk_val_t* left, qse_awk_val_t* right); +static qse_awk_val_t* eval_binop_exp ( + qse_awk_run_t* run, qse_awk_val_t* left, qse_awk_val_t* right); +static qse_awk_val_t* eval_binop_concat ( + qse_awk_run_t* run, qse_awk_val_t* left, qse_awk_val_t* right); +static qse_awk_val_t* eval_binop_ma ( + qse_awk_run_t* run, qse_awk_nde_t* left, qse_awk_nde_t* right); +static qse_awk_val_t* eval_binop_nm ( + qse_awk_run_t* run, qse_awk_nde_t* left, qse_awk_nde_t* right); +static qse_awk_val_t* eval_binop_match0 ( + qse_awk_run_t* run, qse_awk_val_t* left, qse_awk_val_t* right, + qse_size_t lline, qse_size_t rline, int ret); -static ase_awk_val_t* eval_unary (ase_awk_run_t* run, ase_awk_nde_t* nde); -static ase_awk_val_t* eval_incpre (ase_awk_run_t* run, ase_awk_nde_t* nde); -static ase_awk_val_t* eval_incpst (ase_awk_run_t* run, ase_awk_nde_t* nde); -static ase_awk_val_t* eval_cnd (ase_awk_run_t* run, ase_awk_nde_t* nde); +static qse_awk_val_t* eval_unary (qse_awk_run_t* run, qse_awk_nde_t* nde); +static qse_awk_val_t* eval_incpre (qse_awk_run_t* run, qse_awk_nde_t* nde); +static qse_awk_val_t* eval_incpst (qse_awk_run_t* run, qse_awk_nde_t* nde); +static qse_awk_val_t* eval_cnd (qse_awk_run_t* run, qse_awk_nde_t* nde); -static ase_awk_val_t* eval_afn_intrinsic ( - ase_awk_run_t* run, ase_awk_nde_t* nde, +static qse_awk_val_t* eval_afn_intrinsic ( + qse_awk_run_t* run, qse_awk_nde_t* nde, void(*errhandler)(void*), void* eharg); -static ase_awk_val_t* eval_bfn (ase_awk_run_t* run, ase_awk_nde_t* nde); -static ase_awk_val_t* eval_afn (ase_awk_run_t* run, ase_awk_nde_t* nde); -static ase_awk_val_t* eval_call ( - ase_awk_run_t* run, ase_awk_nde_t* nde, - const ase_char_t* bfn_arg_spec, ase_awk_afn_t* afn, +static qse_awk_val_t* eval_bfn (qse_awk_run_t* run, qse_awk_nde_t* nde); +static qse_awk_val_t* eval_afn (qse_awk_run_t* run, qse_awk_nde_t* nde); +static qse_awk_val_t* eval_call ( + qse_awk_run_t* run, qse_awk_nde_t* nde, + const qse_char_t* bfn_arg_spec, qse_awk_afn_t* afn, void(*errhandler)(void*), void* eharg); static int get_reference ( - ase_awk_run_t* run, ase_awk_nde_t* nde, ase_awk_val_t*** ref); -static ase_awk_val_t** get_reference_indexed ( - ase_awk_run_t* run, ase_awk_nde_var_t* nde, ase_awk_val_t** val); + qse_awk_run_t* run, qse_awk_nde_t* nde, qse_awk_val_t*** ref); +static qse_awk_val_t** get_reference_indexed ( + qse_awk_run_t* run, qse_awk_nde_var_t* nde, qse_awk_val_t** val); -static ase_awk_val_t* eval_int (ase_awk_run_t* run, ase_awk_nde_t* nde); -static ase_awk_val_t* eval_real (ase_awk_run_t* run, ase_awk_nde_t* nde); -static ase_awk_val_t* eval_str (ase_awk_run_t* run, ase_awk_nde_t* nde); -static ase_awk_val_t* eval_rex (ase_awk_run_t* run, ase_awk_nde_t* nde); -static ase_awk_val_t* eval_named (ase_awk_run_t* run, ase_awk_nde_t* nde); -static ase_awk_val_t* eval_global (ase_awk_run_t* run, ase_awk_nde_t* nde); -static ase_awk_val_t* eval_local (ase_awk_run_t* run, ase_awk_nde_t* nde); -static ase_awk_val_t* eval_arg (ase_awk_run_t* run, ase_awk_nde_t* nde); -static ase_awk_val_t* eval_namedidx (ase_awk_run_t* run, ase_awk_nde_t* nde); -static ase_awk_val_t* eval_globalidx (ase_awk_run_t* run, ase_awk_nde_t* nde); -static ase_awk_val_t* eval_localidx (ase_awk_run_t* run, ase_awk_nde_t* nde); -static ase_awk_val_t* eval_argidx (ase_awk_run_t* run, ase_awk_nde_t* nde); -static ase_awk_val_t* eval_pos (ase_awk_run_t* run, ase_awk_nde_t* nde); -static ase_awk_val_t* eval_getline (ase_awk_run_t* run, ase_awk_nde_t* nde); +static qse_awk_val_t* eval_int (qse_awk_run_t* run, qse_awk_nde_t* nde); +static qse_awk_val_t* eval_real (qse_awk_run_t* run, qse_awk_nde_t* nde); +static qse_awk_val_t* eval_str (qse_awk_run_t* run, qse_awk_nde_t* nde); +static qse_awk_val_t* eval_rex (qse_awk_run_t* run, qse_awk_nde_t* nde); +static qse_awk_val_t* eval_named (qse_awk_run_t* run, qse_awk_nde_t* nde); +static qse_awk_val_t* eval_global (qse_awk_run_t* run, qse_awk_nde_t* nde); +static qse_awk_val_t* eval_local (qse_awk_run_t* run, qse_awk_nde_t* nde); +static qse_awk_val_t* eval_arg (qse_awk_run_t* run, qse_awk_nde_t* nde); +static qse_awk_val_t* eval_namedidx (qse_awk_run_t* run, qse_awk_nde_t* nde); +static qse_awk_val_t* eval_globalidx (qse_awk_run_t* run, qse_awk_nde_t* nde); +static qse_awk_val_t* eval_localidx (qse_awk_run_t* run, qse_awk_nde_t* nde); +static qse_awk_val_t* eval_argidx (qse_awk_run_t* run, qse_awk_nde_t* nde); +static qse_awk_val_t* eval_pos (qse_awk_run_t* run, qse_awk_nde_t* nde); +static qse_awk_val_t* eval_getline (qse_awk_run_t* run, qse_awk_nde_t* nde); -static int __raw_push (ase_awk_run_t* run, void* val); +static int __raw_push (qse_awk_run_t* run, void* val); #define __raw_pop(run) \ do { \ - ASE_ASSERT ((run)->stack_top > (run)->stack_base); \ + QSE_ASSERT ((run)->stack_top > (run)->stack_base); \ (run)->stack_top--; \ } while (0) -static void __raw_pop_times (ase_awk_run_t* run, ase_size_t times); +static void __raw_pop_times (qse_awk_run_t* run, qse_size_t times); -static int read_record (ase_awk_run_t* run); -static int shorten_record (ase_awk_run_t* run, ase_size_t nflds); +static int read_record (qse_awk_run_t* run); +static int shorten_record (qse_awk_run_t* run, qse_size_t nflds); -static ase_char_t* idxnde_to_str ( - ase_awk_run_t* run, ase_awk_nde_t* nde, ase_char_t* buf, ase_size_t* len); +static qse_char_t* idxnde_to_str ( + qse_awk_run_t* run, qse_awk_nde_t* nde, qse_char_t* buf, qse_size_t* len); -typedef ase_awk_val_t* (*binop_func_t) ( - ase_awk_run_t* run, ase_awk_val_t* left, ase_awk_val_t* right); -typedef ase_awk_val_t* (*eval_expr_t) (ase_awk_run_t* run, ase_awk_nde_t* nde); +typedef qse_awk_val_t* (*binop_func_t) ( + qse_awk_run_t* run, qse_awk_val_t* left, qse_awk_val_t* right); +typedef qse_awk_val_t* (*eval_expr_t) (qse_awk_run_t* run, qse_awk_nde_t* nde); -ase_size_t ase_awk_getnargs (ase_awk_run_t* run) +qse_size_t qse_awk_getnargs (qse_awk_run_t* run) { - return (ase_size_t) STACK_NARGS (run); + return (qse_size_t) STACK_NARGS (run); } -ase_awk_val_t* ase_awk_getarg (ase_awk_run_t* run, ase_size_t idx) +qse_awk_val_t* qse_awk_getarg (qse_awk_run_t* run, qse_size_t idx) { return STACK_ARG (run, idx); } -ase_awk_val_t* ase_awk_getglobal (ase_awk_run_t* run, int id) +qse_awk_val_t* qse_awk_getglobal (qse_awk_run_t* run, int id) { - ASE_ASSERT (id >= 0 && id < (int)ase_awk_tab_getsize(&run->awk->parse.globals)); + QSE_ASSERT (id >= 0 && id < (int)qse_awk_tab_getsize(&run->awk->parse.globals)); return STACK_GLOBAL (run, id); } -int ase_awk_setglobal (ase_awk_run_t* run, int id, ase_awk_val_t* val) +int qse_awk_setglobal (qse_awk_run_t* run, int id, qse_awk_val_t* val) { - ASE_ASSERT (id >= 0 && id < (int)ase_awk_tab_getsize(&run->awk->parse.globals)); - return set_global (run, (ase_size_t)id, ASE_NULL, val); + QSE_ASSERT (id >= 0 && id < (int)qse_awk_tab_getsize(&run->awk->parse.globals)); + return set_global (run, (qse_size_t)id, QSE_NULL, val); } static int set_global ( - ase_awk_run_t* run, ase_size_t idx, - ase_awk_nde_var_t* var, ase_awk_val_t* val) + qse_awk_run_t* run, qse_size_t idx, + qse_awk_nde_var_t* var, qse_awk_val_t* val) { - ase_awk_val_t* old; + qse_awk_val_t* old; old = STACK_GLOBAL (run, idx); - if (old->type == ASE_AWK_VAL_MAP) + if (old->type == QSE_AWK_VAL_MAP) { /* once a variable becomes a map, * it cannot be changed to a scalar variable */ - if (var != ASE_NULL) + if (var != QSE_NULL) { /* global variable */ - ase_cstr_t errarg; + qse_cstr_t errarg; errarg.ptr = var->id.name.ptr; errarg.len = var->id.name.len; - ase_awk_setrunerror (run, - ASE_AWK_EMAPTOSCALAR, var->line, &errarg, 1); + qse_awk_setrunerror (run, + QSE_AWK_EMAPTOSCALAR, var->line, &errarg, 1); } else { - /* ase_awk_setglobal has been called */ - ase_cstr_t errarg; + /* qse_awk_setglobal has been called */ + qse_cstr_t errarg; - errarg.ptr = ase_awk_getglobalname ( + errarg.ptr = qse_awk_getglobalname ( run->awk, idx, &errarg.len); - ase_awk_setrunerror (run, - ASE_AWK_EMAPTOSCALAR, 0, &errarg, 1); + qse_awk_setrunerror (run, + QSE_AWK_EMAPTOSCALAR, 0, &errarg, 1); } return -1; } /* builtin variables except ARGV cannot be assigned a map */ - if (val->type == ASE_AWK_VAL_MAP && - (idx >= ASE_AWK_GLOBAL_ARGC && idx <= ASE_AWK_GLOBAL_SUBSEP) && - idx != ASE_AWK_GLOBAL_ARGV) + if (val->type == QSE_AWK_VAL_MAP && + (idx >= QSE_AWK_GLOBAL_ARGC && idx <= QSE_AWK_GLOBAL_SUBSEP) && + idx != QSE_AWK_GLOBAL_ARGV) { /* TODO: better error code */ - ase_awk_setrunerrnum (run, ASE_AWK_ESCALARTOMAP); + qse_awk_setrunerrnum (run, QSE_AWK_ESCALARTOMAP); return -1; } - if (idx == ASE_AWK_GLOBAL_CONVFMT) + if (idx == QSE_AWK_GLOBAL_CONVFMT) { - ase_char_t* convfmt_ptr; - ase_size_t convfmt_len, i; + qse_char_t* convfmt_ptr; + qse_size_t convfmt_len, i; - convfmt_ptr = ase_awk_valtostr (run, - val, ASE_AWK_VALTOSTR_CLEAR, ASE_NULL, &convfmt_len); - if (convfmt_ptr == ASE_NULL) return -1; + convfmt_ptr = qse_awk_valtostr (run, + val, QSE_AWK_VALTOSTR_CLEAR, QSE_NULL, &convfmt_len); + if (convfmt_ptr == QSE_NULL) return -1; for (i = 0; i < convfmt_len; i++) { - if (convfmt_ptr[i] == ASE_T('\0')) + if (convfmt_ptr[i] == QSE_T('\0')) { - ASE_AWK_FREE (run->awk, convfmt_ptr); - ase_awk_setrunerrnum (run, ASE_AWK_ECONVFMTCHR); + QSE_AWK_FREE (run->awk, convfmt_ptr); + qse_awk_setrunerrnum (run, QSE_AWK_ECONVFMTCHR); return -1; } } - if (run->global.convfmt.ptr != ASE_NULL) - ASE_AWK_FREE (run->awk, run->global.convfmt.ptr); + if (run->global.convfmt.ptr != QSE_NULL) + QSE_AWK_FREE (run->awk, run->global.convfmt.ptr); run->global.convfmt.ptr = convfmt_ptr; run->global.convfmt.len = convfmt_len; } - else if (idx == ASE_AWK_GLOBAL_FNR) + else if (idx == QSE_AWK_GLOBAL_FNR) { int n; - ase_long_t lv; - ase_real_t rv; + qse_long_t lv; + qse_real_t rv; - n = ase_awk_valtonum (run, val, &lv, &rv); + n = qse_awk_valtonum (run, val, &lv, &rv); if (n == -1) return -1; - if (n == 1) lv = (ase_long_t)rv; + if (n == 1) lv = (qse_long_t)rv; run->global.fnr = lv; } - else if (idx == ASE_AWK_GLOBAL_FS) + else if (idx == QSE_AWK_GLOBAL_FS) { - ase_char_t* fs_ptr; - ase_size_t fs_len; + qse_char_t* fs_ptr; + qse_size_t fs_len; - if (val->type == ASE_AWK_VAL_STR) + if (val->type == QSE_AWK_VAL_STR) { - fs_ptr = ((ase_awk_val_str_t*)val)->buf; - fs_len = ((ase_awk_val_str_t*)val)->len; + fs_ptr = ((qse_awk_val_str_t*)val)->buf; + fs_len = ((qse_awk_val_str_t*)val)->len; } else { /* due to the expression evaluation rule, the * regular expression can not be an assigned value */ - ASE_ASSERT (val->type != ASE_AWK_VAL_REX); + QSE_ASSERT (val->type != QSE_AWK_VAL_REX); - fs_ptr = ase_awk_valtostr ( - run, val, ASE_AWK_VALTOSTR_CLEAR, ASE_NULL, &fs_len); - if (fs_ptr == ASE_NULL) return -1; + fs_ptr = qse_awk_valtostr ( + run, val, QSE_AWK_VALTOSTR_CLEAR, QSE_NULL, &fs_len); + if (fs_ptr == QSE_NULL) return -1; } if (fs_len > 1) @@ -357,32 +357,32 @@ static int set_global ( /* compile the regular expression */ /* TODO: use safebuild */ - rex = ASE_AWK_BUILDREX ( + rex = QSE_AWK_BUILDREX ( run->awk, fs_ptr, fs_len, &run->errnum); - if (rex == ASE_NULL) + if (rex == QSE_NULL) { - if (val->type != ASE_AWK_VAL_STR) - ASE_AWK_FREE (run->awk, fs_ptr); + if (val->type != QSE_AWK_VAL_STR) + QSE_AWK_FREE (run->awk, fs_ptr); return -1; } - if (run->global.fs != ASE_NULL) + if (run->global.fs != QSE_NULL) { - ASE_AWK_FREEREX (run->awk, run->global.fs); + QSE_AWK_FREEREX (run->awk, run->global.fs); } run->global.fs = rex; } - if (val->type != ASE_AWK_VAL_STR) ASE_AWK_FREE (run->awk, fs_ptr); + if (val->type != QSE_AWK_VAL_STR) QSE_AWK_FREE (run->awk, fs_ptr); } - else if (idx == ASE_AWK_GLOBAL_IGNORECASE) + else if (idx == QSE_AWK_GLOBAL_IGNORECASE) { - if ((val->type == ASE_AWK_VAL_INT && - ((ase_awk_val_int_t*)val)->val != 0) || - (val->type == ASE_AWK_VAL_REAL && - ((ase_awk_val_real_t*)val)->val != 0.0) || - (val->type == ASE_AWK_VAL_STR && - ((ase_awk_val_str_t*)val)->len != 0)) + if ((val->type == QSE_AWK_VAL_INT && + ((qse_awk_val_int_t*)val)->val != 0) || + (val->type == QSE_AWK_VAL_REAL && + ((qse_awk_val_real_t*)val)->val != 0.0) || + (val->type == QSE_AWK_VAL_STR && + ((qse_awk_val_str_t*)val)->len != 0)) { run->global.ignorecase = 1; } @@ -391,109 +391,109 @@ static int set_global ( run->global.ignorecase = 0; } } - else if (idx == ASE_AWK_GLOBAL_NF) + else if (idx == QSE_AWK_GLOBAL_NF) { int n; - ase_long_t lv; - ase_real_t rv; + qse_long_t lv; + qse_real_t rv; - n = ase_awk_valtonum (run, val, &lv, &rv); + n = qse_awk_valtonum (run, val, &lv, &rv); if (n == -1) return -1; - if (n == 1) lv = (ase_long_t)rv; + if (n == 1) lv = (qse_long_t)rv; - if (lv < (ase_long_t)run->inrec.nflds) + if (lv < (qse_long_t)run->inrec.nflds) { - if (shorten_record (run, (ase_size_t)lv) == -1) + if (shorten_record (run, (qse_size_t)lv) == -1) { /* adjust the error line */ - if (var != ASE_NULL) run->errlin = var->line; + if (var != QSE_NULL) run->errlin = var->line; return -1; } } } - else if (idx == ASE_AWK_GLOBAL_NR) + else if (idx == QSE_AWK_GLOBAL_NR) { int n; - ase_long_t lv; - ase_real_t rv; + qse_long_t lv; + qse_real_t rv; - n = ase_awk_valtonum (run, val, &lv, &rv); + n = qse_awk_valtonum (run, val, &lv, &rv); if (n == -1) return -1; - if (n == 1) lv = (ase_long_t)rv; + if (n == 1) lv = (qse_long_t)rv; run->global.nr = lv; } - else if (idx == ASE_AWK_GLOBAL_OFMT) + else if (idx == QSE_AWK_GLOBAL_OFMT) { - ase_char_t* ofmt_ptr; - ase_size_t ofmt_len, i; + qse_char_t* ofmt_ptr; + qse_size_t ofmt_len, i; - ofmt_ptr = ase_awk_valtostr ( - run, val, ASE_AWK_VALTOSTR_CLEAR, ASE_NULL, &ofmt_len); - if (ofmt_ptr == ASE_NULL) return -1; + ofmt_ptr = qse_awk_valtostr ( + run, val, QSE_AWK_VALTOSTR_CLEAR, QSE_NULL, &ofmt_len); + if (ofmt_ptr == QSE_NULL) return -1; for (i = 0; i < ofmt_len; i++) { - if (ofmt_ptr[i] == ASE_T('\0')) + if (ofmt_ptr[i] == QSE_T('\0')) { - ASE_AWK_FREE (run->awk, ofmt_ptr); - ase_awk_setrunerrnum (run, ASE_AWK_EOFMTCHR); + QSE_AWK_FREE (run->awk, ofmt_ptr); + qse_awk_setrunerrnum (run, QSE_AWK_EOFMTCHR); return -1; } } - if (run->global.ofmt.ptr != ASE_NULL) - ASE_AWK_FREE (run->awk, run->global.ofmt.ptr); + if (run->global.ofmt.ptr != QSE_NULL) + QSE_AWK_FREE (run->awk, run->global.ofmt.ptr); run->global.ofmt.ptr = ofmt_ptr; run->global.ofmt.len = ofmt_len; } - else if (idx == ASE_AWK_GLOBAL_OFS) + else if (idx == QSE_AWK_GLOBAL_OFS) { - ase_char_t* ofs_ptr; - ase_size_t ofs_len; + qse_char_t* ofs_ptr; + qse_size_t ofs_len; - ofs_ptr = ase_awk_valtostr ( - run, val, ASE_AWK_VALTOSTR_CLEAR, ASE_NULL, &ofs_len); - if (ofs_ptr == ASE_NULL) return -1; + ofs_ptr = qse_awk_valtostr ( + run, val, QSE_AWK_VALTOSTR_CLEAR, QSE_NULL, &ofs_len); + if (ofs_ptr == QSE_NULL) return -1; - if (run->global.ofs.ptr != ASE_NULL) - ASE_AWK_FREE (run->awk, run->global.ofs.ptr); + if (run->global.ofs.ptr != QSE_NULL) + QSE_AWK_FREE (run->awk, run->global.ofs.ptr); run->global.ofs.ptr = ofs_ptr; run->global.ofs.len = ofs_len; } - else if (idx == ASE_AWK_GLOBAL_ORS) + else if (idx == QSE_AWK_GLOBAL_ORS) { - ase_char_t* ors_ptr; - ase_size_t ors_len; + qse_char_t* ors_ptr; + qse_size_t ors_len; - ors_ptr = ase_awk_valtostr ( - run, val, ASE_AWK_VALTOSTR_CLEAR, ASE_NULL, &ors_len); - if (ors_ptr == ASE_NULL) return -1; + ors_ptr = qse_awk_valtostr ( + run, val, QSE_AWK_VALTOSTR_CLEAR, QSE_NULL, &ors_len); + if (ors_ptr == QSE_NULL) return -1; - if (run->global.ors.ptr != ASE_NULL) - ASE_AWK_FREE (run->awk, run->global.ors.ptr); + if (run->global.ors.ptr != QSE_NULL) + QSE_AWK_FREE (run->awk, run->global.ors.ptr); run->global.ors.ptr = ors_ptr; run->global.ors.len = ors_len; } - else if (idx == ASE_AWK_GLOBAL_RS) + else if (idx == QSE_AWK_GLOBAL_RS) { - ase_char_t* rs_ptr; - ase_size_t rs_len; + qse_char_t* rs_ptr; + qse_size_t rs_len; - if (val->type == ASE_AWK_VAL_STR) + if (val->type == QSE_AWK_VAL_STR) { - rs_ptr = ((ase_awk_val_str_t*)val)->buf; - rs_len = ((ase_awk_val_str_t*)val)->len; + rs_ptr = ((qse_awk_val_str_t*)val)->buf; + rs_len = ((qse_awk_val_str_t*)val)->len; } else { /* due to the expression evaluation rule, the * regular expression can not be an assigned value */ - ASE_ASSERT (val->type != ASE_AWK_VAL_REX); + QSE_ASSERT (val->type != QSE_AWK_VAL_REX); - rs_ptr = ase_awk_valtostr ( - run, val, ASE_AWK_VALTOSTR_CLEAR, ASE_NULL, &rs_len); - if (rs_ptr == ASE_NULL) return -1; + rs_ptr = qse_awk_valtostr ( + run, val, QSE_AWK_VALTOSTR_CLEAR, QSE_NULL, &rs_len); + if (rs_ptr == QSE_NULL) return -1; } if (rs_len > 1) @@ -502,175 +502,175 @@ static int set_global ( /* compile the regular expression */ /* TODO: use safebuild */ - rex = ASE_AWK_BUILDREX ( + rex = QSE_AWK_BUILDREX ( run->awk, rs_ptr, rs_len, &run->errnum); - if (rex == ASE_NULL) + if (rex == QSE_NULL) { - if (val->type != ASE_AWK_VAL_STR) - ASE_AWK_FREE (run->awk, rs_ptr); + if (val->type != QSE_AWK_VAL_STR) + QSE_AWK_FREE (run->awk, rs_ptr); return -1; } - if (run->global.rs != ASE_NULL) + if (run->global.rs != QSE_NULL) { - ASE_AWK_FREEREX (run->awk, run->global.rs); + QSE_AWK_FREEREX (run->awk, run->global.rs); } run->global.rs = rex; } - if (val->type != ASE_AWK_VAL_STR) ASE_AWK_FREE (run->awk, rs_ptr); + if (val->type != QSE_AWK_VAL_STR) QSE_AWK_FREE (run->awk, rs_ptr); } - else if (idx == ASE_AWK_GLOBAL_SUBSEP) + else if (idx == QSE_AWK_GLOBAL_SUBSEP) { - ase_char_t* subsep_ptr; - ase_size_t subsep_len; + qse_char_t* subsep_ptr; + qse_size_t subsep_len; - subsep_ptr = ase_awk_valtostr ( - run, val, ASE_AWK_VALTOSTR_CLEAR, ASE_NULL, &subsep_len); - if (subsep_ptr == ASE_NULL) return -1; + subsep_ptr = qse_awk_valtostr ( + run, val, QSE_AWK_VALTOSTR_CLEAR, QSE_NULL, &subsep_len); + if (subsep_ptr == QSE_NULL) return -1; - if (run->global.subsep.ptr != ASE_NULL) - ASE_AWK_FREE (run->awk, run->global.subsep.ptr); + if (run->global.subsep.ptr != QSE_NULL) + QSE_AWK_FREE (run->awk, run->global.subsep.ptr); run->global.subsep.ptr = subsep_ptr; run->global.subsep.len = subsep_len; } - ase_awk_refdownval (run, old); + qse_awk_refdownval (run, old); STACK_GLOBAL(run,idx) = val; - ase_awk_refupval (run, val); + qse_awk_refupval (run, val); return 0; } -void ase_awk_setretval (ase_awk_run_t* run, ase_awk_val_t* val) +void qse_awk_setretval (qse_awk_run_t* run, qse_awk_val_t* val) { - ase_awk_refdownval (run, STACK_RETVAL(run)); + qse_awk_refdownval (run, STACK_RETVAL(run)); STACK_RETVAL(run) = val; /* should use the same trick as run_return */ - ase_awk_refupval (run, val); + qse_awk_refupval (run, val); } -int ase_awk_setfilename ( - ase_awk_run_t* run, const ase_char_t* name, ase_size_t len) +int qse_awk_setfilename ( + qse_awk_run_t* run, const qse_char_t* name, qse_size_t len) { - ase_awk_val_t* tmp; + qse_awk_val_t* tmp; int n; - if (len == 0) tmp = ase_awk_val_zls; + if (len == 0) tmp = qse_awk_val_zls; else { - tmp = ase_awk_makestrval (run, name, len); - if (tmp == ASE_NULL) return -1; + tmp = qse_awk_makestrval (run, name, len); + if (tmp == QSE_NULL) return -1; } - ase_awk_refupval (run, tmp); - n = ase_awk_setglobal (run, ASE_AWK_GLOBAL_FILENAME, tmp); - ase_awk_refdownval (run, tmp); + qse_awk_refupval (run, tmp); + n = qse_awk_setglobal (run, QSE_AWK_GLOBAL_FILENAME, tmp); + qse_awk_refdownval (run, tmp); return n; } -int ase_awk_setofilename ( - ase_awk_run_t* run, const ase_char_t* name, ase_size_t len) +int qse_awk_setofilename ( + qse_awk_run_t* run, const qse_char_t* name, qse_size_t len) { - ase_awk_val_t* tmp; + qse_awk_val_t* tmp; int n; - if (run->awk->option & ASE_AWK_NEXTOFILE) + if (run->awk->option & QSE_AWK_NEXTOFILE) { - if (len == 0) tmp = ase_awk_val_zls; + if (len == 0) tmp = qse_awk_val_zls; else { - tmp = ase_awk_makestrval (run, name, len); - if (tmp == ASE_NULL) return -1; + tmp = qse_awk_makestrval (run, name, len); + if (tmp == QSE_NULL) return -1; } - ase_awk_refupval (run, tmp); - n = ase_awk_setglobal (run, ASE_AWK_GLOBAL_OFILENAME, tmp); - ase_awk_refdownval (run, tmp); + qse_awk_refupval (run, tmp); + n = qse_awk_setglobal (run, QSE_AWK_GLOBAL_OFILENAME, tmp); + qse_awk_refdownval (run, tmp); } else n = 0; return n; } -ase_awk_t* ase_awk_getrunawk (ase_awk_run_t* run) +qse_awk_t* qse_awk_getrunawk (qse_awk_run_t* run) { return run->awk; } -ase_mmgr_t* ase_awk_getrunmmgr (ase_awk_run_t* run) +qse_mmgr_t* qse_awk_getrunmmgr (qse_awk_run_t* run) { return run->awk->mmgr; } -void* ase_awk_getrundata (ase_awk_run_t* run) +void* qse_awk_getrundata (qse_awk_run_t* run) { return run->data; } -ase_map_t* ase_awk_getrunnvmap (ase_awk_run_t* run) +qse_map_t* qse_awk_getrunnvmap (qse_awk_run_t* run) { return run->named; } -int ase_awk_run (ase_awk_t* awk, - const ase_char_t* main, - ase_awk_runios_t* runios, - ase_awk_runcbs_t* runcbs, - ase_awk_runarg_t* runarg, +int qse_awk_run (qse_awk_t* awk, + const qse_char_t* main, + qse_awk_runios_t* runios, + qse_awk_runcbs_t* runcbs, + qse_awk_runarg_t* runarg, void* data) { - ase_awk_run_t* run; + qse_awk_run_t* run; int n; - ASE_ASSERTX (awk->ccls != ASE_NULL, "Call ase_setccls() first"); - ASE_ASSERTX (awk->prmfns != ASE_NULL, "Call ase_setprmfns() first"); + QSE_ASSERTX (awk->ccls != QSE_NULL, "Call qse_setccls() first"); + QSE_ASSERTX (awk->prmfns != QSE_NULL, "Call qse_setprmfns() first"); /* clear the awk error code */ - ase_awk_seterror (awk, ASE_AWK_ENOERR, 0, ASE_NULL, 0); + qse_awk_seterror (awk, QSE_AWK_ENOERR, 0, QSE_NULL, 0); /* check if the code has ever been parsed */ if (awk->tree.nglobals == 0 && - awk->tree.begin == ASE_NULL && - awk->tree.end == ASE_NULL && + awk->tree.begin == QSE_NULL && + awk->tree.end == QSE_NULL && awk->tree.chain_size == 0 && - ase_map_getsize(awk->tree.afns) == 0) + qse_map_getsize(awk->tree.afns) == 0) { /* if not, deny the run */ - ase_awk_seterror (awk, ASE_AWK_ENOPER, 0, ASE_NULL, 0); + qse_awk_seterror (awk, QSE_AWK_ENOPER, 0, QSE_NULL, 0); return -1; } /* allocate the storage for the run object */ - run = (ase_awk_run_t*) ASE_AWK_ALLOC (awk, ASE_SIZEOF(ase_awk_run_t)); - if (run == ASE_NULL) + run = (qse_awk_run_t*) QSE_AWK_ALLOC (awk, QSE_SIZEOF(qse_awk_run_t)); + if (run == QSE_NULL) { /* if it fails, the failure is reported thru * the awk object */ - ase_awk_seterror (awk, ASE_AWK_ENOMEM, 0, ASE_NULL, 0); + qse_awk_seterror (awk, QSE_AWK_ENOMEM, 0, QSE_NULL, 0); return -1; } /* clear the run object space */ - ASE_MEMSET (run, 0, ASE_SIZEOF(ase_awk_run_t)); + QSE_MEMSET (run, 0, QSE_SIZEOF(qse_awk_run_t)); /* initialize the run object */ if (init_run (run, awk, runios, data) == -1) { - ASE_AWK_FREE (awk, run); + QSE_AWK_FREE (awk, run); return -1; } /* clear the run error */ - run->errnum = ASE_AWK_ENOERR; + run->errnum = QSE_AWK_ENOERR; run->errlin = 0; - run->errmsg[0] = ASE_T('\0'); + run->errmsg[0] = QSE_T('\0'); run->cbs = runcbs; /* execute the start callback if it exists */ - if (runcbs != ASE_NULL && runcbs->on_start != ASE_NULL) + if (runcbs != QSE_NULL && runcbs->on_start != QSE_NULL) { runcbs->on_start (run, runcbs->data); } @@ -681,32 +681,32 @@ int ase_awk_run (ase_awk_t* awk, { /* if no callback is specified, awk's error number * is updated with the run's error number */ - if (runcbs == ASE_NULL) + if (runcbs == QSE_NULL) { awk->errnum = run->errnum; awk->errlin = run->errlin; - ase_strxcpy ( - awk->errmsg, ASE_COUNTOF(awk->errmsg), + qse_strxcpy ( + awk->errmsg, QSE_COUNTOF(awk->errmsg), run->errmsg); } else { - ase_awk_seterrnum (awk, ASE_AWK_ERUNTIME); + qse_awk_seterrnum (awk, QSE_AWK_ERUNTIME); } } /* the run loop ended. execute the end callback if it exists */ - if (runcbs != ASE_NULL && runcbs->on_end != ASE_NULL) + if (runcbs != QSE_NULL && runcbs->on_end != QSE_NULL) { if (n == 0) { /* clear error if run is successful just in case */ - ase_awk_setrunerrnum (run, ASE_AWK_ENOERR); + qse_awk_setrunerrnum (run, QSE_AWK_ENOERR); } runcbs->on_end (run, - ((n == -1)? run->errnum: ASE_AWK_ENOERR), + ((n == -1)? run->errnum: QSE_AWK_ENOERR), runcbs->data); /* when using callbacks, this function always returns 0 @@ -717,40 +717,40 @@ int ase_awk_run (ase_awk_t* awk, /* uninitialize the run object */ deinit_run (run); - ASE_AWK_FREE (awk, run); + QSE_AWK_FREE (awk, run); return n; } -void ase_awk_stop (ase_awk_run_t* run) +void qse_awk_stop (qse_awk_run_t* run) { run->exit_level = EXIT_ABORT; } -ase_bool_t ase_awk_isstop (ase_awk_run_t* run) +qse_bool_t qse_awk_isstop (qse_awk_run_t* run) { return (run->exit_level == EXIT_ABORT || run->awk->stopall); } -static void free_namedval (ase_map_t* map, void* dptr, ase_size_t dlen) +static void free_namedval (qse_map_t* map, void* dptr, qse_size_t dlen) { - ase_awk_refdownval ( - *(ase_awk_run_t**)ASE_MAP_XTN(map), dptr); + qse_awk_refdownval ( + *(qse_awk_run_t**)QSE_MAP_XTN(map), dptr); } -static void same_namedval (ase_map_t* map, void* dptr, ase_size_t dlen) +static void same_namedval (qse_map_t* map, void* dptr, qse_size_t dlen) { - ase_awk_refdownval_nofree ( - *(ase_awk_run_t**)ASE_MAP_XTN(map), dptr); + qse_awk_refdownval_nofree ( + *(qse_awk_run_t**)QSE_MAP_XTN(map), dptr); } static int init_run ( - ase_awk_run_t* run, ase_awk_t* awk, - ase_awk_runios_t* runios, void* data) + qse_awk_run_t* run, qse_awk_t* awk, + qse_awk_runios_t* runios, void* data) { run->awk = awk; run->data = data; - run->stack = ASE_NULL; + run->stack = QSE_NULL; run->stack_top = 0; run->stack_base = 0; run->stack_limit = 0; @@ -760,68 +760,68 @@ static int init_run ( run->fcache_count = 0; /*run->scache32_count = 0; run->scache64_count = 0;*/ - run->vmgr.ichunk = ASE_NULL; - run->vmgr.ifree = ASE_NULL; - run->vmgr.rchunk = ASE_NULL; - run->vmgr.rfree = ASE_NULL; + run->vmgr.ichunk = QSE_NULL; + run->vmgr.ifree = QSE_NULL; + run->vmgr.rchunk = QSE_NULL; + run->vmgr.rfree = QSE_NULL; - run->errnum = ASE_AWK_ENOERR; + run->errnum = QSE_AWK_ENOERR; run->errlin = 0; - run->errmsg[0] = ASE_T('\0'); + run->errmsg[0] = QSE_T('\0'); run->inrec.buf_pos = 0; run->inrec.buf_len = 0; - run->inrec.flds = ASE_NULL; + run->inrec.flds = QSE_NULL; run->inrec.nflds = 0; run->inrec.maxflds = 0; - run->inrec.d0 = ase_awk_val_nil; - if (ase_str_init ( - &run->inrec.line, MMGR(run), DEF_BUF_CAPA) == ASE_NULL) + run->inrec.d0 = qse_awk_val_nil; + if (qse_str_init ( + &run->inrec.line, MMGR(run), DEF_BUF_CAPA) == QSE_NULL) { - ase_awk_seterror (awk, ASE_AWK_ENOMEM, 0, ASE_NULL, 0); + qse_awk_seterror (awk, QSE_AWK_ENOMEM, 0, QSE_NULL, 0); return -1; } - if (ase_str_init (&run->format.out, MMGR(run), 256) == ASE_NULL) + if (qse_str_init (&run->format.out, MMGR(run), 256) == QSE_NULL) { - ase_str_fini (&run->inrec.line); - ase_awk_seterror (awk, ASE_AWK_ENOMEM, 0, ASE_NULL, 0); + qse_str_fini (&run->inrec.line); + qse_awk_seterror (awk, QSE_AWK_ENOMEM, 0, QSE_NULL, 0); return -1; } - if (ase_str_init (&run->format.fmt, MMGR(run), 256) == ASE_NULL) + if (qse_str_init (&run->format.fmt, MMGR(run), 256) == QSE_NULL) { - ase_str_fini (&run->format.out); - ase_str_fini (&run->inrec.line); - ase_awk_seterror (awk, ASE_AWK_ENOMEM, 0, ASE_NULL, 0); + qse_str_fini (&run->format.out); + qse_str_fini (&run->inrec.line); + qse_awk_seterror (awk, QSE_AWK_ENOMEM, 0, QSE_NULL, 0); return -1; } - run->named = ase_map_open ( - MMGR(run), ASE_SIZEOF(run), 1024, 70); - if (run->named == ASE_NULL) + run->named = qse_map_open ( + MMGR(run), QSE_SIZEOF(run), 1024, 70); + if (run->named == QSE_NULL) { - ase_str_fini (&run->format.fmt); - ase_str_fini (&run->format.out); - ase_str_fini (&run->inrec.line); - ase_awk_seterror (awk, ASE_AWK_ENOMEM, 0, ASE_NULL, 0); + qse_str_fini (&run->format.fmt); + qse_str_fini (&run->format.out); + qse_str_fini (&run->inrec.line); + qse_awk_seterror (awk, QSE_AWK_ENOMEM, 0, QSE_NULL, 0); return -1; } - *(ase_awk_run_t**)ASE_MAP_XTN(run->named) = run; - ase_map_setcopier (run->named, ASE_MAP_KEY, ASE_MAP_COPIER_INLINE); - ase_map_setfreeer (run->named, ASE_MAP_VAL, free_namedval); - ase_map_setkeeper (run->named, same_namedval); - ase_map_setscale (run->named, ASE_MAP_KEY, ASE_SIZEOF(ase_char_t)); + *(qse_awk_run_t**)QSE_MAP_XTN(run->named) = run; + qse_map_setcopier (run->named, QSE_MAP_KEY, QSE_MAP_COPIER_INLINE); + qse_map_setfreeer (run->named, QSE_MAP_VAL, free_namedval); + qse_map_setkeeper (run->named, same_namedval); + qse_map_setscale (run->named, QSE_MAP_KEY, QSE_SIZEOF(qse_char_t)); - run->format.tmp.ptr = (ase_char_t*) - ASE_AWK_ALLOC (run->awk, 4096*ASE_SIZEOF(ase_char_t*)); - if (run->format.tmp.ptr == ASE_NULL) + run->format.tmp.ptr = (qse_char_t*) + QSE_AWK_ALLOC (run->awk, 4096*QSE_SIZEOF(qse_char_t*)); + if (run->format.tmp.ptr == QSE_NULL) { - ase_map_close (run->named); - ase_str_fini (&run->format.fmt); - ase_str_fini (&run->format.out); - ase_str_fini (&run->inrec.line); - ase_awk_seterror (awk, ASE_AWK_ENOMEM, 0, ASE_NULL, 0); + qse_map_close (run->named); + qse_str_fini (&run->format.fmt); + qse_str_fini (&run->format.out); + qse_str_fini (&run->inrec.line); + qse_awk_seterror (awk, QSE_AWK_ENOMEM, 0, QSE_NULL, 0); return -1; } run->format.tmp.len = 4096; @@ -829,37 +829,37 @@ static int init_run ( if (run->awk->tree.chain_size > 0) { - run->pattern_range_state = (ase_byte_t*) ASE_AWK_ALLOC ( - run->awk, run->awk->tree.chain_size*ASE_SIZEOF(ase_byte_t)); - if (run->pattern_range_state == ASE_NULL) + run->pattern_range_state = (qse_byte_t*) QSE_AWK_ALLOC ( + run->awk, run->awk->tree.chain_size*QSE_SIZEOF(qse_byte_t)); + if (run->pattern_range_state == QSE_NULL) { - ASE_AWK_FREE (run->awk, run->format.tmp.ptr); - ase_map_close (run->named); - ase_str_fini (&run->format.fmt); - ase_str_fini (&run->format.out); - ase_str_fini (&run->inrec.line); - ase_awk_seterror (awk, ASE_AWK_ENOMEM, 0, ASE_NULL, 0); + QSE_AWK_FREE (run->awk, run->format.tmp.ptr); + qse_map_close (run->named); + qse_str_fini (&run->format.fmt); + qse_str_fini (&run->format.out); + qse_str_fini (&run->inrec.line); + qse_awk_seterror (awk, QSE_AWK_ENOMEM, 0, QSE_NULL, 0); return -1; } - ASE_MEMSET ( + QSE_MEMSET ( run->pattern_range_state, 0, - run->awk->tree.chain_size * ASE_SIZEOF(ase_byte_t)); + run->awk->tree.chain_size * QSE_SIZEOF(qse_byte_t)); } - else run->pattern_range_state = ASE_NULL; + else run->pattern_range_state = QSE_NULL; - if (runios != ASE_NULL) + if (runios != QSE_NULL) { - run->extio.handler[ASE_AWK_EXTIO_PIPE] = runios->pipe; - run->extio.handler[ASE_AWK_EXTIO_COPROC] = runios->coproc; - run->extio.handler[ASE_AWK_EXTIO_FILE] = runios->file; - run->extio.handler[ASE_AWK_EXTIO_CONSOLE] = runios->console; + run->extio.handler[QSE_AWK_EXTIO_PIPE] = runios->pipe; + run->extio.handler[QSE_AWK_EXTIO_COPROC] = runios->coproc; + run->extio.handler[QSE_AWK_EXTIO_FILE] = runios->file; + run->extio.handler[QSE_AWK_EXTIO_CONSOLE] = runios->console; run->extio.data = runios->data; - run->extio.chain = ASE_NULL; + run->extio.chain = QSE_NULL; } - run->global.rs = ASE_NULL; - run->global.fs = ASE_NULL; + run->global.rs = QSE_NULL; + run->global.fs = QSE_NULL; run->global.ignorecase = 0; run->depth.max.block = awk->run.depth.max.block; @@ -870,208 +870,208 @@ static int init_run ( return 0; } -static void deinit_run (ase_awk_run_t* run) +static void deinit_run (qse_awk_run_t* run) { - if (run->pattern_range_state != ASE_NULL) - ASE_AWK_FREE (run->awk, run->pattern_range_state); + if (run->pattern_range_state != QSE_NULL) + QSE_AWK_FREE (run->awk, run->pattern_range_state); /* close all pending extio's */ /* TODO: what if this operation fails? */ - ase_awk_clearextio (run); - ASE_ASSERT (run->extio.chain == ASE_NULL); + qse_awk_clearextio (run); + QSE_ASSERT (run->extio.chain == QSE_NULL); - if (run->global.rs != ASE_NULL) + if (run->global.rs != QSE_NULL) { - ASE_AWK_FREE (run->awk, run->global.rs); - run->global.rs = ASE_NULL; + QSE_AWK_FREE (run->awk, run->global.rs); + run->global.rs = QSE_NULL; } - if (run->global.fs != ASE_NULL) + if (run->global.fs != QSE_NULL) { - ASE_AWK_FREE (run->awk, run->global.fs); - run->global.fs = ASE_NULL; + QSE_AWK_FREE (run->awk, run->global.fs); + run->global.fs = QSE_NULL; } - if (run->global.convfmt.ptr != ASE_NULL && + if (run->global.convfmt.ptr != QSE_NULL && run->global.convfmt.ptr != DEFAULT_CONVFMT) { - ASE_AWK_FREE (run->awk, run->global.convfmt.ptr); - run->global.convfmt.ptr = ASE_NULL; + QSE_AWK_FREE (run->awk, run->global.convfmt.ptr); + run->global.convfmt.ptr = QSE_NULL; run->global.convfmt.len = 0; } - if (run->global.ofmt.ptr != ASE_NULL && + if (run->global.ofmt.ptr != QSE_NULL && run->global.ofmt.ptr != DEFAULT_OFMT) { - ASE_AWK_FREE (run->awk, run->global.ofmt.ptr); - run->global.ofmt.ptr = ASE_NULL; + QSE_AWK_FREE (run->awk, run->global.ofmt.ptr); + run->global.ofmt.ptr = QSE_NULL; run->global.ofmt.len = 0; } - if (run->global.ofs.ptr != ASE_NULL && + if (run->global.ofs.ptr != QSE_NULL && run->global.ofs.ptr != DEFAULT_OFS) { - ASE_AWK_FREE (run->awk, run->global.ofs.ptr); - run->global.ofs.ptr = ASE_NULL; + QSE_AWK_FREE (run->awk, run->global.ofs.ptr); + run->global.ofs.ptr = QSE_NULL; run->global.ofs.len = 0; } - if (run->global.ors.ptr != ASE_NULL && + if (run->global.ors.ptr != QSE_NULL && run->global.ors.ptr != DEFAULT_ORS && run->global.ors.ptr != DEFAULT_ORS_CRLF) { - ASE_AWK_FREE (run->awk, run->global.ors.ptr); - run->global.ors.ptr = ASE_NULL; + QSE_AWK_FREE (run->awk, run->global.ors.ptr); + run->global.ors.ptr = QSE_NULL; run->global.ors.len = 0; } - if (run->global.subsep.ptr != ASE_NULL && + if (run->global.subsep.ptr != QSE_NULL && run->global.subsep.ptr != DEFAULT_SUBSEP) { - ASE_AWK_FREE (run->awk, run->global.subsep.ptr); - run->global.subsep.ptr = ASE_NULL; + QSE_AWK_FREE (run->awk, run->global.subsep.ptr); + run->global.subsep.ptr = QSE_NULL; run->global.subsep.len = 0; } - ASE_AWK_FREE (run->awk, run->format.tmp.ptr); - run->format.tmp.ptr = ASE_NULL; + QSE_AWK_FREE (run->awk, run->format.tmp.ptr); + run->format.tmp.ptr = QSE_NULL; run->format.tmp.len = 0; - ase_str_fini (&run->format.fmt); - ase_str_fini (&run->format.out); + qse_str_fini (&run->format.fmt); + qse_str_fini (&run->format.out); - /* destroy input record. ase_awk_clrrec should be called + /* destroy input record. qse_awk_clrrec should be called * before the run stack has been destroyed because it may try - * to change the value to ASE_AWK_GLOBAL_NF. */ - ase_awk_clrrec (run, ASE_FALSE); - if (run->inrec.flds != ASE_NULL) + * to change the value to QSE_AWK_GLOBAL_NF. */ + qse_awk_clrrec (run, QSE_FALSE); + if (run->inrec.flds != QSE_NULL) { - ASE_AWK_FREE (run->awk, run->inrec.flds); - run->inrec.flds = ASE_NULL; + QSE_AWK_FREE (run->awk, run->inrec.flds); + run->inrec.flds = QSE_NULL; run->inrec.maxflds = 0; } - ase_str_fini (&run->inrec.line); + qse_str_fini (&run->inrec.line); /* destroy run stack */ - if (run->stack != ASE_NULL) + if (run->stack != QSE_NULL) { - ASE_ASSERT (run->stack_top == 0); + QSE_ASSERT (run->stack_top == 0); - ASE_AWK_FREE (run->awk, run->stack); - run->stack = ASE_NULL; + QSE_AWK_FREE (run->awk, run->stack); + run->stack = QSE_NULL; run->stack_top = 0; run->stack_base = 0; run->stack_limit = 0; } /* destroy named variables */ - ase_map_close (run->named); + qse_map_close (run->named); /* destroy values in free list */ while (run->fcache_count > 0) { - ase_awk_val_ref_t* tmp = run->fcache[--run->fcache_count]; - ase_awk_freeval (run, (ase_awk_val_t*)tmp, ASE_FALSE); + qse_awk_val_ref_t* tmp = run->fcache[--run->fcache_count]; + qse_awk_freeval (run, (qse_awk_val_t*)tmp, QSE_FALSE); } /*while (run->scache32_count > 0) { - ase_awk_val_str_t* tmp = run->scache32[--run->scache32_count]; - ase_awk_freeval (run, (ase_awk_val_t*)tmp, ASE_FALSE); + qse_awk_val_str_t* tmp = run->scache32[--run->scache32_count]; + qse_awk_freeval (run, (qse_awk_val_t*)tmp, QSE_FALSE); } while (run->scache64_count > 0) { - ase_awk_val_str_t* tmp = run->scache64[--run->scache64_count]; - ase_awk_freeval (run, (ase_awk_val_t*)tmp, ASE_FALSE); + qse_awk_val_str_t* tmp = run->scache64[--run->scache64_count]; + qse_awk_freeval (run, (qse_awk_val_t*)tmp, QSE_FALSE); }*/ - ase_awk_freevalchunk (run, run->vmgr.ichunk); - ase_awk_freevalchunk (run, run->vmgr.rchunk); - run->vmgr.ichunk = ASE_NULL; - run->vmgr.rchunk = ASE_NULL; + qse_awk_freevalchunk (run, run->vmgr.ichunk); + qse_awk_freevalchunk (run, run->vmgr.rchunk); + run->vmgr.ichunk = QSE_NULL; + run->vmgr.rchunk = QSE_NULL; } static int build_runarg ( - ase_awk_run_t* run, ase_awk_runarg_t* runarg, ase_size_t* nargs) + qse_awk_run_t* run, qse_awk_runarg_t* runarg, qse_size_t* nargs) { - ase_awk_runarg_t* p; - ase_size_t argc; - ase_awk_val_t* v_argc; - ase_awk_val_t* v_argv; - ase_awk_val_t* v_tmp; - ase_char_t key[ASE_SIZEOF(ase_long_t)*8+2]; - ase_size_t key_len; + qse_awk_runarg_t* p; + qse_size_t argc; + qse_awk_val_t* v_argc; + qse_awk_val_t* v_argv; + qse_awk_val_t* v_tmp; + qse_char_t key[QSE_SIZEOF(qse_long_t)*8+2]; + qse_size_t key_len; - v_argv = ase_awk_makemapval (run); - if (v_argv == ASE_NULL) return -1; + v_argv = qse_awk_makemapval (run); + if (v_argv == QSE_NULL) return -1; - ase_awk_refupval (run, v_argv); + qse_awk_refupval (run, v_argv); - if (runarg == ASE_NULL) argc = 0; + if (runarg == QSE_NULL) argc = 0; else { - for (argc = 0, p = runarg; p->ptr != ASE_NULL; argc++, p++) + for (argc = 0, p = runarg; p->ptr != QSE_NULL; argc++, p++) { - v_tmp = ase_awk_makestrval (run, p->ptr, p->len); - if (v_tmp == ASE_NULL) + v_tmp = qse_awk_makestrval (run, p->ptr, p->len); + if (v_tmp == QSE_NULL) { - ase_awk_refdownval (run, v_argv); + qse_awk_refdownval (run, v_argv); return -1; } - if (ase_awk_getoption(run->awk) & ASE_AWK_BASEONE) + if (qse_awk_getoption(run->awk) & QSE_AWK_BASEONE) { - key_len = ase_awk_longtostr (argc+1, - 10, ASE_NULL, key, ASE_COUNTOF(key)); + key_len = qse_awk_longtostr (argc+1, + 10, QSE_NULL, key, QSE_COUNTOF(key)); } else { - key_len = ase_awk_longtostr (argc, - 10, ASE_NULL, key, ASE_COUNTOF(key)); + key_len = qse_awk_longtostr (argc, + 10, QSE_NULL, key, QSE_COUNTOF(key)); } - ASE_ASSERT (key_len != (ase_size_t)-1); + QSE_ASSERT (key_len != (qse_size_t)-1); /* increment reference count of v_tmp in advance as if * it has successfully been assigned into ARGV. */ - ase_awk_refupval (run, v_tmp); + qse_awk_refupval (run, v_tmp); - if (ase_map_upsert ( - ((ase_awk_val_map_t*)v_argv)->map, - key, key_len, v_tmp, 0) == ASE_NULL) + if (qse_map_upsert ( + ((qse_awk_val_map_t*)v_argv)->map, + key, key_len, v_tmp, 0) == QSE_NULL) { /* if the assignment operation fails, decrements * the reference of v_tmp to free it */ - ase_awk_refdownval (run, v_tmp); + qse_awk_refdownval (run, v_tmp); /* the values previously assigned into the * map will be freeed when v_argv is freed */ - ase_awk_refdownval (run, v_argv); + qse_awk_refdownval (run, v_argv); - ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM); + qse_awk_setrunerrnum (run, QSE_AWK_ENOMEM); return -1; } } } - v_argc = ase_awk_makeintval (run, (ase_long_t)argc); - if (v_argc == ASE_NULL) + v_argc = qse_awk_makeintval (run, (qse_long_t)argc); + if (v_argc == QSE_NULL) { - ase_awk_refdownval (run, v_argv); + qse_awk_refdownval (run, v_argv); return -1; } - ase_awk_refupval (run, v_argc); + qse_awk_refupval (run, v_argc); - ASE_ASSERT ( - STACK_GLOBAL(run,ASE_AWK_GLOBAL_ARGC) == ase_awk_val_nil); + QSE_ASSERT ( + STACK_GLOBAL(run,QSE_AWK_GLOBAL_ARGC) == qse_awk_val_nil); - if (ase_awk_setglobal (run, ASE_AWK_GLOBAL_ARGC, v_argc) == -1) + if (qse_awk_setglobal (run, QSE_AWK_GLOBAL_ARGC, v_argc) == -1) { - ase_awk_refdownval (run, v_argc); - ase_awk_refdownval (run, v_argv); + qse_awk_refdownval (run, v_argc); + qse_awk_refdownval (run, v_argv); return -1; } - if (ase_awk_setglobal (run, ASE_AWK_GLOBAL_ARGV, v_argv) == -1) + if (qse_awk_setglobal (run, QSE_AWK_GLOBAL_ARGV, v_argv) == -1) { /* ARGC is assigned nil when ARGV assignment has failed. * However, this requires preconditions, as follows: @@ -1079,128 +1079,128 @@ static int build_runarg ( * as it is not a generic-purpose routine. * 2. ARGC should be nil before build_runarg is called * If the restoration fails, nothing can salvage it. */ - ase_awk_setglobal (run, ASE_AWK_GLOBAL_ARGC, ase_awk_val_nil); - ase_awk_refdownval (run, v_argc); - ase_awk_refdownval (run, v_argv); + qse_awk_setglobal (run, QSE_AWK_GLOBAL_ARGC, qse_awk_val_nil); + qse_awk_refdownval (run, v_argc); + qse_awk_refdownval (run, v_argv); return -1; } - ase_awk_refdownval (run, v_argc); - ase_awk_refdownval (run, v_argv); + qse_awk_refdownval (run, v_argc); + qse_awk_refdownval (run, v_argv); *nargs = argc; return 0; } -static void cleanup_globals (ase_awk_run_t* run) +static void cleanup_globals (qse_awk_run_t* run) { - ase_size_t nglobals = run->awk->tree.nglobals; + qse_size_t nglobals = run->awk->tree.nglobals; while (nglobals > 0) { --nglobals; - ase_awk_refdownval (run, STACK_GLOBAL(run,nglobals)); - STACK_GLOBAL (run, nglobals) = ase_awk_val_nil; + qse_awk_refdownval (run, STACK_GLOBAL(run,nglobals)); + STACK_GLOBAL (run, nglobals) = qse_awk_val_nil; } } -static int update_fnr (ase_awk_run_t* run, ase_long_t fnr, ase_long_t nr) +static int update_fnr (qse_awk_run_t* run, qse_long_t fnr, qse_long_t nr) { - ase_awk_val_t* tmp1, * tmp2; + qse_awk_val_t* tmp1, * tmp2; - tmp1 = ase_awk_makeintval (run, fnr); - if (tmp1 == ASE_NULL) return -1; + tmp1 = qse_awk_makeintval (run, fnr); + if (tmp1 == QSE_NULL) return -1; - ase_awk_refupval (run, tmp1); + qse_awk_refupval (run, tmp1); if (nr == fnr) tmp2 = tmp1; else { - tmp2 = ase_awk_makeintval (run, nr); - if (tmp2 == ASE_NULL) + tmp2 = qse_awk_makeintval (run, nr); + if (tmp2 == QSE_NULL) { - ase_awk_refdownval (run, tmp1); + qse_awk_refdownval (run, tmp1); return -1; } - ase_awk_refupval (run, tmp2); + qse_awk_refupval (run, tmp2); } - if (ase_awk_setglobal (run, ASE_AWK_GLOBAL_FNR, tmp1) == -1) + if (qse_awk_setglobal (run, QSE_AWK_GLOBAL_FNR, tmp1) == -1) { - if (nr != fnr) ase_awk_refdownval (run, tmp2); - ase_awk_refdownval (run, tmp1); + if (nr != fnr) qse_awk_refdownval (run, tmp2); + qse_awk_refdownval (run, tmp1); return -1; } - if (ase_awk_setglobal (run, ASE_AWK_GLOBAL_NR, tmp2) == -1) + if (qse_awk_setglobal (run, QSE_AWK_GLOBAL_NR, tmp2) == -1) { - if (nr != fnr) ase_awk_refdownval (run, tmp2); - ase_awk_refdownval (run, tmp1); + if (nr != fnr) qse_awk_refdownval (run, tmp2); + qse_awk_refdownval (run, tmp1); return -1; } - if (nr != fnr) ase_awk_refdownval (run, tmp2); - ase_awk_refdownval (run, tmp1); + if (nr != fnr) qse_awk_refdownval (run, tmp2); + qse_awk_refdownval (run, tmp1); return 0; } -static int set_globals_to_default (ase_awk_run_t* run) +static int set_globals_to_default (qse_awk_run_t* run) { struct gtab_t { int idx; - const ase_char_t* str; + const qse_char_t* str; } gtab[] = { - { ASE_AWK_GLOBAL_CONVFMT, DEFAULT_CONVFMT }, - { ASE_AWK_GLOBAL_FILENAME, ASE_NULL }, - { ASE_AWK_GLOBAL_OFILENAME, ASE_NULL }, - { ASE_AWK_GLOBAL_OFMT, DEFAULT_OFMT }, - { ASE_AWK_GLOBAL_OFS, DEFAULT_OFS }, - { ASE_AWK_GLOBAL_ORS, DEFAULT_ORS }, - { ASE_AWK_GLOBAL_SUBSEP, DEFAULT_SUBSEP }, + { QSE_AWK_GLOBAL_CONVFMT, DEFAULT_CONVFMT }, + { QSE_AWK_GLOBAL_FILENAME, QSE_NULL }, + { QSE_AWK_GLOBAL_OFILENAME, QSE_NULL }, + { QSE_AWK_GLOBAL_OFMT, DEFAULT_OFMT }, + { QSE_AWK_GLOBAL_OFS, DEFAULT_OFS }, + { QSE_AWK_GLOBAL_ORS, DEFAULT_ORS }, + { QSE_AWK_GLOBAL_SUBSEP, DEFAULT_SUBSEP }, }; - ase_awk_val_t* tmp; - ase_size_t i, j; + qse_awk_val_t* tmp; + qse_size_t i, j; - if (run->awk->option & ASE_AWK_CRLF) + if (run->awk->option & QSE_AWK_CRLF) { /* ugly */ gtab[5].str = DEFAULT_ORS_CRLF; } - for (i = 0; i < ASE_COUNTOF(gtab); i++) + for (i = 0; i < QSE_COUNTOF(gtab); i++) { - if (gtab[i].str == ASE_NULL || gtab[i].str[0] == ASE_T('\0')) + if (gtab[i].str == QSE_NULL || gtab[i].str[0] == QSE_T('\0')) { - tmp = ase_awk_val_zls; + tmp = qse_awk_val_zls; } else { - tmp = ase_awk_makestrval0 (run, gtab[i].str); - if (tmp == ASE_NULL) return -1; + tmp = qse_awk_makestrval0 (run, gtab[i].str); + if (tmp == QSE_NULL) return -1; } - ase_awk_refupval (run, tmp); + qse_awk_refupval (run, tmp); - ASE_ASSERT ( - STACK_GLOBAL(run,gtab[i].idx) == ase_awk_val_nil); + QSE_ASSERT ( + STACK_GLOBAL(run,gtab[i].idx) == qse_awk_val_nil); - if (ase_awk_setglobal (run, gtab[i].idx, tmp) == -1) + if (qse_awk_setglobal (run, gtab[i].idx, tmp) == -1) { for (j = 0; j < i; j++) { - ase_awk_setglobal ( - run, gtab[i].idx, ase_awk_val_nil); + qse_awk_setglobal ( + run, gtab[i].idx, qse_awk_val_nil); } - ase_awk_refdownval (run, tmp); + qse_awk_refdownval (run, tmp); return -1; } - ase_awk_refdownval (run, tmp); + qse_awk_refdownval (run, tmp); } return 0; @@ -1208,8 +1208,8 @@ static int set_globals_to_default (ase_awk_run_t* run) struct capture_retval_data_t { - ase_awk_run_t* run; - ase_awk_val_t* val; + qse_awk_run_t* run; + qse_awk_val_t* val; }; static void capture_retval_on_exit (void* arg) @@ -1218,19 +1218,19 @@ static void capture_retval_on_exit (void* arg) data = (struct capture_retval_data_t*)arg; data->val = STACK_RETVAL(data->run); - ase_awk_refupval (data->run, data->val); + qse_awk_refupval (data->run, data->val); } static int run_main ( - ase_awk_run_t* run, const ase_char_t* main, - ase_awk_runarg_t* runarg) + qse_awk_run_t* run, const qse_char_t* main, + qse_awk_runarg_t* runarg) { - ase_size_t nglobals, nargs, nrunargs, i; - ase_size_t saved_stack_top; - ase_awk_val_t* v; + qse_size_t nglobals, nargs, nrunargs, i; + qse_size_t saved_stack_top; + qse_awk_val_t* v; int n; - ASE_ASSERT (run->stack_base == 0 && run->stack_top == 0); + QSE_ASSERT (run->stack_base == 0 && run->stack_top == 0); /* secure space for global variables */ saved_stack_top = run->stack_top; @@ -1240,23 +1240,23 @@ static int run_main ( while (nglobals > 0) { --nglobals; - if (__raw_push(run,ase_awk_val_nil) == -1) + if (__raw_push(run,qse_awk_val_nil) == -1) { /* restore the stack_top with the saved value * instead of calling __raw_pop as many times as * the successful __raw_push. it is ok because - * the values pushed so far are all ase_awk_val_nil */ + * the values pushed so far are all qse_awk_val_nil */ run->stack_top = saved_stack_top; - ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM); + qse_awk_setrunerrnum (run, QSE_AWK_ENOMEM); return -1; } } - if (ase_awk_setglobal (run, ASE_AWK_GLOBAL_NF, ase_awk_val_zero) == -1) + if (qse_awk_setglobal (run, QSE_AWK_GLOBAL_NF, qse_awk_val_zero) == -1) { /* it can simply restore the top of the stack this way * because the values pused onto the stack so far are - * all ase_awk_val_nils and ase_awk_val_zeros */ + * all qse_awk_val_nils and qse_awk_val_zeros */ run->stack_top = saved_stack_top; return -1; } @@ -1265,7 +1265,7 @@ static int run_main ( { /* it can simply restore the top of the stack this way * because the values pused onto the stack so far are - * all ase_awk_val_nils and ase_awk_val_zeros and + * all qse_awk_val_nils and qse_awk_val_zeros and * build_runarg doesn't push other values than them * when it has failed */ run->stack_top = saved_stack_top; @@ -1276,25 +1276,25 @@ static int run_main ( n = update_fnr (run, 0, 0); if (n == 0) n = set_globals_to_default (run); - if (n == 0 && main != ASE_NULL) + if (n == 0 && main != QSE_NULL) { /* run the given function */ struct capture_retval_data_t crdata; - ase_awk_nde_call_t nde; + qse_awk_nde_call_t nde; - nde.type = ASE_AWK_NDE_AFN; + nde.type = QSE_AWK_NDE_AFN; nde.line = 0; - nde.next = ASE_NULL; - nde.what.afn.name.ptr = (ase_char_t*)main; - nde.what.afn.name.len = ase_strlen(main); + nde.next = QSE_NULL; + nde.what.afn.name.ptr = (qse_char_t*)main; + nde.what.afn.name.len = qse_strlen(main); - nde.args = ASE_NULL; + nde.args = QSE_NULL; nde.nargs = 0; - if (runarg != ASE_NULL) + if (runarg != QSE_NULL) { - if (!(run->awk->option & ASE_AWK_ARGSTOMAIN)) + if (!(run->awk->option & QSE_AWK_ARGSTOMAIN)) { /* if the option is not set, the arguments * are not passed to the main function as @@ -1305,100 +1305,100 @@ static int run_main ( /* prepare to pass the arguments to the main function */ for (i = nrunargs; i > 0; ) { - ase_awk_nde_str_t* tmp, * tmp2; + qse_awk_nde_str_t* tmp, * tmp2; i--; - tmp = (ase_awk_nde_str_t*) ASE_AWK_ALLOC ( - run->awk, ASE_SIZEOF(*tmp)); - if (tmp == ASE_NULL) + tmp = (qse_awk_nde_str_t*) QSE_AWK_ALLOC ( + run->awk, QSE_SIZEOF(*tmp)); + if (tmp == QSE_NULL) { - tmp = (ase_awk_nde_str_t*)nde.args; - while (tmp != ASE_NULL) + tmp = (qse_awk_nde_str_t*)nde.args; + while (tmp != QSE_NULL) { - tmp2 = (ase_awk_nde_str_t*)tmp->next; - ASE_AWK_FREE (run->awk, tmp->buf); - ASE_AWK_FREE (run->awk, tmp); + tmp2 = (qse_awk_nde_str_t*)tmp->next; + QSE_AWK_FREE (run->awk, tmp->buf); + QSE_AWK_FREE (run->awk, tmp); tmp = tmp2; } cleanup_globals (run); run->stack_top = saved_stack_top; - ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM); + qse_awk_setrunerrnum (run, QSE_AWK_ENOMEM); return -1; } - tmp->type = ASE_AWK_NDE_STR; - tmp->buf = ASE_AWK_STRXDUP (run->awk, + tmp->type = QSE_AWK_NDE_STR; + tmp->buf = QSE_AWK_STRXDUP (run->awk, runarg[i].ptr, runarg[i].len); - if (tmp->buf == ASE_NULL) + if (tmp->buf == QSE_NULL) { - ASE_AWK_FREE (run->awk, tmp); - tmp = (ase_awk_nde_str_t*)nde.args; - while (tmp != ASE_NULL) + QSE_AWK_FREE (run->awk, tmp); + tmp = (qse_awk_nde_str_t*)nde.args; + while (tmp != QSE_NULL) { - tmp2 = (ase_awk_nde_str_t*)tmp->next; - ASE_AWK_FREE (run->awk, tmp->buf); - ASE_AWK_FREE (run->awk, tmp); + tmp2 = (qse_awk_nde_str_t*)tmp->next; + QSE_AWK_FREE (run->awk, tmp->buf); + QSE_AWK_FREE (run->awk, tmp); tmp = tmp2; } cleanup_globals (run); run->stack_top = saved_stack_top; - ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM); + qse_awk_setrunerrnum (run, QSE_AWK_ENOMEM); return -1; } tmp->len = runarg[i].len; tmp->next = nde.args; - nde.args = (ase_awk_nde_t*)tmp; + nde.args = (qse_awk_nde_t*)tmp; nde.nargs++; } - ASE_ASSERT (nrunargs == nde.nargs); + QSE_ASSERT (nrunargs == nde.nargs); } crdata.run = run; - crdata.val = ASE_NULL; - v = eval_afn_intrinsic (run, (ase_awk_nde_t*)&nde, + crdata.val = QSE_NULL; + v = eval_afn_intrinsic (run, (qse_awk_nde_t*)&nde, capture_retval_on_exit, &crdata); - if (v == ASE_NULL) + if (v == QSE_NULL) { - if (crdata.val == ASE_NULL) + if (crdata.val == QSE_NULL) { - ASE_ASSERT (run->errnum != ASE_AWK_ENOERR); + QSE_ASSERT (run->errnum != QSE_AWK_ENOERR); n = -1; } else { - if (run->errnum == ASE_AWK_ENOERR) + if (run->errnum == QSE_AWK_ENOERR) { - if (run->cbs != ASE_NULL && run->cbs->on_return != ASE_NULL) + if (run->cbs != QSE_NULL && run->cbs->on_return != QSE_NULL) { run->cbs->on_return (run, crdata.val, run->cbs->data); } } else n = -1; - ase_awk_refdownval(run, crdata.val); + qse_awk_refdownval(run, crdata.val); } } else { - ase_awk_refupval (run, v); + qse_awk_refupval (run, v); - if (run->cbs != ASE_NULL && run->cbs->on_return != ASE_NULL) + if (run->cbs != QSE_NULL && run->cbs->on_return != QSE_NULL) { run->cbs->on_return (run, v, run->cbs->data); } - ase_awk_refdownval (run, v); + qse_awk_refdownval (run, v); } - if (nde.args != ASE_NULL) ase_awk_clrpt (run->awk, nde.args); + if (nde.args != QSE_NULL) qse_awk_clrpt (run->awk, nde.args); } else if (n == 0) { - ase_awk_nde_t* nde; + qse_awk_nde_t* nde; /* no main function is specified. * run the normal patter blocks including BEGIN and END */ @@ -1412,7 +1412,7 @@ static int run_main ( cleanup_globals (run); __raw_pop_times (run, run->awk->tree.nglobals); - ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM); + qse_awk_setrunerrnum (run, QSE_AWK_ENOMEM); return -1; } @@ -1422,29 +1422,29 @@ static int run_main ( cleanup_globals (run); __raw_pop_times (run, run->awk->tree.nglobals); - ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM); + qse_awk_setrunerrnum (run, QSE_AWK_ENOMEM); return -1; } /* secure space for a return value */ - if (__raw_push(run,ase_awk_val_nil) == -1) + if (__raw_push(run,qse_awk_val_nil) == -1) { run->stack_top = saved_stack_top; cleanup_globals (run); __raw_pop_times (run, run->awk->tree.nglobals); - ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM); + qse_awk_setrunerrnum (run, QSE_AWK_ENOMEM); return -1; } /* secure space for nargs */ - if (__raw_push(run,ase_awk_val_nil) == -1) + if (__raw_push(run,qse_awk_val_nil) == -1) { run->stack_top = saved_stack_top; cleanup_globals (run); __raw_pop_times (run, run->awk->tree.nglobals); - ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM); + qse_awk_setrunerrnum (run, QSE_AWK_ENOMEM); return -1; } @@ -1456,20 +1456,20 @@ static int run_main ( /* stack set up properly. ready to exeucte statement blocks */ for (nde = run->awk->tree.begin; - n == 0 && nde != ASE_NULL && run->exit_level < EXIT_GLOBAL; + n == 0 && nde != QSE_NULL && run->exit_level < EXIT_GLOBAL; nde = nde->next) { - ase_awk_nde_blk_t* blk; + qse_awk_nde_blk_t* blk; - blk = (ase_awk_nde_blk_t*)nde; - ASE_ASSERT (blk->type == ASE_AWK_NDE_BLK); + blk = (qse_awk_nde_blk_t*)nde; + QSE_ASSERT (blk->type == QSE_AWK_NDE_BLK); run->active_block = blk; run->exit_level = EXIT_NONE; if (run_block (run, blk) == -1) n = -1; } - if (n == -1 && run->errnum == ASE_AWK_ENOERR) + if (n == -1 && run->errnum == QSE_AWK_ENOERR) { /* an error is returned with no error number set. * this feature is used by eval_expression to @@ -1477,18 +1477,18 @@ static int run_main ( * during function evaluation */ n = 0; run->errlin = 0; - run->errmsg[0] = ASE_T('\0'); + run->errmsg[0] = QSE_T('\0'); } if (n == 0 && - (run->awk->tree.chain != ASE_NULL || - run->awk->tree.end != ASE_NULL) && + (run->awk->tree.chain != QSE_NULL || + run->awk->tree.end != QSE_NULL) && run->exit_level < EXIT_GLOBAL) { if (run_pattern_blocks (run) == -1) n = -1; } - if (n == -1 && run->errnum == ASE_AWK_ENOERR) + if (n == -1 && run->errnum == QSE_AWK_ENOERR) { /* an error is returned with no error number set. * this feature is used by eval_expression to @@ -1496,19 +1496,19 @@ static int run_main ( * during function evaluation */ n = 0; run->errlin = 0; - run->errmsg[0] = ASE_T('\0'); + run->errmsg[0] = QSE_T('\0'); } /* the first END block is executed if the program is not - * explicitly aborted with ase_awk_stop */ + * explicitly aborted with qse_awk_stop */ for (nde = run->awk->tree.end; - n == 0 && nde != ASE_NULL && run->exit_level < EXIT_ABORT; + n == 0 && nde != QSE_NULL && run->exit_level < EXIT_ABORT; nde = nde->next) { - ase_awk_nde_blk_t* blk; + qse_awk_nde_blk_t* blk; - blk = (ase_awk_nde_blk_t*)nde; - ASE_ASSERT (blk->type == ASE_AWK_NDE_BLK); + blk = (qse_awk_nde_blk_t*)nde; + QSE_ASSERT (blk->type == QSE_AWK_NDE_BLK); run->active_block = blk; run->exit_level = EXIT_NONE; @@ -1521,7 +1521,7 @@ static int run_main ( } } - if (n == -1 && run->errnum == ASE_AWK_ENOERR) + if (n == -1 && run->errnum == QSE_AWK_ENOERR) { /* an error is returned with no error number set. * this feature is used by eval_expression to @@ -1529,32 +1529,32 @@ static int run_main ( * during function evaluation */ n = 0; run->errlin = 0; - run->errmsg[0] = ASE_T('\0'); + run->errmsg[0] = QSE_T('\0'); } /* restore stack */ - nargs = (ase_size_t)STACK_NARGS(run); - ASE_ASSERT (nargs == 0); + nargs = (qse_size_t)STACK_NARGS(run); + QSE_ASSERT (nargs == 0); for (i = 0; i < nargs; i++) { - ase_awk_refdownval (run, STACK_ARG(run,i)); + qse_awk_refdownval (run, STACK_ARG(run,i)); } v = STACK_RETVAL(run); if (n == 0) { - if (run->cbs != ASE_NULL && run->cbs->on_return != ASE_NULL) + if (run->cbs != QSE_NULL && run->cbs->on_return != QSE_NULL) { run->cbs->on_return (run, v, run->cbs->data); } } /* end the life of the global return value */ - ase_awk_refdownval (run, v); + qse_awk_refdownval (run, v); run->stack_top = - (ase_size_t)run->stack[run->stack_base+1]; + (qse_size_t)run->stack[run->stack_base+1]; run->stack_base = - (ase_size_t)run->stack[run->stack_base+0]; + (qse_size_t)run->stack[run->stack_base+0]; } /* pops off the global variables */ @@ -1562,7 +1562,7 @@ static int run_main ( while (nglobals > 0) { --nglobals; - ase_awk_refdownval (run, STACK_GLOBAL(run,nglobals)); + qse_awk_refdownval (run, STACK_GLOBAL(run,nglobals)); __raw_pop (run); } @@ -1572,26 +1572,26 @@ static int run_main ( return n; } -static int run_pattern_blocks (ase_awk_run_t* run) +static int run_pattern_blocks (qse_awk_run_t* run) { int n; #define ADJUST_ERROR_LINE(run) \ - if (run->awk->tree.chain != ASE_NULL) \ + if (run->awk->tree.chain != QSE_NULL) \ { \ - if (run->awk->tree.chain->pattern != ASE_NULL) \ + if (run->awk->tree.chain->pattern != QSE_NULL) \ run->errlin = run->awk->tree.chain->pattern->line; \ - else if (run->awk->tree.chain->action != ASE_NULL) \ + else if (run->awk->tree.chain->action != QSE_NULL) \ run->errlin = run->awk->tree.chain->action->line; \ } \ - else if (run->awk->tree.end != ASE_NULL) \ + else if (run->awk->tree.end != QSE_NULL) \ { \ run->errlin = run->awk->tree.end->line; \ } run->inrec.buf_pos = 0; run->inrec.buf_len = 0; - run->inrec.eof = ASE_FALSE; + run->inrec.eof = QSE_FALSE; /* run each pattern block */ while (run->exit_level < EXIT_GLOBAL) @@ -1612,7 +1612,7 @@ static int run_pattern_blocks (ase_awk_run_t* run) return -1; } - if (run->awk->tree.chain != ASE_NULL) + if (run->awk->tree.chain != QSE_NULL) { if (run_pattern_block_chain ( run, run->awk->tree.chain) == -1) return -1; @@ -1623,11 +1623,11 @@ static int run_pattern_blocks (ase_awk_run_t* run) return 0; } -static int run_pattern_block_chain (ase_awk_run_t* run, ase_awk_chain_t* chain) +static int run_pattern_block_chain (qse_awk_run_t* run, qse_awk_chain_t* chain) { - ase_size_t block_no = 0; + qse_size_t block_no = 0; - while (run->exit_level < EXIT_GLOBAL && chain != ASE_NULL) + while (run->exit_level < EXIT_GLOBAL && chain != QSE_NULL) { if (run->exit_level == EXIT_NEXT) { @@ -1645,15 +1645,15 @@ static int run_pattern_block_chain (ase_awk_run_t* run, ase_awk_chain_t* chain) } static int run_pattern_block ( - ase_awk_run_t* run, ase_awk_chain_t* chain, ase_size_t block_no) + qse_awk_run_t* run, qse_awk_chain_t* chain, qse_size_t block_no) { - ase_awk_nde_t* ptn; - ase_awk_nde_blk_t* blk; + qse_awk_nde_t* ptn; + qse_awk_nde_blk_t* blk; ptn = chain->pattern; - blk = (ase_awk_nde_blk_t*)chain->action; + blk = (qse_awk_nde_blk_t*)chain->action; - if (ptn == ASE_NULL) + if (ptn == QSE_NULL) { /* just execute the block */ run->active_block = blk; @@ -1661,75 +1661,75 @@ static int run_pattern_block ( } else { - if (ptn->next == ASE_NULL) + if (ptn->next == QSE_NULL) { /* pattern { ... } */ - ase_awk_val_t* v1; + qse_awk_val_t* v1; v1 = eval_expression (run, ptn); - if (v1 == ASE_NULL) return -1; + if (v1 == QSE_NULL) return -1; - ase_awk_refupval (run, v1); + qse_awk_refupval (run, v1); - if (ase_awk_valtobool (run, v1)) + if (qse_awk_valtobool (run, v1)) { run->active_block = blk; if (run_block (run, blk) == -1) { - ase_awk_refdownval (run, v1); + qse_awk_refdownval (run, v1); return -1; } } - ase_awk_refdownval (run, v1); + qse_awk_refdownval (run, v1); } else { /* pattern, pattern { ... } */ - ASE_ASSERT (ptn->next->next == ASE_NULL); - ASE_ASSERT (run->pattern_range_state != ASE_NULL); + QSE_ASSERT (ptn->next->next == QSE_NULL); + QSE_ASSERT (run->pattern_range_state != QSE_NULL); if (run->pattern_range_state[block_no] == 0) { - ase_awk_val_t* v1; + qse_awk_val_t* v1; v1 = eval_expression (run, ptn); - if (v1 == ASE_NULL) return -1; - ase_awk_refupval (run, v1); + if (v1 == QSE_NULL) return -1; + qse_awk_refupval (run, v1); - if (ase_awk_valtobool (run, v1)) + if (qse_awk_valtobool (run, v1)) { run->active_block = blk; if (run_block (run, blk) == -1) { - ase_awk_refdownval (run, v1); + qse_awk_refdownval (run, v1); return -1; } run->pattern_range_state[block_no] = 1; } - ase_awk_refdownval (run, v1); + qse_awk_refdownval (run, v1); } else if (run->pattern_range_state[block_no] == 1) { - ase_awk_val_t* v2; + qse_awk_val_t* v2; v2 = eval_expression (run, ptn->next); - if (v2 == ASE_NULL) return -1; - ase_awk_refupval (run, v2); + if (v2 == QSE_NULL) return -1; + qse_awk_refupval (run, v2); run->active_block = blk; if (run_block (run, blk) == -1) { - ase_awk_refdownval (run, v2); + qse_awk_refdownval (run, v2); return -1; } - if (ase_awk_valtobool (run, v2)) + if (qse_awk_valtobool (run, v2)) run->pattern_range_state[block_no] = 0; - ase_awk_refdownval (run, v2); + qse_awk_refdownval (run, v2); } } } @@ -1737,15 +1737,15 @@ static int run_pattern_block ( return 0; } -static int run_block (ase_awk_run_t* run, ase_awk_nde_blk_t* nde) +static int run_block (qse_awk_run_t* run, qse_awk_nde_blk_t* nde) { int n; if (run->depth.max.block > 0 && run->depth.cur.block >= run->depth.max.block) { - ase_awk_setrunerror ( - run, ASE_AWK_EBLKNST, nde->line, ASE_NULL, 0); + qse_awk_setrunerror ( + run, QSE_AWK_EBLKNST, nde->line, QSE_NULL, 0); return -1;; } @@ -1756,55 +1756,55 @@ static int run_block (ase_awk_run_t* run, ase_awk_nde_blk_t* nde) return n; } -static int run_block0 (ase_awk_run_t* run, ase_awk_nde_blk_t* nde) +static int run_block0 (qse_awk_run_t* run, qse_awk_nde_blk_t* nde) { - ase_awk_nde_t* p; - ase_size_t nlocals; - ase_size_t saved_stack_top; + qse_awk_nde_t* p; + qse_size_t nlocals; + qse_size_t saved_stack_top; int n = 0; - if (nde == ASE_NULL) + if (nde == QSE_NULL) { /* blockless pattern - execute print $0*/ - ase_awk_refupval (run, run->inrec.d0); + qse_awk_refupval (run, run->inrec.d0); - n = ase_awk_writeextio_str (run, - ASE_AWK_OUT_CONSOLE, ASE_T(""), - ASE_STR_PTR(&run->inrec.line), - ASE_STR_LEN(&run->inrec.line)); + n = qse_awk_writeextio_str (run, + QSE_AWK_OUT_CONSOLE, QSE_T(""), + QSE_STR_PTR(&run->inrec.line), + QSE_STR_LEN(&run->inrec.line)); if (n == -1) { - ase_awk_refdownval (run, run->inrec.d0); + qse_awk_refdownval (run, run->inrec.d0); /* adjust the error line */ run->errlin = nde->line; return -1; } - n = ase_awk_writeextio_str ( - run, ASE_AWK_OUT_CONSOLE, ASE_T(""), + n = qse_awk_writeextio_str ( + run, QSE_AWK_OUT_CONSOLE, QSE_T(""), run->global.ors.ptr, run->global.ors.len); if (n == -1) { - ase_awk_refdownval (run, run->inrec.d0); + qse_awk_refdownval (run, run->inrec.d0); /* adjust the error line */ run->errlin = nde->line; return -1; } - ase_awk_refdownval (run, run->inrec.d0); + qse_awk_refdownval (run, run->inrec.d0); return 0; } - ASE_ASSERT (nde->type == ASE_AWK_NDE_BLK); + QSE_ASSERT (nde->type == QSE_AWK_NDE_BLK); p = nde->body; nlocals = nde->nlocals; #ifdef DEBUG_RUN - ase_dprintf ( - ASE_T("securing space for local variables nlocals = %d\n"), + qse_dprintf ( + QSE_T("securing space for local variables nlocals = %d\n"), (int)nlocals); #endif @@ -1814,21 +1814,21 @@ static int run_block0 (ase_awk_run_t* run, ase_awk_nde_blk_t* nde) while (nlocals > 0) { --nlocals; - if (__raw_push(run,ase_awk_val_nil) == -1) + if (__raw_push(run,qse_awk_val_nil) == -1) { /* restore stack top */ run->stack_top = saved_stack_top; return -1; } - /* refupval is not required for ase_awk_val_nil */ + /* refupval is not required for qse_awk_val_nil */ } #ifdef DEBUG_RUN - ase_dprintf (ASE_T("executing block statements\n")); + qse_dprintf (QSE_T("executing block statements\n")); #endif - while (p != ASE_NULL && run->exit_level == EXIT_NONE) + while (p != QSE_NULL && run->exit_level == EXIT_NONE) { if (run_statement (run, p) == -1) { @@ -1840,13 +1840,13 @@ static int run_block0 (ase_awk_run_t* run, ase_awk_nde_blk_t* nde) /* pop off local variables */ #ifdef DEBUG_RUN - ase_dprintf (ASE_T("popping off local variables\n")); + qse_dprintf (QSE_T("popping off local variables\n")); #endif nlocals = nde->nlocals; while (nlocals > 0) { --nlocals; - ase_awk_refdownval (run, STACK_LOCAL(run,nlocals)); + qse_awk_refdownval (run, STACK_LOCAL(run,nlocals)); __raw_pop (run); } @@ -1855,141 +1855,141 @@ static int run_block0 (ase_awk_run_t* run, ase_awk_nde_blk_t* nde) #define ON_STATEMENT(run,nde) \ if ((run)->awk->stopall) (run)->exit_level = EXIT_ABORT; \ - if ((run)->cbs != ASE_NULL && \ - (run)->cbs->on_statement != ASE_NULL) \ + if ((run)->cbs != QSE_NULL && \ + (run)->cbs->on_statement != QSE_NULL) \ { \ (run)->cbs->on_statement ( \ run, (nde)->line, (run)->cbs->data); \ } -static int run_statement (ase_awk_run_t* run, ase_awk_nde_t* nde) +static int run_statement (qse_awk_run_t* run, qse_awk_nde_t* nde) { ON_STATEMENT (run, nde); switch (nde->type) { - case ASE_AWK_NDE_NULL: + case QSE_AWK_NDE_NULL: { /* do nothing */ break; } - case ASE_AWK_NDE_BLK: + case QSE_AWK_NDE_BLK: { if (run_block (run, - (ase_awk_nde_blk_t*)nde) == -1) return -1; + (qse_awk_nde_blk_t*)nde) == -1) return -1; break; } - case ASE_AWK_NDE_IF: + case QSE_AWK_NDE_IF: { if (run_if (run, - (ase_awk_nde_if_t*)nde) == -1) return -1; + (qse_awk_nde_if_t*)nde) == -1) return -1; break; } - case ASE_AWK_NDE_WHILE: - case ASE_AWK_NDE_DOWHILE: + case QSE_AWK_NDE_WHILE: + case QSE_AWK_NDE_DOWHILE: { if (run_while (run, - (ase_awk_nde_while_t*)nde) == -1) return -1; + (qse_awk_nde_while_t*)nde) == -1) return -1; break; } - case ASE_AWK_NDE_FOR: + case QSE_AWK_NDE_FOR: { if (run_for (run, - (ase_awk_nde_for_t*)nde) == -1) return -1; + (qse_awk_nde_for_t*)nde) == -1) return -1; break; } - case ASE_AWK_NDE_FOREACH: + case QSE_AWK_NDE_FOREACH: { if (run_foreach (run, - (ase_awk_nde_foreach_t*)nde) == -1) return -1; + (qse_awk_nde_foreach_t*)nde) == -1) return -1; break; } - case ASE_AWK_NDE_BREAK: + case QSE_AWK_NDE_BREAK: { if (run_break (run, - (ase_awk_nde_break_t*)nde) == -1) return -1; + (qse_awk_nde_break_t*)nde) == -1) return -1; break; } - case ASE_AWK_NDE_CONTINUE: + case QSE_AWK_NDE_CONTINUE: { if (run_continue (run, - (ase_awk_nde_continue_t*)nde) == -1) return -1; + (qse_awk_nde_continue_t*)nde) == -1) return -1; break; } - case ASE_AWK_NDE_RETURN: + case QSE_AWK_NDE_RETURN: { if (run_return (run, - (ase_awk_nde_return_t*)nde) == -1) return -1; + (qse_awk_nde_return_t*)nde) == -1) return -1; break; } - case ASE_AWK_NDE_EXIT: + case QSE_AWK_NDE_EXIT: { if (run_exit (run, - (ase_awk_nde_exit_t*)nde) == -1) return -1; + (qse_awk_nde_exit_t*)nde) == -1) return -1; break; } - case ASE_AWK_NDE_NEXT: + case QSE_AWK_NDE_NEXT: { if (run_next (run, - (ase_awk_nde_next_t*)nde) == -1) return -1; + (qse_awk_nde_next_t*)nde) == -1) return -1; break; } - case ASE_AWK_NDE_NEXTFILE: + case QSE_AWK_NDE_NEXTFILE: { if (run_nextfile (run, - (ase_awk_nde_nextfile_t*)nde) == -1) return -1; + (qse_awk_nde_nextfile_t*)nde) == -1) return -1; break; } - case ASE_AWK_NDE_DELETE: + case QSE_AWK_NDE_DELETE: { if (run_delete (run, - (ase_awk_nde_delete_t*)nde) == -1) return -1; + (qse_awk_nde_delete_t*)nde) == -1) return -1; break; } - case ASE_AWK_NDE_RESET: + case QSE_AWK_NDE_RESET: { if (run_reset (run, - (ase_awk_nde_reset_t*)nde) == -1) return -1; + (qse_awk_nde_reset_t*)nde) == -1) return -1; break; } - case ASE_AWK_NDE_PRINT: + case QSE_AWK_NDE_PRINT: { if (run_print (run, - (ase_awk_nde_print_t*)nde) == -1) return -1; + (qse_awk_nde_print_t*)nde) == -1) return -1; break; } - case ASE_AWK_NDE_PRINTF: + case QSE_AWK_NDE_PRINTF: { if (run_printf (run, - (ase_awk_nde_print_t*)nde) == -1) return -1; + (qse_awk_nde_print_t*)nde) == -1) return -1; break; } default: { - ase_awk_val_t* v; + qse_awk_val_t* v; v = eval_expression (run, nde); - if (v == ASE_NULL) return -1; + if (v == QSE_NULL) return -1; /* destroy the value if not referenced */ - ase_awk_refupval (run, v); - ase_awk_refdownval (run, v); + qse_awk_refupval (run, v); + qse_awk_refdownval (run, v); break; } @@ -1998,67 +1998,67 @@ static int run_statement (ase_awk_run_t* run, ase_awk_nde_t* nde) return 0; } -static int run_if (ase_awk_run_t* run, ase_awk_nde_if_t* nde) +static int run_if (qse_awk_run_t* run, qse_awk_nde_if_t* nde) { - ase_awk_val_t* test; + qse_awk_val_t* test; int n = 0; /* the test expression for the if statement cannot have * chained expressions. this should not be allowed by the * parser first of all */ - ASE_ASSERT (nde->test->next == ASE_NULL); + QSE_ASSERT (nde->test->next == QSE_NULL); test = eval_expression (run, nde->test); - if (test == ASE_NULL) return -1; + if (test == QSE_NULL) return -1; - ase_awk_refupval (run, test); - if (ase_awk_valtobool (run, test)) + qse_awk_refupval (run, test); + if (qse_awk_valtobool (run, test)) { n = run_statement (run, nde->then_part); } - else if (nde->else_part != ASE_NULL) + else if (nde->else_part != QSE_NULL) { n = run_statement (run, nde->else_part); } - ase_awk_refdownval (run, test); /* TODO: is this correct?*/ + qse_awk_refdownval (run, test); /* TODO: is this correct?*/ return n; } -static int run_while (ase_awk_run_t* run, ase_awk_nde_while_t* nde) +static int run_while (qse_awk_run_t* run, qse_awk_nde_while_t* nde) { - ase_awk_val_t* test; + qse_awk_val_t* test; - if (nde->type == ASE_AWK_NDE_WHILE) + if (nde->type == QSE_AWK_NDE_WHILE) { /* no chained expressions are allowed for the test * expression of the while statement */ - ASE_ASSERT (nde->test->next == ASE_NULL); + QSE_ASSERT (nde->test->next == QSE_NULL); while (1) { ON_STATEMENT (run, nde->test); test = eval_expression (run, nde->test); - if (test == ASE_NULL) return -1; + if (test == QSE_NULL) return -1; - ase_awk_refupval (run, test); + qse_awk_refupval (run, test); - if (ase_awk_valtobool (run, test)) + if (qse_awk_valtobool (run, test)) { if (run_statement(run,nde->body) == -1) { - ase_awk_refdownval (run, test); + qse_awk_refdownval (run, test); return -1; } } else { - ase_awk_refdownval (run, test); + qse_awk_refdownval (run, test); break; } - ase_awk_refdownval (run, test); + qse_awk_refdownval (run, test); if (run->exit_level == EXIT_BREAK) { @@ -2073,11 +2073,11 @@ static int run_while (ase_awk_run_t* run, ase_awk_nde_while_t* nde) } } - else if (nde->type == ASE_AWK_NDE_DOWHILE) + else if (nde->type == QSE_AWK_NDE_DOWHILE) { /* no chained expressions are allowed for the test * expression of the while statement */ - ASE_ASSERT (nde->test->next == ASE_NULL); + QSE_ASSERT (nde->test->next == QSE_NULL); do { @@ -2097,17 +2097,17 @@ static int run_while (ase_awk_run_t* run, ase_awk_nde_while_t* nde) ON_STATEMENT (run, nde->test); test = eval_expression (run, nde->test); - if (test == ASE_NULL) return -1; + if (test == QSE_NULL) return -1; - ase_awk_refupval (run, test); + qse_awk_refupval (run, test); - if (!ase_awk_valtobool (run, test)) + if (!qse_awk_valtobool (run, test)) { - ase_awk_refdownval (run, test); + qse_awk_refdownval (run, test); break; } - ase_awk_refdownval (run, test); + qse_awk_refdownval (run, test); } while (1); } @@ -2115,52 +2115,52 @@ static int run_while (ase_awk_run_t* run, ase_awk_nde_while_t* nde) return 0; } -static int run_for (ase_awk_run_t* run, ase_awk_nde_for_t* nde) +static int run_for (qse_awk_run_t* run, qse_awk_nde_for_t* nde) { - ase_awk_val_t* val; + qse_awk_val_t* val; - if (nde->init != ASE_NULL) + if (nde->init != QSE_NULL) { - ASE_ASSERT (nde->init->next == ASE_NULL); + QSE_ASSERT (nde->init->next == QSE_NULL); ON_STATEMENT (run, nde->init); val = eval_expression(run,nde->init); - if (val == ASE_NULL) return -1; + if (val == QSE_NULL) return -1; - ase_awk_refupval (run, val); - ase_awk_refdownval (run, val); + qse_awk_refupval (run, val); + qse_awk_refdownval (run, val); } while (1) { - if (nde->test != ASE_NULL) + if (nde->test != QSE_NULL) { - ase_awk_val_t* test; + qse_awk_val_t* test; /* no chained expressions for the test expression of * the for statement are allowed */ - ASE_ASSERT (nde->test->next == ASE_NULL); + QSE_ASSERT (nde->test->next == QSE_NULL); ON_STATEMENT (run, nde->test); test = eval_expression (run, nde->test); - if (test == ASE_NULL) return -1; + if (test == QSE_NULL) return -1; - ase_awk_refupval (run, test); - if (ase_awk_valtobool (run, test)) + qse_awk_refupval (run, test); + if (qse_awk_valtobool (run, test)) { if (run_statement(run,nde->body) == -1) { - ase_awk_refdownval (run, test); + qse_awk_refdownval (run, test); return -1; } } else { - ase_awk_refdownval (run, test); + qse_awk_refdownval (run, test); break; } - ase_awk_refdownval (run, test); + qse_awk_refdownval (run, test); } else { @@ -2178,16 +2178,16 @@ static int run_for (ase_awk_run_t* run, ase_awk_nde_for_t* nde) } else if (run->exit_level != EXIT_NONE) break; - if (nde->incr != ASE_NULL) + if (nde->incr != QSE_NULL) { - ASE_ASSERT (nde->incr->next == ASE_NULL); + QSE_ASSERT (nde->incr->next == QSE_NULL); ON_STATEMENT (run, nde->incr); val = eval_expression (run, nde->incr); - if (val == ASE_NULL) return -1; + if (val == QSE_NULL) return -1; - ase_awk_refupval (run, val); - ase_awk_refdownval (run, val); + qse_awk_refupval (run, val); + qse_awk_refdownval (run, val); } } @@ -2196,174 +2196,174 @@ static int run_for (ase_awk_run_t* run, ase_awk_nde_for_t* nde) struct foreach_walker_t { - ase_awk_run_t* run; - ase_awk_nde_t* var; - ase_awk_nde_t* body; + qse_awk_run_t* run; + qse_awk_nde_t* var; + qse_awk_nde_t* body; int ret; }; -static ase_map_walk_t walk_foreach ( - ase_map_t* map, ase_map_pair_t* pair, void* arg) +static qse_map_walk_t walk_foreach ( + qse_map_t* map, qse_map_pair_t* pair, void* arg) { struct foreach_walker_t* w = (struct foreach_walker_t*)arg; - ase_awk_val_t* str; + qse_awk_val_t* str; - str = (ase_awk_val_t*) ase_awk_makestrval ( - w->run, ASE_MAP_KPTR(pair), ASE_MAP_KLEN(pair)); - if (str == ASE_NULL) + str = (qse_awk_val_t*) qse_awk_makestrval ( + w->run, QSE_MAP_KPTR(pair), QSE_MAP_KLEN(pair)); + if (str == QSE_NULL) { /* adjust the error line */ w->run->errlin = w->var->line; w->ret = -1; - return ASE_MAP_WALK_STOP; + return QSE_MAP_WALK_STOP; } - ase_awk_refupval (w->run, str); - if (do_assignment (w->run, w->var, str) == ASE_NULL) + qse_awk_refupval (w->run, str); + if (do_assignment (w->run, w->var, str) == QSE_NULL) { - ase_awk_refdownval (w->run, str); + qse_awk_refdownval (w->run, str); w->ret = -1; - return ASE_MAP_WALK_STOP; + return QSE_MAP_WALK_STOP; } if (run_statement (w->run, w->body) == -1) { - ase_awk_refdownval (w->run, str); + qse_awk_refdownval (w->run, str); w->ret = -1; - return ASE_MAP_WALK_STOP; + return QSE_MAP_WALK_STOP; } - ase_awk_refdownval (w->run, str); - return ASE_MAP_WALK_FORWARD; + qse_awk_refdownval (w->run, str); + return QSE_MAP_WALK_FORWARD; } -static int run_foreach (ase_awk_run_t* run, ase_awk_nde_foreach_t* nde) +static int run_foreach (qse_awk_run_t* run, qse_awk_nde_foreach_t* nde) { - ase_awk_nde_exp_t* test; - ase_awk_val_t* rv; - ase_map_t* map; + qse_awk_nde_exp_t* test; + qse_awk_val_t* rv; + qse_map_t* map; struct foreach_walker_t walker; - test = (ase_awk_nde_exp_t*)nde->test; - ASE_ASSERT ( - test->type == ASE_AWK_NDE_EXP_BIN && - test->opcode == ASE_AWK_BINOP_IN); + test = (qse_awk_nde_exp_t*)nde->test; + QSE_ASSERT ( + test->type == QSE_AWK_NDE_EXP_BIN && + test->opcode == QSE_AWK_BINOP_IN); /* chained expressions should not be allowed * by the parser first of all */ - ASE_ASSERT (test->right->next == ASE_NULL); + QSE_ASSERT (test->right->next == QSE_NULL); rv = eval_expression (run, test->right); - if (rv == ASE_NULL) return -1; + if (rv == QSE_NULL) return -1; - ase_awk_refupval (run, rv); - if (rv->type != ASE_AWK_VAL_MAP) + qse_awk_refupval (run, rv); + if (rv->type != QSE_AWK_VAL_MAP) { - ase_awk_refdownval (run, rv); + qse_awk_refdownval (run, rv); - ase_awk_setrunerror ( - run, ASE_AWK_ENOTMAPIN, test->right->line, ASE_NULL, 0); + qse_awk_setrunerror ( + run, QSE_AWK_ENOTMAPIN, test->right->line, QSE_NULL, 0); return -1; } - map = ((ase_awk_val_map_t*)rv)->map; + map = ((qse_awk_val_map_t*)rv)->map; walker.run = run; walker.var = test->left; walker.body = nde->body; walker.ret = 0; - ase_map_walk (map, walk_foreach, &walker); + qse_map_walk (map, walk_foreach, &walker); - ase_awk_refdownval (run, rv); + qse_awk_refdownval (run, rv); return walker.ret; } -static int run_break (ase_awk_run_t* run, ase_awk_nde_break_t* nde) +static int run_break (qse_awk_run_t* run, qse_awk_nde_break_t* nde) { run->exit_level = EXIT_BREAK; return 0; } -static int run_continue (ase_awk_run_t* run, ase_awk_nde_continue_t* nde) +static int run_continue (qse_awk_run_t* run, qse_awk_nde_continue_t* nde) { run->exit_level = EXIT_CONTINUE; return 0; } -static int run_return (ase_awk_run_t* run, ase_awk_nde_return_t* nde) +static int run_return (qse_awk_run_t* run, qse_awk_nde_return_t* nde) { - if (nde->val != ASE_NULL) + if (nde->val != QSE_NULL) { - ase_awk_val_t* val; + qse_awk_val_t* val; /* chained expressions should not be allowed * by the parser first of all */ - ASE_ASSERT (nde->val->next == ASE_NULL); + QSE_ASSERT (nde->val->next == QSE_NULL); val = eval_expression (run, nde->val); - if (val == ASE_NULL) return -1; + if (val == QSE_NULL) return -1; - if ((run->awk->option & ASE_AWK_MAPTOVAR) == 0) + if ((run->awk->option & QSE_AWK_MAPTOVAR) == 0) { - if (val->type == ASE_AWK_VAL_MAP) + if (val->type == QSE_AWK_VAL_MAP) { /* cannot return a map */ - ase_awk_refupval (run, val); - ase_awk_refdownval (run, val); + qse_awk_refupval (run, val); + qse_awk_refdownval (run, val); - ase_awk_setrunerror ( - run, ASE_AWK_EMAPNOTALLOWED, - nde->line, ASE_NULL, 0); + qse_awk_setrunerror ( + run, QSE_AWK_EMAPNOTALLOWED, + nde->line, QSE_NULL, 0); return -1; } } - ase_awk_refdownval (run, STACK_RETVAL(run)); + qse_awk_refdownval (run, STACK_RETVAL(run)); STACK_RETVAL(run) = val; - ase_awk_refupval (run, val); /* see eval_call for the trick */ + qse_awk_refupval (run, val); /* see eval_call for the trick */ } run->exit_level = EXIT_FUNCTION; return 0; } -static int run_exit (ase_awk_run_t* run, ase_awk_nde_exit_t* nde) +static int run_exit (qse_awk_run_t* run, qse_awk_nde_exit_t* nde) { - if (nde->val != ASE_NULL) + if (nde->val != QSE_NULL) { - ase_awk_val_t* val; + qse_awk_val_t* val; /* chained expressions should not be allowed * by the parser first of all */ - ASE_ASSERT (nde->val->next == ASE_NULL); + QSE_ASSERT (nde->val->next == QSE_NULL); val = eval_expression (run, nde->val); - if (val == ASE_NULL) return -1; + if (val == QSE_NULL) return -1; - ase_awk_refdownval (run, STACK_RETVAL_GLOBAL(run)); + qse_awk_refdownval (run, STACK_RETVAL_GLOBAL(run)); STACK_RETVAL_GLOBAL(run) = val; /* global return value */ - ase_awk_refupval (run, val); + qse_awk_refupval (run, val); } run->exit_level = EXIT_GLOBAL; return 0; } -static int run_next (ase_awk_run_t* run, ase_awk_nde_next_t* nde) +static int run_next (qse_awk_run_t* run, qse_awk_nde_next_t* nde) { /* the parser checks if next has been called in the begin/end * block or whereever inappropriate. so the runtime doesn't * check that explicitly */ - if (run->active_block == (ase_awk_nde_blk_t*)run->awk->tree.begin) + if (run->active_block == (qse_awk_nde_blk_t*)run->awk->tree.begin) { - ase_awk_setrunerror ( - run, ASE_AWK_ERNEXTBEG, nde->line, ASE_NULL, 0); + qse_awk_setrunerror ( + run, QSE_AWK_ERNEXTBEG, nde->line, QSE_NULL, 0); return -1; } - else if (run->active_block == (ase_awk_nde_blk_t*)run->awk->tree.end) + else if (run->active_block == (qse_awk_nde_blk_t*)run->awk->tree.end) { - ase_awk_setrunerror ( - run, ASE_AWK_ERNEXTEND, nde->line, ASE_NULL, 0); + qse_awk_setrunerror ( + run, QSE_AWK_ERNEXTEND, nde->line, QSE_NULL, 0); return -1; } @@ -2371,25 +2371,25 @@ static int run_next (ase_awk_run_t* run, ase_awk_nde_next_t* nde) return 0; } -static int run_nextinfile (ase_awk_run_t* run, ase_awk_nde_nextfile_t* nde) +static int run_nextinfile (qse_awk_run_t* run, qse_awk_nde_nextfile_t* nde) { int n; /* normal nextfile statement */ - if (run->active_block == (ase_awk_nde_blk_t*)run->awk->tree.begin) + if (run->active_block == (qse_awk_nde_blk_t*)run->awk->tree.begin) { - ase_awk_setrunerror ( - run, ASE_AWK_ERNEXTFBEG, nde->line, ASE_NULL, 0); + qse_awk_setrunerror ( + run, QSE_AWK_ERNEXTFBEG, nde->line, QSE_NULL, 0); return -1; } - else if (run->active_block == (ase_awk_nde_blk_t*)run->awk->tree.end) + else if (run->active_block == (qse_awk_nde_blk_t*)run->awk->tree.end) { - ase_awk_setrunerror ( - run, ASE_AWK_ERNEXTFEND, nde->line, ASE_NULL, 0); + qse_awk_setrunerror ( + run, QSE_AWK_ERNEXTFEND, nde->line, QSE_NULL, 0); return -1; } - n = ase_awk_nextextio_read (run, ASE_AWK_IN_CONSOLE, ASE_T("")); + n = qse_awk_nextextio_read (run, QSE_AWK_IN_CONSOLE, QSE_T("")); if (n == -1) { /* adjust the error line */ @@ -2416,13 +2416,13 @@ static int run_nextinfile (ase_awk_run_t* run, ase_awk_nde_nextfile_t* nde) } -static int run_nextoutfile (ase_awk_run_t* run, ase_awk_nde_nextfile_t* nde) +static int run_nextoutfile (qse_awk_run_t* run, qse_awk_nde_nextfile_t* nde) { int n; /* nextofile can be called from BEGIN and END block unlike nextfile */ - n = ase_awk_nextextio_write (run, ASE_AWK_OUT_CONSOLE, ASE_T("")); + n = qse_awk_nextextio_write (run, QSE_AWK_OUT_CONSOLE, QSE_T("")); if (n == -1) { /* adjust the error line */ @@ -2442,158 +2442,158 @@ static int run_nextoutfile (ase_awk_run_t* run, ase_awk_nde_nextfile_t* nde) return 0; } -static int run_nextfile (ase_awk_run_t* run, ase_awk_nde_nextfile_t* nde) +static int run_nextfile (qse_awk_run_t* run, qse_awk_nde_nextfile_t* nde) { return (nde->out)? run_nextoutfile (run, nde): run_nextinfile (run, nde); } -static int run_delete (ase_awk_run_t* run, ase_awk_nde_delete_t* nde) +static int run_delete (qse_awk_run_t* run, qse_awk_nde_delete_t* nde) { - ase_awk_nde_var_t* var; + qse_awk_nde_var_t* var; - var = (ase_awk_nde_var_t*) nde->var; + var = (qse_awk_nde_var_t*) nde->var; - if (var->type == ASE_AWK_NDE_NAMED || - var->type == ASE_AWK_NDE_NAMEDIDX) + if (var->type == QSE_AWK_NDE_NAMED || + var->type == QSE_AWK_NDE_NAMEDIDX) { - ase_map_pair_t* pair; + qse_map_pair_t* pair; - ASE_ASSERTX ( - (var->type == ASE_AWK_NDE_NAMED && var->idx == ASE_NULL) || - (var->type == ASE_AWK_NDE_NAMEDIDX && var->idx != ASE_NULL), + QSE_ASSERTX ( + (var->type == QSE_AWK_NDE_NAMED && var->idx == QSE_NULL) || + (var->type == QSE_AWK_NDE_NAMEDIDX && var->idx != QSE_NULL), "if a named variable has an index part and a named indexed variable doesn't have an index part, the program is definitely wrong"); - pair = ase_map_search ( + pair = qse_map_search ( run->named, var->id.name.ptr, var->id.name.len); - if (pair == ASE_NULL) + if (pair == QSE_NULL) { - ase_awk_val_t* tmp; + qse_awk_val_t* tmp; /* value not set for the named variable. * create a map and assign it to the variable */ - tmp = ase_awk_makemapval (run); - if (tmp == ASE_NULL) + tmp = qse_awk_makemapval (run); + if (tmp == QSE_NULL) { /* adjust error line */ run->errlin = nde->line; return -1; } - pair = ase_map_upsert (run->named, + pair = qse_map_upsert (run->named, var->id.name.ptr, var->id.name.len, tmp, 0); - if (pair == ASE_NULL) + if (pair == QSE_NULL) { - ase_awk_refupval (run, tmp); - ase_awk_refdownval (run, tmp); + qse_awk_refupval (run, tmp); + qse_awk_refdownval (run, tmp); - ase_awk_setrunerror ( - run, ASE_AWK_ENOMEM, var->line, - ASE_NULL, 0); + qse_awk_setrunerror ( + run, QSE_AWK_ENOMEM, var->line, + QSE_NULL, 0); return -1; } /* as this is the assignment, it needs to update * the reference count of the target value. */ - ase_awk_refupval (run, tmp); + qse_awk_refupval (run, tmp); } else { - ase_awk_val_t* val; - ase_map_t* map; + qse_awk_val_t* val; + qse_map_t* map; - val = (ase_awk_val_t*)ASE_MAP_VPTR(pair); - ASE_ASSERT (val != ASE_NULL); + val = (qse_awk_val_t*)QSE_MAP_VPTR(pair); + QSE_ASSERT (val != QSE_NULL); - if (val->type != ASE_AWK_VAL_MAP) + if (val->type != QSE_AWK_VAL_MAP) { - ase_cstr_t errarg; + qse_cstr_t errarg; errarg.ptr = var->id.name.ptr; errarg.len = var->id.name.len; - ase_awk_setrunerror ( - run, ASE_AWK_ENOTDEL, var->line, + qse_awk_setrunerror ( + run, QSE_AWK_ENOTDEL, var->line, &errarg, 1); return -1; } - map = ((ase_awk_val_map_t*)val)->map; - if (var->type == ASE_AWK_NDE_NAMEDIDX) + map = ((qse_awk_val_map_t*)val)->map; + if (var->type == QSE_AWK_NDE_NAMEDIDX) { - ase_char_t* key; - ase_size_t keylen; - ase_awk_val_t* idx; - ase_char_t buf[IDXBUFSIZE]; + qse_char_t* key; + qse_size_t keylen; + qse_awk_val_t* idx; + qse_char_t buf[IDXBUFSIZE]; - ASE_ASSERT (var->idx != ASE_NULL); + QSE_ASSERT (var->idx != QSE_NULL); idx = eval_expression (run, var->idx); - if (idx == ASE_NULL) return -1; + if (idx == QSE_NULL) return -1; - ase_awk_refupval (run, idx); + qse_awk_refupval (run, idx); /* try with a fixed-size buffer */ - keylen = ASE_COUNTOF(buf); - key = ase_awk_valtostr ( - run, idx, ASE_AWK_VALTOSTR_FIXED, - (ase_str_t*)buf, &keylen); - if (key == ASE_NULL) + keylen = QSE_COUNTOF(buf); + key = qse_awk_valtostr ( + run, idx, QSE_AWK_VALTOSTR_FIXED, + (qse_str_t*)buf, &keylen); + if (key == QSE_NULL) { /* if it doesn't work, switch to dynamic mode */ - key = ase_awk_valtostr ( - run, idx, ASE_AWK_VALTOSTR_CLEAR, - ASE_NULL, &keylen); + key = qse_awk_valtostr ( + run, idx, QSE_AWK_VALTOSTR_CLEAR, + QSE_NULL, &keylen); } - ase_awk_refdownval (run, idx); + qse_awk_refdownval (run, idx); - if (key == ASE_NULL) + if (key == QSE_NULL) { /* change the error line */ run->errlin = var->line; return -1; } - ase_map_delete (map, key, keylen); - if (key != buf) ASE_AWK_FREE (run->awk, key); + qse_map_delete (map, key, keylen); + if (key != buf) QSE_AWK_FREE (run->awk, key); } else { - ase_map_clear (map); + qse_map_clear (map); } } } - else if (var->type == ASE_AWK_NDE_GLOBAL || - var->type == ASE_AWK_NDE_LOCAL || - var->type == ASE_AWK_NDE_ARG || - var->type == ASE_AWK_NDE_GLOBALIDX || - var->type == ASE_AWK_NDE_LOCALIDX || - var->type == ASE_AWK_NDE_ARGIDX) + else if (var->type == QSE_AWK_NDE_GLOBAL || + var->type == QSE_AWK_NDE_LOCAL || + var->type == QSE_AWK_NDE_ARG || + var->type == QSE_AWK_NDE_GLOBALIDX || + var->type == QSE_AWK_NDE_LOCALIDX || + var->type == QSE_AWK_NDE_ARGIDX) { - ase_awk_val_t* val; + qse_awk_val_t* val; - if (var->type == ASE_AWK_NDE_GLOBAL || - var->type == ASE_AWK_NDE_GLOBALIDX) + if (var->type == QSE_AWK_NDE_GLOBAL || + var->type == QSE_AWK_NDE_GLOBALIDX) val = STACK_GLOBAL (run,var->id.idxa); - else if (var->type == ASE_AWK_NDE_LOCAL || - var->type == ASE_AWK_NDE_LOCALIDX) + else if (var->type == QSE_AWK_NDE_LOCAL || + var->type == QSE_AWK_NDE_LOCALIDX) val = STACK_LOCAL (run,var->id.idxa); else val = STACK_ARG (run,var->id.idxa); - ASE_ASSERT (val != ASE_NULL); + QSE_ASSERT (val != QSE_NULL); - if (val->type == ASE_AWK_VAL_NIL) + if (val->type == QSE_AWK_VAL_NIL) { - ase_awk_val_t* tmp; + qse_awk_val_t* tmp; /* value not set. * create a map and assign it to the variable */ - tmp = ase_awk_makemapval (run); - if (tmp == ASE_NULL) + tmp = qse_awk_makemapval (run); + if (tmp == QSE_NULL) { /* adjust error line */ run->errlin = nde->line; @@ -2602,205 +2602,205 @@ static int run_delete (ase_awk_run_t* run, ase_awk_nde_delete_t* nde) /* no need to reduce the reference count of * the previous value because it was nil. */ - if (var->type == ASE_AWK_NDE_GLOBAL || - var->type == ASE_AWK_NDE_GLOBALIDX) + if (var->type == QSE_AWK_NDE_GLOBAL || + var->type == QSE_AWK_NDE_GLOBALIDX) { - if (ase_awk_setglobal ( + if (qse_awk_setglobal ( run, (int)var->id.idxa, tmp) == -1) { - ase_awk_refupval (run, tmp); - ase_awk_refdownval (run, tmp); + qse_awk_refupval (run, tmp); + qse_awk_refdownval (run, tmp); run->errlin = var->line; return -1; } } - else if (var->type == ASE_AWK_NDE_LOCAL || - var->type == ASE_AWK_NDE_LOCALIDX) + else if (var->type == QSE_AWK_NDE_LOCAL || + var->type == QSE_AWK_NDE_LOCALIDX) { STACK_LOCAL(run,var->id.idxa) = tmp; - ase_awk_refupval (run, tmp); + qse_awk_refupval (run, tmp); } else { STACK_ARG(run,var->id.idxa) = tmp; - ase_awk_refupval (run, tmp); + qse_awk_refupval (run, tmp); } } else { - ase_map_t* map; + qse_map_t* map; - if (val->type != ASE_AWK_VAL_MAP) + if (val->type != QSE_AWK_VAL_MAP) { - ase_cstr_t errarg; + qse_cstr_t errarg; errarg.ptr = var->id.name.ptr; errarg.len = var->id.name.len; - ase_awk_setrunerror ( - run, ASE_AWK_ENOTDEL, var->line, + qse_awk_setrunerror ( + run, QSE_AWK_ENOTDEL, var->line, &errarg, 1); return -1; } - map = ((ase_awk_val_map_t*)val)->map; - if (var->type == ASE_AWK_NDE_GLOBALIDX || - var->type == ASE_AWK_NDE_LOCALIDX || - var->type == ASE_AWK_NDE_ARGIDX) + map = ((qse_awk_val_map_t*)val)->map; + if (var->type == QSE_AWK_NDE_GLOBALIDX || + var->type == QSE_AWK_NDE_LOCALIDX || + var->type == QSE_AWK_NDE_ARGIDX) { - ase_char_t* key; - ase_size_t keylen; - ase_awk_val_t* idx; - ase_char_t buf[IDXBUFSIZE]; + qse_char_t* key; + qse_size_t keylen; + qse_awk_val_t* idx; + qse_char_t buf[IDXBUFSIZE]; - ASE_ASSERT (var->idx != ASE_NULL); + QSE_ASSERT (var->idx != QSE_NULL); idx = eval_expression (run, var->idx); - if (idx == ASE_NULL) return -1; + if (idx == QSE_NULL) return -1; - ase_awk_refupval (run, idx); + qse_awk_refupval (run, idx); /* try with a fixed-size buffer */ - keylen = ASE_COUNTOF(buf); - key = ase_awk_valtostr ( - run, idx, ASE_AWK_VALTOSTR_FIXED, - (ase_str_t*)buf, &keylen); - if (key == ASE_NULL) + keylen = QSE_COUNTOF(buf); + key = qse_awk_valtostr ( + run, idx, QSE_AWK_VALTOSTR_FIXED, + (qse_str_t*)buf, &keylen); + if (key == QSE_NULL) { /* if it doesn't work, switch to dynamic mode */ - key = ase_awk_valtostr ( - run, idx, ASE_AWK_VALTOSTR_CLEAR, - ASE_NULL, &keylen); + key = qse_awk_valtostr ( + run, idx, QSE_AWK_VALTOSTR_CLEAR, + QSE_NULL, &keylen); } - ase_awk_refdownval (run, idx); + qse_awk_refdownval (run, idx); - if (key == ASE_NULL) + if (key == QSE_NULL) { run->errlin = var->line; return -1; } - ase_map_delete (map, key, keylen); - if (key != buf) ASE_AWK_FREE (run->awk, key); + qse_map_delete (map, key, keylen); + if (key != buf) QSE_AWK_FREE (run->awk, key); } else { - ase_map_clear (map); + qse_map_clear (map); } } } else { - ASE_ASSERTX ( + QSE_ASSERTX ( !"should never happen - wrong target for delete", "the delete statement cannot be called with other nodes than the variables such as a named variable, a named indexed variable, etc"); - ase_awk_setrunerror ( - run, ASE_AWK_ERDELETE, var->line, ASE_NULL, 0); + qse_awk_setrunerror ( + run, QSE_AWK_ERDELETE, var->line, QSE_NULL, 0); return -1; } return 0; } -static int run_reset (ase_awk_run_t* run, ase_awk_nde_reset_t* nde) +static int run_reset (qse_awk_run_t* run, qse_awk_nde_reset_t* nde) { - ase_awk_nde_var_t* var; + qse_awk_nde_var_t* var; - var = (ase_awk_nde_var_t*) nde->var; + var = (qse_awk_nde_var_t*) nde->var; - if (var->type == ASE_AWK_NDE_NAMED) + if (var->type == QSE_AWK_NDE_NAMED) { - ASE_ASSERTX ( - var->type == ASE_AWK_NDE_NAMED && var->idx == ASE_NULL, + QSE_ASSERTX ( + var->type == QSE_AWK_NDE_NAMED && var->idx == QSE_NULL, "if a named variable has an index part, something is definitely wrong"); /* a named variable can be reset if removed from a internal map to manage it */ - ase_map_delete (run->named, var->id.name.ptr, var->id.name.len); + qse_map_delete (run->named, var->id.name.ptr, var->id.name.len); } - else if (var->type == ASE_AWK_NDE_GLOBAL || - var->type == ASE_AWK_NDE_LOCAL || - var->type == ASE_AWK_NDE_ARG) + else if (var->type == QSE_AWK_NDE_GLOBAL || + var->type == QSE_AWK_NDE_LOCAL || + var->type == QSE_AWK_NDE_ARG) { - ase_awk_val_t* val; + qse_awk_val_t* val; - if (var->type == ASE_AWK_NDE_GLOBAL) + if (var->type == QSE_AWK_NDE_GLOBAL) val = STACK_GLOBAL(run,var->id.idxa); - else if (var->type == ASE_AWK_NDE_LOCAL) + else if (var->type == QSE_AWK_NDE_LOCAL) val = STACK_LOCAL(run,var->id.idxa); else val = STACK_ARG(run,var->id.idxa); - ASE_ASSERT (val != ASE_NULL); + QSE_ASSERT (val != QSE_NULL); - if (val->type != ASE_AWK_VAL_NIL) + if (val->type != QSE_AWK_VAL_NIL) { - ase_awk_refdownval (run, val); - if (var->type == ASE_AWK_NDE_GLOBAL) - STACK_GLOBAL(run,var->id.idxa) = ase_awk_val_nil; - else if (var->type == ASE_AWK_NDE_LOCAL) - STACK_LOCAL(run,var->id.idxa) = ase_awk_val_nil; + qse_awk_refdownval (run, val); + if (var->type == QSE_AWK_NDE_GLOBAL) + STACK_GLOBAL(run,var->id.idxa) = qse_awk_val_nil; + else if (var->type == QSE_AWK_NDE_LOCAL) + STACK_LOCAL(run,var->id.idxa) = qse_awk_val_nil; else - STACK_ARG(run,var->id.idxa) = ase_awk_val_nil; + STACK_ARG(run,var->id.idxa) = qse_awk_val_nil; } } else { - ASE_ASSERTX ( + QSE_ASSERTX ( !"should never happen - wrong target for reset", "the reset statement can only be called with plain variables"); - ase_awk_setrunerror ( - run, ASE_AWK_ERRESET, var->line, ASE_NULL, 0); + qse_awk_setrunerror ( + run, QSE_AWK_ERRESET, var->line, QSE_NULL, 0); return -1; } return 0; } -static int run_print (ase_awk_run_t* run, ase_awk_nde_print_t* nde) +static int run_print (qse_awk_run_t* run, qse_awk_nde_print_t* nde) { - ase_char_t* out = ASE_NULL; - const ase_char_t* dst; - ase_awk_val_t* v; + qse_char_t* out = QSE_NULL; + const qse_char_t* dst; + qse_awk_val_t* v; int n; - ASE_ASSERT ( - (nde->out_type == ASE_AWK_OUT_PIPE && nde->out != ASE_NULL) || - (nde->out_type == ASE_AWK_OUT_COPROC && nde->out != ASE_NULL) || - (nde->out_type == ASE_AWK_OUT_FILE && nde->out != ASE_NULL) || - (nde->out_type == ASE_AWK_OUT_FILE_APPEND && nde->out != ASE_NULL) || - (nde->out_type == ASE_AWK_OUT_CONSOLE && nde->out == ASE_NULL)); + QSE_ASSERT ( + (nde->out_type == QSE_AWK_OUT_PIPE && nde->out != QSE_NULL) || + (nde->out_type == QSE_AWK_OUT_COPROC && nde->out != QSE_NULL) || + (nde->out_type == QSE_AWK_OUT_FILE && nde->out != QSE_NULL) || + (nde->out_type == QSE_AWK_OUT_FILE_APPEND && nde->out != QSE_NULL) || + (nde->out_type == QSE_AWK_OUT_CONSOLE && nde->out == QSE_NULL)); /* check if destination has been specified. */ - if (nde->out != ASE_NULL) + if (nde->out != QSE_NULL) { - ase_size_t len; + qse_size_t len; /* if so, resolve the destination name */ v = eval_expression (run, nde->out); - if (v == ASE_NULL) return -1; + if (v == QSE_NULL) return -1; - ase_awk_refupval (run, v); - out = ase_awk_valtostr ( - run, v, ASE_AWK_VALTOSTR_CLEAR, ASE_NULL, &len); - if (out == ASE_NULL) + qse_awk_refupval (run, v); + out = qse_awk_valtostr ( + run, v, QSE_AWK_VALTOSTR_CLEAR, QSE_NULL, &len); + if (out == QSE_NULL) { - ase_awk_refdownval (run, v); + qse_awk_refdownval (run, v); /* change the error line */ run->errlin = nde->line; return -1; } - ase_awk_refdownval (run, v); + qse_awk_refdownval (run, v); if (len <= 0) { /* the destination name is empty */ - ASE_AWK_FREE (run->awk, out); - ase_awk_setrunerror ( - run, ASE_AWK_EIONMEM, nde->line, ASE_NULL, 0); + QSE_AWK_FREE (run->awk, out); + qse_awk_setrunerror ( + run, QSE_AWK_EIONMEM, nde->line, QSE_NULL, 0); return -1; } @@ -2808,34 +2808,34 @@ static int run_print (ase_awk_run_t* run, ase_awk_nde_print_t* nde) * any invalid characters to the underlying system */ while (len > 0) { - if (out[--len] == ASE_T('\0')) + if (out[--len] == QSE_T('\0')) { /* if so, it skips writing */ - ASE_AWK_FREE (run->awk, out); - ase_awk_setrunerror ( - run, ASE_AWK_EIONMNL, nde->line, - ASE_NULL, 0); + QSE_AWK_FREE (run->awk, out); + qse_awk_setrunerror ( + run, QSE_AWK_EIONMNL, nde->line, + QSE_NULL, 0); return -1; } } } /* transforms the destination to suit the usage with extio */ - dst = (out == ASE_NULL)? ASE_T(""): out; + dst = (out == QSE_NULL)? QSE_T(""): out; /* check if print is followed by any arguments */ - if (nde->args == ASE_NULL) + if (nde->args == QSE_NULL) { /* if it doesn't have any arguments, print the entire * input record */ - n = ase_awk_writeextio_str ( + n = qse_awk_writeextio_str ( run, nde->out_type, dst, - ASE_STR_PTR(&run->inrec.line), - ASE_STR_LEN(&run->inrec.line)); - if (n <= -1 /*&& run->errnum != ASE_AWK_EIOIMPL*/) + QSE_STR_PTR(&run->inrec.line), + QSE_STR_LEN(&run->inrec.line)); + if (n <= -1 /*&& run->errnum != QSE_AWK_EIOIMPL*/) { - if (out != ASE_NULL) - ASE_AWK_FREE (run->awk, out); + if (out != QSE_NULL) + QSE_AWK_FREE (run->awk, out); /* adjust the error line */ run->errlin = nde->line; @@ -2846,28 +2846,28 @@ static int run_print (ase_awk_run_t* run, ase_awk_nde_print_t* nde) { /* if it has any arguments, print the arguments separated by * the value OFS */ - ase_awk_nde_t* head, * np; + qse_awk_nde_t* head, * np; - if (nde->args->type == ASE_AWK_NDE_GRP) + if (nde->args->type == QSE_AWK_NDE_GRP) { /* parenthesized print */ - ASE_ASSERT (nde->args->next == ASE_NULL); - head = ((ase_awk_nde_grp_t*)nde->args)->body; + QSE_ASSERT (nde->args->next == QSE_NULL); + head = ((qse_awk_nde_grp_t*)nde->args)->body; } else head = nde->args; - for (np = head; np != ASE_NULL; np = np->next) + for (np = head; np != QSE_NULL; np = np->next) { if (np != head) { - n = ase_awk_writeextio_str ( + n = qse_awk_writeextio_str ( run, nde->out_type, dst, run->global.ofs.ptr, run->global.ofs.len); - if (n <= -1 /*&& run->errnum != ASE_AWK_EIOIMPL*/) + if (n <= -1 /*&& run->errnum != QSE_AWK_EIOIMPL*/) { - if (out != ASE_NULL) - ASE_AWK_FREE (run->awk, out); + if (out != QSE_NULL) + QSE_AWK_FREE (run->awk, out); /* adjust the error line */ run->errlin = nde->line; @@ -2876,141 +2876,141 @@ static int run_print (ase_awk_run_t* run, ase_awk_nde_print_t* nde) } v = eval_expression (run, np); - if (v == ASE_NULL) + if (v == QSE_NULL) { - if (out != ASE_NULL) - ASE_AWK_FREE (run->awk, out); + if (out != QSE_NULL) + QSE_AWK_FREE (run->awk, out); return -1; } - ase_awk_refupval (run, v); + qse_awk_refupval (run, v); - n = ase_awk_writeextio_val (run, nde->out_type, dst, v); - if (n <= -1 /*&& run->errnum != ASE_AWK_EIOIMPL*/) + n = qse_awk_writeextio_val (run, nde->out_type, dst, v); + if (n <= -1 /*&& run->errnum != QSE_AWK_EIOIMPL*/) { - if (out != ASE_NULL) - ASE_AWK_FREE (run->awk, out); + if (out != QSE_NULL) + QSE_AWK_FREE (run->awk, out); - ase_awk_refdownval (run, v); + qse_awk_refdownval (run, v); /* adjust the error line */ run->errlin = nde->line; return -1; } - ase_awk_refdownval (run, v); + qse_awk_refdownval (run, v); } } /* print the value ORS to terminate the operation */ - n = ase_awk_writeextio_str ( + n = qse_awk_writeextio_str ( run, nde->out_type, dst, run->global.ors.ptr, run->global.ors.len); - if (n <= -1 /*&& run->errnum != ASE_AWK_EIOIMPL*/) + if (n <= -1 /*&& run->errnum != QSE_AWK_EIOIMPL*/) { - if (out != ASE_NULL) ASE_AWK_FREE (run->awk, out); + if (out != QSE_NULL) QSE_AWK_FREE (run->awk, out); /* change the error line */ run->errlin = nde->line; return -1; } - if (out != ASE_NULL) ASE_AWK_FREE (run->awk, out); + if (out != QSE_NULL) QSE_AWK_FREE (run->awk, out); /*skip_write:*/ return 0; } -static int run_printf (ase_awk_run_t* run, ase_awk_nde_print_t* nde) +static int run_printf (qse_awk_run_t* run, qse_awk_nde_print_t* nde) { - ase_char_t* out = ASE_NULL; - const ase_char_t* dst; - ase_awk_val_t* v; - ase_awk_nde_t* head; + qse_char_t* out = QSE_NULL; + const qse_char_t* dst; + qse_awk_val_t* v; + qse_awk_nde_t* head; int n; - ASE_ASSERT ( - (nde->out_type == ASE_AWK_OUT_PIPE && nde->out != ASE_NULL) || - (nde->out_type == ASE_AWK_OUT_COPROC && nde->out != ASE_NULL) || - (nde->out_type == ASE_AWK_OUT_FILE && nde->out != ASE_NULL) || - (nde->out_type == ASE_AWK_OUT_FILE_APPEND && nde->out != ASE_NULL) || - (nde->out_type == ASE_AWK_OUT_CONSOLE && nde->out == ASE_NULL)); + QSE_ASSERT ( + (nde->out_type == QSE_AWK_OUT_PIPE && nde->out != QSE_NULL) || + (nde->out_type == QSE_AWK_OUT_COPROC && nde->out != QSE_NULL) || + (nde->out_type == QSE_AWK_OUT_FILE && nde->out != QSE_NULL) || + (nde->out_type == QSE_AWK_OUT_FILE_APPEND && nde->out != QSE_NULL) || + (nde->out_type == QSE_AWK_OUT_CONSOLE && nde->out == QSE_NULL)); - if (nde->out != ASE_NULL) + if (nde->out != QSE_NULL) { - ase_size_t len; + qse_size_t len; v = eval_expression (run, nde->out); - if (v == ASE_NULL) return -1; + if (v == QSE_NULL) return -1; - ase_awk_refupval (run, v); - out = ase_awk_valtostr ( - run, v, ASE_AWK_VALTOSTR_CLEAR, ASE_NULL, &len); - if (out == ASE_NULL) + qse_awk_refupval (run, v); + out = qse_awk_valtostr ( + run, v, QSE_AWK_VALTOSTR_CLEAR, QSE_NULL, &len); + if (out == QSE_NULL) { - ase_awk_refdownval (run, v); + qse_awk_refdownval (run, v); /* change the error line */ run->errlin = nde->line; return -1; } - ase_awk_refdownval (run, v); + qse_awk_refdownval (run, v); if (len <= 0) { /* the output destination name is empty. */ - ASE_AWK_FREE (run->awk, out); - ase_awk_setrunerror ( - run, ASE_AWK_EIONMEM, nde->line, ASE_NULL, 0); + QSE_AWK_FREE (run->awk, out); + qse_awk_setrunerror ( + run, QSE_AWK_EIONMEM, nde->line, QSE_NULL, 0); return -1; } while (len > 0) { - if (out[--len] == ASE_T('\0')) + if (out[--len] == QSE_T('\0')) { /* the output destination name contains a null * character. */ - ASE_AWK_FREE (run->awk, out); - ase_awk_setrunerror ( - run, ASE_AWK_EIONMNL, nde->line, - ASE_NULL, 0); + QSE_AWK_FREE (run->awk, out); + qse_awk_setrunerror ( + run, QSE_AWK_EIONMNL, nde->line, + QSE_NULL, 0); return -1; } } } - dst = (out == ASE_NULL)? ASE_T(""): out; + dst = (out == QSE_NULL)? QSE_T(""): out; - ASE_ASSERTX (nde->args != ASE_NULL, + QSE_ASSERTX (nde->args != QSE_NULL, "a valid printf statement should have at least one argument. the parser must ensure this."); - if (nde->args->type == ASE_AWK_NDE_GRP) + if (nde->args->type == QSE_AWK_NDE_GRP) { /* parenthesized print */ - ASE_ASSERT (nde->args->next == ASE_NULL); - head = ((ase_awk_nde_grp_t*)nde->args)->body; + QSE_ASSERT (nde->args->next == QSE_NULL); + head = ((qse_awk_nde_grp_t*)nde->args)->body; } else head = nde->args; - ASE_ASSERTX (head != ASE_NULL, + QSE_ASSERTX (head != QSE_NULL, "a valid printf statement should have at least one argument. the parser must ensure this."); v = eval_expression (run, head); - if (v == ASE_NULL) + if (v == QSE_NULL) { - if (out != ASE_NULL) ASE_AWK_FREE (run->awk, out); + if (out != QSE_NULL) QSE_AWK_FREE (run->awk, out); return -1; } - ase_awk_refupval (run, v); - if (v->type != ASE_AWK_VAL_STR) + qse_awk_refupval (run, v); + if (v->type != QSE_AWK_VAL_STR) { /* the remaining arguments are ignored as the format cannot * contain any % characters */ - n = ase_awk_writeextio_val (run, nde->out_type, dst, v); - if (n <= -1 /*&& run->errnum != ASE_AWK_EIOIMPL*/) + n = qse_awk_writeextio_val (run, nde->out_type, dst, v); + if (n <= -1 /*&& run->errnum != QSE_AWK_EIOIMPL*/) { - if (out != ASE_NULL) ASE_AWK_FREE (run->awk, out); - ase_awk_refdownval (run, v); + if (out != QSE_NULL) QSE_AWK_FREE (run->awk, out); + qse_awk_refdownval (run, v); /* change the error line */ run->errlin = nde->line; @@ -3022,118 +3022,118 @@ static int run_printf (ase_awk_run_t* run, ase_awk_nde_print_t* nde) /* perform the formatted output */ if (output_formatted ( run, nde->out_type, dst, - ((ase_awk_val_str_t*)v)->buf, - ((ase_awk_val_str_t*)v)->len, + ((qse_awk_val_str_t*)v)->buf, + ((qse_awk_val_str_t*)v)->len, head->next) == -1) { - if (out != ASE_NULL) ASE_AWK_FREE (run->awk, out); - ase_awk_refdownval (run, v); + if (out != QSE_NULL) QSE_AWK_FREE (run->awk, out); + qse_awk_refdownval (run, v); /* adjust the error line */ run->errlin = nde->line; return -1; } } - ase_awk_refdownval (run, v); + qse_awk_refdownval (run, v); - if (out != ASE_NULL) ASE_AWK_FREE (run->awk, out); + if (out != QSE_NULL) QSE_AWK_FREE (run->awk, out); /*skip_write:*/ return 0; } static int output_formatted ( - ase_awk_run_t* run, int out_type, const ase_char_t* dst, - const ase_char_t* fmt, ase_size_t fmt_len, ase_awk_nde_t* args) + qse_awk_run_t* run, int out_type, const qse_char_t* dst, + const qse_char_t* fmt, qse_size_t fmt_len, qse_awk_nde_t* args) { - ase_char_t* ptr; - ase_size_t len; + qse_char_t* ptr; + qse_size_t len; int n; - ptr = ase_awk_format (run, - ASE_NULL, ASE_NULL, fmt, fmt_len, 0, args, &len); - if (ptr == ASE_NULL) return -1; + ptr = qse_awk_format (run, + QSE_NULL, QSE_NULL, fmt, fmt_len, 0, args, &len); + if (ptr == QSE_NULL) return -1; - n = ase_awk_writeextio_str (run, out_type, dst, ptr, len); - if (n <= -1 /*&& run->errnum != ASE_AWK_EIOIMPL*/) return -1; + n = qse_awk_writeextio_str (run, out_type, dst, ptr, len); + if (n <= -1 /*&& run->errnum != QSE_AWK_EIOIMPL*/) return -1; return 0; } -static ase_awk_val_t* eval_expression (ase_awk_run_t* run, ase_awk_nde_t* nde) +static qse_awk_val_t* eval_expression (qse_awk_run_t* run, qse_awk_nde_t* nde) { - ase_awk_val_t* v; + qse_awk_val_t* v; int n, errnum; #if 0 if (run->exit_level >= EXIT_GLOBAL) { - /* returns ASE_NULL as if an error occurred but + /* returns QSE_NULL as if an error occurred but * clears the error number. run_main will * detect this condition and treat it as a * non-error condition.*/ - run->errnum = ASE_AWK_ENOERR; - return ASE_NULL; + run->errnum = QSE_AWK_ENOERR; + return QSE_NULL; } #endif v = eval_expression0 (run, nde); - if (v == ASE_NULL) return ASE_NULL; + if (v == QSE_NULL) return QSE_NULL; - if (v->type == ASE_AWK_VAL_REX) + if (v->type == QSE_AWK_VAL_REX) { - ase_awk_refupval (run, v); + qse_awk_refupval (run, v); - if (run->inrec.d0->type == ASE_AWK_VAL_NIL) + if (run->inrec.d0->type == QSE_AWK_VAL_NIL) { /* the record has never been read. * probably, this functions has been triggered * by the statements in the BEGIN block */ - n = ASE_AWK_ISEMPTYREX(run->awk,((ase_awk_val_rex_t*)v)->code)? 1: 0; + n = QSE_AWK_ISEMPTYREX(run->awk,((qse_awk_val_rex_t*)v)->code)? 1: 0; } else { - ASE_ASSERTX ( - run->inrec.d0->type == ASE_AWK_VAL_STR, + QSE_ASSERTX ( + run->inrec.d0->type == QSE_AWK_VAL_STR, "the internal value representing $0 should always be of the string type once it has been set/updated. it is nil initially."); - n = ASE_AWK_MATCHREX ( - ((ase_awk_run_t*)run)->awk, - ((ase_awk_val_rex_t*)v)->code, - ((((ase_awk_run_t*)run)->global.ignorecase)? ASE_REX_IGNORECASE: 0), - ((ase_awk_val_str_t*)run->inrec.d0)->buf, - ((ase_awk_val_str_t*)run->inrec.d0)->len, - ASE_NULL, ASE_NULL, &errnum); + n = QSE_AWK_MATCHREX ( + ((qse_awk_run_t*)run)->awk, + ((qse_awk_val_rex_t*)v)->code, + ((((qse_awk_run_t*)run)->global.ignorecase)? QSE_REX_IGNORECASE: 0), + ((qse_awk_val_str_t*)run->inrec.d0)->buf, + ((qse_awk_val_str_t*)run->inrec.d0)->len, + QSE_NULL, QSE_NULL, &errnum); if (n == -1) { - ase_awk_refdownval (run, v); + qse_awk_refdownval (run, v); /* matchrex should never set the error number * whose message contains a formatting * character. otherwise, the following way of * setting the error information may not work */ - ase_awk_setrunerror ( - run, errnum, nde->line, ASE_NULL, 0); - return ASE_NULL; + qse_awk_setrunerror ( + run, errnum, nde->line, QSE_NULL, 0); + return QSE_NULL; } } - ase_awk_refdownval (run, v); + qse_awk_refdownval (run, v); - v = ase_awk_makeintval (run, (n != 0)); - if (v == ASE_NULL) + v = qse_awk_makeintval (run, (n != 0)); + if (v == QSE_NULL) { /* adjust error line */ run->errlin = nde->line; - return ASE_NULL; + return QSE_NULL; } } return v; } -static ase_awk_val_t* eval_expression0 (ase_awk_run_t* run, ase_awk_nde_t* nde) +static qse_awk_val_t* eval_expression0 (qse_awk_run_t* run, qse_awk_nde_t* nde) { static eval_expr_t eval_func[] = { @@ -3164,59 +3164,59 @@ static ase_awk_val_t* eval_expression0 (ase_awk_run_t* run, ase_awk_nde_t* nde) eval_getline }; - ase_awk_val_t* v; + qse_awk_val_t* v; - ASE_ASSERT (nde->type >= ASE_AWK_NDE_GRP && - (nde->type - ASE_AWK_NDE_GRP) < ASE_COUNTOF(eval_func)); + QSE_ASSERT (nde->type >= QSE_AWK_NDE_GRP && + (nde->type - QSE_AWK_NDE_GRP) < QSE_COUNTOF(eval_func)); - v = eval_func[nde->type-ASE_AWK_NDE_GRP] (run, nde); + v = eval_func[nde->type-QSE_AWK_NDE_GRP] (run, nde); - if (v != ASE_NULL && run->exit_level >= EXIT_GLOBAL) + if (v != QSE_NULL && run->exit_level >= EXIT_GLOBAL) { - ase_awk_refupval (run, v); - ase_awk_refdownval (run, v); + qse_awk_refupval (run, v); + qse_awk_refdownval (run, v); - /* returns ASE_NULL as if an error occurred but + /* returns QSE_NULL as if an error occurred but * clears the error number. run_main will * detect this condition and treat it as a * non-error condition.*/ - run->errnum = ASE_AWK_ENOERR; - return ASE_NULL; + run->errnum = QSE_AWK_ENOERR; + return QSE_NULL; } return v; } -static ase_awk_val_t* eval_group (ase_awk_run_t* run, ase_awk_nde_t* nde) +static qse_awk_val_t* eval_group (qse_awk_run_t* run, qse_awk_nde_t* nde) { - /* eval_binop_in evaluates the ASE_AWK_NDE_GRP specially. + /* eval_binop_in evaluates the QSE_AWK_NDE_GRP specially. * so this function should never be reached. */ - ASE_ASSERT (!"should never happen - NDE_GRP only for in"); - ase_awk_setrunerror (run, ASE_AWK_EINTERN, nde->line, ASE_NULL, 0); - return ASE_NULL; + QSE_ASSERT (!"should never happen - NDE_GRP only for in"); + qse_awk_setrunerror (run, QSE_AWK_EINTERN, nde->line, QSE_NULL, 0); + return QSE_NULL; } -static ase_awk_val_t* eval_assignment (ase_awk_run_t* run, ase_awk_nde_t* nde) +static qse_awk_val_t* eval_assignment (qse_awk_run_t* run, qse_awk_nde_t* nde) { - ase_awk_val_t* val, * ret; - ase_awk_nde_ass_t* ass = (ase_awk_nde_ass_t*)nde; + qse_awk_val_t* val, * ret; + qse_awk_nde_ass_t* ass = (qse_awk_nde_ass_t*)nde; - ASE_ASSERT (ass->left != ASE_NULL); - ASE_ASSERT (ass->right != ASE_NULL); + QSE_ASSERT (ass->left != QSE_NULL); + QSE_ASSERT (ass->right != QSE_NULL); - ASE_ASSERT (ass->right->next == ASE_NULL); + QSE_ASSERT (ass->right->next == QSE_NULL); val = eval_expression (run, ass->right); - if (val == ASE_NULL) return ASE_NULL; + if (val == QSE_NULL) return QSE_NULL; - ase_awk_refupval (run, val); + qse_awk_refupval (run, val); - if (ass->opcode != ASE_AWK_ASSOP_NONE) + if (ass->opcode != QSE_AWK_ASSOP_NONE) { - ase_awk_val_t* val2, * tmp; + qse_awk_val_t* val2, * tmp; static binop_func_t binop_func[] = { - ASE_NULL, /* ASE_AWK_ASSOP_NONE */ + QSE_NULL, /* QSE_AWK_ASSOP_NONE */ eval_binop_plus, eval_binop_minus, eval_binop_mul, @@ -3231,395 +3231,395 @@ static ase_awk_val_t* eval_assignment (ase_awk_run_t* run, ase_awk_nde_t* nde) eval_binop_bor }; - ASE_ASSERT (ass->left->next == ASE_NULL); + QSE_ASSERT (ass->left->next == QSE_NULL); val2 = eval_expression (run, ass->left); - if (val2 == ASE_NULL) + if (val2 == QSE_NULL) { - ase_awk_refdownval (run, val); - return ASE_NULL; + qse_awk_refdownval (run, val); + return QSE_NULL; } - ase_awk_refupval (run, val2); + qse_awk_refupval (run, val2); - ASE_ASSERT (ass->opcode >= 0); - ASE_ASSERT (ass->opcode < ASE_COUNTOF(binop_func)); - ASE_ASSERT (binop_func[ass->opcode] != ASE_NULL); + QSE_ASSERT (ass->opcode >= 0); + QSE_ASSERT (ass->opcode < QSE_COUNTOF(binop_func)); + QSE_ASSERT (binop_func[ass->opcode] != QSE_NULL); tmp = binop_func[ass->opcode] (run, val2, val); - if (tmp == ASE_NULL) + if (tmp == QSE_NULL) { - ase_awk_refdownval (run, val2); - ase_awk_refdownval (run, val); - return ASE_NULL; + qse_awk_refdownval (run, val2); + qse_awk_refdownval (run, val); + return QSE_NULL; } - ase_awk_refdownval (run, val2); - ase_awk_refdownval (run, val); + qse_awk_refdownval (run, val2); + qse_awk_refdownval (run, val); val = tmp; - ase_awk_refupval (run, val); + qse_awk_refupval (run, val); } ret = do_assignment (run, ass->left, val); - ase_awk_refdownval (run, val); + qse_awk_refdownval (run, val); return ret; } -static ase_awk_val_t* do_assignment ( - ase_awk_run_t* run, ase_awk_nde_t* var, ase_awk_val_t* val) +static qse_awk_val_t* do_assignment ( + qse_awk_run_t* run, qse_awk_nde_t* var, qse_awk_val_t* val) { - ase_awk_val_t* ret; + qse_awk_val_t* ret; int errnum; - if (var->type == ASE_AWK_NDE_NAMED || - var->type == ASE_AWK_NDE_GLOBAL || - var->type == ASE_AWK_NDE_LOCAL || - var->type == ASE_AWK_NDE_ARG) + if (var->type == QSE_AWK_NDE_NAMED || + var->type == QSE_AWK_NDE_GLOBAL || + var->type == QSE_AWK_NDE_LOCAL || + var->type == QSE_AWK_NDE_ARG) { - if ((run->awk->option & ASE_AWK_MAPTOVAR) == 0) + if ((run->awk->option & QSE_AWK_MAPTOVAR) == 0) { - if (val->type == ASE_AWK_VAL_MAP) + if (val->type == QSE_AWK_VAL_MAP) { - errnum = ASE_AWK_ENOTASS; + errnum = QSE_AWK_ENOTASS; goto exit_on_error; } } - ret = do_assignment_scalar (run, (ase_awk_nde_var_t*)var, val); + ret = do_assignment_scalar (run, (qse_awk_nde_var_t*)var, val); } - else if (var->type == ASE_AWK_NDE_NAMEDIDX || - var->type == ASE_AWK_NDE_GLOBALIDX || - var->type == ASE_AWK_NDE_LOCALIDX || - var->type == ASE_AWK_NDE_ARGIDX) + else if (var->type == QSE_AWK_NDE_NAMEDIDX || + var->type == QSE_AWK_NDE_GLOBALIDX || + var->type == QSE_AWK_NDE_LOCALIDX || + var->type == QSE_AWK_NDE_ARGIDX) { - if (val->type == ASE_AWK_VAL_MAP) + if (val->type == QSE_AWK_VAL_MAP) { - errnum = ASE_AWK_ENOTASS; + errnum = QSE_AWK_ENOTASS; goto exit_on_error; } - ret = do_assignment_map (run, (ase_awk_nde_var_t*)var, val); + ret = do_assignment_map (run, (qse_awk_nde_var_t*)var, val); } - else if (var->type == ASE_AWK_NDE_POS) + else if (var->type == QSE_AWK_NDE_POS) { - if (val->type == ASE_AWK_VAL_MAP) + if (val->type == QSE_AWK_VAL_MAP) { - errnum = ASE_AWK_ENOTASS; + errnum = QSE_AWK_ENOTASS; goto exit_on_error; } - ret = do_assignment_pos (run, (ase_awk_nde_pos_t*)var, val); + ret = do_assignment_pos (run, (qse_awk_nde_pos_t*)var, val); } else { - ASE_ASSERT (!"should never happen - invalid variable type"); - errnum = ASE_AWK_EINTERN; + QSE_ASSERT (!"should never happen - invalid variable type"); + errnum = QSE_AWK_EINTERN; goto exit_on_error; } return ret; exit_on_error: - ase_awk_setrunerror (run, errnum, var->line, ASE_NULL, 0); - return ASE_NULL; + qse_awk_setrunerror (run, errnum, var->line, QSE_NULL, 0); + return QSE_NULL; } -static ase_awk_val_t* do_assignment_scalar ( - ase_awk_run_t* run, ase_awk_nde_var_t* var, ase_awk_val_t* val) +static qse_awk_val_t* do_assignment_scalar ( + qse_awk_run_t* run, qse_awk_nde_var_t* var, qse_awk_val_t* val) { - ASE_ASSERT ( - (var->type == ASE_AWK_NDE_NAMED || - var->type == ASE_AWK_NDE_GLOBAL || - var->type == ASE_AWK_NDE_LOCAL || - var->type == ASE_AWK_NDE_ARG) && var->idx == ASE_NULL); + QSE_ASSERT ( + (var->type == QSE_AWK_NDE_NAMED || + var->type == QSE_AWK_NDE_GLOBAL || + var->type == QSE_AWK_NDE_LOCAL || + var->type == QSE_AWK_NDE_ARG) && var->idx == QSE_NULL); - ASE_ASSERT ( - (run->awk->option & ASE_AWK_MAPTOVAR) || - val->type != ASE_AWK_VAL_MAP); + QSE_ASSERT ( + (run->awk->option & QSE_AWK_MAPTOVAR) || + val->type != QSE_AWK_VAL_MAP); - if (var->type == ASE_AWK_NDE_NAMED) + if (var->type == QSE_AWK_NDE_NAMED) { - ase_map_pair_t* pair; + qse_map_pair_t* pair; - pair = ase_map_search ( + pair = qse_map_search ( run->named, var->id.name.ptr, var->id.name.len); - if (pair != ASE_NULL && - ((ase_awk_val_t*)ASE_MAP_VPTR(pair))->type == ASE_AWK_VAL_MAP) + if (pair != QSE_NULL && + ((qse_awk_val_t*)QSE_MAP_VPTR(pair))->type == QSE_AWK_VAL_MAP) { /* once a variable becomes a map, * it cannot be changed to a scalar variable */ - ase_cstr_t errarg; + qse_cstr_t errarg; errarg.ptr = var->id.name.ptr; errarg.len = var->id.name.len; - ase_awk_setrunerror (run, - ASE_AWK_EMAPTOSCALAR, var->line, &errarg, 1); - return ASE_NULL; + qse_awk_setrunerror (run, + QSE_AWK_EMAPTOSCALAR, var->line, &errarg, 1); + return QSE_NULL; } - if (ase_map_upsert (run->named, - var->id.name.ptr, var->id.name.len, val, 0) == ASE_NULL) + if (qse_map_upsert (run->named, + var->id.name.ptr, var->id.name.len, val, 0) == QSE_NULL) { - ase_awk_setrunerror ( - run, ASE_AWK_ENOMEM, var->line, ASE_NULL, 0); - return ASE_NULL; + qse_awk_setrunerror ( + run, QSE_AWK_ENOMEM, var->line, QSE_NULL, 0); + return QSE_NULL; } - ase_awk_refupval (run, val); + qse_awk_refupval (run, val); } - else if (var->type == ASE_AWK_NDE_GLOBAL) + else if (var->type == QSE_AWK_NDE_GLOBAL) { if (set_global (run, var->id.idxa, var, val) == -1) { /* adjust error line */ run->errlin = var->line; - return ASE_NULL; + return QSE_NULL; } } - else if (var->type == ASE_AWK_NDE_LOCAL) + else if (var->type == QSE_AWK_NDE_LOCAL) { - ase_awk_val_t* old = STACK_LOCAL(run,var->id.idxa); - if (old->type == ASE_AWK_VAL_MAP) + qse_awk_val_t* old = STACK_LOCAL(run,var->id.idxa); + if (old->type == QSE_AWK_VAL_MAP) { /* once the variable becomes a map, * it cannot be changed to a scalar variable */ - ase_cstr_t errarg; + qse_cstr_t errarg; errarg.ptr = var->id.name.ptr; errarg.len = var->id.name.len; - ase_awk_setrunerror (run, - ASE_AWK_EMAPTOSCALAR, var->line, &errarg, 1); - return ASE_NULL; + qse_awk_setrunerror (run, + QSE_AWK_EMAPTOSCALAR, var->line, &errarg, 1); + return QSE_NULL; } - ase_awk_refdownval (run, old); + qse_awk_refdownval (run, old); STACK_LOCAL(run,var->id.idxa) = val; - ase_awk_refupval (run, val); + qse_awk_refupval (run, val); } - else /* if (var->type == ASE_AWK_NDE_ARG) */ + else /* if (var->type == QSE_AWK_NDE_ARG) */ { - ase_awk_val_t* old = STACK_ARG(run,var->id.idxa); - if (old->type == ASE_AWK_VAL_MAP) + qse_awk_val_t* old = STACK_ARG(run,var->id.idxa); + if (old->type == QSE_AWK_VAL_MAP) { /* once the variable becomes a map, * it cannot be changed to a scalar variable */ - ase_cstr_t errarg; + qse_cstr_t errarg; errarg.ptr = var->id.name.ptr; errarg.len = var->id.name.len; - ase_awk_setrunerror (run, - ASE_AWK_EMAPTOSCALAR, var->line, &errarg, 1); - return ASE_NULL; + qse_awk_setrunerror (run, + QSE_AWK_EMAPTOSCALAR, var->line, &errarg, 1); + return QSE_NULL; } - ase_awk_refdownval (run, old); + qse_awk_refdownval (run, old); STACK_ARG(run,var->id.idxa) = val; - ase_awk_refupval (run, val); + qse_awk_refupval (run, val); } return val; } -static ase_awk_val_t* do_assignment_map ( - ase_awk_run_t* run, ase_awk_nde_var_t* var, ase_awk_val_t* val) +static qse_awk_val_t* do_assignment_map ( + qse_awk_run_t* run, qse_awk_nde_var_t* var, qse_awk_val_t* val) { - ase_awk_val_map_t* map; - ase_char_t* str; - ase_size_t len; - ase_char_t idxbuf[IDXBUFSIZE]; + qse_awk_val_map_t* map; + qse_char_t* str; + qse_size_t len; + qse_char_t idxbuf[IDXBUFSIZE]; - ASE_ASSERT ( - (var->type == ASE_AWK_NDE_NAMEDIDX || - var->type == ASE_AWK_NDE_GLOBALIDX || - var->type == ASE_AWK_NDE_LOCALIDX || - var->type == ASE_AWK_NDE_ARGIDX) && var->idx != ASE_NULL); - ASE_ASSERT (val->type != ASE_AWK_VAL_MAP); + QSE_ASSERT ( + (var->type == QSE_AWK_NDE_NAMEDIDX || + var->type == QSE_AWK_NDE_GLOBALIDX || + var->type == QSE_AWK_NDE_LOCALIDX || + var->type == QSE_AWK_NDE_ARGIDX) && var->idx != QSE_NULL); + QSE_ASSERT (val->type != QSE_AWK_VAL_MAP); - if (var->type == ASE_AWK_NDE_NAMEDIDX) + if (var->type == QSE_AWK_NDE_NAMEDIDX) { - ase_map_pair_t* pair; - pair = ase_map_search ( + qse_map_pair_t* pair; + pair = qse_map_search ( run->named, var->id.name.ptr, var->id.name.len); - map = (pair == ASE_NULL)? - (ase_awk_val_map_t*)ase_awk_val_nil: - (ase_awk_val_map_t*)ASE_MAP_VPTR(pair); + map = (pair == QSE_NULL)? + (qse_awk_val_map_t*)qse_awk_val_nil: + (qse_awk_val_map_t*)QSE_MAP_VPTR(pair); } else { - map = (var->type == ASE_AWK_NDE_GLOBALIDX)? - (ase_awk_val_map_t*)STACK_GLOBAL(run,var->id.idxa): - (var->type == ASE_AWK_NDE_LOCALIDX)? - (ase_awk_val_map_t*)STACK_LOCAL(run,var->id.idxa): - (ase_awk_val_map_t*)STACK_ARG(run,var->id.idxa); + map = (var->type == QSE_AWK_NDE_GLOBALIDX)? + (qse_awk_val_map_t*)STACK_GLOBAL(run,var->id.idxa): + (var->type == QSE_AWK_NDE_LOCALIDX)? + (qse_awk_val_map_t*)STACK_LOCAL(run,var->id.idxa): + (qse_awk_val_map_t*)STACK_ARG(run,var->id.idxa); } - if (map->type == ASE_AWK_VAL_NIL) + if (map->type == QSE_AWK_VAL_NIL) { /* the map is not initialized yet */ - ase_awk_val_t* tmp; + qse_awk_val_t* tmp; - tmp = ase_awk_makemapval (run); - if (tmp == ASE_NULL) + tmp = qse_awk_makemapval (run); + if (tmp == QSE_NULL) { /* adjust error line */ run->errlin = var->line; - return ASE_NULL; + return QSE_NULL; } - if (var->type == ASE_AWK_NDE_NAMEDIDX) + if (var->type == QSE_AWK_NDE_NAMEDIDX) { /* doesn't have to decrease the reference count * of the previous value here as it is done by - * ase_map_upsert */ - if (ase_map_upsert ( + * qse_map_upsert */ + if (qse_map_upsert ( run->named, var->id.name.ptr, var->id.name.len, tmp, - 0) == ASE_NULL) + 0) == QSE_NULL) { - ase_awk_refupval (run, tmp); - ase_awk_refdownval (run, tmp); + qse_awk_refupval (run, tmp); + qse_awk_refdownval (run, tmp); - ase_awk_setrunerror ( - run, ASE_AWK_ENOMEM, var->line, ASE_NULL, 0); - return ASE_NULL; + qse_awk_setrunerror ( + run, QSE_AWK_ENOMEM, var->line, QSE_NULL, 0); + return QSE_NULL; } - ase_awk_refupval (run, tmp); + qse_awk_refupval (run, tmp); } - else if (var->type == ASE_AWK_NDE_GLOBALIDX) + else if (var->type == QSE_AWK_NDE_GLOBALIDX) { - ase_awk_refupval (run, tmp); - if (ase_awk_setglobal (run, (int)var->id.idxa, tmp) == -1) + qse_awk_refupval (run, tmp); + if (qse_awk_setglobal (run, (int)var->id.idxa, tmp) == -1) { - ase_awk_refdownval (run, tmp); + qse_awk_refdownval (run, tmp); /* change error line */ run->errlin = var->line; - return ASE_NULL; + return QSE_NULL; } - ase_awk_refdownval (run, tmp); + qse_awk_refdownval (run, tmp); } - else if (var->type == ASE_AWK_NDE_LOCALIDX) + else if (var->type == QSE_AWK_NDE_LOCALIDX) { - ase_awk_refdownval (run, (ase_awk_val_t*)map); + qse_awk_refdownval (run, (qse_awk_val_t*)map); STACK_LOCAL(run,var->id.idxa) = tmp; - ase_awk_refupval (run, tmp); + qse_awk_refupval (run, tmp); } - else /* if (var->type == ASE_AWK_NDE_ARGIDX) */ + else /* if (var->type == QSE_AWK_NDE_ARGIDX) */ { - ase_awk_refdownval (run, (ase_awk_val_t*)map); + qse_awk_refdownval (run, (qse_awk_val_t*)map); STACK_ARG(run,var->id.idxa) = tmp; - ase_awk_refupval (run, tmp); + qse_awk_refupval (run, tmp); } - map = (ase_awk_val_map_t*) tmp; + map = (qse_awk_val_map_t*) tmp; } - else if (map->type != ASE_AWK_VAL_MAP) + else if (map->type != QSE_AWK_VAL_MAP) { /* variable assigned is not a map */ - ase_awk_setrunerror ( - run, ASE_AWK_ENOTIDX, var->line, ASE_NULL, 0); - return ASE_NULL; + qse_awk_setrunerror ( + run, QSE_AWK_ENOTIDX, var->line, QSE_NULL, 0); + return QSE_NULL; } - len = ASE_COUNTOF(idxbuf); + len = QSE_COUNTOF(idxbuf); str = idxnde_to_str (run, var->idx, idxbuf, &len); - if (str == ASE_NULL) + if (str == QSE_NULL) { - str = idxnde_to_str (run, var->idx, ASE_NULL, &len); - if (str == ASE_NULL) return ASE_NULL; + str = idxnde_to_str (run, var->idx, QSE_NULL, &len); + if (str == QSE_NULL) return QSE_NULL; } #ifdef DEBUG_RUN - ase_dprintf (ASE_T("**** index str=>%s, map->ref=%d, map->type=%d\n"), + qse_dprintf (QSE_T("**** index str=>%s, map->ref=%d, map->type=%d\n"), str, (int)map->ref, (int)map->type); #endif - if (ase_map_upsert (map->map, str, len, val, 0) == ASE_NULL) + if (qse_map_upsert (map->map, str, len, val, 0) == QSE_NULL) { - if (str != idxbuf) ASE_AWK_FREE (run->awk, str); - ase_awk_setrunerror (run, ASE_AWK_ENOMEM, var->line, ASE_NULL, 0); - return ASE_NULL; + if (str != idxbuf) QSE_AWK_FREE (run->awk, str); + qse_awk_setrunerror (run, QSE_AWK_ENOMEM, var->line, QSE_NULL, 0); + return QSE_NULL; } - if (str != idxbuf) ASE_AWK_FREE (run->awk, str); - ase_awk_refupval (run, val); + if (str != idxbuf) QSE_AWK_FREE (run->awk, str); + qse_awk_refupval (run, val); return val; } -static ase_awk_val_t* do_assignment_pos ( - ase_awk_run_t* run, ase_awk_nde_pos_t* pos, ase_awk_val_t* val) +static qse_awk_val_t* do_assignment_pos ( + qse_awk_run_t* run, qse_awk_nde_pos_t* pos, qse_awk_val_t* val) { - ase_awk_val_t* v; - ase_long_t lv; - ase_real_t rv; - ase_char_t* str; - ase_size_t len; + qse_awk_val_t* v; + qse_long_t lv; + qse_real_t rv; + qse_char_t* str; + qse_size_t len; int n; v = eval_expression (run, pos->val); - if (v == ASE_NULL) return ASE_NULL; + if (v == QSE_NULL) return QSE_NULL; - ase_awk_refupval (run, v); - n = ase_awk_valtonum (run, v, &lv, &rv); - ase_awk_refdownval (run, v); + qse_awk_refupval (run, v); + n = qse_awk_valtonum (run, v, &lv, &rv); + qse_awk_refdownval (run, v); if (n == -1) { - ase_awk_setrunerror ( - run, ASE_AWK_EPOSIDX, pos->line, ASE_NULL, 0); - return ASE_NULL; + qse_awk_setrunerror ( + run, QSE_AWK_EPOSIDX, pos->line, QSE_NULL, 0); + return QSE_NULL; } - if (n == 1) lv = (ase_long_t)rv; + if (n == 1) lv = (qse_long_t)rv; if (!IS_VALID_POSIDX(lv)) { - ase_awk_setrunerror ( - run, ASE_AWK_EPOSIDX, pos->line, ASE_NULL, 0); - return ASE_NULL; + qse_awk_setrunerror ( + run, QSE_AWK_EPOSIDX, pos->line, QSE_NULL, 0); + return QSE_NULL; } - if (val->type == ASE_AWK_VAL_STR) + if (val->type == QSE_AWK_VAL_STR) { - str = ((ase_awk_val_str_t*)val)->buf; - len = ((ase_awk_val_str_t*)val)->len; + str = ((qse_awk_val_str_t*)val)->buf; + len = ((qse_awk_val_str_t*)val)->len; } else { - str = ase_awk_valtostr ( - run, val, ASE_AWK_VALTOSTR_CLEAR, ASE_NULL, &len); - if (str == ASE_NULL) + str = qse_awk_valtostr ( + run, val, QSE_AWK_VALTOSTR_CLEAR, QSE_NULL, &len); + if (str == QSE_NULL) { /* change error line */ run->errlin = pos->line; - return ASE_NULL; + return QSE_NULL; } } - n = ase_awk_setrec (run, (ase_size_t)lv, str, len); + n = qse_awk_setrec (run, (qse_size_t)lv, str, len); - if (val->type != ASE_AWK_VAL_STR) ASE_AWK_FREE (run->awk, str); + if (val->type != QSE_AWK_VAL_STR) QSE_AWK_FREE (run->awk, str); - if (n == -1) return ASE_NULL; + if (n == -1) return QSE_NULL; return (lv == 0)? run->inrec.d0: run->inrec.flds[lv-1].val; } -static ase_awk_val_t* eval_binary (ase_awk_run_t* run, ase_awk_nde_t* nde) +static qse_awk_val_t* eval_binary (qse_awk_run_t* run, qse_awk_nde_t* nde) { static binop_func_t binop_func[] = { /* the order of the functions should be inline with * the operator declaration in run.h */ - ASE_NULL, /* eval_binop_lor */ - ASE_NULL, /* eval_binop_land */ - ASE_NULL, /* eval_binop_in */ + QSE_NULL, /* eval_binop_lor */ + QSE_NULL, /* eval_binop_land */ + QSE_NULL, /* eval_binop_in */ eval_binop_bor, eval_binop_bxor, @@ -3644,538 +3644,538 @@ static ase_awk_val_t* eval_binary (ase_awk_run_t* run, ase_awk_nde_t* nde) eval_binop_exp, eval_binop_concat, - ASE_NULL, /* eval_binop_ma */ - ASE_NULL /* eval_binop_nm */ + QSE_NULL, /* eval_binop_ma */ + QSE_NULL /* eval_binop_nm */ }; - ase_awk_nde_exp_t* exp = (ase_awk_nde_exp_t*)nde; - ase_awk_val_t* left, * right, * res; + qse_awk_nde_exp_t* exp = (qse_awk_nde_exp_t*)nde; + qse_awk_val_t* left, * right, * res; - ASE_ASSERT (exp->type == ASE_AWK_NDE_EXP_BIN); + QSE_ASSERT (exp->type == QSE_AWK_NDE_EXP_BIN); - if (exp->opcode == ASE_AWK_BINOP_LAND) + if (exp->opcode == QSE_AWK_BINOP_LAND) { res = eval_binop_land (run, exp->left, exp->right); } - else if (exp->opcode == ASE_AWK_BINOP_LOR) + else if (exp->opcode == QSE_AWK_BINOP_LOR) { res = eval_binop_lor (run, exp->left, exp->right); } - else if (exp->opcode == ASE_AWK_BINOP_IN) + else if (exp->opcode == QSE_AWK_BINOP_IN) { /* treat the in operator specially */ res = eval_binop_in (run, exp->left, exp->right); } - else if (exp->opcode == ASE_AWK_BINOP_NM) + else if (exp->opcode == QSE_AWK_BINOP_NM) { res = eval_binop_nm (run, exp->left, exp->right); } - else if (exp->opcode == ASE_AWK_BINOP_MA) + else if (exp->opcode == QSE_AWK_BINOP_MA) { res = eval_binop_ma (run, exp->left, exp->right); } else { - ASE_ASSERT (exp->left->next == ASE_NULL); + QSE_ASSERT (exp->left->next == QSE_NULL); left = eval_expression (run, exp->left); - if (left == ASE_NULL) return ASE_NULL; + if (left == QSE_NULL) return QSE_NULL; - ase_awk_refupval (run, left); + qse_awk_refupval (run, left); - ASE_ASSERT (exp->right->next == ASE_NULL); + QSE_ASSERT (exp->right->next == QSE_NULL); right = eval_expression (run, exp->right); - if (right == ASE_NULL) + if (right == QSE_NULL) { - ase_awk_refdownval (run, left); - return ASE_NULL; + qse_awk_refdownval (run, left); + return QSE_NULL; } - ase_awk_refupval (run, right); + qse_awk_refupval (run, right); - ASE_ASSERT (exp->opcode >= 0 && - exp->opcode < ASE_COUNTOF(binop_func)); - ASE_ASSERT (binop_func[exp->opcode] != ASE_NULL); + QSE_ASSERT (exp->opcode >= 0 && + exp->opcode < QSE_COUNTOF(binop_func)); + QSE_ASSERT (binop_func[exp->opcode] != QSE_NULL); res = binop_func[exp->opcode] (run, left, right); - if (res == ASE_NULL) + if (res == QSE_NULL) { /* change the error line */ run->errlin = nde->line; } - ase_awk_refdownval (run, left); - ase_awk_refdownval (run, right); + qse_awk_refdownval (run, left); + qse_awk_refdownval (run, right); } return res; } -static ase_awk_val_t* eval_binop_lor ( - ase_awk_run_t* run, ase_awk_nde_t* left, ase_awk_nde_t* right) +static qse_awk_val_t* eval_binop_lor ( + qse_awk_run_t* run, qse_awk_nde_t* left, qse_awk_nde_t* right) { /* - ase_awk_val_t* res = ASE_NULL; + qse_awk_val_t* res = QSE_NULL; - res = ase_awk_makeintval (run, - ase_awk_valtobool(run left) || ase_awk_valtobool(run,right)); - if (res == ASE_NULL) + res = qse_awk_makeintval (run, + qse_awk_valtobool(run left) || qse_awk_valtobool(run,right)); + if (res == QSE_NULL) { run->errlin = left->line; - return ASE_NULL; + return QSE_NULL; } return res; */ /* short-circuit evaluation required special treatment */ - ase_awk_val_t* lv, * rv, * res; + qse_awk_val_t* lv, * rv, * res; - ASE_ASSERT (left->next == ASE_NULL); + QSE_ASSERT (left->next == QSE_NULL); lv = eval_expression (run, left); - if (lv == ASE_NULL) return ASE_NULL; + if (lv == QSE_NULL) return QSE_NULL; - ase_awk_refupval (run, lv); - if (ase_awk_valtobool (run, lv)) + qse_awk_refupval (run, lv); + if (qse_awk_valtobool (run, lv)) { - res = ase_awk_val_one; + res = qse_awk_val_one; } else { - ASE_ASSERT (right->next == ASE_NULL); + QSE_ASSERT (right->next == QSE_NULL); rv = eval_expression (run, right); - if (rv == ASE_NULL) + if (rv == QSE_NULL) { - ase_awk_refdownval (run, lv); - return ASE_NULL; + qse_awk_refdownval (run, lv); + return QSE_NULL; } - ase_awk_refupval (run, rv); + qse_awk_refupval (run, rv); - res = ase_awk_valtobool(run,rv)? ase_awk_val_one: ase_awk_val_zero; - ase_awk_refdownval (run, rv); + res = qse_awk_valtobool(run,rv)? qse_awk_val_one: qse_awk_val_zero; + qse_awk_refdownval (run, rv); } - ase_awk_refdownval (run, lv); + qse_awk_refdownval (run, lv); return res; } -static ase_awk_val_t* eval_binop_land ( - ase_awk_run_t* run, ase_awk_nde_t* left, ase_awk_nde_t* right) +static qse_awk_val_t* eval_binop_land ( + qse_awk_run_t* run, qse_awk_nde_t* left, qse_awk_nde_t* right) { /* - ase_awk_val_t* res = ASE_NULL; + qse_awk_val_t* res = QSE_NULL; - res = ase_awk_makeintval (run, - ase_awk_valtobool(run,left) && ase_awk_valtobool(run,right)); - if (res == ASE_NULL) + res = qse_awk_makeintval (run, + qse_awk_valtobool(run,left) && qse_awk_valtobool(run,right)); + if (res == QSE_NULL) { run->errlin = left->line; - return ASE_NULL; + return QSE_NULL; } return res; */ /* short-circuit evaluation required special treatment */ - ase_awk_val_t* lv, * rv, * res; + qse_awk_val_t* lv, * rv, * res; - ASE_ASSERT (left->next == ASE_NULL); + QSE_ASSERT (left->next == QSE_NULL); lv = eval_expression (run, left); - if (lv == ASE_NULL) return ASE_NULL; + if (lv == QSE_NULL) return QSE_NULL; - ase_awk_refupval (run, lv); - if (!ase_awk_valtobool (run, lv)) + qse_awk_refupval (run, lv); + if (!qse_awk_valtobool (run, lv)) { - res = ase_awk_val_zero; + res = qse_awk_val_zero; } else { - ASE_ASSERT (right->next == ASE_NULL); + QSE_ASSERT (right->next == QSE_NULL); rv = eval_expression (run, right); - if (rv == ASE_NULL) + if (rv == QSE_NULL) { - ase_awk_refdownval (run, lv); - return ASE_NULL; + qse_awk_refdownval (run, lv); + return QSE_NULL; } - ase_awk_refupval (run, rv); + qse_awk_refupval (run, rv); - res = ase_awk_valtobool(run,rv)? ase_awk_val_one: ase_awk_val_zero; - ase_awk_refdownval (run, rv); + res = qse_awk_valtobool(run,rv)? qse_awk_val_one: qse_awk_val_zero; + qse_awk_refdownval (run, rv); } - ase_awk_refdownval (run, lv); + qse_awk_refdownval (run, lv); return res; } -static ase_awk_val_t* eval_binop_in ( - ase_awk_run_t* run, ase_awk_nde_t* left, ase_awk_nde_t* right) +static qse_awk_val_t* eval_binop_in ( + qse_awk_run_t* run, qse_awk_nde_t* left, qse_awk_nde_t* right) { - ase_awk_val_t* rv; - ase_char_t* str; - ase_size_t len; - ase_char_t idxbuf[IDXBUFSIZE]; + qse_awk_val_t* rv; + qse_char_t* str; + qse_size_t len; + qse_char_t idxbuf[IDXBUFSIZE]; - if (right->type != ASE_AWK_NDE_GLOBAL && - right->type != ASE_AWK_NDE_LOCAL && - right->type != ASE_AWK_NDE_ARG && - right->type != ASE_AWK_NDE_NAMED) + if (right->type != QSE_AWK_NDE_GLOBAL && + right->type != QSE_AWK_NDE_LOCAL && + right->type != QSE_AWK_NDE_ARG && + right->type != QSE_AWK_NDE_NAMED) { /* the compiler should have handled this case */ - ASE_ASSERT ( + QSE_ASSERT ( !"should never happen - in needs a plain variable"); - ase_awk_setrunerror ( - run, ASE_AWK_EINTERN, right->line, ASE_NULL, 0); - return ASE_NULL; + qse_awk_setrunerror ( + run, QSE_AWK_EINTERN, right->line, QSE_NULL, 0); + return QSE_NULL; } /* evaluate the left-hand side of the operator */ - len = ASE_COUNTOF(idxbuf); - str = (left->type == ASE_AWK_NDE_GRP)? - idxnde_to_str (run, ((ase_awk_nde_grp_t*)left)->body, idxbuf, &len): + len = QSE_COUNTOF(idxbuf); + str = (left->type == QSE_AWK_NDE_GRP)? + idxnde_to_str (run, ((qse_awk_nde_grp_t*)left)->body, idxbuf, &len): idxnde_to_str (run, left, idxbuf, &len); - if (str == ASE_NULL) + if (str == QSE_NULL) { - str = (left->type == ASE_AWK_NDE_GRP)? - idxnde_to_str (run, ((ase_awk_nde_grp_t*)left)->body, ASE_NULL, &len): - idxnde_to_str (run, left, ASE_NULL, &len); - if (str == ASE_NULL) return ASE_NULL; + str = (left->type == QSE_AWK_NDE_GRP)? + idxnde_to_str (run, ((qse_awk_nde_grp_t*)left)->body, QSE_NULL, &len): + idxnde_to_str (run, left, QSE_NULL, &len); + if (str == QSE_NULL) return QSE_NULL; } /* evaluate the right-hand side of the operator */ - ASE_ASSERT (right->next == ASE_NULL); + QSE_ASSERT (right->next == QSE_NULL); rv = eval_expression (run, right); - if (rv == ASE_NULL) + if (rv == QSE_NULL) { - if (str != idxbuf) ASE_AWK_FREE (run->awk, str); - return ASE_NULL; + if (str != idxbuf) QSE_AWK_FREE (run->awk, str); + return QSE_NULL; } - ase_awk_refupval (run, rv); + qse_awk_refupval (run, rv); - if (rv->type == ASE_AWK_VAL_NIL) + if (rv->type == QSE_AWK_VAL_NIL) { - if (str != idxbuf) ASE_AWK_FREE (run->awk, str); - ase_awk_refdownval (run, rv); - return ase_awk_val_zero; + if (str != idxbuf) QSE_AWK_FREE (run->awk, str); + qse_awk_refdownval (run, rv); + return qse_awk_val_zero; } - else if (rv->type == ASE_AWK_VAL_MAP) + else if (rv->type == QSE_AWK_VAL_MAP) { - ase_awk_val_t* res; - ase_map_t* map; + qse_awk_val_t* res; + qse_map_t* map; - map = ((ase_awk_val_map_t*)rv)->map; - res = (ase_map_search (map, str, len) == ASE_NULL)? - ase_awk_val_zero: ase_awk_val_one; + map = ((qse_awk_val_map_t*)rv)->map; + res = (qse_map_search (map, str, len) == QSE_NULL)? + qse_awk_val_zero: qse_awk_val_one; - if (str != idxbuf) ASE_AWK_FREE (run->awk, str); - ase_awk_refdownval (run, rv); + if (str != idxbuf) QSE_AWK_FREE (run->awk, str); + qse_awk_refdownval (run, rv); return res; } /* need a map */ - if (str != idxbuf) ASE_AWK_FREE (run->awk, str); - ase_awk_refdownval (run, rv); + if (str != idxbuf) QSE_AWK_FREE (run->awk, str); + qse_awk_refdownval (run, rv); - ase_awk_setrunerror (run, ASE_AWK_ENOTMAPNILIN, right->line, ASE_NULL, 0); - return ASE_NULL; + qse_awk_setrunerror (run, QSE_AWK_ENOTMAPNILIN, right->line, QSE_NULL, 0); + return QSE_NULL; } -static ase_awk_val_t* eval_binop_bor ( - ase_awk_run_t* run, ase_awk_val_t* left, ase_awk_val_t* right) +static qse_awk_val_t* eval_binop_bor ( + qse_awk_run_t* run, qse_awk_val_t* left, qse_awk_val_t* right) { int n1, n2, n3; - ase_long_t l1, l2; - ase_real_t r1, r2; + qse_long_t l1, l2; + qse_real_t r1, r2; - n1 = ase_awk_valtonum (run, left, &l1, &r1); - n2 = ase_awk_valtonum (run, right, &l2, &r2); + n1 = qse_awk_valtonum (run, left, &l1, &r1); + n2 = qse_awk_valtonum (run, right, &l2, &r2); if (n1 == -1 || n2 == -1) { - ase_awk_setrunerrnum (run, ASE_AWK_EOPERAND); - return ASE_NULL; + qse_awk_setrunerrnum (run, QSE_AWK_EOPERAND); + return QSE_NULL; } n3 = n1 + (n2 << 1); - ASE_ASSERT (n3 >= 0 && n3 <= 3); - return (n3 == 0)? ase_awk_makeintval(run,(ase_long_t)l1|(ase_long_t)l2): - (n3 == 1)? ase_awk_makeintval(run,(ase_long_t)r1|(ase_long_t)l2): - (n3 == 2)? ase_awk_makeintval(run,(ase_long_t)l1|(ase_long_t)r2): - ase_awk_makeintval(run,(ase_long_t)r1|(ase_long_t)r2); + QSE_ASSERT (n3 >= 0 && n3 <= 3); + return (n3 == 0)? qse_awk_makeintval(run,(qse_long_t)l1|(qse_long_t)l2): + (n3 == 1)? qse_awk_makeintval(run,(qse_long_t)r1|(qse_long_t)l2): + (n3 == 2)? qse_awk_makeintval(run,(qse_long_t)l1|(qse_long_t)r2): + qse_awk_makeintval(run,(qse_long_t)r1|(qse_long_t)r2); } -static ase_awk_val_t* eval_binop_bxor ( - ase_awk_run_t* run, ase_awk_val_t* left, ase_awk_val_t* right) +static qse_awk_val_t* eval_binop_bxor ( + qse_awk_run_t* run, qse_awk_val_t* left, qse_awk_val_t* right) { int n1, n2, n3; - ase_long_t l1, l2; - ase_real_t r1, r2; + qse_long_t l1, l2; + qse_real_t r1, r2; - n1 = ase_awk_valtonum (run, left, &l1, &r1); - n2 = ase_awk_valtonum (run, right, &l2, &r2); + n1 = qse_awk_valtonum (run, left, &l1, &r1); + n2 = qse_awk_valtonum (run, right, &l2, &r2); if (n1 == -1 || n2 == -1) { - ase_awk_setrunerrnum (run, ASE_AWK_EOPERAND); - return ASE_NULL; + qse_awk_setrunerrnum (run, QSE_AWK_EOPERAND); + return QSE_NULL; } n3 = n1 + (n2 << 1); - ASE_ASSERT (n3 >= 0 && n3 <= 3); - return (n3 == 0)? ase_awk_makeintval(run,(ase_long_t)l1^(ase_long_t)l2): - (n3 == 1)? ase_awk_makeintval(run,(ase_long_t)r1^(ase_long_t)l2): - (n3 == 2)? ase_awk_makeintval(run,(ase_long_t)l1^(ase_long_t)r2): - ase_awk_makeintval(run,(ase_long_t)r1^(ase_long_t)r2); + QSE_ASSERT (n3 >= 0 && n3 <= 3); + return (n3 == 0)? qse_awk_makeintval(run,(qse_long_t)l1^(qse_long_t)l2): + (n3 == 1)? qse_awk_makeintval(run,(qse_long_t)r1^(qse_long_t)l2): + (n3 == 2)? qse_awk_makeintval(run,(qse_long_t)l1^(qse_long_t)r2): + qse_awk_makeintval(run,(qse_long_t)r1^(qse_long_t)r2); } -static ase_awk_val_t* eval_binop_band ( - ase_awk_run_t* run, ase_awk_val_t* left, ase_awk_val_t* right) +static qse_awk_val_t* eval_binop_band ( + qse_awk_run_t* run, qse_awk_val_t* left, qse_awk_val_t* right) { int n1, n2, n3; - ase_long_t l1, l2; - ase_real_t r1, r2; + qse_long_t l1, l2; + qse_real_t r1, r2; - n1 = ase_awk_valtonum (run, left, &l1, &r1); - n2 = ase_awk_valtonum (run, right, &l2, &r2); + n1 = qse_awk_valtonum (run, left, &l1, &r1); + n2 = qse_awk_valtonum (run, right, &l2, &r2); if (n1 == -1 || n2 == -1) { - ase_awk_setrunerrnum (run, ASE_AWK_EOPERAND); - return ASE_NULL; + qse_awk_setrunerrnum (run, QSE_AWK_EOPERAND); + return QSE_NULL; } n3 = n1 + (n2 << 1); - ASE_ASSERT (n3 >= 0 && n3 <= 3); - return (n3 == 0)? ase_awk_makeintval(run,(ase_long_t)l1&(ase_long_t)l2): - (n3 == 1)? ase_awk_makeintval(run,(ase_long_t)r1&(ase_long_t)l2): - (n3 == 2)? ase_awk_makeintval(run,(ase_long_t)l1&(ase_long_t)r2): - ase_awk_makeintval(run,(ase_long_t)r1&(ase_long_t)r2); + QSE_ASSERT (n3 >= 0 && n3 <= 3); + return (n3 == 0)? qse_awk_makeintval(run,(qse_long_t)l1&(qse_long_t)l2): + (n3 == 1)? qse_awk_makeintval(run,(qse_long_t)r1&(qse_long_t)l2): + (n3 == 2)? qse_awk_makeintval(run,(qse_long_t)l1&(qse_long_t)r2): + qse_awk_makeintval(run,(qse_long_t)r1&(qse_long_t)r2); } static int __cmp_nil_nil ( - ase_awk_run_t* run, ase_awk_val_t* left, ase_awk_val_t* right) + qse_awk_run_t* run, qse_awk_val_t* left, qse_awk_val_t* right) { return 0; } static int __cmp_nil_int ( - ase_awk_run_t* run, ase_awk_val_t* left, ase_awk_val_t* right) + qse_awk_run_t* run, qse_awk_val_t* left, qse_awk_val_t* right) { - if (((ase_awk_val_int_t*)right)->val < 0) return 1; - if (((ase_awk_val_int_t*)right)->val > 0) return -1; + if (((qse_awk_val_int_t*)right)->val < 0) return 1; + if (((qse_awk_val_int_t*)right)->val > 0) return -1; return 0; } static int __cmp_nil_real ( - ase_awk_run_t* run, ase_awk_val_t* left, ase_awk_val_t* right) + qse_awk_run_t* run, qse_awk_val_t* left, qse_awk_val_t* right) { - if (((ase_awk_val_real_t*)right)->val < 0) return 1; - if (((ase_awk_val_real_t*)right)->val > 0) return -1; + if (((qse_awk_val_real_t*)right)->val < 0) return 1; + if (((qse_awk_val_real_t*)right)->val > 0) return -1; return 0; } static int __cmp_nil_str ( - ase_awk_run_t* run, ase_awk_val_t* left, ase_awk_val_t* right) + qse_awk_run_t* run, qse_awk_val_t* left, qse_awk_val_t* right) { - return (((ase_awk_val_str_t*)right)->len == 0)? 0: -1; + return (((qse_awk_val_str_t*)right)->len == 0)? 0: -1; } static int __cmp_int_nil ( - ase_awk_run_t* run, ase_awk_val_t* left, ase_awk_val_t* right) + qse_awk_run_t* run, qse_awk_val_t* left, qse_awk_val_t* right) { - if (((ase_awk_val_int_t*)left)->val > 0) return 1; - if (((ase_awk_val_int_t*)left)->val < 0) return -1; + if (((qse_awk_val_int_t*)left)->val > 0) return 1; + if (((qse_awk_val_int_t*)left)->val < 0) return -1; return 0; } static int __cmp_int_int ( - ase_awk_run_t* run, ase_awk_val_t* left, ase_awk_val_t* right) + qse_awk_run_t* run, qse_awk_val_t* left, qse_awk_val_t* right) { - if (((ase_awk_val_int_t*)left)->val > - ((ase_awk_val_int_t*)right)->val) return 1; - if (((ase_awk_val_int_t*)left)->val < - ((ase_awk_val_int_t*)right)->val) return -1; + if (((qse_awk_val_int_t*)left)->val > + ((qse_awk_val_int_t*)right)->val) return 1; + if (((qse_awk_val_int_t*)left)->val < + ((qse_awk_val_int_t*)right)->val) return -1; return 0; } static int __cmp_int_real ( - ase_awk_run_t* run, ase_awk_val_t* left, ase_awk_val_t* right) + qse_awk_run_t* run, qse_awk_val_t* left, qse_awk_val_t* right) { - if (((ase_awk_val_int_t*)left)->val > - ((ase_awk_val_real_t*)right)->val) return 1; - if (((ase_awk_val_int_t*)left)->val < - ((ase_awk_val_real_t*)right)->val) return -1; + if (((qse_awk_val_int_t*)left)->val > + ((qse_awk_val_real_t*)right)->val) return 1; + if (((qse_awk_val_int_t*)left)->val < + ((qse_awk_val_real_t*)right)->val) return -1; return 0; } static int __cmp_int_str ( - ase_awk_run_t* run, ase_awk_val_t* left, ase_awk_val_t* right) + qse_awk_run_t* run, qse_awk_val_t* left, qse_awk_val_t* right) { - ase_char_t* str; - ase_size_t len; - ase_long_t r; - ase_real_t rr; + qse_char_t* str; + qse_size_t len; + qse_long_t r; + qse_real_t rr; int n; - r = ase_awk_strxtolong (run->awk, - ((ase_awk_val_str_t*)right)->buf, - ((ase_awk_val_str_t*)right)->len, 0, (const ase_char_t**)&str); - if (str == ((ase_awk_val_str_t*)right)->buf + - ((ase_awk_val_str_t*)right)->len) + r = qse_awk_strxtolong (run->awk, + ((qse_awk_val_str_t*)right)->buf, + ((qse_awk_val_str_t*)right)->len, 0, (const qse_char_t**)&str); + if (str == ((qse_awk_val_str_t*)right)->buf + + ((qse_awk_val_str_t*)right)->len) { - if (((ase_awk_val_int_t*)left)->val > r) return 1; - if (((ase_awk_val_int_t*)left)->val < r) return -1; + if (((qse_awk_val_int_t*)left)->val > r) return 1; + if (((qse_awk_val_int_t*)left)->val < r) return -1; return 0; } /* TODO: should i do this??? conversion to real and comparision... */ - else if (*str == ASE_T('.') || *str == ASE_T('E') || *str == ASE_T('e')) + else if (*str == QSE_T('.') || *str == QSE_T('E') || *str == QSE_T('e')) { - rr = ase_awk_strxtoreal (run->awk, - ((ase_awk_val_str_t*)right)->buf, - ((ase_awk_val_str_t*)right)->len, - (const ase_char_t**)&str); - if (str == ((ase_awk_val_str_t*)right)->buf + - ((ase_awk_val_str_t*)right)->len) + rr = qse_awk_strxtoreal (run->awk, + ((qse_awk_val_str_t*)right)->buf, + ((qse_awk_val_str_t*)right)->len, + (const qse_char_t**)&str); + if (str == ((qse_awk_val_str_t*)right)->buf + + ((qse_awk_val_str_t*)right)->len) { - if (((ase_awk_val_int_t*)left)->val > rr) return 1; - if (((ase_awk_val_int_t*)left)->val < rr) return -1; + if (((qse_awk_val_int_t*)left)->val > rr) return 1; + if (((qse_awk_val_int_t*)left)->val < rr) return -1; return 0; } } - str = ase_awk_valtostr ( - run, left, ASE_AWK_VALTOSTR_CLEAR, ASE_NULL, &len); - if (str == ASE_NULL) return CMP_ERROR; + str = qse_awk_valtostr ( + run, left, QSE_AWK_VALTOSTR_CLEAR, QSE_NULL, &len); + if (str == QSE_NULL) return CMP_ERROR; if (run->global.ignorecase) { - n = ase_strxncasecmp ( + n = qse_strxncasecmp ( str, len, - ((ase_awk_val_str_t*)right)->buf, - ((ase_awk_val_str_t*)right)->len, + ((qse_awk_val_str_t*)right)->buf, + ((qse_awk_val_str_t*)right)->len, CCLS(run)); } else { - n = ase_strxncmp ( + n = qse_strxncmp ( str, len, - ((ase_awk_val_str_t*)right)->buf, - ((ase_awk_val_str_t*)right)->len); + ((qse_awk_val_str_t*)right)->buf, + ((qse_awk_val_str_t*)right)->len); } - ASE_AWK_FREE (run->awk, str); + QSE_AWK_FREE (run->awk, str); return n; } static int __cmp_real_nil ( - ase_awk_run_t* run, ase_awk_val_t* left, ase_awk_val_t* right) + qse_awk_run_t* run, qse_awk_val_t* left, qse_awk_val_t* right) { - if (((ase_awk_val_real_t*)left)->val > 0) return 1; - if (((ase_awk_val_real_t*)left)->val < 0) return -1; + if (((qse_awk_val_real_t*)left)->val > 0) return 1; + if (((qse_awk_val_real_t*)left)->val < 0) return -1; return 0; } static int __cmp_real_int ( - ase_awk_run_t* run, ase_awk_val_t* left, ase_awk_val_t* right) + qse_awk_run_t* run, qse_awk_val_t* left, qse_awk_val_t* right) { - if (((ase_awk_val_real_t*)left)->val > - ((ase_awk_val_int_t*)right)->val) return 1; - if (((ase_awk_val_real_t*)left)->val < - ((ase_awk_val_int_t*)right)->val) return -1; + if (((qse_awk_val_real_t*)left)->val > + ((qse_awk_val_int_t*)right)->val) return 1; + if (((qse_awk_val_real_t*)left)->val < + ((qse_awk_val_int_t*)right)->val) return -1; return 0; } static int __cmp_real_real ( - ase_awk_run_t* run, ase_awk_val_t* left, ase_awk_val_t* right) + qse_awk_run_t* run, qse_awk_val_t* left, qse_awk_val_t* right) { - if (((ase_awk_val_real_t*)left)->val > - ((ase_awk_val_real_t*)right)->val) return 1; - if (((ase_awk_val_real_t*)left)->val < - ((ase_awk_val_real_t*)right)->val) return -1; + if (((qse_awk_val_real_t*)left)->val > + ((qse_awk_val_real_t*)right)->val) return 1; + if (((qse_awk_val_real_t*)left)->val < + ((qse_awk_val_real_t*)right)->val) return -1; return 0; } static int __cmp_real_str ( - ase_awk_run_t* run, ase_awk_val_t* left, ase_awk_val_t* right) + qse_awk_run_t* run, qse_awk_val_t* left, qse_awk_val_t* right) { - ase_char_t* str; - ase_size_t len; - ase_real_t rr; + qse_char_t* str; + qse_size_t len; + qse_real_t rr; int n; - rr = ase_awk_strxtoreal (run->awk, - ((ase_awk_val_str_t*)right)->buf, - ((ase_awk_val_str_t*)right)->len, - (const ase_char_t**)&str); - if (str == ((ase_awk_val_str_t*)right)->buf + - ((ase_awk_val_str_t*)right)->len) + rr = qse_awk_strxtoreal (run->awk, + ((qse_awk_val_str_t*)right)->buf, + ((qse_awk_val_str_t*)right)->len, + (const qse_char_t**)&str); + if (str == ((qse_awk_val_str_t*)right)->buf + + ((qse_awk_val_str_t*)right)->len) { - if (((ase_awk_val_real_t*)left)->val > rr) return 1; - if (((ase_awk_val_real_t*)left)->val < rr) return -1; + if (((qse_awk_val_real_t*)left)->val > rr) return 1; + if (((qse_awk_val_real_t*)left)->val < rr) return -1; return 0; } - str = ase_awk_valtostr ( - run, left, ASE_AWK_VALTOSTR_CLEAR, ASE_NULL, &len); - if (str == ASE_NULL) return CMP_ERROR; + str = qse_awk_valtostr ( + run, left, QSE_AWK_VALTOSTR_CLEAR, QSE_NULL, &len); + if (str == QSE_NULL) return CMP_ERROR; if (run->global.ignorecase) { - n = ase_strxncasecmp ( + n = qse_strxncasecmp ( str, len, - ((ase_awk_val_str_t*)right)->buf, - ((ase_awk_val_str_t*)right)->len, + ((qse_awk_val_str_t*)right)->buf, + ((qse_awk_val_str_t*)right)->len, CCLS(run)); } else { - n = ase_strxncmp ( + n = qse_strxncmp ( str, len, - ((ase_awk_val_str_t*)right)->buf, - ((ase_awk_val_str_t*)right)->len); + ((qse_awk_val_str_t*)right)->buf, + ((qse_awk_val_str_t*)right)->len); } - ASE_AWK_FREE (run->awk, str); + QSE_AWK_FREE (run->awk, str); return n; } static int __cmp_str_nil ( - ase_awk_run_t* run, ase_awk_val_t* left, ase_awk_val_t* right) + qse_awk_run_t* run, qse_awk_val_t* left, qse_awk_val_t* right) { - return (((ase_awk_val_str_t*)left)->len == 0)? 0: 1; + return (((qse_awk_val_str_t*)left)->len == 0)? 0: 1; } static int __cmp_str_int ( - ase_awk_run_t* run, ase_awk_val_t* left, ase_awk_val_t* right) + qse_awk_run_t* run, qse_awk_val_t* left, qse_awk_val_t* right) { return -__cmp_int_str (run, right, left); } static int __cmp_str_real ( - ase_awk_run_t* run, ase_awk_val_t* left, ase_awk_val_t* right) + qse_awk_run_t* run, qse_awk_val_t* left, qse_awk_val_t* right) { return -__cmp_real_str (run, right, left); } static int __cmp_str_str ( - ase_awk_run_t* run, ase_awk_val_t* left, ase_awk_val_t* right) + qse_awk_run_t* run, qse_awk_val_t* left, qse_awk_val_t* right) { int n; - ase_awk_val_str_t* ls, * rs; + qse_awk_val_str_t* ls, * rs; - ls = (ase_awk_val_str_t*)left; - rs = (ase_awk_val_str_t*)right; + ls = (qse_awk_val_str_t*)left; + rs = (qse_awk_val_str_t*)right; if (run->global.ignorecase) { - n = ase_strxncasecmp ( + n = qse_strxncasecmp ( ls->buf, ls->len, rs->buf, rs->len, CCLS(run)); } else { - n = ase_strxncmp ( + n = qse_strxncmp ( ls->buf, ls->len, rs->buf, rs->len); } @@ -4183,156 +4183,156 @@ static int __cmp_str_str ( } static int __cmp_val ( - ase_awk_run_t* run, ase_awk_val_t* left, ase_awk_val_t* right) + qse_awk_run_t* run, qse_awk_val_t* left, qse_awk_val_t* right) { - typedef int (*cmp_val_t) (ase_awk_run_t*, ase_awk_val_t*, ase_awk_val_t*); + typedef int (*cmp_val_t) (qse_awk_run_t*, qse_awk_val_t*, qse_awk_val_t*); static cmp_val_t func[] = { /* this table must be synchronized with - * the ASE_AWK_VAL_XXX values in awk.h */ + * the QSE_AWK_VAL_XXX values in awk.h */ __cmp_nil_nil, __cmp_nil_int, __cmp_nil_real, __cmp_nil_str, __cmp_int_nil, __cmp_int_int, __cmp_int_real, __cmp_int_str, __cmp_real_nil, __cmp_real_int, __cmp_real_real, __cmp_real_str, __cmp_str_nil, __cmp_str_int, __cmp_str_real, __cmp_str_str, }; - if (left->type == ASE_AWK_VAL_MAP || right->type == ASE_AWK_VAL_MAP) + if (left->type == QSE_AWK_VAL_MAP || right->type == QSE_AWK_VAL_MAP) { /* a map can't be compared againt other values */ - ase_awk_setrunerrnum (run, ASE_AWK_EOPERAND); + qse_awk_setrunerrnum (run, QSE_AWK_EOPERAND); return CMP_ERROR; } - ASE_ASSERT ( - left->type >= ASE_AWK_VAL_NIL && - left->type <= ASE_AWK_VAL_STR); - ASE_ASSERT ( - right->type >= ASE_AWK_VAL_NIL && - right->type <= ASE_AWK_VAL_STR); + QSE_ASSERT ( + left->type >= QSE_AWK_VAL_NIL && + left->type <= QSE_AWK_VAL_STR); + QSE_ASSERT ( + right->type >= QSE_AWK_VAL_NIL && + right->type <= QSE_AWK_VAL_STR); return func[left->type*4+right->type] (run, left, right); } -static ase_awk_val_t* eval_binop_eq ( - ase_awk_run_t* run, ase_awk_val_t* left, ase_awk_val_t* right) +static qse_awk_val_t* eval_binop_eq ( + qse_awk_run_t* run, qse_awk_val_t* left, qse_awk_val_t* right) { int n = __cmp_val (run, left, right); - if (n == CMP_ERROR) return ASE_NULL; - return (n == 0)? ase_awk_val_one: ase_awk_val_zero; + if (n == CMP_ERROR) return QSE_NULL; + return (n == 0)? qse_awk_val_one: qse_awk_val_zero; } -static ase_awk_val_t* eval_binop_ne ( - ase_awk_run_t* run, ase_awk_val_t* left, ase_awk_val_t* right) +static qse_awk_val_t* eval_binop_ne ( + qse_awk_run_t* run, qse_awk_val_t* left, qse_awk_val_t* right) { int n = __cmp_val (run, left, right); - if (n == CMP_ERROR) return ASE_NULL; - return (n != 0)? ase_awk_val_one: ase_awk_val_zero; + if (n == CMP_ERROR) return QSE_NULL; + return (n != 0)? qse_awk_val_one: qse_awk_val_zero; } -static ase_awk_val_t* eval_binop_gt ( - ase_awk_run_t* run, ase_awk_val_t* left, ase_awk_val_t* right) +static qse_awk_val_t* eval_binop_gt ( + qse_awk_run_t* run, qse_awk_val_t* left, qse_awk_val_t* right) { int n = __cmp_val (run, left, right); - if (n == CMP_ERROR) return ASE_NULL; - return (n > 0)? ase_awk_val_one: ase_awk_val_zero; + if (n == CMP_ERROR) return QSE_NULL; + return (n > 0)? qse_awk_val_one: qse_awk_val_zero; } -static ase_awk_val_t* eval_binop_ge ( - ase_awk_run_t* run, ase_awk_val_t* left, ase_awk_val_t* right) +static qse_awk_val_t* eval_binop_ge ( + qse_awk_run_t* run, qse_awk_val_t* left, qse_awk_val_t* right) { int n = __cmp_val (run, left, right); - if (n == CMP_ERROR) return ASE_NULL; - return (n >= 0)? ase_awk_val_one: ase_awk_val_zero; + if (n == CMP_ERROR) return QSE_NULL; + return (n >= 0)? qse_awk_val_one: qse_awk_val_zero; } -static ase_awk_val_t* eval_binop_lt ( - ase_awk_run_t* run, ase_awk_val_t* left, ase_awk_val_t* right) +static qse_awk_val_t* eval_binop_lt ( + qse_awk_run_t* run, qse_awk_val_t* left, qse_awk_val_t* right) { int n = __cmp_val (run, left, right); - if (n == CMP_ERROR) return ASE_NULL; - return (n < 0)? ase_awk_val_one: ase_awk_val_zero; + if (n == CMP_ERROR) return QSE_NULL; + return (n < 0)? qse_awk_val_one: qse_awk_val_zero; } -static ase_awk_val_t* eval_binop_le ( - ase_awk_run_t* run, ase_awk_val_t* left, ase_awk_val_t* right) +static qse_awk_val_t* eval_binop_le ( + qse_awk_run_t* run, qse_awk_val_t* left, qse_awk_val_t* right) { int n = __cmp_val (run, left, right); - if (n == CMP_ERROR) return ASE_NULL; - return (n <= 0)? ase_awk_val_one: ase_awk_val_zero; + if (n == CMP_ERROR) return QSE_NULL; + return (n <= 0)? qse_awk_val_one: qse_awk_val_zero; } -static ase_awk_val_t* eval_binop_lshift ( - ase_awk_run_t* run, ase_awk_val_t* left, ase_awk_val_t* right) +static qse_awk_val_t* eval_binop_lshift ( + qse_awk_run_t* run, qse_awk_val_t* left, qse_awk_val_t* right) { int n1, n2, n3; - ase_long_t l1, l2; - ase_real_t r1, r2; + qse_long_t l1, l2; + qse_real_t r1, r2; - n1 = ase_awk_valtonum (run, left, &l1, &r1); - n2 = ase_awk_valtonum (run, right, &l2, &r2); + n1 = qse_awk_valtonum (run, left, &l1, &r1); + n2 = qse_awk_valtonum (run, right, &l2, &r2); if (n1 == -1 || n2 == -1) { - ase_awk_setrunerrnum (run, ASE_AWK_EOPERAND); - return ASE_NULL; + qse_awk_setrunerrnum (run, QSE_AWK_EOPERAND); + return QSE_NULL; } n3 = n1 + (n2 << 1); if (n3 == 0) { - return ase_awk_makeintval (run, (ase_long_t)l1<<(ase_long_t)l2); + return qse_awk_makeintval (run, (qse_long_t)l1<<(qse_long_t)l2); } else { - ase_awk_setrunerrnum (run, ASE_AWK_EOPERAND); - return ASE_NULL; + qse_awk_setrunerrnum (run, QSE_AWK_EOPERAND); + return QSE_NULL; } } -static ase_awk_val_t* eval_binop_rshift ( - ase_awk_run_t* run, ase_awk_val_t* left, ase_awk_val_t* right) +static qse_awk_val_t* eval_binop_rshift ( + qse_awk_run_t* run, qse_awk_val_t* left, qse_awk_val_t* right) { int n1, n2, n3; - ase_long_t l1, l2; - ase_real_t r1, r2; + qse_long_t l1, l2; + qse_real_t r1, r2; - n1 = ase_awk_valtonum (run, left, &l1, &r1); - n2 = ase_awk_valtonum (run, right, &l2, &r2); + n1 = qse_awk_valtonum (run, left, &l1, &r1); + n2 = qse_awk_valtonum (run, right, &l2, &r2); if (n1 == -1 || n2 == -1) { - ase_awk_setrunerrnum (run, ASE_AWK_EOPERAND); - return ASE_NULL; + qse_awk_setrunerrnum (run, QSE_AWK_EOPERAND); + return QSE_NULL; } n3 = n1 + (n2 << 1); if (n3 == 0) { - return ase_awk_makeintval ( - run, (ase_long_t)l1>>(ase_long_t)l2); + return qse_awk_makeintval ( + run, (qse_long_t)l1>>(qse_long_t)l2); } else { - ase_awk_setrunerrnum (run, ASE_AWK_EOPERAND); - return ASE_NULL; + qse_awk_setrunerrnum (run, QSE_AWK_EOPERAND); + return QSE_NULL; } } -static ase_awk_val_t* eval_binop_plus ( - ase_awk_run_t* run, ase_awk_val_t* left, ase_awk_val_t* right) +static qse_awk_val_t* eval_binop_plus ( + qse_awk_run_t* run, qse_awk_val_t* left, qse_awk_val_t* right) { int n1, n2, n3; - ase_long_t l1, l2; - ase_real_t r1, r2; + qse_long_t l1, l2; + qse_real_t r1, r2; - n1 = ase_awk_valtonum (run, left, &l1, &r1); - n2 = ase_awk_valtonum (run, right, &l2, &r2); + n1 = qse_awk_valtonum (run, left, &l1, &r1); + n2 = qse_awk_valtonum (run, right, &l2, &r2); if (n1 == -1 || n2 == -1) { - ase_awk_setrunerrnum (run, ASE_AWK_EOPERAND); - return ASE_NULL; + qse_awk_setrunerrnum (run, QSE_AWK_EOPERAND); + return QSE_NULL; } /* n1 n2 n3 @@ -4342,77 +4342,77 @@ static ase_awk_val_t* eval_binop_plus ( 1 1 = 3 */ n3 = n1 + (n2 << 1); - ASE_ASSERT (n3 >= 0 && n3 <= 3); + QSE_ASSERT (n3 >= 0 && n3 <= 3); - return (n3 == 0)? ase_awk_makeintval(run,(ase_long_t)l1+(ase_long_t)l2): - (n3 == 1)? ase_awk_makerealval(run,(ase_real_t)r1+(ase_real_t)l2): - (n3 == 2)? ase_awk_makerealval(run,(ase_real_t)l1+(ase_real_t)r2): - ase_awk_makerealval(run,(ase_real_t)r1+(ase_real_t)r2); + return (n3 == 0)? qse_awk_makeintval(run,(qse_long_t)l1+(qse_long_t)l2): + (n3 == 1)? qse_awk_makerealval(run,(qse_real_t)r1+(qse_real_t)l2): + (n3 == 2)? qse_awk_makerealval(run,(qse_real_t)l1+(qse_real_t)r2): + qse_awk_makerealval(run,(qse_real_t)r1+(qse_real_t)r2); } -static ase_awk_val_t* eval_binop_minus ( - ase_awk_run_t* run, ase_awk_val_t* left, ase_awk_val_t* right) +static qse_awk_val_t* eval_binop_minus ( + qse_awk_run_t* run, qse_awk_val_t* left, qse_awk_val_t* right) { int n1, n2, n3; - ase_long_t l1, l2; - ase_real_t r1, r2; + qse_long_t l1, l2; + qse_real_t r1, r2; - n1 = ase_awk_valtonum (run, left, &l1, &r1); - n2 = ase_awk_valtonum (run, right, &l2, &r2); + n1 = qse_awk_valtonum (run, left, &l1, &r1); + n2 = qse_awk_valtonum (run, right, &l2, &r2); if (n1 == -1 || n2 == -1) { - ase_awk_setrunerrnum (run, ASE_AWK_EOPERAND); - return ASE_NULL; + qse_awk_setrunerrnum (run, QSE_AWK_EOPERAND); + return QSE_NULL; } n3 = n1 + (n2 << 1); - ASE_ASSERT (n3 >= 0 && n3 <= 3); - return (n3 == 0)? ase_awk_makeintval(run,(ase_long_t)l1-(ase_long_t)l2): - (n3 == 1)? ase_awk_makerealval(run,(ase_real_t)r1-(ase_real_t)l2): - (n3 == 2)? ase_awk_makerealval(run,(ase_real_t)l1-(ase_real_t)r2): - ase_awk_makerealval(run,(ase_real_t)r1-(ase_real_t)r2); + QSE_ASSERT (n3 >= 0 && n3 <= 3); + return (n3 == 0)? qse_awk_makeintval(run,(qse_long_t)l1-(qse_long_t)l2): + (n3 == 1)? qse_awk_makerealval(run,(qse_real_t)r1-(qse_real_t)l2): + (n3 == 2)? qse_awk_makerealval(run,(qse_real_t)l1-(qse_real_t)r2): + qse_awk_makerealval(run,(qse_real_t)r1-(qse_real_t)r2); } -static ase_awk_val_t* eval_binop_mul ( - ase_awk_run_t* run, ase_awk_val_t* left, ase_awk_val_t* right) +static qse_awk_val_t* eval_binop_mul ( + qse_awk_run_t* run, qse_awk_val_t* left, qse_awk_val_t* right) { int n1, n2, n3; - ase_long_t l1, l2; - ase_real_t r1, r2; + qse_long_t l1, l2; + qse_real_t r1, r2; - n1 = ase_awk_valtonum (run, left, &l1, &r1); - n2 = ase_awk_valtonum (run, right, &l2, &r2); + n1 = qse_awk_valtonum (run, left, &l1, &r1); + n2 = qse_awk_valtonum (run, right, &l2, &r2); if (n1 == -1 || n2 == -1) { - ase_awk_setrunerrnum (run, ASE_AWK_EOPERAND); - return ASE_NULL; + qse_awk_setrunerrnum (run, QSE_AWK_EOPERAND); + return QSE_NULL; } n3 = n1 + (n2 << 1); - ASE_ASSERT (n3 >= 0 && n3 <= 3); - return (n3 == 0)? ase_awk_makeintval(run,(ase_long_t)l1*(ase_long_t)l2): - (n3 == 1)? ase_awk_makerealval(run,(ase_real_t)r1*(ase_real_t)l2): - (n3 == 2)? ase_awk_makerealval(run,(ase_real_t)l1*(ase_real_t)r2): - ase_awk_makerealval(run,(ase_real_t)r1*(ase_real_t)r2); + QSE_ASSERT (n3 >= 0 && n3 <= 3); + return (n3 == 0)? qse_awk_makeintval(run,(qse_long_t)l1*(qse_long_t)l2): + (n3 == 1)? qse_awk_makerealval(run,(qse_real_t)r1*(qse_real_t)l2): + (n3 == 2)? qse_awk_makerealval(run,(qse_real_t)l1*(qse_real_t)r2): + qse_awk_makerealval(run,(qse_real_t)r1*(qse_real_t)r2); } -static ase_awk_val_t* eval_binop_div ( - ase_awk_run_t* run, ase_awk_val_t* left, ase_awk_val_t* right) +static qse_awk_val_t* eval_binop_div ( + qse_awk_run_t* run, qse_awk_val_t* left, qse_awk_val_t* right) { int n1, n2, n3; - ase_long_t l1, l2; - ase_real_t r1, r2; - ase_awk_val_t* res; + qse_long_t l1, l2; + qse_real_t r1, r2; + qse_awk_val_t* res; - n1 = ase_awk_valtonum (run, left, &l1, &r1); - n2 = ase_awk_valtonum (run, right, &l2, &r2); + n1 = qse_awk_valtonum (run, left, &l1, &r1); + n2 = qse_awk_valtonum (run, right, &l2, &r2); if (n1 == -1 || n2 == -1) { - ase_awk_setrunerrnum (run, ASE_AWK_EOPERAND); - return ASE_NULL; + qse_awk_setrunerrnum (run, QSE_AWK_EOPERAND); + return QSE_NULL; } n3 = n1 + (n2 << 1); @@ -4420,56 +4420,56 @@ static ase_awk_val_t* eval_binop_div ( { if (l2 == 0) { - ase_awk_setrunerrnum (run, ASE_AWK_EDIVBY0); - return ASE_NULL; + qse_awk_setrunerrnum (run, QSE_AWK_EDIVBY0); + return QSE_NULL; } - if (((ase_long_t)l1 % (ase_long_t)l2) == 0) + if (((qse_long_t)l1 % (qse_long_t)l2) == 0) { - res = ase_awk_makeintval ( - run, (ase_long_t)l1 / (ase_long_t)l2); + res = qse_awk_makeintval ( + run, (qse_long_t)l1 / (qse_long_t)l2); } else { - res = ase_awk_makerealval ( - run, (ase_real_t)l1 / (ase_real_t)l2); + res = qse_awk_makerealval ( + run, (qse_real_t)l1 / (qse_real_t)l2); } } else if (n3 == 1) { - res = ase_awk_makerealval ( - run, (ase_real_t)r1 / (ase_real_t)l2); + res = qse_awk_makerealval ( + run, (qse_real_t)r1 / (qse_real_t)l2); } else if (n3 == 2) { - res = ase_awk_makerealval ( - run, (ase_real_t)l1 / (ase_real_t)r2); + res = qse_awk_makerealval ( + run, (qse_real_t)l1 / (qse_real_t)r2); } else { - ASE_ASSERT (n3 == 3); - res = ase_awk_makerealval ( - run, (ase_real_t)r1 / (ase_real_t)r2); + QSE_ASSERT (n3 == 3); + res = qse_awk_makerealval ( + run, (qse_real_t)r1 / (qse_real_t)r2); } return res; } -static ase_awk_val_t* eval_binop_idiv ( - ase_awk_run_t* run, ase_awk_val_t* left, ase_awk_val_t* right) +static qse_awk_val_t* eval_binop_idiv ( + qse_awk_run_t* run, qse_awk_val_t* left, qse_awk_val_t* right) { int n1, n2, n3; - ase_long_t l1, l2; - ase_real_t r1, r2, quo; - ase_awk_val_t* res; + qse_long_t l1, l2; + qse_real_t r1, r2, quo; + qse_awk_val_t* res; - n1 = ase_awk_valtonum (run, left, &l1, &r1); - n2 = ase_awk_valtonum (run, right, &l2, &r2); + n1 = qse_awk_valtonum (run, left, &l1, &r1); + n2 = qse_awk_valtonum (run, right, &l2, &r2); if (n1 == -1 || n2 == -1) { - ase_awk_setrunerrnum (run, ASE_AWK_EOPERAND); - return ASE_NULL; + qse_awk_setrunerrnum (run, QSE_AWK_EOPERAND); + return QSE_NULL; } n3 = n1 + (n2 << 1); @@ -4477,48 +4477,48 @@ static ase_awk_val_t* eval_binop_idiv ( { if (l2 == 0) { - ase_awk_setrunerrnum (run, ASE_AWK_EDIVBY0); - return ASE_NULL; + qse_awk_setrunerrnum (run, QSE_AWK_EDIVBY0); + return QSE_NULL; } - res = ase_awk_makeintval ( - run, (ase_long_t)l1 / (ase_long_t)l2); + res = qse_awk_makeintval ( + run, (qse_long_t)l1 / (qse_long_t)l2); } else if (n3 == 1) { - quo = (ase_real_t)r1 / (ase_real_t)l2; - res = ase_awk_makeintval (run, (ase_long_t)quo); + quo = (qse_real_t)r1 / (qse_real_t)l2; + res = qse_awk_makeintval (run, (qse_long_t)quo); } else if (n3 == 2) { - quo = (ase_real_t)l1 / (ase_real_t)r2; - res = ase_awk_makeintval (run, (ase_long_t)quo); + quo = (qse_real_t)l1 / (qse_real_t)r2; + res = qse_awk_makeintval (run, (qse_long_t)quo); } else { - ASE_ASSERT (n3 == 3); + QSE_ASSERT (n3 == 3); - quo = (ase_real_t)r1 / (ase_real_t)r2; - res = ase_awk_makeintval (run, (ase_long_t)quo); + quo = (qse_real_t)r1 / (qse_real_t)r2; + res = qse_awk_makeintval (run, (qse_long_t)quo); } return res; } -static ase_awk_val_t* eval_binop_mod ( - ase_awk_run_t* run, ase_awk_val_t* left, ase_awk_val_t* right) +static qse_awk_val_t* eval_binop_mod ( + qse_awk_run_t* run, qse_awk_val_t* left, qse_awk_val_t* right) { int n1, n2, n3; - ase_long_t l1, l2; - ase_real_t r1, r2; - ase_awk_val_t* res; + qse_long_t l1, l2; + qse_real_t r1, r2; + qse_awk_val_t* res; - n1 = ase_awk_valtonum (run, left, &l1, &r1); - n2 = ase_awk_valtonum (run, right, &l2, &r2); + n1 = qse_awk_valtonum (run, left, &l1, &r1); + n2 = qse_awk_valtonum (run, right, &l2, &r2); if (n1 == -1 || n2 == -1) { - ase_awk_setrunerrnum (run, ASE_AWK_EOPERAND); - return ASE_NULL; + qse_awk_setrunerrnum (run, QSE_AWK_EOPERAND); + return QSE_NULL; } n3 = n1 + (n2 << 1); @@ -4526,39 +4526,39 @@ static ase_awk_val_t* eval_binop_mod ( { if (l2 == 0) { - ase_awk_setrunerrnum (run, ASE_AWK_EDIVBY0); - return ASE_NULL; + qse_awk_setrunerrnum (run, QSE_AWK_EDIVBY0); + return QSE_NULL; } - res = ase_awk_makeintval ( - run, (ase_long_t)l1 % (ase_long_t)l2); + res = qse_awk_makeintval ( + run, (qse_long_t)l1 % (qse_long_t)l2); } else { - ase_awk_setrunerrnum (run, ASE_AWK_EOPERAND); - return ASE_NULL; + qse_awk_setrunerrnum (run, QSE_AWK_EOPERAND); + return QSE_NULL; } return res; } -static ase_awk_val_t* eval_binop_exp ( - ase_awk_run_t* run, ase_awk_val_t* left, ase_awk_val_t* right) +static qse_awk_val_t* eval_binop_exp ( + qse_awk_run_t* run, qse_awk_val_t* left, qse_awk_val_t* right) { int n1, n2, n3; - ase_long_t l1, l2; - ase_real_t r1, r2; - ase_awk_val_t* res; + qse_long_t l1, l2; + qse_real_t r1, r2; + qse_awk_val_t* res; - ASE_ASSERTX (run->awk->prmfns->pow != ASE_NULL, + QSE_ASSERTX (run->awk->prmfns->pow != QSE_NULL, "the pow function should be provided when the awk object is created to make the exponentiation work properly."); - n1 = ase_awk_valtonum (run, left, &l1, &r1); - n2 = ase_awk_valtonum (run, right, &l2, &r2); + n1 = qse_awk_valtonum (run, left, &l1, &r1); + n2 = qse_awk_valtonum (run, right, &l2, &r2); if (n1 == -1 || n2 == -1) { - ase_awk_setrunerrnum (run, ASE_AWK_EOPERAND); - return ASE_NULL; + qse_awk_setrunerrnum (run, QSE_AWK_EOPERAND); + return QSE_NULL; } n3 = n1 + (n2 << 1); @@ -4567,21 +4567,21 @@ static ase_awk_val_t* eval_binop_exp ( /* left - int, right - int */ if (l2 >= 0) { - ase_long_t v = 1; + qse_long_t v = 1; while (l2-- > 0) v *= l1; - res = ase_awk_makeintval (run, v); + res = qse_awk_makeintval (run, v); } else if (l1 == 0) { - ase_awk_setrunerrnum (run, ASE_AWK_EDIVBY0); - return ASE_NULL; + qse_awk_setrunerrnum (run, QSE_AWK_EDIVBY0); + return QSE_NULL; } else { - ase_real_t v = 1.0; + qse_real_t v = 1.0; l2 *= -1; while (l2-- > 0) v /= l1; - res = ase_awk_makerealval (run, v); + res = qse_awk_makerealval (run, v); } } else if (n3 == 1) @@ -4589,859 +4589,859 @@ static ase_awk_val_t* eval_binop_exp ( /* left - real, right - int */ if (l2 >= 0) { - ase_real_t v = 1.0; + qse_real_t v = 1.0; while (l2-- > 0) v *= r1; - res = ase_awk_makerealval (run, v); + res = qse_awk_makerealval (run, v); } else if (r1 == 0.0) { - ase_awk_setrunerrnum (run, ASE_AWK_EDIVBY0); - return ASE_NULL; + qse_awk_setrunerrnum (run, QSE_AWK_EDIVBY0); + return QSE_NULL; } else { - ase_real_t v = 1.0; + qse_real_t v = 1.0; l2 *= -1; while (l2-- > 0) v /= r1; - res = ase_awk_makerealval (run, v); + res = qse_awk_makerealval (run, v); } } else if (n3 == 2) { /* left - int, right - real */ - res = ase_awk_makerealval (run, + res = qse_awk_makerealval (run, run->awk->prmfns->pow ( run->awk->prmfns->data, - (ase_real_t)l1,(ase_real_t)r2)); + (qse_real_t)l1,(qse_real_t)r2)); } else { /* left - real, right - real */ - ASE_ASSERT (n3 == 3); - res = ase_awk_makerealval (run, + QSE_ASSERT (n3 == 3); + res = qse_awk_makerealval (run, run->awk->prmfns->pow( run->awk->prmfns->data, - (ase_real_t)r1,(ase_real_t)r2)); + (qse_real_t)r1,(qse_real_t)r2)); } return res; } -static ase_awk_val_t* eval_binop_concat ( - ase_awk_run_t* run, ase_awk_val_t* left, ase_awk_val_t* right) +static qse_awk_val_t* eval_binop_concat ( + qse_awk_run_t* run, qse_awk_val_t* left, qse_awk_val_t* right) { - ase_char_t* strl, * strr; - ase_size_t strl_len, strr_len; - ase_awk_val_t* res; + qse_char_t* strl, * strr; + qse_size_t strl_len, strr_len; + qse_awk_val_t* res; - strl = ase_awk_valtostr ( - run, left, ASE_AWK_VALTOSTR_CLEAR, ASE_NULL, &strl_len); - if (strl == ASE_NULL) return ASE_NULL; + strl = qse_awk_valtostr ( + run, left, QSE_AWK_VALTOSTR_CLEAR, QSE_NULL, &strl_len); + if (strl == QSE_NULL) return QSE_NULL; - strr = ase_awk_valtostr ( - run, right, ASE_AWK_VALTOSTR_CLEAR, ASE_NULL, &strr_len); - if (strr == ASE_NULL) + strr = qse_awk_valtostr ( + run, right, QSE_AWK_VALTOSTR_CLEAR, QSE_NULL, &strr_len); + if (strr == QSE_NULL) { - ASE_AWK_FREE (run->awk, strl); - return ASE_NULL; + QSE_AWK_FREE (run->awk, strl); + return QSE_NULL; } - res = ase_awk_makestrval2 (run, strl, strl_len, strr, strr_len); + res = qse_awk_makestrval2 (run, strl, strl_len, strr, strr_len); - ASE_AWK_FREE (run->awk, strl); - ASE_AWK_FREE (run->awk, strr); + QSE_AWK_FREE (run->awk, strl); + QSE_AWK_FREE (run->awk, strr); return res; } -static ase_awk_val_t* eval_binop_ma ( - ase_awk_run_t* run, ase_awk_nde_t* left, ase_awk_nde_t* right) +static qse_awk_val_t* eval_binop_ma ( + qse_awk_run_t* run, qse_awk_nde_t* left, qse_awk_nde_t* right) { - ase_awk_val_t* lv, * rv, * res; + qse_awk_val_t* lv, * rv, * res; - ASE_ASSERT (left->next == ASE_NULL); - ASE_ASSERT (right->next == ASE_NULL); + QSE_ASSERT (left->next == QSE_NULL); + QSE_ASSERT (right->next == QSE_NULL); lv = eval_expression (run, left); - if (lv == ASE_NULL) return ASE_NULL; + if (lv == QSE_NULL) return QSE_NULL; - ase_awk_refupval (run, lv); + qse_awk_refupval (run, lv); rv = eval_expression0 (run, right); - if (rv == ASE_NULL) + if (rv == QSE_NULL) { - ase_awk_refdownval (run, lv); - return ASE_NULL; + qse_awk_refdownval (run, lv); + return QSE_NULL; } - ase_awk_refupval (run, rv); + qse_awk_refupval (run, rv); res = eval_binop_match0 (run, lv, rv, left->line, right->line, 1); - ase_awk_refdownval (run, rv); - ase_awk_refdownval (run, lv); + qse_awk_refdownval (run, rv); + qse_awk_refdownval (run, lv); return res; } -static ase_awk_val_t* eval_binop_nm ( - ase_awk_run_t* run, ase_awk_nde_t* left, ase_awk_nde_t* right) +static qse_awk_val_t* eval_binop_nm ( + qse_awk_run_t* run, qse_awk_nde_t* left, qse_awk_nde_t* right) { - ase_awk_val_t* lv, * rv, * res; + qse_awk_val_t* lv, * rv, * res; - ASE_ASSERT (left->next == ASE_NULL); - ASE_ASSERT (right->next == ASE_NULL); + QSE_ASSERT (left->next == QSE_NULL); + QSE_ASSERT (right->next == QSE_NULL); lv = eval_expression (run, left); - if (lv == ASE_NULL) return ASE_NULL; + if (lv == QSE_NULL) return QSE_NULL; - ase_awk_refupval (run, lv); + qse_awk_refupval (run, lv); rv = eval_expression0 (run, right); - if (rv == ASE_NULL) + if (rv == QSE_NULL) { - ase_awk_refdownval (run, lv); - return ASE_NULL; + qse_awk_refdownval (run, lv); + return QSE_NULL; } - ase_awk_refupval (run, rv); + qse_awk_refupval (run, rv); res = eval_binop_match0 ( run, lv, rv, left->line, right->line, 0); - ase_awk_refdownval (run, rv); - ase_awk_refdownval (run, lv); + qse_awk_refdownval (run, rv); + qse_awk_refdownval (run, lv); return res; } -static ase_awk_val_t* eval_binop_match0 ( - ase_awk_run_t* run, ase_awk_val_t* left, ase_awk_val_t* right, - ase_size_t lline, ase_size_t rline, int ret) +static qse_awk_val_t* eval_binop_match0 ( + qse_awk_run_t* run, qse_awk_val_t* left, qse_awk_val_t* right, + qse_size_t lline, qse_size_t rline, int ret) { - ase_awk_val_t* res; + qse_awk_val_t* res; int n, errnum; - ase_char_t* str; - ase_size_t len; + qse_char_t* str; + qse_size_t len; void* rex_code; - if (right->type == ASE_AWK_VAL_REX) + if (right->type == QSE_AWK_VAL_REX) { - rex_code = ((ase_awk_val_rex_t*)right)->code; + rex_code = ((qse_awk_val_rex_t*)right)->code; } - else if (right->type == ASE_AWK_VAL_STR) + else if (right->type == QSE_AWK_VAL_STR) { - rex_code = ASE_AWK_BUILDREX ( + rex_code = QSE_AWK_BUILDREX ( run->awk, - ((ase_awk_val_str_t*)right)->buf, - ((ase_awk_val_str_t*)right)->len, &errnum); - if (rex_code == ASE_NULL) + ((qse_awk_val_str_t*)right)->buf, + ((qse_awk_val_str_t*)right)->len, &errnum); + if (rex_code == QSE_NULL) { - ase_awk_setrunerror (run, errnum, rline, ASE_NULL, 0); - return ASE_NULL; + qse_awk_setrunerror (run, errnum, rline, QSE_NULL, 0); + return QSE_NULL; } } else { - str = ase_awk_valtostr ( - run, right, ASE_AWK_VALTOSTR_CLEAR, ASE_NULL, &len); - if (str == ASE_NULL) return ASE_NULL; + str = qse_awk_valtostr ( + run, right, QSE_AWK_VALTOSTR_CLEAR, QSE_NULL, &len); + if (str == QSE_NULL) return QSE_NULL; - rex_code = ASE_AWK_BUILDREX (run->awk, str, len, &errnum); - if (rex_code == ASE_NULL) + rex_code = QSE_AWK_BUILDREX (run->awk, str, len, &errnum); + if (rex_code == QSE_NULL) { - ASE_AWK_FREE (run->awk, str); + QSE_AWK_FREE (run->awk, str); - ase_awk_setrunerror (run, errnum, rline, ASE_NULL, 0); - return ASE_NULL; + qse_awk_setrunerror (run, errnum, rline, QSE_NULL, 0); + return QSE_NULL; } - ASE_AWK_FREE (run->awk, str); + QSE_AWK_FREE (run->awk, str); } - if (left->type == ASE_AWK_VAL_STR) + if (left->type == QSE_AWK_VAL_STR) { - n = ASE_AWK_MATCHREX ( + n = QSE_AWK_MATCHREX ( run->awk, rex_code, - ((run->global.ignorecase)? ASE_REX_IGNORECASE: 0), - ((ase_awk_val_str_t*)left)->buf, - ((ase_awk_val_str_t*)left)->len, - ASE_NULL, ASE_NULL, &errnum); + ((run->global.ignorecase)? QSE_REX_IGNORECASE: 0), + ((qse_awk_val_str_t*)left)->buf, + ((qse_awk_val_str_t*)left)->len, + QSE_NULL, QSE_NULL, &errnum); if (n == -1) { - if (right->type != ASE_AWK_VAL_REX) - ASE_AWK_FREE (run->awk, rex_code); + if (right->type != QSE_AWK_VAL_REX) + QSE_AWK_FREE (run->awk, rex_code); - ase_awk_setrunerror (run, errnum, lline, ASE_NULL, 0); - return ASE_NULL; + qse_awk_setrunerror (run, errnum, lline, QSE_NULL, 0); + return QSE_NULL; } - res = ase_awk_makeintval (run, (n == ret)); - if (res == ASE_NULL) + res = qse_awk_makeintval (run, (n == ret)); + if (res == QSE_NULL) { - if (right->type != ASE_AWK_VAL_REX) - ASE_AWK_FREE (run->awk, rex_code); + if (right->type != QSE_AWK_VAL_REX) + QSE_AWK_FREE (run->awk, rex_code); /* adjust error line */ run->errlin = lline; - return ASE_NULL; + return QSE_NULL; } } else { - str = ase_awk_valtostr ( - run, left, ASE_AWK_VALTOSTR_CLEAR, ASE_NULL, &len); - if (str == ASE_NULL) + str = qse_awk_valtostr ( + run, left, QSE_AWK_VALTOSTR_CLEAR, QSE_NULL, &len); + if (str == QSE_NULL) { - if (right->type != ASE_AWK_VAL_REX) - ASE_AWK_FREE (run->awk, rex_code); - return ASE_NULL; + if (right->type != QSE_AWK_VAL_REX) + QSE_AWK_FREE (run->awk, rex_code); + return QSE_NULL; } - n = ASE_AWK_MATCHREX ( + n = QSE_AWK_MATCHREX ( run->awk, rex_code, - ((run->global.ignorecase)? ASE_REX_IGNORECASE: 0), - str, len, ASE_NULL, ASE_NULL, &errnum); + ((run->global.ignorecase)? QSE_REX_IGNORECASE: 0), + str, len, QSE_NULL, QSE_NULL, &errnum); if (n == -1) { - ASE_AWK_FREE (run->awk, str); - if (right->type != ASE_AWK_VAL_REX) - ASE_AWK_FREE (run->awk, rex_code); + QSE_AWK_FREE (run->awk, str); + if (right->type != QSE_AWK_VAL_REX) + QSE_AWK_FREE (run->awk, rex_code); - ase_awk_setrunerror (run, errnum, lline, ASE_NULL, 0); - return ASE_NULL; + qse_awk_setrunerror (run, errnum, lline, QSE_NULL, 0); + return QSE_NULL; } - res = ase_awk_makeintval (run, (n == ret)); - if (res == ASE_NULL) + res = qse_awk_makeintval (run, (n == ret)); + if (res == QSE_NULL) { - ASE_AWK_FREE (run->awk, str); - if (right->type != ASE_AWK_VAL_REX) - ASE_AWK_FREE (run->awk, rex_code); + QSE_AWK_FREE (run->awk, str); + if (right->type != QSE_AWK_VAL_REX) + QSE_AWK_FREE (run->awk, rex_code); /* adjust error line */ run->errlin = lline; - return ASE_NULL; + return QSE_NULL; } - ASE_AWK_FREE (run->awk, str); + QSE_AWK_FREE (run->awk, str); } - if (right->type != ASE_AWK_VAL_REX) ASE_AWK_FREE (run->awk, rex_code); + if (right->type != QSE_AWK_VAL_REX) QSE_AWK_FREE (run->awk, rex_code); return res; } -static ase_awk_val_t* eval_unary (ase_awk_run_t* run, ase_awk_nde_t* nde) +static qse_awk_val_t* eval_unary (qse_awk_run_t* run, qse_awk_nde_t* nde) { - ase_awk_val_t* left, * res = ASE_NULL; - ase_awk_nde_exp_t* exp = (ase_awk_nde_exp_t*)nde; + qse_awk_val_t* left, * res = QSE_NULL; + qse_awk_nde_exp_t* exp = (qse_awk_nde_exp_t*)nde; int n; - ase_long_t l; - ase_real_t r; + qse_long_t l; + qse_real_t r; - ASE_ASSERT ( - exp->type == ASE_AWK_NDE_EXP_UNR); - ASE_ASSERT ( - exp->left != ASE_NULL && exp->right == ASE_NULL); - ASE_ASSERT ( - exp->opcode == ASE_AWK_UNROP_PLUS || - exp->opcode == ASE_AWK_UNROP_MINUS || - exp->opcode == ASE_AWK_UNROP_LNOT || - exp->opcode == ASE_AWK_UNROP_BNOT); + QSE_ASSERT ( + exp->type == QSE_AWK_NDE_EXP_UNR); + QSE_ASSERT ( + exp->left != QSE_NULL && exp->right == QSE_NULL); + QSE_ASSERT ( + exp->opcode == QSE_AWK_UNROP_PLUS || + exp->opcode == QSE_AWK_UNROP_MINUS || + exp->opcode == QSE_AWK_UNROP_LNOT || + exp->opcode == QSE_AWK_UNROP_BNOT); - ASE_ASSERT (exp->left->next == ASE_NULL); + QSE_ASSERT (exp->left->next == QSE_NULL); left = eval_expression (run, exp->left); - if (left == ASE_NULL) return ASE_NULL; + if (left == QSE_NULL) return QSE_NULL; - ase_awk_refupval (run, left); + qse_awk_refupval (run, left); - if (exp->opcode == ASE_AWK_UNROP_MINUS) + if (exp->opcode == QSE_AWK_UNROP_MINUS) { - n = ase_awk_valtonum (run, left, &l, &r); + n = qse_awk_valtonum (run, left, &l, &r); if (n == -1) goto exit_func; - res = (n == 0)? ase_awk_makeintval (run, -l): - ase_awk_makerealval (run, -r); + res = (n == 0)? qse_awk_makeintval (run, -l): + qse_awk_makerealval (run, -r); } - else if (exp->opcode == ASE_AWK_UNROP_LNOT) + else if (exp->opcode == QSE_AWK_UNROP_LNOT) { - if (left->type == ASE_AWK_VAL_STR) + if (left->type == QSE_AWK_VAL_STR) { - res = ase_awk_makeintval ( - run, !(((ase_awk_val_str_t*)left)->len > 0)); + res = qse_awk_makeintval ( + run, !(((qse_awk_val_str_t*)left)->len > 0)); } else { - n = ase_awk_valtonum (run, left, &l, &r); + n = qse_awk_valtonum (run, left, &l, &r); if (n == -1) goto exit_func; - res = (n == 0)? ase_awk_makeintval (run, !l): - ase_awk_makerealval (run, !r); + res = (n == 0)? qse_awk_makeintval (run, !l): + qse_awk_makerealval (run, !r); } } - else if (exp->opcode == ASE_AWK_UNROP_BNOT) + else if (exp->opcode == QSE_AWK_UNROP_BNOT) { - n = ase_awk_valtonum (run, left, &l, &r); + n = qse_awk_valtonum (run, left, &l, &r); if (n == -1) goto exit_func; - if (n == 1) l = (ase_long_t)r; - res = ase_awk_makeintval (run, ~l); + if (n == 1) l = (qse_long_t)r; + res = qse_awk_makeintval (run, ~l); } - else if (exp->opcode == ASE_AWK_UNROP_PLUS) + else if (exp->opcode == QSE_AWK_UNROP_PLUS) { - n = ase_awk_valtonum (run, left, &l, &r); + n = qse_awk_valtonum (run, left, &l, &r); if (n == -1) goto exit_func; - res = (n == 0)? ase_awk_makeintval (run, l): - ase_awk_makerealval (run, r); + res = (n == 0)? qse_awk_makeintval (run, l): + qse_awk_makerealval (run, r); } exit_func: - ase_awk_refdownval (run, left); - if (res == ASE_NULL) run->errlin = nde->line; + qse_awk_refdownval (run, left); + if (res == QSE_NULL) run->errlin = nde->line; return res; } -static ase_awk_val_t* eval_incpre (ase_awk_run_t* run, ase_awk_nde_t* nde) +static qse_awk_val_t* eval_incpre (qse_awk_run_t* run, qse_awk_nde_t* nde) { - ase_awk_val_t* left, * res; - ase_awk_nde_exp_t* exp = (ase_awk_nde_exp_t*)nde; + qse_awk_val_t* left, * res; + qse_awk_nde_exp_t* exp = (qse_awk_nde_exp_t*)nde; - ASE_ASSERT (exp->type == ASE_AWK_NDE_EXP_INCPRE); - ASE_ASSERT (exp->left != ASE_NULL && exp->right == ASE_NULL); + QSE_ASSERT (exp->type == QSE_AWK_NDE_EXP_INCPRE); + QSE_ASSERT (exp->left != QSE_NULL && exp->right == QSE_NULL); /* this way of checking if the l-value is assignable is * ugly as it is dependent of the values defined in tree.h. * but let's keep going this way for the time being. */ - if (exp->left->type < ASE_AWK_NDE_NAMED || - /*exp->left->type > ASE_AWK_NDE_ARGIDX) XXX */ - exp->left->type > ASE_AWK_NDE_POS) + if (exp->left->type < QSE_AWK_NDE_NAMED || + /*exp->left->type > QSE_AWK_NDE_ARGIDX) XXX */ + exp->left->type > QSE_AWK_NDE_POS) { - ase_awk_setrunerror ( - run, ASE_AWK_EOPERAND, nde->line, ASE_NULL, 0); - return ASE_NULL; + qse_awk_setrunerror ( + run, QSE_AWK_EOPERAND, nde->line, QSE_NULL, 0); + return QSE_NULL; } - ASE_ASSERT (exp->left->next == ASE_NULL); + QSE_ASSERT (exp->left->next == QSE_NULL); left = eval_expression (run, exp->left); - if (left == ASE_NULL) return ASE_NULL; + if (left == QSE_NULL) return QSE_NULL; - ase_awk_refupval (run, left); + qse_awk_refupval (run, left); - if (exp->opcode == ASE_AWK_INCOP_PLUS) + if (exp->opcode == QSE_AWK_INCOP_PLUS) { - if (left->type == ASE_AWK_VAL_INT) + if (left->type == QSE_AWK_VAL_INT) { - ase_long_t r = ((ase_awk_val_int_t*)left)->val; - res = ase_awk_makeintval (run, r + 1); - if (res == ASE_NULL) + qse_long_t r = ((qse_awk_val_int_t*)left)->val; + res = qse_awk_makeintval (run, r + 1); + if (res == QSE_NULL) { - ase_awk_refdownval (run, left); + qse_awk_refdownval (run, left); /* adjust error line */ run->errlin = nde->line; - return ASE_NULL; + return QSE_NULL; } } - else if (left->type == ASE_AWK_VAL_REAL) + else if (left->type == QSE_AWK_VAL_REAL) { - ase_real_t r = ((ase_awk_val_real_t*)left)->val; - res = ase_awk_makerealval (run, r + 1.0); - if (res == ASE_NULL) + qse_real_t r = ((qse_awk_val_real_t*)left)->val; + res = qse_awk_makerealval (run, r + 1.0); + if (res == QSE_NULL) { - ase_awk_refdownval (run, left); + qse_awk_refdownval (run, left); /* adjust error line */ run->errlin = nde->line; - return ASE_NULL; + return QSE_NULL; } } else { - ase_long_t v1; - ase_real_t v2; + qse_long_t v1; + qse_real_t v2; int n; - n = ase_awk_valtonum (run, left, &v1, &v2); + n = qse_awk_valtonum (run, left, &v1, &v2); if (n == -1) { - ase_awk_refdownval (run, left); + qse_awk_refdownval (run, left); /* - ase_awk_setrunerror ( - run, ASE_AWK_EOPERAND, nde->line, - ASE_NULL, 0); + qse_awk_setrunerror ( + run, QSE_AWK_EOPERAND, nde->line, + QSE_NULL, 0); */ run->errlin = nde->line; - return ASE_NULL; + return QSE_NULL; } if (n == 0) { - res = ase_awk_makeintval (run, v1 + 1); + res = qse_awk_makeintval (run, v1 + 1); } else /* if (n == 1) */ { - ASE_ASSERT (n == 1); - res = ase_awk_makerealval (run, v2 + 1.0); + QSE_ASSERT (n == 1); + res = qse_awk_makerealval (run, v2 + 1.0); } - if (res == ASE_NULL) + if (res == QSE_NULL) { - ase_awk_refdownval (run, left); + qse_awk_refdownval (run, left); /* adjust error line */ run->errlin = nde->line; - return ASE_NULL; + return QSE_NULL; } } } - else if (exp->opcode == ASE_AWK_INCOP_MINUS) + else if (exp->opcode == QSE_AWK_INCOP_MINUS) { - if (left->type == ASE_AWK_VAL_INT) + if (left->type == QSE_AWK_VAL_INT) { - ase_long_t r = ((ase_awk_val_int_t*)left)->val; - res = ase_awk_makeintval (run, r - 1); - if (res == ASE_NULL) + qse_long_t r = ((qse_awk_val_int_t*)left)->val; + res = qse_awk_makeintval (run, r - 1); + if (res == QSE_NULL) { - ase_awk_refdownval (run, left); + qse_awk_refdownval (run, left); /* adjust error line */ run->errlin = nde->line; - return ASE_NULL; + return QSE_NULL; } } - else if (left->type == ASE_AWK_VAL_REAL) + else if (left->type == QSE_AWK_VAL_REAL) { - ase_real_t r = ((ase_awk_val_real_t*)left)->val; - res = ase_awk_makerealval (run, r - 1.0); - if (res == ASE_NULL) + qse_real_t r = ((qse_awk_val_real_t*)left)->val; + res = qse_awk_makerealval (run, r - 1.0); + if (res == QSE_NULL) { - ase_awk_refdownval (run, left); + qse_awk_refdownval (run, left); /* adjust error line */ run->errlin = nde->line; - return ASE_NULL; + return QSE_NULL; } } else { - ase_long_t v1; - ase_real_t v2; + qse_long_t v1; + qse_real_t v2; int n; - n = ase_awk_valtonum (run, left, &v1, &v2); + n = qse_awk_valtonum (run, left, &v1, &v2); if (n == -1) { - ase_awk_refdownval (run, left); + qse_awk_refdownval (run, left); /* - ase_awk_setrunerror ( - run, ASE_AWK_EOPERAND, nde->line, - ASE_NULL, 0); + qse_awk_setrunerror ( + run, QSE_AWK_EOPERAND, nde->line, + QSE_NULL, 0); */ run->errlin = nde->line; - return ASE_NULL; + return QSE_NULL; } if (n == 0) { - res = ase_awk_makeintval (run, v1 - 1); + res = qse_awk_makeintval (run, v1 - 1); } else /* if (n == 1) */ { - ASE_ASSERT (n == 1); - res = ase_awk_makerealval (run, v2 - 1.0); + QSE_ASSERT (n == 1); + res = qse_awk_makerealval (run, v2 - 1.0); } - if (res == ASE_NULL) + if (res == QSE_NULL) { - ase_awk_refdownval (run, left); + qse_awk_refdownval (run, left); /* adjust error line */ run->errlin = nde->line; - return ASE_NULL; + return QSE_NULL; } } } else { - ASE_ASSERT ( + QSE_ASSERT ( !"should never happen - invalid opcode"); - ase_awk_refdownval (run, left); + qse_awk_refdownval (run, left); - ase_awk_setrunerror ( - run, ASE_AWK_EINTERN, nde->line, ASE_NULL, 0); - return ASE_NULL; + qse_awk_setrunerror ( + run, QSE_AWK_EINTERN, nde->line, QSE_NULL, 0); + return QSE_NULL; } - if (do_assignment (run, exp->left, res) == ASE_NULL) + if (do_assignment (run, exp->left, res) == QSE_NULL) { - ase_awk_refdownval (run, left); - return ASE_NULL; + qse_awk_refdownval (run, left); + return QSE_NULL; } - ase_awk_refdownval (run, left); + qse_awk_refdownval (run, left); return res; } -static ase_awk_val_t* eval_incpst (ase_awk_run_t* run, ase_awk_nde_t* nde) +static qse_awk_val_t* eval_incpst (qse_awk_run_t* run, qse_awk_nde_t* nde) { - ase_awk_val_t* left, * res, * res2; - ase_awk_nde_exp_t* exp = (ase_awk_nde_exp_t*)nde; + qse_awk_val_t* left, * res, * res2; + qse_awk_nde_exp_t* exp = (qse_awk_nde_exp_t*)nde; - ASE_ASSERT (exp->type == ASE_AWK_NDE_EXP_INCPST); - ASE_ASSERT (exp->left != ASE_NULL && exp->right == ASE_NULL); + QSE_ASSERT (exp->type == QSE_AWK_NDE_EXP_INCPST); + QSE_ASSERT (exp->left != QSE_NULL && exp->right == QSE_NULL); /* this way of checking if the l-value is assignable is * ugly as it is dependent of the values defined in tree.h. * but let's keep going this way for the time being. */ - if (exp->left->type < ASE_AWK_NDE_NAMED || - /*exp->left->type > ASE_AWK_NDE_ARGIDX) XXX */ - exp->left->type > ASE_AWK_NDE_POS) + if (exp->left->type < QSE_AWK_NDE_NAMED || + /*exp->left->type > QSE_AWK_NDE_ARGIDX) XXX */ + exp->left->type > QSE_AWK_NDE_POS) { - ase_awk_setrunerror ( - run, ASE_AWK_EOPERAND, nde->line, ASE_NULL, 0); - return ASE_NULL; + qse_awk_setrunerror ( + run, QSE_AWK_EOPERAND, nde->line, QSE_NULL, 0); + return QSE_NULL; } - ASE_ASSERT (exp->left->next == ASE_NULL); + QSE_ASSERT (exp->left->next == QSE_NULL); left = eval_expression (run, exp->left); - if (left == ASE_NULL) return ASE_NULL; + if (left == QSE_NULL) return QSE_NULL; - ase_awk_refupval (run, left); + qse_awk_refupval (run, left); - if (exp->opcode == ASE_AWK_INCOP_PLUS) + if (exp->opcode == QSE_AWK_INCOP_PLUS) { - if (left->type == ASE_AWK_VAL_INT) + if (left->type == QSE_AWK_VAL_INT) { - ase_long_t r = ((ase_awk_val_int_t*)left)->val; - res = ase_awk_makeintval (run, r); - if (res == ASE_NULL) + qse_long_t r = ((qse_awk_val_int_t*)left)->val; + res = qse_awk_makeintval (run, r); + if (res == QSE_NULL) { - ase_awk_refdownval (run, left); + qse_awk_refdownval (run, left); /* adjust error line */ run->errlin = nde->line; - return ASE_NULL; + return QSE_NULL; } - res2 = ase_awk_makeintval (run, r + 1); - if (res2 == ASE_NULL) + res2 = qse_awk_makeintval (run, r + 1); + if (res2 == QSE_NULL) { - ase_awk_refdownval (run, left); - ase_awk_freeval (run, res, ASE_TRUE); + qse_awk_refdownval (run, left); + qse_awk_freeval (run, res, QSE_TRUE); /* adjust error line */ run->errlin = nde->line; - return ASE_NULL; + return QSE_NULL; } } - else if (left->type == ASE_AWK_VAL_REAL) + else if (left->type == QSE_AWK_VAL_REAL) { - ase_real_t r = ((ase_awk_val_real_t*)left)->val; - res = ase_awk_makerealval (run, r); - if (res == ASE_NULL) + qse_real_t r = ((qse_awk_val_real_t*)left)->val; + res = qse_awk_makerealval (run, r); + if (res == QSE_NULL) { - ase_awk_refdownval (run, left); + qse_awk_refdownval (run, left); /* adjust error line */ run->errlin = nde->line; - return ASE_NULL; + return QSE_NULL; } - res2 = ase_awk_makerealval (run, r + 1.0); - if (res2 == ASE_NULL) + res2 = qse_awk_makerealval (run, r + 1.0); + if (res2 == QSE_NULL) { - ase_awk_refdownval (run, left); - ase_awk_freeval (run, res, ASE_TRUE); + qse_awk_refdownval (run, left); + qse_awk_freeval (run, res, QSE_TRUE); /* adjust error line */ run->errlin = nde->line; - return ASE_NULL; + return QSE_NULL; } } else { - ase_long_t v1; - ase_real_t v2; + qse_long_t v1; + qse_real_t v2; int n; - n = ase_awk_valtonum (run, left, &v1, &v2); + n = qse_awk_valtonum (run, left, &v1, &v2); if (n == -1) { - ase_awk_refdownval (run, left); + qse_awk_refdownval (run, left); /* - ase_awk_setrunerror ( - run, ASE_AWK_EOPERAND, nde->line, - ASE_NULL, 0); + qse_awk_setrunerror ( + run, QSE_AWK_EOPERAND, nde->line, + QSE_NULL, 0); */ run->errlin = nde->line; - return ASE_NULL; + return QSE_NULL; } if (n == 0) { - res = ase_awk_makeintval (run, v1); - if (res == ASE_NULL) + res = qse_awk_makeintval (run, v1); + if (res == QSE_NULL) { - ase_awk_refdownval (run, left); + qse_awk_refdownval (run, left); /* adjust error line */ run->errlin = nde->line; - return ASE_NULL; + return QSE_NULL; } - res2 = ase_awk_makeintval (run, v1 + 1); - if (res2 == ASE_NULL) + res2 = qse_awk_makeintval (run, v1 + 1); + if (res2 == QSE_NULL) { - ase_awk_refdownval (run, left); - ase_awk_freeval (run, res, ASE_TRUE); + qse_awk_refdownval (run, left); + qse_awk_freeval (run, res, QSE_TRUE); /* adjust error line */ run->errlin = nde->line; - return ASE_NULL; + return QSE_NULL; } } else /* if (n == 1) */ { - ASE_ASSERT (n == 1); - res = ase_awk_makerealval (run, v2); - if (res == ASE_NULL) + QSE_ASSERT (n == 1); + res = qse_awk_makerealval (run, v2); + if (res == QSE_NULL) { - ase_awk_refdownval (run, left); + qse_awk_refdownval (run, left); /* adjust error line */ run->errlin = nde->line; - return ASE_NULL; + return QSE_NULL; } - res2 = ase_awk_makerealval (run, v2 + 1.0); - if (res2 == ASE_NULL) + res2 = qse_awk_makerealval (run, v2 + 1.0); + if (res2 == QSE_NULL) { - ase_awk_refdownval (run, left); - ase_awk_freeval (run, res, ASE_TRUE); + qse_awk_refdownval (run, left); + qse_awk_freeval (run, res, QSE_TRUE); /* adjust error line */ run->errlin = nde->line; - return ASE_NULL; + return QSE_NULL; } } } } - else if (exp->opcode == ASE_AWK_INCOP_MINUS) + else if (exp->opcode == QSE_AWK_INCOP_MINUS) { - if (left->type == ASE_AWK_VAL_INT) + if (left->type == QSE_AWK_VAL_INT) { - ase_long_t r = ((ase_awk_val_int_t*)left)->val; - res = ase_awk_makeintval (run, r); - if (res == ASE_NULL) + qse_long_t r = ((qse_awk_val_int_t*)left)->val; + res = qse_awk_makeintval (run, r); + if (res == QSE_NULL) { - ase_awk_refdownval (run, left); + qse_awk_refdownval (run, left); /* adjust error line */ run->errlin = nde->line; - return ASE_NULL; + return QSE_NULL; } - res2 = ase_awk_makeintval (run, r - 1); - if (res2 == ASE_NULL) + res2 = qse_awk_makeintval (run, r - 1); + if (res2 == QSE_NULL) { - ase_awk_refdownval (run, left); - ase_awk_freeval (run, res, ASE_TRUE); + qse_awk_refdownval (run, left); + qse_awk_freeval (run, res, QSE_TRUE); /* adjust error line */ run->errlin = nde->line; - return ASE_NULL; + return QSE_NULL; } } - else if (left->type == ASE_AWK_VAL_REAL) + else if (left->type == QSE_AWK_VAL_REAL) { - ase_real_t r = ((ase_awk_val_real_t*)left)->val; - res = ase_awk_makerealval (run, r); - if (res == ASE_NULL) + qse_real_t r = ((qse_awk_val_real_t*)left)->val; + res = qse_awk_makerealval (run, r); + if (res == QSE_NULL) { - ase_awk_refdownval (run, left); + qse_awk_refdownval (run, left); /* adjust error line */ run->errlin = nde->line; - return ASE_NULL; + return QSE_NULL; } - res2 = ase_awk_makerealval (run, r - 1.0); - if (res2 == ASE_NULL) + res2 = qse_awk_makerealval (run, r - 1.0); + if (res2 == QSE_NULL) { - ase_awk_refdownval (run, left); - ase_awk_freeval (run, res, ASE_TRUE); + qse_awk_refdownval (run, left); + qse_awk_freeval (run, res, QSE_TRUE); /* adjust error line */ run->errlin = nde->line; - return ASE_NULL; + return QSE_NULL; } } else { - ase_long_t v1; - ase_real_t v2; + qse_long_t v1; + qse_real_t v2; int n; - n = ase_awk_valtonum (run, left, &v1, &v2); + n = qse_awk_valtonum (run, left, &v1, &v2); if (n == -1) { - ase_awk_refdownval (run, left); + qse_awk_refdownval (run, left); /* - ase_awk_setrunerror ( - run, ASE_AWK_EOPERAND, nde->line, - ASE_NULL, 0); + qse_awk_setrunerror ( + run, QSE_AWK_EOPERAND, nde->line, + QSE_NULL, 0); */ run->errlin = nde->line; - return ASE_NULL; + return QSE_NULL; } if (n == 0) { - res = ase_awk_makeintval (run, v1); - if (res == ASE_NULL) + res = qse_awk_makeintval (run, v1); + if (res == QSE_NULL) { - ase_awk_refdownval (run, left); + qse_awk_refdownval (run, left); /* adjust error line */ run->errlin = nde->line; - return ASE_NULL; + return QSE_NULL; } - res2 = ase_awk_makeintval (run, v1 - 1); - if (res2 == ASE_NULL) + res2 = qse_awk_makeintval (run, v1 - 1); + if (res2 == QSE_NULL) { - ase_awk_refdownval (run, left); - ase_awk_freeval (run, res, ASE_TRUE); + qse_awk_refdownval (run, left); + qse_awk_freeval (run, res, QSE_TRUE); /* adjust error line */ run->errlin = nde->line; - return ASE_NULL; + return QSE_NULL; } } else /* if (n == 1) */ { - ASE_ASSERT (n == 1); - res = ase_awk_makerealval (run, v2); - if (res == ASE_NULL) + QSE_ASSERT (n == 1); + res = qse_awk_makerealval (run, v2); + if (res == QSE_NULL) { - ase_awk_refdownval (run, left); + qse_awk_refdownval (run, left); /* adjust error line */ run->errlin = nde->line; - return ASE_NULL; + return QSE_NULL; } - res2 = ase_awk_makerealval (run, v2 - 1.0); - if (res2 == ASE_NULL) + res2 = qse_awk_makerealval (run, v2 - 1.0); + if (res2 == QSE_NULL) { - ase_awk_refdownval (run, left); - ase_awk_freeval (run, res, ASE_TRUE); + qse_awk_refdownval (run, left); + qse_awk_freeval (run, res, QSE_TRUE); /* adjust error line */ run->errlin = nde->line; - return ASE_NULL; + return QSE_NULL; } } } } else { - ASE_ASSERT ( + QSE_ASSERT ( !"should never happen - invalid opcode"); - ase_awk_refdownval (run, left); + qse_awk_refdownval (run, left); - ase_awk_setrunerror ( - run, ASE_AWK_EINTERN, nde->line, ASE_NULL, 0); - return ASE_NULL; + qse_awk_setrunerror ( + run, QSE_AWK_EINTERN, nde->line, QSE_NULL, 0); + return QSE_NULL; } - if (do_assignment (run, exp->left, res2) == ASE_NULL) + if (do_assignment (run, exp->left, res2) == QSE_NULL) { - ase_awk_refdownval (run, left); - return ASE_NULL; + qse_awk_refdownval (run, left); + return QSE_NULL; } - ase_awk_refdownval (run, left); + qse_awk_refdownval (run, left); return res; } -static ase_awk_val_t* eval_cnd (ase_awk_run_t* run, ase_awk_nde_t* nde) +static qse_awk_val_t* eval_cnd (qse_awk_run_t* run, qse_awk_nde_t* nde) { - ase_awk_val_t* tv, * v; - ase_awk_nde_cnd_t* cnd = (ase_awk_nde_cnd_t*)nde; + qse_awk_val_t* tv, * v; + qse_awk_nde_cnd_t* cnd = (qse_awk_nde_cnd_t*)nde; - ASE_ASSERT (cnd->test->next == ASE_NULL); + QSE_ASSERT (cnd->test->next == QSE_NULL); tv = eval_expression (run, cnd->test); - if (tv == ASE_NULL) return ASE_NULL; + if (tv == QSE_NULL) return QSE_NULL; - ase_awk_refupval (run, tv); + qse_awk_refupval (run, tv); - ASE_ASSERT ( - cnd->left->next == ASE_NULL && - cnd->right->next == ASE_NULL); - v = (ase_awk_valtobool (run, tv))? + QSE_ASSERT ( + cnd->left->next == QSE_NULL && + cnd->right->next == QSE_NULL); + v = (qse_awk_valtobool (run, tv))? eval_expression (run, cnd->left): eval_expression (run, cnd->right); - ase_awk_refdownval (run, tv); + qse_awk_refdownval (run, tv); return v; } -static ase_awk_val_t* eval_bfn (ase_awk_run_t* run, ase_awk_nde_t* nde) +static qse_awk_val_t* eval_bfn (qse_awk_run_t* run, qse_awk_nde_t* nde) { - ase_awk_nde_call_t* call = (ase_awk_nde_call_t*)nde; + qse_awk_nde_call_t* call = (qse_awk_nde_call_t*)nde; /* intrinsic function */ if (call->nargs < call->what.bfn.arg.min) { - ase_awk_setrunerror ( - run, ASE_AWK_EARGTF, nde->line, ASE_NULL, 0); - return ASE_NULL; + qse_awk_setrunerror ( + run, QSE_AWK_EARGTF, nde->line, QSE_NULL, 0); + return QSE_NULL; } if (call->nargs > call->what.bfn.arg.max) { - ase_awk_setrunerror ( - run, ASE_AWK_EARGTM, nde->line, ASE_NULL, 0); - return ASE_NULL; + qse_awk_setrunerror ( + run, QSE_AWK_EARGTM, nde->line, QSE_NULL, 0); + return QSE_NULL; } return eval_call ( run, nde, call->what.bfn.arg.spec, - ASE_NULL, ASE_NULL, ASE_NULL); + QSE_NULL, QSE_NULL, QSE_NULL); } -static ase_awk_val_t* eval_afn_intrinsic ( - ase_awk_run_t* run, ase_awk_nde_t* nde, void(*errhandler)(void*), void* eharg) +static qse_awk_val_t* eval_afn_intrinsic ( + qse_awk_run_t* run, qse_awk_nde_t* nde, void(*errhandler)(void*), void* eharg) { - ase_awk_nde_call_t* call = (ase_awk_nde_call_t*)nde; - ase_awk_afn_t* afn; - ase_map_pair_t* pair; + qse_awk_nde_call_t* call = (qse_awk_nde_call_t*)nde; + qse_awk_afn_t* afn; + qse_map_pair_t* pair; - pair = ase_map_search (run->awk->tree.afns, + pair = qse_map_search (run->awk->tree.afns, call->what.afn.name.ptr, call->what.afn.name.len); - if (pair == ASE_NULL) + if (pair == QSE_NULL) { - ase_cstr_t errarg; + qse_cstr_t errarg; errarg.ptr = call->what.afn.name.ptr; errarg.len = call->what.afn.name.len, - ase_awk_setrunerror (run, - ASE_AWK_EFNNONE, nde->line, &errarg, 1); - return ASE_NULL; + qse_awk_setrunerror (run, + QSE_AWK_EFNNONE, nde->line, &errarg, 1); + return QSE_NULL; } - afn = (ase_awk_afn_t*)ASE_MAP_VPTR(pair); - ASE_ASSERT (afn != ASE_NULL); + afn = (qse_awk_afn_t*)QSE_MAP_VPTR(pair); + QSE_ASSERT (afn != QSE_NULL); if (call->nargs > afn->nargs) { /* TODO: is this correct? what if i want to * allow arbitarary numbers of arguments? */ - ase_awk_setrunerror ( - run, ASE_AWK_EARGTM, nde->line, ASE_NULL, 0); - return ASE_NULL; + qse_awk_setrunerror ( + run, QSE_AWK_EARGTM, nde->line, QSE_NULL, 0); + return QSE_NULL; } - return eval_call (run, nde, ASE_NULL, afn, errhandler, eharg); + return eval_call (run, nde, QSE_NULL, afn, errhandler, eharg); } -static ase_awk_val_t* eval_afn (ase_awk_run_t* run, ase_awk_nde_t* nde) +static qse_awk_val_t* eval_afn (qse_awk_run_t* run, qse_awk_nde_t* nde) { - return eval_afn_intrinsic (run, nde, ASE_NULL, ASE_NULL); + return eval_afn_intrinsic (run, nde, QSE_NULL, QSE_NULL); } /* run->stack_base has not been set for this * stack frame. so the STACK_ARG macro cannot be used as in - * ase_awk_refdownval (run, STACK_ARG(run,nargs));*/ + * qse_awk_refdownval (run, STACK_ARG(run,nargs));*/ #define UNWIND_RUN_STACK(run,nargs) \ do { \ while ((nargs) > 0) \ { \ --(nargs); \ - ase_awk_refdownval ((run), \ + qse_awk_refdownval ((run), \ (run)->stack[(run)->stack_top-1]); \ __raw_pop (run); \ } \ @@ -5451,16 +5451,16 @@ static ase_awk_val_t* eval_afn (ase_awk_run_t* run, ase_awk_nde_t* nde) __raw_pop (run); /* prev stack back */ \ } while (0) -static ase_awk_val_t* eval_call ( - ase_awk_run_t* run, ase_awk_nde_t* nde, - const ase_char_t* bfn_arg_spec, ase_awk_afn_t* afn, +static qse_awk_val_t* eval_call ( + qse_awk_run_t* run, qse_awk_nde_t* nde, + const qse_char_t* bfn_arg_spec, qse_awk_afn_t* afn, void(*errhandler)(void*), void* eharg) { - ase_awk_nde_call_t* call = (ase_awk_nde_call_t*)nde; - ase_size_t saved_stack_top; - ase_size_t nargs, i; - ase_awk_nde_t* p; - ase_awk_val_t* v; + qse_awk_nde_call_t* call = (qse_awk_nde_call_t*)nde; + qse_size_t saved_stack_top; + qse_size_t nargs, i; + qse_awk_nde_t* p; + qse_awk_val_t* v; int n; /* @@ -5503,78 +5503,78 @@ static ase_awk_val_t* eval_call ( * --------------------- */ - ASE_ASSERT ( - ASE_SIZEOF(void*) >= ASE_SIZEOF(run->stack_top)); - ASE_ASSERT ( - ASE_SIZEOF(void*) >= ASE_SIZEOF(run->stack_base)); + QSE_ASSERT ( + QSE_SIZEOF(void*) >= QSE_SIZEOF(run->stack_top)); + QSE_ASSERT ( + QSE_SIZEOF(void*) >= QSE_SIZEOF(run->stack_base)); saved_stack_top = run->stack_top; #ifdef DEBUG_RUN - ase_dprintf (ASE_T("setting up function stack frame top=%ld base=%ld\n"), + qse_dprintf (QSE_T("setting up function stack frame top=%ld base=%ld\n"), (long)run->stack_top, (long)run->stack_base); #endif if (__raw_push(run,(void*)run->stack_base) == -1) { - ase_awk_setrunerror ( - run, ASE_AWK_ENOMEM, nde->line, ASE_NULL, 0); - return ASE_NULL; + qse_awk_setrunerror ( + run, QSE_AWK_ENOMEM, nde->line, QSE_NULL, 0); + return QSE_NULL; } if (__raw_push(run,(void*)saved_stack_top) == -1) { __raw_pop (run); - ase_awk_setrunerror ( - run, ASE_AWK_ENOMEM, nde->line, ASE_NULL, 0); - return ASE_NULL; + qse_awk_setrunerror ( + run, QSE_AWK_ENOMEM, nde->line, QSE_NULL, 0); + return QSE_NULL; } /* secure space for a return value. */ - if (__raw_push(run,ase_awk_val_nil) == -1) + if (__raw_push(run,qse_awk_val_nil) == -1) { __raw_pop (run); __raw_pop (run); - ase_awk_setrunerror ( - run, ASE_AWK_ENOMEM, nde->line, ASE_NULL, 0); - return ASE_NULL; + qse_awk_setrunerror ( + run, QSE_AWK_ENOMEM, nde->line, QSE_NULL, 0); + return QSE_NULL; } /* secure space for nargs */ - if (__raw_push(run,ase_awk_val_nil) == -1) + if (__raw_push(run,qse_awk_val_nil) == -1) { __raw_pop (run); __raw_pop (run); __raw_pop (run); - ase_awk_setrunerror ( - run, ASE_AWK_ENOMEM, nde->line, ASE_NULL, 0); - return ASE_NULL; + qse_awk_setrunerror ( + run, QSE_AWK_ENOMEM, nde->line, QSE_NULL, 0); + return QSE_NULL; } - for (p = call->args, nargs = 0; p != ASE_NULL; p = p->next, nargs++) + for (p = call->args, nargs = 0; p != QSE_NULL; p = p->next, nargs++) { - ASE_ASSERT ( - bfn_arg_spec == ASE_NULL || - (bfn_arg_spec != ASE_NULL && - ase_strlen(bfn_arg_spec) > nargs)); + QSE_ASSERT ( + bfn_arg_spec == QSE_NULL || + (bfn_arg_spec != QSE_NULL && + qse_strlen(bfn_arg_spec) > nargs)); - if (bfn_arg_spec != ASE_NULL && - bfn_arg_spec[nargs] == ASE_T('r')) + if (bfn_arg_spec != QSE_NULL && + bfn_arg_spec[nargs] == QSE_T('r')) { - ase_awk_val_t** ref; + qse_awk_val_t** ref; if (get_reference (run, p, &ref) == -1) { UNWIND_RUN_STACK (run, nargs); - return ASE_NULL; + return QSE_NULL; } - /* p->type-ASE_AWK_NDE_NAMED assumes that the - * derived value matches ASE_AWK_VAL_REF_XXX */ - v = ase_awk_makerefval ( - run, p->type-ASE_AWK_NDE_NAMED, ref); + /* p->type-QSE_AWK_NDE_NAMED assumes that the + * derived value matches QSE_AWK_VAL_REF_XXX */ + v = qse_awk_makerefval ( + run, p->type-QSE_AWK_NDE_NAMED, ref); } - else if (bfn_arg_spec != ASE_NULL && - bfn_arg_spec[nargs] == ASE_T('x')) + else if (bfn_arg_spec != QSE_NULL && + bfn_arg_spec[nargs] == QSE_T('x')) { /* a regular expression is passed to * the function as it is */ @@ -5584,10 +5584,10 @@ static ase_awk_val_t* eval_call ( { v = eval_expression (run, p); } - if (v == ASE_NULL) + if (v == QSE_NULL) { UNWIND_RUN_STACK (run, nargs); - return ASE_NULL; + return QSE_NULL; } if (__raw_push(run,v) == -1) @@ -5597,35 +5597,35 @@ static ase_awk_val_t* eval_call ( * updated yet as it is carried out after the * successful stack push. so it adds up a reference * and dereferences it */ - ase_awk_refupval (run, v); - ase_awk_refdownval (run, v); + qse_awk_refupval (run, v); + qse_awk_refdownval (run, v); UNWIND_RUN_STACK (run, nargs); - ase_awk_setrunerror ( - run, ASE_AWK_ENOMEM, nde->line, ASE_NULL, 0); - return ASE_NULL; + qse_awk_setrunerror ( + run, QSE_AWK_ENOMEM, nde->line, QSE_NULL, 0); + return QSE_NULL; } - ase_awk_refupval (run, v); + qse_awk_refupval (run, v); /*nargs++; p = p->next;*/ } - ASE_ASSERT (nargs == call->nargs); + QSE_ASSERT (nargs == call->nargs); - if (afn != ASE_NULL) + if (afn != QSE_NULL) { /* extra step for normal awk functions */ while (nargs < afn->nargs) { /* push as many nils as the number of missing actual arguments */ - if (__raw_push(run,ase_awk_val_nil) == -1) + if (__raw_push(run,qse_awk_val_nil) == -1) { UNWIND_RUN_STACK (run, nargs); - ase_awk_setrunerror ( - run, ASE_AWK_ENOMEM, nde->line, - ASE_NULL, 0); - return ASE_NULL; + qse_awk_setrunerror ( + run, QSE_AWK_ENOMEM, nde->line, + QSE_NULL, 0); + return QSE_NULL; } nargs++; @@ -5636,31 +5636,31 @@ static ase_awk_val_t* eval_call ( STACK_NARGS(run) = (void*)nargs; #ifdef DEBUG_RUN - ase_dprintf (ASE_T("running function body\n")); + qse_dprintf (QSE_T("running function body\n")); #endif - if (afn != ASE_NULL) + if (afn != QSE_NULL) { /* normal awk function */ - ASE_ASSERT (afn->body->type == ASE_AWK_NDE_BLK); - n = run_block(run,(ase_awk_nde_blk_t*)afn->body); + QSE_ASSERT (afn->body->type == QSE_AWK_NDE_BLK); + n = run_block(run,(qse_awk_nde_blk_t*)afn->body); } else { n = 0; /* intrinsic function */ - ASE_ASSERT ( + QSE_ASSERT ( call->nargs >= call->what.bfn.arg.min && call->nargs <= call->what.bfn.arg.max); - if (call->what.bfn.handler != ASE_NULL) + if (call->what.bfn.handler != QSE_NULL) { - run->errnum = ASE_AWK_ENOERR; + run->errnum = QSE_AWK_ENOERR; /* NOTE: oname is used when the handler is invoked. * name might be differnt from oname if - * ase_awk_setword has been used */ + * qse_awk_setword has been used */ n = call->what.bfn.handler ( run, call->what.bfn.oname.ptr, @@ -5668,13 +5668,13 @@ static ase_awk_val_t* eval_call ( if (n <= -1) { - if (run->errnum == ASE_AWK_ENOERR) + if (run->errnum == QSE_AWK_ENOERR) { /* the handler has not set the error. * fix it */ - ase_awk_setrunerror ( - run, ASE_AWK_EBFNIMPL, - nde->line, ASE_NULL, 0); + qse_awk_setrunerror ( + run, QSE_AWK_EBFNIMPL, + nde->line, QSE_NULL, 0); } else { @@ -5689,23 +5689,23 @@ static ase_awk_val_t* eval_call ( } /* refdown args in the run.stack */ - nargs = (ase_size_t)STACK_NARGS(run); + nargs = (qse_size_t)STACK_NARGS(run); #ifdef DEBUG_RUN - ase_dprintf (ASE_T("block run complete nargs = %d\n"), (int)nargs); + qse_dprintf (QSE_T("block run complete nargs = %d\n"), (int)nargs); #endif for (i = 0; i < nargs; i++) { - ase_awk_refdownval (run, STACK_ARG(run,i)); + qse_awk_refdownval (run, STACK_ARG(run,i)); } #ifdef DEBUG_RUN - ase_dprintf (ASE_T("got return value\n")); + qse_dprintf (QSE_T("got return value\n")); #endif v = STACK_RETVAL(run); if (n == -1) { - if (errhandler != ASE_NULL) + if (errhandler != QSE_NULL) { /* capture_retval_on_exit takes advantage of * this handler to retrieve the return value @@ -5716,8 +5716,8 @@ static ase_awk_val_t* eval_call ( /* if the earlier operations failed and this function * has to return a error, the return value is just * destroyed and replaced by nil */ - ase_awk_refdownval (run, v); - STACK_RETVAL(run) = ase_awk_val_nil; + qse_awk_refdownval (run, v); + STACK_RETVAL(run) = qse_awk_val_nil; } else { @@ -5725,516 +5725,516 @@ static ase_awk_val_t* eval_call ( * adjust the reference count of the return value. * the value must not be freed even if the reference count * reached zero because its reference has been incremented - * in run_return or directly by ase_awk_setretval + * in run_return or directly by qse_awk_setretval * regardless of its reference count. */ - ase_awk_refdownval_nofree (run, v); + qse_awk_refdownval_nofree (run, v); } - run->stack_top = (ase_size_t)run->stack[run->stack_base+1]; - run->stack_base = (ase_size_t)run->stack[run->stack_base+0]; + run->stack_top = (qse_size_t)run->stack[run->stack_base+1]; + run->stack_base = (qse_size_t)run->stack[run->stack_base+0]; if (run->exit_level == EXIT_FUNCTION) run->exit_level = EXIT_NONE; #ifdef DEBUG_RUN - ase_dprintf (ASE_T("returning from function top=%ld, base=%ld\n"), + qse_dprintf (QSE_T("returning from function top=%ld, base=%ld\n"), (long)run->stack_top, (long)run->stack_base); #endif - return (n == -1)? ASE_NULL: v; + return (n == -1)? QSE_NULL: v; } static int get_reference ( - ase_awk_run_t* run, ase_awk_nde_t* nde, ase_awk_val_t*** ref) + qse_awk_run_t* run, qse_awk_nde_t* nde, qse_awk_val_t*** ref) { - ase_awk_nde_var_t* tgt = (ase_awk_nde_var_t*)nde; - ase_awk_val_t** tmp; + qse_awk_nde_var_t* tgt = (qse_awk_nde_var_t*)nde; + qse_awk_val_t** tmp; /* refer to eval_indexed for application of a similar concept */ - if (nde->type == ASE_AWK_NDE_NAMED) + if (nde->type == QSE_AWK_NDE_NAMED) { - ase_map_pair_t* pair; + qse_map_pair_t* pair; - pair = ase_map_search ( + pair = qse_map_search ( run->named, tgt->id.name.ptr, tgt->id.name.len); - if (pair == ASE_NULL) + if (pair == QSE_NULL) { /* it is bad that the named variable has to be * created in the function named "__get_refernce". * would there be any better ways to avoid this? */ - pair = ase_map_upsert ( + pair = qse_map_upsert ( run->named, tgt->id.name.ptr, - tgt->id.name.len, ase_awk_val_nil, 0); - if (pair == ASE_NULL) + tgt->id.name.len, qse_awk_val_nil, 0); + if (pair == QSE_NULL) { - ase_awk_setrunerror ( - run, ASE_AWK_ENOMEM, nde->line, - ASE_NULL, 0); + qse_awk_setrunerror ( + run, QSE_AWK_ENOMEM, nde->line, + QSE_NULL, 0); return -1; } } - *ref = (ase_awk_val_t**)&ASE_MAP_VPTR(pair); + *ref = (qse_awk_val_t**)&QSE_MAP_VPTR(pair); return 0; } - if (nde->type == ASE_AWK_NDE_GLOBAL) + if (nde->type == QSE_AWK_NDE_GLOBAL) { - *ref = (ase_awk_val_t**)&STACK_GLOBAL(run,tgt->id.idxa); + *ref = (qse_awk_val_t**)&STACK_GLOBAL(run,tgt->id.idxa); return 0; } - if (nde->type == ASE_AWK_NDE_LOCAL) + if (nde->type == QSE_AWK_NDE_LOCAL) { - *ref = (ase_awk_val_t**)&STACK_LOCAL(run,tgt->id.idxa); + *ref = (qse_awk_val_t**)&STACK_LOCAL(run,tgt->id.idxa); return 0; } - if (nde->type == ASE_AWK_NDE_ARG) + if (nde->type == QSE_AWK_NDE_ARG) { - *ref = (ase_awk_val_t**)&STACK_ARG(run,tgt->id.idxa); + *ref = (qse_awk_val_t**)&STACK_ARG(run,tgt->id.idxa); return 0; } - if (nde->type == ASE_AWK_NDE_NAMEDIDX) + if (nde->type == QSE_AWK_NDE_NAMEDIDX) { - ase_map_pair_t* pair; + qse_map_pair_t* pair; - pair = ase_map_search ( + pair = qse_map_search ( run->named, tgt->id.name.ptr, tgt->id.name.len); - if (pair == ASE_NULL) + if (pair == QSE_NULL) { - pair = ase_map_upsert ( + pair = qse_map_upsert ( run->named, tgt->id.name.ptr, - tgt->id.name.len, ase_awk_val_nil, 0); - if (pair == ASE_NULL) + tgt->id.name.len, qse_awk_val_nil, 0); + if (pair == QSE_NULL) { - ase_awk_setrunerror ( - run, ASE_AWK_ENOMEM, nde->line, - ASE_NULL, 0); + qse_awk_setrunerror ( + run, QSE_AWK_ENOMEM, nde->line, + QSE_NULL, 0); return -1; } } tmp = get_reference_indexed ( - run, tgt, (ase_awk_val_t**)&ASE_MAP_VPTR(pair)); - if (tmp == ASE_NULL) return -1; + run, tgt, (qse_awk_val_t**)&QSE_MAP_VPTR(pair)); + if (tmp == QSE_NULL) return -1; *ref = tmp; } - if (nde->type == ASE_AWK_NDE_GLOBALIDX) + if (nde->type == QSE_AWK_NDE_GLOBALIDX) { tmp = get_reference_indexed (run, tgt, - (ase_awk_val_t**)&STACK_GLOBAL(run,tgt->id.idxa)); - if (tmp == ASE_NULL) return -1; + (qse_awk_val_t**)&STACK_GLOBAL(run,tgt->id.idxa)); + if (tmp == QSE_NULL) return -1; *ref = tmp; } - if (nde->type == ASE_AWK_NDE_LOCALIDX) + if (nde->type == QSE_AWK_NDE_LOCALIDX) { tmp = get_reference_indexed (run, tgt, - (ase_awk_val_t**)&STACK_LOCAL(run,tgt->id.idxa)); - if (tmp == ASE_NULL) return -1; + (qse_awk_val_t**)&STACK_LOCAL(run,tgt->id.idxa)); + if (tmp == QSE_NULL) return -1; *ref = tmp; } - if (nde->type == ASE_AWK_NDE_ARGIDX) + if (nde->type == QSE_AWK_NDE_ARGIDX) { tmp = get_reference_indexed (run, tgt, - (ase_awk_val_t**)&STACK_ARG(run,tgt->id.idxa)); - if (tmp == ASE_NULL) return -1; + (qse_awk_val_t**)&STACK_ARG(run,tgt->id.idxa)); + if (tmp == QSE_NULL) return -1; *ref = tmp; } - if (nde->type == ASE_AWK_NDE_POS) + if (nde->type == QSE_AWK_NDE_POS) { int n; - ase_long_t lv; - ase_real_t rv; - ase_awk_val_t* v; + qse_long_t lv; + qse_real_t rv; + qse_awk_val_t* v; /* the position number is returned for the positional * variable unlike other reference types. */ - v = eval_expression (run, ((ase_awk_nde_pos_t*)nde)->val); - if (v == ASE_NULL) return -1; + v = eval_expression (run, ((qse_awk_nde_pos_t*)nde)->val); + if (v == QSE_NULL) return -1; - ase_awk_refupval (run, v); - n = ase_awk_valtonum (run, v, &lv, &rv); - ase_awk_refdownval (run, v); + qse_awk_refupval (run, v); + n = qse_awk_valtonum (run, v, &lv, &rv); + qse_awk_refdownval (run, v); if (n == -1) { - ase_awk_setrunerror ( - run, ASE_AWK_EPOSIDX, nde->line, ASE_NULL, 0); + qse_awk_setrunerror ( + run, QSE_AWK_EPOSIDX, nde->line, QSE_NULL, 0); return -1; } - if (n == 1) lv = (ase_long_t)rv; + if (n == 1) lv = (qse_long_t)rv; if (!IS_VALID_POSIDX(lv)) { - ase_awk_setrunerror ( - run, ASE_AWK_EPOSIDX, nde->line, ASE_NULL, 0); + qse_awk_setrunerror ( + run, QSE_AWK_EPOSIDX, nde->line, QSE_NULL, 0); return -1; } - *ref = (ase_awk_val_t**)((ase_size_t)lv); + *ref = (qse_awk_val_t**)((qse_size_t)lv); return 0; } - ase_awk_setrunerror (run, ASE_AWK_ENOTREF, nde->line, ASE_NULL, 0); + qse_awk_setrunerror (run, QSE_AWK_ENOTREF, nde->line, QSE_NULL, 0); return -1; } -static ase_awk_val_t** get_reference_indexed ( - ase_awk_run_t* run, ase_awk_nde_var_t* nde, ase_awk_val_t** val) +static qse_awk_val_t** get_reference_indexed ( + qse_awk_run_t* run, qse_awk_nde_var_t* nde, qse_awk_val_t** val) { - ase_map_pair_t* pair; - ase_char_t* str; - ase_size_t len; - ase_char_t idxbuf[IDXBUFSIZE]; + qse_map_pair_t* pair; + qse_char_t* str; + qse_size_t len; + qse_char_t idxbuf[IDXBUFSIZE]; - ASE_ASSERT (val != ASE_NULL); + QSE_ASSERT (val != QSE_NULL); - if ((*val)->type == ASE_AWK_VAL_NIL) + if ((*val)->type == QSE_AWK_VAL_NIL) { - ase_awk_val_t* tmp; + qse_awk_val_t* tmp; - tmp = ase_awk_makemapval (run); - if (tmp == ASE_NULL) + tmp = qse_awk_makemapval (run); + if (tmp == QSE_NULL) { run->errlin = nde->line; - return ASE_NULL; + return QSE_NULL; } - ase_awk_refdownval (run, *val); + qse_awk_refdownval (run, *val); *val = tmp; - ase_awk_refupval (run, (ase_awk_val_t*)*val); + qse_awk_refupval (run, (qse_awk_val_t*)*val); } - else if ((*val)->type != ASE_AWK_VAL_MAP) + else if ((*val)->type != QSE_AWK_VAL_MAP) { - ase_awk_setrunerror ( - run, ASE_AWK_ENOTMAP, nde->line, ASE_NULL, 0); - return ASE_NULL; + qse_awk_setrunerror ( + run, QSE_AWK_ENOTMAP, nde->line, QSE_NULL, 0); + return QSE_NULL; } - ASE_ASSERT (nde->idx != ASE_NULL); + QSE_ASSERT (nde->idx != QSE_NULL); - len = ASE_COUNTOF(idxbuf); + len = QSE_COUNTOF(idxbuf); str = idxnde_to_str (run, nde->idx, idxbuf, &len); - if (str == ASE_NULL) + if (str == QSE_NULL) { - str = idxnde_to_str (run, nde->idx, ASE_NULL, &len); - if (str == ASE_NULL) return ASE_NULL; + str = idxnde_to_str (run, nde->idx, QSE_NULL, &len); + if (str == QSE_NULL) return QSE_NULL; } - pair = ase_map_search ((*(ase_awk_val_map_t**)val)->map, str, len); - if (pair == ASE_NULL) + pair = qse_map_search ((*(qse_awk_val_map_t**)val)->map, str, len); + if (pair == QSE_NULL) { - pair = ase_map_upsert ( - (*(ase_awk_val_map_t**)val)->map, - str, len, ase_awk_val_nil, 0); - if (pair == ASE_NULL) + pair = qse_map_upsert ( + (*(qse_awk_val_map_t**)val)->map, + str, len, qse_awk_val_nil, 0); + if (pair == QSE_NULL) { - if (str != idxbuf) ASE_AWK_FREE (run->awk, str); - ase_awk_setrunerror ( - run, ASE_AWK_ENOMEM, nde->line, ASE_NULL, 0); - return ASE_NULL; + if (str != idxbuf) QSE_AWK_FREE (run->awk, str); + qse_awk_setrunerror ( + run, QSE_AWK_ENOMEM, nde->line, QSE_NULL, 0); + return QSE_NULL; } - ase_awk_refupval (run, ASE_MAP_VPTR(pair)); + qse_awk_refupval (run, QSE_MAP_VPTR(pair)); } - if (str != idxbuf) ASE_AWK_FREE (run->awk, str); - return (ase_awk_val_t**)&ASE_MAP_VPTR(pair); + if (str != idxbuf) QSE_AWK_FREE (run->awk, str); + return (qse_awk_val_t**)&QSE_MAP_VPTR(pair); } -static ase_awk_val_t* eval_int (ase_awk_run_t* run, ase_awk_nde_t* nde) +static qse_awk_val_t* eval_int (qse_awk_run_t* run, qse_awk_nde_t* nde) { - ase_awk_val_t* val; + qse_awk_val_t* val; - val = ase_awk_makeintval (run, ((ase_awk_nde_int_t*)nde)->val); - if (val == ASE_NULL) + val = qse_awk_makeintval (run, ((qse_awk_nde_int_t*)nde)->val); + if (val == QSE_NULL) { run->errlin = nde->line; - return ASE_NULL; + return QSE_NULL; } - ((ase_awk_val_int_t*)val)->nde = nde; + ((qse_awk_val_int_t*)val)->nde = nde; return val; } -static ase_awk_val_t* eval_real (ase_awk_run_t* run, ase_awk_nde_t* nde) +static qse_awk_val_t* eval_real (qse_awk_run_t* run, qse_awk_nde_t* nde) { - ase_awk_val_t* val; + qse_awk_val_t* val; - val = ase_awk_makerealval (run, ((ase_awk_nde_real_t*)nde)->val); - if (val == ASE_NULL) + val = qse_awk_makerealval (run, ((qse_awk_nde_real_t*)nde)->val); + if (val == QSE_NULL) { run->errlin = nde->line; - return ASE_NULL; + return QSE_NULL; } - ((ase_awk_val_real_t*)val)->nde = nde; + ((qse_awk_val_real_t*)val)->nde = nde; return val; } -static ase_awk_val_t* eval_str (ase_awk_run_t* run, ase_awk_nde_t* nde) +static qse_awk_val_t* eval_str (qse_awk_run_t* run, qse_awk_nde_t* nde) { - ase_awk_val_t* val; + qse_awk_val_t* val; - val = ase_awk_makestrval (run, - ((ase_awk_nde_str_t*)nde)->buf, - ((ase_awk_nde_str_t*)nde)->len); - if (val == ASE_NULL) + val = qse_awk_makestrval (run, + ((qse_awk_nde_str_t*)nde)->buf, + ((qse_awk_nde_str_t*)nde)->len); + if (val == QSE_NULL) { run->errlin = nde->line; - return ASE_NULL; + return QSE_NULL; } return val; } -static ase_awk_val_t* eval_rex (ase_awk_run_t* run, ase_awk_nde_t* nde) +static qse_awk_val_t* eval_rex (qse_awk_run_t* run, qse_awk_nde_t* nde) { - ase_awk_val_t* val; + qse_awk_val_t* val; - val = ase_awk_makerexval (run, - ((ase_awk_nde_rex_t*)nde)->buf, - ((ase_awk_nde_rex_t*)nde)->len, - ((ase_awk_nde_rex_t*)nde)->code); - if (val == ASE_NULL) + val = qse_awk_makerexval (run, + ((qse_awk_nde_rex_t*)nde)->buf, + ((qse_awk_nde_rex_t*)nde)->len, + ((qse_awk_nde_rex_t*)nde)->code); + if (val == QSE_NULL) { run->errlin = nde->line; - return ASE_NULL; + return QSE_NULL; } return val; } -static ase_awk_val_t* eval_named (ase_awk_run_t* run, ase_awk_nde_t* nde) +static qse_awk_val_t* eval_named (qse_awk_run_t* run, qse_awk_nde_t* nde) { - ase_map_pair_t* pair; + qse_map_pair_t* pair; - pair = ase_map_search (run->named, - ((ase_awk_nde_var_t*)nde)->id.name.ptr, - ((ase_awk_nde_var_t*)nde)->id.name.len); + pair = qse_map_search (run->named, + ((qse_awk_nde_var_t*)nde)->id.name.ptr, + ((qse_awk_nde_var_t*)nde)->id.name.len); - return (pair == ASE_NULL)? ase_awk_val_nil: ASE_MAP_VPTR(pair); + return (pair == QSE_NULL)? qse_awk_val_nil: QSE_MAP_VPTR(pair); } -static ase_awk_val_t* eval_global (ase_awk_run_t* run, ase_awk_nde_t* nde) +static qse_awk_val_t* eval_global (qse_awk_run_t* run, qse_awk_nde_t* nde) { - return STACK_GLOBAL(run,((ase_awk_nde_var_t*)nde)->id.idxa); + return STACK_GLOBAL(run,((qse_awk_nde_var_t*)nde)->id.idxa); } -static ase_awk_val_t* eval_local (ase_awk_run_t* run, ase_awk_nde_t* nde) +static qse_awk_val_t* eval_local (qse_awk_run_t* run, qse_awk_nde_t* nde) { - return STACK_LOCAL(run,((ase_awk_nde_var_t*)nde)->id.idxa); + return STACK_LOCAL(run,((qse_awk_nde_var_t*)nde)->id.idxa); } -static ase_awk_val_t* eval_arg (ase_awk_run_t* run, ase_awk_nde_t* nde) +static qse_awk_val_t* eval_arg (qse_awk_run_t* run, qse_awk_nde_t* nde) { - return STACK_ARG(run,((ase_awk_nde_var_t*)nde)->id.idxa); + return STACK_ARG(run,((qse_awk_nde_var_t*)nde)->id.idxa); } -static ase_awk_val_t* eval_indexed ( - ase_awk_run_t* run, ase_awk_nde_var_t* nde, ase_awk_val_t** val) +static qse_awk_val_t* eval_indexed ( + qse_awk_run_t* run, qse_awk_nde_var_t* nde, qse_awk_val_t** val) { - ase_map_pair_t* pair; - ase_char_t* str; - ase_size_t len; - ase_char_t idxbuf[IDXBUFSIZE]; + qse_map_pair_t* pair; + qse_char_t* str; + qse_size_t len; + qse_char_t idxbuf[IDXBUFSIZE]; - ASE_ASSERT (val != ASE_NULL); + QSE_ASSERT (val != QSE_NULL); - if ((*val)->type == ASE_AWK_VAL_NIL) + if ((*val)->type == QSE_AWK_VAL_NIL) { - ase_awk_val_t* tmp; + qse_awk_val_t* tmp; - tmp = ase_awk_makemapval (run); - if (tmp == ASE_NULL) + tmp = qse_awk_makemapval (run); + if (tmp == QSE_NULL) { run->errlin = nde->line; - return ASE_NULL; + return QSE_NULL; } - ase_awk_refdownval (run, *val); + qse_awk_refdownval (run, *val); *val = tmp; - ase_awk_refupval (run, (ase_awk_val_t*)*val); + qse_awk_refupval (run, (qse_awk_val_t*)*val); } - else if ((*val)->type != ASE_AWK_VAL_MAP) + else if ((*val)->type != QSE_AWK_VAL_MAP) { - ase_awk_setrunerror ( - run, ASE_AWK_ENOTMAP, nde->line, ASE_NULL, 0); - return ASE_NULL; + qse_awk_setrunerror ( + run, QSE_AWK_ENOTMAP, nde->line, QSE_NULL, 0); + return QSE_NULL; } - ASE_ASSERT (nde->idx != ASE_NULL); + QSE_ASSERT (nde->idx != QSE_NULL); - len = ASE_COUNTOF(idxbuf); + len = QSE_COUNTOF(idxbuf); str = idxnde_to_str (run, nde->idx, idxbuf, &len); - if (str == ASE_NULL) + if (str == QSE_NULL) { - str = idxnde_to_str (run, nde->idx, ASE_NULL, &len); - if (str == ASE_NULL) return ASE_NULL; + str = idxnde_to_str (run, nde->idx, QSE_NULL, &len); + if (str == QSE_NULL) return QSE_NULL; } - pair = ase_map_search ((*(ase_awk_val_map_t**)val)->map, str, len); - if (str != idxbuf) ASE_AWK_FREE (run->awk, str); + pair = qse_map_search ((*(qse_awk_val_map_t**)val)->map, str, len); + if (str != idxbuf) QSE_AWK_FREE (run->awk, str); - return (pair == ASE_NULL)? ase_awk_val_nil: - (ase_awk_val_t*)ASE_MAP_VPTR(pair); + return (pair == QSE_NULL)? qse_awk_val_nil: + (qse_awk_val_t*)QSE_MAP_VPTR(pair); } -static ase_awk_val_t* eval_namedidx (ase_awk_run_t* run, ase_awk_nde_t* nde) +static qse_awk_val_t* eval_namedidx (qse_awk_run_t* run, qse_awk_nde_t* nde) { - ase_awk_nde_var_t* tgt = (ase_awk_nde_var_t*)nde; - ase_map_pair_t* pair; + qse_awk_nde_var_t* tgt = (qse_awk_nde_var_t*)nde; + qse_map_pair_t* pair; - pair = ase_map_search (run->named, tgt->id.name.ptr, tgt->id.name.len); - if (pair == ASE_NULL) + pair = qse_map_search (run->named, tgt->id.name.ptr, tgt->id.name.len); + if (pair == QSE_NULL) { - pair = ase_map_upsert (run->named, - tgt->id.name.ptr, tgt->id.name.len, ase_awk_val_nil, 0); - if (pair == ASE_NULL) + pair = qse_map_upsert (run->named, + tgt->id.name.ptr, tgt->id.name.len, qse_awk_val_nil, 0); + if (pair == QSE_NULL) { - ase_awk_setrunerror ( - run, ASE_AWK_ENOMEM, nde->line, ASE_NULL, 0); - return ASE_NULL; + qse_awk_setrunerror ( + run, QSE_AWK_ENOMEM, nde->line, QSE_NULL, 0); + return QSE_NULL; } - ase_awk_refupval (run, ASE_MAP_VPTR(pair)); + qse_awk_refupval (run, QSE_MAP_VPTR(pair)); } - return eval_indexed (run, tgt, (ase_awk_val_t**)&ASE_MAP_VPTR(pair)); + return eval_indexed (run, tgt, (qse_awk_val_t**)&QSE_MAP_VPTR(pair)); } -static ase_awk_val_t* eval_globalidx (ase_awk_run_t* run, ase_awk_nde_t* nde) +static qse_awk_val_t* eval_globalidx (qse_awk_run_t* run, qse_awk_nde_t* nde) { - return eval_indexed (run, (ase_awk_nde_var_t*)nde, - (ase_awk_val_t**)&STACK_GLOBAL(run,((ase_awk_nde_var_t*)nde)->id.idxa)); + return eval_indexed (run, (qse_awk_nde_var_t*)nde, + (qse_awk_val_t**)&STACK_GLOBAL(run,((qse_awk_nde_var_t*)nde)->id.idxa)); } -static ase_awk_val_t* eval_localidx (ase_awk_run_t* run, ase_awk_nde_t* nde) +static qse_awk_val_t* eval_localidx (qse_awk_run_t* run, qse_awk_nde_t* nde) { - return eval_indexed (run, (ase_awk_nde_var_t*)nde, - (ase_awk_val_t**)&STACK_LOCAL(run,((ase_awk_nde_var_t*)nde)->id.idxa)); + return eval_indexed (run, (qse_awk_nde_var_t*)nde, + (qse_awk_val_t**)&STACK_LOCAL(run,((qse_awk_nde_var_t*)nde)->id.idxa)); } -static ase_awk_val_t* eval_argidx (ase_awk_run_t* run, ase_awk_nde_t* nde) +static qse_awk_val_t* eval_argidx (qse_awk_run_t* run, qse_awk_nde_t* nde) { - return eval_indexed (run, (ase_awk_nde_var_t*)nde, - (ase_awk_val_t**)&STACK_ARG(run,((ase_awk_nde_var_t*)nde)->id.idxa)); + return eval_indexed (run, (qse_awk_nde_var_t*)nde, + (qse_awk_val_t**)&STACK_ARG(run,((qse_awk_nde_var_t*)nde)->id.idxa)); } -static ase_awk_val_t* eval_pos (ase_awk_run_t* run, ase_awk_nde_t* nde) +static qse_awk_val_t* eval_pos (qse_awk_run_t* run, qse_awk_nde_t* nde) { - ase_awk_nde_pos_t* pos = (ase_awk_nde_pos_t*)nde; - ase_awk_val_t* v; - ase_long_t lv; - ase_real_t rv; + qse_awk_nde_pos_t* pos = (qse_awk_nde_pos_t*)nde; + qse_awk_val_t* v; + qse_long_t lv; + qse_real_t rv; int n; v = eval_expression (run, pos->val); - if (v == ASE_NULL) return ASE_NULL; + if (v == QSE_NULL) return QSE_NULL; - ase_awk_refupval (run, v); - n = ase_awk_valtonum (run, v, &lv, &rv); - ase_awk_refdownval (run, v); + qse_awk_refupval (run, v); + n = qse_awk_valtonum (run, v, &lv, &rv); + qse_awk_refdownval (run, v); if (n == -1) { - ase_awk_setrunerror ( - run, ASE_AWK_EPOSIDX, nde->line, ASE_NULL, 0); - return ASE_NULL; + qse_awk_setrunerror ( + run, QSE_AWK_EPOSIDX, nde->line, QSE_NULL, 0); + return QSE_NULL; } - if (n == 1) lv = (ase_long_t)rv; + if (n == 1) lv = (qse_long_t)rv; if (lv < 0) { - ase_awk_setrunerror ( - run, ASE_AWK_EPOSIDX, nde->line, ASE_NULL, 0); - return ASE_NULL; + qse_awk_setrunerror ( + run, QSE_AWK_EPOSIDX, nde->line, QSE_NULL, 0); + return QSE_NULL; } if (lv == 0) v = run->inrec.d0; - else if (lv > 0 && lv <= (ase_long_t)run->inrec.nflds) + else if (lv > 0 && lv <= (qse_long_t)run->inrec.nflds) v = run->inrec.flds[lv-1].val; - else v = ase_awk_val_zls; /*ase_awk_val_nil;*/ + else v = qse_awk_val_zls; /*qse_awk_val_nil;*/ return v; } -static ase_awk_val_t* eval_getline (ase_awk_run_t* run, ase_awk_nde_t* nde) +static qse_awk_val_t* eval_getline (qse_awk_run_t* run, qse_awk_nde_t* nde) { - ase_awk_nde_getline_t* p; - ase_awk_val_t* v, * res; - ase_char_t* in = ASE_NULL; - const ase_char_t* dst; - ase_str_t buf; + qse_awk_nde_getline_t* p; + qse_awk_val_t* v, * res; + qse_char_t* in = QSE_NULL; + const qse_char_t* dst; + qse_str_t buf; int n; - p = (ase_awk_nde_getline_t*)nde; + p = (qse_awk_nde_getline_t*)nde; - ASE_ASSERT ( - (p->in_type == ASE_AWK_IN_PIPE && p->in != ASE_NULL) || - (p->in_type == ASE_AWK_IN_COPROC && p->in != ASE_NULL) || - (p->in_type == ASE_AWK_IN_FILE && p->in != ASE_NULL) || - (p->in_type == ASE_AWK_IN_CONSOLE && p->in == ASE_NULL)); + QSE_ASSERT ( + (p->in_type == QSE_AWK_IN_PIPE && p->in != QSE_NULL) || + (p->in_type == QSE_AWK_IN_COPROC && p->in != QSE_NULL) || + (p->in_type == QSE_AWK_IN_FILE && p->in != QSE_NULL) || + (p->in_type == QSE_AWK_IN_CONSOLE && p->in == QSE_NULL)); - if (p->in != ASE_NULL) + if (p->in != QSE_NULL) { - ase_size_t len; + qse_size_t len; v = eval_expression (run, p->in); - if (v == ASE_NULL) return ASE_NULL; + if (v == QSE_NULL) return QSE_NULL; - /* TODO: distinction between v->type == ASE_AWK_VAL_STR - * and v->type != ASE_AWK_VAL_STR + /* TODO: distinction between v->type == QSE_AWK_VAL_STR + * and v->type != QSE_AWK_VAL_STR * if you use the buffer the v directly when - * v->type == ASE_AWK_VAL_STR, ase_awk_refdownval(v) + * v->type == QSE_AWK_VAL_STR, qse_awk_refdownval(v) * should not be called immediately below */ - ase_awk_refupval (run, v); - in = ase_awk_valtostr ( - run, v, ASE_AWK_VALTOSTR_CLEAR, ASE_NULL, &len); - if (in == ASE_NULL) + qse_awk_refupval (run, v); + in = qse_awk_valtostr ( + run, v, QSE_AWK_VALTOSTR_CLEAR, QSE_NULL, &len); + if (in == QSE_NULL) { - ase_awk_refdownval (run, v); - return ASE_NULL; + qse_awk_refdownval (run, v); + return QSE_NULL; } - ase_awk_refdownval (run, v); + qse_awk_refdownval (run, v); if (len <= 0) { /* the input source name is empty. * make getline return -1 */ - ASE_AWK_FREE (run->awk, in); + QSE_AWK_FREE (run->awk, in); n = -1; goto skip_read; } while (len > 0) { - if (in[--len] == ASE_T('\0')) + if (in[--len] == QSE_T('\0')) { /* the input source name contains a null * character. make getline return -1 */ - ASE_AWK_FREE (run->awk, in); + QSE_AWK_FREE (run->awk, in); n = -1; goto skip_read; } } } - dst = (in == ASE_NULL)? ASE_T(""): in; + dst = (in == QSE_NULL)? QSE_T(""): in; /* TODO: optimize the line buffer management */ - if (ase_str_init (&buf, MMGR(run), DEF_BUF_CAPA) == ASE_NULL) + if (qse_str_init (&buf, MMGR(run), DEF_BUF_CAPA) == QSE_NULL) { - if (in != ASE_NULL) ASE_AWK_FREE (run->awk, in); - ase_awk_setrunerror ( - run, ASE_AWK_ENOMEM, nde->line, ASE_NULL, 0); - return ASE_NULL; + if (in != QSE_NULL) QSE_AWK_FREE (run->awk, in); + qse_awk_setrunerror ( + run, QSE_AWK_ENOMEM, nde->line, QSE_NULL, 0); + return QSE_NULL; } - n = ase_awk_readextio (run, p->in_type, dst, &buf); - if (in != ASE_NULL) ASE_AWK_FREE (run->awk, in); + n = qse_awk_readextio (run, p->in_type, dst, &buf); + if (in != QSE_NULL) QSE_AWK_FREE (run->awk, in); if (n <= -1) { @@ -6244,78 +6244,78 @@ static ase_awk_val_t* eval_getline (ase_awk_run_t* run, ase_awk_nde_t* nde) if (n > 0) { - if (p->var == ASE_NULL) + if (p->var == QSE_NULL) { /* set $0 with the input value */ - if (ase_awk_setrec (run, 0, - ASE_STR_PTR(&buf), - ASE_STR_LEN(&buf)) == -1) + if (qse_awk_setrec (run, 0, + QSE_STR_PTR(&buf), + QSE_STR_LEN(&buf)) == -1) { - ase_str_fini (&buf); - return ASE_NULL; + qse_str_fini (&buf); + return QSE_NULL; } - ase_str_fini (&buf); + qse_str_fini (&buf); } else { - ase_awk_val_t* v; + qse_awk_val_t* v; - v = ase_awk_makestrval (run, - ASE_STR_PTR(&buf), ASE_STR_LEN(&buf)); - ase_str_fini (&buf); - if (v == ASE_NULL) + v = qse_awk_makestrval (run, + QSE_STR_PTR(&buf), QSE_STR_LEN(&buf)); + qse_str_fini (&buf); + if (v == QSE_NULL) { run->errlin = nde->line; - return ASE_NULL; + return QSE_NULL; } - ase_awk_refupval (run, v); - if (do_assignment(run, p->var, v) == ASE_NULL) + qse_awk_refupval (run, v); + if (do_assignment(run, p->var, v) == QSE_NULL) { - ase_awk_refdownval (run, v); - return ASE_NULL; + qse_awk_refdownval (run, v); + return QSE_NULL; } - ase_awk_refdownval (run, v); + qse_awk_refdownval (run, v); } } else { - ase_str_fini (&buf); + qse_str_fini (&buf); } skip_read: - res = ase_awk_makeintval (run, n); - if (res == ASE_NULL) run->errlin = nde->line; + res = qse_awk_makeintval (run, n); + if (res == QSE_NULL) run->errlin = nde->line; return res; } -static int __raw_push (ase_awk_run_t* run, void* val) +static int __raw_push (qse_awk_run_t* run, void* val) { if (run->stack_top >= run->stack_limit) { void** tmp; - ase_size_t n; + qse_size_t n; n = run->stack_limit + STACK_INCREMENT; - if (MMGR(run)->realloc != ASE_NULL) + if (MMGR(run)->realloc != QSE_NULL) { - tmp = (void**) ASE_AWK_REALLOC ( - run->awk, run->stack, n * ASE_SIZEOF(void*)); - if (tmp == ASE_NULL) return -1; + tmp = (void**) QSE_AWK_REALLOC ( + run->awk, run->stack, n * QSE_SIZEOF(void*)); + if (tmp == QSE_NULL) return -1; } else { - tmp = (void**) ASE_AWK_ALLOC ( - run->awk, n * ASE_SIZEOF(void*)); - if (tmp == ASE_NULL) return -1; - if (run->stack != ASE_NULL) + tmp = (void**) QSE_AWK_ALLOC ( + run->awk, n * QSE_SIZEOF(void*)); + if (tmp == QSE_NULL) return -1; + if (run->stack != QSE_NULL) { - ASE_MEMCPY ( + QSE_MEMCPY ( tmp, run->stack, - run->stack_limit * ASE_SIZEOF(void*)); - ASE_AWK_FREE (run->awk, run->stack); + run->stack_limit * QSE_SIZEOF(void*)); + QSE_AWK_FREE (run->awk, run->stack); } } run->stack = tmp; @@ -6326,7 +6326,7 @@ static int __raw_push (ase_awk_run_t* run, void* val) return 0; } -static void __raw_pop_times (ase_awk_run_t* run, ase_size_t times) +static void __raw_pop_times (qse_awk_run_t* run, qse_size_t times) { while (times > 0) { @@ -6335,352 +6335,352 @@ static void __raw_pop_times (ase_awk_run_t* run, ase_size_t times) } } -static int read_record (ase_awk_run_t* run) +static int read_record (qse_awk_run_t* run) { - ase_ssize_t n; + qse_ssize_t n; - if (ase_awk_clrrec (run, ASE_FALSE) == -1) return -1; + if (qse_awk_clrrec (run, QSE_FALSE) == -1) return -1; - n = ase_awk_readextio ( - run, ASE_AWK_IN_CONSOLE, ASE_T(""), &run->inrec.line); + n = qse_awk_readextio ( + run, QSE_AWK_IN_CONSOLE, QSE_T(""), &run->inrec.line); if (n <= -1) { - ase_awk_clrrec (run, ASE_FALSE); + qse_awk_clrrec (run, QSE_FALSE); return -1; } #ifdef DEBUG_RUN - ase_dprintf (ASE_T("record len = %d str=[%.*s]\n"), - (int)ASE_STR_LEN(&run->inrec.line), - (int)ASE_STR_LEN(&run->inrec.line), - ASE_STR_PTR(&run->inrec.line)); + qse_dprintf (QSE_T("record len = %d str=[%.*s]\n"), + (int)QSE_STR_LEN(&run->inrec.line), + (int)QSE_STR_LEN(&run->inrec.line), + QSE_STR_PTR(&run->inrec.line)); #endif if (n == 0) { - ASE_ASSERT (ASE_STR_LEN(&run->inrec.line) == 0); + QSE_ASSERT (QSE_STR_LEN(&run->inrec.line) == 0); return 0; } - if (ase_awk_setrec (run, 0, - ASE_STR_PTR(&run->inrec.line), - ASE_STR_LEN(&run->inrec.line)) == -1) return -1; + if (qse_awk_setrec (run, 0, + QSE_STR_PTR(&run->inrec.line), + QSE_STR_LEN(&run->inrec.line)) == -1) return -1; return 1; } -static int shorten_record (ase_awk_run_t* run, ase_size_t nflds) +static int shorten_record (qse_awk_run_t* run, qse_size_t nflds) { - ase_awk_val_t* v; - ase_char_t* ofs_free = ASE_NULL, * ofs; - ase_size_t ofs_len, i; - ase_str_t tmp; + qse_awk_val_t* v; + qse_char_t* ofs_free = QSE_NULL, * ofs; + qse_size_t ofs_len, i; + qse_str_t tmp; - ASE_ASSERT (nflds <= run->inrec.nflds); + QSE_ASSERT (nflds <= run->inrec.nflds); if (nflds > 1) { - v = STACK_GLOBAL(run, ASE_AWK_GLOBAL_OFS); - ase_awk_refupval (run, v); + v = STACK_GLOBAL(run, QSE_AWK_GLOBAL_OFS); + qse_awk_refupval (run, v); - if (v->type == ASE_AWK_VAL_NIL) + if (v->type == QSE_AWK_VAL_NIL) { /* OFS not set */ - ofs = ASE_T(" "); + ofs = QSE_T(" "); ofs_len = 1; } - else if (v->type == ASE_AWK_VAL_STR) + else if (v->type == QSE_AWK_VAL_STR) { - ofs = ((ase_awk_val_str_t*)v)->buf; - ofs_len = ((ase_awk_val_str_t*)v)->len; + ofs = ((qse_awk_val_str_t*)v)->buf; + ofs_len = ((qse_awk_val_str_t*)v)->len; } else { - ofs = ase_awk_valtostr ( - run, v, ASE_AWK_VALTOSTR_CLEAR, - ASE_NULL, &ofs_len); - if (ofs == ASE_NULL) return -1; + ofs = qse_awk_valtostr ( + run, v, QSE_AWK_VALTOSTR_CLEAR, + QSE_NULL, &ofs_len); + if (ofs == QSE_NULL) return -1; ofs_free = ofs; } } - if (ase_str_init ( - &tmp, MMGR(run), ASE_STR_LEN(&run->inrec.line)) == ASE_NULL) + if (qse_str_init ( + &tmp, MMGR(run), QSE_STR_LEN(&run->inrec.line)) == QSE_NULL) { - ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM); + qse_awk_setrunerrnum (run, QSE_AWK_ENOMEM); return -1; } for (i = 0; i < nflds; i++) { - if (i > 0 && ase_str_ncat(&tmp,ofs,ofs_len) == (ase_size_t)-1) + if (i > 0 && qse_str_ncat(&tmp,ofs,ofs_len) == (qse_size_t)-1) { - if (ofs_free != ASE_NULL) - ASE_AWK_FREE (run->awk, ofs_free); - if (nflds > 1) ase_awk_refdownval (run, v); - ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM); + if (ofs_free != QSE_NULL) + QSE_AWK_FREE (run->awk, ofs_free); + if (nflds > 1) qse_awk_refdownval (run, v); + qse_awk_setrunerrnum (run, QSE_AWK_ENOMEM); return -1; } - if (ase_str_ncat (&tmp, + if (qse_str_ncat (&tmp, run->inrec.flds[i].ptr, - run->inrec.flds[i].len) == (ase_size_t)-1) + run->inrec.flds[i].len) == (qse_size_t)-1) { - if (ofs_free != ASE_NULL) - ASE_AWK_FREE (run->awk, ofs_free); - if (nflds > 1) ase_awk_refdownval (run, v); + if (ofs_free != QSE_NULL) + QSE_AWK_FREE (run->awk, ofs_free); + if (nflds > 1) qse_awk_refdownval (run, v); - ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM); + qse_awk_setrunerrnum (run, QSE_AWK_ENOMEM); return -1; } } - if (ofs_free != ASE_NULL) ASE_AWK_FREE (run->awk, ofs_free); - if (nflds > 1) ase_awk_refdownval (run, v); + if (ofs_free != QSE_NULL) QSE_AWK_FREE (run->awk, ofs_free); + if (nflds > 1) qse_awk_refdownval (run, v); - v = (ase_awk_val_t*) ase_awk_makestrval ( - run, ASE_STR_PTR(&tmp), ASE_STR_LEN(&tmp)); - if (v == ASE_NULL) return -1; + v = (qse_awk_val_t*) qse_awk_makestrval ( + run, QSE_STR_PTR(&tmp), QSE_STR_LEN(&tmp)); + if (v == QSE_NULL) return -1; - ase_awk_refdownval (run, run->inrec.d0); + qse_awk_refdownval (run, run->inrec.d0); run->inrec.d0 = v; - ase_awk_refupval (run, run->inrec.d0); + qse_awk_refupval (run, run->inrec.d0); - ase_str_swap (&tmp, &run->inrec.line); - ase_str_fini (&tmp); + qse_str_swap (&tmp, &run->inrec.line); + qse_str_fini (&tmp); for (i = nflds; i < run->inrec.nflds; i++) { - ase_awk_refdownval (run, run->inrec.flds[i].val); + qse_awk_refdownval (run, run->inrec.flds[i].val); } run->inrec.nflds = nflds; return 0; } -static ase_char_t* idxnde_to_str ( - ase_awk_run_t* run, ase_awk_nde_t* nde, ase_char_t* buf, ase_size_t* len) +static qse_char_t* idxnde_to_str ( + qse_awk_run_t* run, qse_awk_nde_t* nde, qse_char_t* buf, qse_size_t* len) { - ase_char_t* str; - ase_awk_val_t* idx; + qse_char_t* str; + qse_awk_val_t* idx; - ASE_ASSERT (nde != ASE_NULL); + QSE_ASSERT (nde != QSE_NULL); - if (nde->next == ASE_NULL) + if (nde->next == QSE_NULL) { /* single node index */ idx = eval_expression (run, nde); - if (idx == ASE_NULL) return ASE_NULL; + if (idx == QSE_NULL) return QSE_NULL; - ase_awk_refupval (run, idx); + qse_awk_refupval (run, idx); - str = ASE_NULL; + str = QSE_NULL; - if (buf != ASE_NULL) + if (buf != QSE_NULL) { /* try with a fixed-size buffer */ - str = ase_awk_valtostr ( - run, idx, ASE_AWK_VALTOSTR_FIXED, (ase_str_t*)buf, len); + str = qse_awk_valtostr ( + run, idx, QSE_AWK_VALTOSTR_FIXED, (qse_str_t*)buf, len); } - if (str == ASE_NULL) + if (str == QSE_NULL) { /* if it doen't work, switch to the dynamic mode */ - str = ase_awk_valtostr ( - run, idx, ASE_AWK_VALTOSTR_CLEAR, ASE_NULL, len); + str = qse_awk_valtostr ( + run, idx, QSE_AWK_VALTOSTR_CLEAR, QSE_NULL, len); - if (str == ASE_NULL) + if (str == QSE_NULL) { - ase_awk_refdownval (run, idx); + qse_awk_refdownval (run, idx); /* change error line */ run->errlin = nde->line; - return ASE_NULL; + return QSE_NULL; } } - ase_awk_refdownval (run, idx); + qse_awk_refdownval (run, idx); } else { /* multidimensional index */ - ase_str_t idxstr; - ase_xstr_t tmp; + qse_str_t idxstr; + qse_xstr_t tmp; - if (ase_str_init (&idxstr, MMGR(run), DEF_BUF_CAPA) == ASE_NULL) + if (qse_str_init (&idxstr, MMGR(run), DEF_BUF_CAPA) == QSE_NULL) { - ase_awk_setrunerror ( - run, ASE_AWK_ENOMEM, nde->line, ASE_NULL, 0); - return ASE_NULL; + qse_awk_setrunerror ( + run, QSE_AWK_ENOMEM, nde->line, QSE_NULL, 0); + return QSE_NULL; } - while (nde != ASE_NULL) + while (nde != QSE_NULL) { idx = eval_expression (run, nde); - if (idx == ASE_NULL) + if (idx == QSE_NULL) { - ase_str_fini (&idxstr); - return ASE_NULL; + qse_str_fini (&idxstr); + return QSE_NULL; } - ase_awk_refupval (run, idx); + qse_awk_refupval (run, idx); - if (ASE_STR_LEN(&idxstr) > 0 && - ase_str_ncat (&idxstr, + if (QSE_STR_LEN(&idxstr) > 0 && + qse_str_ncat (&idxstr, run->global.subsep.ptr, - run->global.subsep.len) == (ase_size_t)-1) + run->global.subsep.len) == (qse_size_t)-1) { - ase_awk_refdownval (run, idx); - ase_str_fini (&idxstr); + qse_awk_refdownval (run, idx); + qse_str_fini (&idxstr); - ase_awk_setrunerror ( - run, ASE_AWK_ENOMEM, nde->line, - ASE_NULL, 0); + qse_awk_setrunerror ( + run, QSE_AWK_ENOMEM, nde->line, + QSE_NULL, 0); - return ASE_NULL; + return QSE_NULL; } - if (ase_awk_valtostr ( - run, idx, 0, &idxstr, ASE_NULL) == ASE_NULL) + if (qse_awk_valtostr ( + run, idx, 0, &idxstr, QSE_NULL) == QSE_NULL) { - ase_awk_refdownval (run, idx); - ase_str_fini (&idxstr); - return ASE_NULL; + qse_awk_refdownval (run, idx); + qse_str_fini (&idxstr); + return QSE_NULL; } - ase_awk_refdownval (run, idx); + qse_awk_refdownval (run, idx); nde = nde->next; } - ase_str_yield (&idxstr, &tmp, 0); + qse_str_yield (&idxstr, &tmp, 0); str = tmp.ptr; *len = tmp.len; - ase_str_fini (&idxstr); + qse_str_fini (&idxstr); } return str; } -ase_char_t* ase_awk_format ( - ase_awk_run_t* run, ase_str_t* out, ase_str_t* fbu, - const ase_char_t* fmt, ase_size_t fmt_len, - ase_size_t nargs_on_stack, ase_awk_nde_t* args, ase_size_t* len) +qse_char_t* qse_awk_format ( + qse_awk_run_t* run, qse_str_t* out, qse_str_t* fbu, + const qse_char_t* fmt, qse_size_t fmt_len, + qse_size_t nargs_on_stack, qse_awk_nde_t* args, qse_size_t* len) { - ase_size_t i, j; - ase_size_t stack_arg_idx = 1; - ase_awk_val_t* val; + qse_size_t i, j; + qse_size_t stack_arg_idx = 1; + qse_awk_val_t* val; #define OUT_CHAR(c) \ do { \ - if (ase_str_ccat (out, (c)) == -1) \ + if (qse_str_ccat (out, (c)) == -1) \ { \ - ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM); \ - return ASE_NULL; \ + qse_awk_setrunerrnum (run, QSE_AWK_ENOMEM); \ + return QSE_NULL; \ } \ } while (0) #define FMT_CHAR(c) \ do { \ - if (ase_str_ccat (fbu, (c)) == -1) \ + if (qse_str_ccat (fbu, (c)) == -1) \ { \ - ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM); \ - return ASE_NULL; \ + qse_awk_setrunerrnum (run, QSE_AWK_ENOMEM); \ + return QSE_NULL; \ } \ } while (0) #define GROW(buf) \ do { \ - if ((buf)->ptr != ASE_NULL) \ + if ((buf)->ptr != QSE_NULL) \ { \ - ASE_AWK_FREE (run->awk, (buf)->ptr); \ - (buf)->ptr = ASE_NULL; \ + QSE_AWK_FREE (run->awk, (buf)->ptr); \ + (buf)->ptr = QSE_NULL; \ } \ (buf)->len += (buf)->inc; \ - (buf)->ptr = (ase_char_t*)ASE_AWK_ALLOC ( \ - run->awk, (buf)->len * ASE_SIZEOF(ase_char_t)); \ - if ((buf)->ptr == ASE_NULL) (buf)->len = 0; \ + (buf)->ptr = (qse_char_t*)QSE_AWK_ALLOC ( \ + run->awk, (buf)->len * QSE_SIZEOF(qse_char_t)); \ + if ((buf)->ptr == QSE_NULL) (buf)->len = 0; \ } while (0) - ASE_ASSERTX (run->format.tmp.ptr != ASE_NULL, + QSE_ASSERTX (run->format.tmp.ptr != QSE_NULL, "run->format.tmp.ptr should have been assigned a pointer to a block of memory before this function has been called"); - if (nargs_on_stack == (ase_size_t)-1) + if (nargs_on_stack == (qse_size_t)-1) { - val = (ase_awk_val_t*)args; + val = (qse_awk_val_t*)args; nargs_on_stack = 2; } else { - val = ASE_NULL; + val = QSE_NULL; } - if (out == ASE_NULL) out = &run->format.out; - if (fbu == ASE_NULL) fbu = &run->format.fmt; + if (out == QSE_NULL) out = &run->format.out; + if (fbu == QSE_NULL) fbu = &run->format.fmt; - ase_str_clear (out); - ase_str_clear (fbu); + qse_str_clear (out); + qse_str_clear (fbu); for (i = 0; i < fmt_len; i++) { - ase_long_t width = -1, prec = -1; - ase_bool_t minus = ASE_FALSE; + qse_long_t width = -1, prec = -1; + qse_bool_t minus = QSE_FALSE; - if (ASE_STR_LEN(fbu) == 0) + if (QSE_STR_LEN(fbu) == 0) { - if (fmt[i] == ASE_T('%')) FMT_CHAR (fmt[i]); + if (fmt[i] == QSE_T('%')) FMT_CHAR (fmt[i]); else OUT_CHAR (fmt[i]); continue; } while (i < fmt_len && - (fmt[i] == ASE_T(' ') || fmt[i] == ASE_T('#') || - fmt[i] == ASE_T('0') || fmt[i] == ASE_T('+') || - fmt[i] == ASE_T('-'))) + (fmt[i] == QSE_T(' ') || fmt[i] == QSE_T('#') || + fmt[i] == QSE_T('0') || fmt[i] == QSE_T('+') || + fmt[i] == QSE_T('-'))) { - if (fmt[i] == ASE_T('-')) minus = ASE_TRUE; + if (fmt[i] == QSE_T('-')) minus = QSE_TRUE; FMT_CHAR (fmt[i]); i++; } - if (i < fmt_len && fmt[i] == ASE_T('*')) + if (i < fmt_len && fmt[i] == QSE_T('*')) { - ase_awk_val_t* v; - ase_real_t r; - ase_char_t* p; + qse_awk_val_t* v; + qse_real_t r; + qse_char_t* p; int n; - if (args == ASE_NULL) + if (args == QSE_NULL) { if (stack_arg_idx >= nargs_on_stack) { - ase_awk_setrunerrnum (run, ASE_AWK_EFMTARG); - return ASE_NULL; + qse_awk_setrunerrnum (run, QSE_AWK_EFMTARG); + return QSE_NULL; } - v = ase_awk_getarg (run, stack_arg_idx); + v = qse_awk_getarg (run, stack_arg_idx); } else { - if (val != ASE_NULL) + if (val != QSE_NULL) { if (stack_arg_idx >= nargs_on_stack) { - ase_awk_setrunerrnum (run, ASE_AWK_EFMTARG); - return ASE_NULL; + qse_awk_setrunerrnum (run, QSE_AWK_EFMTARG); + return QSE_NULL; } v = val; } else { v = eval_expression (run, args); - if (v == ASE_NULL) return ASE_NULL; + if (v == QSE_NULL) return QSE_NULL; } } - ase_awk_refupval (run, v); - n = ase_awk_valtonum (run, v, &width, &r); - ase_awk_refdownval (run, v); + qse_awk_refupval (run, v); + n = qse_awk_valtonum (run, v, &width, &r); + qse_awk_refdownval (run, v); - if (n == -1) return ASE_NULL; - if (n == 1) width = (ase_long_t)r; + if (n == -1) return QSE_NULL; + if (n == 1) width = (qse_long_t)r; do { @@ -6688,14 +6688,14 @@ ase_char_t* ase_awk_format ( run->awk->prmfns->data, run->format.tmp.ptr, run->format.tmp.len, - #if ASE_SIZEOF_LONG_LONG > 0 - ASE_T("%lld"), (long long)width - #elif ASE_SIZEOF___INT64 > 0 - ASE_T("%I64d"), (__int64)width - #elif ASE_SIZEOF_LONG > 0 - ASE_T("%ld"), (long)width - #elif ASE_SIZEOF_INT > 0 - ASE_T("%d"), (int)width + #if QSE_SIZEOF_LONG_LONG > 0 + QSE_T("%lld"), (long long)width + #elif QSE_SIZEOF___INT64 > 0 + QSE_T("%I64d"), (__int64)width + #elif QSE_SIZEOF_LONG > 0 + QSE_T("%ld"), (long)width + #elif QSE_SIZEOF_INT > 0 + QSE_T("%d"), (int)width #else #error unsupported size #endif @@ -6703,10 +6703,10 @@ ase_char_t* ase_awk_format ( if (n == -1) { GROW (&run->format.tmp); - if (run->format.tmp.ptr == ASE_NULL) + if (run->format.tmp.ptr == QSE_NULL) { - ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM); - return ASE_NULL; + qse_awk_setrunerrnum (run, QSE_AWK_ENOMEM); + return QSE_NULL; } continue; @@ -6717,76 +6717,76 @@ ase_char_t* ase_awk_format ( while (1); p = run->format.tmp.ptr; - while (*p != ASE_T('\0')) + while (*p != QSE_T('\0')) { FMT_CHAR (*p); p++; } - if (args == ASE_NULL || val != ASE_NULL) stack_arg_idx++; + if (args == QSE_NULL || val != QSE_NULL) stack_arg_idx++; else args = args->next; i++; } else { - if (i < fmt_len && ASE_AWK_ISDIGIT(run->awk, fmt[i])) + if (i < fmt_len && QSE_AWK_ISDIGIT(run->awk, fmt[i])) { width = 0; do { - width = width * 10 + fmt[i] - ASE_T('0'); + width = width * 10 + fmt[i] - QSE_T('0'); FMT_CHAR (fmt[i]); i++; } - while (i < fmt_len && ASE_AWK_ISDIGIT(run->awk, fmt[i])); + while (i < fmt_len && QSE_AWK_ISDIGIT(run->awk, fmt[i])); } } - if (i < fmt_len && fmt[i] == ASE_T('.')) + if (i < fmt_len && fmt[i] == QSE_T('.')) { prec = 0; FMT_CHAR (fmt[i]); i++; } - if (i < fmt_len && fmt[i] == ASE_T('*')) + if (i < fmt_len && fmt[i] == QSE_T('*')) { - ase_awk_val_t* v; - ase_real_t r; - ase_char_t* p; + qse_awk_val_t* v; + qse_real_t r; + qse_char_t* p; int n; - if (args == ASE_NULL) + if (args == QSE_NULL) { if (stack_arg_idx >= nargs_on_stack) { - ase_awk_setrunerrnum (run, ASE_AWK_EFMTARG); - return ASE_NULL; + qse_awk_setrunerrnum (run, QSE_AWK_EFMTARG); + return QSE_NULL; } - v = ase_awk_getarg (run, stack_arg_idx); + v = qse_awk_getarg (run, stack_arg_idx); } else { - if (val != ASE_NULL) + if (val != QSE_NULL) { if (stack_arg_idx >= nargs_on_stack) { - ase_awk_setrunerrnum (run, ASE_AWK_EFMTARG); - return ASE_NULL; + qse_awk_setrunerrnum (run, QSE_AWK_EFMTARG); + return QSE_NULL; } v = val; } else { v = eval_expression (run, args); - if (v == ASE_NULL) return ASE_NULL; + if (v == QSE_NULL) return QSE_NULL; } } - ase_awk_refupval (run, v); - n = ase_awk_valtonum (run, v, &prec, &r); - ase_awk_refdownval (run, v); + qse_awk_refupval (run, v); + n = qse_awk_valtonum (run, v, &prec, &r); + qse_awk_refdownval (run, v); - if (n == -1) return ASE_NULL; - if (n == 1) prec = (ase_long_t)r; + if (n == -1) return QSE_NULL; + if (n == 1) prec = (qse_long_t)r; do { @@ -6794,23 +6794,23 @@ ase_char_t* ase_awk_format ( run->awk->prmfns->data, run->format.tmp.ptr, run->format.tmp.len, - #if ASE_SIZEOF_LONG_LONG > 0 - ASE_T("%lld"), (long long)prec - #elif ASE_SIZEOF___INT64 > 0 - ASE_T("%I64d"), (__int64)prec - #elif ASE_SIZEOF_LONG > 0 - ASE_T("%ld"), (long)prec - #elif ASE_SIZEOF_INT > 0 - ASE_T("%d"), (int)prec + #if QSE_SIZEOF_LONG_LONG > 0 + QSE_T("%lld"), (long long)prec + #elif QSE_SIZEOF___INT64 > 0 + QSE_T("%I64d"), (__int64)prec + #elif QSE_SIZEOF_LONG > 0 + QSE_T("%ld"), (long)prec + #elif QSE_SIZEOF_INT > 0 + QSE_T("%d"), (int)prec #endif ); if (n == -1) { GROW (&run->format.tmp); - if (run->format.tmp.ptr == ASE_NULL) + if (run->format.tmp.ptr == QSE_NULL) { - ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM); - return ASE_NULL; + qse_awk_setrunerrnum (run, QSE_AWK_ENOMEM); + return QSE_NULL; } continue; @@ -6821,93 +6821,93 @@ ase_char_t* ase_awk_format ( while (1); p = run->format.tmp.ptr; - while (*p != ASE_T('\0')) + while (*p != QSE_T('\0')) { FMT_CHAR (*p); p++; } - if (args == ASE_NULL || val != ASE_NULL) stack_arg_idx++; + if (args == QSE_NULL || val != QSE_NULL) stack_arg_idx++; else args = args->next; i++; } else { - if (i < fmt_len && ASE_AWK_ISDIGIT(run->awk, fmt[i])) + if (i < fmt_len && QSE_AWK_ISDIGIT(run->awk, fmt[i])) { prec = 0; do { - prec = prec * 10 + fmt[i] - ASE_T('0'); + prec = prec * 10 + fmt[i] - QSE_T('0'); FMT_CHAR (fmt[i]); i++; } - while (i < fmt_len && ASE_AWK_ISDIGIT(run->awk, fmt[i])); + while (i < fmt_len && QSE_AWK_ISDIGIT(run->awk, fmt[i])); } } if (i >= fmt_len) break; - if (fmt[i] == ASE_T('d') || fmt[i] == ASE_T('i') || - fmt[i] == ASE_T('x') || fmt[i] == ASE_T('X') || - fmt[i] == ASE_T('o')) + if (fmt[i] == QSE_T('d') || fmt[i] == QSE_T('i') || + fmt[i] == QSE_T('x') || fmt[i] == QSE_T('X') || + fmt[i] == QSE_T('o')) { - ase_awk_val_t* v; - ase_long_t l; - ase_real_t r; - ase_char_t* p; + qse_awk_val_t* v; + qse_long_t l; + qse_real_t r; + qse_char_t* p; int n; - #if ASE_SIZEOF_LONG_LONG > 0 - FMT_CHAR (ASE_T('l')); - FMT_CHAR (ASE_T('l')); + #if QSE_SIZEOF_LONG_LONG > 0 + FMT_CHAR (QSE_T('l')); + FMT_CHAR (QSE_T('l')); FMT_CHAR (fmt[i]); - #elif ASE_SIZEOF___INT64 > 0 - FMT_CHAR (ASE_T('I')); - FMT_CHAR (ASE_T('6')); - FMT_CHAR (ASE_T('4')); + #elif QSE_SIZEOF___INT64 > 0 + FMT_CHAR (QSE_T('I')); + FMT_CHAR (QSE_T('6')); + FMT_CHAR (QSE_T('4')); FMT_CHAR (fmt[i]); - #elif ASE_SIZEOF_LONG > 0 - FMT_CHAR (ASE_T('l')); + #elif QSE_SIZEOF_LONG > 0 + FMT_CHAR (QSE_T('l')); FMT_CHAR (fmt[i]); - #elif ASE_SIZEOF_INT > 0 + #elif QSE_SIZEOF_INT > 0 FMT_CHAR (fmt[i]); #else #error unsupported integer size #endif - if (args == ASE_NULL) + if (args == QSE_NULL) { if (stack_arg_idx >= nargs_on_stack) { - ase_awk_setrunerrnum (run, ASE_AWK_EFMTARG); - return ASE_NULL; + qse_awk_setrunerrnum (run, QSE_AWK_EFMTARG); + return QSE_NULL; } - v = ase_awk_getarg (run, stack_arg_idx); + v = qse_awk_getarg (run, stack_arg_idx); } else { - if (val != ASE_NULL) + if (val != QSE_NULL) { if (stack_arg_idx >= nargs_on_stack) { - ase_awk_setrunerrnum (run, ASE_AWK_EFMTARG); - return ASE_NULL; + qse_awk_setrunerrnum (run, QSE_AWK_EFMTARG); + return QSE_NULL; } v = val; } else { v = eval_expression (run, args); - if (v == ASE_NULL) return ASE_NULL; + if (v == QSE_NULL) return QSE_NULL; } } - ase_awk_refupval (run, v); - n = ase_awk_valtonum (run, v, &l, &r); - ase_awk_refdownval (run, v); + qse_awk_refupval (run, v); + n = qse_awk_valtonum (run, v, &l, &r); + qse_awk_refdownval (run, v); - if (n == -1) return ASE_NULL; - if (n == 1) l = (ase_long_t)r; + if (n == -1) return QSE_NULL; + if (n == 1) l = (qse_long_t)r; do { @@ -6915,14 +6915,14 @@ ase_char_t* ase_awk_format ( run->awk->prmfns->data, run->format.tmp.ptr, run->format.tmp.len, - ASE_STR_PTR(fbu), - #if ASE_SIZEOF_LONG_LONG > 0 + QSE_STR_PTR(fbu), + #if QSE_SIZEOF_LONG_LONG > 0 (long long)l - #elif ASE_SIZEOF___INT64 > 0 + #elif QSE_SIZEOF___INT64 > 0 (__int64)l - #elif ASE_SIZEOF_LONG > 0 + #elif QSE_SIZEOF_LONG > 0 (long)l - #elif ASE_SIZEOF_INT > 0 + #elif QSE_SIZEOF_INT > 0 (int)l #endif ); @@ -6930,10 +6930,10 @@ ase_char_t* ase_awk_format ( if (n == -1) { GROW (&run->format.tmp); - if (run->format.tmp.ptr == ASE_NULL) + if (run->format.tmp.ptr == QSE_NULL) { - ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM); - return ASE_NULL; + qse_awk_setrunerrnum (run, QSE_AWK_ENOMEM); + return QSE_NULL; } continue; @@ -6944,58 +6944,58 @@ ase_char_t* ase_awk_format ( while (1); p = run->format.tmp.ptr; - while (*p != ASE_T('\0')) + while (*p != QSE_T('\0')) { OUT_CHAR (*p); p++; } } - else if (fmt[i] == ASE_T('e') || fmt[i] == ASE_T('E') || - fmt[i] == ASE_T('g') || fmt[i] == ASE_T('G') || - fmt[i] == ASE_T('f')) + else if (fmt[i] == QSE_T('e') || fmt[i] == QSE_T('E') || + fmt[i] == QSE_T('g') || fmt[i] == QSE_T('G') || + fmt[i] == QSE_T('f')) { - ase_awk_val_t* v; - ase_long_t l; - ase_real_t r; - ase_char_t* p; + qse_awk_val_t* v; + qse_long_t l; + qse_real_t r; + qse_char_t* p; int n; - FMT_CHAR (ASE_T('L')); + FMT_CHAR (QSE_T('L')); FMT_CHAR (fmt[i]); - if (args == ASE_NULL) + if (args == QSE_NULL) { if (stack_arg_idx >= nargs_on_stack) { - ase_awk_setrunerrnum (run, ASE_AWK_EFMTARG); - return ASE_NULL; + qse_awk_setrunerrnum (run, QSE_AWK_EFMTARG); + return QSE_NULL; } - v = ase_awk_getarg (run, stack_arg_idx); + v = qse_awk_getarg (run, stack_arg_idx); } else { - if (val != ASE_NULL) + if (val != QSE_NULL) { if (stack_arg_idx >= nargs_on_stack) { - ase_awk_setrunerrnum (run, ASE_AWK_EFMTARG); - return ASE_NULL; + qse_awk_setrunerrnum (run, QSE_AWK_EFMTARG); + return QSE_NULL; } v = val; } else { v = eval_expression (run, args); - if (v == ASE_NULL) return ASE_NULL; + if (v == QSE_NULL) return QSE_NULL; } } - ase_awk_refupval (run, v); - n = ase_awk_valtonum (run, v, &l, &r); - ase_awk_refdownval (run, v); + qse_awk_refupval (run, v); + n = qse_awk_valtonum (run, v, &l, &r); + qse_awk_refdownval (run, v); - if (n == -1) return ASE_NULL; - if (n == 0) r = (ase_real_t)l; + if (n == -1) return QSE_NULL; + if (n == 0) r = (qse_real_t)l; do { @@ -7003,7 +7003,7 @@ ase_char_t* ase_awk_format ( run->awk->prmfns->data, run->format.tmp.ptr, run->format.tmp.len, - ASE_STR_PTR(fbu), + QSE_STR_PTR(fbu), #if defined(__MINGW32__) (double)r #else @@ -7014,10 +7014,10 @@ ase_char_t* ase_awk_format ( if (n == -1) { GROW (&run->format.tmp); - if (run->format.tmp.ptr == ASE_NULL) + if (run->format.tmp.ptr == QSE_NULL) { - ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM); - return ASE_NULL; + qse_awk_setrunerrnum (run, QSE_AWK_ENOMEM); + return QSE_NULL; } continue; @@ -7028,90 +7028,90 @@ ase_char_t* ase_awk_format ( while (1); p = run->format.tmp.ptr; - while (*p != ASE_T('\0')) + while (*p != QSE_T('\0')) { OUT_CHAR (*p); p++; } } - else if (fmt[i] == ASE_T('c')) + else if (fmt[i] == QSE_T('c')) { - ase_char_t ch; - ase_size_t ch_len; - ase_awk_val_t* v; + qse_char_t ch; + qse_size_t ch_len; + qse_awk_val_t* v; - if (args == ASE_NULL) + if (args == QSE_NULL) { if (stack_arg_idx >= nargs_on_stack) { - ase_awk_setrunerrnum (run, ASE_AWK_EFMTARG); - return ASE_NULL; + qse_awk_setrunerrnum (run, QSE_AWK_EFMTARG); + return QSE_NULL; } - v = ase_awk_getarg (run, stack_arg_idx); + v = qse_awk_getarg (run, stack_arg_idx); } else { - if (val != ASE_NULL) + if (val != QSE_NULL) { if (stack_arg_idx >= nargs_on_stack) { - ase_awk_setrunerrnum (run, ASE_AWK_EFMTARG); - return ASE_NULL; + qse_awk_setrunerrnum (run, QSE_AWK_EFMTARG); + return QSE_NULL; } v = val; } else { v = eval_expression (run, args); - if (v == ASE_NULL) return ASE_NULL; + if (v == QSE_NULL) return QSE_NULL; } } - ase_awk_refupval (run, v); - if (v->type == ASE_AWK_VAL_NIL) + qse_awk_refupval (run, v); + if (v->type == QSE_AWK_VAL_NIL) { - ch = ASE_T('\0'); + ch = QSE_T('\0'); ch_len = 0; } - else if (v->type == ASE_AWK_VAL_INT) + else if (v->type == QSE_AWK_VAL_INT) { - ch = (ase_char_t)((ase_awk_val_int_t*)v)->val; + ch = (qse_char_t)((qse_awk_val_int_t*)v)->val; ch_len = 1; } - else if (v->type == ASE_AWK_VAL_REAL) + else if (v->type == QSE_AWK_VAL_REAL) { - ch = (ase_char_t)((ase_awk_val_real_t*)v)->val; + ch = (qse_char_t)((qse_awk_val_real_t*)v)->val; ch_len = 1; } - else if (v->type == ASE_AWK_VAL_STR) + else if (v->type == QSE_AWK_VAL_STR) { - ch_len = ((ase_awk_val_str_t*)v)->len; + ch_len = ((qse_awk_val_str_t*)v)->len; if (ch_len > 0) { - ch = ((ase_awk_val_str_t*)v)->buf[0]; + ch = ((qse_awk_val_str_t*)v)->buf[0]; ch_len = 1; } - else ch = ASE_T('\0'); + else ch = QSE_T('\0'); } else { - ase_awk_refdownval (run, v); - ase_awk_setrunerrnum (run, ASE_AWK_EVALTYPE); - return ASE_NULL; + qse_awk_refdownval (run, v); + qse_awk_setrunerrnum (run, QSE_AWK_EVALTYPE); + return QSE_NULL; } - if (prec == -1 || prec == 0 || prec > (ase_long_t)ch_len) prec = (ase_long_t)ch_len; + if (prec == -1 || prec == 0 || prec > (qse_long_t)ch_len) prec = (qse_long_t)ch_len; if (prec > width) width = prec; if (!minus) { while (width > prec) { - if (ase_str_ccat (out, ASE_T(' ')) == -1) + if (qse_str_ccat (out, QSE_T(' ')) == -1) { - ase_awk_refdownval (run, v); - ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM); - return ASE_NULL; + qse_awk_refdownval (run, v); + qse_awk_setrunerrnum (run, QSE_AWK_ENOMEM); + return QSE_NULL; } width--; } @@ -7119,11 +7119,11 @@ ase_char_t* ase_awk_format ( if (prec > 0) { - if (ase_str_ccat (out, ch) == -1) + if (qse_str_ccat (out, ch) == -1) { - ase_awk_refdownval (run, v); - ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM); - return ASE_NULL; + qse_awk_refdownval (run, v); + qse_awk_setrunerrnum (run, QSE_AWK_ENOMEM); + return QSE_NULL; } } @@ -7131,97 +7131,97 @@ ase_char_t* ase_awk_format ( { while (width > prec) { - if (ase_str_ccat (out, ASE_T(' ')) == -1) + if (qse_str_ccat (out, QSE_T(' ')) == -1) { - ase_awk_refdownval (run, v); - ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM); - return ASE_NULL; + qse_awk_refdownval (run, v); + qse_awk_setrunerrnum (run, QSE_AWK_ENOMEM); + return QSE_NULL; } width--; } } - ase_awk_refdownval (run, v); + qse_awk_refdownval (run, v); } - else if (fmt[i] == ASE_T('s')) + else if (fmt[i] == QSE_T('s')) { - ase_char_t* str, * str_free = ASE_NULL; - ase_size_t str_len; - ase_long_t k; - ase_awk_val_t* v; + qse_char_t* str, * str_free = QSE_NULL; + qse_size_t str_len; + qse_long_t k; + qse_awk_val_t* v; - if (args == ASE_NULL) + if (args == QSE_NULL) { if (stack_arg_idx >= nargs_on_stack) { - ase_awk_setrunerrnum (run, ASE_AWK_EFMTARG); - return ASE_NULL; + qse_awk_setrunerrnum (run, QSE_AWK_EFMTARG); + return QSE_NULL; } - v = ase_awk_getarg (run, stack_arg_idx); + v = qse_awk_getarg (run, stack_arg_idx); } else { - if (val != ASE_NULL) + if (val != QSE_NULL) { if (stack_arg_idx >= nargs_on_stack) { - ase_awk_setrunerrnum (run, ASE_AWK_EFMTARG); - return ASE_NULL; + qse_awk_setrunerrnum (run, QSE_AWK_EFMTARG); + return QSE_NULL; } v = val; } else { v = eval_expression (run, args); - if (v == ASE_NULL) return ASE_NULL; + if (v == QSE_NULL) return QSE_NULL; } } - ase_awk_refupval (run, v); - if (v->type == ASE_AWK_VAL_NIL) + qse_awk_refupval (run, v); + if (v->type == QSE_AWK_VAL_NIL) { - str = ASE_T(""); + str = QSE_T(""); str_len = 0; } - else if (v->type == ASE_AWK_VAL_STR) + else if (v->type == QSE_AWK_VAL_STR) { - str = ((ase_awk_val_str_t*)v)->buf; - str_len = ((ase_awk_val_str_t*)v)->len; + str = ((qse_awk_val_str_t*)v)->buf; + str_len = ((qse_awk_val_str_t*)v)->len; } else { if (v == val) { - ase_awk_refdownval (run, v); - ase_awk_setrunerrnum (run, ASE_AWK_EFMTCNV); - return ASE_NULL; + qse_awk_refdownval (run, v); + qse_awk_setrunerrnum (run, QSE_AWK_EFMTCNV); + return QSE_NULL; } - str = ase_awk_valtostr (run, v, - ASE_AWK_VALTOSTR_CLEAR, ASE_NULL, &str_len); - if (str == ASE_NULL) + str = qse_awk_valtostr (run, v, + QSE_AWK_VALTOSTR_CLEAR, QSE_NULL, &str_len); + if (str == QSE_NULL) { - ase_awk_refdownval (run, v); - return ASE_NULL; + qse_awk_refdownval (run, v); + return QSE_NULL; } str_free = str; } - if (prec == -1 || prec > (ase_long_t)str_len ) prec = (ase_long_t)str_len; + if (prec == -1 || prec > (qse_long_t)str_len ) prec = (qse_long_t)str_len; if (prec > width) width = prec; if (!minus) { while (width > prec) { - if (ase_str_ccat (out, ASE_T(' ')) == -1) + if (qse_str_ccat (out, QSE_T(' ')) == -1) { - if (str_free != ASE_NULL) - ASE_AWK_FREE (run->awk, str_free); - ase_awk_refdownval (run, v); - ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM); - return ASE_NULL; + if (str_free != QSE_NULL) + QSE_AWK_FREE (run->awk, str_free); + qse_awk_refdownval (run, v); + qse_awk_setrunerrnum (run, QSE_AWK_ENOMEM); + return QSE_NULL; } width--; } @@ -7229,51 +7229,51 @@ ase_char_t* ase_awk_format ( for (k = 0; k < prec; k++) { - if (ase_str_ccat (out, str[k]) == -1) + if (qse_str_ccat (out, str[k]) == -1) { - if (str_free != ASE_NULL) - ASE_AWK_FREE (run->awk, str_free); - ase_awk_refdownval (run, v); - ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM); - return ASE_NULL; + if (str_free != QSE_NULL) + QSE_AWK_FREE (run->awk, str_free); + qse_awk_refdownval (run, v); + qse_awk_setrunerrnum (run, QSE_AWK_ENOMEM); + return QSE_NULL; } } - if (str_free != ASE_NULL) ASE_AWK_FREE (run->awk, str_free); + if (str_free != QSE_NULL) QSE_AWK_FREE (run->awk, str_free); if (minus) { while (width > prec) { - if (ase_str_ccat (out, ASE_T(' ')) == -1) + if (qse_str_ccat (out, QSE_T(' ')) == -1) { - ase_awk_refdownval (run, v); - ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM); - return ASE_NULL; + qse_awk_refdownval (run, v); + qse_awk_setrunerrnum (run, QSE_AWK_ENOMEM); + return QSE_NULL; } width--; } } - ase_awk_refdownval (run, v); + qse_awk_refdownval (run, v); } - else /*if (fmt[i] == ASE_T('%'))*/ + else /*if (fmt[i] == QSE_T('%'))*/ { - for (j = 0; j < ASE_STR_LEN(fbu); j++) - OUT_CHAR (ASE_STR_CHAR(fbu,j)); + for (j = 0; j < QSE_STR_LEN(fbu); j++) + OUT_CHAR (QSE_STR_CHAR(fbu,j)); OUT_CHAR (fmt[i]); } - if (args == ASE_NULL || val != ASE_NULL) stack_arg_idx++; + if (args == QSE_NULL || val != QSE_NULL) stack_arg_idx++; else args = args->next; - ase_str_clear (fbu); + qse_str_clear (fbu); } /* flush uncompleted formatting sequence */ - for (j = 0; j < ASE_STR_LEN(fbu); j++) - OUT_CHAR (ASE_STR_CHAR(fbu,j)); + for (j = 0; j < QSE_STR_LEN(fbu); j++) + OUT_CHAR (QSE_STR_CHAR(fbu,j)); - *len = ASE_STR_LEN(out); - return ASE_STR_PTR(out); + *len = QSE_STR_LEN(out); + return QSE_STR_PTR(out); } diff --git a/qse/lib/awk/run.h b/qse/lib/awk/run.h index 01c54ddf..dfeee21e 100644 --- a/qse/lib/awk/run.h +++ b/qse/lib/awk/run.h @@ -4,89 +4,89 @@ * {License} */ -#ifndef _ASE_LIB_AWK_RUN_H_ -#define _ASE_LIB_AWK_RUN_H_ +#ifndef _QSE_LIB_AWK_RUN_H_ +#define _QSE_LIB_AWK_RUN_H_ -enum ase_awk_assop_type_t +enum qse_awk_assop_type_t { /* if you change this, you have to change assop_str in tree.c. * synchronize it with binop_func of eval_assignment in run.c */ - ASE_AWK_ASSOP_NONE, - ASE_AWK_ASSOP_PLUS, /* += */ - ASE_AWK_ASSOP_MINUS, /* -= */ - ASE_AWK_ASSOP_MUL, /* *= */ - ASE_AWK_ASSOP_DIV, /* /= */ - ASE_AWK_ASSOP_IDIV, /* //= */ - ASE_AWK_ASSOP_MOD, /* %= */ - ASE_AWK_ASSOP_EXP, /* **= */ - ASE_AWK_ASSOP_RSHIFT, /* >>= */ - ASE_AWK_ASSOP_LSHIFT, /* <<= */ - ASE_AWK_ASSOP_BAND, /* &= */ - ASE_AWK_ASSOP_BXOR, /* ^= */ - ASE_AWK_ASSOP_BOR /* |= */ + QSE_AWK_ASSOP_NONE, + QSE_AWK_ASSOP_PLUS, /* += */ + QSE_AWK_ASSOP_MINUS, /* -= */ + QSE_AWK_ASSOP_MUL, /* *= */ + QSE_AWK_ASSOP_DIV, /* /= */ + QSE_AWK_ASSOP_IDIV, /* //= */ + QSE_AWK_ASSOP_MOD, /* %= */ + QSE_AWK_ASSOP_EXP, /* **= */ + QSE_AWK_ASSOP_RSHIFT, /* >>= */ + QSE_AWK_ASSOP_LSHIFT, /* <<= */ + QSE_AWK_ASSOP_BAND, /* &= */ + QSE_AWK_ASSOP_BXOR, /* ^= */ + QSE_AWK_ASSOP_BOR /* |= */ }; -enum ase_awk_binop_type_t +enum qse_awk_binop_type_t { /* if you change this, you have to change * binop_str in tree.c and binop_func in run.c accordingly. */ - ASE_AWK_BINOP_LOR, - ASE_AWK_BINOP_LAND, - ASE_AWK_BINOP_IN, + QSE_AWK_BINOP_LOR, + QSE_AWK_BINOP_LAND, + QSE_AWK_BINOP_IN, - ASE_AWK_BINOP_BOR, - ASE_AWK_BINOP_BXOR, - ASE_AWK_BINOP_BAND, + QSE_AWK_BINOP_BOR, + QSE_AWK_BINOP_BXOR, + QSE_AWK_BINOP_BAND, - ASE_AWK_BINOP_EQ, - ASE_AWK_BINOP_NE, - ASE_AWK_BINOP_GT, - ASE_AWK_BINOP_GE, - ASE_AWK_BINOP_LT, - ASE_AWK_BINOP_LE, + QSE_AWK_BINOP_EQ, + QSE_AWK_BINOP_NE, + QSE_AWK_BINOP_GT, + QSE_AWK_BINOP_GE, + QSE_AWK_BINOP_LT, + QSE_AWK_BINOP_LE, - ASE_AWK_BINOP_LSHIFT, - ASE_AWK_BINOP_RSHIFT, + QSE_AWK_BINOP_LSHIFT, + QSE_AWK_BINOP_RSHIFT, - ASE_AWK_BINOP_PLUS, - ASE_AWK_BINOP_MINUS, - ASE_AWK_BINOP_MUL, - ASE_AWK_BINOP_DIV, - ASE_AWK_BINOP_IDIV, - ASE_AWK_BINOP_MOD, - ASE_AWK_BINOP_EXP, + QSE_AWK_BINOP_PLUS, + QSE_AWK_BINOP_MINUS, + QSE_AWK_BINOP_MUL, + QSE_AWK_BINOP_DIV, + QSE_AWK_BINOP_IDIV, + QSE_AWK_BINOP_MOD, + QSE_AWK_BINOP_EXP, - ASE_AWK_BINOP_CONCAT, - ASE_AWK_BINOP_MA, - ASE_AWK_BINOP_NM + QSE_AWK_BINOP_CONCAT, + QSE_AWK_BINOP_MA, + QSE_AWK_BINOP_NM }; -enum ase_awk_unrop_type_t +enum qse_awk_unrop_type_t { /* if you change this, you have to change * __unrop_str in tree.c accordingly. */ - ASE_AWK_UNROP_PLUS, - ASE_AWK_UNROP_MINUS, - ASE_AWK_UNROP_LNOT, - ASE_AWK_UNROP_BNOT + QSE_AWK_UNROP_PLUS, + QSE_AWK_UNROP_MINUS, + QSE_AWK_UNROP_LNOT, + QSE_AWK_UNROP_BNOT }; -enum ase_awk_incop_type_t +enum qse_awk_incop_type_t { /* if you change this, you have to change * __incop_str in tree.c accordingly. */ - ASE_AWK_INCOP_PLUS, - ASE_AWK_INCOP_MINUS + QSE_AWK_INCOP_PLUS, + QSE_AWK_INCOP_MINUS }; #ifdef __cplusplus extern "C" { #endif -ase_char_t* ase_awk_format ( - ase_awk_run_t* run, ase_str_t* out, ase_str_t* fbu, - const ase_char_t* fmt, ase_size_t fmt_len, - ase_size_t nargs_on_stack, ase_awk_nde_t* args, ase_size_t* len); +qse_char_t* qse_awk_format ( + qse_awk_run_t* run, qse_str_t* out, qse_str_t* fbu, + const qse_char_t* fmt, qse_size_t fmt_len, + qse_size_t nargs_on_stack, qse_awk_nde_t* args, qse_size_t* len); #ifdef __cplusplus } diff --git a/qse/lib/awk/std.c b/qse/lib/awk/std.c index 2ef6311d..f33e40b0 100644 --- a/qse/lib/awk/std.c +++ b/qse/lib/awk/std.c @@ -3,18 +3,18 @@ */ #include "awk.h" -#include -#include -#include +#include +#include +#include #include #include #include -#include +#include typedef struct xtn_t { - ase_awk_prmfns_t prmfns; + qse_awk_prmfns_t prmfns; } xtn_t; typedef struct rxtn_t @@ -22,7 +22,7 @@ typedef struct rxtn_t unsigned int seed; } rxtn_t; -static ase_real_t custom_awk_pow (void* custom, ase_real_t x, ase_real_t y) +static qse_real_t custom_awk_pow (void* custom, qse_real_t x, qse_real_t y) { #if defined(HAVE_POWL) return powl (x, y); @@ -36,44 +36,44 @@ static ase_real_t custom_awk_pow (void* custom, ase_real_t x, ase_real_t y) } static int custom_awk_sprintf ( - void* custom, ase_char_t* buf, ase_size_t size, - const ase_char_t* fmt, ...) + void* custom, qse_char_t* buf, qse_size_t size, + const qse_char_t* fmt, ...) { int n; va_list ap; va_start (ap, fmt); - n = ase_vsprintf (buf, size, fmt, ap); + n = qse_vsprintf (buf, size, fmt, ap); va_end (ap); return n; } -static int add_functions (ase_awk_t* awk); +static int add_functions (qse_awk_t* awk); -ase_awk_t* ase_awk_opensimple (ase_size_t xtnsize) +qse_awk_t* qse_awk_opensimple (qse_size_t xtnsize) { - ase_awk_t* awk; + qse_awk_t* awk; xtn_t* xtn; - awk = ase_awk_open (ASE_MMGR_GETDFL(), xtnsize + ASE_SIZEOF(xtn_t)); - ase_awk_setccls (awk, ASE_CCLS_GETDFL()); + awk = qse_awk_open (QSE_MMGR_GETDFL(), xtnsize + QSE_SIZEOF(xtn_t)); + qse_awk_setccls (awk, QSE_CCLS_GETDFL()); - xtn = (xtn_t*)((ase_byte_t*)ase_awk_getxtn(awk) + xtnsize); + xtn = (xtn_t*)((qse_byte_t*)qse_awk_getxtn(awk) + xtnsize); xtn->prmfns.pow = custom_awk_pow; xtn->prmfns.sprintf = custom_awk_sprintf; - xtn->prmfns.data = ASE_NULL; - ase_awk_setprmfns (awk, &xtn->prmfns); + xtn->prmfns.data = QSE_NULL; + qse_awk_setprmfns (awk, &xtn->prmfns); - ase_awk_setoption (awk, - ASE_AWK_IMPLICIT | ASE_AWK_EXTIO | ASE_AWK_NEWLINE | - ASE_AWK_BASEONE | ASE_AWK_PABLOCK); + qse_awk_setoption (awk, + QSE_AWK_IMPLICIT | QSE_AWK_EXTIO | QSE_AWK_NEWLINE | + QSE_AWK_BASEONE | QSE_AWK_PABLOCK); if (add_functions (awk) == -1) { - ase_awk_close (awk); - return ASE_NULL; + qse_awk_close (awk); + return QSE_NULL; } return awk; @@ -90,100 +90,100 @@ struct sf_t int type; union { - const ase_char_t*const* files; - const ase_char_t* str; + const qse_char_t*const* files; + const qse_char_t* str; } p; - ase_size_t index; /* current file index */ - ase_sio_t* handle; /* the handle to an open file */ + qse_size_t index; /* current file index */ + qse_sio_t* handle; /* the handle to an open file */ } in; struct { - const ase_char_t* file; - ase_sio_t* handle; + const qse_char_t* file; + qse_sio_t* handle; } out; - ase_awk_t* awk; + qse_awk_t* awk; }; -static ase_ssize_t sf_in (int cmd, void* arg, ase_char_t* data, ase_size_t size) +static qse_ssize_t sf_in (int cmd, void* arg, qse_char_t* data, qse_size_t size) { sf_t* sf = (sf_t*)arg; - ase_cint_t c; + qse_cint_t c; - if (cmd == ASE_AWK_IO_OPEN) + if (cmd == QSE_AWK_IO_OPEN) { - if (sf->in.type == ASE_AWK_PARSE_FILES) + if (sf->in.type == QSE_AWK_PARSE_FILES) { - if (sf->in.p.files[sf->in.index] == ASE_NULL) return 0; + if (sf->in.p.files[sf->in.index] == QSE_NULL) return 0; - if (sf->in.p.files[sf->in.index][0] == ASE_T('\0')) + if (sf->in.p.files[sf->in.index][0] == QSE_T('\0')) { - sf->in.handle = ase_sio_in; + sf->in.handle = qse_sio_in; } else { - sf->in.handle = ase_sio_open ( - ase_awk_getmmgr(sf->awk), + sf->in.handle = qse_sio_open ( + qse_awk_getmmgr(sf->awk), 0, sf->in.p.files[sf->in.index], - ASE_SIO_READ + QSE_SIO_READ ); - if (sf->in.handle == ASE_NULL) return -1; + if (sf->in.handle == QSE_NULL) return -1; } /* - ase_awk_setsinname (); + qse_awk_setsinname (); */ } return 1; } - else if (cmd == ASE_AWK_IO_CLOSE) + else if (cmd == QSE_AWK_IO_CLOSE) { - if (sf->in.handle != ASE_NULL && - sf->in.handle != ase_sio_in && - sf->in.handle != ase_sio_out && - sf->in.handle != ase_sio_err) + if (sf->in.handle != QSE_NULL && + sf->in.handle != qse_sio_in && + sf->in.handle != qse_sio_out && + sf->in.handle != qse_sio_err) { - ase_sio_close (sf->in.handle); + qse_sio_close (sf->in.handle); } return 0; } - else if (cmd == ASE_AWK_IO_READ) + else if (cmd == QSE_AWK_IO_READ) { - ase_ssize_t n = 0; + qse_ssize_t n = 0; - if (sf->in.type == ASE_AWK_PARSE_FILES) + if (sf->in.type == QSE_AWK_PARSE_FILES) { - ase_sio_t* sio; + qse_sio_t* sio; retry: sio = sf->in.handle; - n = ase_sio_getsx (sio, data, size); - if (n == 0 && sf->in.p.files[++sf->in.index] != ASE_NULL) + n = qse_sio_getsx (sio, data, size); + if (n == 0 && sf->in.p.files[++sf->in.index] != QSE_NULL) { - if (sio != ase_sio_in) ase_sio_close (sio); - if (sf->in.p.files[sf->in.index][0] == ASE_T('\0')) + if (sio != qse_sio_in) qse_sio_close (sio); + if (sf->in.p.files[sf->in.index][0] == QSE_T('\0')) { - sf->in.handle = ase_sio_in; + sf->in.handle = qse_sio_in; } else { - sf->in.handle = ase_sio_open ( - ase_awk_getmmgr(sf->awk), + sf->in.handle = qse_sio_open ( + qse_awk_getmmgr(sf->awk), 0, sf->in.p.files[sf->in.index], - ASE_SIO_READ + QSE_SIO_READ ); - if (sf->in.handle == ASE_NULL) return -1; + if (sf->in.handle == QSE_NULL) return -1; } /* TODO: reset internal line counters... set new source name.... - ase_awk_setsinname (); + qse_awk_setsinname (); */ goto retry; @@ -191,7 +191,7 @@ static ase_ssize_t sf_in (int cmd, void* arg, ase_char_t* data, ase_size_t size) } else { - while (n < size && sf->in.p.str[sf->in.index] != ASE_T('\0')) + while (n < size && sf->in.p.str[sf->in.index] != QSE_T('\0')) { data[n++] = sf->in.p.str[sf->in.index++]; } @@ -203,60 +203,60 @@ static ase_ssize_t sf_in (int cmd, void* arg, ase_char_t* data, ase_size_t size) return -1; } -static ase_ssize_t sf_out (int cmd, void* arg, ase_char_t* data, ase_size_t size) +static qse_ssize_t sf_out (int cmd, void* arg, qse_char_t* data, qse_size_t size) { sf_t* sf = (sf_t*)arg; - if (cmd == ASE_AWK_IO_OPEN) + if (cmd == QSE_AWK_IO_OPEN) { - if (sf->out.file[0] == ASE_T('\0')) + if (sf->out.file[0] == QSE_T('\0')) { - sf->out.handle = ase_sio_out; + sf->out.handle = qse_sio_out; } else { - sf->out.handle = ase_sio_open ( - ase_awk_getmmgr(sf->awk), + sf->out.handle = qse_sio_open ( + qse_awk_getmmgr(sf->awk), 0, sf->out.file, - ASE_SIO_WRITE|ASE_SIO_CREATE|ASE_SIO_TRUNCATE + QSE_SIO_WRITE|QSE_SIO_CREATE|QSE_SIO_TRUNCATE ); - if (sf->out.handle == ASE_NULL) return -1; + if (sf->out.handle == QSE_NULL) return -1; } return 1; } - else if (cmd == ASE_AWK_IO_CLOSE) + else if (cmd == QSE_AWK_IO_CLOSE) { - if (sf->out.handle != ASE_NULL) + if (sf->out.handle != QSE_NULL) { - ase_sio_flush (sf->out.handle); - if (sf->out.handle != ase_sio_in && - sf->out.handle != ase_sio_out && - sf->out.handle != ase_sio_err) + qse_sio_flush (sf->out.handle); + if (sf->out.handle != qse_sio_in && + sf->out.handle != qse_sio_out && + sf->out.handle != qse_sio_err) { - ase_sio_close (sf->out.handle); + qse_sio_close (sf->out.handle); } } return 0; } - else if (cmd == ASE_AWK_IO_WRITE) + else if (cmd == QSE_AWK_IO_WRITE) { /* - ase_size_t left = size; + qse_size_t left = size; while (left > 0) { - if (*data == ASE_T('\0')) + if (*data == QSE_T('\0')) { - if (ase_fputc (*data, sf->out.handle) == ASE_CHAR_EOF) return -1; + if (qse_fputc (*data, sf->out.handle) == QSE_CHAR_EOF) return -1; left -= 1; data += 1; } else { - int chunk = (left > ASE_TYPE_MAX(int))? ASE_TYPE_MAX(int): (int)left; - int n = ase_fprintf (sf->out.handle, ASE_T("%.*s"), chunk, data); + int chunk = (left > QSE_TYPE_MAX(int))? QSE_TYPE_MAX(int): (int)left; + int n = qse_fprintf (sf->out.handle, QSE_T("%.*s"), chunk, data); if (n < 0) return -1; left -= n; data += n; } @@ -264,45 +264,45 @@ static ase_ssize_t sf_out (int cmd, void* arg, ase_char_t* data, ase_size_t size } */ - return ase_sio_putsx (sf->out.handle, data, size); + return qse_sio_putsx (sf->out.handle, data, size); } return -1; } -int ase_awk_parsesimple ( - ase_awk_t* awk, const void* isp, int ist, const ase_char_t* osf) +int qse_awk_parsesimple ( + qse_awk_t* awk, const void* isp, int ist, const qse_char_t* osf) { sf_t sf; - ase_awk_srcios_t sio; + qse_awk_srcios_t sio; - if (isp == ASE_NULL) + if (isp == QSE_NULL) { - ase_awk_seterrnum (awk, ASE_AWK_EINVAL); + qse_awk_seterrnum (awk, QSE_AWK_EINVAL); return -1; } - if (ist == ASE_AWK_PARSE_FILES) sf.in.p.files = isp; - else if (ist == ASE_AWK_PARSE_STRING) sf.in.p.str = isp; + if (ist == QSE_AWK_PARSE_FILES) sf.in.p.files = isp; + else if (ist == QSE_AWK_PARSE_STRING) sf.in.p.str = isp; else { - ase_awk_seterrnum (awk, ASE_AWK_EINVAL); + qse_awk_seterrnum (awk, QSE_AWK_EINVAL); return -1; } sf.in.type = ist; sf.in.index = 0; - sf.in.handle = ASE_NULL; + sf.in.handle = QSE_NULL; sf.out.file = osf; - sf.out.handle = ASE_NULL; + sf.out.handle = QSE_NULL; sf.awk = awk; sio.in = sf_in; - sio.out = (osf == ASE_NULL)? ASE_NULL: sf_out; + sio.out = (osf == QSE_NULL)? QSE_NULL: sf_out; sio.data = &sf; - return ase_awk_parse (awk, &sio); + return qse_awk_parse (awk, &sio); } /*** RUNSIMPLE ***/ @@ -311,77 +311,77 @@ typedef struct runio_data_t { struct { - ase_char_t** files; - ase_size_t index; + qse_char_t** files; + qse_size_t index; } ic; /* input console */ } runio_data_t; -static ase_ssize_t awk_extio_pipe ( - int cmd, void* arg, ase_char_t* data, ase_size_t size) +static qse_ssize_t awk_extio_pipe ( + int cmd, void* arg, qse_char_t* data, qse_size_t size) { - ase_awk_extio_t* epa = (ase_awk_extio_t*)arg; + qse_awk_extio_t* epa = (qse_awk_extio_t*)arg; switch (cmd) { - case ASE_AWK_IO_OPEN: + case QSE_AWK_IO_OPEN: { - ase_sio_t* handle; + qse_sio_t* handle; int mode; - if (epa->mode == ASE_AWK_EXTIO_PIPE_READ) + if (epa->mode == QSE_AWK_EXTIO_PIPE_READ) { - mode = ASE_SIO_READ; + mode = QSE_SIO_READ; } - else if (epa->mode == ASE_AWK_EXTIO_PIPE_WRITE) + else if (epa->mode == QSE_AWK_EXTIO_PIPE_WRITE) { - mode = ASE_SIO_WRITE | - ASE_SIO_TRUNCATE | - ASE_SIO_CREATE; + mode = QSE_SIO_WRITE | + QSE_SIO_TRUNCATE | + QSE_SIO_CREATE; } else return -1; /* TODO: any way to set the error number? */ - //dprint (ASE_T("opening %s of type %d (pipe)\n"), epa->name, epa->type); + //dprint (QSE_T("opening %s of type %d (pipe)\n"), epa->name, epa->type); // TOOD: pipe open.... - handle = ase_sio_open (ase_awk_getrunmmgr(epa->run), 0, epa->name, mode); - if (handle == ASE_NULL) return -1; + handle = qse_sio_open (qse_awk_getrunmmgr(epa->run), 0, epa->name, mode); + if (handle == QSE_NULL) return -1; epa->handle = (void*)handle; return 1; } - case ASE_AWK_IO_CLOSE: + case QSE_AWK_IO_CLOSE: { - //dprint (ASE_T("closing %s of type (pipe) %d\n"), epa->name, epa->type); - ase_sio_close ((ase_sio_t*)epa->handle); - epa->handle = ASE_NULL; + //dprint (QSE_T("closing %s of type (pipe) %d\n"), epa->name, epa->type); + qse_sio_close ((qse_sio_t*)epa->handle); + epa->handle = QSE_NULL; return 0; } - case ASE_AWK_IO_READ: + case QSE_AWK_IO_READ: { - return ase_sio_getsx ( - (ase_sio_t*)epa->handle, + return qse_sio_getsx ( + (qse_sio_t*)epa->handle, data, size ); } - case ASE_AWK_IO_WRITE: + case QSE_AWK_IO_WRITE: { - return ase_sio_putsx ( - (ase_sio_t*)epa->handle, + return qse_sio_putsx ( + (qse_sio_t*)epa->handle, data, size ); } - case ASE_AWK_IO_FLUSH: + case QSE_AWK_IO_FLUSH: { - /*if (epa->mode == ASE_AWK_EXTIO_PIPE_READ) return -1;*/ - return ase_sio_flush ((ase_sio_t*)epa->handle); + /*if (epa->mode == QSE_AWK_EXTIO_PIPE_READ) return -1;*/ + return qse_sio_flush ((qse_sio_t*)epa->handle); } - case ASE_AWK_IO_NEXT: + case QSE_AWK_IO_NEXT: { return -1; } @@ -390,50 +390,50 @@ static ase_ssize_t awk_extio_pipe ( return -1; } -static ase_ssize_t awk_extio_file ( - int cmd, void* arg, ase_char_t* data, ase_size_t size) +static qse_ssize_t awk_extio_file ( + int cmd, void* arg, qse_char_t* data, qse_size_t size) { - ase_awk_extio_t* epa = (ase_awk_extio_t*)arg; + qse_awk_extio_t* epa = (qse_awk_extio_t*)arg; switch (cmd) { - case ASE_AWK_IO_OPEN: + case QSE_AWK_IO_OPEN: { - ase_sio_t* handle; + qse_sio_t* handle; int mode; - if (epa->mode == ASE_AWK_EXTIO_FILE_READ) + if (epa->mode == QSE_AWK_EXTIO_FILE_READ) { - mode = ASE_SIO_READ; + mode = QSE_SIO_READ; } - else if (epa->mode == ASE_AWK_EXTIO_FILE_WRITE) + else if (epa->mode == QSE_AWK_EXTIO_FILE_WRITE) { - mode = ASE_SIO_WRITE | - ASE_SIO_CREATE | - ASE_SIO_TRUNCATE; + mode = QSE_SIO_WRITE | + QSE_SIO_CREATE | + QSE_SIO_TRUNCATE; } - else if (epa->mode == ASE_AWK_EXTIO_FILE_APPEND) + else if (epa->mode == QSE_AWK_EXTIO_FILE_APPEND) { - mode = ASE_SIO_APPEND | - ASE_SIO_CREATE; + mode = QSE_SIO_APPEND | + QSE_SIO_CREATE; } else return -1; /* TODO: any way to set the error number? */ - //dprint (ASE_T("opening %s of type %d (file)\n"), epa->name, epa->type); - handle = ase_sio_open ( - ase_awk_getrunmmgr(epa->run), + //dprint (QSE_T("opening %s of type %d (file)\n"), epa->name, epa->type); + handle = qse_sio_open ( + qse_awk_getrunmmgr(epa->run), 0, epa->name, mode ); - if (handle == ASE_NULL) + if (handle == QSE_NULL) { - ase_cstr_t errarg; + qse_cstr_t errarg; errarg.ptr = epa->name; - errarg.len = ase_strlen(epa->name); + errarg.len = qse_strlen(epa->name); - ase_awk_setrunerror (epa->run, ASE_AWK_EOPEN, 0, &errarg, 1); + qse_awk_setrunerror (epa->run, QSE_AWK_EOPEN, 0, &errarg, 1); return -1; } @@ -441,38 +441,38 @@ static ase_ssize_t awk_extio_file ( return 1; } - case ASE_AWK_IO_CLOSE: + case QSE_AWK_IO_CLOSE: { - //dprint (ASE_T("closing %s of type %d (file)\n"), epa->name, epa->type); - ase_sio_close ((ase_sio_t*)epa->handle); - epa->handle = ASE_NULL; + //dprint (QSE_T("closing %s of type %d (file)\n"), epa->name, epa->type); + qse_sio_close ((qse_sio_t*)epa->handle); + epa->handle = QSE_NULL; return 0; } - case ASE_AWK_IO_READ: + case QSE_AWK_IO_READ: { - return ase_sio_getsx ( - (ase_sio_t*)epa->handle, + return qse_sio_getsx ( + (qse_sio_t*)epa->handle, data, size ); } - case ASE_AWK_IO_WRITE: + case QSE_AWK_IO_WRITE: { - return ase_sio_putsx ( - (ase_sio_t*)epa->handle, + return qse_sio_putsx ( + (qse_sio_t*)epa->handle, data, size ); } - case ASE_AWK_IO_FLUSH: + case QSE_AWK_IO_FLUSH: { - return ase_sio_flush ((ase_sio_t*)epa->handle); + return qse_sio_flush ((qse_sio_t*)epa->handle); } - case ASE_AWK_IO_NEXT: + case QSE_AWK_IO_NEXT: { return -1; } @@ -482,55 +482,55 @@ static ase_ssize_t awk_extio_file ( return -1; } -static int open_extio_console (ase_awk_extio_t* epa) +static int open_extio_console (qse_awk_extio_t* epa) { runio_data_t* rd = (runio_data_t*)epa->data; - //dprint (ASE_T("opening console[%s] of type %x\n"), epa->name, epa->type); + //dprint (QSE_T("opening console[%s] of type %x\n"), epa->name, epa->type); - if (epa->mode == ASE_AWK_EXTIO_CONSOLE_READ) + if (epa->mode == QSE_AWK_EXTIO_CONSOLE_READ) { - if (rd->ic.files[rd->ic.index] == ASE_NULL) + if (rd->ic.files[rd->ic.index] == QSE_NULL) { /* no more input file */ - //dprint (ASE_T("console - no more file\n"));; + //dprint (QSE_T("console - no more file\n"));; return 0; } - if (rd->ic.files[rd->ic.index][0] == ASE_T('\0')) + if (rd->ic.files[rd->ic.index][0] == QSE_T('\0')) { - //dprint (ASE_T(" console(r) - \n")); - epa->handle = ase_sio_in; + //dprint (QSE_T(" console(r) - \n")); + epa->handle = qse_sio_in; } else { /* a temporary variable fp is used here not to change * any fields of epa when the open operation fails */ - ase_sio_t* fp; + qse_sio_t* fp; - fp = ase_sio_open ( - ase_awk_getrunmmgr(epa->run), + fp = qse_sio_open ( + qse_awk_getrunmmgr(epa->run), 0, rd->ic.files[rd->ic.index], - ASE_SIO_READ + QSE_SIO_READ ); - if (fp == ASE_NULL) + if (fp == QSE_NULL) { - ase_cstr_t errarg; + qse_cstr_t errarg; errarg.ptr = rd->ic.files[rd->ic.index]; - errarg.len = ase_strlen(rd->ic.files[rd->ic.index]); + errarg.len = qse_strlen(rd->ic.files[rd->ic.index]); - ase_awk_setrunerror (epa->run, ASE_AWK_EOPEN, 0, &errarg, 1); + qse_awk_setrunerror (epa->run, QSE_AWK_EOPEN, 0, &errarg, 1); return -1; } - //dprint (ASE_T(" console(r) - %s\n"), rd->ic.files[rd->ic.index]); - if (ase_awk_setfilename ( + //dprint (QSE_T(" console(r) - %s\n"), rd->ic.files[rd->ic.index]); + if (qse_awk_setfilename ( epa->run, rd->ic.files[rd->ic.index], - ase_strlen(rd->ic.files[rd->ic.index])) == -1) + qse_strlen(rd->ic.files[rd->ic.index])) == -1) { - ase_sio_close (fp); + qse_sio_close (fp); return -1; } @@ -540,119 +540,119 @@ static int open_extio_console (ase_awk_extio_t* epa) rd->ic.index++; return 1; } - else if (epa->mode == ASE_AWK_EXTIO_CONSOLE_WRITE) + else if (epa->mode == QSE_AWK_EXTIO_CONSOLE_WRITE) { - //dprint (ASE_T(" console(w) - \n")); + //dprint (QSE_T(" console(w) - \n")); - if (ase_awk_setofilename (epa->run, ASE_T(""), 0) == -1) + if (qse_awk_setofilename (epa->run, QSE_T(""), 0) == -1) { return -1; } - epa->handle = ase_sio_out; + epa->handle = qse_sio_out; return 1; } return -1; } -static ase_ssize_t awk_extio_console ( - int cmd, void* arg, ase_char_t* data, ase_size_t size) +static qse_ssize_t awk_extio_console ( + int cmd, void* arg, qse_char_t* data, qse_size_t size) { - ase_awk_extio_t* epa = (ase_awk_extio_t*)arg; + qse_awk_extio_t* epa = (qse_awk_extio_t*)arg; runio_data_t* rd = (runio_data_t*)epa->data; - if (cmd == ASE_AWK_IO_OPEN) + if (cmd == QSE_AWK_IO_OPEN) { return open_extio_console (epa); } - else if (cmd == ASE_AWK_IO_CLOSE) + else if (cmd == QSE_AWK_IO_CLOSE) { - //dprint (ASE_T("closing console of type %x\n"), epa->type); + //dprint (QSE_T("closing console of type %x\n"), epa->type); - if (epa->handle != ASE_NULL && - epa->handle != ase_sio_in && - epa->handle != ase_sio_out && - epa->handle != ase_sio_err) + if (epa->handle != QSE_NULL && + epa->handle != qse_sio_in && + epa->handle != qse_sio_out && + epa->handle != qse_sio_err) { - ase_sio_close ((ase_sio_t*)epa->handle); + qse_sio_close ((qse_sio_t*)epa->handle); } return 0; } - else if (cmd == ASE_AWK_IO_READ) + else if (cmd == QSE_AWK_IO_READ) { - ase_ssize_t n; + qse_ssize_t n; - while ((n = ase_sio_getsx((ase_sio_t*)epa->handle,data,size)) == 0) + while ((n = qse_sio_getsx((qse_sio_t*)epa->handle,data,size)) == 0) { /* it has reached the end of the current file. * open the next file if available */ - if (rd->ic.files[rd->ic.index] == ASE_NULL) + if (rd->ic.files[rd->ic.index] == QSE_NULL) { /* no more input console */ return 0; } - if (rd->ic.files[rd->ic.index][0] == ASE_T('\0')) + if (rd->ic.files[rd->ic.index][0] == QSE_T('\0')) { - if (epa->handle != ASE_NULL && - epa->handle != ase_sio_in && - epa->handle != ase_sio_out && - epa->handle != ase_sio_err) + if (epa->handle != QSE_NULL && + epa->handle != qse_sio_in && + epa->handle != qse_sio_out && + epa->handle != qse_sio_err) { - ase_sio_close ((ase_sio_t*)epa->handle); + qse_sio_close ((qse_sio_t*)epa->handle); } - epa->handle = ase_sio_in; + epa->handle = qse_sio_in; } else { - ase_sio_t* fp; + qse_sio_t* fp; - fp = ase_sio_open ( - ase_awk_getrunmmgr(epa->run), + fp = qse_sio_open ( + qse_awk_getrunmmgr(epa->run), 0, rd->ic.files[rd->ic.index], - ASE_SIO_READ + QSE_SIO_READ ); - if (fp == ASE_NULL) + if (fp == QSE_NULL) { - ase_cstr_t errarg; + qse_cstr_t errarg; errarg.ptr = rd->ic.files[rd->ic.index]; - errarg.len = ase_strlen(rd->ic.files[rd->ic.index]); + errarg.len = qse_strlen(rd->ic.files[rd->ic.index]); - ase_awk_setrunerror (epa->run, ASE_AWK_EOPEN, 0, &errarg, 1); + qse_awk_setrunerror (epa->run, QSE_AWK_EOPEN, 0, &errarg, 1); return -1; } - if (ase_awk_setfilename ( + if (qse_awk_setfilename ( epa->run, rd->ic.files[rd->ic.index], - ase_strlen(rd->ic.files[rd->ic.index])) == -1) + qse_strlen(rd->ic.files[rd->ic.index])) == -1) { - ase_sio_close (fp); + qse_sio_close (fp); return -1; } - if (ase_awk_setglobal ( - epa->run, ASE_AWK_GLOBAL_FNR, ase_awk_val_zero) == -1) + if (qse_awk_setglobal ( + epa->run, QSE_AWK_GLOBAL_FNR, qse_awk_val_zero) == -1) { /* need to reset FNR */ - ase_sio_close (fp); + qse_sio_close (fp); return -1; } - if (epa->handle != ASE_NULL && - epa->handle != ase_sio_in && - epa->handle != ase_sio_out && - epa->handle != ase_sio_err) + if (epa->handle != QSE_NULL && + epa->handle != qse_sio_in && + epa->handle != qse_sio_out && + epa->handle != qse_sio_err) { - ase_sio_close ((ase_sio_t*)epa->handle); + qse_sio_close ((qse_sio_t*)epa->handle); } - //dprint (ASE_T("open the next console [%s]\n"), rd->ic.files[rd->ic.index]); + //dprint (QSE_T("open the next console [%s]\n"), rd->ic.files[rd->ic.index]); epa->handle = fp; } @@ -661,24 +661,24 @@ static ase_ssize_t awk_extio_console ( return n; } - else if (cmd == ASE_AWK_IO_WRITE) + else if (cmd == QSE_AWK_IO_WRITE) { - return ase_sio_putsx ( - (ase_sio_t*)epa->handle, + return qse_sio_putsx ( + (qse_sio_t*)epa->handle, data, size ); } - else if (cmd == ASE_AWK_IO_FLUSH) + else if (cmd == QSE_AWK_IO_FLUSH) { - return ase_sio_flush ((ase_sio_t*)epa->handle); + return qse_sio_flush ((qse_sio_t*)epa->handle); } - else if (cmd == ASE_AWK_IO_NEXT) + else if (cmd == QSE_AWK_IO_NEXT) { int n; - ase_sio_t* fp = (ase_sio_t*)epa->handle; + qse_sio_t* fp = (qse_sio_t*)epa->handle; - //dprint (ASE_T("switching console[%s] of type %x\n"), epa->name, epa->type); + //dprint (QSE_T("switching console[%s] of type %x\n"), epa->name, epa->type); n = open_extio_console(epa); if (n == -1) return -1; @@ -689,12 +689,12 @@ static ase_ssize_t awk_extio_console ( return 0; } - if (fp != ASE_NULL && - fp != ase_sio_in && - fp != ase_sio_out && - fp != ase_sio_err) + if (fp != QSE_NULL && + fp != qse_sio_in && + fp != qse_sio_out && + fp != qse_sio_err) { - ase_sio_close (fp); + qse_sio_close (fp); } return n; @@ -703,12 +703,12 @@ static ase_ssize_t awk_extio_console ( return -1; } -int ase_awk_runsimple (ase_awk_t* awk, ase_char_t** icf, ase_awk_runcbs_t* cbs) +int qse_awk_runsimple (qse_awk_t* awk, qse_char_t** icf, qse_awk_runcbs_t* cbs) { - ase_awk_runios_t ios; + qse_awk_runios_t ios; runio_data_t rd; rxtn_t rxtn; - ase_ntime_t now; + qse_ntime_t now; rd.ic.files = icf; rd.ic.index = 0; @@ -718,17 +718,17 @@ int ase_awk_runsimple (ase_awk_t* awk, ase_char_t** icf, ase_awk_runcbs_t* cbs) ios.console = awk_extio_console; ios.data = &rd; - if (ase_gettime (&now) == -1) rxtn.seed = 0; + if (qse_gettime (&now) == -1) rxtn.seed = 0; else rxtn.seed = (unsigned int)now; srand (rxtn.seed); - return ase_awk_run ( + return qse_awk_run ( awk, - ASE_NULL/*mfn*/, + QSE_NULL/*mfn*/, &ios, cbs, - ASE_NULL/*runarg*/, - &rxtn/*ASE_NULL*/ + QSE_NULL/*runarg*/, + &rxtn/*QSE_NULL*/ ); } @@ -742,105 +742,105 @@ enum }; static int bfn_math_1 ( - ase_awk_run_t* run, const ase_char_t* fnm, ase_size_t fnl, int type, void* f) + qse_awk_run_t* run, const qse_char_t* fnm, qse_size_t fnl, int type, void* f) { - ase_size_t nargs; - ase_awk_val_t* a0; - ase_long_t lv; - ase_real_t rv; - ase_awk_val_t* r; + qse_size_t nargs; + qse_awk_val_t* a0; + qse_long_t lv; + qse_real_t rv; + qse_awk_val_t* r; int n; - nargs = ase_awk_getnargs (run); - ASE_ASSERT (nargs == 1); + nargs = qse_awk_getnargs (run); + QSE_ASSERT (nargs == 1); - a0 = ase_awk_getarg (run, 0); + a0 = qse_awk_getarg (run, 0); - n = ase_awk_valtonum (run, a0, &lv, &rv); + n = qse_awk_valtonum (run, a0, &lv, &rv); if (n == -1) return -1; - if (n == 0) rv = (ase_real_t)lv; + if (n == 0) rv = (qse_real_t)lv; if (type == BFN_MATH_LD) { long double (*rf) (long double) = (long double(*)(long double))f; - r = ase_awk_makerealval (run, rf(rv)); + r = qse_awk_makerealval (run, rf(rv)); } else if (type == BFN_MATH_D) { double (*rf) (double) = (double(*)(double))f; - r = ase_awk_makerealval (run, rf(rv)); + r = qse_awk_makerealval (run, rf(rv)); } else { - ASE_ASSERT (type == BFN_MATH_F); + QSE_ASSERT (type == BFN_MATH_F); float (*rf) (float) = (float(*)(float))f; - r = ase_awk_makerealval (run, rf(rv)); + r = qse_awk_makerealval (run, rf(rv)); } - if (r == ASE_NULL) + if (r == QSE_NULL) { - ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM); + qse_awk_setrunerrnum (run, QSE_AWK_ENOMEM); return -1; } - ase_awk_setretval (run, r); + qse_awk_setretval (run, r); return 0; } static int bfn_math_2 ( - ase_awk_run_t* run, const ase_char_t* fnm, ase_size_t fnl, int type, void* f) + qse_awk_run_t* run, const qse_char_t* fnm, qse_size_t fnl, int type, void* f) { - ase_size_t nargs; - ase_awk_val_t* a0, * a1; - ase_long_t lv0, lv1; - ase_real_t rv0, rv1; - ase_awk_val_t* r; + qse_size_t nargs; + qse_awk_val_t* a0, * a1; + qse_long_t lv0, lv1; + qse_real_t rv0, rv1; + qse_awk_val_t* r; int n; - nargs = ase_awk_getnargs (run); - ASE_ASSERT (nargs == 2); + nargs = qse_awk_getnargs (run); + QSE_ASSERT (nargs == 2); - a0 = ase_awk_getarg (run, 0); - a1 = ase_awk_getarg (run, 1); + a0 = qse_awk_getarg (run, 0); + a1 = qse_awk_getarg (run, 1); - n = ase_awk_valtonum (run, a0, &lv0, &rv0); + n = qse_awk_valtonum (run, a0, &lv0, &rv0); if (n == -1) return -1; - if (n == 0) rv0 = (ase_real_t)lv0; + if (n == 0) rv0 = (qse_real_t)lv0; - n = ase_awk_valtonum (run, a1, &lv1, &rv1); + n = qse_awk_valtonum (run, a1, &lv1, &rv1); if (n == -1) return -1; - if (n == 0) rv1 = (ase_real_t)lv1; + if (n == 0) rv1 = (qse_real_t)lv1; if (type == BFN_MATH_LD) { long double (*rf) (long double,long double) = (long double(*)(long double,long double))f; - r = ase_awk_makerealval (run, rf(rv0,rv1)); + r = qse_awk_makerealval (run, rf(rv0,rv1)); } else if (type == BFN_MATH_D) { double (*rf) (double,double) = (double(*)(double,double))f; - r = ase_awk_makerealval (run, rf(rv0,rv1)); + r = qse_awk_makerealval (run, rf(rv0,rv1)); } else { - ASE_ASSERT (type == BFN_MATH_F); + QSE_ASSERT (type == BFN_MATH_F); float (*rf) (float,float) = (float(*)(float,float))f; - r = ase_awk_makerealval (run, rf(rv0,rv1)); + r = qse_awk_makerealval (run, rf(rv0,rv1)); } - if (r == ASE_NULL) + if (r == QSE_NULL) { - ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM); + qse_awk_setrunerrnum (run, QSE_AWK_ENOMEM); return -1; } - ase_awk_setretval (run, r); + qse_awk_setretval (run, r); return 0; } -static int bfn_sin (ase_awk_run_t* run, const ase_char_t* fnm, ase_size_t fnl) +static int bfn_sin (qse_awk_run_t* run, const qse_char_t* fnm, qse_size_t fnl) { return bfn_math_1 (run, fnm, fnl, #if defined(HAVE_SINL) @@ -855,7 +855,7 @@ static int bfn_sin (ase_awk_run_t* run, const ase_char_t* fnm, ase_size_t fnl) ); } -static int bfn_cos (ase_awk_run_t* run, const ase_char_t* fnm, ase_size_t fnl) +static int bfn_cos (qse_awk_run_t* run, const qse_char_t* fnm, qse_size_t fnl) { return bfn_math_1 (run, fnm, fnl, #if defined(HAVE_COSL) @@ -870,7 +870,7 @@ static int bfn_cos (ase_awk_run_t* run, const ase_char_t* fnm, ase_size_t fnl) ); } -static int bfn_tan (ase_awk_run_t* run, const ase_char_t* fnm, ase_size_t fnl) +static int bfn_tan (qse_awk_run_t* run, const qse_char_t* fnm, qse_size_t fnl) { return bfn_math_1 (run, fnm, fnl, #if defined(HAVE_TANL) @@ -885,7 +885,7 @@ static int bfn_tan (ase_awk_run_t* run, const ase_char_t* fnm, ase_size_t fnl) ); } -static int bfn_atan (ase_awk_run_t* run, const ase_char_t* fnm, ase_size_t fnl) +static int bfn_atan (qse_awk_run_t* run, const qse_char_t* fnm, qse_size_t fnl) { return bfn_math_1 (run, fnm, fnl, #if defined(HAVE_ATANL) @@ -900,7 +900,7 @@ static int bfn_atan (ase_awk_run_t* run, const ase_char_t* fnm, ase_size_t fnl) ); } -static int bfn_atan2 (ase_awk_run_t* run, const ase_char_t* fnm, ase_size_t fnl) +static int bfn_atan2 (qse_awk_run_t* run, const qse_char_t* fnm, qse_size_t fnl) { return bfn_math_2 (run, fnm, fnl, #if defined(HAVE_ATAN2L) @@ -915,7 +915,7 @@ static int bfn_atan2 (ase_awk_run_t* run, const ase_char_t* fnm, ase_size_t fnl) ); } -static int bfn_log (ase_awk_run_t* run, const ase_char_t* fnm, ase_size_t fnl) +static int bfn_log (qse_awk_run_t* run, const qse_char_t* fnm, qse_size_t fnl) { return bfn_math_1 (run, fnm, fnl, #if defined(HAVE_LOGL) @@ -930,7 +930,7 @@ static int bfn_log (ase_awk_run_t* run, const ase_char_t* fnm, ase_size_t fnl) ); } -static int bfn_exp (ase_awk_run_t* run, const ase_char_t* fnm, ase_size_t fnl) +static int bfn_exp (qse_awk_run_t* run, const qse_char_t* fnm, qse_size_t fnl) { return bfn_math_1 (run, fnm, fnl, #if defined(HAVE_EXPL) @@ -945,7 +945,7 @@ static int bfn_exp (ase_awk_run_t* run, const ase_char_t* fnm, ase_size_t fnl) ); } -static int bfn_sqrt (ase_awk_run_t* run, const ase_char_t* fnm, ase_size_t fnl) +static int bfn_sqrt (qse_awk_run_t* run, const qse_char_t* fnm, qse_size_t fnl) { return bfn_math_1 (run, fnm, fnl, #if defined(HAVE_SQRTL) @@ -960,142 +960,142 @@ static int bfn_sqrt (ase_awk_run_t* run, const ase_char_t* fnm, ase_size_t fnl) ); } -static int bfn_int (ase_awk_run_t* run, const ase_char_t* fnm, ase_size_t fnl) +static int bfn_int (qse_awk_run_t* run, const qse_char_t* fnm, qse_size_t fnl) { - ase_size_t nargs; - ase_awk_val_t* a0; - ase_long_t lv; - ase_real_t rv; - ase_awk_val_t* r; + qse_size_t nargs; + qse_awk_val_t* a0; + qse_long_t lv; + qse_real_t rv; + qse_awk_val_t* r; int n; - nargs = ase_awk_getnargs (run); - ASE_ASSERT (nargs == 1); + nargs = qse_awk_getnargs (run); + QSE_ASSERT (nargs == 1); - a0 = ase_awk_getarg (run, 0); + a0 = qse_awk_getarg (run, 0); - n = ase_awk_valtonum (run, a0, &lv, &rv); + n = qse_awk_valtonum (run, a0, &lv, &rv); if (n == -1) return -1; - if (n == 1) lv = (ase_long_t)rv; + if (n == 1) lv = (qse_long_t)rv; - r = ase_awk_makeintval (run, lv); - if (r == ASE_NULL) + r = qse_awk_makeintval (run, lv); + if (r == QSE_NULL) { - ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM); + qse_awk_setrunerrnum (run, QSE_AWK_ENOMEM); return -1; } - ase_awk_setretval (run, r); + qse_awk_setretval (run, r); return 0; } -static int bfn_rand (ase_awk_run_t* run, const ase_char_t* fnm, ase_size_t fnl) +static int bfn_rand (qse_awk_run_t* run, const qse_char_t* fnm, qse_size_t fnl) { - ase_awk_val_t* r; + qse_awk_val_t* r; - r = ase_awk_makeintval (run, rand()); - if (r == ASE_NULL) + r = qse_awk_makeintval (run, rand()); + if (r == QSE_NULL) { - ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM); + qse_awk_setrunerrnum (run, QSE_AWK_ENOMEM); return -1; } - ase_awk_setretval (run, r); + qse_awk_setretval (run, r); return 0; } -static int bfn_srand (ase_awk_run_t* run, const ase_char_t* fnm, ase_size_t fnl) +static int bfn_srand (qse_awk_run_t* run, const qse_char_t* fnm, qse_size_t fnl) { - ase_size_t nargs; - ase_awk_val_t* a0; - ase_long_t lv; - ase_real_t rv; - ase_awk_val_t* r; + qse_size_t nargs; + qse_awk_val_t* a0; + qse_long_t lv; + qse_real_t rv; + qse_awk_val_t* r; int n; unsigned int prev; rxtn_t* rxtn; - rxtn = ase_awk_getrundata (run); - nargs = ase_awk_getnargs (run); - ASE_ASSERT (nargs == 0 || nargs == 1); + rxtn = qse_awk_getrundata (run); + nargs = qse_awk_getnargs (run); + QSE_ASSERT (nargs == 0 || nargs == 1); prev = rxtn->seed; if (nargs == 1) { - a0 = ase_awk_getarg (run, 0); + a0 = qse_awk_getarg (run, 0); - n = ase_awk_valtonum (run, a0, &lv, &rv); + n = qse_awk_valtonum (run, a0, &lv, &rv); if (n == -1) return -1; - if (n == 1) lv = (ase_long_t)rv; + if (n == 1) lv = (qse_long_t)rv; rxtn->seed = lv; } else { - ase_ntime_t now; + qse_ntime_t now; - if (ase_gettime(&now) == -1) rxtn->seed >>= 1; + if (qse_gettime(&now) == -1) rxtn->seed >>= 1; else rxtn->seed = (unsigned int)now; } srand (rxtn->seed); - r = ase_awk_makeintval (run, prev); - if (r == ASE_NULL) + r = qse_awk_makeintval (run, prev); + if (r == QSE_NULL) { - ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM); + qse_awk_setrunerrnum (run, QSE_AWK_ENOMEM); return -1; } - ase_awk_setretval (run, r); + qse_awk_setretval (run, r); return 0; } -static int bfn_systime (ase_awk_run_t* run, const ase_char_t* fnm, ase_size_t fnl) +static int bfn_systime (qse_awk_run_t* run, const qse_char_t* fnm, qse_size_t fnl) { - ase_awk_val_t* r; - ase_ntime_t now; + qse_awk_val_t* r; + qse_ntime_t now; int n; - if (ase_gettime(&now) == -1) - r = ase_awk_makeintval (run, ASE_TYPE_MIN(ase_long_t)); + if (qse_gettime(&now) == -1) + r = qse_awk_makeintval (run, QSE_TYPE_MIN(qse_long_t)); else - r = ase_awk_makeintval (run, now / ASE_MSEC_IN_SEC); + r = qse_awk_makeintval (run, now / QSE_MSEC_IN_SEC); - if (r == ASE_NULL) + if (r == QSE_NULL) { - ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM); + qse_awk_setrunerrnum (run, QSE_AWK_ENOMEM); return -1; } - ase_awk_setretval (run, r); + qse_awk_setretval (run, r); return 0; } #define ADD_FUNC(awk,name,min,max,bfn) \ - if (ase_awk_addfunc (\ - (awk), (name), ase_strlen(name), \ - 0, (min), (max), ASE_NULL, (bfn)) == ASE_NULL) return -1; + if (qse_awk_addfunc (\ + (awk), (name), qse_strlen(name), \ + 0, (min), (max), QSE_NULL, (bfn)) == QSE_NULL) return -1; -static int add_functions (ase_awk_t* awk) +static int add_functions (qse_awk_t* awk) { - ADD_FUNC (awk, ASE_T("sin"), 1, 1, bfn_sin); - ADD_FUNC (awk, ASE_T("cos"), 1, 1, bfn_cos); - ADD_FUNC (awk, ASE_T("tan"), 1, 1, bfn_tan); - ADD_FUNC (awk, ASE_T("atan"), 1, 1, bfn_atan); - ADD_FUNC (awk, ASE_T("atan2"), 2, 2, bfn_atan2); - ADD_FUNC (awk, ASE_T("log"), 1, 1, bfn_log); - ADD_FUNC (awk, ASE_T("exp"), 1, 1, bfn_exp); - ADD_FUNC (awk, ASE_T("sqrt"), 1, 1, bfn_sqrt); - ADD_FUNC (awk, ASE_T("int"), 1, 1, bfn_int); - ADD_FUNC (awk, ASE_T("rand"), 0, 0, bfn_rand); - ADD_FUNC (awk, ASE_T("srand"), 0, 1, bfn_srand); - ADD_FUNC (awk, ASE_T("systime"), 0, 0, bfn_systime); + ADD_FUNC (awk, QSE_T("sin"), 1, 1, bfn_sin); + ADD_FUNC (awk, QSE_T("cos"), 1, 1, bfn_cos); + ADD_FUNC (awk, QSE_T("tan"), 1, 1, bfn_tan); + ADD_FUNC (awk, QSE_T("atan"), 1, 1, bfn_atan); + ADD_FUNC (awk, QSE_T("atan2"), 2, 2, bfn_atan2); + ADD_FUNC (awk, QSE_T("log"), 1, 1, bfn_log); + ADD_FUNC (awk, QSE_T("exp"), 1, 1, bfn_exp); + ADD_FUNC (awk, QSE_T("sqrt"), 1, 1, bfn_sqrt); + ADD_FUNC (awk, QSE_T("int"), 1, 1, bfn_int); + ADD_FUNC (awk, QSE_T("rand"), 0, 0, bfn_rand); + ADD_FUNC (awk, QSE_T("srand"), 0, 1, bfn_srand); + ADD_FUNC (awk, QSE_T("systime"), 0, 0, bfn_systime); /* - ADD_FUNC (awk, ASE_T("strftime"), 0, 2, bfn_strftime); - ADD_FUNC (awk, ASE_T("strfgmtime"), 0, 2, bfn_strfgmtime); - ADD_FUNC (awk, ASE_T("system"), 1, 1, bfn_system); + ADD_FUNC (awk, QSE_T("strftime"), 0, 2, bfn_strftime); + ADD_FUNC (awk, QSE_T("strfgmtime"), 0, 2, bfn_strfgmtime); + ADD_FUNC (awk, QSE_T("system"), 1, 1, bfn_system); */ return 0; diff --git a/qse/lib/awk/tree.c b/qse/lib/awk/tree.c index 0f8470f6..02b1c35d 100644 --- a/qse/lib/awk/tree.c +++ b/qse/lib/awk/tree.c @@ -6,100 +6,100 @@ #include "awk.h" -static const ase_char_t* assop_str[] = +static const qse_char_t* assop_str[] = { - ASE_T("="), - ASE_T("+="), - ASE_T("-="), - ASE_T("*="), - ASE_T("/="), - ASE_T("//="), - ASE_T("%="), - ASE_T("**="), - ASE_T(">>="), - ASE_T("<<="), - ASE_T("&="), - ASE_T("^="), - ASE_T("|=") + QSE_T("="), + QSE_T("+="), + QSE_T("-="), + QSE_T("*="), + QSE_T("/="), + QSE_T("//="), + QSE_T("%="), + QSE_T("**="), + QSE_T(">>="), + QSE_T("<<="), + QSE_T("&="), + QSE_T("^="), + QSE_T("|=") }; -static const ase_char_t* binop_str[][2] = +static const qse_char_t* binop_str[][2] = { - { ASE_T("||"), ASE_T("||") }, - { ASE_T("&&"), ASE_T("&&") }, - { ASE_T("in"), ASE_T("in") }, + { QSE_T("||"), QSE_T("||") }, + { QSE_T("&&"), QSE_T("&&") }, + { QSE_T("in"), QSE_T("in") }, - { ASE_T("|"), ASE_T("|") }, - { ASE_T("^"), ASE_T("^") }, - { ASE_T("&"), ASE_T("&") }, + { QSE_T("|"), QSE_T("|") }, + { QSE_T("^"), QSE_T("^") }, + { QSE_T("&"), QSE_T("&") }, - { ASE_T("=="), ASE_T("==") }, - { ASE_T("!="), ASE_T("!=") }, - { ASE_T(">"), ASE_T(">") }, - { ASE_T(">="), ASE_T(">=") }, - { ASE_T("<"), ASE_T("<") }, - { ASE_T("<="), ASE_T("<=") }, + { QSE_T("=="), QSE_T("==") }, + { QSE_T("!="), QSE_T("!=") }, + { QSE_T(">"), QSE_T(">") }, + { QSE_T(">="), QSE_T(">=") }, + { QSE_T("<"), QSE_T("<") }, + { QSE_T("<="), QSE_T("<=") }, - { ASE_T("<<"), ASE_T("<<") }, - { ASE_T(">>"), ASE_T(">>") }, + { QSE_T("<<"), QSE_T("<<") }, + { QSE_T(">>"), QSE_T(">>") }, - { ASE_T("+"), ASE_T("+") }, - { ASE_T("-"), ASE_T("-") }, - { ASE_T("*"), ASE_T("*") }, - { ASE_T("/"), ASE_T("/") }, - { ASE_T("//"), ASE_T("//") }, - { ASE_T("%"), ASE_T("%") }, - { ASE_T("**"), ASE_T("**") }, + { QSE_T("+"), QSE_T("+") }, + { QSE_T("-"), QSE_T("-") }, + { QSE_T("*"), QSE_T("*") }, + { QSE_T("/"), QSE_T("/") }, + { QSE_T("//"), QSE_T("//") }, + { QSE_T("%"), QSE_T("%") }, + { QSE_T("**"), QSE_T("**") }, - { ASE_T(" "), ASE_T(".") }, - { ASE_T("~"), ASE_T("~") }, - { ASE_T("!~"), ASE_T("!~") } + { QSE_T(" "), QSE_T(".") }, + { QSE_T("~"), QSE_T("~") }, + { QSE_T("!~"), QSE_T("!~") } }; -static const ase_char_t* unrop_str[] = +static const qse_char_t* unrop_str[] = { - ASE_T("+"), - ASE_T("-"), - ASE_T("!"), - ASE_T("~") + QSE_T("+"), + QSE_T("-"), + QSE_T("!"), + QSE_T("~") }; -static const ase_char_t* incop_str[] = +static const qse_char_t* incop_str[] = { - ASE_T("++"), - ASE_T("--"), - ASE_T("++"), - ASE_T("--") + QSE_T("++"), + QSE_T("--"), + QSE_T("++"), + QSE_T("--") }; -static const ase_char_t* getline_inop_str[] = +static const qse_char_t* getline_inop_str[] = { - ASE_T("|"), - ASE_T("|&"), - ASE_T("<"), - ASE_T("") + QSE_T("|"), + QSE_T("|&"), + QSE_T("<"), + QSE_T("") }; -static const ase_char_t* print_outop_str[] = +static const qse_char_t* print_outop_str[] = { - ASE_T("|"), - ASE_T("|&"), - ASE_T(">"), - ASE_T(">>"), - ASE_T("") + QSE_T("|"), + QSE_T("|&"), + QSE_T(">"), + QSE_T(">>"), + QSE_T("") }; #define PUT_SRCSTR(awk,str) \ - do { if (ase_awk_putsrcstr (awk, str) == -1) return -1; } while (0) + do { if (qse_awk_putsrcstr (awk, str) == -1) return -1; } while (0) #define PUT_NEWLINE(awk) \ do { \ - if (awk->option & ASE_AWK_CRLF) PUT_SRCSTR (awk, ASE_T("\r")); \ - PUT_SRCSTR (awk, ASE_T("\n")); \ + if (awk->option & QSE_AWK_CRLF) PUT_SRCSTR (awk, QSE_T("\r")); \ + PUT_SRCSTR (awk, QSE_T("\n")); \ } while (0) #define PUT_SRCSTRX(awk,str,len) \ - do { if (ase_awk_putsrcstrx (awk, str, len) == -1) return -1; } while (0) + do { if (qse_awk_putsrcstrx (awk, str, len) == -1) return -1; } while (0) #define PRINT_TABS(awk,depth) \ do { if (print_tabs(awk,depth) == -1) return -1; } while (0) @@ -113,167 +113,167 @@ static const ase_char_t* print_outop_str[] = #define PRINT_STATEMENTS(awk,nde,depth) \ do { if (print_statements(awk,nde,depth) == -1) return -1; } while (0) -static int print_tabs (ase_awk_t* awk, int depth); -static int print_expression (ase_awk_t* awk, ase_awk_nde_t* nde); -static int print_expression_list (ase_awk_t* awk, ase_awk_nde_t* tree); -static int print_statements (ase_awk_t* awk, ase_awk_nde_t* tree, int depth); +static int print_tabs (qse_awk_t* awk, int depth); +static int print_expression (qse_awk_t* awk, qse_awk_nde_t* nde); +static int print_expression_list (qse_awk_t* awk, qse_awk_nde_t* tree); +static int print_statements (qse_awk_t* awk, qse_awk_nde_t* tree, int depth); -static int print_tabs (ase_awk_t* awk, int depth) +static int print_tabs (qse_awk_t* awk, int depth) { while (depth > 0) { - PUT_SRCSTR (awk, ASE_T("\t")); + PUT_SRCSTR (awk, QSE_T("\t")); depth--; } return 0; } -static int print_expression (ase_awk_t* awk, ase_awk_nde_t* nde) +static int print_expression (qse_awk_t* awk, qse_awk_nde_t* nde) { - ase_cstr_t kw; + qse_cstr_t kw; switch (nde->type) { - case ASE_AWK_NDE_GRP: + case QSE_AWK_NDE_GRP: { - ase_awk_nde_t* p = ((ase_awk_nde_grp_t*)nde)->body; + qse_awk_nde_t* p = ((qse_awk_nde_grp_t*)nde)->body; - PUT_SRCSTR (awk, ASE_T("(")); - while (p != ASE_NULL) + PUT_SRCSTR (awk, QSE_T("(")); + while (p != QSE_NULL) { PRINT_EXPRESSION (awk, p); - if (p->next != ASE_NULL) - PUT_SRCSTR (awk, ASE_T(",")); + if (p->next != QSE_NULL) + PUT_SRCSTR (awk, QSE_T(",")); p = p->next; } - PUT_SRCSTR (awk, ASE_T(")")); + PUT_SRCSTR (awk, QSE_T(")")); break; } - case ASE_AWK_NDE_ASS: + case QSE_AWK_NDE_ASS: { - ase_awk_nde_ass_t* px = (ase_awk_nde_ass_t*)nde; + qse_awk_nde_ass_t* px = (qse_awk_nde_ass_t*)nde; PRINT_EXPRESSION (awk, px->left); - PUT_SRCSTR (awk, ASE_T(" ")); + PUT_SRCSTR (awk, QSE_T(" ")); PUT_SRCSTR (awk, assop_str[px->opcode]); - PUT_SRCSTR (awk, ASE_T(" ")); + PUT_SRCSTR (awk, QSE_T(" ")); PRINT_EXPRESSION (awk, px->right); - ASE_ASSERT (px->right->next == ASE_NULL); + QSE_ASSERT (px->right->next == QSE_NULL); break; } - case ASE_AWK_NDE_EXP_BIN: + case QSE_AWK_NDE_EXP_BIN: { - ase_awk_nde_exp_t* px = (ase_awk_nde_exp_t*)nde; + qse_awk_nde_exp_t* px = (qse_awk_nde_exp_t*)nde; - PUT_SRCSTR (awk, ASE_T("(")); + PUT_SRCSTR (awk, QSE_T("(")); PRINT_EXPRESSION (awk, px->left); - ASE_ASSERT (px->left->next == ASE_NULL); + QSE_ASSERT (px->left->next == QSE_NULL); - PUT_SRCSTR (awk, ASE_T(" ")); - PUT_SRCSTR (awk, binop_str[px->opcode][(awk->option & ASE_AWK_IMPLICIT)? 0: 1]); - PUT_SRCSTR (awk, ASE_T(" ")); + PUT_SRCSTR (awk, QSE_T(" ")); + PUT_SRCSTR (awk, binop_str[px->opcode][(awk->option & QSE_AWK_IMPLICIT)? 0: 1]); + PUT_SRCSTR (awk, QSE_T(" ")); - if (px->right->type == ASE_AWK_NDE_ASS) - PUT_SRCSTR (awk, ASE_T("(")); + if (px->right->type == QSE_AWK_NDE_ASS) + PUT_SRCSTR (awk, QSE_T("(")); PRINT_EXPRESSION (awk, px->right); - if (px->right->type == ASE_AWK_NDE_ASS) - PUT_SRCSTR (awk, ASE_T(")")); - ASE_ASSERT (px->right->next == ASE_NULL); - PUT_SRCSTR (awk, ASE_T(")")); + if (px->right->type == QSE_AWK_NDE_ASS) + PUT_SRCSTR (awk, QSE_T(")")); + QSE_ASSERT (px->right->next == QSE_NULL); + PUT_SRCSTR (awk, QSE_T(")")); break; } - case ASE_AWK_NDE_EXP_UNR: + case QSE_AWK_NDE_EXP_UNR: { - ase_awk_nde_exp_t* px = (ase_awk_nde_exp_t*)nde; - ASE_ASSERT (px->right == ASE_NULL); + qse_awk_nde_exp_t* px = (qse_awk_nde_exp_t*)nde; + QSE_ASSERT (px->right == QSE_NULL); - PUT_SRCSTR (awk, ASE_T("(")); + PUT_SRCSTR (awk, QSE_T("(")); PUT_SRCSTR (awk, unrop_str[px->opcode]); - PUT_SRCSTR (awk, ASE_T("(")); + PUT_SRCSTR (awk, QSE_T("(")); PRINT_EXPRESSION (awk, px->left); - PUT_SRCSTR (awk, ASE_T(")")); - PUT_SRCSTR (awk, ASE_T(")")); + PUT_SRCSTR (awk, QSE_T(")")); + PUT_SRCSTR (awk, QSE_T(")")); break; } - case ASE_AWK_NDE_EXP_INCPRE: + case QSE_AWK_NDE_EXP_INCPRE: { - ase_awk_nde_exp_t* px = (ase_awk_nde_exp_t*)nde; - ASE_ASSERT (px->right == ASE_NULL); + qse_awk_nde_exp_t* px = (qse_awk_nde_exp_t*)nde; + QSE_ASSERT (px->right == QSE_NULL); PUT_SRCSTR (awk, incop_str[px->opcode]); - PUT_SRCSTR (awk, ASE_T("(")); + PUT_SRCSTR (awk, QSE_T("(")); PRINT_EXPRESSION (awk, px->left); - PUT_SRCSTR (awk, ASE_T(")")); + PUT_SRCSTR (awk, QSE_T(")")); break; } - case ASE_AWK_NDE_EXP_INCPST: + case QSE_AWK_NDE_EXP_INCPST: { - ase_awk_nde_exp_t* px = (ase_awk_nde_exp_t*)nde; - ASE_ASSERT (px->right == ASE_NULL); + qse_awk_nde_exp_t* px = (qse_awk_nde_exp_t*)nde; + QSE_ASSERT (px->right == QSE_NULL); - PUT_SRCSTR (awk, ASE_T("(")); + PUT_SRCSTR (awk, QSE_T("(")); PRINT_EXPRESSION (awk, px->left); - PUT_SRCSTR (awk, ASE_T(")")); + PUT_SRCSTR (awk, QSE_T(")")); PUT_SRCSTR (awk, incop_str[px->opcode]); break; } - case ASE_AWK_NDE_CND: + case QSE_AWK_NDE_CND: { - ase_awk_nde_cnd_t* px = (ase_awk_nde_cnd_t*)nde; + qse_awk_nde_cnd_t* px = (qse_awk_nde_cnd_t*)nde; - PUT_SRCSTR (awk, ASE_T("(")); + PUT_SRCSTR (awk, QSE_T("(")); PRINT_EXPRESSION (awk, px->test); - PUT_SRCSTR (awk, ASE_T(")?")); + PUT_SRCSTR (awk, QSE_T(")?")); PRINT_EXPRESSION (awk, px->left); - PUT_SRCSTR (awk, ASE_T(":")); + PUT_SRCSTR (awk, QSE_T(":")); PRINT_EXPRESSION (awk, px->right); break; } - case ASE_AWK_NDE_INT: + case QSE_AWK_NDE_INT: { - if (((ase_awk_nde_int_t*)nde)->str == ASE_NULL) + if (((qse_awk_nde_int_t*)nde)->str == QSE_NULL) { - ase_size_t n; + qse_size_t n; - n = ase_awk_longtostr ( - ((ase_awk_nde_int_t*)nde)->val, 10, ASE_NULL, - awk->tmp.fmt, ASE_COUNTOF(awk->tmp.fmt)); + n = qse_awk_longtostr ( + ((qse_awk_nde_int_t*)nde)->val, 10, QSE_NULL, + awk->tmp.fmt, QSE_COUNTOF(awk->tmp.fmt)); PUT_SRCSTRX (awk, awk->tmp.fmt, n); } else { PUT_SRCSTRX (awk, - ((ase_awk_nde_int_t*)nde)->str, - ((ase_awk_nde_int_t*)nde)->len); + ((qse_awk_nde_int_t*)nde)->str, + ((qse_awk_nde_int_t*)nde)->len); } break; } - case ASE_AWK_NDE_REAL: + case QSE_AWK_NDE_REAL: { - if (((ase_awk_nde_real_t*)nde)->str == ASE_NULL) + if (((qse_awk_nde_real_t*)nde)->str == QSE_NULL) { - #if (ASE_SIZEOF_LONG_DOUBLE != 0) && !defined(__MINGW32__) + #if (QSE_SIZEOF_LONG_DOUBLE != 0) && !defined(__MINGW32__) awk->prmfns->sprintf ( awk->prmfns->data, - awk->tmp.fmt, ASE_COUNTOF(awk->tmp.fmt), ASE_T("%Lf"), - (long double)((ase_awk_nde_real_t*)nde)->val); - #elif (ASE_SIZEOF_DOUBLE != 0) + awk->tmp.fmt, QSE_COUNTOF(awk->tmp.fmt), QSE_T("%Lf"), + (long double)((qse_awk_nde_real_t*)nde)->val); + #elif (QSE_SIZEOF_DOUBLE != 0) awk->prmfns->sprintf ( awk->prmfns->data, - awk->tmp.fmt, ASE_COUNTOF(awk->tmp.fmt), ASE_T("%f"), - (double)((ase_awk_nde_real_t*)nde)->val); + awk->tmp.fmt, QSE_COUNTOF(awk->tmp.fmt), QSE_T("%f"), + (double)((qse_awk_nde_real_t*)nde)->val); #else #error unsupported floating-point data type #endif @@ -282,122 +282,122 @@ static int print_expression (ase_awk_t* awk, ase_awk_nde_t* nde) else { PUT_SRCSTRX (awk, - ((ase_awk_nde_real_t*)nde)->str, - ((ase_awk_nde_real_t*)nde)->len); + ((qse_awk_nde_real_t*)nde)->str, + ((qse_awk_nde_real_t*)nde)->len); } break; } - case ASE_AWK_NDE_STR: + case QSE_AWK_NDE_STR: { - ase_char_t* ptr; - ase_size_t len, i; + qse_char_t* ptr; + qse_size_t len, i; - PUT_SRCSTR (awk, ASE_T("\"")); + PUT_SRCSTR (awk, QSE_T("\"")); - ptr = ((ase_awk_nde_str_t*)nde)->buf; - len = ((ase_awk_nde_str_t*)nde)->len; + ptr = ((qse_awk_nde_str_t*)nde)->buf; + len = ((qse_awk_nde_str_t*)nde)->len; for (i = 0; i < len; i++) { /* TODO: maybe more de-escaping?? */ - if (ptr[i] == ASE_T('\n')) - PUT_SRCSTR (awk, ASE_T("\\n")); - else if (ptr[i] == ASE_T('\r')) - PUT_SRCSTR (awk, ASE_T("\\r")); - else if (ptr[i] == ASE_T('\f')) - PUT_SRCSTR (awk, ASE_T("\\f")); - else if (ptr[i] == ASE_T('\b')) - PUT_SRCSTR (awk, ASE_T("\\b")); - else if (ptr[i] == ASE_T('\v')) - PUT_SRCSTR (awk, ASE_T("\\v")); - else if (ptr[i] == ASE_T('\a')) - PUT_SRCSTR (awk, ASE_T("\\a")); - else if (ptr[i] == ASE_T('\0')) - PUT_SRCSTR (awk, ASE_T("\\0")); + if (ptr[i] == QSE_T('\n')) + PUT_SRCSTR (awk, QSE_T("\\n")); + else if (ptr[i] == QSE_T('\r')) + PUT_SRCSTR (awk, QSE_T("\\r")); + else if (ptr[i] == QSE_T('\f')) + PUT_SRCSTR (awk, QSE_T("\\f")); + else if (ptr[i] == QSE_T('\b')) + PUT_SRCSTR (awk, QSE_T("\\b")); + else if (ptr[i] == QSE_T('\v')) + PUT_SRCSTR (awk, QSE_T("\\v")); + else if (ptr[i] == QSE_T('\a')) + PUT_SRCSTR (awk, QSE_T("\\a")); + else if (ptr[i] == QSE_T('\0')) + PUT_SRCSTR (awk, QSE_T("\\0")); else PUT_SRCSTRX (awk, &ptr[i], 1); } - PUT_SRCSTR (awk, ASE_T("\"")); + PUT_SRCSTR (awk, QSE_T("\"")); break; } - case ASE_AWK_NDE_REX: + case QSE_AWK_NDE_REX: { - PUT_SRCSTR (awk, ASE_T("/")); + PUT_SRCSTR (awk, QSE_T("/")); PUT_SRCSTRX (awk, - ((ase_awk_nde_rex_t*)nde)->buf, - ((ase_awk_nde_rex_t*)nde)->len); - PUT_SRCSTR (awk, ASE_T("/")); + ((qse_awk_nde_rex_t*)nde)->buf, + ((qse_awk_nde_rex_t*)nde)->len); + PUT_SRCSTR (awk, QSE_T("/")); break; } - case ASE_AWK_NDE_ARG: + case QSE_AWK_NDE_ARG: { - ase_char_t tmp[ASE_SIZEOF(ase_long_t)*8+2]; - ase_size_t n; - ase_awk_nde_var_t* px = (ase_awk_nde_var_t*)nde; - ASE_ASSERT (px->id.idxa != (ase_size_t)-1); + qse_char_t tmp[QSE_SIZEOF(qse_long_t)*8+2]; + qse_size_t n; + qse_awk_nde_var_t* px = (qse_awk_nde_var_t*)nde; + QSE_ASSERT (px->id.idxa != (qse_size_t)-1); - n = ase_awk_longtostr ( - px->id.idxa, 10, ASE_NULL, tmp, ASE_COUNTOF(tmp)); + n = qse_awk_longtostr ( + px->id.idxa, 10, QSE_NULL, tmp, QSE_COUNTOF(tmp)); - PUT_SRCSTR (awk, ASE_T("__p")); + PUT_SRCSTR (awk, QSE_T("__p")); PUT_SRCSTRX (awk, tmp, n); - ASE_ASSERT (px->idx == ASE_NULL); + QSE_ASSERT (px->idx == QSE_NULL); break; } - case ASE_AWK_NDE_ARGIDX: + case QSE_AWK_NDE_ARGIDX: { - ase_size_t n; - ase_awk_nde_var_t* px = (ase_awk_nde_var_t*)nde; - ASE_ASSERT (px->id.idxa != (ase_size_t)-1); - ASE_ASSERT (px->idx != ASE_NULL); + qse_size_t n; + qse_awk_nde_var_t* px = (qse_awk_nde_var_t*)nde; + QSE_ASSERT (px->id.idxa != (qse_size_t)-1); + QSE_ASSERT (px->idx != QSE_NULL); - PUT_SRCSTR (awk, ASE_T("__p")); - n = ase_awk_longtostr ( - px->id.idxa, 10, ASE_NULL, - awk->tmp.fmt, ASE_COUNTOF(awk->tmp.fmt)); + PUT_SRCSTR (awk, QSE_T("__p")); + n = qse_awk_longtostr ( + px->id.idxa, 10, QSE_NULL, + awk->tmp.fmt, QSE_COUNTOF(awk->tmp.fmt)); PUT_SRCSTRX (awk, awk->tmp.fmt, n); - PUT_SRCSTR (awk, ASE_T("[")); + PUT_SRCSTR (awk, QSE_T("[")); PRINT_EXPRESSION_LIST (awk, px->idx); - PUT_SRCSTR (awk, ASE_T("]")); + PUT_SRCSTR (awk, QSE_T("]")); break; } - case ASE_AWK_NDE_NAMED: + case QSE_AWK_NDE_NAMED: { - ase_awk_nde_var_t* px = (ase_awk_nde_var_t*)nde; - ASE_ASSERT (px->id.idxa == (ase_size_t)-1); - ASE_ASSERT (px->idx == ASE_NULL); + qse_awk_nde_var_t* px = (qse_awk_nde_var_t*)nde; + QSE_ASSERT (px->id.idxa == (qse_size_t)-1); + QSE_ASSERT (px->idx == QSE_NULL); PUT_SRCSTRX (awk, px->id.name.ptr, px->id.name.len); break; } - case ASE_AWK_NDE_NAMEDIDX: + case QSE_AWK_NDE_NAMEDIDX: { - ase_awk_nde_var_t* px = (ase_awk_nde_var_t*)nde; - ASE_ASSERT (px->id.idxa == (ase_size_t)-1); - ASE_ASSERT (px->idx != ASE_NULL); + qse_awk_nde_var_t* px = (qse_awk_nde_var_t*)nde; + QSE_ASSERT (px->id.idxa == (qse_size_t)-1); + QSE_ASSERT (px->idx != QSE_NULL); PUT_SRCSTRX (awk, px->id.name.ptr, px->id.name.len); - PUT_SRCSTR (awk, ASE_T("[")); + PUT_SRCSTR (awk, QSE_T("[")); PRINT_EXPRESSION_LIST (awk, px->idx); - PUT_SRCSTR (awk, ASE_T("]")); + PUT_SRCSTR (awk, QSE_T("]")); break; } - case ASE_AWK_NDE_GLOBAL: + case QSE_AWK_NDE_GLOBAL: { - ase_awk_nde_var_t* px = (ase_awk_nde_var_t*)nde; + qse_awk_nde_var_t* px = (qse_awk_nde_var_t*)nde; - if (px->id.idxa != (ase_size_t)-1) + if (px->id.idxa != (qse_size_t)-1) { - if ((awk->option & ASE_AWK_EXPLICIT) && - !(awk->option & ASE_AWK_IMPLICIT)) + if ((awk->option & QSE_AWK_EXPLICIT) && + !(awk->option & QSE_AWK_IMPLICIT)) { /* no implicit(named) variable is allowed. * use the actual name */ @@ -410,13 +410,13 @@ static int print_expression (ase_awk_t* awk, ase_awk_nde_t* nde) } else { - ase_char_t tmp[ASE_SIZEOF(ase_long_t)*8+2]; - ase_size_t n; + qse_char_t tmp[QSE_SIZEOF(qse_long_t)*8+2]; + qse_size_t n; - PUT_SRCSTR (awk, ASE_T("__g")); - n = ase_awk_longtostr ( + PUT_SRCSTR (awk, QSE_T("__g")); + n = qse_awk_longtostr ( px->id.idxa, 10, - ASE_NULL, tmp, ASE_COUNTOF(tmp)); + QSE_NULL, tmp, QSE_COUNTOF(tmp)); PUT_SRCSTRX (awk, tmp, n); } } @@ -424,18 +424,18 @@ static int print_expression (ase_awk_t* awk, ase_awk_nde_t* nde) { PUT_SRCSTRX (awk, px->id.name.ptr, px->id.name.len); } - ASE_ASSERT (px->idx == ASE_NULL); + QSE_ASSERT (px->idx == QSE_NULL); break; } - case ASE_AWK_NDE_GLOBALIDX: + case QSE_AWK_NDE_GLOBALIDX: { - ase_awk_nde_var_t* px = (ase_awk_nde_var_t*)nde; + qse_awk_nde_var_t* px = (qse_awk_nde_var_t*)nde; - if (px->id.idxa != (ase_size_t)-1) + if (px->id.idxa != (qse_size_t)-1) { - if ((awk->option & ASE_AWK_EXPLICIT) && - !(awk->option & ASE_AWK_IMPLICIT)) + if ((awk->option & QSE_AWK_EXPLICIT) && + !(awk->option & QSE_AWK_IMPLICIT)) { /* no implicit(named) variable is allowed. * use the actual name */ @@ -448,130 +448,130 @@ static int print_expression (ase_awk_t* awk, ase_awk_nde_t* nde) } else { - ase_char_t tmp[ASE_SIZEOF(ase_long_t)*8+2]; - ase_size_t n; + qse_char_t tmp[QSE_SIZEOF(qse_long_t)*8+2]; + qse_size_t n; - PUT_SRCSTR (awk, ASE_T("__g")); - n = ase_awk_longtostr ( + PUT_SRCSTR (awk, QSE_T("__g")); + n = qse_awk_longtostr ( px->id.idxa, 10, - ASE_NULL, tmp, ASE_COUNTOF(tmp)); + QSE_NULL, tmp, QSE_COUNTOF(tmp)); PUT_SRCSTRX (awk, tmp, n); } - PUT_SRCSTR (awk, ASE_T("[")); + PUT_SRCSTR (awk, QSE_T("[")); } else { PUT_SRCSTRX (awk, px->id.name.ptr, px->id.name.len); - PUT_SRCSTR (awk, ASE_T("[")); + PUT_SRCSTR (awk, QSE_T("[")); } - ASE_ASSERT (px->idx != ASE_NULL); + QSE_ASSERT (px->idx != QSE_NULL); PRINT_EXPRESSION_LIST (awk, px->idx); - PUT_SRCSTR (awk, ASE_T("]")); + PUT_SRCSTR (awk, QSE_T("]")); break; } - case ASE_AWK_NDE_LOCAL: + case QSE_AWK_NDE_LOCAL: { - ase_size_t n; - ase_awk_nde_var_t* px = (ase_awk_nde_var_t*)nde; + qse_size_t n; + qse_awk_nde_var_t* px = (qse_awk_nde_var_t*)nde; - if (px->id.idxa != (ase_size_t)-1) + if (px->id.idxa != (qse_size_t)-1) { - PUT_SRCSTR (awk, ASE_T("__l")); - n = ase_awk_longtostr ( - px->id.idxa, 10, ASE_NULL, - awk->tmp.fmt, ASE_COUNTOF(awk->tmp.fmt)); + PUT_SRCSTR (awk, QSE_T("__l")); + n = qse_awk_longtostr ( + px->id.idxa, 10, QSE_NULL, + awk->tmp.fmt, QSE_COUNTOF(awk->tmp.fmt)); PUT_SRCSTRX (awk, awk->tmp.fmt, n); } else { PUT_SRCSTRX (awk, px->id.name.ptr, px->id.name.len); } - ASE_ASSERT (px->idx == ASE_NULL); + QSE_ASSERT (px->idx == QSE_NULL); break; } - case ASE_AWK_NDE_LOCALIDX: + case QSE_AWK_NDE_LOCALIDX: { - ase_size_t n; - ase_awk_nde_var_t* px = (ase_awk_nde_var_t*)nde; + qse_size_t n; + qse_awk_nde_var_t* px = (qse_awk_nde_var_t*)nde; - if (px->id.idxa != (ase_size_t)-1) + if (px->id.idxa != (qse_size_t)-1) { - PUT_SRCSTR (awk, ASE_T("__l")); - n = ase_awk_longtostr ( - px->id.idxa, 10, ASE_NULL, - awk->tmp.fmt, ASE_COUNTOF(awk->tmp.fmt)); + PUT_SRCSTR (awk, QSE_T("__l")); + n = qse_awk_longtostr ( + px->id.idxa, 10, QSE_NULL, + awk->tmp.fmt, QSE_COUNTOF(awk->tmp.fmt)); PUT_SRCSTRX (awk, awk->tmp.fmt, n); - PUT_SRCSTR (awk, ASE_T("[")); + PUT_SRCSTR (awk, QSE_T("[")); } else { PUT_SRCSTRX (awk, px->id.name.ptr, px->id.name.len); - PUT_SRCSTR (awk, ASE_T("[")); + PUT_SRCSTR (awk, QSE_T("[")); } - ASE_ASSERT (px->idx != ASE_NULL); + QSE_ASSERT (px->idx != QSE_NULL); PRINT_EXPRESSION_LIST (awk, px->idx); - PUT_SRCSTR (awk, ASE_T("]")); + PUT_SRCSTR (awk, QSE_T("]")); break; } - case ASE_AWK_NDE_POS: + case QSE_AWK_NDE_POS: { - PUT_SRCSTR (awk, ASE_T("$")); - PRINT_EXPRESSION (awk, ((ase_awk_nde_pos_t*)nde)->val); + PUT_SRCSTR (awk, QSE_T("$")); + PRINT_EXPRESSION (awk, ((qse_awk_nde_pos_t*)nde)->val); break; } - case ASE_AWK_NDE_BFN: + case QSE_AWK_NDE_BFN: { - ase_awk_nde_call_t* px = (ase_awk_nde_call_t*)nde; + qse_awk_nde_call_t* px = (qse_awk_nde_call_t*)nde; PUT_SRCSTRX (awk, px->what.bfn.name.ptr, px->what.bfn.name.len); - PUT_SRCSTR (awk, ASE_T(" (")); + PUT_SRCSTR (awk, QSE_T(" (")); PRINT_EXPRESSION_LIST (awk, px->args); - PUT_SRCSTR (awk, ASE_T(")")); + PUT_SRCSTR (awk, QSE_T(")")); break; } - case ASE_AWK_NDE_AFN: + case QSE_AWK_NDE_AFN: { - ase_awk_nde_call_t* px = (ase_awk_nde_call_t*)nde; + qse_awk_nde_call_t* px = (qse_awk_nde_call_t*)nde; PUT_SRCSTRX (awk, px->what.afn.name.ptr, px->what.afn.name.len); - PUT_SRCSTR (awk, ASE_T(" (")); + PUT_SRCSTR (awk, QSE_T(" (")); PRINT_EXPRESSION_LIST (awk, px->args); - PUT_SRCSTR (awk, ASE_T(")")); + PUT_SRCSTR (awk, QSE_T(")")); break; } - case ASE_AWK_NDE_GETLINE: + case QSE_AWK_NDE_GETLINE: { - ase_awk_nde_getline_t* px = (ase_awk_nde_getline_t*)nde; - if (px->in != ASE_NULL && - (px->in_type == ASE_AWK_IN_PIPE || - px->in_type == ASE_AWK_IN_COPROC)) + qse_awk_nde_getline_t* px = (qse_awk_nde_getline_t*)nde; + if (px->in != QSE_NULL && + (px->in_type == QSE_AWK_IN_PIPE || + px->in_type == QSE_AWK_IN_COPROC)) { PRINT_EXPRESSION (awk, px->in); - PUT_SRCSTR (awk, ASE_T(" ")); + PUT_SRCSTR (awk, QSE_T(" ")); PUT_SRCSTR (awk, getline_inop_str[px->in_type]); - PUT_SRCSTR (awk, ASE_T(" ")); + PUT_SRCSTR (awk, QSE_T(" ")); } - ase_awk_getkw (awk, KW_GETLINE, &kw); + qse_awk_getkw (awk, KW_GETLINE, &kw); PUT_SRCSTRX (awk, kw.ptr, kw.len); - if (px->var != ASE_NULL) + if (px->var != QSE_NULL) { - PUT_SRCSTR (awk, ASE_T(" ")); + PUT_SRCSTR (awk, QSE_T(" ")); PRINT_EXPRESSION (awk, px->var); } - if (px->in != ASE_NULL && - px->in_type == ASE_AWK_IN_FILE) + if (px->in != QSE_NULL && + px->in_type == QSE_AWK_IN_FILE) { - PUT_SRCSTR (awk, ASE_T(" ")); + PUT_SRCSTR (awk, QSE_T(" ")); PUT_SRCSTR (awk, getline_inop_str[px->in_type]); - PUT_SRCSTR (awk, ASE_T(" ")); + PUT_SRCSTR (awk, QSE_T(" ")); PRINT_EXPRESSION (awk, px->in); } break; @@ -586,102 +586,102 @@ static int print_expression (ase_awk_t* awk, ase_awk_nde_t* nde) return 0; } -static int print_expression_list (ase_awk_t* awk, ase_awk_nde_t* tree) +static int print_expression_list (qse_awk_t* awk, qse_awk_nde_t* tree) { - ase_awk_nde_t* p = tree; + qse_awk_nde_t* p = tree; - while (p != ASE_NULL) + while (p != QSE_NULL) { PRINT_EXPRESSION (awk, p); p = p->next; - if (p != ASE_NULL) PUT_SRCSTR (awk, ASE_T(",")); + if (p != QSE_NULL) PUT_SRCSTR (awk, QSE_T(",")); } return 0; } -static int print_statement (ase_awk_t* awk, ase_awk_nde_t* p, int depth) +static int print_statement (qse_awk_t* awk, qse_awk_nde_t* p, int depth) { - ase_size_t i; - ase_cstr_t kw; + qse_size_t i; + qse_cstr_t kw; switch (p->type) { - case ASE_AWK_NDE_NULL: + case QSE_AWK_NDE_NULL: { PRINT_TABS (awk, depth); - PUT_SRCSTR (awk, ASE_T(";")); + PUT_SRCSTR (awk, QSE_T(";")); PUT_NEWLINE (awk); break; } - case ASE_AWK_NDE_BLK: + case QSE_AWK_NDE_BLK: { - ase_size_t n; - ase_awk_nde_blk_t* px = (ase_awk_nde_blk_t*)p; + qse_size_t n; + qse_awk_nde_blk_t* px = (qse_awk_nde_blk_t*)p; PRINT_TABS (awk, depth); - PUT_SRCSTR (awk, ASE_T("{")); + PUT_SRCSTR (awk, QSE_T("{")); PUT_NEWLINE (awk); if (px->nlocals > 0) { PRINT_TABS (awk, depth + 1); - ase_awk_getkw (awk, KW_LOCAL, &kw); + qse_awk_getkw (awk, KW_LOCAL, &kw); PUT_SRCSTRX (awk, kw.ptr, kw.len); - PUT_SRCSTR (awk, ASE_T(" ")); + PUT_SRCSTR (awk, QSE_T(" ")); for (i = 0; i < px->nlocals - 1; i++) { - PUT_SRCSTR (awk, ASE_T("__l")); - n = ase_awk_longtostr ( - i, 10, ASE_NULL, - awk->tmp.fmt, ASE_COUNTOF(awk->tmp.fmt)); + PUT_SRCSTR (awk, QSE_T("__l")); + n = qse_awk_longtostr ( + i, 10, QSE_NULL, + awk->tmp.fmt, QSE_COUNTOF(awk->tmp.fmt)); PUT_SRCSTRX (awk, awk->tmp.fmt, n); - PUT_SRCSTR (awk, ASE_T(", ")); + PUT_SRCSTR (awk, QSE_T(", ")); } - PUT_SRCSTR (awk, ASE_T("__l")); - n = ase_awk_longtostr ( - i, 10, ASE_NULL, - awk->tmp.fmt, ASE_COUNTOF(awk->tmp.fmt)); + PUT_SRCSTR (awk, QSE_T("__l")); + n = qse_awk_longtostr ( + i, 10, QSE_NULL, + awk->tmp.fmt, QSE_COUNTOF(awk->tmp.fmt)); PUT_SRCSTRX (awk, awk->tmp.fmt, n); - PUT_SRCSTR (awk, ASE_T(";")); + PUT_SRCSTR (awk, QSE_T(";")); PUT_NEWLINE (awk); } PRINT_STATEMENTS (awk, px->body, depth + 1); PRINT_TABS (awk, depth); - PUT_SRCSTR (awk, ASE_T("}")); + PUT_SRCSTR (awk, QSE_T("}")); PUT_NEWLINE (awk); break; } - case ASE_AWK_NDE_IF: + case QSE_AWK_NDE_IF: { - ase_awk_nde_if_t* px = (ase_awk_nde_if_t*)p; + qse_awk_nde_if_t* px = (qse_awk_nde_if_t*)p; PRINT_TABS (awk, depth); - ase_awk_getkw (awk, KW_IF, &kw); + qse_awk_getkw (awk, KW_IF, &kw); PUT_SRCSTRX (awk, kw.ptr, kw.len); - PUT_SRCSTR (awk, ASE_T(" (")); + PUT_SRCSTR (awk, QSE_T(" (")); PRINT_EXPRESSION (awk, px->test); - PUT_SRCSTR (awk, ASE_T(")")); + PUT_SRCSTR (awk, QSE_T(")")); PUT_NEWLINE (awk); - ASE_ASSERT (px->then_part != ASE_NULL); - if (px->then_part->type == ASE_AWK_NDE_BLK) + QSE_ASSERT (px->then_part != QSE_NULL); + if (px->then_part->type == QSE_AWK_NDE_BLK) PRINT_STATEMENTS (awk, px->then_part, depth); else PRINT_STATEMENTS (awk, px->then_part, depth + 1); - if (px->else_part != ASE_NULL) + if (px->else_part != QSE_NULL) { PRINT_TABS (awk, depth); - ase_awk_getkw (awk, KW_ELSE, &kw); + qse_awk_getkw (awk, KW_ELSE, &kw); PUT_SRCSTRX (awk, kw.ptr, kw.len); PUT_NEWLINE (awk); - if (px->else_part->type == ASE_AWK_NDE_BLK) + if (px->else_part->type == QSE_AWK_NDE_BLK) PRINT_STATEMENTS (awk, px->else_part, depth); else PRINT_STATEMENTS (awk, px->else_part, depth + 1); @@ -689,18 +689,18 @@ static int print_statement (ase_awk_t* awk, ase_awk_nde_t* p, int depth) break; } - case ASE_AWK_NDE_WHILE: + case QSE_AWK_NDE_WHILE: { - ase_awk_nde_while_t* px = (ase_awk_nde_while_t*)p; + qse_awk_nde_while_t* px = (qse_awk_nde_while_t*)p; PRINT_TABS (awk, depth); - ase_awk_getkw (awk, KW_WHILE, &kw); + qse_awk_getkw (awk, KW_WHILE, &kw); PUT_SRCSTRX (awk, kw.ptr, kw.len); - PUT_SRCSTR (awk, ASE_T(" (")); + PUT_SRCSTR (awk, QSE_T(" (")); PRINT_EXPRESSION (awk, px->test); - PUT_SRCSTR (awk, ASE_T(")")); + PUT_SRCSTR (awk, QSE_T(")")); PUT_NEWLINE (awk); - if (px->body->type == ASE_AWK_NDE_BLK) + if (px->body->type == QSE_AWK_NDE_BLK) { PRINT_STATEMENTS (awk, px->body, depth); } @@ -711,15 +711,15 @@ static int print_statement (ase_awk_t* awk, ase_awk_nde_t* p, int depth) break; } - case ASE_AWK_NDE_DOWHILE: + case QSE_AWK_NDE_DOWHILE: { - ase_awk_nde_while_t* px = (ase_awk_nde_while_t*)p; + qse_awk_nde_while_t* px = (qse_awk_nde_while_t*)p; PRINT_TABS (awk, depth); - ase_awk_getkw (awk, KW_DO, &kw); + qse_awk_getkw (awk, KW_DO, &kw); PUT_SRCSTRX (awk, kw.ptr, kw.len); PUT_NEWLINE (awk); - if (px->body->type == ASE_AWK_NDE_BLK) + if (px->body->type == QSE_AWK_NDE_BLK) { PRINT_STATEMENTS (awk, px->body, depth); } @@ -729,41 +729,41 @@ static int print_statement (ase_awk_t* awk, ase_awk_nde_t* p, int depth) } PRINT_TABS (awk, depth); - ase_awk_getkw (awk, KW_WHILE, &kw); + qse_awk_getkw (awk, KW_WHILE, &kw); PUT_SRCSTRX (awk, kw.ptr, kw.len); - PUT_SRCSTR (awk, ASE_T(" (")); + PUT_SRCSTR (awk, QSE_T(" (")); PRINT_EXPRESSION (awk, px->test); - PUT_SRCSTR (awk, ASE_T(");")); + PUT_SRCSTR (awk, QSE_T(");")); PUT_NEWLINE (awk); break; } - case ASE_AWK_NDE_FOR: + case QSE_AWK_NDE_FOR: { - ase_awk_nde_for_t* px = (ase_awk_nde_for_t*)p; + qse_awk_nde_for_t* px = (qse_awk_nde_for_t*)p; PRINT_TABS (awk, depth); - ase_awk_getkw (awk, KW_FOR, &kw); + qse_awk_getkw (awk, KW_FOR, &kw); PUT_SRCSTRX (awk, kw.ptr, kw.len); - PUT_SRCSTR (awk, ASE_T(" (")); - if (px->init != ASE_NULL) + PUT_SRCSTR (awk, QSE_T(" (")); + if (px->init != QSE_NULL) { PRINT_EXPRESSION (awk, px->init); } - PUT_SRCSTR (awk, ASE_T("; ")); - if (px->test != ASE_NULL) + PUT_SRCSTR (awk, QSE_T("; ")); + if (px->test != QSE_NULL) { PRINT_EXPRESSION (awk, px->test); } - PUT_SRCSTR (awk, ASE_T("; ")); - if (px->incr != ASE_NULL) + PUT_SRCSTR (awk, QSE_T("; ")); + if (px->incr != QSE_NULL) { PRINT_EXPRESSION (awk, px->incr); } - PUT_SRCSTR (awk, ASE_T(")")); + PUT_SRCSTR (awk, QSE_T(")")); PUT_NEWLINE (awk); - if (px->body->type == ASE_AWK_NDE_BLK) + if (px->body->type == QSE_AWK_NDE_BLK) { PRINT_STATEMENTS (awk, px->body, depth); } @@ -774,17 +774,17 @@ static int print_statement (ase_awk_t* awk, ase_awk_nde_t* p, int depth) break; } - case ASE_AWK_NDE_FOREACH: + case QSE_AWK_NDE_FOREACH: { - ase_awk_nde_foreach_t* px = (ase_awk_nde_foreach_t*)p; + qse_awk_nde_foreach_t* px = (qse_awk_nde_foreach_t*)p; PRINT_TABS (awk, depth); - ase_awk_getkw (awk, KW_FOR, &kw); + qse_awk_getkw (awk, KW_FOR, &kw); PUT_SRCSTRX (awk, kw.ptr, kw.len); - PUT_SRCSTR (awk, ASE_T(" ")); + PUT_SRCSTR (awk, QSE_T(" ")); PRINT_EXPRESSION (awk, px->test); PUT_NEWLINE (awk); - if (px->body->type == ASE_AWK_NDE_BLK) + if (px->body->type == QSE_AWK_NDE_BLK) { PRINT_STATEMENTS (awk, px->body, depth); } @@ -795,156 +795,156 @@ static int print_statement (ase_awk_t* awk, ase_awk_nde_t* p, int depth) break; } - case ASE_AWK_NDE_BREAK: + case QSE_AWK_NDE_BREAK: { PRINT_TABS (awk, depth); - ase_awk_getkw (awk, KW_BREAK, &kw); + qse_awk_getkw (awk, KW_BREAK, &kw); PUT_SRCSTRX (awk, kw.ptr, kw.len); - PUT_SRCSTR (awk, ASE_T(";")); + PUT_SRCSTR (awk, QSE_T(";")); PUT_NEWLINE (awk); break; } - case ASE_AWK_NDE_CONTINUE: + case QSE_AWK_NDE_CONTINUE: { PRINT_TABS (awk, depth); - ase_awk_getkw (awk, KW_CONTINUE, &kw); + qse_awk_getkw (awk, KW_CONTINUE, &kw); PUT_SRCSTRX (awk, kw.ptr, kw.len); - PUT_SRCSTR (awk, ASE_T(";")); + PUT_SRCSTR (awk, QSE_T(";")); PUT_NEWLINE (awk); break; } - case ASE_AWK_NDE_RETURN: + case QSE_AWK_NDE_RETURN: { PRINT_TABS (awk, depth); - if (((ase_awk_nde_return_t*)p)->val == ASE_NULL) + if (((qse_awk_nde_return_t*)p)->val == QSE_NULL) { - ase_awk_getkw (awk, KW_RETURN, &kw); + qse_awk_getkw (awk, KW_RETURN, &kw); PUT_SRCSTRX (awk, kw.ptr, kw.len); - PUT_SRCSTR (awk, ASE_T(";")); + PUT_SRCSTR (awk, QSE_T(";")); PUT_NEWLINE (awk); } else { - ase_awk_getkw (awk, KW_RETURN, &kw); + qse_awk_getkw (awk, KW_RETURN, &kw); PUT_SRCSTRX (awk, kw.ptr, kw.len); - PUT_SRCSTR (awk, ASE_T(" ")); - ASE_ASSERT (((ase_awk_nde_return_t*)p)->val->next == ASE_NULL); + PUT_SRCSTR (awk, QSE_T(" ")); + QSE_ASSERT (((qse_awk_nde_return_t*)p)->val->next == QSE_NULL); - PRINT_EXPRESSION (awk, ((ase_awk_nde_return_t*)p)->val); - PUT_SRCSTR (awk, ASE_T(";")); + PRINT_EXPRESSION (awk, ((qse_awk_nde_return_t*)p)->val); + PUT_SRCSTR (awk, QSE_T(";")); PUT_NEWLINE (awk); } break; } - case ASE_AWK_NDE_EXIT: + case QSE_AWK_NDE_EXIT: { - ase_awk_nde_exit_t* px = (ase_awk_nde_exit_t*)p; + qse_awk_nde_exit_t* px = (qse_awk_nde_exit_t*)p; PRINT_TABS (awk, depth); - if (px->val == ASE_NULL) + if (px->val == QSE_NULL) { - ase_awk_getkw (awk, KW_EXIT, &kw); + qse_awk_getkw (awk, KW_EXIT, &kw); PUT_SRCSTRX (awk, kw.ptr, kw.len); - PUT_SRCSTR (awk, ASE_T(";")); + PUT_SRCSTR (awk, QSE_T(";")); PUT_NEWLINE (awk); } else { - ase_awk_getkw (awk, KW_EXIT, &kw); + qse_awk_getkw (awk, KW_EXIT, &kw); PUT_SRCSTRX (awk, kw.ptr, kw.len); - PUT_SRCSTR (awk, ASE_T(" ")); - ASE_ASSERT (px->val->next == ASE_NULL); + PUT_SRCSTR (awk, QSE_T(" ")); + QSE_ASSERT (px->val->next == QSE_NULL); PRINT_EXPRESSION (awk, px->val); - PUT_SRCSTR (awk, ASE_T(";")); + PUT_SRCSTR (awk, QSE_T(";")); PUT_NEWLINE (awk); } break; } - case ASE_AWK_NDE_NEXT: + case QSE_AWK_NDE_NEXT: { PRINT_TABS (awk, depth); - ase_awk_getkw (awk, KW_NEXT, &kw); + qse_awk_getkw (awk, KW_NEXT, &kw); PUT_SRCSTRX (awk, kw.ptr, kw.len); - PUT_SRCSTR (awk, ASE_T(";")); + PUT_SRCSTR (awk, QSE_T(";")); PUT_NEWLINE (awk); break; } - case ASE_AWK_NDE_NEXTFILE: + case QSE_AWK_NDE_NEXTFILE: { PRINT_TABS (awk, depth); - if (((ase_awk_nde_nextfile_t*)p)->out) + if (((qse_awk_nde_nextfile_t*)p)->out) { - ase_awk_getkw (awk, KW_NEXTOFILE, &kw); + qse_awk_getkw (awk, KW_NEXTOFILE, &kw); PUT_SRCSTRX (awk, kw.ptr, kw.len); } else { - ase_awk_getkw (awk, KW_NEXTFILE, &kw); + qse_awk_getkw (awk, KW_NEXTFILE, &kw); PUT_SRCSTRX (awk, kw.ptr, kw.len); } - PUT_SRCSTR (awk, ASE_T(";")); + PUT_SRCSTR (awk, QSE_T(";")); PUT_NEWLINE (awk); break; } - case ASE_AWK_NDE_DELETE: + case QSE_AWK_NDE_DELETE: { PRINT_TABS (awk, depth); - ase_awk_getkw (awk, KW_DELETE, &kw); + qse_awk_getkw (awk, KW_DELETE, &kw); PUT_SRCSTRX (awk, kw.ptr, kw.len); - PUT_SRCSTR (awk, ASE_T(" ")); - ase_awk_prnpt (awk, ((ase_awk_nde_delete_t*)p)->var); + PUT_SRCSTR (awk, QSE_T(" ")); + qse_awk_prnpt (awk, ((qse_awk_nde_delete_t*)p)->var); break; } - case ASE_AWK_NDE_RESET: + case QSE_AWK_NDE_RESET: { PRINT_TABS (awk, depth); - ase_awk_getkw (awk, KW_RESET, &kw); + qse_awk_getkw (awk, KW_RESET, &kw); PUT_SRCSTRX (awk, kw.ptr, kw.len); - PUT_SRCSTR (awk, ASE_T(" ")); - ase_awk_prnpt (awk, ((ase_awk_nde_reset_t*)p)->var); + PUT_SRCSTR (awk, QSE_T(" ")); + qse_awk_prnpt (awk, ((qse_awk_nde_reset_t*)p)->var); break; } - case ASE_AWK_NDE_PRINT: - case ASE_AWK_NDE_PRINTF: + case QSE_AWK_NDE_PRINT: + case QSE_AWK_NDE_PRINTF: { - ase_awk_nde_print_t* px = (ase_awk_nde_print_t*)p; + qse_awk_nde_print_t* px = (qse_awk_nde_print_t*)p; PRINT_TABS (awk, depth); - if (p->type == ASE_AWK_NDE_PRINT) + if (p->type == QSE_AWK_NDE_PRINT) { - ase_awk_getkw (awk, KW_PRINT, &kw); + qse_awk_getkw (awk, KW_PRINT, &kw); PUT_SRCSTRX (awk, kw.ptr, kw.len); } else { - ase_awk_getkw (awk, KW_PRINTF, &kw); + qse_awk_getkw (awk, KW_PRINTF, &kw); PUT_SRCSTRX (awk, kw.ptr, kw.len); } - if (px->args != ASE_NULL) + if (px->args != QSE_NULL) { - PUT_SRCSTR (awk, ASE_T(" ")); + PUT_SRCSTR (awk, QSE_T(" ")); PRINT_EXPRESSION_LIST (awk, px->args); } - if (px->out != ASE_NULL) + if (px->out != QSE_NULL) { - PUT_SRCSTR (awk, ASE_T(" ")); + PUT_SRCSTR (awk, QSE_T(" ")); PUT_SRCSTR (awk, print_outop_str[px->out_type]); - PUT_SRCSTR (awk, ASE_T(" ")); + PUT_SRCSTR (awk, QSE_T(" ")); PRINT_EXPRESSION (awk, px->out); } - PUT_SRCSTR (awk, ASE_T(";")); + PUT_SRCSTR (awk, QSE_T(";")); PUT_NEWLINE (awk); break; } @@ -953,7 +953,7 @@ static int print_statement (ase_awk_t* awk, ase_awk_nde_t* p, int depth) { PRINT_TABS (awk, depth); PRINT_EXPRESSION (awk, p); - PUT_SRCSTR (awk, ASE_T(";")); + PUT_SRCSTR (awk, QSE_T(";")); PUT_NEWLINE (awk); } } @@ -961,11 +961,11 @@ static int print_statement (ase_awk_t* awk, ase_awk_nde_t* p, int depth) return 0; } -static int print_statements (ase_awk_t* awk, ase_awk_nde_t* tree, int depth) +static int print_statements (qse_awk_t* awk, qse_awk_nde_t* tree, int depth) { - ase_awk_nde_t* p = tree; + qse_awk_nde_t* p = tree; - while (p != ASE_NULL) + while (p != QSE_NULL) { if (print_statement (awk, p, depth) == -1) return -1; p = p->next; @@ -974,311 +974,311 @@ static int print_statements (ase_awk_t* awk, ase_awk_nde_t* tree, int depth) return 0; } -int ase_awk_prnpt (ase_awk_t* awk, ase_awk_nde_t* tree) +int qse_awk_prnpt (qse_awk_t* awk, qse_awk_nde_t* tree) { return print_statements (awk, tree, 0); } -int ase_awk_prnnde (ase_awk_t* awk, ase_awk_nde_t* tree) +int qse_awk_prnnde (qse_awk_t* awk, qse_awk_nde_t* tree) { return print_statement (awk, tree, 0); } -int ase_awk_prnptnpt (ase_awk_t* awk, ase_awk_nde_t* tree) +int qse_awk_prnptnpt (qse_awk_t* awk, qse_awk_nde_t* tree) { - ase_awk_nde_t* nde = tree; + qse_awk_nde_t* nde = tree; - while (nde != ASE_NULL) + while (nde != QSE_NULL) { if (print_expression (awk, nde) == -1) return -1; - if (nde->next == ASE_NULL) break; + if (nde->next == QSE_NULL) break; - PUT_SRCSTR (awk, ASE_T(",")); + PUT_SRCSTR (awk, QSE_T(",")); nde = nde->next; } return 0; } -void ase_awk_clrpt (ase_awk_t* awk, ase_awk_nde_t* tree) +void qse_awk_clrpt (qse_awk_t* awk, qse_awk_nde_t* tree) { - ase_awk_nde_t* p = tree; - ase_awk_nde_t* next; + qse_awk_nde_t* p = tree; + qse_awk_nde_t* next; - while (p != ASE_NULL) + while (p != QSE_NULL) { next = p->next; switch (p->type) { - case ASE_AWK_NDE_NULL: + case QSE_AWK_NDE_NULL: { - ASE_AWK_FREE (awk, p); + QSE_AWK_FREE (awk, p); break; } - case ASE_AWK_NDE_BLK: + case QSE_AWK_NDE_BLK: { - ase_awk_clrpt (awk, ((ase_awk_nde_blk_t*)p)->body); - ASE_AWK_FREE (awk, p); + qse_awk_clrpt (awk, ((qse_awk_nde_blk_t*)p)->body); + QSE_AWK_FREE (awk, p); break; } - case ASE_AWK_NDE_IF: + case QSE_AWK_NDE_IF: { - ase_awk_nde_if_t* px = (ase_awk_nde_if_t*)p; - ase_awk_clrpt (awk, px->test); - ase_awk_clrpt (awk, px->then_part); + qse_awk_nde_if_t* px = (qse_awk_nde_if_t*)p; + qse_awk_clrpt (awk, px->test); + qse_awk_clrpt (awk, px->then_part); - if (px->else_part != ASE_NULL) - ase_awk_clrpt (awk, px->else_part); - ASE_AWK_FREE (awk, p); + if (px->else_part != QSE_NULL) + qse_awk_clrpt (awk, px->else_part); + QSE_AWK_FREE (awk, p); break; } - case ASE_AWK_NDE_WHILE: - case ASE_AWK_NDE_DOWHILE: + case QSE_AWK_NDE_WHILE: + case QSE_AWK_NDE_DOWHILE: { - ase_awk_clrpt (awk, ((ase_awk_nde_while_t*)p)->test); - ase_awk_clrpt (awk, ((ase_awk_nde_while_t*)p)->body); - ASE_AWK_FREE (awk, p); + qse_awk_clrpt (awk, ((qse_awk_nde_while_t*)p)->test); + qse_awk_clrpt (awk, ((qse_awk_nde_while_t*)p)->body); + QSE_AWK_FREE (awk, p); break; } - case ASE_AWK_NDE_FOR: + case QSE_AWK_NDE_FOR: { - ase_awk_nde_for_t* px = (ase_awk_nde_for_t*)p; + qse_awk_nde_for_t* px = (qse_awk_nde_for_t*)p; - if (px->init != ASE_NULL) - ase_awk_clrpt (awk, px->init); - if (px->test != ASE_NULL) - ase_awk_clrpt (awk, px->test); - if (px->incr != ASE_NULL) - ase_awk_clrpt (awk, px->incr); - ase_awk_clrpt (awk, px->body); - ASE_AWK_FREE (awk, p); + if (px->init != QSE_NULL) + qse_awk_clrpt (awk, px->init); + if (px->test != QSE_NULL) + qse_awk_clrpt (awk, px->test); + if (px->incr != QSE_NULL) + qse_awk_clrpt (awk, px->incr); + qse_awk_clrpt (awk, px->body); + QSE_AWK_FREE (awk, p); break; } - case ASE_AWK_NDE_FOREACH: + case QSE_AWK_NDE_FOREACH: { - ase_awk_clrpt (awk, ((ase_awk_nde_foreach_t*)p)->test); - ase_awk_clrpt (awk, ((ase_awk_nde_foreach_t*)p)->body); - ASE_AWK_FREE (awk, p); + qse_awk_clrpt (awk, ((qse_awk_nde_foreach_t*)p)->test); + qse_awk_clrpt (awk, ((qse_awk_nde_foreach_t*)p)->body); + QSE_AWK_FREE (awk, p); break; } - case ASE_AWK_NDE_BREAK: + case QSE_AWK_NDE_BREAK: { - ASE_AWK_FREE (awk, p); + QSE_AWK_FREE (awk, p); break; } - case ASE_AWK_NDE_CONTINUE: + case QSE_AWK_NDE_CONTINUE: { - ASE_AWK_FREE (awk, p); + QSE_AWK_FREE (awk, p); break; } - case ASE_AWK_NDE_RETURN: + case QSE_AWK_NDE_RETURN: { - ase_awk_nde_return_t* px = - (ase_awk_nde_return_t*)p; - if (px->val != ASE_NULL) - ase_awk_clrpt (awk, px->val); - ASE_AWK_FREE (awk, p); + qse_awk_nde_return_t* px = + (qse_awk_nde_return_t*)p; + if (px->val != QSE_NULL) + qse_awk_clrpt (awk, px->val); + QSE_AWK_FREE (awk, p); break; } - case ASE_AWK_NDE_EXIT: + case QSE_AWK_NDE_EXIT: { - if (((ase_awk_nde_exit_t*)p)->val != ASE_NULL) - ase_awk_clrpt (awk, ((ase_awk_nde_exit_t*)p)->val); - ASE_AWK_FREE (awk, p); + if (((qse_awk_nde_exit_t*)p)->val != QSE_NULL) + qse_awk_clrpt (awk, ((qse_awk_nde_exit_t*)p)->val); + QSE_AWK_FREE (awk, p); break; } - case ASE_AWK_NDE_NEXT: - case ASE_AWK_NDE_NEXTFILE: + case QSE_AWK_NDE_NEXT: + case QSE_AWK_NDE_NEXTFILE: { - ASE_AWK_FREE (awk, p); + QSE_AWK_FREE (awk, p); break; } - case ASE_AWK_NDE_DELETE: + case QSE_AWK_NDE_DELETE: { - ase_awk_clrpt (awk, ((ase_awk_nde_delete_t*)p)->var); - ASE_AWK_FREE (awk, p); + qse_awk_clrpt (awk, ((qse_awk_nde_delete_t*)p)->var); + QSE_AWK_FREE (awk, p); break; } - case ASE_AWK_NDE_RESET: + case QSE_AWK_NDE_RESET: { - ase_awk_clrpt (awk, ((ase_awk_nde_reset_t*)p)->var); - ASE_AWK_FREE (awk, p); + qse_awk_clrpt (awk, ((qse_awk_nde_reset_t*)p)->var); + QSE_AWK_FREE (awk, p); break; } - case ASE_AWK_NDE_PRINT: - case ASE_AWK_NDE_PRINTF: + case QSE_AWK_NDE_PRINT: + case QSE_AWK_NDE_PRINTF: { - ase_awk_nde_print_t* px = - (ase_awk_nde_print_t*)p; - if (px->args != ASE_NULL) - ase_awk_clrpt (awk, px->args); - if (px->out != ASE_NULL) - ase_awk_clrpt (awk, px->out); - ASE_AWK_FREE (awk, p); + qse_awk_nde_print_t* px = + (qse_awk_nde_print_t*)p; + if (px->args != QSE_NULL) + qse_awk_clrpt (awk, px->args); + if (px->out != QSE_NULL) + qse_awk_clrpt (awk, px->out); + QSE_AWK_FREE (awk, p); break; } - case ASE_AWK_NDE_GRP: + case QSE_AWK_NDE_GRP: { - ase_awk_clrpt (awk, ((ase_awk_nde_grp_t*)p)->body); - ASE_AWK_FREE (awk, p); + qse_awk_clrpt (awk, ((qse_awk_nde_grp_t*)p)->body); + QSE_AWK_FREE (awk, p); break; } - case ASE_AWK_NDE_ASS: + case QSE_AWK_NDE_ASS: { - ase_awk_clrpt (awk, ((ase_awk_nde_ass_t*)p)->left); - ase_awk_clrpt (awk, ((ase_awk_nde_ass_t*)p)->right); - ASE_AWK_FREE (awk, p); + qse_awk_clrpt (awk, ((qse_awk_nde_ass_t*)p)->left); + qse_awk_clrpt (awk, ((qse_awk_nde_ass_t*)p)->right); + QSE_AWK_FREE (awk, p); break; } - case ASE_AWK_NDE_EXP_BIN: + case QSE_AWK_NDE_EXP_BIN: { - ase_awk_nde_exp_t* px = (ase_awk_nde_exp_t*)p; - ASE_ASSERT (px->left->next == ASE_NULL); - ASE_ASSERT (px->right->next == ASE_NULL); + qse_awk_nde_exp_t* px = (qse_awk_nde_exp_t*)p; + QSE_ASSERT (px->left->next == QSE_NULL); + QSE_ASSERT (px->right->next == QSE_NULL); - ase_awk_clrpt (awk, px->left); - ase_awk_clrpt (awk, px->right); - ASE_AWK_FREE (awk, p); + qse_awk_clrpt (awk, px->left); + qse_awk_clrpt (awk, px->right); + QSE_AWK_FREE (awk, p); break; } - case ASE_AWK_NDE_EXP_UNR: - case ASE_AWK_NDE_EXP_INCPRE: - case ASE_AWK_NDE_EXP_INCPST: + case QSE_AWK_NDE_EXP_UNR: + case QSE_AWK_NDE_EXP_INCPRE: + case QSE_AWK_NDE_EXP_INCPST: { - ase_awk_nde_exp_t* px = (ase_awk_nde_exp_t*)p; - ASE_ASSERT (px->right == ASE_NULL); - ase_awk_clrpt (awk, px->left); - ASE_AWK_FREE (awk, p); + qse_awk_nde_exp_t* px = (qse_awk_nde_exp_t*)p; + QSE_ASSERT (px->right == QSE_NULL); + qse_awk_clrpt (awk, px->left); + QSE_AWK_FREE (awk, p); break; } - case ASE_AWK_NDE_CND: + case QSE_AWK_NDE_CND: { - ase_awk_clrpt (awk, ((ase_awk_nde_cnd_t*)p)->test); - ase_awk_clrpt (awk, ((ase_awk_nde_cnd_t*)p)->left); - ase_awk_clrpt (awk, ((ase_awk_nde_cnd_t*)p)->right); - ASE_AWK_FREE (awk, p); + qse_awk_clrpt (awk, ((qse_awk_nde_cnd_t*)p)->test); + qse_awk_clrpt (awk, ((qse_awk_nde_cnd_t*)p)->left); + qse_awk_clrpt (awk, ((qse_awk_nde_cnd_t*)p)->right); + QSE_AWK_FREE (awk, p); break; } - case ASE_AWK_NDE_INT: + case QSE_AWK_NDE_INT: { - if (((ase_awk_nde_int_t*)p)->str != ASE_NULL) - ASE_AWK_FREE (awk, ((ase_awk_nde_int_t*)p)->str); - ASE_AWK_FREE (awk, p); + if (((qse_awk_nde_int_t*)p)->str != QSE_NULL) + QSE_AWK_FREE (awk, ((qse_awk_nde_int_t*)p)->str); + QSE_AWK_FREE (awk, p); break; } - case ASE_AWK_NDE_REAL: + case QSE_AWK_NDE_REAL: { - if (((ase_awk_nde_real_t*)p)->str != ASE_NULL) - ASE_AWK_FREE (awk, ((ase_awk_nde_real_t*)p)->str); - ASE_AWK_FREE (awk, p); + if (((qse_awk_nde_real_t*)p)->str != QSE_NULL) + QSE_AWK_FREE (awk, ((qse_awk_nde_real_t*)p)->str); + QSE_AWK_FREE (awk, p); break; } - case ASE_AWK_NDE_STR: + case QSE_AWK_NDE_STR: { - ASE_AWK_FREE (awk, ((ase_awk_nde_str_t*)p)->buf); - ASE_AWK_FREE (awk, p); + QSE_AWK_FREE (awk, ((qse_awk_nde_str_t*)p)->buf); + QSE_AWK_FREE (awk, p); break; } - case ASE_AWK_NDE_REX: + case QSE_AWK_NDE_REX: { - ASE_AWK_FREE (awk, ((ase_awk_nde_rex_t*)p)->buf); - ASE_AWK_FREE (awk, ((ase_awk_nde_rex_t*)p)->code); - ASE_AWK_FREE (awk, p); + QSE_AWK_FREE (awk, ((qse_awk_nde_rex_t*)p)->buf); + QSE_AWK_FREE (awk, ((qse_awk_nde_rex_t*)p)->code); + QSE_AWK_FREE (awk, p); break; } - case ASE_AWK_NDE_NAMED: - case ASE_AWK_NDE_GLOBAL: - case ASE_AWK_NDE_LOCAL: - case ASE_AWK_NDE_ARG: + case QSE_AWK_NDE_NAMED: + case QSE_AWK_NDE_GLOBAL: + case QSE_AWK_NDE_LOCAL: + case QSE_AWK_NDE_ARG: { - ase_awk_nde_var_t* px = (ase_awk_nde_var_t*)p; - ASE_ASSERT (px->idx == ASE_NULL); - if (px->id.name.ptr != ASE_NULL) - ASE_AWK_FREE (awk, px->id.name.ptr); - ASE_AWK_FREE (awk, p); + qse_awk_nde_var_t* px = (qse_awk_nde_var_t*)p; + QSE_ASSERT (px->idx == QSE_NULL); + if (px->id.name.ptr != QSE_NULL) + QSE_AWK_FREE (awk, px->id.name.ptr); + QSE_AWK_FREE (awk, p); break; } - case ASE_AWK_NDE_NAMEDIDX: - case ASE_AWK_NDE_GLOBALIDX: - case ASE_AWK_NDE_LOCALIDX: - case ASE_AWK_NDE_ARGIDX: + case QSE_AWK_NDE_NAMEDIDX: + case QSE_AWK_NDE_GLOBALIDX: + case QSE_AWK_NDE_LOCALIDX: + case QSE_AWK_NDE_ARGIDX: { - ase_awk_nde_var_t* px = (ase_awk_nde_var_t*)p; - ASE_ASSERT (px->idx != ASE_NULL); - ase_awk_clrpt (awk, px->idx); - if (px->id.name.ptr != ASE_NULL) - ASE_AWK_FREE (awk, px->id.name.ptr); - ASE_AWK_FREE (awk, p); + qse_awk_nde_var_t* px = (qse_awk_nde_var_t*)p; + QSE_ASSERT (px->idx != QSE_NULL); + qse_awk_clrpt (awk, px->idx); + if (px->id.name.ptr != QSE_NULL) + QSE_AWK_FREE (awk, px->id.name.ptr); + QSE_AWK_FREE (awk, p); break; } - case ASE_AWK_NDE_POS: + case QSE_AWK_NDE_POS: { - ase_awk_clrpt (awk, ((ase_awk_nde_pos_t*)p)->val); - ASE_AWK_FREE (awk, p); + qse_awk_clrpt (awk, ((qse_awk_nde_pos_t*)p)->val); + QSE_AWK_FREE (awk, p); break; } - case ASE_AWK_NDE_BFN: + case QSE_AWK_NDE_BFN: { - ase_awk_nde_call_t* px = (ase_awk_nde_call_t*)p; - /* ASE_AWK_FREE (awk, px->what.bfn); */ - ASE_AWK_FREE (awk, px->what.bfn.name.ptr); - ase_awk_clrpt (awk, px->args); - ASE_AWK_FREE (awk, p); + qse_awk_nde_call_t* px = (qse_awk_nde_call_t*)p; + /* QSE_AWK_FREE (awk, px->what.bfn); */ + QSE_AWK_FREE (awk, px->what.bfn.name.ptr); + qse_awk_clrpt (awk, px->args); + QSE_AWK_FREE (awk, p); break; } - case ASE_AWK_NDE_AFN: + case QSE_AWK_NDE_AFN: { - ase_awk_nde_call_t* px = (ase_awk_nde_call_t*)p; - ASE_AWK_FREE (awk, px->what.afn.name.ptr); - ase_awk_clrpt (awk, px->args); - ASE_AWK_FREE (awk, p); + qse_awk_nde_call_t* px = (qse_awk_nde_call_t*)p; + QSE_AWK_FREE (awk, px->what.afn.name.ptr); + qse_awk_clrpt (awk, px->args); + QSE_AWK_FREE (awk, p); break; } - case ASE_AWK_NDE_GETLINE: + case QSE_AWK_NDE_GETLINE: { - ase_awk_nde_getline_t* px = - (ase_awk_nde_getline_t*)p; - if (px->var != ASE_NULL) - ase_awk_clrpt (awk, px->var); - if (px->in != ASE_NULL) - ase_awk_clrpt (awk, px->in); - ASE_AWK_FREE (awk, p); + qse_awk_nde_getline_t* px = + (qse_awk_nde_getline_t*)p; + if (px->var != QSE_NULL) + qse_awk_clrpt (awk, px->var); + if (px->in != QSE_NULL) + qse_awk_clrpt (awk, px->in); + QSE_AWK_FREE (awk, p); break; } default: { - ASE_ASSERT (!"should never happen - invalid node type"); - ASE_AWK_FREE (awk, p); + QSE_ASSERT (!"should never happen - invalid node type"); + QSE_AWK_FREE (awk, p); break; } } diff --git a/qse/lib/awk/tree.h b/qse/lib/awk/tree.h index 1dbd6d78..5aea445e 100644 --- a/qse/lib/awk/tree.h +++ b/qse/lib/awk/tree.h @@ -4,386 +4,386 @@ * {License} */ -#ifndef _ASE_LIB_AWK_TREE_H_ -#define _ASE_LIB_AWK_TREE_H_ +#ifndef _QSE_LIB_AWK_TREE_H_ +#define _QSE_LIB_AWK_TREE_H_ -enum ase_awk_nde_type_t +enum qse_awk_nde_type_t { - ASE_AWK_NDE_NULL, + QSE_AWK_NDE_NULL, /* statement */ - ASE_AWK_NDE_BLK, - ASE_AWK_NDE_IF, - ASE_AWK_NDE_WHILE, - ASE_AWK_NDE_DOWHILE, - ASE_AWK_NDE_FOR, - ASE_AWK_NDE_FOREACH, - ASE_AWK_NDE_BREAK, - ASE_AWK_NDE_CONTINUE, - ASE_AWK_NDE_RETURN, - ASE_AWK_NDE_EXIT, - ASE_AWK_NDE_NEXT, - ASE_AWK_NDE_NEXTFILE, - ASE_AWK_NDE_DELETE, - ASE_AWK_NDE_RESET, - ASE_AWK_NDE_PRINT, - ASE_AWK_NDE_PRINTF, + QSE_AWK_NDE_BLK, + QSE_AWK_NDE_IF, + QSE_AWK_NDE_WHILE, + QSE_AWK_NDE_DOWHILE, + QSE_AWK_NDE_FOR, + QSE_AWK_NDE_FOREACH, + QSE_AWK_NDE_BREAK, + QSE_AWK_NDE_CONTINUE, + QSE_AWK_NDE_RETURN, + QSE_AWK_NDE_EXIT, + QSE_AWK_NDE_NEXT, + QSE_AWK_NDE_NEXTFILE, + QSE_AWK_NDE_DELETE, + QSE_AWK_NDE_RESET, + QSE_AWK_NDE_PRINT, + QSE_AWK_NDE_PRINTF, /* expression */ /* if you change the following values including their order, * you should change __eval_func of __eval_expression * in run.c accordingly */ - ASE_AWK_NDE_GRP, - ASE_AWK_NDE_ASS, - ASE_AWK_NDE_EXP_BIN, - ASE_AWK_NDE_EXP_UNR, - ASE_AWK_NDE_EXP_INCPRE, - ASE_AWK_NDE_EXP_INCPST, - ASE_AWK_NDE_CND, - ASE_AWK_NDE_BFN, - ASE_AWK_NDE_AFN, - ASE_AWK_NDE_INT, - ASE_AWK_NDE_REAL, - ASE_AWK_NDE_STR, - ASE_AWK_NDE_REX, + QSE_AWK_NDE_GRP, + QSE_AWK_NDE_ASS, + QSE_AWK_NDE_EXP_BIN, + QSE_AWK_NDE_EXP_UNR, + QSE_AWK_NDE_EXP_INCPRE, + QSE_AWK_NDE_EXP_INCPST, + QSE_AWK_NDE_CND, + QSE_AWK_NDE_BFN, + QSE_AWK_NDE_AFN, + QSE_AWK_NDE_INT, + QSE_AWK_NDE_REAL, + QSE_AWK_NDE_STR, + QSE_AWK_NDE_REX, /* keep this order for the following items otherwise, you may have * to change eval_incpre and eval_incpst in run.c as well as - * ASE_AWK_VAL_REF_XXX in awk.h */ - ASE_AWK_NDE_NAMED, - ASE_AWK_NDE_GLOBAL, - ASE_AWK_NDE_LOCAL, - ASE_AWK_NDE_ARG, - ASE_AWK_NDE_NAMEDIDX, - ASE_AWK_NDE_GLOBALIDX, - ASE_AWK_NDE_LOCALIDX, - ASE_AWK_NDE_ARGIDX, - ASE_AWK_NDE_POS, + * QSE_AWK_VAL_REF_XXX in awk.h */ + QSE_AWK_NDE_NAMED, + QSE_AWK_NDE_GLOBAL, + QSE_AWK_NDE_LOCAL, + QSE_AWK_NDE_ARG, + QSE_AWK_NDE_NAMEDIDX, + QSE_AWK_NDE_GLOBALIDX, + QSE_AWK_NDE_LOCALIDX, + QSE_AWK_NDE_ARGIDX, + QSE_AWK_NDE_POS, /* ---------------------------------- */ - ASE_AWK_NDE_GETLINE + QSE_AWK_NDE_GETLINE }; -enum ase_awk_in_type_t +enum qse_awk_in_type_t { /* the order of these values match * __in_type_map and __in_opt_map in extio.c */ - ASE_AWK_IN_PIPE, - ASE_AWK_IN_COPROC, - ASE_AWK_IN_FILE, - ASE_AWK_IN_CONSOLE + QSE_AWK_IN_PIPE, + QSE_AWK_IN_COPROC, + QSE_AWK_IN_FILE, + QSE_AWK_IN_CONSOLE }; -enum ase_awk_out_type_t +enum qse_awk_out_type_t { /* the order of these values match * __out_type_map and __out_opt_map in extio.c */ - ASE_AWK_OUT_PIPE, - ASE_AWK_OUT_COPROC, - ASE_AWK_OUT_FILE, - ASE_AWK_OUT_FILE_APPEND, - ASE_AWK_OUT_CONSOLE + QSE_AWK_OUT_PIPE, + QSE_AWK_OUT_COPROC, + QSE_AWK_OUT_FILE, + QSE_AWK_OUT_FILE_APPEND, + QSE_AWK_OUT_CONSOLE }; /* afn (awk function defined with the keyword function) */ -typedef struct ase_awk_afn_t ase_awk_afn_t; -typedef struct ase_awk_nde_t ase_awk_nde_t; -typedef struct ase_awk_nde_blk_t ase_awk_nde_blk_t; -typedef struct ase_awk_nde_grp_t ase_awk_nde_grp_t; -typedef struct ase_awk_nde_ass_t ase_awk_nde_ass_t; -typedef struct ase_awk_nde_exp_t ase_awk_nde_exp_t; -typedef struct ase_awk_nde_cnd_t ase_awk_nde_cnd_t; -typedef struct ase_awk_nde_pos_t ase_awk_nde_pos_t; +typedef struct qse_awk_afn_t qse_awk_afn_t; +typedef struct qse_awk_nde_t qse_awk_nde_t; +typedef struct qse_awk_nde_blk_t qse_awk_nde_blk_t; +typedef struct qse_awk_nde_grp_t qse_awk_nde_grp_t; +typedef struct qse_awk_nde_ass_t qse_awk_nde_ass_t; +typedef struct qse_awk_nde_exp_t qse_awk_nde_exp_t; +typedef struct qse_awk_nde_cnd_t qse_awk_nde_cnd_t; +typedef struct qse_awk_nde_pos_t qse_awk_nde_pos_t; -#ifndef ASE_AWK_NDE_INT_DEFINED -#define ASE_AWK_NDE_INT_DEFINED -typedef struct ase_awk_nde_int_t ase_awk_nde_int_t; +#ifndef QSE_AWK_NDE_INT_DEFINED +#define QSE_AWK_NDE_INT_DEFINED +typedef struct qse_awk_nde_int_t qse_awk_nde_int_t; #endif -#ifndef ASE_AWK_NDE_REAL_DEFINED -#define ASE_AWK_NDE_REAL_DEFINED -typedef struct ase_awk_nde_real_t ase_awk_nde_real_t; +#ifndef QSE_AWK_NDE_REAL_DEFINED +#define QSE_AWK_NDE_REAL_DEFINED +typedef struct qse_awk_nde_real_t qse_awk_nde_real_t; #endif -typedef struct ase_awk_nde_str_t ase_awk_nde_str_t; -typedef struct ase_awk_nde_rex_t ase_awk_nde_rex_t; -typedef struct ase_awk_nde_var_t ase_awk_nde_var_t; -typedef struct ase_awk_nde_call_t ase_awk_nde_call_t; -typedef struct ase_awk_nde_getline_t ase_awk_nde_getline_t; +typedef struct qse_awk_nde_str_t qse_awk_nde_str_t; +typedef struct qse_awk_nde_rex_t qse_awk_nde_rex_t; +typedef struct qse_awk_nde_var_t qse_awk_nde_var_t; +typedef struct qse_awk_nde_call_t qse_awk_nde_call_t; +typedef struct qse_awk_nde_getline_t qse_awk_nde_getline_t; -typedef struct ase_awk_nde_if_t ase_awk_nde_if_t; -typedef struct ase_awk_nde_while_t ase_awk_nde_while_t; -typedef struct ase_awk_nde_for_t ase_awk_nde_for_t; -typedef struct ase_awk_nde_foreach_t ase_awk_nde_foreach_t; -typedef struct ase_awk_nde_break_t ase_awk_nde_break_t; -typedef struct ase_awk_nde_continue_t ase_awk_nde_continue_t; -typedef struct ase_awk_nde_return_t ase_awk_nde_return_t; -typedef struct ase_awk_nde_exit_t ase_awk_nde_exit_t; -typedef struct ase_awk_nde_next_t ase_awk_nde_next_t; -typedef struct ase_awk_nde_nextfile_t ase_awk_nde_nextfile_t; -typedef struct ase_awk_nde_delete_t ase_awk_nde_delete_t; -typedef struct ase_awk_nde_reset_t ase_awk_nde_reset_t; -typedef struct ase_awk_nde_print_t ase_awk_nde_print_t; +typedef struct qse_awk_nde_if_t qse_awk_nde_if_t; +typedef struct qse_awk_nde_while_t qse_awk_nde_while_t; +typedef struct qse_awk_nde_for_t qse_awk_nde_for_t; +typedef struct qse_awk_nde_foreach_t qse_awk_nde_foreach_t; +typedef struct qse_awk_nde_break_t qse_awk_nde_break_t; +typedef struct qse_awk_nde_continue_t qse_awk_nde_continue_t; +typedef struct qse_awk_nde_return_t qse_awk_nde_return_t; +typedef struct qse_awk_nde_exit_t qse_awk_nde_exit_t; +typedef struct qse_awk_nde_next_t qse_awk_nde_next_t; +typedef struct qse_awk_nde_nextfile_t qse_awk_nde_nextfile_t; +typedef struct qse_awk_nde_delete_t qse_awk_nde_delete_t; +typedef struct qse_awk_nde_reset_t qse_awk_nde_reset_t; +typedef struct qse_awk_nde_print_t qse_awk_nde_print_t; -struct ase_awk_afn_t +struct qse_awk_afn_t { - ase_xstr_t name; - ase_size_t nargs; - ase_awk_nde_t* body; + qse_xstr_t name; + qse_size_t nargs; + qse_awk_nde_t* body; }; -#define ASE_AWK_NDE_HDR \ +#define QSE_AWK_NDE_HDR \ int type; \ - ase_size_t line; \ - ase_awk_nde_t* next + qse_size_t line; \ + qse_awk_nde_t* next -struct ase_awk_nde_t +struct qse_awk_nde_t { - ASE_AWK_NDE_HDR; + QSE_AWK_NDE_HDR; }; -/* ASE_AWK_NDE_BLK - block statement including top-level blocks */ -struct ase_awk_nde_blk_t +/* QSE_AWK_NDE_BLK - block statement including top-level blocks */ +struct qse_awk_nde_blk_t { - ASE_AWK_NDE_HDR; - ase_size_t nlocals; - ase_awk_nde_t* body; + QSE_AWK_NDE_HDR; + qse_size_t nlocals; + qse_awk_nde_t* body; }; -/* ASE_AWK_NDE_GRP - expression group */ -struct ase_awk_nde_grp_t +/* QSE_AWK_NDE_GRP - expression group */ +struct qse_awk_nde_grp_t { - ASE_AWK_NDE_HDR; - ase_awk_nde_t* body; + QSE_AWK_NDE_HDR; + qse_awk_nde_t* body; }; -/* ASE_AWK_NDE_ASS - assignment */ -struct ase_awk_nde_ass_t +/* QSE_AWK_NDE_ASS - assignment */ +struct qse_awk_nde_ass_t { - ASE_AWK_NDE_HDR; + QSE_AWK_NDE_HDR; int opcode; - ase_awk_nde_t* left; - ase_awk_nde_t* right; + qse_awk_nde_t* left; + qse_awk_nde_t* right; }; -/* ASE_AWK_NDE_EXP_BIN, ASE_AWK_NDE_EXP_UNR, - * ASE_AWK_NDE_EXP_INCPRE, ASE_AW_NDE_EXP_INCPST */ -struct ase_awk_nde_exp_t +/* QSE_AWK_NDE_EXP_BIN, QSE_AWK_NDE_EXP_UNR, + * QSE_AWK_NDE_EXP_INCPRE, QSE_AW_NDE_EXP_INCPST */ +struct qse_awk_nde_exp_t { - ASE_AWK_NDE_HDR; + QSE_AWK_NDE_HDR; int opcode; - ase_awk_nde_t* left; - ase_awk_nde_t* right; /* ASE_NULL for UNR, INCPRE, INCPST */ + qse_awk_nde_t* left; + qse_awk_nde_t* right; /* QSE_NULL for UNR, INCPRE, INCPST */ }; -/* ASE_AWK_NDE_CND */ -struct ase_awk_nde_cnd_t +/* QSE_AWK_NDE_CND */ +struct qse_awk_nde_cnd_t { - ASE_AWK_NDE_HDR; - ase_awk_nde_t* test; - ase_awk_nde_t* left; - ase_awk_nde_t* right; + QSE_AWK_NDE_HDR; + qse_awk_nde_t* test; + qse_awk_nde_t* left; + qse_awk_nde_t* right; }; -/* ASE_AWK_NDE_POS - positional - $1, $2, $x, etc */ -struct ase_awk_nde_pos_t +/* QSE_AWK_NDE_POS - positional - $1, $2, $x, etc */ +struct qse_awk_nde_pos_t { - ASE_AWK_NDE_HDR; - ase_awk_nde_t* val; + QSE_AWK_NDE_HDR; + qse_awk_nde_t* val; }; -/* ASE_AWK_NDE_INT */ -struct ase_awk_nde_int_t +/* QSE_AWK_NDE_INT */ +struct qse_awk_nde_int_t { - ASE_AWK_NDE_HDR; - ase_long_t val; - ase_char_t* str; - ase_size_t len; + QSE_AWK_NDE_HDR; + qse_long_t val; + qse_char_t* str; + qse_size_t len; }; -/* ASE_AWK_NDE_REAL */ -struct ase_awk_nde_real_t +/* QSE_AWK_NDE_REAL */ +struct qse_awk_nde_real_t { - ASE_AWK_NDE_HDR; - ase_real_t val; - ase_char_t* str; - ase_size_t len; + QSE_AWK_NDE_HDR; + qse_real_t val; + qse_char_t* str; + qse_size_t len; }; -/* ASE_AWK_NDE_STR */ -struct ase_awk_nde_str_t +/* QSE_AWK_NDE_STR */ +struct qse_awk_nde_str_t { - ASE_AWK_NDE_HDR; - ase_char_t* buf; - ase_size_t len; + QSE_AWK_NDE_HDR; + qse_char_t* buf; + qse_size_t len; }; -/* ASE_AWK_NDE_REX */ -struct ase_awk_nde_rex_t +/* QSE_AWK_NDE_REX */ +struct qse_awk_nde_rex_t { - ASE_AWK_NDE_HDR; - ase_char_t* buf; - ase_size_t len; + QSE_AWK_NDE_HDR; + qse_char_t* buf; + qse_size_t len; void* code; }; -/* ASE_AWK_NDE_NAMED, ASE_AWK_NDE_GLOBAL, - * ASE_AWK_NDE_LOCAL, ASE_AWK_NDE_ARG - * ASE_AWK_NDE_NAMEDIDX, ASE_AWK_NDE_GLOBALIDX, - * ASE_AWK_NDE_LOCALIDX, ASE_AWK_NDE_ARGIDX */ -struct ase_awk_nde_var_t +/* QSE_AWK_NDE_NAMED, QSE_AWK_NDE_GLOBAL, + * QSE_AWK_NDE_LOCAL, QSE_AWK_NDE_ARG + * QSE_AWK_NDE_NAMEDIDX, QSE_AWK_NDE_GLOBALIDX, + * QSE_AWK_NDE_LOCALIDX, QSE_AWK_NDE_ARGIDX */ +struct qse_awk_nde_var_t { - ASE_AWK_NDE_HDR; + QSE_AWK_NDE_HDR; struct { - ase_xstr_t name; - ase_size_t idxa; + qse_xstr_t name; + qse_size_t idxa; } id; - ase_awk_nde_t* idx; /* ASE_NULL for non-XXXXIDX */ + qse_awk_nde_t* idx; /* QSE_NULL for non-XXXXIDX */ }; -/* ASE_AWK_NDE_BFN, ASE_AWK_NDE_AFN */ -struct ase_awk_nde_call_t +/* QSE_AWK_NDE_BFN, QSE_AWK_NDE_AFN */ +struct qse_awk_nde_call_t { - ASE_AWK_NDE_HDR; + QSE_AWK_NDE_HDR; union { struct { - ase_xstr_t name; + qse_xstr_t name; } afn; /* minimum information of a intrinsic function * needed during run-time. */ struct { - ase_xstr_t name; + qse_xstr_t name; - /* original name. if ase_awk_setword has been + /* original name. if qse_awk_setword has been * invoked, oname can be different from name */ - ase_xstr_t oname; + qse_xstr_t oname; struct { - ase_size_t min; - ase_size_t max; - const ase_char_t* spec; + qse_size_t min; + qse_size_t max; + const qse_char_t* spec; } arg; int (*handler) ( - ase_awk_run_t*, const ase_char_t*, ase_size_t); + qse_awk_run_t*, const qse_char_t*, qse_size_t); } bfn; } what; - ase_awk_nde_t* args; - ase_size_t nargs; + qse_awk_nde_t* args; + qse_size_t nargs; }; -/* ASE_AWK_NDE_GETLINE */ -struct ase_awk_nde_getline_t +/* QSE_AWK_NDE_GETLINE */ +struct qse_awk_nde_getline_t { - ASE_AWK_NDE_HDR; - ase_awk_nde_t* var; - int in_type; /* ASE_AWK_GETLINE_XXX */ - ase_awk_nde_t* in; + QSE_AWK_NDE_HDR; + qse_awk_nde_t* var; + int in_type; /* QSE_AWK_GETLINE_XXX */ + qse_awk_nde_t* in; }; -/* ASE_AWK_NDE_IF */ -struct ase_awk_nde_if_t +/* QSE_AWK_NDE_IF */ +struct qse_awk_nde_if_t { - ASE_AWK_NDE_HDR; - ase_awk_nde_t* test; - ase_awk_nde_t* then_part; - ase_awk_nde_t* else_part; /* optional */ + QSE_AWK_NDE_HDR; + qse_awk_nde_t* test; + qse_awk_nde_t* then_part; + qse_awk_nde_t* else_part; /* optional */ }; -/* ASE_AWK_NDE_WHILE, ASE_AWK_NDE_DOWHILE */ -struct ase_awk_nde_while_t +/* QSE_AWK_NDE_WHILE, QSE_AWK_NDE_DOWHILE */ +struct qse_awk_nde_while_t { - ASE_AWK_NDE_HDR; - ase_awk_nde_t* test; - ase_awk_nde_t* body; + QSE_AWK_NDE_HDR; + qse_awk_nde_t* test; + qse_awk_nde_t* body; }; -/* ASE_AWK_NDE_FOR */ -struct ase_awk_nde_for_t +/* QSE_AWK_NDE_FOR */ +struct qse_awk_nde_for_t { - ASE_AWK_NDE_HDR; - ase_awk_nde_t* init; /* optional */ - ase_awk_nde_t* test; /* optional */ - ase_awk_nde_t* incr; /* optional */ - ase_awk_nde_t* body; + QSE_AWK_NDE_HDR; + qse_awk_nde_t* init; /* optional */ + qse_awk_nde_t* test; /* optional */ + qse_awk_nde_t* incr; /* optional */ + qse_awk_nde_t* body; }; -/* ASE_AWK_NDE_FOREACH */ -struct ase_awk_nde_foreach_t +/* QSE_AWK_NDE_FOREACH */ +struct qse_awk_nde_foreach_t { - ASE_AWK_NDE_HDR; - ase_awk_nde_t* test; - ase_awk_nde_t* body; + QSE_AWK_NDE_HDR; + qse_awk_nde_t* test; + qse_awk_nde_t* body; }; -/* ASE_AWK_NDE_BREAK */ -struct ase_awk_nde_break_t +/* QSE_AWK_NDE_BREAK */ +struct qse_awk_nde_break_t { - ASE_AWK_NDE_HDR; + QSE_AWK_NDE_HDR; }; -/* ASE_AWK_NDE_CONTINUE */ -struct ase_awk_nde_continue_t +/* QSE_AWK_NDE_CONTINUE */ +struct qse_awk_nde_continue_t { - ASE_AWK_NDE_HDR; + QSE_AWK_NDE_HDR; }; -/* ASE_AWK_NDE_RETURN */ -struct ase_awk_nde_return_t +/* QSE_AWK_NDE_RETURN */ +struct qse_awk_nde_return_t { - ASE_AWK_NDE_HDR; - ase_awk_nde_t* val; /* optional (no return code if ASE_NULL) */ + QSE_AWK_NDE_HDR; + qse_awk_nde_t* val; /* optional (no return code if QSE_NULL) */ }; -/* ASE_AWK_NDE_EXIT */ -struct ase_awk_nde_exit_t +/* QSE_AWK_NDE_EXIT */ +struct qse_awk_nde_exit_t { - ASE_AWK_NDE_HDR; - ase_awk_nde_t* val; /* optional (no exit code if ASE_NULL) */ + QSE_AWK_NDE_HDR; + qse_awk_nde_t* val; /* optional (no exit code if QSE_NULL) */ }; -/* ASE_AWK_NDE_NEXT */ -struct ase_awk_nde_next_t +/* QSE_AWK_NDE_NEXT */ +struct qse_awk_nde_next_t { - ASE_AWK_NDE_HDR; + QSE_AWK_NDE_HDR; }; -/* ASE_AWK_NDE_NEXTFILE */ -struct ase_awk_nde_nextfile_t +/* QSE_AWK_NDE_NEXTFILE */ +struct qse_awk_nde_nextfile_t { - ASE_AWK_NDE_HDR; + QSE_AWK_NDE_HDR; int out; }; -/* ASE_AWK_NDE_DELETE */ -struct ase_awk_nde_delete_t +/* QSE_AWK_NDE_DELETE */ +struct qse_awk_nde_delete_t { - ASE_AWK_NDE_HDR; - ase_awk_nde_t* var; + QSE_AWK_NDE_HDR; + qse_awk_nde_t* var; }; -/* ASE_AWK_NDE_RESET */ -struct ase_awk_nde_reset_t +/* QSE_AWK_NDE_RESET */ +struct qse_awk_nde_reset_t { - ASE_AWK_NDE_HDR; - ase_awk_nde_t* var; + QSE_AWK_NDE_HDR; + qse_awk_nde_t* var; }; -/* ASE_AWK_NDE_PRINT */ -struct ase_awk_nde_print_t +/* QSE_AWK_NDE_PRINT */ +struct qse_awk_nde_print_t { - ASE_AWK_NDE_HDR; - ase_awk_nde_t* args; - int out_type; /* ASE_AWK_OUT_XXX */ - ase_awk_nde_t* out; + QSE_AWK_NDE_HDR; + qse_awk_nde_t* args; + int out_type; /* QSE_AWK_OUT_XXX */ + qse_awk_nde_t* out; }; #ifdef __cplusplus @@ -391,13 +391,13 @@ extern "C" { #endif /* print the entire tree */ -int ase_awk_prnpt (ase_awk_t* awk, ase_awk_nde_t* tree); +int qse_awk_prnpt (qse_awk_t* awk, qse_awk_nde_t* tree); /* print a single top-level node */ -int ase_awk_prnnde (ase_awk_t* awk, ase_awk_nde_t* node); +int qse_awk_prnnde (qse_awk_t* awk, qse_awk_nde_t* node); /* print the pattern part */ -int ase_awk_prnptnpt (ase_awk_t* awk, ase_awk_nde_t* tree); +int qse_awk_prnptnpt (qse_awk_t* awk, qse_awk_nde_t* tree); -void ase_awk_clrpt (ase_awk_t* awk, ase_awk_nde_t* tree); +void qse_awk_clrpt (qse_awk_t* awk, qse_awk_nde_t* tree); #ifdef __cplusplus } diff --git a/qse/lib/awk/val.c b/qse/lib/awk/val.c index 1f520998..55118b40 100644 --- a/qse/lib/awk/val.c +++ b/qse/lib/awk/val.c @@ -7,93 +7,93 @@ #include "awk.h" #ifdef DEBUG_VAL -#include +#include #endif #define CHUNKSIZE 100 -typedef struct ase_awk_val_ichunk_t ase_awk_val_ichunk_t; -typedef struct ase_awk_val_rchunk_t ase_awk_val_rchunk_t; +typedef struct qse_awk_val_ichunk_t qse_awk_val_ichunk_t; +typedef struct qse_awk_val_rchunk_t qse_awk_val_rchunk_t; -struct ase_awk_val_chunk_t +struct qse_awk_val_chunk_t { - ase_awk_val_chunk_t* next; + qse_awk_val_chunk_t* next; }; -struct ase_awk_val_ichunk_t +struct qse_awk_val_ichunk_t { - ase_awk_val_chunk_t* next; + qse_awk_val_chunk_t* next; /* make sure that it has the same fields as - ase_awk_val_chunk_t up to this point */ + qse_awk_val_chunk_t up to this point */ - ase_awk_val_int_t slot[CHUNKSIZE]; + qse_awk_val_int_t slot[CHUNKSIZE]; }; -struct ase_awk_val_rchunk_t +struct qse_awk_val_rchunk_t { - ase_awk_val_chunk_t* next; + qse_awk_val_chunk_t* next; /* make sure that it has the same fields as - ase_awk_val_chunk_t up to this point */ + qse_awk_val_chunk_t up to this point */ - ase_awk_val_real_t slot[CHUNKSIZE]; + qse_awk_val_real_t slot[CHUNKSIZE]; }; -static ase_char_t* str_to_str ( - ase_awk_run_t* run, const ase_char_t* str, ase_size_t str_len, - int opt, ase_str_t* buf, ase_size_t* len); +static qse_char_t* str_to_str ( + qse_awk_run_t* run, const qse_char_t* str, qse_size_t str_len, + int opt, qse_str_t* buf, qse_size_t* len); -static ase_char_t* val_int_to_str ( - ase_awk_run_t* run, ase_awk_val_int_t* v, - int opt, ase_str_t* buf, ase_size_t* len); +static qse_char_t* val_int_to_str ( + qse_awk_run_t* run, qse_awk_val_int_t* v, + int opt, qse_str_t* buf, qse_size_t* len); -static ase_char_t* val_real_to_str ( - ase_awk_run_t* run, ase_awk_val_real_t* v, - int opt, ase_str_t* buf, ase_size_t* len); +static qse_char_t* val_real_to_str ( + qse_awk_run_t* run, qse_awk_val_real_t* v, + int opt, qse_str_t* buf, qse_size_t* len); -static ase_awk_val_nil_t awk_nil = { ASE_AWK_VAL_NIL, 0 }; -static ase_awk_val_str_t awk_zls = { ASE_AWK_VAL_STR, 0, ASE_T(""), 0 }; +static qse_awk_val_nil_t awk_nil = { QSE_AWK_VAL_NIL, 0 }; +static qse_awk_val_str_t awk_zls = { QSE_AWK_VAL_STR, 0, QSE_T(""), 0 }; -ase_awk_val_t* ase_awk_val_nil = (ase_awk_val_t*)&awk_nil; -ase_awk_val_t* ase_awk_val_zls = (ase_awk_val_t*)&awk_zls; +qse_awk_val_t* qse_awk_val_nil = (qse_awk_val_t*)&awk_nil; +qse_awk_val_t* qse_awk_val_zls = (qse_awk_val_t*)&awk_zls; -static ase_awk_val_int_t awk_int[] = +static qse_awk_val_int_t awk_int[] = { - { ASE_AWK_VAL_INT, 0, -1, ASE_NULL }, - { ASE_AWK_VAL_INT, 0, 0, ASE_NULL }, - { ASE_AWK_VAL_INT, 0, 1, ASE_NULL }, - { ASE_AWK_VAL_INT, 0, 2, ASE_NULL }, - { ASE_AWK_VAL_INT, 0, 3, ASE_NULL }, - { ASE_AWK_VAL_INT, 0, 4, ASE_NULL }, - { ASE_AWK_VAL_INT, 0, 5, ASE_NULL }, - { ASE_AWK_VAL_INT, 0, 6, ASE_NULL }, - { ASE_AWK_VAL_INT, 0, 7, ASE_NULL }, - { ASE_AWK_VAL_INT, 0, 8, ASE_NULL }, - { ASE_AWK_VAL_INT, 0, 9, ASE_NULL }, - { ASE_AWK_VAL_INT, 0, 10, ASE_NULL }, - { ASE_AWK_VAL_INT, 0, 11, ASE_NULL }, - { ASE_AWK_VAL_INT, 0, 12, ASE_NULL }, - { ASE_AWK_VAL_INT, 0, 13, ASE_NULL }, - { ASE_AWK_VAL_INT, 0, 14, ASE_NULL }, - { ASE_AWK_VAL_INT, 0, 15, ASE_NULL }, - { ASE_AWK_VAL_INT, 0, 16, ASE_NULL }, - { ASE_AWK_VAL_INT, 0, 17, ASE_NULL }, - { ASE_AWK_VAL_INT, 0, 18, ASE_NULL }, - { ASE_AWK_VAL_INT, 0, 19, ASE_NULL }, - { ASE_AWK_VAL_INT, 0, 20, ASE_NULL } + { QSE_AWK_VAL_INT, 0, -1, QSE_NULL }, + { QSE_AWK_VAL_INT, 0, 0, QSE_NULL }, + { QSE_AWK_VAL_INT, 0, 1, QSE_NULL }, + { QSE_AWK_VAL_INT, 0, 2, QSE_NULL }, + { QSE_AWK_VAL_INT, 0, 3, QSE_NULL }, + { QSE_AWK_VAL_INT, 0, 4, QSE_NULL }, + { QSE_AWK_VAL_INT, 0, 5, QSE_NULL }, + { QSE_AWK_VAL_INT, 0, 6, QSE_NULL }, + { QSE_AWK_VAL_INT, 0, 7, QSE_NULL }, + { QSE_AWK_VAL_INT, 0, 8, QSE_NULL }, + { QSE_AWK_VAL_INT, 0, 9, QSE_NULL }, + { QSE_AWK_VAL_INT, 0, 10, QSE_NULL }, + { QSE_AWK_VAL_INT, 0, 11, QSE_NULL }, + { QSE_AWK_VAL_INT, 0, 12, QSE_NULL }, + { QSE_AWK_VAL_INT, 0, 13, QSE_NULL }, + { QSE_AWK_VAL_INT, 0, 14, QSE_NULL }, + { QSE_AWK_VAL_INT, 0, 15, QSE_NULL }, + { QSE_AWK_VAL_INT, 0, 16, QSE_NULL }, + { QSE_AWK_VAL_INT, 0, 17, QSE_NULL }, + { QSE_AWK_VAL_INT, 0, 18, QSE_NULL }, + { QSE_AWK_VAL_INT, 0, 19, QSE_NULL }, + { QSE_AWK_VAL_INT, 0, 20, QSE_NULL } }; -ase_awk_val_t* ase_awk_val_negone = (ase_awk_val_t*)&awk_int[0]; -ase_awk_val_t* ase_awk_val_zero = (ase_awk_val_t*)&awk_int[1]; -ase_awk_val_t* ase_awk_val_one = (ase_awk_val_t*)&awk_int[2]; +qse_awk_val_t* qse_awk_val_negone = (qse_awk_val_t*)&awk_int[0]; +qse_awk_val_t* qse_awk_val_zero = (qse_awk_val_t*)&awk_int[1]; +qse_awk_val_t* qse_awk_val_one = (qse_awk_val_t*)&awk_int[2]; -ase_awk_val_t* ase_awk_makeintval (ase_awk_run_t* run, ase_long_t v) +qse_awk_val_t* qse_awk_makeintval (qse_awk_run_t* run, qse_long_t v) { - ase_awk_val_int_t* val; + qse_awk_val_int_t* val; if (v >= awk_int[0].val && - v <= awk_int[ASE_COUNTOF(awk_int)-1].val) + v <= awk_int[QSE_COUNTOF(awk_int)-1].val) { - return (ase_awk_val_t*)&awk_int[v-awk_int[0].val]; + return (qse_awk_val_t*)&awk_int[v-awk_int[0].val]; } /* @@ -103,73 +103,73 @@ ase_awk_val_t* ase_awk_makeintval (ase_awk_run_t* run, ase_long_t v) } else { - val = (ase_awk_val_int_t*) ASE_AWK_ALLOC ( - run->awk, ASE_SIZEOF(ase_awk_val_int_t)); - if (val == ASE_NULL) + val = (qse_awk_val_int_t*) QSE_AWK_ALLOC ( + run->awk, QSE_SIZEOF(qse_awk_val_int_t)); + if (val == QSE_NULL) { - ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM); - return ASE_NULL; + qse_awk_setrunerrnum (run, QSE_AWK_ENOMEM); + return QSE_NULL; } } */ - if (run->vmgr.ifree == ASE_NULL) + if (run->vmgr.ifree == QSE_NULL) { - ase_awk_val_ichunk_t* c; - ase_awk_val_int_t* x; - ase_size_t i; + qse_awk_val_ichunk_t* c; + qse_awk_val_int_t* x; + qse_size_t i; - /* use ase_awk_val_ichunk structure to avoid + /* use qse_awk_val_ichunk structure to avoid * any alignment issues on platforms requiring * aligned memory access - using the code commented out * will cause a fault on such a platform */ - /* c = ASE_AWK_ALLOC (run->awk, - ASE_SIZEOF(ase_awk_val_chunk_t)+ - ASE_SIZEOF(ase_awk_val_int_t)*CHUNKSIZE); */ - c = ASE_AWK_ALLOC (run->awk, ASE_SIZEOF(ase_awk_val_ichunk_t)); - if (c == ASE_NULL) + /* c = QSE_AWK_ALLOC (run->awk, + QSE_SIZEOF(qse_awk_val_chunk_t)+ + QSE_SIZEOF(qse_awk_val_int_t)*CHUNKSIZE); */ + c = QSE_AWK_ALLOC (run->awk, QSE_SIZEOF(qse_awk_val_ichunk_t)); + if (c == QSE_NULL) { - ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM); - return ASE_NULL; + qse_awk_setrunerrnum (run, QSE_AWK_ENOMEM); + return QSE_NULL; } c->next = run->vmgr.ichunk; /*run->vmgr.ichunk = c;*/ - run->vmgr.ichunk = (ase_awk_val_chunk_t*)c; + run->vmgr.ichunk = (qse_awk_val_chunk_t*)c; - /*x = (ase_awk_val_int_t*)(c + 1); + /*x = (qse_awk_val_int_t*)(c + 1); for (i = 0; i < CHUNKSIZE-1; i++) - x[i].nde = (ase_awk_nde_int_t*)&x[i+1]; - x[i].nde = ASE_NULL; + x[i].nde = (qse_awk_nde_int_t*)&x[i+1]; + x[i].nde = QSE_NULL; run->vmgr.ifree = x; */ for (i = 0; i < CHUNKSIZE-1; i++) - c->slot[i].nde = (ase_awk_nde_int_t*)&c->slot[i+1]; - c->slot[i].nde = ASE_NULL; + c->slot[i].nde = (qse_awk_nde_int_t*)&c->slot[i+1]; + c->slot[i].nde = QSE_NULL; run->vmgr.ifree = &c->slot[0]; } val = run->vmgr.ifree; - run->vmgr.ifree = (ase_awk_val_int_t*)val->nde; + run->vmgr.ifree = (qse_awk_val_int_t*)val->nde; - val->type = ASE_AWK_VAL_INT; + val->type = QSE_AWK_VAL_INT; val->ref = 0; val->val = v; - val->nde = ASE_NULL; + val->nde = QSE_NULL; #ifdef DEBUG_VAL - ase_dprintf (ASE_T("makeintval => %ld [%p]\n"), (long)v, val); + qse_dprintf (QSE_T("makeintval => %ld [%p]\n"), (long)v, val); #endif - return (ase_awk_val_t*)val; + return (qse_awk_val_t*)val; } -ase_awk_val_t* ase_awk_makerealval (ase_awk_run_t* run, ase_real_t v) +qse_awk_val_t* qse_awk_makerealval (qse_awk_run_t* run, qse_real_t v) { - ase_awk_val_real_t* val; + qse_awk_val_real_t* val; /* if (run->rcache_count > 0) @@ -178,76 +178,76 @@ ase_awk_val_t* ase_awk_makerealval (ase_awk_run_t* run, ase_real_t v) } else { - val = (ase_awk_val_real_t*) ASE_AWK_ALLOC ( - run->awk, ASE_SIZEOF(ase_awk_val_real_t)); - if (val == ASE_NULL) + val = (qse_awk_val_real_t*) QSE_AWK_ALLOC ( + run->awk, QSE_SIZEOF(qse_awk_val_real_t)); + if (val == QSE_NULL) { - ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM); - return ASE_NULL; + qse_awk_setrunerrnum (run, QSE_AWK_ENOMEM); + return QSE_NULL; } } */ - if (run->vmgr.rfree == ASE_NULL) + if (run->vmgr.rfree == QSE_NULL) { - ase_awk_val_rchunk_t* c; - ase_awk_val_real_t* x; - ase_size_t i; + qse_awk_val_rchunk_t* c; + qse_awk_val_real_t* x; + qse_size_t i; - /* c = ASE_AWK_ALLOC (run->awk, - ASE_SIZEOF(ase_awk_val_chunk_t)+ - ASE_SIZEOF(ase_awk_val_real_t)*CHUNKSIZE); */ - c = ASE_AWK_ALLOC (run->awk, ASE_SIZEOF(ase_awk_val_rchunk_t)); - if (c == ASE_NULL) + /* c = QSE_AWK_ALLOC (run->awk, + QSE_SIZEOF(qse_awk_val_chunk_t)+ + QSE_SIZEOF(qse_awk_val_real_t)*CHUNKSIZE); */ + c = QSE_AWK_ALLOC (run->awk, QSE_SIZEOF(qse_awk_val_rchunk_t)); + if (c == QSE_NULL) { - ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM); - return ASE_NULL; + qse_awk_setrunerrnum (run, QSE_AWK_ENOMEM); + return QSE_NULL; } c->next = run->vmgr.rchunk; /*run->vmgr.rchunk = c;*/ - run->vmgr.rchunk = (ase_awk_val_chunk_t*)c; + run->vmgr.rchunk = (qse_awk_val_chunk_t*)c; /* - x = (ase_awk_val_real_t*)(c + 1); + x = (qse_awk_val_real_t*)(c + 1); for (i = 0; i < CHUNKSIZE-1; i++) - x[i].nde = (ase_awk_nde_real_t*)&x[i+1]; - x[i].nde = ASE_NULL; + x[i].nde = (qse_awk_nde_real_t*)&x[i+1]; + x[i].nde = QSE_NULL; run->vmgr.rfree = x; */ for (i = 0; i < CHUNKSIZE-1; i++) - c->slot[i].nde = (ase_awk_nde_real_t*)&c->slot[i+1]; - c->slot[i].nde = ASE_NULL; + c->slot[i].nde = (qse_awk_nde_real_t*)&c->slot[i+1]; + c->slot[i].nde = QSE_NULL; run->vmgr.rfree = &c->slot[0]; } val = run->vmgr.rfree; - run->vmgr.rfree = (ase_awk_val_real_t*)val->nde; + run->vmgr.rfree = (qse_awk_val_real_t*)val->nde; - val->type = ASE_AWK_VAL_REAL; + val->type = QSE_AWK_VAL_REAL; val->ref = 0; val->val = v; - val->nde = ASE_NULL; + val->nde = QSE_NULL; #ifdef DEBUG_VAL - ase_dprintf (ASE_T("makerealval => %Lf [%p]\n"), (double)v, val); + qse_dprintf (QSE_T("makerealval => %Lf [%p]\n"), (double)v, val); #endif - return (ase_awk_val_t*)val; + return (qse_awk_val_t*)val; } -ase_awk_val_t* ase_awk_makestrval0 (ase_awk_run_t* run, const ase_char_t* str) +qse_awk_val_t* qse_awk_makestrval0 (qse_awk_run_t* run, const qse_char_t* str) { - return ase_awk_makestrval (run, str, ase_strlen(str)); + return qse_awk_makestrval (run, str, qse_strlen(str)); } -ase_awk_val_t* ase_awk_makestrval ( - ase_awk_run_t* run, const ase_char_t* str, ase_size_t len) +qse_awk_val_t* qse_awk_makestrval ( + qse_awk_run_t* run, const qse_char_t* str, qse_size_t len) { - ase_awk_val_str_t* val; - ase_size_t rlen = len; + qse_awk_val_str_t* val; + qse_size_t rlen = len; /*if (rlen <= 32) { @@ -268,57 +268,57 @@ ase_awk_val_t* ase_awk_makestrval ( rlen = 64; }*/ - val = (ase_awk_val_str_t*) ASE_AWK_ALLOC ( + val = (qse_awk_val_str_t*) QSE_AWK_ALLOC ( run->awk, - ASE_SIZEOF(ase_awk_val_str_t) + - (rlen+1)*ASE_SIZEOF(ase_char_t)); - if (val == ASE_NULL) + QSE_SIZEOF(qse_awk_val_str_t) + + (rlen+1)*QSE_SIZEOF(qse_char_t)); + if (val == QSE_NULL) { - ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM); - return ASE_NULL; + qse_awk_setrunerrnum (run, QSE_AWK_ENOMEM); + return QSE_NULL; } init: - val->type = ASE_AWK_VAL_STR; + val->type = QSE_AWK_VAL_STR; val->ref = 0; val->len = len; - val->buf = (ase_char_t*)(val + 1); - /*ase_strxncpy (val->buf, len+1, str, len);*/ - ase_strncpy (val->buf, str, len); + val->buf = (qse_char_t*)(val + 1); + /*qse_strxncpy (val->buf, len+1, str, len);*/ + qse_strncpy (val->buf, str, len); #ifdef DEBUG_VAL - ase_dprintf (ASE_T("makestrval => %p\n"), val); + qse_dprintf (QSE_T("makestrval => %p\n"), val); #endif - return (ase_awk_val_t*)val; + return (qse_awk_val_t*)val; } -ase_awk_val_t* ase_awk_makestrval_nodup ( - ase_awk_run_t* run, ase_char_t* str, ase_size_t len) +qse_awk_val_t* qse_awk_makestrval_nodup ( + qse_awk_run_t* run, qse_char_t* str, qse_size_t len) { - ase_awk_val_str_t* val; + qse_awk_val_str_t* val; - val = (ase_awk_val_str_t*) ASE_AWK_ALLOC ( - run->awk, ASE_SIZEOF(ase_awk_val_str_t)); - if (val == ASE_NULL) + val = (qse_awk_val_str_t*) QSE_AWK_ALLOC ( + run->awk, QSE_SIZEOF(qse_awk_val_str_t)); + if (val == QSE_NULL) { - ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM); - return ASE_NULL; + qse_awk_setrunerrnum (run, QSE_AWK_ENOMEM); + return QSE_NULL; } - val->type = ASE_AWK_VAL_STR; + val->type = QSE_AWK_VAL_STR; val->ref = 0; val->len = len; val->buf = str; - return (ase_awk_val_t*)val; + return (qse_awk_val_t*)val; } -ase_awk_val_t* ase_awk_makestrval2 ( - ase_awk_run_t* run, - const ase_char_t* str1, ase_size_t len1, - const ase_char_t* str2, ase_size_t len2) +qse_awk_val_t* qse_awk_makestrval2 ( + qse_awk_run_t* run, + const qse_char_t* str1, qse_size_t len1, + const qse_char_t* str2, qse_size_t len2) { - ase_awk_val_str_t* val; - ase_size_t rlen = len1 + len2; + qse_awk_val_str_t* val; + qse_size_t rlen = len1 + len2; /*if (rlen <= 32) { @@ -339,70 +339,70 @@ ase_awk_val_t* ase_awk_makestrval2 ( rlen = 64; }*/ - val = (ase_awk_val_str_t*) ASE_AWK_ALLOC ( + val = (qse_awk_val_str_t*) QSE_AWK_ALLOC ( run->awk, - ASE_SIZEOF(ase_awk_val_str_t) + - (rlen+1)*ASE_SIZEOF(ase_char_t)); - if (val == ASE_NULL) + QSE_SIZEOF(qse_awk_val_str_t) + + (rlen+1)*QSE_SIZEOF(qse_char_t)); + if (val == QSE_NULL) { - ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM); - return ASE_NULL; + qse_awk_setrunerrnum (run, QSE_AWK_ENOMEM); + return QSE_NULL; } init: - val->type = ASE_AWK_VAL_STR; + val->type = QSE_AWK_VAL_STR; val->ref = 0; val->len = len1 + len2; - val->buf = (ase_char_t*)(val + 1); - /*ase_strxncpy (val->buf, len1+1, str1, len1); - ase_strxncpy (val->buf[len1], len2+1, str2, len2);*/ - ase_strncpy (val->buf, str1, len1); - ase_strncpy (&val->buf[len1], str2, len2); + val->buf = (qse_char_t*)(val + 1); + /*qse_strxncpy (val->buf, len1+1, str1, len1); + qse_strxncpy (val->buf[len1], len2+1, str2, len2);*/ + qse_strncpy (val->buf, str1, len1); + qse_strncpy (&val->buf[len1], str2, len2); #ifdef DEBUG_VAL - ase_dprintf (ASE_T("makestrval2 => %p\n"), val); + qse_dprintf (QSE_T("makestrval2 => %p\n"), val); #endif - return (ase_awk_val_t*)val; + return (qse_awk_val_t*)val; } -ase_awk_val_t* ase_awk_makerexval ( - ase_awk_run_t* run, const ase_char_t* buf, ase_size_t len, void* code) +qse_awk_val_t* qse_awk_makerexval ( + qse_awk_run_t* run, const qse_char_t* buf, qse_size_t len, void* code) { - ase_awk_val_rex_t* val; + qse_awk_val_rex_t* val; - val = (ase_awk_val_rex_t*) ASE_AWK_ALLOC ( - run->awk, ASE_SIZEOF(ase_awk_val_rex_t) + - (ASE_SIZEOF(*buf)*len+1) + ASE_REX_LEN(code)); - if (val == ASE_NULL) return ASE_NULL; + val = (qse_awk_val_rex_t*) QSE_AWK_ALLOC ( + run->awk, QSE_SIZEOF(qse_awk_val_rex_t) + + (QSE_SIZEOF(*buf)*len+1) + QSE_REX_LEN(code)); + if (val == QSE_NULL) return QSE_NULL; - val->type = ASE_AWK_VAL_REX; + val->type = QSE_AWK_VAL_REX; val->ref = 0; val->len = len; /* - val->buf = ASE_AWK_STRXDUP (run->awk, buf, len); - if (val->buf == ASE_NULL) + val->buf = QSE_AWK_STRXDUP (run->awk, buf, len); + if (val->buf == QSE_NULL) { - ASE_AWK_FREE (run->awk, val); - ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM); - return ASE_NULL; + QSE_AWK_FREE (run->awk, val); + qse_awk_setrunerrnum (run, QSE_AWK_ENOMEM); + return QSE_NULL; }*/ - val->buf = (ase_char_t*)(val + 1); - ase_strncpy (val->buf, buf, len); + val->buf = (qse_char_t*)(val + 1); + qse_strncpy (val->buf, buf, len); /* - val->code = ASE_AWK_ALLOC (run->awk, ASE_REX_LEN(code)); - if (val->code == ASE_NULL) + val->code = QSE_AWK_ALLOC (run->awk, QSE_REX_LEN(code)); + if (val->code == QSE_NULL) { - ASE_AWK_FREE (run->awk, val->buf); - ASE_AWK_FREE (run->awk, val); - ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM); - return ASE_NULL; + QSE_AWK_FREE (run->awk, val->buf); + QSE_AWK_FREE (run->awk, val); + qse_awk_setrunerrnum (run, QSE_AWK_ENOMEM); + return QSE_NULL; } */ val->code = val->buf + len + 1; - ASE_MEMCPY (val->code, code, ASE_REX_LEN(code)); + QSE_MEMCPY (val->code, code, QSE_REX_LEN(code)); - return (ase_awk_val_t*)val; + return (qse_awk_val_t*)val; } /* CHECK */ @@ -410,117 +410,117 @@ ase_awk_val_t* ase_awk_makerexval ( static void free_mapval (void* run, void* v) { #ifdef DEBUG_VAL - ase_dprintf (ASE_T("refdown in map free...")); - ase_awk_dprintval (run, v); - ase_dprintf (ASE_T("\n")); + qse_dprintf (QSE_T("refdown in map free...")); + qse_awk_dprintval (run, v); + qse_dprintf (QSE_T("\n")); #endif - ase_awk_refdownval (run, v); + qse_awk_refdownval (run, v); } static void same_mapval (void* run, void* v) { #ifdef DEBUG_VAL - ase_dprintf (ASE_T("refdown nofree in map free...")); - ase_awk_dprintval (run, v); - ase_dprintf (ASE_T("\n")); + qse_dprintf (QSE_T("refdown nofree in map free...")); + qse_awk_dprintval (run, v); + qse_dprintf (QSE_T("\n")); #endif - ase_awk_refdownval_nofree (run, v); + qse_awk_refdownval_nofree (run, v); } */ -static void free_mapval (ase_map_t* map, void* dptr, ase_size_t dlen) +static void free_mapval (qse_map_t* map, void* dptr, qse_size_t dlen) { - ase_awk_run_t* run = *(ase_awk_run_t**)ASE_MAP_XTN(map); + qse_awk_run_t* run = *(qse_awk_run_t**)QSE_MAP_XTN(map); #ifdef DEBUG_VAL - ase_dprintf (ASE_T("refdown in map free...")); - ase_awk_dprintval (run, dptr); - ase_dprintf (ASE_T("\n")); + qse_dprintf (QSE_T("refdown in map free...")); + qse_awk_dprintval (run, dptr); + qse_dprintf (QSE_T("\n")); #endif - ase_awk_refdownval (run, dptr); + qse_awk_refdownval (run, dptr); } -static void same_mapval (ase_map_t* map, void* dptr, ase_size_t dlen) +static void same_mapval (qse_map_t* map, void* dptr, qse_size_t dlen) { - ase_awk_run_t* run = *(ase_awk_run_t**)ASE_MAP_XTN(map); + qse_awk_run_t* run = *(qse_awk_run_t**)QSE_MAP_XTN(map); #ifdef DEBUG_VAL - ase_dprintf (ASE_T("refdown nofree in map free...")); - ase_awk_dprintval (run, dptr); - ase_dprintf (ASE_T("\n")); + qse_dprintf (QSE_T("refdown nofree in map free...")); + qse_awk_dprintval (run, dptr); + qse_dprintf (QSE_T("\n")); #endif - ase_awk_refdownval_nofree (run, dptr); + qse_awk_refdownval_nofree (run, dptr); } /* END CHECK */ -ase_awk_val_t* ase_awk_makemapval (ase_awk_run_t* run) +qse_awk_val_t* qse_awk_makemapval (qse_awk_run_t* run) { - ase_awk_val_map_t* val; + qse_awk_val_map_t* val; /* CHECK */ /* - val = (ase_awk_val_map_t*) ASE_AWK_ALLOC ( - run->awk, ASE_SIZEOF(ase_awk_val_map_t) ); - if (val == ASE_NULL) + val = (qse_awk_val_map_t*) QSE_AWK_ALLOC ( + run->awk, QSE_SIZEOF(qse_awk_val_map_t) ); + if (val == QSE_NULL) { - ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM); - return ASE_NULL; + qse_awk_setrunerrnum (run, QSE_AWK_ENOMEM); + return QSE_NULL; } - val->type = ASE_AWK_VAL_MAP; + val->type = QSE_AWK_VAL_MAP; val->ref = 0; - val->map = ase_map_open ( + val->map = qse_map_open ( run, 256, 70, free_mapval, same_mapval, run->awk->mmgr); - if (val->map == ASE_NULL) + if (val->map == QSE_NULL) { - ASE_AWK_FREE (run->awk, val); - ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM); - return ASE_NULL; + QSE_AWK_FREE (run->awk, val); + qse_awk_setrunerrnum (run, QSE_AWK_ENOMEM); + return QSE_NULL; } */ - val = (ase_awk_val_map_t*) ASE_AWK_ALLOC ( + val = (qse_awk_val_map_t*) QSE_AWK_ALLOC ( run->awk, - ASE_SIZEOF(ase_awk_val_map_t) + - ASE_SIZEOF(ase_map_t) + - ASE_SIZEOF(run)); - if (val == ASE_NULL) + QSE_SIZEOF(qse_awk_val_map_t) + + QSE_SIZEOF(qse_map_t) + + QSE_SIZEOF(run)); + if (val == QSE_NULL) { - ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM); - return ASE_NULL; + qse_awk_setrunerrnum (run, QSE_AWK_ENOMEM); + return QSE_NULL; } - val->type = ASE_AWK_VAL_MAP; + val->type = QSE_AWK_VAL_MAP; val->ref = 0; - val->map = (ase_map_t*)(val + 1); + val->map = (qse_map_t*)(val + 1); - val->map = ase_map_init (val->map, run->awk->mmgr, 256, 70); - if (val->map == ASE_NULL) + val->map = qse_map_init (val->map, run->awk->mmgr, 256, 70); + if (val->map == QSE_NULL) { - ASE_AWK_FREE (run->awk, val); - ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM); - return ASE_NULL; + QSE_AWK_FREE (run->awk, val); + qse_awk_setrunerrnum (run, QSE_AWK_ENOMEM); + return QSE_NULL; } - *(ase_awk_run_t**)ASE_MAP_XTN(val->map) = run; + *(qse_awk_run_t**)QSE_MAP_XTN(val->map) = run; /* the key is copied inline into a pair and is freed when the pair * is destroyed */ - ase_map_setcopier (val->map, ASE_MAP_KEY, ASE_MAP_COPIER_INLINE); - ase_map_setscale (val->map, ASE_MAP_KEY, ASE_SIZEOF(ase_char_t)); + qse_map_setcopier (val->map, QSE_MAP_KEY, QSE_MAP_COPIER_INLINE); + qse_map_setscale (val->map, QSE_MAP_KEY, QSE_SIZEOF(qse_char_t)); /* not setting copier for a value means that the pointer to the data * allocated somewhere else is remembered in a pair. but the freeing * the actual value is handled by free_mapval and same_mapval */ - ase_map_setfreeer (val->map, ASE_MAP_VAL, free_mapval); - ase_map_setkeeper (val->map, same_mapval); + qse_map_setfreeer (val->map, QSE_MAP_VAL, free_mapval); + qse_map_setkeeper (val->map, same_mapval); /* END CHECK */ - return (ase_awk_val_t*)val; + return (qse_awk_val_t*)val; } -ase_awk_val_t* ase_awk_makerefval (ase_awk_run_t* run, int id, ase_awk_val_t** adr) +qse_awk_val_t* qse_awk_makerefval (qse_awk_run_t* run, int id, qse_awk_val_t** adr) { - ase_awk_val_ref_t* val; + qse_awk_val_ref_t* val; if (run->fcache_count > 0) { @@ -528,226 +528,226 @@ ase_awk_val_t* ase_awk_makerefval (ase_awk_run_t* run, int id, ase_awk_val_t** a } else { - val = (ase_awk_val_ref_t*) ASE_AWK_ALLOC ( - run->awk, ASE_SIZEOF(ase_awk_val_ref_t)); - if (val == ASE_NULL) + val = (qse_awk_val_ref_t*) QSE_AWK_ALLOC ( + run->awk, QSE_SIZEOF(qse_awk_val_ref_t)); + if (val == QSE_NULL) { - ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM); - return ASE_NULL; + qse_awk_setrunerrnum (run, QSE_AWK_ENOMEM); + return QSE_NULL; } } - val->type = ASE_AWK_VAL_REF; + val->type = QSE_AWK_VAL_REF; val->ref = 0; val->id = id; val->adr = adr; - return (ase_awk_val_t*)val; + return (qse_awk_val_t*)val; } #define IS_STATICVAL(val) \ - ((val) == ASE_NULL || \ - (val) == ase_awk_val_nil || \ - (val) == ase_awk_val_zls || \ - (val) == ase_awk_val_zero || \ - (val) == ase_awk_val_one || \ - ((val) >= (ase_awk_val_t*)&awk_int[0] && \ - (val) <= (ase_awk_val_t*)&awk_int[ASE_COUNTOF(awk_int)-1])) + ((val) == QSE_NULL || \ + (val) == qse_awk_val_nil || \ + (val) == qse_awk_val_zls || \ + (val) == qse_awk_val_zero || \ + (val) == qse_awk_val_one || \ + ((val) >= (qse_awk_val_t*)&awk_int[0] && \ + (val) <= (qse_awk_val_t*)&awk_int[QSE_COUNTOF(awk_int)-1])) -ase_bool_t ase_awk_isstaticval (ase_awk_val_t* val) +qse_bool_t qse_awk_isstaticval (qse_awk_val_t* val) { return IS_STATICVAL(val); } -void ase_awk_freeval (ase_awk_run_t* run, ase_awk_val_t* val, ase_bool_t cache) +void qse_awk_freeval (qse_awk_run_t* run, qse_awk_val_t* val, qse_bool_t cache) { if (IS_STATICVAL(val)) return; #ifdef DEBUG_VAL - ase_dprintf (ASE_T("freeing [cache=%d] ... "), cache); - ase_awk_dprintval (run, val); - ase_dprintf (ASE_T("\n")); + qse_dprintf (QSE_T("freeing [cache=%d] ... "), cache); + qse_awk_dprintval (run, val); + qse_dprintf (QSE_T("\n")); #endif - if (val->type == ASE_AWK_VAL_NIL) + if (val->type == QSE_AWK_VAL_NIL) { - ASE_AWK_FREE (run->awk, val); + QSE_AWK_FREE (run->awk, val); } - else if (val->type == ASE_AWK_VAL_INT) + else if (val->type == QSE_AWK_VAL_INT) { /* - if (cache && run->icache_count < ASE_COUNTOF(run->icache)) + if (cache && run->icache_count < QSE_COUNTOF(run->icache)) { run->icache[run->icache_count++] = - (ase_awk_val_int_t*)val; + (qse_awk_val_int_t*)val; } - else ASE_AWK_FREE (run->awk, val); + else QSE_AWK_FREE (run->awk, val); */ - ((ase_awk_val_int_t*)val)->nde = (ase_awk_nde_int_t*)run->vmgr.ifree; - run->vmgr.ifree = (ase_awk_val_int_t*)val; + ((qse_awk_val_int_t*)val)->nde = (qse_awk_nde_int_t*)run->vmgr.ifree; + run->vmgr.ifree = (qse_awk_val_int_t*)val; } - else if (val->type == ASE_AWK_VAL_REAL) + else if (val->type == QSE_AWK_VAL_REAL) { /* - if (cache && run->rcache_count < ASE_COUNTOF(run->rcache)) + if (cache && run->rcache_count < QSE_COUNTOF(run->rcache)) { run->rcache[run->rcache_count++] = - (ase_awk_val_real_t*)val; + (qse_awk_val_real_t*)val; } - else ASE_AWK_FREE (run->awk, val); + else QSE_AWK_FREE (run->awk, val); */ - ((ase_awk_val_real_t*)val)->nde = (ase_awk_nde_real_t*)run->vmgr.rfree; - run->vmgr.rfree = (ase_awk_val_real_t*)val; + ((qse_awk_val_real_t*)val)->nde = (qse_awk_nde_real_t*)run->vmgr.rfree; + run->vmgr.rfree = (qse_awk_val_real_t*)val; } - else if (val->type == ASE_AWK_VAL_STR) + else if (val->type == QSE_AWK_VAL_STR) { /* if (cache) { - ase_awk_val_str_t* v = (ase_awk_val_str_t*)val; + qse_awk_val_str_t* v = (qse_awk_val_str_t*)val; if (v->len <= 32 && - run->scache32_countscache32)) + run->scache32_countscache32)) { run->scache32[run->scache32_count++] = v; } else if (v->len <= 64 && - run->scache64_countscache64)) + run->scache64_countscache64)) { run->scache64[run->scache64_count++] = v; } - else ASE_AWK_FREE (run->awk, val); + else QSE_AWK_FREE (run->awk, val); } - else*/ ASE_AWK_FREE (run->awk, val); + else*/ QSE_AWK_FREE (run->awk, val); } - else if (val->type == ASE_AWK_VAL_REX) + else if (val->type == QSE_AWK_VAL_REX) { /* - ASE_AWK_FREE (run->awk, ((ase_awk_val_rex_t*)val)->buf); - ASE_AWK_FREEREX (run->awk, ((ase_awk_val_rex_t*)val)->code); + QSE_AWK_FREE (run->awk, ((qse_awk_val_rex_t*)val)->buf); + QSE_AWK_FREEREX (run->awk, ((qse_awk_val_rex_t*)val)->code); */ - ASE_AWK_FREE (run->awk, val); + QSE_AWK_FREE (run->awk, val); } - else if (val->type == ASE_AWK_VAL_MAP) + else if (val->type == QSE_AWK_VAL_MAP) { /* CHECK */ - /* ase_map_close (((ase_awk_val_map_t*)val)->map);*/ - ase_map_fini (((ase_awk_val_map_t*)val)->map); + /* qse_map_close (((qse_awk_val_map_t*)val)->map);*/ + qse_map_fini (((qse_awk_val_map_t*)val)->map); /* END CHECK */ - ASE_AWK_FREE (run->awk, val); + QSE_AWK_FREE (run->awk, val); } - else if (val->type == ASE_AWK_VAL_REF) + else if (val->type == QSE_AWK_VAL_REF) { - if (cache && run->fcache_count < ASE_COUNTOF(run->fcache)) + if (cache && run->fcache_count < QSE_COUNTOF(run->fcache)) { run->fcache[run->fcache_count++] = - (ase_awk_val_ref_t*)val; + (qse_awk_val_ref_t*)val; } - else ASE_AWK_FREE (run->awk, val); + else QSE_AWK_FREE (run->awk, val); } else { - ASE_ASSERTX ( + QSE_ASSERTX ( !"should never happen - invalid value type", - "the type of a value should be one of ASE_AWK_VAL_XXX's defined in awk.h"); + "the type of a value should be one of QSE_AWK_VAL_XXX's defined in awk.h"); } } -void ase_awk_refupval (ase_awk_run_t* run, ase_awk_val_t* val) +void qse_awk_refupval (qse_awk_run_t* run, qse_awk_val_t* val) { if (IS_STATICVAL(val)) return; #ifdef DEBUG_VAL - ase_dprintf (ASE_T("ref up [ptr=%p] [count=%d] "), val, (int)val->ref); - ase_awk_dprintval (run, val); - ase_dprintf (ASE_T("\n")); + qse_dprintf (QSE_T("ref up [ptr=%p] [count=%d] "), val, (int)val->ref); + qse_awk_dprintval (run, val); + qse_dprintf (QSE_T("\n")); #endif val->ref++; } -void ase_awk_refdownval (ase_awk_run_t* run, ase_awk_val_t* val) +void qse_awk_refdownval (qse_awk_run_t* run, qse_awk_val_t* val) { if (IS_STATICVAL(val)) return; #ifdef DEBUG_VAL - ase_dprintf (ASE_T("ref down [ptr=%p] [count=%d]\n"), val, (int)val->ref); - ase_awk_dprintval (run, val); - ase_dprintf (ASE_T("\n")); + qse_dprintf (QSE_T("ref down [ptr=%p] [count=%d]\n"), val, (int)val->ref); + qse_awk_dprintval (run, val); + qse_dprintf (QSE_T("\n")); #endif - ASE_ASSERTX (val->ref > 0, + QSE_ASSERTX (val->ref > 0, "the reference count of a value should be greater than zero for it to be decremented. check the source code for any bugs"); val->ref--; if (val->ref <= 0) { - ase_awk_freeval(run, val, ASE_TRUE); + qse_awk_freeval(run, val, QSE_TRUE); } } -void ase_awk_refdownval_nofree (ase_awk_run_t* run, ase_awk_val_t* val) +void qse_awk_refdownval_nofree (qse_awk_run_t* run, qse_awk_val_t* val) { if (IS_STATICVAL(val)) return; - ASE_ASSERTX (val->ref > 0, + QSE_ASSERTX (val->ref > 0, "the reference count of a value should be greater than zero for it to be decremented. check the source code for any bugs"); val->ref--; } -void ase_awk_freevalchunk (ase_awk_run_t* run, ase_awk_val_chunk_t* chunk) +void qse_awk_freevalchunk (qse_awk_run_t* run, qse_awk_val_chunk_t* chunk) { - while (chunk != ASE_NULL) + while (chunk != QSE_NULL) { - ase_awk_val_chunk_t* next = chunk->next; - ASE_AWK_FREE (run->awk, chunk); + qse_awk_val_chunk_t* next = chunk->next; + QSE_AWK_FREE (run->awk, chunk); chunk = next; } } -ase_bool_t ase_awk_valtobool (ase_awk_run_t* run, ase_awk_val_t* val) +qse_bool_t qse_awk_valtobool (qse_awk_run_t* run, qse_awk_val_t* val) { - if (val == ASE_NULL) return ASE_FALSE; + if (val == QSE_NULL) return QSE_FALSE; switch (val->type) { - case ASE_AWK_VAL_NIL: - return ASE_FALSE; - case ASE_AWK_VAL_INT: - return ((ase_awk_val_int_t*)val)->val != 0; - case ASE_AWK_VAL_REAL: - return ((ase_awk_val_real_t*)val)->val != 0.0; - case ASE_AWK_VAL_STR: - return ((ase_awk_val_str_t*)val)->len > 0; - case ASE_AWK_VAL_REX: /* TODO: is this correct? */ - return ((ase_awk_val_rex_t*)val)->len > 0; - case ASE_AWK_VAL_MAP: - return ASE_FALSE; /* TODO: is this correct? */ - case ASE_AWK_VAL_REF: - return ASE_FALSE; /* TODO: is this correct? */ + case QSE_AWK_VAL_NIL: + return QSE_FALSE; + case QSE_AWK_VAL_INT: + return ((qse_awk_val_int_t*)val)->val != 0; + case QSE_AWK_VAL_REAL: + return ((qse_awk_val_real_t*)val)->val != 0.0; + case QSE_AWK_VAL_STR: + return ((qse_awk_val_str_t*)val)->len > 0; + case QSE_AWK_VAL_REX: /* TODO: is this correct? */ + return ((qse_awk_val_rex_t*)val)->len > 0; + case QSE_AWK_VAL_MAP: + return QSE_FALSE; /* TODO: is this correct? */ + case QSE_AWK_VAL_REF: + return QSE_FALSE; /* TODO: is this correct? */ } - ASE_ASSERTX ( + QSE_ASSERTX ( !"should never happen - invalid value type", - "the type of a value should be one of ASE_AWK_VAL_XXX's defined in awk.h"); - return ASE_FALSE; + "the type of a value should be one of QSE_AWK_VAL_XXX's defined in awk.h"); + return QSE_FALSE; } -ase_char_t* ase_awk_valtostr ( - ase_awk_run_t* run, ase_awk_val_t* v, - int opt, ase_str_t* buf, ase_size_t* len) +qse_char_t* qse_awk_valtostr ( + qse_awk_run_t* run, qse_awk_val_t* v, + int opt, qse_str_t* buf, qse_size_t* len) { - if (v->type == ASE_AWK_VAL_NIL) + if (v->type == QSE_AWK_VAL_NIL) { - return str_to_str (run, ASE_T(""), 0, opt, buf, len); + return str_to_str (run, QSE_T(""), 0, opt, buf, len); } - if (v->type == ASE_AWK_VAL_INT) + if (v->type == QSE_AWK_VAL_INT) { - ase_awk_val_int_t* vi = (ase_awk_val_int_t*)v; + qse_awk_val_int_t* vi = (qse_awk_val_int_t*)v; /* - if (vi->nde != ASE_NULL && vi->nde->str != ASE_NULL) + if (vi->nde != QSE_NULL && vi->nde->str != QSE_NULL) { return str_to_str ( run, vi->nde->str, vi->nde->len, @@ -759,12 +759,12 @@ ase_char_t* ase_awk_valtostr ( /*}*/ } - if (v->type == ASE_AWK_VAL_REAL) + if (v->type == QSE_AWK_VAL_REAL) { - ase_awk_val_real_t* vr = (ase_awk_val_real_t*)v; + qse_awk_val_real_t* vr = (qse_awk_val_real_t*)v; /* - if (vr->nde != ASE_NULL && vr->nde->str != ASE_NULL) + if (vr->nde != QSE_NULL && vr->nde->str != QSE_NULL) { return str_to_str ( run, vr->nde->str, vr->nde->len, @@ -776,133 +776,133 @@ ase_char_t* ase_awk_valtostr ( /*}*/ } - if (v->type == ASE_AWK_VAL_STR) + if (v->type == QSE_AWK_VAL_STR) { - ase_awk_val_str_t* vs = (ase_awk_val_str_t*)v; + qse_awk_val_str_t* vs = (qse_awk_val_str_t*)v; return str_to_str ( run, vs->buf, vs->len, opt, buf, len); } #ifdef DEBUG_VAL - ase_dprintf ( - ASE_T("ERROR: WRONG VALUE TYPE [%d] in ase_awk_valtostr\n"), + qse_dprintf ( + QSE_T("ERROR: WRONG VALUE TYPE [%d] in qse_awk_valtostr\n"), v->type); #endif - ase_awk_setrunerror (run, ASE_AWK_EVALTYPE, 0, ASE_NULL, 0); - return ASE_NULL; + qse_awk_setrunerror (run, QSE_AWK_EVALTYPE, 0, QSE_NULL, 0); + return QSE_NULL; } -static ase_char_t* str_to_str ( - ase_awk_run_t* run, const ase_char_t* str, ase_size_t str_len, - int opt, ase_str_t* buf, ase_size_t* len) +static qse_char_t* str_to_str ( + qse_awk_run_t* run, const qse_char_t* str, qse_size_t str_len, + int opt, qse_str_t* buf, qse_size_t* len) { - if (buf == ASE_NULL) + if (buf == QSE_NULL) { - ase_char_t* tmp; - tmp = ASE_AWK_STRXDUP (run->awk, str, str_len); - if (tmp == ASE_NULL) + qse_char_t* tmp; + tmp = QSE_AWK_STRXDUP (run->awk, str, str_len); + if (tmp == QSE_NULL) { - ase_awk_setrunerror ( - run, ASE_AWK_ENOMEM, 0, ASE_NULL, 0); - return ASE_NULL; + qse_awk_setrunerror ( + run, QSE_AWK_ENOMEM, 0, QSE_NULL, 0); + return QSE_NULL; } - if (len != ASE_NULL) *len = str_len; + if (len != QSE_NULL) *len = str_len; return tmp; } - else if (opt & ASE_AWK_VALTOSTR_FIXED) + else if (opt & QSE_AWK_VALTOSTR_FIXED) { - ASE_ASSERT (buf != ASE_NULL && len != ASE_NULL); + QSE_ASSERT (buf != QSE_NULL && len != QSE_NULL); if (str_len >= *len) { - ase_awk_setrunerror ( - run, ASE_AWK_EINVAL, 0, ASE_NULL, 0); + qse_awk_setrunerror ( + run, QSE_AWK_EINVAL, 0, QSE_NULL, 0); *len = str_len + 1; - return ASE_NULL; + return QSE_NULL; } - *len = ase_strncpy ((ase_char_t*)buf, str, str_len); - return (ase_char_t*)buf; + *len = qse_strncpy ((qse_char_t*)buf, str, str_len); + return (qse_char_t*)buf; } else { - ase_size_t n; + qse_size_t n; - if (opt & ASE_AWK_VALTOSTR_CLEAR) ase_str_clear (buf); - n = ase_str_ncat (buf, str, str_len); - if (n == (ase_size_t)-1) + if (opt & QSE_AWK_VALTOSTR_CLEAR) qse_str_clear (buf); + n = qse_str_ncat (buf, str, str_len); + if (n == (qse_size_t)-1) { - ase_awk_setrunerror ( - run, ASE_AWK_ENOMEM, 0, ASE_NULL, 0); - return ASE_NULL; + qse_awk_setrunerror ( + run, QSE_AWK_ENOMEM, 0, QSE_NULL, 0); + return QSE_NULL; } - if (len != ASE_NULL) *len = ASE_STR_LEN(buf); - return ASE_STR_PTR(buf); + if (len != QSE_NULL) *len = QSE_STR_LEN(buf); + return QSE_STR_PTR(buf); } } -static ase_char_t* val_int_to_str ( - ase_awk_run_t* run, ase_awk_val_int_t* v, - int opt, ase_str_t* buf, ase_size_t* len) +static qse_char_t* val_int_to_str ( + qse_awk_run_t* run, qse_awk_val_int_t* v, + int opt, qse_str_t* buf, qse_size_t* len) { - ase_char_t* tmp; - ase_long_t t; - ase_size_t rlen = 0; + qse_char_t* tmp; + qse_long_t t; + qse_size_t rlen = 0; t = v->val; if (t == 0) { /* handle zero */ - if (buf == ASE_NULL) + if (buf == QSE_NULL) { - tmp = ASE_AWK_ALLOC ( - run->awk, 2 * ASE_SIZEOF(ase_char_t)); - if (tmp == ASE_NULL) + tmp = QSE_AWK_ALLOC ( + run->awk, 2 * QSE_SIZEOF(qse_char_t)); + if (tmp == QSE_NULL) { - ase_awk_setrunerror ( - run, ASE_AWK_ENOMEM, 0, ASE_NULL, 0); - return ASE_NULL; + qse_awk_setrunerror ( + run, QSE_AWK_ENOMEM, 0, QSE_NULL, 0); + return QSE_NULL; } - tmp[0] = ASE_T('0'); - tmp[1] = ASE_T('\0'); - if (len != ASE_NULL) *len = 1; + tmp[0] = QSE_T('0'); + tmp[1] = QSE_T('\0'); + if (len != QSE_NULL) *len = 1; return tmp; } - else if (opt & ASE_AWK_VALTOSTR_FIXED) + else if (opt & QSE_AWK_VALTOSTR_FIXED) { - ASE_ASSERT (buf != ASE_NULL && len != ASE_NULL); + QSE_ASSERT (buf != QSE_NULL && len != QSE_NULL); if (1 >= *len) { - ase_awk_setrunerror ( - run, ASE_AWK_EINVAL, 0, ASE_NULL, 0); + qse_awk_setrunerror ( + run, QSE_AWK_EINVAL, 0, QSE_NULL, 0); *len = 2; /* buffer size required */ - return ASE_NULL; + return QSE_NULL; } - tmp = (ase_char_t*)buf; - tmp[0] = ASE_T('0'); - tmp[1] = ASE_T('\0'); + tmp = (qse_char_t*)buf; + tmp[0] = QSE_T('0'); + tmp[1] = QSE_T('\0'); *len = 1; /* actual length */ return tmp; } else { - if (opt & ASE_AWK_VALTOSTR_CLEAR) ase_str_clear (buf); - if (ase_str_cat (buf, ASE_T("0")) == (ase_size_t)-1) + if (opt & QSE_AWK_VALTOSTR_CLEAR) qse_str_clear (buf); + if (qse_str_cat (buf, QSE_T("0")) == (qse_size_t)-1) { - ase_awk_setrunerror ( - run, ASE_AWK_ENOMEM, 0, ASE_NULL, 0); - return ASE_NULL; + qse_awk_setrunerror ( + run, QSE_AWK_ENOMEM, 0, QSE_NULL, 0); + return QSE_NULL; } - if (len != ASE_NULL) *len = ASE_STR_LEN(buf); - return ASE_STR_PTR(buf); + if (len != QSE_NULL) *len = QSE_STR_LEN(buf); + return QSE_STR_PTR(buf); } } @@ -910,50 +910,50 @@ static ase_char_t* val_int_to_str ( if (t < 0) { t = -t; rlen++; } while (t > 0) { rlen++; t /= 10; } - if (buf == ASE_NULL) + if (buf == QSE_NULL) { - tmp = ASE_AWK_ALLOC ( - run->awk, (rlen + 1) * ASE_SIZEOF(ase_char_t)); - if (tmp == ASE_NULL) + tmp = QSE_AWK_ALLOC ( + run->awk, (rlen + 1) * QSE_SIZEOF(qse_char_t)); + if (tmp == QSE_NULL) { - ase_awk_setrunerror ( - run, ASE_AWK_ENOMEM, 0, ASE_NULL, 0); - return ASE_NULL; + qse_awk_setrunerror ( + run, QSE_AWK_ENOMEM, 0, QSE_NULL, 0); + return QSE_NULL; } - tmp[rlen] = ASE_T('\0'); - if (len != ASE_NULL) *len = rlen; + tmp[rlen] = QSE_T('\0'); + if (len != QSE_NULL) *len = rlen; } - else if (opt & ASE_AWK_VALTOSTR_FIXED) + else if (opt & QSE_AWK_VALTOSTR_FIXED) { - ASE_ASSERT (buf != ASE_NULL && len != ASE_NULL); + QSE_ASSERT (buf != QSE_NULL && len != QSE_NULL); if (rlen >= *len) { - ase_awk_setrunerror ( - run, ASE_AWK_EINVAL, 0, ASE_NULL, 0); + qse_awk_setrunerror ( + run, QSE_AWK_EINVAL, 0, QSE_NULL, 0); *len = rlen + 1; /* buffer size required */ - return ASE_NULL; + return QSE_NULL; } - tmp = (ase_char_t*)buf; - tmp[rlen] = ASE_T('\0'); + tmp = (qse_char_t*)buf; + tmp[rlen] = QSE_T('\0'); *len = rlen; /* actual length */ } else { /* clear the buffer */ - if (opt & ASE_AWK_VALTOSTR_CLEAR) ase_str_clear (buf); + if (opt & QSE_AWK_VALTOSTR_CLEAR) qse_str_clear (buf); - tmp = ASE_STR_PTR(buf) + ASE_STR_LEN(buf); + tmp = QSE_STR_PTR(buf) + QSE_STR_LEN(buf); /* extend the buffer */ - if (ase_str_nccat ( - buf, ASE_T(' '), rlen) == (ase_size_t)-1) + if (qse_str_nccat ( + buf, QSE_T(' '), rlen) == (qse_size_t)-1) { - ase_awk_setrunerror ( - run, ASE_AWK_ENOMEM, 0, ASE_NULL, 0); - return ASE_NULL; + qse_awk_setrunerror ( + run, QSE_AWK_ENOMEM, 0, QSE_NULL, 0); + return QSE_NULL; } } @@ -962,30 +962,30 @@ static ase_char_t* val_int_to_str ( while (t > 0) { - tmp[--rlen] = (ase_char_t)(t % 10) + ASE_T('0'); + tmp[--rlen] = (qse_char_t)(t % 10) + QSE_T('0'); t /= 10; } - if (v->val < 0) tmp[--rlen] = ASE_T('-'); + if (v->val < 0) tmp[--rlen] = QSE_T('-'); - if (buf != ASE_NULL && !(opt & ASE_AWK_VALTOSTR_FIXED)) + if (buf != QSE_NULL && !(opt & QSE_AWK_VALTOSTR_FIXED)) { - tmp = ASE_STR_PTR(buf); - if (len != ASE_NULL) *len = ASE_STR_LEN(buf); + tmp = QSE_STR_PTR(buf); + if (len != QSE_NULL) *len = QSE_STR_LEN(buf); } return tmp; } -static ase_char_t* val_real_to_str ( - ase_awk_run_t* run, ase_awk_val_real_t* v, - int opt, ase_str_t* buf, ase_size_t* len) +static qse_char_t* val_real_to_str ( + qse_awk_run_t* run, qse_awk_val_real_t* v, + int opt, qse_str_t* buf, qse_size_t* len) { - ase_char_t* tmp; - ase_size_t tmp_len; - ase_str_t out, fbu; + qse_char_t* tmp; + qse_size_t tmp_len; + qse_str_t out, fbu; - if (opt & ASE_AWK_VALTOSTR_PRINT) + if (opt & QSE_AWK_VALTOSTR_PRINT) { tmp = run->global.ofmt.ptr; tmp_len = run->global.ofmt.len; @@ -996,131 +996,131 @@ static ase_char_t* val_real_to_str ( tmp_len = run->global.convfmt.len; } - if (ase_str_init (&out, run->awk->mmgr, 256) == ASE_NULL) + if (qse_str_init (&out, run->awk->mmgr, 256) == QSE_NULL) { - ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, ASE_NULL, 0); - return ASE_NULL; + qse_awk_setrunerror (run, QSE_AWK_ENOMEM, 0, QSE_NULL, 0); + return QSE_NULL; } - if (ase_str_init (&fbu, run->awk->mmgr, 256) == ASE_NULL) + if (qse_str_init (&fbu, run->awk->mmgr, 256) == QSE_NULL) { - ase_str_fini (&out); - ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, ASE_NULL, 0); - return ASE_NULL; + qse_str_fini (&out); + qse_awk_setrunerror (run, QSE_AWK_ENOMEM, 0, QSE_NULL, 0); + return QSE_NULL; } - tmp = ase_awk_format (run, &out, &fbu, tmp, tmp_len, - (ase_size_t)-1, (ase_awk_nde_t*)v, &tmp_len); - if (tmp == ASE_NULL) + tmp = qse_awk_format (run, &out, &fbu, tmp, tmp_len, + (qse_size_t)-1, (qse_awk_nde_t*)v, &tmp_len); + if (tmp == QSE_NULL) { - ase_str_fini (&fbu); - ase_str_fini (&out); - return ASE_NULL; + qse_str_fini (&fbu); + qse_str_fini (&out); + return QSE_NULL; } - if (buf == ASE_NULL) + if (buf == QSE_NULL) { - ase_str_fini (&fbu); + qse_str_fini (&fbu); - ase_str_yield (&out, ASE_NULL, 0); - ase_str_fini (&out); + qse_str_yield (&out, QSE_NULL, 0); + qse_str_fini (&out); - if (len != ASE_NULL) *len = tmp_len; + if (len != QSE_NULL) *len = tmp_len; } - else if (opt & ASE_AWK_VALTOSTR_FIXED) + else if (opt & QSE_AWK_VALTOSTR_FIXED) { - ASE_ASSERT (buf != ASE_NULL && len != ASE_NULL); + QSE_ASSERT (buf != QSE_NULL && len != QSE_NULL); if (tmp_len >= *len) { - ase_awk_setrunerror ( - run, ASE_AWK_EINVAL, 0, ASE_NULL, 0); + qse_awk_setrunerror ( + run, QSE_AWK_EINVAL, 0, QSE_NULL, 0); *len = tmp_len + 1; /* buffer size required */ - ase_str_close (&fbu); - ase_str_close (&out); - return ASE_NULL; + qse_str_close (&fbu); + qse_str_close (&out); + return QSE_NULL; } - ase_strncpy ((ase_char_t*)buf, tmp, tmp_len); - tmp = (ase_char_t*)buf; + qse_strncpy ((qse_char_t*)buf, tmp, tmp_len); + tmp = (qse_char_t*)buf; *len = tmp_len; - ase_str_fini (&fbu); - ase_str_fini (&out); + qse_str_fini (&fbu); + qse_str_fini (&out); } else { - if (opt & ASE_AWK_VALTOSTR_CLEAR) ase_str_clear (buf); + if (opt & QSE_AWK_VALTOSTR_CLEAR) qse_str_clear (buf); - if (ase_str_ncat (buf, tmp, tmp_len) == (ase_size_t)-1) + if (qse_str_ncat (buf, tmp, tmp_len) == (qse_size_t)-1) { - ase_str_fini (&fbu); - ase_str_fini (&out); - ase_awk_setrunerror ( - run, ASE_AWK_ENOMEM, 0, ASE_NULL, 0); - return ASE_NULL; + qse_str_fini (&fbu); + qse_str_fini (&out); + qse_awk_setrunerror ( + run, QSE_AWK_ENOMEM, 0, QSE_NULL, 0); + return QSE_NULL; } - tmp = ASE_STR_PTR(buf); - if (len != ASE_NULL) *len = ASE_STR_LEN(buf); + tmp = QSE_STR_PTR(buf); + if (len != QSE_NULL) *len = QSE_STR_LEN(buf); - ase_str_fini (&fbu); - ase_str_fini (&out); + qse_str_fini (&fbu); + qse_str_fini (&out); } return tmp; } -int ase_awk_valtonum ( - ase_awk_run_t* run, ase_awk_val_t* v, ase_long_t* l, ase_real_t* r) +int qse_awk_valtonum ( + qse_awk_run_t* run, qse_awk_val_t* v, qse_long_t* l, qse_real_t* r) { - if (v->type == ASE_AWK_VAL_NIL) + if (v->type == QSE_AWK_VAL_NIL) { *l = 0; return 0; } - if (v->type == ASE_AWK_VAL_INT) + if (v->type == QSE_AWK_VAL_INT) { - *l = ((ase_awk_val_int_t*)v)->val; + *l = ((qse_awk_val_int_t*)v)->val; return 0; /* long */ } - if (v->type == ASE_AWK_VAL_REAL) + if (v->type == QSE_AWK_VAL_REAL) { - *r = ((ase_awk_val_real_t*)v)->val; + *r = ((qse_awk_val_real_t*)v)->val; return 1; /* real */ } - if (v->type == ASE_AWK_VAL_STR) + if (v->type == QSE_AWK_VAL_STR) { - return ase_awk_strtonum (run, - ((ase_awk_val_str_t*)v)->buf, - ((ase_awk_val_str_t*)v)->len, l, r); + return qse_awk_strtonum (run, + ((qse_awk_val_str_t*)v)->buf, + ((qse_awk_val_str_t*)v)->len, l, r); } #ifdef DEBUG_VAL - ase_dprintf ( - ASE_T("ERROR: WRONG VALUE TYPE [%d] in ase_awk_valtonum\n"), + qse_dprintf ( + QSE_T("ERROR: WRONG VALUE TYPE [%d] in qse_awk_valtonum\n"), v->type); #endif - ase_awk_setrunerror (run, ASE_AWK_EVALTYPE, 0, ASE_NULL, 0); + qse_awk_setrunerror (run, QSE_AWK_EVALTYPE, 0, QSE_NULL, 0); return -1; /* error */ } -int ase_awk_strtonum ( - ase_awk_run_t* run, const ase_char_t* ptr, ase_size_t len, - ase_long_t* l, ase_real_t* r) +int qse_awk_strtonum ( + qse_awk_run_t* run, const qse_char_t* ptr, qse_size_t len, + qse_long_t* l, qse_real_t* r) { - const ase_char_t* endptr; + const qse_char_t* endptr; - *l = ase_awk_strxtolong (run->awk, ptr, len, 0, &endptr); - if (*endptr == ASE_T('.') || - *endptr == ASE_T('E') || - *endptr == ASE_T('e')) + *l = qse_awk_strxtolong (run->awk, ptr, len, 0, &endptr); + if (*endptr == QSE_T('.') || + *endptr == QSE_T('E') || + *endptr == QSE_T('e')) { - *r = ase_awk_strxtoreal (run->awk, ptr, len, ASE_NULL); + *r = qse_awk_strxtoreal (run->awk, ptr, len, QSE_NULL); /* TODO: need to check if it is a valid number using * endptr for strxtoreal? */ return 1; /* real */ @@ -1136,81 +1136,81 @@ int ase_awk_strtonum ( #define DPRINTF run->awk->prmfns->dprintf #define DCUSTOM run->awk->prmfns->data -static ase_map_walk_t print_pair ( - ase_map_t* map, ase_map_pair_t* pair, void* arg) +static qse_map_walk_t print_pair ( + qse_map_t* map, qse_map_pair_t* pair, void* arg) { - ase_awk_run_t* run = (ase_awk_run_t*)arg; + qse_awk_run_t* run = (qse_awk_run_t*)arg; - ASE_ASSERT (run == *(ase_awk_run_t**)ASE_MAP_XTN(map)); + QSE_ASSERT (run == *(qse_awk_run_t**)QSE_MAP_XTN(map)); - DPRINTF (DCUSTOM, ASE_T(" %.*s=>"), - (int)ASE_MAP_KLEN(pair), ASE_MAP_KPTR(pair)); - ase_awk_dprintval ((ase_awk_run_t*)arg, ASE_MAP_VPTR(pair)); - DPRINTF (DCUSTOM, ASE_T(" ")); + DPRINTF (DCUSTOM, QSE_T(" %.*s=>"), + (int)QSE_MAP_KLEN(pair), QSE_MAP_KPTR(pair)); + qse_awk_dprintval ((qse_awk_run_t*)arg, QSE_MAP_VPTR(pair)); + DPRINTF (DCUSTOM, QSE_T(" ")); - return ASE_MAP_WALK_FORWARD; + return QSE_MAP_WALK_FORWARD; } -void ase_awk_dprintval (ase_awk_run_t* run, ase_awk_val_t* val) +void qse_awk_dprintval (qse_awk_run_t* run, qse_awk_val_t* val) { /* TODO: better value printing ... */ switch (val->type) { - case ASE_AWK_VAL_NIL: - DPRINTF (DCUSTOM, ASE_T("nil")); + case QSE_AWK_VAL_NIL: + DPRINTF (DCUSTOM, QSE_T("nil")); break; - case ASE_AWK_VAL_INT: - #if ASE_SIZEOF_LONG_LONG > 0 - DPRINTF (DCUSTOM, ASE_T("%lld"), - (long long)((ase_awk_val_int_t*)val)->val); - #elif ASE_SIZEOF___INT64 > 0 - DPRINTF (DCUSTOM, ASE_T("%I64d"), - (__int64)((ase_awk_val_int_t*)val)->val); - #elif ASE_SIZEOF_LONG > 0 - DPRINTF (DCUSTOM, ASE_T("%ld"), - (long)((ase_awk_val_int_t*)val)->val); - #elif ASE_SIZEOF_INT > 0 - DPRINTF (DCUSTOM, ASE_T("%d"), - (int)((ase_awk_val_int_t*)val)->val); + case QSE_AWK_VAL_INT: + #if QSE_SIZEOF_LONG_LONG > 0 + DPRINTF (DCUSTOM, QSE_T("%lld"), + (long long)((qse_awk_val_int_t*)val)->val); + #elif QSE_SIZEOF___INT64 > 0 + DPRINTF (DCUSTOM, QSE_T("%I64d"), + (__int64)((qse_awk_val_int_t*)val)->val); + #elif QSE_SIZEOF_LONG > 0 + DPRINTF (DCUSTOM, QSE_T("%ld"), + (long)((qse_awk_val_int_t*)val)->val); + #elif QSE_SIZEOF_INT > 0 + DPRINTF (DCUSTOM, QSE_T("%d"), + (int)((qse_awk_val_int_t*)val)->val); #else #error unsupported size #endif break; - case ASE_AWK_VAL_REAL: + case QSE_AWK_VAL_REAL: #if defined(__MINGW32__) - DPRINTF (DCUSTOM, ASE_T("%Lf"), - (double)((ase_awk_val_real_t*)val)->val); + DPRINTF (DCUSTOM, QSE_T("%Lf"), + (double)((qse_awk_val_real_t*)val)->val); #else - DPRINTF (DCUSTOM, ASE_T("%Lf"), - (long double)((ase_awk_val_real_t*)val)->val); + DPRINTF (DCUSTOM, QSE_T("%Lf"), + (long double)((qse_awk_val_real_t*)val)->val); #endif break; - case ASE_AWK_VAL_STR: - DPRINTF (DCUSTOM, ASE_T("%s"), ((ase_awk_val_str_t*)val)->buf); + case QSE_AWK_VAL_STR: + DPRINTF (DCUSTOM, QSE_T("%s"), ((qse_awk_val_str_t*)val)->buf); break; - case ASE_AWK_VAL_REX: - DPRINTF (DCUSTOM, ASE_T("REX[%s]"), ((ase_awk_val_rex_t*)val)->buf); + case QSE_AWK_VAL_REX: + DPRINTF (DCUSTOM, QSE_T("REX[%s]"), ((qse_awk_val_rex_t*)val)->buf); break; - case ASE_AWK_VAL_MAP: - DPRINTF (DCUSTOM, ASE_T("MAP[")); - ase_map_walk (((ase_awk_val_map_t*)val)->map, print_pair, run); - DPRINTF (DCUSTOM, ASE_T("]")); + case QSE_AWK_VAL_MAP: + DPRINTF (DCUSTOM, QSE_T("MAP[")); + qse_map_walk (((qse_awk_val_map_t*)val)->map, print_pair, run); + DPRINTF (DCUSTOM, QSE_T("]")); break; - case ASE_AWK_VAL_REF: - DPRINTF (DCUSTOM, ASE_T("REF[id=%d,val="), ((ase_awk_val_ref_t*)val)->id); - ase_awk_dprintval (run, *((ase_awk_val_ref_t*)val)->adr); - DPRINTF (DCUSTOM, ASE_T("]")); + case QSE_AWK_VAL_REF: + DPRINTF (DCUSTOM, QSE_T("REF[id=%d,val="), ((qse_awk_val_ref_t*)val)->id); + qse_awk_dprintval (run, *((qse_awk_val_ref_t*)val)->adr); + DPRINTF (DCUSTOM, QSE_T("]")); break; default: - DPRINTF (DCUSTOM, ASE_T("**** INTERNAL ERROR - INVALID VALUE TYPE ****\n")); + DPRINTF (DCUSTOM, QSE_T("**** INTERNAL ERROR - INVALID VALUE TYPE ****\n")); } } diff --git a/qse/lib/cmn/asecmn.bdsproj b/qse/lib/cmn/asecmn.bdsproj deleted file mode 100644 index ba8f2cc2..00000000 --- a/qse/lib/cmn/asecmn.bdsproj +++ /dev/null @@ -1,250 +0,0 @@ - - - - - - - - - - - - misc.c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - False - False - 1 - 0 - 0 - 0 - False - False - False - False - False - 1033 - 1252 - - - - - 1.0.0.0 - - - - - - 1.0.0.0 - - - - - - - - - False - - - - - - - False - - False - - True - False - - - - - - - - - - - mkdir $(PROJECTDIR)..\release\lib -mkdir $(PROJECTDIR)..\debug\lib - - - - - diff --git a/qse/lib/cmn/asecmn.dsp b/qse/lib/cmn/asecmn.dsp deleted file mode 100644 index 5a40b08b..00000000 --- a/qse/lib/cmn/asecmn.dsp +++ /dev/null @@ -1,132 +0,0 @@ -# Microsoft Developer Studio Project File - Name="asecmn" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Static Library" 0x0104 - -CFG=asecmn - Win32 Release -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "asecmn.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "asecmn.mak" CFG="asecmn - Win32 Release" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "asecmn - Win32 Release" (based on "Win32 (x86) Static Library") -!MESSAGE "asecmn - Win32 Debug" (based on "Win32 (x86) Static Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "asecmn - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "../release/lib" -# PROP Intermediate_Dir "release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -MTL=midl.exe -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_UNICODE" /D "_USRDLL" /Yu"stdafx.h" /FD /c -# ADD CPP /nologo /MT /Za /W3 /GX /O2 /I "../.." /D "NDEBUG" /D "WIN32" /D "_UNICODE" /FD /c -# SUBTRACT CPP /YX /Yc /Yu -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo - -!ELSEIF "$(CFG)" == "asecmn - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "../debug/lib" -# PROP Intermediate_Dir "debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -MTL=midl.exe -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_UNICODE" /D "_USRDLL" /Yu"stdafx.h" /FD /GZ /c -# ADD CPP /nologo /MTd /Za /W3 /Gm /GX /ZI /Od /I "../.." /D "_DEBUG" /D "WIN32" /D "_UNICODE" /FD /GZ /c -# SUBTRACT CPP /YX /Yc /Yu -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo - -!ENDIF - -# Begin Target - -# Name "asecmn - Win32 Release" -# Name "asecmn - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=.\mem.c -# End Source File -# Begin Source File - -SOURCE=.\misc.c -# End Source File -# Begin Source File - -SOURCE=.\str_bas.c -# End Source File -# Begin Source File - -SOURCE=.\str_cnv.c -# End Source File -# Begin Source File - -SOURCE=.\str_dyn.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# Begin Source File - -SOURCE=.\mem.h -# End Source File -# Begin Source File - -SOURCE=.\str.h -# End Source File -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/qse/lib/cmn/asecmn.vcproj b/qse/lib/cmn/asecmn.vcproj deleted file mode 100644 index 8963e6a0..00000000 --- a/qse/lib/cmn/asecmn.vcproj +++ /dev/null @@ -1,528 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/qse/lib/cmn/chr.c b/qse/lib/cmn/chr.c index 407cd74c..83a546b9 100644 --- a/qse/lib/cmn/chr.c +++ b/qse/lib/cmn/chr.c @@ -4,29 +4,29 @@ * {License} */ -#include +#include -#if defined(ASE_CHAR_IS_MCHAR) +#if defined(QSE_CHAR_IS_MCHAR) #include -static ase_bool_t is_upper (ase_cint_t c) { return isupper(c); } -static ase_bool_t is_lower (ase_cint_t c) { return islower(c); } -static ase_bool_t is_alpha (ase_cint_t c) { return isalpha(c); } -static ase_bool_t is_digit (ase_cint_t c) { return isdigit(c); } -static ase_bool_t is_xdigit (ase_cint_t c) { return isxdigit(c); } -static ase_bool_t is_alnum (ase_cint_t c) { return isalnum(c); } -static ase_bool_t is_space (ase_cint_t c) { return isspace(c); } -static ase_bool_t is_print (ase_cint_t c) { return isprint(c); } -static ase_bool_t is_graph (ase_cint_t c) { return isgraph(c); } -static ase_bool_t is_cntrl (ase_cint_t c) { return iscntrl(c); } -static ase_bool_t is_punct (ase_cint_t c) { return ispunct(c); } +static qse_bool_t is_upper (qse_cint_t c) { return isupper(c); } +static qse_bool_t is_lower (qse_cint_t c) { return islower(c); } +static qse_bool_t is_alpha (qse_cint_t c) { return isalpha(c); } +static qse_bool_t is_digit (qse_cint_t c) { return isdigit(c); } +static qse_bool_t is_xdigit (qse_cint_t c) { return isxdigit(c); } +static qse_bool_t is_alnum (qse_cint_t c) { return isalnum(c); } +static qse_bool_t is_space (qse_cint_t c) { return isspace(c); } +static qse_bool_t is_print (qse_cint_t c) { return isprint(c); } +static qse_bool_t is_graph (qse_cint_t c) { return isgraph(c); } +static qse_bool_t is_cntrl (qse_cint_t c) { return iscntrl(c); } +static qse_bool_t is_punct (qse_cint_t c) { return ispunct(c); } -ase_bool_t ase_ccls_is (ase_cint_t c, ase_ccls_type_t type) +qse_bool_t qse_ccls_is (qse_cint_t c, qse_ccls_type_t type) { /* TODO: use GetStringTypeW/A for WIN32 to implement these */ - static ase_bool_t (*f[]) (ase_cint_t) = + static qse_bool_t (*f[]) (qse_cint_t) = { is_upper, is_lower, @@ -41,26 +41,26 @@ ase_bool_t ase_ccls_is (ase_cint_t c, ase_ccls_type_t type) is_punct }; - ASE_ASSERTX (type >= ASE_CCLS_UPPER && type <= ASE_CCLS_PUNCT, - "The character type should be one of ase_ccls_type_t values"); + QSE_ASSERTX (type >= QSE_CCLS_UPPER && type <= QSE_CCLS_PUNCT, + "The character type should be one of qse_ccls_type_t values"); return f[type] (c); } -ase_cint_t ase_ccls_to (ase_cint_t c, ase_ccls_type_t type) +qse_cint_t qse_ccls_to (qse_cint_t c, qse_ccls_type_t type) { - ASE_ASSERTX (type >= ASE_CCLS_UPPER && type <= ASE_CCLS_LOWER, - "The character type should be one of ASE_CCLS_UPPER and ASE_CCLS_LOWER"); + QSE_ASSERTX (type >= QSE_CCLS_UPPER && type <= QSE_CCLS_LOWER, + "The character type should be one of QSE_CCLS_UPPER and QSE_CCLS_LOWER"); - if (type == ASE_CCLS_UPPER) return toupper(c); - if (type == ASE_CCLS_LOWER) return tolower(c); + if (type == QSE_CCLS_UPPER) return toupper(c); + if (type == QSE_CCLS_LOWER) return tolower(c); return c; } -#elif defined(ASE_CHAR_IS_WCHAR) +#elif defined(QSE_CHAR_IS_WCHAR) #include -ase_bool_t ase_ccls_is (ase_cint_t c, ase_ccls_type_t type) +qse_bool_t qse_ccls_is (qse_cint_t c, qse_ccls_type_t type) { static const char* name[] = { @@ -92,14 +92,14 @@ ase_bool_t ase_ccls_is (ase_cint_t c, ase_ccls_type_t type) (wctype_t)0 }; - ASE_ASSERTX (type >= ASE_CCLS_UPPER && type <= ASE_CCLS_PUNCT, - "The character type should be one of ase_ccls_type_t values"); + QSE_ASSERTX (type >= QSE_CCLS_UPPER && type <= QSE_CCLS_PUNCT, + "The character type should be one of qse_ccls_type_t values"); if (desc[type] == (wctype_t)0) desc[type] = wctype(name[type]); return iswctype (c, desc[type]); } -ase_cint_t ase_ccls_to (ase_cint_t c, ase_ccls_type_t type) +qse_cint_t qse_ccls_to (qse_cint_t c, qse_ccls_type_t type) { static const char* name[] = { @@ -113,8 +113,8 @@ ase_cint_t ase_ccls_to (ase_cint_t c, ase_ccls_type_t type) (wctrans_t)0 }; - ASE_ASSERTX (type >= ASE_CCLS_UPPER && type <= ASE_CCLS_LOWER, - "The character type should be one of ASE_CCLS_UPPER and ASE_CCLS_LOWER"); + QSE_ASSERTX (type >= QSE_CCLS_UPPER && type <= QSE_CCLS_LOWER, + "The character type should be one of QSE_CCLS_UPPER and QSE_CCLS_LOWER"); if (desc[type] == (wctrans_t)0) desc[type] = wctrans(name[type]); return towctrans (c, desc[type]); @@ -124,22 +124,22 @@ ase_cint_t ase_ccls_to (ase_cint_t c, ase_ccls_type_t type) #error unsupported character type #endif -static ase_bool_t ccls_is (void* data, ase_cint_t c, ase_ccls_type_t type) +static qse_bool_t ccls_is (void* data, qse_cint_t c, qse_ccls_type_t type) { - return ase_ccls_is (c, type); + return qse_ccls_is (c, type); } -static ase_cint_t ccls_to (void* data, ase_cint_t c, ase_ccls_type_t type) +static qse_cint_t ccls_to (void* data, qse_cint_t c, qse_ccls_type_t type) { - return ase_ccls_to (c, type); + return qse_ccls_to (c, type); } -static ase_ccls_t ccls = +static qse_ccls_t ccls = { ccls_is, ccls_to, - ASE_NULL + QSE_NULL }; -ase_ccls_t* ase_ccls = &ccls; +qse_ccls_t* qse_ccls = &ccls; diff --git a/qse/lib/cmn/chr.h b/qse/lib/cmn/chr.h index 1cd42b7d..2eea7d41 100644 --- a/qse/lib/cmn/chr.h +++ b/qse/lib/cmn/chr.h @@ -4,46 +4,46 @@ * {License} */ -#ifndef _ASE_LIB_CMN_CHR_H_ -#define _ASE_LIB_CMN_CHR_H_ +#ifndef _QSE_LIB_CMN_CHR_H_ +#define _QSE_LIB_CMN_CHR_H_ -#include +#include #ifdef USE_STDC - #if defined(ASE_CHAR_IS_MCHAR) + #if defined(QSE_CHAR_IS_MCHAR) #include - #define ASE_ISUPPER(c) isupper(c) - #define ASE_ISLOWER(c) islower(c) - #define ASE_ISALPHA(c) isalpha(c) - #define ASE_ISDIGIT(c) isdigit(c) - #define ASE_ISXDIGIT(c) isxdigit(c) - #define ASE_ISALNUM(c) isalnum(c) - #define ASE_ISSPACE(c) isspace(c) - #define ASE_ISPRINT(c) isprint(c) - #define ASE_ISGRAPH(c) isgraph(c) - #define ASE_ISCNTRL(c) iscntrl(c) - #define ASE_ISPUNCT(c) ispunct(c) - #define ASE_TOUPPER(c) toupper(c) - #define ASE_TOLOWER(c) tolower(c) + #define QSE_ISUPPER(c) isupper(c) + #define QSE_ISLOWER(c) islower(c) + #define QSE_ISALPHA(c) isalpha(c) + #define QSE_ISDIGIT(c) isdigit(c) + #define QSE_ISXDIGIT(c) isxdigit(c) + #define QSE_ISALNUM(c) isalnum(c) + #define QSE_ISSPACE(c) isspace(c) + #define QSE_ISPRINT(c) isprint(c) + #define QSE_ISGRAPH(c) isgraph(c) + #define QSE_ISCNTRL(c) iscntrl(c) + #define QSE_ISPUNCT(c) ispunct(c) + #define QSE_TOUPPER(c) toupper(c) + #define QSE_TOLOWER(c) tolower(c) - #elif defined(ASE_CHAR_IS_WCHAR) + #elif defined(QSE_CHAR_IS_WCHAR) #include - #define ASE_ISUPPER(c) iswupper(c) - #define ASE_ISLOWER(c) iswlower(c) - #define ASE_ISALPHA(c) iswalpha(c) - #define ASE_ISDIGIT(c) iswdigit(c) - #define ASE_ISXDIGIT(c) iswxdigit(c) - #define ASE_ISALNUM(c) iswalnum(c) - #define ASE_ISSPACE(c) iswspace(c) - #define ASE_ISPRINT(c) iswprint(c) - #define ASE_ISGRAPH(c) iswgraph(c) - #define ASE_ISCNTRL(c) iswcntrl(c) - #define ASE_ISPUNCT(c) iswpunct(c) - #define ASE_TOUPPER(c) towupper(c) - #define ASE_TOLOWER(c) towlower(c) + #define QSE_ISUPPER(c) iswupper(c) + #define QSE_ISLOWER(c) iswlower(c) + #define QSE_ISALPHA(c) iswalpha(c) + #define QSE_ISDIGIT(c) iswdigit(c) + #define QSE_ISXDIGIT(c) iswxdigit(c) + #define QSE_ISALNUM(c) iswalnum(c) + #define QSE_ISSPACE(c) iswspace(c) + #define QSE_ISPRINT(c) iswprint(c) + #define QSE_ISGRAPH(c) iswgraph(c) + #define QSE_ISCNTRL(c) iswcntrl(c) + #define QSE_ISPUNCT(c) iswpunct(c) + #define QSE_TOUPPER(c) towupper(c) + #define QSE_TOLOWER(c) towlower(c) #else #error Unsupported character type @@ -51,19 +51,19 @@ #else - #define ASE_ISUPPER(c) (ase_ccls_is(c,ASE_CCLS_UPPER)) - #define ASE_ISLOWER(c) (ase_ccls_is(c,ASE_CCLS_LOWER)) - #define ASE_ISALPHA(c) (ase_ccls_is(c,ASE_CCLS_ALPHA)) - #define ASE_ISDIGIT(c) (ase_ccls_is(c,ASE_CCLS_DIGIT)) - #define ASE_ISXDIGIT(c) (ase_ccls_is(c,ASE_CCLS_XDIGIT)) - #define ASE_ISALNUM(c) (ase_ccls_is(c,ASE_CCLS_ALNUM)) - #define ASE_ISSPACE(c) (ase_ccls_is(c,ASE_CCLS_SPACE)) - #define ASE_ISPRINT(c) (ase_ccls_is(c,ASE_CCLS_PRINT)) - #define ASE_ISGRAPH(c) (ase_ccls_is(c,ASE_CCLS_GRAPH)) - #define ASE_ISCNTRL(c) (ase_ccls_is(c,ASE_CCLS_CNTRL)) - #define ASE_ISPUNCT(c) (ase_ccls_is(c,ASE_CCLS_PUNCT)) - #define ASE_TOUPPER(c) (ase_ccls_to(c,ASE_CCLS_UPPER)) - #define ASE_TOLOWER(c) (ase_ccls_to(c,ASE_CCLS_LOWER)) + #define QSE_ISUPPER(c) (qse_ccls_is(c,QSE_CCLS_UPPER)) + #define QSE_ISLOWER(c) (qse_ccls_is(c,QSE_CCLS_LOWER)) + #define QSE_ISALPHA(c) (qse_ccls_is(c,QSE_CCLS_ALPHA)) + #define QSE_ISDIGIT(c) (qse_ccls_is(c,QSE_CCLS_DIGIT)) + #define QSE_ISXDIGIT(c) (qse_ccls_is(c,QSE_CCLS_XDIGIT)) + #define QSE_ISALNUM(c) (qse_ccls_is(c,QSE_CCLS_ALNUM)) + #define QSE_ISSPACE(c) (qse_ccls_is(c,QSE_CCLS_SPACE)) + #define QSE_ISPRINT(c) (qse_ccls_is(c,QSE_CCLS_PRINT)) + #define QSE_ISGRAPH(c) (qse_ccls_is(c,QSE_CCLS_GRAPH)) + #define QSE_ISCNTRL(c) (qse_ccls_is(c,QSE_CCLS_CNTRL)) + #define QSE_ISPUNCT(c) (qse_ccls_is(c,QSE_CCLS_PUNCT)) + #define QSE_TOUPPER(c) (qse_ccls_to(c,QSE_CCLS_UPPER)) + #define QSE_TOLOWER(c) (qse_ccls_to(c,QSE_CCLS_LOWER)) #endif diff --git a/qse/lib/cmn/chr_cnv.c b/qse/lib/cmn/chr_cnv.c index fe2b0c34..2c6bc25b 100644 --- a/qse/lib/cmn/chr_cnv.c +++ b/qse/lib/cmn/chr_cnv.c @@ -2,7 +2,7 @@ * $Id$ */ -#include +#include #include "mem.h" #ifdef HAVE_WCHAR_H @@ -12,7 +12,7 @@ #include #endif -ase_size_t ase_mblen (const ase_mchar_t* mb, ase_size_t mblen) +qse_size_t qse_mblen (const qse_mchar_t* mb, qse_size_t mblen) { #ifdef HAVE_MBRLEN size_t n; @@ -24,13 +24,13 @@ ase_size_t ase_mblen (const ase_mchar_t* mb, ase_size_t mblen) if (n == (size_t)-1) return 0; /* invalid sequence */ if (n == (size_t)-2) return mblen + 1; /* incomplete sequence */ - return (ase_size_t)n; + return (qse_size_t)n; #else #error #### NOT SUPPORTED #### #endif } -ase_size_t ase_mbtowc (const ase_mchar_t* mb, ase_size_t mblen, ase_wchar_t* wc) +qse_size_t qse_mbtowc (const qse_mchar_t* mb, qse_size_t mblen, qse_wchar_t* wc) { #ifdef HAVE_MBRTOWC size_t n; @@ -39,19 +39,19 @@ ase_size_t ase_mbtowc (const ase_mchar_t* mb, ase_size_t mblen, ase_wchar_t* wc) n = mbrtowc (wc, mb, mblen, &mbs); if (n == 0) { - *wc = ASE_WT('\0'); + *wc = QSE_WT('\0'); return 1; } if (n == (size_t)-1) return 0; /* invalid sequence */ if (n == (size_t)-2) return mblen + 1; /* incomplete sequence */ - return (ase_size_t)n; + return (qse_size_t)n; #else #error #### NOT SUPPORTED #### #endif } -ase_size_t ase_wctomb (ase_wchar_t wc, ase_mchar_t* mb, ase_size_t mblen) +qse_size_t qse_wctomb (qse_wchar_t wc, qse_mchar_t* mb, qse_size_t mblen) { #ifdef HAVE_WCRTOMB size_t n; @@ -68,13 +68,13 @@ ase_size_t ase_wctomb (ase_wchar_t wc, ase_mchar_t* mb, ase_size_t mblen) if (mblen < MB_CUR_MAX) { - ase_mchar_t buf[MB_CUR_MAX]; + qse_mchar_t buf[MB_CUR_MAX]; n = wcrtomb (buf, wc, &mbs); if (n > mblen) return mblen + 1; /* buffer to small */ if (n == (size_t)-1) return 0; /* illegal character */ - ASE_MEMCPY (mb, buf, mblen); + QSE_MEMCPY (mb, buf, mblen); } else { diff --git a/qse/lib/cmn/descrip.mms b/qse/lib/cmn/descrip.mms deleted file mode 100644 index c2a9b992..00000000 --- a/qse/lib/cmn/descrip.mms +++ /dev/null @@ -1,21 +0,0 @@ -# -# OpenVMS MMS/MMK -# - -objects = mem.obj,str_bas.obj,str_cnv.obj,str_dyn.obj,map.obj,rex.obj,misc.obj - -CFLAGS = /include="../../inc" -#CFLAGS = /pointer_size=long /include="../../inc" -LIBRFLAGS = - -asecmn.olb : $(objects) - $(LIBR)/create $(MMS$TARGET) $(objects) -# $(LIBR)/replace $(LIBRFLAGS) $(MMS$TARGET),$(objects) - -mem.obj depends_on mem.c -str_bas.obj depends_on str_bas.c -str_cnv.obj depends_on str_cnv.c -str_dyn.obj depends_on str_dyn.c -map.obj depends_on map.c -rex.obj depends_on rex.c -misc.obj depends_on misc.c diff --git a/qse/lib/cmn/dll.c b/qse/lib/cmn/dll.c index 1cd6ef96..43467b51 100644 --- a/qse/lib/cmn/dll.c +++ b/qse/lib/cmn/dll.c @@ -4,144 +4,144 @@ * {License} */ -#include +#include #include "mem.h" -ase_dll_t* ase_dll_open (ase_mmgr_t* mmgr, ase_size_t ext) +qse_dll_t* qse_dll_open (qse_mmgr_t* mmgr, qse_size_t ext) { - ase_dll_t* dll; + qse_dll_t* dll; - if (mmgr == ASE_NULL) + if (mmgr == QSE_NULL) { - mmgr = ASE_MMGR_GETDFL(); + mmgr = QSE_MMGR_GETDFL(); - ASE_ASSERTX (mmgr != ASE_NULL, - "Set the memory manager with ASE_MMGR_SETDFL()"); + QSE_ASSERTX (mmgr != QSE_NULL, + "Set the memory manager with QSE_MMGR_SETDFL()"); - if (mmgr == ASE_NULL) return ASE_NULL; + if (mmgr == QSE_NULL) return QSE_NULL; } - dll = ASE_MMGR_ALLOC (mmgr, ASE_SIZEOF(ase_dll_t) + ext); - if (dll == ASE_NULL) return ASE_NULL; + dll = QSE_MMGR_ALLOC (mmgr, QSE_SIZEOF(qse_dll_t) + ext); + if (dll == QSE_NULL) return QSE_NULL; /* do not zero the extension */ - ASE_MEMSET (dll, 0, ASE_SIZEOF(ase_dll_t)); + QSE_MEMSET (dll, 0, QSE_SIZEOF(qse_dll_t)); dll->mmgr = mmgr; return dll; } -void ase_dll_close (ase_dll_t* dll) +void qse_dll_close (qse_dll_t* dll) { - ase_dll_clear (dll); - ASE_MMGR_FREE (dll->mmgr, dll); + qse_dll_clear (dll); + QSE_MMGR_FREE (dll->mmgr, dll); } -void ase_dll_clear (ase_dll_t* dll) +void qse_dll_clear (qse_dll_t* dll) { - while (dll->head != ASE_NULL) ase_dll_delete (dll, dll->head); - ASE_ASSERT (dll->tail == ASE_NULL); + while (dll->head != QSE_NULL) qse_dll_delete (dll, dll->head); + QSE_ASSERT (dll->tail == QSE_NULL); } -void* ase_dll_getxtn (ase_dll_t* dll) +void* qse_dll_getxtn (qse_dll_t* dll) { return dll + 1; } -ase_mmgr_t* ase_dll_getmmgr (ase_dll_t* dll) +qse_mmgr_t* qse_dll_getmmgr (qse_dll_t* dll) { return dll->mmgr; } -void ase_dll_setmmgr (ase_dll_t* dll, ase_mmgr_t* mmgr) +void qse_dll_setmmgr (qse_dll_t* dll, qse_mmgr_t* mmgr) { dll->mmgr = mmgr; } -ase_size_t ase_dll_getsize (ase_dll_t* dll) +qse_size_t qse_dll_getsize (qse_dll_t* dll) { return dll->size; } -ase_dll_node_t* ase_dll_gethead (ase_dll_t* dll) +qse_dll_node_t* qse_dll_gethead (qse_dll_t* dll) { return dll->head; } -ase_dll_node_t* ase_dll_gettail (ase_dll_t* dll) +qse_dll_node_t* qse_dll_gettail (qse_dll_t* dll) { return dll->tail; } -ase_dll_copier_t ase_dll_getcopier (ase_dll_t* dll) +qse_dll_copier_t qse_dll_getcopier (qse_dll_t* dll) { return dll->copier; } -void ase_dll_setcopier (ase_dll_t* dll, ase_dll_copier_t copier) +void qse_dll_setcopier (qse_dll_t* dll, qse_dll_copier_t copier) { dll->copier = copier; } -ase_dll_freeer_t ase_dll_getfreeer (ase_dll_t* dll) +qse_dll_freeer_t qse_dll_getfreeer (qse_dll_t* dll) { return dll->freeer; } -void ase_dll_setfreeer (ase_dll_t* dll, ase_dll_freeer_t freeer) +void qse_dll_setfreeer (qse_dll_t* dll, qse_dll_freeer_t freeer) { dll->freeer = freeer; } -static ase_dll_node_t* alloc_node (ase_dll_t* dll, void* dptr, ase_size_t dlen) +static qse_dll_node_t* alloc_node (qse_dll_t* dll, void* dptr, qse_size_t dlen) { - ase_dll_node_t* n; + qse_dll_node_t* n; - if (dll->copier == ASE_NULL) + if (dll->copier == QSE_NULL) { - n = ASE_MMGR_ALLOC (dll->mmgr, ASE_SIZEOF(ase_dll_node_t)); - if (n == ASE_NULL) return ASE_NULL; + n = QSE_MMGR_ALLOC (dll->mmgr, QSE_SIZEOF(qse_dll_node_t)); + if (n == QSE_NULL) return QSE_NULL; n->dptr = dptr; } - else if (dll->copier == ASE_DLL_COPIER_INLINE) + else if (dll->copier == QSE_DLL_COPIER_INLINE) { - n = ASE_MMGR_ALLOC (dll->mmgr, ASE_SIZEOF(ase_dll_node_t) + dlen); - if (n == ASE_NULL) return ASE_NULL; + n = QSE_MMGR_ALLOC (dll->mmgr, QSE_SIZEOF(qse_dll_node_t) + dlen); + if (n == QSE_NULL) return QSE_NULL; - ASE_MEMCPY (n + 1, dptr, dlen); + QSE_MEMCPY (n + 1, dptr, dlen); n->dptr = n + 1; } else { - n = ASE_MMGR_ALLOC (dll->mmgr, ASE_SIZEOF(ase_dll_node_t)); - if (n == ASE_NULL) return ASE_NULL; + n = QSE_MMGR_ALLOC (dll->mmgr, QSE_SIZEOF(qse_dll_node_t)); + if (n == QSE_NULL) return QSE_NULL; n->dptr = dll->copier (dll, dptr, dlen); - if (n->dptr == ASE_NULL) + if (n->dptr == QSE_NULL) { - ASE_MMGR_FREE (dll->mmgr, n); - return ASE_NULL; + QSE_MMGR_FREE (dll->mmgr, n); + return QSE_NULL; } } n->dlen = dlen; - n->next = ASE_NULL; - n->prev = ASE_NULL; + n->next = QSE_NULL; + n->prev = QSE_NULL; return n; } -ase_dll_node_t* ase_dll_insert ( - ase_dll_t* dll, ase_dll_node_t* pos, void* dptr, ase_size_t dlen) +qse_dll_node_t* qse_dll_insert ( + qse_dll_t* dll, qse_dll_node_t* pos, void* dptr, qse_size_t dlen) { - ase_dll_node_t* n = alloc_node (dll, dptr, dlen); - if (n == ASE_NULL) return ASE_NULL; + qse_dll_node_t* n = alloc_node (dll, dptr, dlen); + if (n == QSE_NULL) return QSE_NULL; - if (pos == ASE_NULL) + if (pos == QSE_NULL) { /* insert at the end */ - if (dll->head == ASE_NULL) + if (dll->head == QSE_NULL) { - ASE_ASSERT (dll->tail == ASE_NULL); + QSE_ASSERT (dll->tail == QSE_NULL); dll->head = n; } else dll->tail->next = n; @@ -156,7 +156,7 @@ ase_dll_node_t* ase_dll_insert ( else { /* take note of performance penalty */ - ase_dll_node_t* n2 = dll->head; + qse_dll_node_t* n2 = dll->head; while (n2->next != pos) n2 = n2->next; n2->next = n; } @@ -166,32 +166,32 @@ ase_dll_node_t* ase_dll_insert ( return n; } -ase_dll_node_t* ase_dll_pushhead (ase_dll_t* dll, void* data, ase_size_t size) +qse_dll_node_t* qse_dll_pushhead (qse_dll_t* dll, void* data, qse_size_t size) { - return ase_dll_insert (dll, dll->head, data, size); + return qse_dll_insert (dll, dll->head, data, size); } -ase_dll_node_t* ase_dll_pushtail (ase_dll_t* dll, void* data, ase_size_t size) +qse_dll_node_t* qse_dll_pushtail (qse_dll_t* dll, void* data, qse_size_t size) { - return ase_dll_insert (dll, ASE_NULL, data, size); + return qse_dll_insert (dll, QSE_NULL, data, size); } -void ase_dll_delete (ase_dll_t* dll, ase_dll_node_t* pos) +void qse_dll_delete (qse_dll_t* dll, qse_dll_node_t* pos) { - if (pos == ASE_NULL) return; /* not a valid node */ + if (pos == QSE_NULL) return; /* not a valid node */ if (pos == dll->head) { /* it is simple to delete the head node */ dll->head = pos->next; - if (dll->head == ASE_NULL) dll->tail = ASE_NULL; + if (dll->head == QSE_NULL) dll->tail = QSE_NULL; } else { /* but deletion of other nodes has significant performance * penalty as it has look for the predecessor of the * target node */ - ase_dll_node_t* n2 = dll->head; + qse_dll_node_t* n2 = dll->head; while (n2->next != pos) n2 = n2->next; n2->next = pos->next; @@ -200,43 +200,43 @@ void ase_dll_delete (ase_dll_t* dll, ase_dll_node_t* pos) if (pos == dll->tail) dll->tail = n2; } - if (dll->freeer != ASE_NULL) + if (dll->freeer != QSE_NULL) { /* free the actual data */ dll->freeer (dll, pos->dptr, pos->dlen); } /* free the node */ - ASE_MMGR_FREE (dll->mmgr, pos); + QSE_MMGR_FREE (dll->mmgr, pos); /* decrement the number of elements */ dll->size--; } -void ase_dll_pophead (ase_dll_t* dll) +void qse_dll_pophead (qse_dll_t* dll) { - ase_dll_delete (dll, dll->head); + qse_dll_delete (dll, dll->head); } -void ase_dll_poptail (ase_dll_t* dll) +void qse_dll_poptail (qse_dll_t* dll) { - ase_dll_delete (dll, dll->tail); + qse_dll_delete (dll, dll->tail); } -void ase_dll_walk (ase_dll_t* dll, ase_dll_walker_t walker, void* arg) +void qse_dll_walk (qse_dll_t* dll, qse_dll_walker_t walker, void* arg) { - ase_dll_node_t* n = dll->head; + qse_dll_node_t* n = dll->head; - while (n != ASE_NULL) + while (n != QSE_NULL) { - if (walker(dll,n,arg) == ASE_DLL_WALK_STOP) return; + if (walker(dll,n,arg) == QSE_DLL_WALK_STOP) return; n = n->next; } } -void* ase_dll_copyinline (ase_dll_t* dll, void* dptr, ase_size_t dlen) +void* qse_dll_copyinline (qse_dll_t* dll, void* dptr, qse_size_t dlen) { /* this is a dummy copier */ - return ASE_NULL; + return QSE_NULL; } diff --git a/qse/lib/cmn/fio.c b/qse/lib/cmn/fio.c index 61b77b72..1ef7bef2 100644 --- a/qse/lib/cmn/fio.c +++ b/qse/lib/cmn/fio.c @@ -2,7 +2,7 @@ * $Id: fio.c,v 1.23 2006/06/30 04:18:47 bacon Exp $ */ -#include +#include #include "mem.h" #ifdef _WIN32 @@ -14,57 +14,57 @@ #include #endif -#if defined(ASE_USE_SYSCALL) && defined(HAVE_SYS_SYSCALL_H) +#if defined(QSE_USE_SYSCALL) && defined(HAVE_SYS_SYSCALL_H) #include #endif -ase_fio_t* ase_fio_open ( - ase_mmgr_t* mmgr, ase_size_t ext, - const ase_char_t* path, int flags, int mode) +qse_fio_t* qse_fio_open ( + qse_mmgr_t* mmgr, qse_size_t ext, + const qse_char_t* path, int flags, int mode) { - ase_fio_t* fio; + qse_fio_t* fio; - if (mmgr == ASE_NULL) + if (mmgr == QSE_NULL) { - mmgr = ASE_MMGR_GETDFL(); + mmgr = QSE_MMGR_GETDFL(); - ASE_ASSERTX (mmgr != ASE_NULL, - "Set the memory manager with ASE_MMGR_SETDFL()"); + QSE_ASSERTX (mmgr != QSE_NULL, + "Set the memory manager with QSE_MMGR_SETDFL()"); - if (mmgr == ASE_NULL) return ASE_NULL; + if (mmgr == QSE_NULL) return QSE_NULL; } - fio = ASE_MMGR_ALLOC (mmgr, ASE_SIZEOF(ase_fio_t) + ext); - if (fio == ASE_NULL) return ASE_NULL; + fio = QSE_MMGR_ALLOC (mmgr, QSE_SIZEOF(qse_fio_t) + ext); + if (fio == QSE_NULL) return QSE_NULL; - if (ase_fio_init (fio, mmgr, path, flags, mode) == ASE_NULL) + if (qse_fio_init (fio, mmgr, path, flags, mode) == QSE_NULL) { - ASE_MMGR_FREE (mmgr, fio); - return ASE_NULL; + QSE_MMGR_FREE (mmgr, fio); + return QSE_NULL; } return fio; } -void ase_fio_close (ase_fio_t* fio) +void qse_fio_close (qse_fio_t* fio) { - ase_fio_fini (fio); - ASE_MMGR_FREE (fio->mmgr, fio); + qse_fio_fini (fio); + QSE_MMGR_FREE (fio->mmgr, fio); } -ase_fio_t* ase_fio_init ( - ase_fio_t* fio, ase_mmgr_t* mmgr, - const ase_char_t* path, int flags, int mode) +qse_fio_t* qse_fio_init ( + qse_fio_t* fio, qse_mmgr_t* mmgr, + const qse_char_t* path, int flags, int mode) { - ase_fio_hnd_t handle; + qse_fio_hnd_t handle; - ASE_MEMSET (fio, 0, ASE_SIZEOF(*fio)); + QSE_MEMSET (fio, 0, QSE_SIZEOF(*fio)); fio->mmgr = mmgr; #ifdef _WIN32 - if (flags & ASE_FIO_HANDLE) + if (flags & QSE_FIO_HANDLE) { - handle = *(ase_fio_hnd_t*)path; + handle = *(qse_fio_hnd_t*)path; } else { @@ -73,69 +73,69 @@ ase_fio_t* ase_fio_init ( DWORD creation_disposition = 0; DWORD attributes = FILE_ATTRIBUTE_NORMAL; - if (flags & ASE_FIO_APPEND) + if (flags & QSE_FIO_APPEND) { /* this is not officialy documented for CreateFile. * ZwCreateFile (kernel) seems to document it */ desired_access |= FILE_APPEND_DATA; } - else if (flags & ASE_FIO_WRITE) + else if (flags & QSE_FIO_WRITE) { /* In WIN32, FILE_APPEND_DATA and GENERIC_WRITE can't * be used together */ desired_access |= GENERIC_WRITE; } - if (flags & ASE_FIO_READ) desired_access |= GENERIC_READ; + if (flags & QSE_FIO_READ) desired_access |= GENERIC_READ; - if (flags & ASE_FIO_CREATE) + if (flags & QSE_FIO_CREATE) { creation_disposition = - (flags & ASE_FIO_EXCLUSIVE)? CREATE_NEW: - (flags & ASE_FIO_TRUNCATE)? CREATE_ALWAYS: OPEN_ALWAYS; + (flags & QSE_FIO_EXCLUSIVE)? CREATE_NEW: + (flags & QSE_FIO_TRUNCATE)? CREATE_ALWAYS: OPEN_ALWAYS; } - else if (flags & ASE_FIO_TRUNCATE) + else if (flags & QSE_FIO_TRUNCATE) { creation_disposition = TRUNCATE_EXISTING; } else creation_disposition = OPEN_EXISTING; - if (flags & ASE_FIO_NOSHRD) share_mode &= ~FILE_SHARE_READ; - if (flags & ASE_FIO_NOSHWR) share_mode &= ~FILE_SHARE_WRITE; + if (flags & QSE_FIO_NOSHRD) share_mode &= ~FILE_SHARE_READ; + if (flags & QSE_FIO_NOSHWR) share_mode &= ~FILE_SHARE_WRITE; - if (flags & ASE_FIO_SYNC) attributes |= FILE_FLAG_WRITE_THROUGH; + if (flags & QSE_FIO_SYNC) attributes |= FILE_FLAG_WRITE_THROUGH; /* TODO: handle mode... set attribuets */ handle = CreateFile (path, - desired_access, share_mode, ASE_NULL, + desired_access, share_mode, QSE_NULL, creation_disposition, attributes, 0); } - if (handle == INVALID_HANDLE_VALUE) return ASE_NULL; + if (handle == INVALID_HANDLE_VALUE) return QSE_NULL; { DWORD file_type = GetFileType(handle); if (file_type == FILE_TYPE_UNKNOWN) { CloseHandle (handle); - return ASE_NULL; + return QSE_NULL; } } /* TODO: a lot more */ #else - if (flags & ASE_FIO_HANDLE) + if (flags & QSE_FIO_HANDLE) { - handle = *(ase_fio_hnd_t*)path; + handle = *(qse_fio_hnd_t*)path; } else { int desired_access = 0; - #ifdef ASE_CHAR_IS_MCHAR - const ase_mchar_t* path_mb = path; + #ifdef QSE_CHAR_IS_MCHAR + const qse_mchar_t* path_mb = path; #else - ase_mchar_t path_mb[PATH_MAX + 1]; - if (ase_wcstombs_strict (path, - path_mb, ASE_COUNTOF(path_mb)) == -1) return ASE_NULL; + qse_mchar_t path_mb[PATH_MAX + 1]; + if (qse_wcstombs_strict (path, + path_mb, QSE_COUNTOF(path_mb)) == -1) return QSE_NULL; #endif /* * rwa -> RDWR | APPEND @@ -143,24 +143,24 @@ ase_fio_t* ase_fio_init ( * wa -> WRONLY | APPEND * a -> WRONLY | APPEND */ - if (flags & ASE_FIO_APPEND) + if (flags & QSE_FIO_APPEND) { - if ((flags & ASE_FIO_READ)) desired_access |= O_RDWR; + if ((flags & QSE_FIO_READ)) desired_access |= O_RDWR; else desired_access |= O_WRONLY; desired_access |= O_APPEND; } else { - if ((flags & ASE_FIO_READ) && - (flags & ASE_FIO_WRITE)) desired_access |= O_RDWR; - else if (flags & ASE_FIO_READ) desired_access |= O_RDONLY; - else if (flags & ASE_FIO_WRITE) desired_access |= O_WRONLY; + if ((flags & QSE_FIO_READ) && + (flags & QSE_FIO_WRITE)) desired_access |= O_RDWR; + else if (flags & QSE_FIO_READ) desired_access |= O_RDONLY; + else if (flags & QSE_FIO_WRITE) desired_access |= O_WRONLY; } - if (flags & ASE_FIO_CREATE) desired_access |= O_CREAT; - if (flags & ASE_FIO_TRUNCATE) desired_access |= O_TRUNC; - if (flags & ASE_FIO_EXCLUSIVE) desired_access |= O_EXCL; - if (flags & ASE_FIO_SYNC) desired_access |= O_SYNC; + if (flags & QSE_FIO_CREATE) desired_access |= O_CREAT; + if (flags & QSE_FIO_TRUNCATE) desired_access |= O_TRUNC; + if (flags & QSE_FIO_EXCLUSIVE) desired_access |= O_EXCL; + if (flags & QSE_FIO_SYNC) desired_access |= O_SYNC; #if defined(O_LARGEFILE) desired_access |= O_LARGEFILE; @@ -173,7 +173,7 @@ ase_fio_t* ase_fio_init ( #endif } - if (handle == -1) return ASE_NULL; + if (handle == -1) return QSE_NULL; #endif @@ -181,7 +181,7 @@ ase_fio_t* ase_fio_init ( return fio; } -void ase_fio_fini (ase_fio_t* fio) +void qse_fio_fini (qse_fio_t* fio) { #ifdef _WIN32 CloseHandle (fio->handle); @@ -194,18 +194,18 @@ void ase_fio_fini (ase_fio_t* fio) #endif } -ase_fio_hnd_t ase_fio_gethandle (ase_fio_t* fio) +qse_fio_hnd_t qse_fio_gethandle (qse_fio_t* fio) { return fio->handle; } -void ase_fio_sethandle (ase_fio_t* fio, ase_fio_hnd_t handle) +void qse_fio_sethandle (qse_fio_t* fio, qse_fio_hnd_t handle) { fio->handle = handle; } -ase_fio_off_t ase_fio_seek ( - ase_fio_t* fio, ase_fio_off_t offset, ase_fio_ori_t origin) +qse_fio_off_t qse_fio_seek ( + qse_fio_t* fio, qse_fio_off_t offset, qse_fio_ori_t origin) { #ifdef _WIN32 static int seek_map[] = @@ -216,25 +216,25 @@ ase_fio_off_t ase_fio_seek ( }; LARGE_INTEGER x, y; - ASE_ASSERT (AES_SIZEOF(offset) <= AES_SIZEOF(x.QuadPart)); + QSE_ASSERT (AES_SIZEOF(offset) <= AES_SIZEOF(x.QuadPart)); x.QuadPart = offset; if (SetFilePointerEx (fio->handle, x, &y, seek_map[origin]) == FALSE) { - return (ase_fio_off_t)-1; + return (qse_fio_off_t)-1; } - return (ase_fio_off_t)y.QuadPart; + return (qse_fio_off_t)y.QuadPart; /* x.QuadPart = offset; x.LowPart = SetFilePointer (fio->handle, x.LowPart, &x.HighPart, seek_map[origin]); if (x.LowPart == INVALID_SET_FILE_POINTER && GetLastError() != NO_ERROR) { - return (ase_fio_off_t)-1; + return (qse_fio_off_t)-1; } - return (ase_fio_off_t)x.QuadPart; + return (qse_fio_off_t)x.QuadPart; */ #else @@ -254,10 +254,10 @@ ase_fio_off_t ase_fio_seek ( &tmp, seek_map[origin]) == -1) { - return (ase_fio_off_t)-1; + return (qse_fio_off_t)-1; } - return (ase_fio_off_t)tmp; + return (qse_fio_off_t)tmp; #elif defined(SYS_lseek) return syscall (SYS_lseek, fio->handle, offset, seek_map[origin]); @@ -270,7 +270,7 @@ ase_fio_off_t ase_fio_seek ( #endif } -int ase_fio_truncate (ase_fio_t* fio, ase_fio_off_t size) +int qse_fio_truncate (qse_fio_t* fio, qse_fio_off_t size) { #ifdef _WIN32 LARGE_INTEGER x; @@ -294,15 +294,15 @@ int ase_fio_truncate (ase_fio_t* fio, ase_fio_off_t size) #endif } -ase_ssize_t ase_fio_read (ase_fio_t* fio, void* buf, ase_size_t size) +qse_ssize_t qse_fio_read (qse_fio_t* fio, void* buf, qse_size_t size) { #ifdef _WIN32 DWORD count; - if (size > ASE_TYPE_MAX(DWORD)) size = ASE_TYPE_MAX(DWORD); - if (ReadFile(fio->handle, buf, size, &count, ASE_NULL) == FALSE) return -1; - return (ase_ssize_t)count; + if (size > QSE_TYPE_MAX(DWORD)) size = QSE_TYPE_MAX(DWORD); + if (ReadFile(fio->handle, buf, size, &count, QSE_NULL) == FALSE) return -1; + return (qse_ssize_t)count; #else - if (size > ASE_TYPE_MAX(size_t)) size = ASE_TYPE_MAX(size_t); + if (size > QSE_TYPE_MAX(size_t)) size = QSE_TYPE_MAX(size_t); #ifdef SYS_read return syscall (SYS_read, fio->handle, buf, size); #else @@ -311,15 +311,15 @@ ase_ssize_t ase_fio_read (ase_fio_t* fio, void* buf, ase_size_t size) #endif } -ase_ssize_t ase_fio_write (ase_fio_t* fio, const void* data, ase_size_t size) +qse_ssize_t qse_fio_write (qse_fio_t* fio, const void* data, qse_size_t size) { #ifdef _WIN32 DWORD count; - if (size > ASE_TYPE_MAX(DWORD)) size = ASE_TYPE_MAX(DWORD); - if (WriteFile(fio->handle, data, size, &count, ASE_NULL) == FALSE) return -1; - return (ase_ssize_t)count; + if (size > QSE_TYPE_MAX(DWORD)) size = QSE_TYPE_MAX(DWORD); + if (WriteFile(fio->handle, data, size, &count, QSE_NULL) == FALSE) return -1; + return (qse_ssize_t)count; #else - if (size > ASE_TYPE_MAX(size_t)) size = ASE_TYPE_MAX(size_t); + if (size > QSE_TYPE_MAX(size_t)) size = QSE_TYPE_MAX(size_t); #ifdef SYS_write return syscall (SYS_write, fio->handle, data, size); #else diff --git a/qse/lib/cmn/lda.c b/qse/lib/cmn/lda.c index d55fbdb8..1e46685a 100644 --- a/qse/lib/cmn/lda.c +++ b/qse/lib/cmn/lda.c @@ -4,37 +4,37 @@ * {License} */ -#include +#include #include "mem.h" -#define lda_t ase_lda_t -#define node_t ase_lda_node_t -#define copier_t ase_lda_copier_t -#define freeer_t ase_lda_freeer_t -#define comper_t ase_lda_comper_t -#define sizer_t ase_lda_sizer_t -#define keeper_t ase_lda_keeper_t -#define walker_t ase_lda_walker_t +#define lda_t qse_lda_t +#define node_t qse_lda_node_t +#define copier_t qse_lda_copier_t +#define freeer_t qse_lda_freeer_t +#define comper_t qse_lda_comper_t +#define sizer_t qse_lda_sizer_t +#define keeper_t qse_lda_keeper_t +#define walker_t qse_lda_walker_t -#define mmgr_t ase_mmgr_t -#define size_t ase_size_t +#define mmgr_t qse_mmgr_t +#define size_t qse_size_t #define TOB(lda,len) ((len)*(lda)->scale) #define DPTR(node) ((node)->dptr) #define DLEN(node) ((node)->dlen) -#define INVALID ASE_LDA_INVALID +#define INVALID QSE_LDA_INVALID static int comp_data (lda_t* lda, const void* dptr1, size_t dlen1, const void* dptr2, size_t dlen2) { /* - if (dlen1 == dlen2) return ASE_MEMCMP (dptr1, dptr2, TOB(lda,dlen1)); + if (dlen1 == dlen2) return QSE_MEMCMP (dptr1, dptr2, TOB(lda,dlen1)); return 1; */ size_t min = (dlen1 < dlen2)? dlen1: dlen2; - int n = ASE_MEMCMP (dptr1, dptr2, TOB(lda,min)); + int n = QSE_MEMCMP (dptr1, dptr2, TOB(lda,min)); if (n == 0 && dlen1 != dlen2) { n = (dlen1 > dlen2)? 1: -1; @@ -47,30 +47,30 @@ static node_t* alloc_node (lda_t* lda, void* dptr, size_t dlen) { node_t* n; - if (lda->copier == ASE_LDA_COPIER_SIMPLE) + if (lda->copier == QSE_LDA_COPIER_SIMPLE) { - n = ASE_MMGR_ALLOC (lda->mmgr, ASE_SIZEOF(node_t)); - if (n == ASE_NULL) return ASE_NULL; + n = QSE_MMGR_ALLOC (lda->mmgr, QSE_SIZEOF(node_t)); + if (n == QSE_NULL) return QSE_NULL; DPTR(n) = dptr; } - else if (lda->copier == ASE_LDA_COPIER_INLINE) + else if (lda->copier == QSE_LDA_COPIER_INLINE) { - n = ASE_MMGR_ALLOC (lda->mmgr, - ASE_SIZEOF(node_t) + TOB(lda,dlen)); - if (n == ASE_NULL) return ASE_NULL; + n = QSE_MMGR_ALLOC (lda->mmgr, + QSE_SIZEOF(node_t) + TOB(lda,dlen)); + if (n == QSE_NULL) return QSE_NULL; - ASE_MEMCPY (n + 1, dptr, TOB(lda,dlen)); + QSE_MEMCPY (n + 1, dptr, TOB(lda,dlen)); DPTR(n) = n + 1; } else { - n = ASE_MMGR_ALLOC (lda->mmgr, ASE_SIZEOF(node_t)); - if (n == ASE_NULL) return ASE_NULL; + n = QSE_MMGR_ALLOC (lda->mmgr, QSE_SIZEOF(node_t)); + if (n == QSE_NULL) return QSE_NULL; DPTR(n) = lda->copier (lda, dptr, dlen); - if (DPTR(n) == ASE_NULL) + if (DPTR(n) == QSE_NULL) { - ASE_MMGR_FREE (lda->mmgr, n); - return ASE_NULL; + QSE_MMGR_FREE (lda->mmgr, n); + return QSE_NULL; } } @@ -79,202 +79,202 @@ static node_t* alloc_node (lda_t* lda, void* dptr, size_t dlen) return n; } -lda_t* ase_lda_open (mmgr_t* mmgr, size_t ext, size_t capa) +lda_t* qse_lda_open (mmgr_t* mmgr, size_t ext, size_t capa) { lda_t* lda; - if (mmgr == ASE_NULL) + if (mmgr == QSE_NULL) { - mmgr = ASE_MMGR_GETDFL(); + mmgr = QSE_MMGR_GETDFL(); - ASE_ASSERTX (mmgr != ASE_NULL, - "Set the memory manager with ASE_MMGR_SETDFL()"); + QSE_ASSERTX (mmgr != QSE_NULL, + "Set the memory manager with QSE_MMGR_SETDFL()"); - if (mmgr == ASE_NULL) return ASE_NULL; + if (mmgr == QSE_NULL) return QSE_NULL; } - lda = ASE_MMGR_ALLOC (mmgr, ASE_SIZEOF(lda_t) + ext); - if (lda == ASE_NULL) return ASE_NULL; + lda = QSE_MMGR_ALLOC (mmgr, QSE_SIZEOF(lda_t) + ext); + if (lda == QSE_NULL) return QSE_NULL; - if (ase_lda_init (lda, mmgr, capa) == ASE_NULL) + if (qse_lda_init (lda, mmgr, capa) == QSE_NULL) { - ASE_MMGR_FREE (mmgr, lda); - return ASE_NULL; + QSE_MMGR_FREE (mmgr, lda); + return QSE_NULL; } return lda; } -void ase_lda_close (lda_t* lda) +void qse_lda_close (lda_t* lda) { - ase_lda_fini (lda); - ASE_MMGR_FREE (lda->mmgr, lda); + qse_lda_fini (lda); + QSE_MMGR_FREE (lda->mmgr, lda); } -lda_t* ase_lda_init (lda_t* lda, mmgr_t* mmgr, size_t capa) +lda_t* qse_lda_init (lda_t* lda, mmgr_t* mmgr, size_t capa) { - ASE_MEMSET (lda, 0, ASE_SIZEOF(*lda)); + QSE_MEMSET (lda, 0, QSE_SIZEOF(*lda)); lda->mmgr = mmgr; lda->size = 0; lda->capa = 0; - lda->node = ASE_NULL; + lda->node = QSE_NULL; - lda->copier = ASE_LDA_COPIER_SIMPLE; + lda->copier = QSE_LDA_COPIER_SIMPLE; lda->comper = comp_data; - if (ase_lda_setcapa (lda, capa) == ASE_NULL) return ASE_NULL; + if (qse_lda_setcapa (lda, capa) == QSE_NULL) return QSE_NULL; return lda; } -void ase_lda_fini (lda_t* lda) +void qse_lda_fini (lda_t* lda) { - ase_lda_clear (lda); + qse_lda_clear (lda); - if (lda->node != ASE_NULL) + if (lda->node != QSE_NULL) { - ASE_MMGR_FREE (lda->mmgr, lda->node); - lda->node = ASE_NULL; + QSE_MMGR_FREE (lda->mmgr, lda->node); + lda->node = QSE_NULL; lda->capa = 0; } } -void* ase_lda_getxtn (lda_t* lda) +void* qse_lda_getxtn (lda_t* lda) { return lda + 1; } -mmgr_t* ase_lda_getmmgr (lda_t* lda) +mmgr_t* qse_lda_getmmgr (lda_t* lda) { return lda->mmgr; } -void ase_lda_setmmgr (lda_t* lda, mmgr_t* mmgr) +void qse_lda_setmmgr (lda_t* lda, mmgr_t* mmgr) { lda->mmgr = mmgr; } -int ase_lda_getscale (lda_t* lda) +int qse_lda_getscale (lda_t* lda) { return lda->scale; } -void ase_lda_setscale (lda_t* lda, int scale) +void qse_lda_setscale (lda_t* lda, int scale) { - ASE_ASSERTX (scale > 0 && scale <= ASE_TYPE_MAX(ase_byte_t), - "The scale should be larger than 0 and less than or equal to the maximum value that the ase_byte_t type can hold"); + QSE_ASSERTX (scale > 0 && scale <= QSE_TYPE_MAX(qse_byte_t), + "The scale should be larger than 0 and less than or equal to the maximum value that the qse_byte_t type can hold"); if (scale <= 0) scale = 1; - if (scale > ASE_TYPE_MAX(ase_byte_t)) scale = ASE_TYPE_MAX(ase_byte_t); + if (scale > QSE_TYPE_MAX(qse_byte_t)) scale = QSE_TYPE_MAX(qse_byte_t); lda->scale = scale; } -copier_t ase_lda_getcopier (lda_t* lda) +copier_t qse_lda_getcopier (lda_t* lda) { return lda->copier; } -void ase_lda_setcopier (lda_t* lda, copier_t copier) +void qse_lda_setcopier (lda_t* lda, copier_t copier) { - if (copier == ASE_NULL) copier = ASE_LDA_COPIER_SIMPLE; + if (copier == QSE_NULL) copier = QSE_LDA_COPIER_SIMPLE; lda->copier = copier; } -freeer_t ase_lda_getfreeer (lda_t* lda) +freeer_t qse_lda_getfreeer (lda_t* lda) { return lda->freeer; } -void ase_lda_setfreeer (lda_t* lda, freeer_t freeer) +void qse_lda_setfreeer (lda_t* lda, freeer_t freeer) { lda->freeer = freeer; } -comper_t ase_lda_getcomper (lda_t* lda) +comper_t qse_lda_getcomper (lda_t* lda) { return lda->comper; } -void ase_lda_setcomper (lda_t* lda, comper_t comper) +void qse_lda_setcomper (lda_t* lda, comper_t comper) { - if (comper == ASE_NULL) comper = comp_data; + if (comper == QSE_NULL) comper = comp_data; lda->comper = comper; } -keeper_t ase_lda_getkeeper (lda_t* lda) +keeper_t qse_lda_getkeeper (lda_t* lda) { return lda->keeper; } -void ase_lda_setkeeper (lda_t* lda, keeper_t keeper) +void qse_lda_setkeeper (lda_t* lda, keeper_t keeper) { lda->keeper = keeper; } -sizer_t ase_lda_getsizer (lda_t* lda) +sizer_t qse_lda_getsizer (lda_t* lda) { return lda->sizer; } -void ase_lda_setsizer (lda_t* lda, sizer_t sizer) +void qse_lda_setsizer (lda_t* lda, sizer_t sizer) { lda->sizer = sizer; } -size_t ase_lda_getsize (lda_t* lda) +size_t qse_lda_getsize (lda_t* lda) { return lda->size; } -size_t ase_lda_getcapa (lda_t* lda) +size_t qse_lda_getcapa (lda_t* lda) { return lda->capa; } -lda_t* ase_lda_setcapa (lda_t* lda, size_t capa) +lda_t* qse_lda_setcapa (lda_t* lda, size_t capa) { void* tmp; if (lda->size > capa) { - ase_lda_delete (lda, capa, lda->size - capa); - ASE_ASSERT (lda->size <= capa); + qse_lda_delete (lda, capa, lda->size - capa); + QSE_ASSERT (lda->size <= capa); } if (capa > 0) { - if (lda->mmgr->realloc != ASE_NULL && lda->node != ASE_NULL) + if (lda->mmgr->realloc != QSE_NULL && lda->node != QSE_NULL) { - tmp = (ase_lda_node_t**)ASE_MMGR_REALLOC ( - lda->mmgr, lda->node, ASE_SIZEOF(*lda->node)*capa); - if (tmp == ASE_NULL) return ASE_NULL; + tmp = (qse_lda_node_t**)QSE_MMGR_REALLOC ( + lda->mmgr, lda->node, QSE_SIZEOF(*lda->node)*capa); + if (tmp == QSE_NULL) return QSE_NULL; } else { - tmp = (ase_lda_node_t**) ASE_MMGR_ALLOC ( - lda->mmgr, ASE_SIZEOF(*lda->node)*capa); - if (tmp == ASE_NULL) return ASE_NULL; + tmp = (qse_lda_node_t**) QSE_MMGR_ALLOC ( + lda->mmgr, QSE_SIZEOF(*lda->node)*capa); + if (tmp == QSE_NULL) return QSE_NULL; - if (lda->node != ASE_NULL) + if (lda->node != QSE_NULL) { size_t x; x = (capa > lda->capa)? lda->capa: capa; - ASE_MEMCPY (tmp, lda->node, - ASE_SIZEOF(*lda->node) * x); - ASE_MMGR_FREE (lda->mmgr, lda->node); + QSE_MEMCPY (tmp, lda->node, + QSE_SIZEOF(*lda->node) * x); + QSE_MMGR_FREE (lda->mmgr, lda->node); } } } else { - if (lda->node != ASE_NULL) + if (lda->node != QSE_NULL) { - ase_lda_clear (lda); - ASE_MMGR_FREE (lda->mmgr, lda->node); + qse_lda_clear (lda); + QSE_MMGR_FREE (lda->mmgr, lda->node); } - tmp = ASE_NULL; + tmp = QSE_NULL; } lda->node = tmp; @@ -283,13 +283,13 @@ lda_t* ase_lda_setcapa (lda_t* lda, size_t capa) return lda; } -size_t ase_lda_search (lda_t* lda, size_t pos, const void* dptr, size_t dlen) +size_t qse_lda_search (lda_t* lda, size_t pos, const void* dptr, size_t dlen) { size_t i; for (i = pos; i < lda->size; i++) { - if (lda->node[i] == ASE_NULL) continue; + if (lda->node[i] == QSE_NULL) continue; if (lda->comper (lda, DPTR(lda->node[i]), DLEN(lda->node[i]), @@ -299,7 +299,7 @@ size_t ase_lda_search (lda_t* lda, size_t pos, const void* dptr, size_t dlen) return INVALID; } -size_t ase_lda_rsearch (lda_t* lda, size_t pos, const void* dptr, size_t dlen) +size_t qse_lda_rsearch (lda_t* lda, size_t pos, const void* dptr, size_t dlen) { size_t i; @@ -309,7 +309,7 @@ size_t ase_lda_rsearch (lda_t* lda, size_t pos, const void* dptr, size_t dlen) for (i = pos + 1; i-- > 0; ) { - if (lda->node[i] == ASE_NULL) continue; + if (lda->node[i] == QSE_NULL) continue; if (lda->comper (lda, DPTR(lda->node[i]), DLEN(lda->node[i]), @@ -320,20 +320,20 @@ size_t ase_lda_rsearch (lda_t* lda, size_t pos, const void* dptr, size_t dlen) return INVALID; } -size_t ase_lda_upsert (lda_t* lda, size_t pos, void* dptr, size_t dlen) +size_t qse_lda_upsert (lda_t* lda, size_t pos, void* dptr, size_t dlen) { - if (pos < lda->size) return ase_lda_update (lda, pos, dptr, dlen); - return ase_lda_insert (lda, pos, dptr, dlen); + if (pos < lda->size) return qse_lda_update (lda, pos, dptr, dlen); + return qse_lda_insert (lda, pos, dptr, dlen); } -size_t ase_lda_insert (lda_t* lda, size_t pos, void* dptr, size_t dlen) +size_t qse_lda_insert (lda_t* lda, size_t pos, void* dptr, size_t dlen) { size_t i; node_t* node; /* allocate the node first */ node = alloc_node (lda, dptr, dlen); - if (node == ASE_NULL) return INVALID; + if (node == QSE_NULL) return INVALID; /* do resizeing if necessary. * resizing is performed after node allocation because that way, it @@ -351,7 +351,7 @@ size_t ase_lda_insert (lda_t* lda, size_t pos, void* dptr, size_t dlen) { if (lda->capa <= 0) { - ASE_ASSERT (lda->size <= 0); + QSE_ASSERT (lda->size <= 0); capa = (pos < 16)? 16: (pos + 1); } else @@ -361,11 +361,11 @@ size_t ase_lda_insert (lda_t* lda, size_t pos, void* dptr, size_t dlen) } } - if (ase_lda_setcapa(lda,capa) == ASE_NULL) + if (qse_lda_setcapa(lda,capa) == QSE_NULL) { if (lda->freeer) lda->freeer (lda, DPTR(node), DLEN(node)); - ASE_MMGR_FREE (lda->mmgr, node); + QSE_MMGR_FREE (lda->mmgr, node); return INVALID; } } @@ -375,12 +375,12 @@ size_t ase_lda_insert (lda_t* lda, size_t pos, void* dptr, size_t dlen) /* the buffer is not still enough after resizing */ if (lda->freeer) lda->freeer (lda, DPTR(node), DLEN(node)); - ASE_MMGR_FREE (lda->mmgr, node); + QSE_MMGR_FREE (lda->mmgr, node); return INVALID; } - /* fill in the gap with ASE_NULL */ - for (i = lda->size; i < pos; i++) lda->node[i] = ASE_NULL; + /* fill in the gap with QSE_NULL */ + for (i = lda->size; i < pos; i++) lda->node[i] = QSE_NULL; /* shift values to the next cell */ for (i = lda->size; i > pos; i--) lda->node[i] = lda->node[i-1]; @@ -394,18 +394,18 @@ size_t ase_lda_insert (lda_t* lda, size_t pos, void* dptr, size_t dlen) return pos; } -size_t ase_lda_update (lda_t* lda, size_t pos, void* dptr, size_t dlen) +size_t qse_lda_update (lda_t* lda, size_t pos, void* dptr, size_t dlen) { node_t* c; if (pos >= lda->size) return INVALID; c = lda->node[pos]; - if (c == ASE_NULL) + if (c == QSE_NULL) { /* no previous data */ lda->node[pos] = alloc_node (lda, dptr, dlen); - if (lda->node[pos] == ASE_NULL) return INVALID; + if (lda->node[pos] == QSE_NULL) return INVALID; } else { @@ -418,11 +418,11 @@ size_t ase_lda_update (lda_t* lda, size_t pos, void* dptr, size_t dlen) { /* updated to different data */ node_t* node = alloc_node (lda, dptr, dlen); - if (node == ASE_NULL) return INVALID; + if (node == QSE_NULL) return INVALID; - if (lda->freeer != ASE_NULL) + if (lda->freeer != QSE_NULL) lda->freeer (lda, DPTR(c), DLEN(c)); - ASE_MMGR_FREE (lda->mmgr, c); + QSE_MMGR_FREE (lda->mmgr, c); lda->node[pos] = node; } @@ -431,7 +431,7 @@ size_t ase_lda_update (lda_t* lda, size_t pos, void* dptr, size_t dlen) return pos; } -size_t ase_lda_delete (lda_t* lda, size_t index, size_t count) +size_t qse_lda_delete (lda_t* lda, size_t index, size_t count) { size_t i; @@ -444,13 +444,13 @@ size_t ase_lda_delete (lda_t* lda, size_t index, size_t count) { node_t* c = lda->node[i]; - if (c != ASE_NULL) + if (c != QSE_NULL) { - if (lda->freeer != ASE_NULL) + if (lda->freeer != QSE_NULL) lda->freeer (lda, DPTR(c), DLEN(c)); - ASE_MMGR_FREE (lda->mmgr, c); + QSE_MMGR_FREE (lda->mmgr, c); - lda->node[i] = ASE_NULL; + lda->node[i] = QSE_NULL; } } @@ -458,13 +458,13 @@ size_t ase_lda_delete (lda_t* lda, size_t index, size_t count) { lda->node[i-count] = lda->node[i]; } - lda->node[lda->size-1] = ASE_NULL; + lda->node[lda->size-1] = QSE_NULL; lda->size -= count; return count; } -size_t ase_lda_uplete (lda_t* lda, size_t index, size_t count) +size_t qse_lda_uplete (lda_t* lda, size_t index, size_t count) { size_t i; @@ -477,56 +477,56 @@ size_t ase_lda_uplete (lda_t* lda, size_t index, size_t count) { node_t* c = lda->node[i]; - if (c != ASE_NULL) + if (c != QSE_NULL) { - if (lda->freeer != ASE_NULL) + if (lda->freeer != QSE_NULL) lda->freeer (lda, DPTR(c), DLEN(c)); - ASE_MMGR_FREE (lda->mmgr, c); + QSE_MMGR_FREE (lda->mmgr, c); - lda->node[i] = ASE_NULL; + lda->node[i] = QSE_NULL; } } return count; } -void ase_lda_clear (lda_t* lda) +void qse_lda_clear (lda_t* lda) { size_t i; for (i = 0; i < lda->size; i++) { node_t* c = lda->node[i]; - if (c != ASE_NULL) + if (c != QSE_NULL) { if (lda->freeer) lda->freeer (lda, DPTR(c), DLEN(c)); - ASE_MMGR_FREE (lda->mmgr, c); - lda->node[i] = ASE_NULL; + QSE_MMGR_FREE (lda->mmgr, c); + lda->node[i] = QSE_NULL; } } lda->size = 0; } -void ase_lda_walk (lda_t* lda, walker_t walker, void* arg) +void qse_lda_walk (lda_t* lda, walker_t walker, void* arg) { - ase_lda_walk_t w = ASE_LDA_WALK_FORWARD; + qse_lda_walk_t w = QSE_LDA_WALK_FORWARD; size_t i = 0; while (1) { - if (lda->node[i] != ASE_NULL) + if (lda->node[i] != QSE_NULL) w = walker (lda, i, arg); - if (w == ASE_LDA_WALK_STOP) return; + if (w == QSE_LDA_WALK_STOP) return; - if (w == ASE_LDA_WALK_FORWARD) + if (w == QSE_LDA_WALK_FORWARD) { i++; if (i >= lda->size) return; } - if (w == ASE_LDA_WALK_BACKWARD) + if (w == QSE_LDA_WALK_BACKWARD) { if (i <= 0) return; i--; @@ -534,9 +534,9 @@ void ase_lda_walk (lda_t* lda, walker_t walker, void* arg) } } -void ase_lda_rwalk (lda_t* lda, walker_t walker, void* arg) +void qse_lda_rwalk (lda_t* lda, walker_t walker, void* arg) { - ase_lda_walk_t w = ASE_LDA_WALK_BACKWARD; + qse_lda_walk_t w = QSE_LDA_WALK_BACKWARD; size_t i; if (lda->size <= 0) return; @@ -544,17 +544,17 @@ void ase_lda_rwalk (lda_t* lda, walker_t walker, void* arg) while (1) { - if (lda->node[i] != ASE_NULL) + if (lda->node[i] != QSE_NULL) w = walker (lda, i, arg); - if (w == ASE_LDA_WALK_STOP) return; + if (w == QSE_LDA_WALK_STOP) return; - if (w == ASE_LDA_WALK_FORWARD) + if (w == QSE_LDA_WALK_FORWARD) { i++; if (i >= lda->size) return; } - if (w == ASE_LDA_WALK_BACKWARD) + if (w == QSE_LDA_WALK_BACKWARD) { if (i <= 0) return; i--; diff --git a/qse/lib/cmn/makefile.in b/qse/lib/cmn/makefile.in index d8f506c2..4f01ce9e 100644 --- a/qse/lib/cmn/makefile.in +++ b/qse/lib/cmn/makefile.in @@ -39,7 +39,7 @@ am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/include/ase/config.h +CONFIG_HEADER = $(top_builddir)/include/qse/config.h CONFIG_CLEAN_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ diff --git a/qse/lib/cmn/map.c b/qse/lib/cmn/map.c index 4b9541ee..c20a4e38 100644 --- a/qse/lib/cmn/map.c +++ b/qse/lib/cmn/map.c @@ -4,33 +4,33 @@ * {License} */ -#include +#include #include "mem.h" -#define map_t ase_map_t -#define pair_t ase_map_pair_t -#define copier_t ase_map_copier_t -#define freeer_t ase_map_freeer_t -#define hasher_t ase_map_hasher_t -#define comper_t ase_map_comper_t -#define keeper_t ase_map_keeper_t -#define sizer_t ase_map_sizer_t -#define walker_t ase_map_walker_t +#define map_t qse_map_t +#define pair_t qse_map_pair_t +#define copier_t qse_map_copier_t +#define freeer_t qse_map_freeer_t +#define hasher_t qse_map_hasher_t +#define comper_t qse_map_comper_t +#define keeper_t qse_map_keeper_t +#define sizer_t qse_map_sizer_t +#define walker_t qse_map_walker_t -#define KPTR(p) ASE_MAP_KPTR(p) -#define KLEN(p) ASE_MAP_KLEN(p) -#define VPTR(p) ASE_MAP_VPTR(p) -#define VLEN(p) ASE_MAP_VLEN(p) -#define NEXT(p) ASE_MAP_NEXT(p) +#define KPTR(p) QSE_MAP_KPTR(p) +#define KLEN(p) QSE_MAP_KLEN(p) +#define VPTR(p) QSE_MAP_VPTR(p) +#define VLEN(p) QSE_MAP_VLEN(p) +#define NEXT(p) QSE_MAP_NEXT(p) -#define SIZEOF(x) ASE_SIZEOF(x) -#define size_t ase_size_t -#define byte_t ase_byte_t -#define uint_t ase_uint_t -#define mmgr_t ase_mmgr_t +#define SIZEOF(x) QSE_SIZEOF(x) +#define size_t qse_size_t +#define byte_t qse_byte_t +#define uint_t qse_uint_t +#define mmgr_t qse_mmgr_t -#define KTOB(map,len) ((len)*(map)->scale[ASE_MAP_KEY]) -#define VTOB(map,len) ((len)*(map)->scale[ASE_MAP_VAL]) +#define KTOB(map,len) ((len)*(map)->scale[QSE_MAP_KEY]) +#define VTOB(map,len) ((len)*(map)->scale[QSE_MAP_VAL]) static int reorganize (map_t* map); @@ -53,7 +53,7 @@ static int comp_key (map_t* map, const void* kptr1, size_t klen1, const void* kptr2, size_t klen2) { - if (klen1 == klen2) return ASE_MEMCMP (kptr1, kptr2, KTOB(map,klen1)); + if (klen1 == klen2) return QSE_MEMCMP (kptr1, kptr2, KTOB(map,klen1)); /* it just returns 1 to indicate that they are different. */ return 1; } @@ -62,59 +62,59 @@ static pair_t* alloc_pair (map_t* map, void* kptr, size_t klen, void* vptr, size_t vlen) { pair_t* n; - copier_t kcop = map->copier[ASE_MAP_KEY]; - copier_t vcop = map->copier[ASE_MAP_VAL]; + copier_t kcop = map->copier[QSE_MAP_KEY]; + copier_t vcop = map->copier[QSE_MAP_VAL]; size_t as = SIZEOF(pair_t); - if (kcop == ASE_MAP_COPIER_INLINE) as += KTOB(map,klen); - if (vcop == ASE_MAP_COPIER_INLINE) as += VTOB(map,vlen); + if (kcop == QSE_MAP_COPIER_INLINE) as += KTOB(map,klen); + if (vcop == QSE_MAP_COPIER_INLINE) as += VTOB(map,vlen); - n = (pair_t*) ASE_MMGR_ALLOC (map->mmgr, as); - if (n == ASE_NULL) return ASE_NULL; + n = (pair_t*) QSE_MMGR_ALLOC (map->mmgr, as); + if (n == QSE_NULL) return QSE_NULL; - NEXT(n) = ASE_NULL; + NEXT(n) = QSE_NULL; KLEN(n) = klen; - if (kcop == ASE_MAP_COPIER_SIMPLE) + if (kcop == QSE_MAP_COPIER_SIMPLE) { KPTR(n) = kptr; } - else if (kcop == ASE_MAP_COPIER_INLINE) + else if (kcop == QSE_MAP_COPIER_INLINE) { KPTR(n) = n + 1; - ASE_MEMCPY (KPTR(n), kptr, KTOB(map,klen)); + QSE_MEMCPY (KPTR(n), kptr, KTOB(map,klen)); } else { KPTR(n) = kcop (map, kptr, klen); - if (KPTR(n) == ASE_NULL) + if (KPTR(n) == QSE_NULL) { - ASE_MMGR_FREE (map->mmgr, n); - return ASE_NULL; + QSE_MMGR_FREE (map->mmgr, n); + return QSE_NULL; } } VLEN(n) = vlen; - if (vcop == ASE_MAP_COPIER_SIMPLE) + if (vcop == QSE_MAP_COPIER_SIMPLE) { VPTR(n) = vptr; } - else if (vcop == ASE_MAP_COPIER_INLINE) + else if (vcop == QSE_MAP_COPIER_INLINE) { VPTR(n) = n + 1; - if (kcop == ASE_MAP_COPIER_INLINE) + if (kcop == QSE_MAP_COPIER_INLINE) VPTR(n) = (byte_t*)VPTR(n) + KTOB(map,klen); - ASE_MEMCPY (VPTR(n), vptr, VTOB(map,vlen)); + QSE_MEMCPY (VPTR(n), vptr, VTOB(map,vlen)); } else { VPTR(n) = vcop (map, vptr, vlen); - if (VPTR(n) != ASE_NULL) + if (VPTR(n) != QSE_NULL) { - if (map->freeer[ASE_MAP_KEY] != ASE_NULL) - map->freeer[ASE_MAP_KEY] (map, KPTR(n), KLEN(n)); - ASE_MMGR_FREE (map->mmgr, n); - return ASE_NULL; + if (map->freeer[QSE_MAP_KEY] != QSE_NULL) + map->freeer[QSE_MAP_KEY] (map, KPTR(n), KLEN(n)); + QSE_MMGR_FREE (map->mmgr, n); + return QSE_NULL; } } @@ -123,11 +123,11 @@ static pair_t* alloc_pair (map_t* map, static void free_pair (map_t* map, pair_t* pair) { - if (map->freeer[ASE_MAP_KEY] != ASE_NULL) - map->freeer[ASE_MAP_KEY] (map, KPTR(pair), KLEN(pair)); - if (map->freeer[ASE_MAP_VAL] != ASE_NULL) - map->freeer[ASE_MAP_VAL] (map, VPTR(pair), VLEN(pair)); - ASE_MMGR_FREE (map->mmgr, pair); + if (map->freeer[QSE_MAP_KEY] != QSE_NULL) + map->freeer[QSE_MAP_KEY] (map, KPTR(pair), KLEN(pair)); + if (map->freeer[QSE_MAP_VAL] != QSE_NULL) + map->freeer[QSE_MAP_VAL] (map, VPTR(pair), VLEN(pair)); + QSE_MMGR_FREE (map->mmgr, pair); } static pair_t* change_pair_val ( @@ -138,28 +138,28 @@ static pair_t* change_pair_val ( /* if the old value and the new value are the same, * it just calls the handler for this condition. * No value replacement occurs. */ - if (map->keeper != ASE_NULL) + if (map->keeper != QSE_NULL) { map->keeper (map, vptr, vlen); } } else { - copier_t vcop = map->copier[ASE_MAP_VAL]; + copier_t vcop = map->copier[QSE_MAP_VAL]; void* ovptr = VPTR(pair); size_t ovlen = VLEN(pair); /* place the new value according to the copier */ - if (vcop == ASE_MAP_COPIER_SIMPLE) + if (vcop == QSE_MAP_COPIER_SIMPLE) { VPTR(pair) = vptr; VLEN(pair) = vlen; } - else if (vcop == ASE_MAP_COPIER_INLINE) + else if (vcop == QSE_MAP_COPIER_INLINE) { if (ovlen == vlen) { - ASE_MEMCPY (VPTR(pair), vptr, VTOB(map,vlen)); + QSE_MEMCPY (VPTR(pair), vptr, VTOB(map,vlen)); } else { @@ -167,7 +167,7 @@ static pair_t* change_pair_val ( pair_t* p = alloc_pair (map, KPTR(pair), KLEN(pair), vptr, vlen); - if (p == ASE_NULL) return ASE_NULL; + if (p == QSE_NULL) return QSE_NULL; free_pair (map, pair); return p; } @@ -175,15 +175,15 @@ static pair_t* change_pair_val ( else { void* nvptr = vcop (map, vptr, vlen); - if (nvptr == ASE_NULL) return ASE_NULL; + if (nvptr == QSE_NULL) return QSE_NULL; VPTR(pair) = nvptr; VLEN(pair) = vlen; } /* free up the old value */ - if (map->freeer[ASE_MAP_VAL] != ASE_NULL) + if (map->freeer[QSE_MAP_VAL] != QSE_NULL) { - map->freeer[ASE_MAP_VAL] (map, ovptr, ovlen); + map->freeer[QSE_MAP_VAL] (map, ovptr, ovlen); } } @@ -191,43 +191,43 @@ static pair_t* change_pair_val ( return pair; } -map_t* ase_map_open (mmgr_t* mmgr, size_t ext, size_t capa, int factor) +map_t* qse_map_open (mmgr_t* mmgr, size_t ext, size_t capa, int factor) { map_t* map; - if (mmgr == ASE_NULL) + if (mmgr == QSE_NULL) { - mmgr = ASE_MMGR_GETDFL(); + mmgr = QSE_MMGR_GETDFL(); - ASE_ASSERTX (mmgr != ASE_NULL, - "Set the memory manager with ASE_MMGR_SETDFL()"); + QSE_ASSERTX (mmgr != QSE_NULL, + "Set the memory manager with QSE_MMGR_SETDFL()"); - if (mmgr == ASE_NULL) return ASE_NULL; + if (mmgr == QSE_NULL) return QSE_NULL; } - map = (ase_map_t*) ASE_MMGR_ALLOC (mmgr, ASE_SIZEOF(ase_map_t) + ext); - if (map == ASE_NULL) return ASE_NULL; + map = (qse_map_t*) QSE_MMGR_ALLOC (mmgr, QSE_SIZEOF(qse_map_t) + ext); + if (map == QSE_NULL) return QSE_NULL; - if (ase_map_init (map, mmgr, capa, factor) == ASE_NULL) + if (qse_map_init (map, mmgr, capa, factor) == QSE_NULL) { - ASE_MMGR_FREE (mmgr, map); - return ASE_NULL; + QSE_MMGR_FREE (mmgr, map); + return QSE_NULL; } return map; } -void ase_map_close (map_t* map) +void qse_map_close (map_t* map) { - ase_map_fini (map); - ASE_MMGR_FREE (map->mmgr, map); + qse_map_fini (map); + QSE_MMGR_FREE (map->mmgr, map); } -map_t* ase_map_init (map_t* map, mmgr_t* mmgr, size_t capa, int factor) +map_t* qse_map_init (map_t* map, mmgr_t* mmgr, size_t capa, int factor) { - ASE_ASSERTX (capa > 0, + QSE_ASSERTX (capa > 0, "The initial capacity should be greater than 0. Otherwise, it is adjusted to 1 in the release mode"); - ASE_ASSERTX (factor >= 0 && factor <= 100, + QSE_ASSERTX (factor >= 0 && factor <= 100, "The load factor should be between 0 and 100 inclusive. In the release mode, a value out of the range is adjusted to 100"); /* some initial adjustment */ @@ -235,17 +235,17 @@ map_t* ase_map_init (map_t* map, mmgr_t* mmgr, size_t capa, int factor) if (factor > 100) factor = 100; /* do not zero out the extension */ - ASE_MEMSET (map, 0, SIZEOF(*map)); + QSE_MEMSET (map, 0, SIZEOF(*map)); map->mmgr = mmgr; - map->bucket = ASE_MMGR_ALLOC (mmgr, capa*SIZEOF(pair_t*)); - if (map->bucket == ASE_NULL) return ASE_NULL; + map->bucket = QSE_MMGR_ALLOC (mmgr, capa*SIZEOF(pair_t*)); + if (map->bucket == QSE_NULL) return QSE_NULL; - /*for (i = 0; i < capa; i++) map->bucket[i] = ASE_NULL;*/ - ASE_MEMSET (map->bucket, 0, capa*SIZEOF(pair_t*)); + /*for (i = 0; i < capa; i++) map->bucket[i] = QSE_NULL;*/ + QSE_MEMSET (map->bucket, 0, capa*SIZEOF(pair_t*)); - map->scale[ASE_MAP_KEY] = 1; - map->scale[ASE_MAP_VAL] = 1; + map->scale[QSE_MAP_KEY] = 1; + map->scale[QSE_MAP_VAL] = 1; map->factor = factor; map->size = 0; @@ -255,143 +255,143 @@ map_t* ase_map_init (map_t* map, mmgr_t* mmgr, size_t capa, int factor) map->hasher = hash_key; map->comper = comp_key; - map->copier[ASE_MAP_KEY] = ASE_MAP_COPIER_SIMPLE; - map->copier[ASE_MAP_VAL] = ASE_MAP_COPIER_SIMPLE; + map->copier[QSE_MAP_KEY] = QSE_MAP_COPIER_SIMPLE; + map->copier[QSE_MAP_VAL] = QSE_MAP_COPIER_SIMPLE; /* - map->freeer[ASE_MAP_KEY] = ASE_NULL; - map->freeer[ASE_MAP_VAL] = ASE_NULL; - map->keeper = ASE_NULL; - map->sizer = ASE_NULL; + map->freeer[QSE_MAP_KEY] = QSE_NULL; + map->freeer[QSE_MAP_VAL] = QSE_NULL; + map->keeper = QSE_NULL; + map->sizer = QSE_NULL; */ return map; } -void ase_map_fini (map_t* map) +void qse_map_fini (map_t* map) { - ase_map_clear (map); - ASE_MMGR_FREE (map->mmgr, map->bucket); + qse_map_clear (map); + QSE_MMGR_FREE (map->mmgr, map->bucket); } -void* ase_map_getxtn (map_t* map) +void* qse_map_getxtn (map_t* map) { return map + 1; } -mmgr_t* ase_map_getmmgr (map_t* map) +mmgr_t* qse_map_getmmgr (map_t* map) { return map->mmgr; } -void ase_map_setmmgr (map_t* map, mmgr_t* mmgr) +void qse_map_setmmgr (map_t* map, mmgr_t* mmgr) { map->mmgr = mmgr; } -int ase_map_getscale (map_t* map, ase_map_id_t id) +int qse_map_getscale (map_t* map, qse_map_id_t id) { - ASE_ASSERTX (id == ASE_MAP_KEY || id == ASE_MAP_VAL, - "The ID should be either ASE_MAP_KEY or ASE_MAP_VAL"); + QSE_ASSERTX (id == QSE_MAP_KEY || id == QSE_MAP_VAL, + "The ID should be either QSE_MAP_KEY or QSE_MAP_VAL"); return map->scale[id]; } -void ase_map_setscale (map_t* map, ase_map_id_t id, int scale) +void qse_map_setscale (map_t* map, qse_map_id_t id, int scale) { - ASE_ASSERTX (id == ASE_MAP_KEY || id == ASE_MAP_VAL, - "The ID should be either ASE_MAP_KEY or ASE_MAP_VAL"); + QSE_ASSERTX (id == QSE_MAP_KEY || id == QSE_MAP_VAL, + "The ID should be either QSE_MAP_KEY or QSE_MAP_VAL"); - ASE_ASSERTX (scale > 0 && scale <= ASE_TYPE_MAX(ase_byte_t), - "The scale should be larger than 0 and less than or equal to the maximum value that the ase_byte_t type can hold"); + QSE_ASSERTX (scale > 0 && scale <= QSE_TYPE_MAX(qse_byte_t), + "The scale should be larger than 0 and less than or equal to the maximum value that the qse_byte_t type can hold"); if (scale <= 0) scale = 1; - if (scale > ASE_TYPE_MAX(ase_byte_t)) scale = ASE_TYPE_MAX(ase_byte_t); + if (scale > QSE_TYPE_MAX(qse_byte_t)) scale = QSE_TYPE_MAX(qse_byte_t); map->scale[id] = scale; } -copier_t ase_map_getcopier (map_t* map, ase_map_id_t id) +copier_t qse_map_getcopier (map_t* map, qse_map_id_t id) { - ASE_ASSERTX (id == ASE_MAP_KEY || id == ASE_MAP_VAL, - "The ID should be either ASE_MAP_KEY or ASE_MAP_VAL"); + QSE_ASSERTX (id == QSE_MAP_KEY || id == QSE_MAP_VAL, + "The ID should be either QSE_MAP_KEY or QSE_MAP_VAL"); return map->copier[id]; } -void ase_map_setcopier (map_t* map, ase_map_id_t id, copier_t copier) +void qse_map_setcopier (map_t* map, qse_map_id_t id, copier_t copier) { - ASE_ASSERTX (id == ASE_MAP_KEY || id == ASE_MAP_VAL, - "The ID should be either ASE_MAP_KEY or ASE_MAP_VAL"); - if (copier == ASE_NULL) copier = ASE_MAP_COPIER_SIMPLE; + QSE_ASSERTX (id == QSE_MAP_KEY || id == QSE_MAP_VAL, + "The ID should be either QSE_MAP_KEY or QSE_MAP_VAL"); + if (copier == QSE_NULL) copier = QSE_MAP_COPIER_SIMPLE; map->copier[id] = copier; } -freeer_t ase_map_getfreeer (map_t* map, ase_map_id_t id) +freeer_t qse_map_getfreeer (map_t* map, qse_map_id_t id) { - ASE_ASSERTX (id == ASE_MAP_KEY || id == ASE_MAP_VAL, - "The ID should be either ASE_MAP_KEY or ASE_MAP_VAL"); + QSE_ASSERTX (id == QSE_MAP_KEY || id == QSE_MAP_VAL, + "The ID should be either QSE_MAP_KEY or QSE_MAP_VAL"); return map->freeer[id]; } -void ase_map_setfreeer (map_t* map, ase_map_id_t id, freeer_t freeer) +void qse_map_setfreeer (map_t* map, qse_map_id_t id, freeer_t freeer) { - ASE_ASSERTX (id == ASE_MAP_KEY || id == ASE_MAP_VAL, - "The ID should be either ASE_MAP_KEY or ASE_MAP_VAL"); + QSE_ASSERTX (id == QSE_MAP_KEY || id == QSE_MAP_VAL, + "The ID should be either QSE_MAP_KEY or QSE_MAP_VAL"); map->freeer[id] = freeer; } -hasher_t ase_map_gethasher (map_t* map) +hasher_t qse_map_gethasher (map_t* map) { return map->hasher; } -void ase_map_sethasher (map_t* map, hasher_t hasher) +void qse_map_sethasher (map_t* map, hasher_t hasher) { - if (hasher == ASE_NULL) hasher = hash_key; + if (hasher == QSE_NULL) hasher = hash_key; map->hasher = hasher; } -comper_t ase_map_getcomper (map_t* map) +comper_t qse_map_getcomper (map_t* map) { return map->comper; } -void ase_map_setcomper (map_t* map, comper_t comper) +void qse_map_setcomper (map_t* map, comper_t comper) { - if (comper == ASE_NULL) comper = comp_key; + if (comper == QSE_NULL) comper = comp_key; map->comper = comper; } -keeper_t ase_map_getkeeper (map_t* map) +keeper_t qse_map_getkeeper (map_t* map) { return map->keeper; } -void ase_map_setkeeper (map_t* map, keeper_t keeper) +void qse_map_setkeeper (map_t* map, keeper_t keeper) { map->keeper = keeper; } -sizer_t ase_map_getsizer (map_t* map) +sizer_t qse_map_getsizer (map_t* map) { return map->sizer; } -void ase_map_setsizer (map_t* map, sizer_t sizer) +void qse_map_setsizer (map_t* map, sizer_t sizer) { map->sizer = sizer; } -size_t ase_map_getsize (map_t* map) +size_t qse_map_getsize (map_t* map) { return map->size; } -size_t ase_map_getcapa (map_t* map) +size_t qse_map_getcapa (map_t* map) { return map->capa; } -pair_t* ase_map_search (map_t* map, const void* kptr, size_t klen) +pair_t* qse_map_search (map_t* map, const void* kptr, size_t klen) { pair_t* pair; size_t hc; @@ -399,7 +399,7 @@ pair_t* ase_map_search (map_t* map, const void* kptr, size_t klen) hc = map->hasher(map,kptr,klen) % map->capa; pair = map->bucket[hc]; - while (pair != ASE_NULL) + while (pair != QSE_NULL) { if (map->comper (map, KPTR(pair), KLEN(pair), kptr, klen) == 0) { @@ -409,10 +409,10 @@ pair_t* ase_map_search (map_t* map, const void* kptr, size_t klen) pair = NEXT(pair); } - return ASE_NULL; + return QSE_NULL; } -int ase_map_put ( +int qse_map_put ( map_t* map, void* kptr, size_t klen, void* vptr, size_t vlen, pair_t** px) { @@ -421,25 +421,25 @@ int ase_map_put ( hc = map->hasher(map,kptr,klen) % map->capa; pair = map->bucket[hc]; - prev = ASE_NULL; + prev = QSE_NULL; - while (pair != ASE_NULL) + while (pair != QSE_NULL) { next = NEXT(pair); if (map->comper (map, KPTR(pair), KLEN(pair), kptr, klen) == 0) { p = change_pair_val (map, pair, vptr, vlen); - if (p == ASE_NULL) return -1; /* change error */ + if (p == QSE_NULL) return -1; /* change error */ if (p != pair) { /* the pair has been reallocated. relink it */ - if (prev == ASE_NULL) map->bucket[hc] = p; + if (prev == QSE_NULL) map->bucket[hc] = p; else NEXT(prev) = p; NEXT(p) = next; } - if (px != ASE_NULL) *px = p; + if (px != QSE_NULL) *px = p; return 0; /* value changed for the existing key */ } @@ -455,32 +455,32 @@ int ase_map_put ( } } - ASE_ASSERT (pair == ASE_NULL); + QSE_ASSERT (pair == QSE_NULL); pair = alloc_pair (map, kptr, klen, vptr, vlen); - if (pair == ASE_NULL) return -1; /* error */ + if (pair == QSE_NULL) return -1; /* error */ NEXT(pair) = map->bucket[hc]; map->bucket[hc] = pair; map->size++; - if (px != ASE_NULL) *px = pair; + if (px != QSE_NULL) *px = pair; return 1; /* new key added */ } -pair_t* ase_map_upsert ( +pair_t* qse_map_upsert ( map_t* map, void* kptr, size_t klen, void* vptr, size_t vlen) { /* update if the key exists, otherwise insert a new pair */ int n; pair_t* px; - n = ase_map_put (map, kptr, klen, vptr, vlen, &px); - if (n < 0) return ASE_NULL; + n = qse_map_put (map, kptr, klen, vptr, vlen, &px); + if (n < 0) return QSE_NULL; return px; } -pair_t* ase_map_insert (map_t* map, void* kptr, size_t klen, void* vptr, size_t vlen) +pair_t* qse_map_insert (map_t* map, void* kptr, size_t klen, void* vptr, size_t vlen) { pair_t* pair; size_t hc; @@ -488,11 +488,11 @@ pair_t* ase_map_insert (map_t* map, void* kptr, size_t klen, void* vptr, size_t hc = map->hasher(map,kptr,klen) % map->capa; pair = map->bucket[hc]; - while (pair != ASE_NULL) + while (pair != QSE_NULL) { if (map->comper (map, KPTR(pair), KLEN(pair), kptr, klen) == 0) { - return ASE_NULL; + return QSE_NULL; } pair = NEXT(pair); @@ -506,10 +506,10 @@ pair_t* ase_map_insert (map_t* map, void* kptr, size_t klen, void* vptr, size_t } } - ASE_ASSERT (pair == ASE_NULL); + QSE_ASSERT (pair == QSE_NULL); pair = alloc_pair (map, kptr, klen, vptr, vlen); - if (pair == ASE_NULL) return ASE_NULL; + if (pair == QSE_NULL) return QSE_NULL; NEXT(pair) = map->bucket[hc]; map->bucket[hc] = pair; @@ -518,16 +518,16 @@ pair_t* ase_map_insert (map_t* map, void* kptr, size_t klen, void* vptr, size_t return pair; } -pair_t* ase_map_update (map_t* map, void* kptr, size_t klen, void* vptr, size_t vlen) +pair_t* qse_map_update (map_t* map, void* kptr, size_t klen, void* vptr, size_t vlen) { pair_t* pair, * p, * prev, * next; size_t hc; hc = map->hasher(map,kptr,klen) % map->capa; pair = map->bucket[hc]; - prev = ASE_NULL; + prev = QSE_NULL; - while (pair != ASE_NULL) + while (pair != QSE_NULL) { next = NEXT(pair); @@ -535,11 +535,11 @@ pair_t* ase_map_update (map_t* map, void* kptr, size_t klen, void* vptr, size_t { p = change_pair_val (map, pair, vptr, vlen); - if (p == ASE_NULL) return ASE_NULL; /* change error */ + if (p == QSE_NULL) return QSE_NULL; /* change error */ if (p != pair) { /* the pair has been reallocated. relink it */ - if (prev == ASE_NULL) map->bucket[hc] = p; + if (prev == QSE_NULL) map->bucket[hc] = p; else NEXT(prev) = p; NEXT(p) = next; } @@ -551,23 +551,23 @@ pair_t* ase_map_update (map_t* map, void* kptr, size_t klen, void* vptr, size_t pair = next; } - return ASE_NULL; + return QSE_NULL; } -int ase_map_delete (map_t* map, const void* kptr, size_t klen) +int qse_map_delete (map_t* map, const void* kptr, size_t klen) { pair_t* pair, * prev; size_t hc; hc = map->hasher(map,kptr,klen) % map->capa; pair = map->bucket[hc]; - prev = ASE_NULL; + prev = QSE_NULL; - while (pair != ASE_NULL) + while (pair != QSE_NULL) { if (map->comper (map, KPTR(pair), KLEN(pair), kptr, klen) == 0) { - if (prev == ASE_NULL) + if (prev == QSE_NULL) map->bucket[hc] = NEXT(pair); else NEXT(prev) = NEXT(pair); @@ -584,7 +584,7 @@ int ase_map_delete (map_t* map, const void* kptr, size_t klen) return -1; } -void ase_map_clear (map_t* map) +void qse_map_clear (map_t* map) { size_t i; pair_t* pair, * next; @@ -593,7 +593,7 @@ void ase_map_clear (map_t* map) { pair = map->bucket[i]; - while (pair != ASE_NULL) + while (pair != QSE_NULL) { next = NEXT(pair); free_pair (map, pair); @@ -601,12 +601,12 @@ void ase_map_clear (map_t* map) pair = next; } - map->bucket[i] = ASE_NULL; + map->bucket[i] = QSE_NULL; } } -void ase_map_walk (map_t* map, walker_t walker, void* arg) +void qse_map_walk (map_t* map, walker_t walker, void* arg) { size_t i; pair_t* pair, * next; @@ -615,16 +615,16 @@ void ase_map_walk (map_t* map, walker_t walker, void* arg) { pair = map->bucket[i]; - while (pair != ASE_NULL) + while (pair != QSE_NULL) { next = NEXT(pair); - if (walker(map, pair, arg) == ASE_MAP_WALK_STOP) return; + if (walker(map, pair, arg) == QSE_MAP_WALK_STOP) return; pair = next; } } } -pair_t* ase_map_getfirstpair (map_t* map, size_t* buckno) +pair_t* qse_map_getfirstpair (map_t* map, size_t* buckno) { size_t i; pair_t* pair; @@ -632,23 +632,23 @@ pair_t* ase_map_getfirstpair (map_t* map, size_t* buckno) for (i = 0; i < map->capa; i++) { pair = map->bucket[i]; - if (pair != ASE_NULL) + if (pair != QSE_NULL) { *buckno = i; return pair; } } - return ASE_NULL; + return QSE_NULL; } -pair_t* ase_map_getnextpair (map_t* map, pair_t* pair, size_t* buckno) +pair_t* qse_map_getnextpair (map_t* map, pair_t* pair, size_t* buckno) { size_t i; pair_t* next; next = NEXT(pair); - if (next != ASE_NULL) + if (next != QSE_NULL) { /* no change in bucket number */ return next; @@ -657,14 +657,14 @@ pair_t* ase_map_getnextpair (map_t* map, pair_t* pair, size_t* buckno) for (i = (*buckno)+1; i < map->capa; i++) { pair = map->bucket[i]; - if (pair != ASE_NULL) + if (pair != QSE_NULL) { *buckno = i; return pair; } } - return ASE_NULL; + return QSE_NULL; } static int reorganize (map_t* map) @@ -690,23 +690,23 @@ static int reorganize (map_t* map) new_capa = (map->capa >= 65536)? (map->capa + 65536): (map->capa << 1); } - new_buck = (pair_t**) ASE_MMGR_ALLOC ( + new_buck = (pair_t**) QSE_MMGR_ALLOC ( map->mmgr, new_capa*SIZEOF(pair_t*)); - if (new_buck == ASE_NULL) + if (new_buck == QSE_NULL) { /* reorganization is disabled once it fails */ map->threshold = 0; return -1; } - /*for (i = 0; i < new_capa; i++) new_buck[i] = ASE_NULL;*/ - ASE_MEMSET (new_buck, 0, new_capa*SIZEOF(pair_t*)); + /*for (i = 0; i < new_capa; i++) new_buck[i] = QSE_NULL;*/ + QSE_MEMSET (new_buck, 0, new_capa*SIZEOF(pair_t*)); for (i = 0; i < map->capa; i++) { pair_t* pair = map->bucket[i]; - while (pair != ASE_NULL) + while (pair != QSE_NULL) { pair_t* next = NEXT(pair); @@ -721,7 +721,7 @@ static int reorganize (map_t* map) } } - ASE_MMGR_FREE (map->mmgr, map->bucket); + QSE_MMGR_FREE (map->mmgr, map->bucket); map->bucket = new_buck; map->capa = new_capa; map->threshold = map->capa * map->factor / 100; diff --git a/qse/lib/cmn/mem.c b/qse/lib/cmn/mem.c index 78e16380..292c1420 100644 --- a/qse/lib/cmn/mem.c +++ b/qse/lib/cmn/mem.c @@ -4,39 +4,39 @@ * {License} */ -#include +#include #include #if defined(__SPU__) #include -#define SPU_VUC_SIZE ASE_SIZEOF(vector unsigned char) +#define SPU_VUC_SIZE QSE_SIZEOF(vector unsigned char) #endif -/*#define IS_UNALIGNED(ptr) (((ase_size_t)ptr)%ASE_SIZEOF(ase_size_t))*/ -#define IS_UNALIGNED(ptr) (((ase_size_t)ptr)&(ASE_SIZEOF(ase_size_t)-1)) +/*#define IS_UNALIGNED(ptr) (((qse_size_t)ptr)%QSE_SIZEOF(qse_size_t))*/ +#define IS_UNALIGNED(ptr) (((qse_size_t)ptr)&(QSE_SIZEOF(qse_size_t)-1)) #define IS_ALIGNED(ptr) (!IS_UNALIGNED(ptr)) #define IS_EITHER_UNALIGNED(ptr1,ptr2) \ - (((ase_size_t)ptr1|(ase_size_t)ptr2)&(ASE_SIZEOF(ase_size_t)-1)) + (((qse_size_t)ptr1|(qse_size_t)ptr2)&(QSE_SIZEOF(qse_size_t)-1)) #define IS_BOTH_ALIGNED(ptr1,ptr2) (!IS_EITHER_UNALIGNED(ptr1,ptr2)) -void* ase_memcpy (void* dst, const void* src, ase_size_t n) +void* qse_memcpy (void* dst, const void* src, qse_size_t n) { -#if defined(ASE_BUILD_FOR_SIZE) +#if defined(QSE_BUILD_FOR_SIZE) - ase_byte_t* d = (ase_byte_t*)dst; - ase_byte_t* s = (ase_byte_t*)src; + qse_byte_t* d = (qse_byte_t*)dst; + qse_byte_t* s = (qse_byte_t*)src; while (n-- > 0) *d++ = *s++; return dst; #elif defined(__SPU__) - ase_byte_t* d; - ase_byte_t* s; + qse_byte_t* d; + qse_byte_t* s; if (n >= SPU_VUC_SIZE && - (((ase_size_t)dst) & (SPU_VUC_SIZE-1)) == 0 && - (((ase_size_t)src) & (SPU_VUC_SIZE-1)) == 0) + (((qse_size_t)dst) & (SPU_VUC_SIZE-1)) == 0 && + (((qse_size_t)src) & (SPU_VUC_SIZE-1)) == 0) { vector unsigned char* du = (vector unsigned char*)dst; vector unsigned char* su = (vector unsigned char*)src; @@ -48,13 +48,13 @@ void* ase_memcpy (void* dst, const void* src, ase_size_t n) } while (n >= SPU_VUC_SIZE); - d = (ase_byte_t*)du; - s = (ase_byte_t*)su; + d = (qse_byte_t*)du; + s = (qse_byte_t*)su; } else { - d = (ase_byte_t*)dst; - s = (ase_byte_t*)src; + d = (qse_byte_t*)dst; + s = (qse_byte_t*)src; } while (n-- > 0) *d++ = *s++; @@ -62,28 +62,28 @@ void* ase_memcpy (void* dst, const void* src, ase_size_t n) #else - ase_byte_t* d; - ase_byte_t* s; + qse_byte_t* d; + qse_byte_t* s; - if (n >= ASE_SIZEOF(ase_size_t) && IS_BOTH_ALIGNED(dst,src)) + if (n >= QSE_SIZEOF(qse_size_t) && IS_BOTH_ALIGNED(dst,src)) { - ase_size_t* du = (ase_size_t*)dst; - ase_size_t* su = (ase_size_t*)src; + qse_size_t* du = (qse_size_t*)dst; + qse_size_t* su = (qse_size_t*)src; do { *du++ = *su++; - n -= ASE_SIZEOF(ase_size_t); + n -= QSE_SIZEOF(qse_size_t); } - while (n >= ASE_SIZEOF(ase_size_t)); + while (n >= QSE_SIZEOF(qse_size_t)); - d = (ase_byte_t*)du; - s = (ase_byte_t*)su; + d = (qse_byte_t*)du; + s = (qse_byte_t*)su; } else { - d = (ase_byte_t*)dst; - s = (ase_byte_t*)src; + d = (qse_byte_t*)dst; + s = (qse_byte_t*)src; } while (n-- > 0) *d++ = *s++; @@ -92,48 +92,48 @@ void* ase_memcpy (void* dst, const void* src, ase_size_t n) #endif } -void* ase_memmove (void* dst, const void* src, ase_size_t n) +void* qse_memmove (void* dst, const void* src, qse_size_t n) { - const ase_byte_t* sre = (const ase_byte_t*)src + n; + const qse_byte_t* sre = (const qse_byte_t*)src + n; if (dst <= src || dst >= (const void*)sre) { - ase_byte_t* d = (ase_byte_t*)dst; - const ase_byte_t* s = (const ase_byte_t*)src; + qse_byte_t* d = (qse_byte_t*)dst; + const qse_byte_t* s = (const qse_byte_t*)src; while (n-- > 0) *d++ = *s++; } else { - ase_byte_t* dse = (ase_byte_t*)dst + n; + qse_byte_t* dse = (qse_byte_t*)dst + n; while (n-- > 0) *--dse = *--sre; } return dst; } -void* ase_memset (void* dst, int val, ase_size_t n) +void* qse_memset (void* dst, int val, qse_size_t n) { -#if defined(ASE_BUILD_FOR_SIZE) +#if defined(QSE_BUILD_FOR_SIZE) - ase_byte_t* d = (ase_byte_t*)dst; - while (n-- > 0) *d++ = (ase_byte_t)val; + qse_byte_t* d = (qse_byte_t*)dst; + while (n-- > 0) *d++ = (qse_byte_t)val; return dst; #elif defined(__SPU__) - ase_byte_t* d; - ase_size_t rem; + qse_byte_t* d; + qse_size_t rem; if (n <= 0) return dst; - d = (ase_byte_t*)dst; + d = (qse_byte_t*)dst; /* spu SIMD instructions require 16-byte alignment */ - rem = ((ase_size_t)dst) & (SPU_VUC_SIZE-1); + rem = ((qse_size_t)dst) & (SPU_VUC_SIZE-1); if (rem > 0) { /* handle leading unaligned part */ - do { *d++ = (ase_byte_t)val; } + do { *d++ = (qse_byte_t)val; } while (n-- > 0 && ++rem < SPU_VUC_SIZE); } @@ -147,7 +147,7 @@ void* ase_memset (void* dst, int val, ase_size_t n) /* fills all 16 unsigned char cells with the same value * no need to use shift and bitwise-or owing to splats */ - v16 = spu_splats((ase_byte_t)val); + v16 = spu_splats((qse_byte_t)val); do { @@ -156,64 +156,64 @@ void* ase_memset (void* dst, int val, ase_size_t n) } while (n >= SPU_VUC_SIZE); - d = (ase_byte_t*)vd; + d = (qse_byte_t*)vd; } /* handle the trailing part */ - while (n-- > 0) *d++ = (ase_byte_t)val; + while (n-- > 0) *d++ = (qse_byte_t)val; return dst; #else - ase_byte_t* d; - ase_size_t rem; + qse_byte_t* d; + qse_size_t rem; if (n <= 0) return dst; - d = (ase_byte_t*)dst; + d = (qse_byte_t*)dst; rem = IS_UNALIGNED(dst); if (rem > 0) { - do { *d++ = (ase_byte_t)val; } - while (n-- > 0 && ++rem < ASE_SIZEOF(ase_size_t)); + do { *d++ = (qse_byte_t)val; } + while (n-- > 0 && ++rem < QSE_SIZEOF(qse_size_t)); } - if (n >= ASE_SIZEOF(ase_size_t)) + if (n >= QSE_SIZEOF(qse_size_t)) { - ase_size_t* u = (ase_size_t*)d; - ase_size_t uv = 0; + qse_size_t* u = (qse_size_t*)d; + qse_size_t uv = 0; int i; if (val != 0) { - for (i = 0; i < ASE_SIZEOF(ase_size_t); i++) - uv = (uv << 8) | (ase_byte_t)val; + for (i = 0; i < QSE_SIZEOF(qse_size_t); i++) + uv = (uv << 8) | (qse_byte_t)val; } - ASE_ASSERT (IS_ALIGNED(u)); + QSE_ASSERT (IS_ALIGNED(u)); do { *u++ = uv; - n -= ASE_SIZEOF(ase_size_t); + n -= QSE_SIZEOF(qse_size_t); } - while (n >= ASE_SIZEOF(ase_size_t)); + while (n >= QSE_SIZEOF(qse_size_t)); - d = (ase_byte_t*)u; + d = (qse_byte_t*)u; } - while (n-- > 0) *d++ = (ase_byte_t)val; + while (n-- > 0) *d++ = (qse_byte_t)val; return dst; #endif } -int ase_memcmp (const void* s1, const void* s2, ase_size_t n) +int qse_memcmp (const void* s1, const void* s2, qse_size_t n) { -#if defined(ASE_BUILD_FOR_SIZE) +#if defined(QSE_BUILD_FOR_SIZE) - const ase_byte_t* b1 = (const ase_byte_t*)s1; - const ase_byte_t* b2 = (const ase_byte_t*)s2; + const qse_byte_t* b1 = (const qse_byte_t*)s1; + const qse_byte_t* b2 = (const qse_byte_t*)s2; while (n-- > 0) { @@ -225,12 +225,12 @@ int ase_memcmp (const void* s1, const void* s2, ase_size_t n) #elif defined(__SPU__) - const ase_byte_t* b1; - const ase_byte_t* b2; + const qse_byte_t* b1; + const qse_byte_t* b2; if (n >= SPU_VUC_SIZE && - (((ase_size_t)s1) & (SPU_VUC_SIZE-1)) == 0 && - (((ase_size_t)s2) & (SPU_VUC_SIZE-1)) == 0) + (((qse_size_t)s1) & (SPU_VUC_SIZE-1)) == 0 && + (((qse_size_t)s2) & (SPU_VUC_SIZE-1)) == 0) { vector unsigned char* v1 = (vector unsigned char*)s1; vector unsigned char* v2 = (vector unsigned char*)s2; @@ -259,8 +259,8 @@ int ase_memcmp (const void* s1, const void* s2, ase_size_t n) { /* otherwise, calculate the * unmatching pointer address */ - b1 = (const ase_byte_t*)v1 + (cnt - 16); - b2 = (const ase_byte_t*)v2 + (cnt - 16); + b1 = (const qse_byte_t*)v1 + (cnt - 16); + b2 = (const qse_byte_t*)v2 + (cnt - 16); break; } @@ -269,8 +269,8 @@ int ase_memcmp (const void* s1, const void* s2, ase_size_t n) if (n < SPU_VUC_SIZE) { - b1 = (const ase_byte_t*)v1; - b2 = (const ase_byte_t*)v2; + b1 = (const qse_byte_t*)v1; + b2 = (const qse_byte_t*)v2; break; } } @@ -278,8 +278,8 @@ int ase_memcmp (const void* s1, const void* s2, ase_size_t n) } else { - b1 = (const ase_byte_t*)s1; - b2 = (const ase_byte_t*)s2; + b1 = (const qse_byte_t*)s1; + b2 = (const qse_byte_t*)s2; } while (n-- > 0) @@ -291,29 +291,29 @@ int ase_memcmp (const void* s1, const void* s2, ase_size_t n) return 0; #else - const ase_byte_t* b1; - const ase_byte_t* b2; + const qse_byte_t* b1; + const qse_byte_t* b2; - if (n >= ASE_SIZEOF(ase_size_t) && IS_BOTH_ALIGNED(s1,s2)) + if (n >= QSE_SIZEOF(qse_size_t) && IS_BOTH_ALIGNED(s1,s2)) { - const ase_size_t* u1 = (const ase_size_t*)s1; - const ase_size_t* u2 = (const ase_size_t*)s2; + const qse_size_t* u1 = (const qse_size_t*)s1; + const qse_size_t* u2 = (const qse_size_t*)s2; do { if (*u1 != *u2) break; u1++; u2++; - n -= ASE_SIZEOF(ase_size_t); + n -= QSE_SIZEOF(qse_size_t); } - while (n >= ASE_SIZEOF(ase_size_t)); + while (n >= QSE_SIZEOF(qse_size_t)); - b1 = (const ase_byte_t*)u1; - b2 = (const ase_byte_t*)u2; + b1 = (const qse_byte_t*)u1; + b2 = (const qse_byte_t*)u2; } else { - b1 = (const ase_byte_t*)s1; - b2 = (const ase_byte_t*)s2; + b1 = (const qse_byte_t*)s1; + b2 = (const qse_byte_t*)s2; } while (n-- > 0) @@ -326,55 +326,55 @@ int ase_memcmp (const void* s1, const void* s2, ase_size_t n) #endif } -void* ase_memchr (const void* s, int val, ase_size_t n) +void* qse_memchr (const void* s, int val, qse_size_t n) { - const ase_byte_t* x = (const ase_byte_t*)s; + const qse_byte_t* x = (const qse_byte_t*)s; while (n-- > 0) { - if (*x == (ase_byte_t)val) return (void*)x; + if (*x == (qse_byte_t)val) return (void*)x; x++; } - return ASE_NULL; + return QSE_NULL; } -void* ase_memrchr (const void* s, int val, ase_size_t n) +void* qse_memrchr (const void* s, int val, qse_size_t n) { - const ase_byte_t* x = (ase_byte_t*)s + n - 1; + const qse_byte_t* x = (qse_byte_t*)s + n - 1; while (n-- > 0) { - if (*x == (ase_byte_t)val) return (void*)x; + if (*x == (qse_byte_t)val) return (void*)x; x--; } - return ASE_NULL; + return QSE_NULL; } -void* ase_memmem (const void* hs, ase_size_t hl, const void* nd, ase_size_t nl) +void* qse_memmem (const void* hs, qse_size_t hl, const void* nd, qse_size_t nl) { if (nl <= hl) { - ase_size_t i; - const ase_byte_t* h = (const ase_byte_t*)hs; + qse_size_t i; + const qse_byte_t* h = (const qse_byte_t*)hs; for (i = hl - nl + 1; i > 0; i--) { - if (ase_memcmp(h, nd, nl) == 0) return (void*)h; + if (qse_memcmp(h, nd, nl) == 0) return (void*)h; h++; } } - return ASE_NULL; + return QSE_NULL; } -void* ase_memrmem (const void* hs, ase_size_t hl, const void* nd, ase_size_t nl) +void* qse_memrmem (const void* hs, qse_size_t hl, const void* nd, qse_size_t nl) { if (nl <= hl) { - ase_size_t i; - const ase_byte_t* h; + qse_size_t i; + const qse_byte_t* h; /* things are slightly more complacated * when searching backward */ @@ -382,31 +382,31 @@ void* ase_memrmem (const void* hs, ase_size_t hl, const void* nd, ase_size_t nl) { /* when the needle is empty, it returns * the pointer to the last byte of the haystack. - * this is because ase_memmem returns the pointer + * this is because qse_memmem returns the pointer * to the first byte of the haystack when the * needle is empty. but I'm not so sure if this * is really desirable behavior */ - h = (const ase_byte_t*)hs + hl - 1; + h = (const qse_byte_t*)hs + hl - 1; return (void*)h; } - h = (const ase_byte_t*)hs + hl - nl; + h = (const qse_byte_t*)hs + hl - nl; for (i = hl - nl + 1; i > 0; i--) { - if (ase_memcmp(h, nd, nl) == 0) return (void*)h; + if (qse_memcmp(h, nd, nl) == 0) return (void*)h; h--; } } - return ASE_NULL; + return QSE_NULL; } -static void* mmgr_alloc (void* data, ase_size_t n) +static void* mmgr_alloc (void* data, qse_size_t n) { return malloc (n); } -static void* mmgr_realloc (void* data, void* ptr, ase_size_t n) +static void* mmgr_realloc (void* data, void* ptr, qse_size_t n) { return realloc (ptr, n); } @@ -416,12 +416,12 @@ static void mmgr_free (void* data, void* ptr) free (ptr); } -static ase_mmgr_t mmgr = +static qse_mmgr_t mmgr = { mmgr_alloc, mmgr_realloc, mmgr_free, - ASE_NULL + QSE_NULL }; -ase_mmgr_t* ase_mmgr = &mmgr; +qse_mmgr_t* qse_mmgr = &mmgr; diff --git a/qse/lib/cmn/mem.h b/qse/lib/cmn/mem.h index 866256bd..39ac77d4 100644 --- a/qse/lib/cmn/mem.h +++ b/qse/lib/cmn/mem.h @@ -4,36 +4,36 @@ * {License} */ -#ifndef _ASE_LIB_CMN_MEM_H_ -#define _ASE_LIB_CMN_MEM_H_ +#ifndef _QSE_LIB_CMN_MEM_H_ +#define _QSE_LIB_CMN_MEM_H_ -#include +#include #ifdef USE_STDC #include -#define ASE_MEMCPY(dst,src,len) memcpy(dst,src,len) -#define ASE_MEMCMP(p1,p2,len) memcmp(p1,p2,len) -#define ASE_MEMSET(dst,val,len) memset(dst,val,len) -#define ASE_MEMBYTE(s,val,len) memchr(s,val,len) -#define ASE_MEMRBYTE(s,val,len) memrchr(s,val,len) -#define ASE_MEMMEM(hs,hl,nd,nl) memmem(hs,hl,nd,nl) -#define ASE_MEMRMEM(hs,hl,nd,nl) memrmem(hs,hl,nd,nl) +#define QSE_MEMCPY(dst,src,len) memcpy(dst,src,len) +#define QSE_MEMCMP(p1,p2,len) memcmp(p1,p2,len) +#define QSE_MEMSET(dst,val,len) memset(dst,val,len) +#define QSE_MEMBYTE(s,val,len) memchr(s,val,len) +#define QSE_MEMRBYTE(s,val,len) memrchr(s,val,len) +#define QSE_MEMMEM(hs,hl,nd,nl) memmem(hs,hl,nd,nl) +#define QSE_MEMRMEM(hs,hl,nd,nl) memrmem(hs,hl,nd,nl) #else -#define ASE_MEMCPY(dst,src,len) ase_memcpy(dst,src,len) -#define ASE_MEMCMP(p1,p2,len) ase_memcmp(p1,p2,len) -#define ASE_MEMSET(dst,val,len) ase_memset(dst,val,len) -#define ASE_MEMBYTE(s,val,len) ase_membyte(s,val,len) -#define ASE_MEMRBYTE(s,val,len) ase_memrbyte(s,val,len) -#define ASE_MEMMEM(hs,hl,nd,nl) ase_memmem(hs,hl,nd,nl) -#define ASE_MEMRMEM(hs,hl,nd,nl) ase_memrmem(hs,hl,nd,nl) +#define QSE_MEMCPY(dst,src,len) qse_memcpy(dst,src,len) +#define QSE_MEMCMP(p1,p2,len) qse_memcmp(p1,p2,len) +#define QSE_MEMSET(dst,val,len) qse_memset(dst,val,len) +#define QSE_MEMBYTE(s,val,len) qse_membyte(s,val,len) +#define QSE_MEMRBYTE(s,val,len) qse_memrbyte(s,val,len) +#define QSE_MEMMEM(hs,hl,nd,nl) qse_memmem(hs,hl,nd,nl) +#define QSE_MEMRMEM(hs,hl,nd,nl) qse_memrmem(hs,hl,nd,nl) #endif -#define ASE_MALLOC(mmgr,size) ASE_MMGR_ALLOC(mmgr,size) -#define ASE_REALLOC(mmgr,ptr,size) ASE_MMGR_REALLOC(mmgr,ptr,size) -#define ASE_FREE(mmgr,ptr) ASE_MMGR_FREE(mmgr,ptr) +#define QSE_MALLOC(mmgr,size) QSE_MMGR_ALLOC(mmgr,size) +#define QSE_REALLOC(mmgr,ptr,size) QSE_MMGR_REALLOC(mmgr,ptr,size) +#define QSE_FREE(mmgr,ptr) QSE_MMGR_FREE(mmgr,ptr) #endif diff --git a/qse/lib/cmn/msw-bcc.mak b/qse/lib/cmn/msw-bcc.mak deleted file mode 100644 index ac88b21e..00000000 --- a/qse/lib/cmn/msw-bcc.mak +++ /dev/null @@ -1,75 +0,0 @@ -NAME = asecmn - -!ifndef MODE -MODE = release -!endif - -CC = bcc32 -LD = ilink32 -AR = tlib - -CFLAGS = -WM -WU -RT- -w -q -I..\.. - -!IF "$(MODE)" == "debug" -CFLAGS = $(CFLAGS) -D_DEBUG -DDEBUG -!ELSEIF "$(MODE)" == "release" -CFLAGS = $(CFLAGS) -DNDEBUG -O2 -!ELSE -CFLAGS = $(CFLAGS) -!ENDIF - -OUT_DIR = ..\$(MODE)\lib -OUT_FILE_LIB = $(OUT_DIR)\$(NAME).lib - -TMP_DIR = $(MODE) - -OBJ_FILES_LIB = \ - $(TMP_DIR)\mem.obj \ - $(TMP_DIR)\str_bas.obj \ - $(TMP_DIR)\str_cnv.obj \ - $(TMP_DIR)\str_dyn.obj \ - $(TMP_DIR)\map.obj \ - $(TMP_DIR)\rex.obj \ - $(TMP_DIR)\misc.obj - -all: lib - -lib: $(TMP_DIR) $(OUT_DIR) $(OUT_FILE_LIB) - -$(OUT_FILE_LIB): $(OBJ_FILES_LIB) - $(AR) $(OUT_FILE_LIB) @&&! -+-$(**: = &^ -+-) -! - -$(TMP_DIR)\mem.obj: mem.c - $(CC) $(CFLAGS) -o$@ -c mem.c - -$(TMP_DIR)\str_bas.obj: str_bas.c - $(CC) $(CFLAGS) -o$@ -c str_bas.c - -$(TMP_DIR)\str_cnv.obj: str_cnv.c - $(CC) $(CFLAGS) -o$@ -c str_cnv.c - -$(TMP_DIR)\str_dyn.obj: str_dyn.c - $(CC) $(CFLAGS) -o$@ -c str_dyn.c - -$(TMP_DIR)\map.obj: map.c - $(CC) $(CFLAGS) -o$@ -c map.c - -$(TMP_DIR)\rex.obj: rex.c - $(CC) $(CFLAGS) -o$@ -c rex.c - -$(TMP_DIR)\misc.obj: misc.c - $(CC) $(CFLAGS) -o$@ -c misc.c - -$(OUT_DIR): - -md $(OUT_DIR) - -$(TMP_DIR): - -md $(TMP_DIR) - -clean: - -del $(OUT_FILE_LIB) - -del $(OBJ_FILES_LIB) - diff --git a/qse/lib/cmn/msw-cl.mak b/qse/lib/cmn/msw-cl.mak deleted file mode 100644 index dcfc3dc8..00000000 --- a/qse/lib/cmn/msw-cl.mak +++ /dev/null @@ -1,71 +0,0 @@ -NAME = asecmn -MODE = release - -CC = cl -LD = link -AR = link - -CFLAGS = /nologo /W3 -I..\.. - -!IF "$(MODE)" == "debug" -CFLAGS = $(CFLAGS) -D_DEBUG -DDEBUG /MTd /Zi -!ELSEIF "$(MODE)" == "release" -CFLAGS = $(CFLAGS) -DNDEBUG /MT /O2 -!ELSE -CFLAGS = $(CFLAGS) /MT -!ENDIF - -OUT_DIR = ..\$(MODE)\lib -OUT_FILE_LIB = $(OUT_DIR)\$(NAME).lib - -TMP_DIR = $(MODE) - -OBJ_FILES_LIB = \ - $(TMP_DIR)\mem.obj \ - $(TMP_DIR)\str_bas.obj \ - $(TMP_DIR)\str_cnv.obj \ - $(TMP_DIR)\str_dyn.obj \ - $(TMP_DIR)\map.obj \ - $(TMP_DIR)\rex.obj \ - $(TMP_DIR)\misc.obj - -all: lib - -lib: $(OUT_FILE_LIB) - -$(OUT_FILE_LIB): $(TMP_DIR) $(OUT_DIR) $(OBJ_FILES_LIB) - $(AR) /lib @<< -/nologo /out:$(OUT_FILE_LIB) $(OBJ_FILES_LIB) -<< - -$(TMP_DIR)\mem.obj: mem.c - $(CC) $(CFLAGS) /Fo$@ /c mem.c - -$(TMP_DIR)\str_bas.obj: str_bas.c - $(CC) $(CFLAGS) /Fo$@ /c str_bas.c - -$(TMP_DIR)\str_cnv.obj: str_cnv.c - $(CC) $(CFLAGS) /Fo$@ /c str_cnv.c - -$(TMP_DIR)\str_dyn.obj: str_dyn.c - $(CC) $(CFLAGS) /Fo$@ /c str_dyn.c - -$(TMP_DIR)\map.obj: map.c - $(CC) $(CFLAGS) /Fo$@ /c map.c - -$(TMP_DIR)\rex.obj: rex.c - $(CC) $(CFLAGS) /Fo$@ /c rex.c - -$(TMP_DIR)\misc.obj: misc.c - $(CC) $(CFLAGS) /Fo$@ /c misc.c - -$(OUT_DIR): - -md $(OUT_DIR) - -$(TMP_DIR): - -md $(TMP_DIR) - -clean: - -del $(OUT_FILE_LIB) - -del $(OBJ_FILES_LIB) - diff --git a/qse/lib/cmn/msw-dmc.mak b/qse/lib/cmn/msw-dmc.mak deleted file mode 100644 index e51f5fec..00000000 --- a/qse/lib/cmn/msw-dmc.mak +++ /dev/null @@ -1,62 +0,0 @@ -# -# You may override the value of MODE by specifying from the command-line -# make -f msw-dmc.mak MODE=debug -# - -NAME = asecmn -MODE = release - -CC = dmc -AR = lib - -CFLAGS = -mn -I..\.. -DUNICODE -D_UNICODE - -OUT_DIR = ..\$(MODE)\lib -OUT_FILE_LIB = $(OUT_DIR)\$(NAME).lib - -TMP_DIR = $(MODE) - -OBJ_FILES_LIB = \ - $(TMP_DIR)\mem.obj \ - $(TMP_DIR)\str_bas.obj \ - $(TMP_DIR)\str_cnv.obj \ - $(TMP_DIR)\str_dyn.obj \ - $(TMP_DIR)\map.obj \ - $(TMP_DIR)\rex.obj \ - $(TMP_DIR)\misc.obj - -all: $(OUT_FILE_LIB) - -$(OUT_FILE_LIB): $(TMP_DIR) $(OUT_DIR) $(OBJ_FILES_LIB) - $(AR) -c $(OUT_FILE_LIB) $(OBJ_FILES_LIB) - -$(TMP_DIR)\mem.obj: mem.c - $(CC) $(CFLAGS) -o$@ -c mem.c - -$(TMP_DIR)\str_bas.obj: str_bas.c - $(CC) $(CFLAGS) -o$@ -c str_bas.c - -$(TMP_DIR)\str_cnv.obj: str_cnv.c - $(CC) $(CFLAGS) -o$@ -c str_cnv.c - -$(TMP_DIR)\str_dyn.obj: str_dyn.c - $(CC) $(CFLAGS) -o$@ -c str_dyn.c - -$(TMP_DIR)\map.obj: map.c - $(CC) $(CFLAGS) -o$@ -c map.c - -$(TMP_DIR)\rex.obj: rex.c - $(CC) $(CFLAGS) -o$@ -c rex.c - -$(TMP_DIR)\misc.obj: misc.c - $(CC) $(CFLAGS) -o$@ -c misc.c - -$(OUT_DIR): - md $(OUT_DIR) - -$(TMP_DIR): - md $(TMP_DIR) - -clean: - del $(OUT_FILE_LIB) $(OBJ_FILES_LIB) - diff --git a/qse/lib/cmn/opt.c b/qse/lib/cmn/opt.c index fa0bfd12..7ae9e36b 100644 --- a/qse/lib/cmn/opt.c +++ b/qse/lib/cmn/opt.c @@ -4,11 +4,11 @@ * {License} */ -#include -#include +#include +#include /* - * ase_getopt is based on BSD getopt. + * qse_getopt is based on BSD getopt. * -------------------------------------------------------------------------- * * Copyright (c) 1987-2002 The Regents of the University of California. @@ -45,55 +45,55 @@ #include #include -#define BADCH ASE_T('?') -#define BADARG ASE_T(':') -#define EMSG ASE_T("") +#define BADCH QSE_T('?') +#define BADARG QSE_T(':') +#define EMSG QSE_T("") -ase_cint_t ase_getopt (int argc, ase_char_t* const* argv, ase_opt_t* opt) +qse_cint_t qse_getopt (int argc, qse_char_t* const* argv, qse_opt_t* opt) { - ase_char_t* oli; /* option letter list index */ + qse_char_t* oli; /* option letter list index */ int dbldash = 0; - opt->arg = ASE_NULL; - opt->lngopt = ASE_NULL; + opt->arg = QSE_NULL; + opt->lngopt = QSE_NULL; - if (opt->cur == ASE_NULL) + if (opt->cur == QSE_NULL) { opt->cur = EMSG; opt->ind = 1; } - if (*opt->cur == ASE_T('\0')) + if (*opt->cur == QSE_T('\0')) { /* update scanning pointer */ - if (opt->ind >= argc || *(opt->cur = argv[opt->ind]) != ASE_T('-')) + if (opt->ind >= argc || *(opt->cur = argv[opt->ind]) != QSE_T('-')) { /* All arguments have been processed or the current * argument doesn't start with a dash */ opt->cur = EMSG; - return ASE_CHAR_EOF; + return QSE_CHAR_EOF; } opt->cur++; #if 0 - if (*opt->cur == ASE_T('\0')) + if (*opt->cur == QSE_T('\0')) { /* - */ opt->ind++; opt->cur = EMSG; - return ASE_CHAR_EOF; + return QSE_CHAR_EOF; } #endif - if (*opt->cur == ASE_T('-')) + if (*opt->cur == QSE_T('-')) { - if (*++opt->cur == ASE_T('\0')) + if (*++opt->cur == QSE_T('\0')) { /* -- */ opt->ind++; opt->cur = EMSG; - return ASE_CHAR_EOF; + return QSE_CHAR_EOF; } else { @@ -102,31 +102,31 @@ ase_cint_t ase_getopt (int argc, ase_char_t* const* argv, ase_opt_t* opt) } } - if (dbldash && opt->lng != ASE_NULL) + if (dbldash && opt->lng != QSE_NULL) { - const ase_opt_lng_t* o; - ase_char_t* end = opt->cur; + const qse_opt_lng_t* o; + qse_char_t* end = opt->cur; - while (*end != ASE_T('\0') && *end != ASE_T('=')) end++; + while (*end != QSE_T('\0') && *end != QSE_T('=')) end++; - for (o = opt->lng; o->str != ASE_NULL; o++) + for (o = opt->lng; o->str != QSE_NULL; o++) { - const ase_char_t* str = o->str; - if (*str == ASE_T(':')) str++; + const qse_char_t* str = o->str; + if (*str == QSE_T(':')) str++; - if (ase_strxcmp (opt->cur, end-opt->cur, str) != 0) continue; + if (qse_strxcmp (opt->cur, end-opt->cur, str) != 0) continue; /* match */ opt->cur = EMSG; opt->lngopt = o->str; - if (*end == ASE_T('=')) opt->arg = end + 1; + if (*end == QSE_T('=')) opt->arg = end + 1; - if (*o->str != ASE_T(':')) + if (*o->str != QSE_T(':')) { /* should not have an option argument */ - if (opt->arg != ASE_NULL) return BADARG; + if (opt->arg != QSE_NULL) return BADARG; } - else if (opt->arg == ASE_NULL) + else if (opt->arg == QSE_NULL) { /* Check if it has a remaining argument * available */ @@ -140,33 +140,33 @@ ase_cint_t ase_getopt (int argc, ase_char_t* const* argv, ase_opt_t* opt) return o->val; } - /*if (*end == ASE_T('=')) *end = ASE_T('\0');*/ + /*if (*end == QSE_T('=')) *end = QSE_T('\0');*/ opt->lngopt = opt->cur; return BADCH; } - if ((opt->opt = *opt->cur++) == ASE_T(':') || - (oli = ase_strchr(opt->str, opt->opt)) == ASE_NULL) + if ((opt->opt = *opt->cur++) == QSE_T(':') || + (oli = qse_strchr(opt->str, opt->opt)) == QSE_NULL) { /* * if the user didn't specify '-' as an option, * assume it means EOF. */ - if (opt->opt == (int)'-') return ASE_CHAR_EOF; - if (*opt->cur == ASE_T('\0')) ++opt->ind; + if (opt->opt == (int)'-') return QSE_CHAR_EOF; + if (*opt->cur == QSE_T('\0')) ++opt->ind; return BADCH; } - if (*++oli != ASE_T(':')) + if (*++oli != QSE_T(':')) { /* don't need argument */ - if (*opt->cur == ASE_T('\0')) opt->ind++; + if (*opt->cur == QSE_T('\0')) opt->ind++; } else { /* need an argument */ - if (*opt->cur != ASE_T('\0')) + if (*opt->cur != QSE_T('\0')) { /* no white space */ opt->arg = opt->cur; @@ -175,7 +175,7 @@ ase_cint_t ase_getopt (int argc, ase_char_t* const* argv, ase_opt_t* opt) { /* no arg */ opt->cur = EMSG; - /*if (*opt->str == ASE_T(':'))*/ return BADARG; + /*if (*opt->str == QSE_T(':'))*/ return BADARG; /*return BADCH;*/ } else diff --git a/qse/lib/cmn/rex.c b/qse/lib/cmn/rex.c index a9bf6a7c..cd74eccf 100644 --- a/qse/lib/cmn/rex.c +++ b/qse/lib/cmn/rex.c @@ -4,13 +4,13 @@ * {License} */ -#include +#include #include "mem.h" #include "chr.h" #ifdef DEBUG_REX -#include -#define DPUTS(x) ase_sio_puts(&ase_sio_err,x) +#include +#define DPUTS(x) qse_sio_puts(&qse_sio_err,x) #endif enum @@ -54,7 +54,7 @@ enum #define DEF_CODE_CAPA 512 #define BOUND_MIN 0 -#define BOUND_MAX (ASE_TYPE_MAX(ase_size_t)) +#define BOUND_MAX (QSE_TYPE_MAX(qse_size_t)) typedef struct builder_t builder_t; typedef struct matcher_t matcher_t; @@ -67,32 +67,32 @@ typedef struct cshdr_t cshdr_t; struct builder_t { - ase_mmgr_t* mmgr; + qse_mmgr_t* mmgr; struct { - const ase_char_t* ptr; - const ase_char_t* end; - const ase_char_t* curp; + const qse_char_t* ptr; + const qse_char_t* end; + const qse_char_t* curp; struct { int type; - ase_char_t value; - ase_bool_t escaped; + qse_char_t value; + qse_bool_t escaped; } curc; } ptn; struct { - ase_byte_t* buf; - ase_size_t size; - ase_size_t capa; + qse_byte_t* buf; + qse_size_t size; + qse_size_t capa; } code; struct { - ase_size_t max; - ase_size_t cur; + qse_size_t max; + qse_size_t cur; } depth; int errnum; @@ -100,22 +100,22 @@ struct builder_t struct matcher_t { - ase_mmgr_t* mmgr; - ase_ccls_t* ccls; + qse_mmgr_t* mmgr; + qse_ccls_t* ccls; struct { struct { - const ase_char_t* ptr; - const ase_char_t* end; + const qse_char_t* ptr; + const qse_char_t* end; } str; } match; struct { - ase_size_t max; - ase_size_t cur; + qse_size_t max; + qse_size_t cur; } depth; int ignorecase; @@ -124,47 +124,47 @@ struct matcher_t struct match_t { - const ase_char_t* match_ptr; + const qse_char_t* match_ptr; - ase_bool_t matched; - ase_size_t match_len; + qse_bool_t matched; + qse_size_t match_len; - const ase_byte_t* branch; - const ase_byte_t* branch_end; + const qse_byte_t* branch; + const qse_byte_t* branch_end; }; -#include +#include -ASE_BEGIN_PACKED_STRUCT (code_t) - /*ase_byte_t cmd;*/ +QSE_BEGIN_PACKED_STRUCT (code_t) + /*qse_byte_t cmd;*/ short cmd; short negate; /* only for CMD_CHARSET */ - ase_size_t lbound; - ase_size_t ubound; -ASE_END_PACKED_STRUCT () + qse_size_t lbound; + qse_size_t ubound; +QSE_END_PACKED_STRUCT () /* compiled regular expression header */ -ASE_BEGIN_PACKED_STRUCT (rhdr_t) - ase_size_t nb; /* number of branches */ - ase_size_t el; /* expression length in bytes */ -ASE_END_PACKED_STRUCT () +QSE_BEGIN_PACKED_STRUCT (rhdr_t) + qse_size_t nb; /* number of branches */ + qse_size_t el; /* expression length in bytes */ +QSE_END_PACKED_STRUCT () /* branch header */ -ASE_BEGIN_PACKED_STRUCT (bhdr_t) - ase_size_t na; /* number of atoms */ - ase_size_t bl; /* branch length in bytes */ -ASE_END_PACKED_STRUCT () +QSE_BEGIN_PACKED_STRUCT (bhdr_t) + qse_size_t na; /* number of atoms */ + qse_size_t bl; /* branch length in bytes */ +QSE_END_PACKED_STRUCT () /* character set header */ -ASE_BEGIN_PACKED_STRUCT (cshdr_t) - ase_size_t csc; /* count */ - ase_size_t csl; /* length */ -ASE_END_PACKED_STRUCT () +QSE_BEGIN_PACKED_STRUCT (cshdr_t) + qse_size_t csc; /* count */ + qse_size_t csl; /* length */ +QSE_END_PACKED_STRUCT () -#include +#include -typedef const ase_byte_t* (*atom_matcher_t) ( - matcher_t* matcher, const ase_byte_t* base, match_t* mat); +typedef const qse_byte_t* (*atom_matcher_t) ( + matcher_t* matcher, const qse_byte_t* base, match_t* mat); #define NCHARS_REMAINING(rex) ((rex)->ptn.end - (rex)->ptn.curp) @@ -180,113 +180,113 @@ static int build_branch (builder_t* rex); static int build_atom (builder_t* rex); static int build_charset (builder_t* rex, code_t* cmd); static int build_occurrences (builder_t* rex, code_t* cmd); -static int build_cclass (builder_t* rex, ase_char_t* cc); +static int build_cclass (builder_t* rex, qse_char_t* cc); static int build_range (builder_t* rex, code_t* cmd); static int next_char (builder_t* rex, int level); -static int add_code (builder_t* rex, void* data, ase_size_t len); +static int add_code (builder_t* rex, void* data, qse_size_t len); -static ase_bool_t __begin_with ( - const ase_char_t* str, ase_size_t len, const ase_char_t* what); +static qse_bool_t __begin_with ( + const qse_char_t* str, qse_size_t len, const qse_char_t* what); -static const ase_byte_t* match_pattern ( - matcher_t* matcher, const ase_byte_t* base, match_t* mat); -static const ase_byte_t* match_branch ( - matcher_t* matcher, const ase_byte_t* base, match_t* mat); -static const ase_byte_t* match_branch_body ( - matcher_t* matcher, const ase_byte_t* base, match_t* mat); -static const ase_byte_t* match_branch_body0 ( - matcher_t* matcher, const ase_byte_t* base, match_t* mat); -static const ase_byte_t* match_atom ( - matcher_t* matcher, const ase_byte_t* base, match_t* mat); -static const ase_byte_t* match_bol ( - matcher_t* matcher, const ase_byte_t* base, match_t* mat); -static const ase_byte_t* match_eol ( - matcher_t* matcher, const ase_byte_t* base, match_t* mat); -static const ase_byte_t* match_any_char ( - matcher_t* matcher, const ase_byte_t* base, match_t* mat); -static const ase_byte_t* match_ord_char ( - matcher_t* matcher, const ase_byte_t* base, match_t* mat); -static const ase_byte_t* match_charset ( - matcher_t* matcher, const ase_byte_t* base, match_t* mat); -static const ase_byte_t* match_group ( - matcher_t* matcher, const ase_byte_t* base, match_t* mat); +static const qse_byte_t* match_pattern ( + matcher_t* matcher, const qse_byte_t* base, match_t* mat); +static const qse_byte_t* match_branch ( + matcher_t* matcher, const qse_byte_t* base, match_t* mat); +static const qse_byte_t* match_branch_body ( + matcher_t* matcher, const qse_byte_t* base, match_t* mat); +static const qse_byte_t* match_branch_body0 ( + matcher_t* matcher, const qse_byte_t* base, match_t* mat); +static const qse_byte_t* match_atom ( + matcher_t* matcher, const qse_byte_t* base, match_t* mat); +static const qse_byte_t* match_bol ( + matcher_t* matcher, const qse_byte_t* base, match_t* mat); +static const qse_byte_t* match_eol ( + matcher_t* matcher, const qse_byte_t* base, match_t* mat); +static const qse_byte_t* match_any_char ( + matcher_t* matcher, const qse_byte_t* base, match_t* mat); +static const qse_byte_t* match_ord_char ( + matcher_t* matcher, const qse_byte_t* base, match_t* mat); +static const qse_byte_t* match_charset ( + matcher_t* matcher, const qse_byte_t* base, match_t* mat); +static const qse_byte_t* match_group ( + matcher_t* matcher, const qse_byte_t* base, match_t* mat); -static const ase_byte_t* match_occurrences ( - matcher_t* matcher, ase_size_t si, const ase_byte_t* p, - ase_size_t lbound, ase_size_t ubound, match_t* mat); +static const qse_byte_t* match_occurrences ( + matcher_t* matcher, qse_size_t si, const qse_byte_t* p, + qse_size_t lbound, qse_size_t ubound, match_t* mat); -static ase_bool_t __test_charset ( - matcher_t* matcher, const ase_byte_t* p, ase_size_t csc, ase_char_t c); +static qse_bool_t __test_charset ( + matcher_t* matcher, const qse_byte_t* p, qse_size_t csc, qse_char_t c); -static ase_bool_t cc_isalnum (ase_ccls_t* ccls, ase_char_t c); -static ase_bool_t cc_isalpha (ase_ccls_t* ccls, ase_char_t c); -static ase_bool_t cc_isblank (ase_ccls_t* ccls, ase_char_t c); -static ase_bool_t cc_iscntrl (ase_ccls_t* ccls, ase_char_t c); -static ase_bool_t cc_isdigit (ase_ccls_t* ccls, ase_char_t c); -static ase_bool_t cc_isgraph (ase_ccls_t* ccls, ase_char_t c); -static ase_bool_t cc_islower (ase_ccls_t* ccls, ase_char_t c); -static ase_bool_t cc_isprint (ase_ccls_t* ccls, ase_char_t c); -static ase_bool_t cc_ispunct (ase_ccls_t* ccls, ase_char_t c); -static ase_bool_t cc_isspace (ase_ccls_t* ccls, ase_char_t c); -static ase_bool_t cc_isupper (ase_ccls_t* ccls, ase_char_t c); -static ase_bool_t cc_isxdigit (ase_ccls_t* ccls, ase_char_t c); +static qse_bool_t cc_isalnum (qse_ccls_t* ccls, qse_char_t c); +static qse_bool_t cc_isalpha (qse_ccls_t* ccls, qse_char_t c); +static qse_bool_t cc_isblank (qse_ccls_t* ccls, qse_char_t c); +static qse_bool_t cc_iscntrl (qse_ccls_t* ccls, qse_char_t c); +static qse_bool_t cc_isdigit (qse_ccls_t* ccls, qse_char_t c); +static qse_bool_t cc_isgraph (qse_ccls_t* ccls, qse_char_t c); +static qse_bool_t cc_islower (qse_ccls_t* ccls, qse_char_t c); +static qse_bool_t cc_isprint (qse_ccls_t* ccls, qse_char_t c); +static qse_bool_t cc_ispunct (qse_ccls_t* ccls, qse_char_t c); +static qse_bool_t cc_isspace (qse_ccls_t* ccls, qse_char_t c); +static qse_bool_t cc_isupper (qse_ccls_t* ccls, qse_char_t c); +static qse_bool_t cc_isxdigit (qse_ccls_t* ccls, qse_char_t c); #if 0 XXX -static const ase_byte_t* __print_pattern (ase_awk_t* awk, const ase_byte_t* p); -static const ase_byte_t* __print_branch (ase_awk_t* awk, const ase_byte_t* p); -static const ase_byte_t* __print_atom (ase_awk_t* awk, const ase_byte_t* p); +static const qse_byte_t* __print_pattern (qse_awk_t* awk, const qse_byte_t* p); +static const qse_byte_t* __print_branch (qse_awk_t* awk, const qse_byte_t* p); +static const qse_byte_t* __print_atom (qse_awk_t* awk, const qse_byte_t* p); #endif struct __char_class_t { - const ase_char_t* name; - ase_size_t name_len; - ase_bool_t (*func) (ase_ccls_t* ccls, ase_char_t c); + const qse_char_t* name; + qse_size_t name_len; + qse_bool_t (*func) (qse_ccls_t* ccls, qse_char_t c); }; static struct __char_class_t __char_class[] = { - { ASE_T("alnum"), 5, cc_isalnum }, - { ASE_T("alpha"), 5, cc_isalpha }, - { ASE_T("blank"), 5, cc_isblank }, - { ASE_T("cntrl"), 5, cc_iscntrl }, - { ASE_T("digit"), 5, cc_isdigit }, - { ASE_T("graph"), 5, cc_isgraph }, - { ASE_T("lower"), 5, cc_islower }, - { ASE_T("print"), 5, cc_isprint }, - { ASE_T("punct"), 5, cc_ispunct }, - { ASE_T("space"), 5, cc_isspace }, - { ASE_T("upper"), 5, cc_isupper }, - { ASE_T("xdigit"), 6, cc_isxdigit }, + { QSE_T("alnum"), 5, cc_isalnum }, + { QSE_T("alpha"), 5, cc_isalpha }, + { QSE_T("blank"), 5, cc_isblank }, + { QSE_T("cntrl"), 5, cc_iscntrl }, + { QSE_T("digit"), 5, cc_isdigit }, + { QSE_T("graph"), 5, cc_isgraph }, + { QSE_T("lower"), 5, cc_islower }, + { QSE_T("print"), 5, cc_isprint }, + { QSE_T("punct"), 5, cc_ispunct }, + { QSE_T("space"), 5, cc_isspace }, + { QSE_T("upper"), 5, cc_isupper }, + { QSE_T("xdigit"), 6, cc_isxdigit }, /* - { ASE_T("arabic"), 6, cc_isarabic }, - { ASE_T("chinese"), 7, cc_ischinese }, - { ASE_T("english"), 7, cc_isenglish }, - { ASE_T("japanese"), 8, cc_isjapanese }, - { ASE_T("korean"), 6, cc_iskorean }, - { ASE_T("thai"), 4, cc_isthai }, + { QSE_T("arabic"), 6, cc_isarabic }, + { QSE_T("chinese"), 7, cc_ischinese }, + { QSE_T("english"), 7, cc_isenglish }, + { QSE_T("japanese"), 8, cc_isjapanese }, + { QSE_T("korean"), 6, cc_iskorean }, + { QSE_T("thai"), 4, cc_isthai }, */ - { ASE_NULL, 0, ASE_NULL } + { QSE_NULL, 0, QSE_NULL } }; -void* ase_buildrex ( - ase_mmgr_t* mmgr, ase_size_t depth, - const ase_char_t* ptn, ase_size_t len, int* errnum) +void* qse_buildrex ( + qse_mmgr_t* mmgr, qse_size_t depth, + const qse_char_t* ptn, qse_size_t len, int* errnum) { builder_t builder; builder.mmgr = mmgr; builder.code.capa = DEF_CODE_CAPA; builder.code.size = 0; - builder.code.buf = (ase_byte_t*) - ASE_MALLOC (builder.mmgr, builder.code.capa); - if (builder.code.buf == ASE_NULL) + builder.code.buf = (qse_byte_t*) + QSE_MALLOC (builder.mmgr, builder.code.capa); + if (builder.code.buf == QSE_NULL) { - *errnum = ASE_REX_ENOMEM; - return ASE_NULL; + *errnum = QSE_REX_ENOMEM; + return QSE_NULL; } builder.ptn.ptr = ptn; @@ -294,58 +294,58 @@ void* ase_buildrex ( builder.ptn.curp = builder.ptn.ptr; builder.ptn.curc.type = CT_EOF; - builder.ptn.curc.value = ASE_T('\0'); - builder.ptn.curc.escaped = ASE_FALSE; + builder.ptn.curc.value = QSE_T('\0'); + builder.ptn.curc.escaped = QSE_FALSE; builder.depth.max = depth; builder.depth.cur = 0; if (next_char (&builder, LEVEL_TOP) == -1) { - if (errnum != ASE_NULL) *errnum = builder.errnum; - ASE_FREE (builder.mmgr, builder.code.buf); - return ASE_NULL; + if (errnum != QSE_NULL) *errnum = builder.errnum; + QSE_FREE (builder.mmgr, builder.code.buf); + return QSE_NULL; } if (build_pattern (&builder) == -1) { - if (errnum != ASE_NULL) *errnum = builder.errnum; - ASE_FREE (builder.mmgr, builder.code.buf); - return ASE_NULL; + if (errnum != QSE_NULL) *errnum = builder.errnum; + QSE_FREE (builder.mmgr, builder.code.buf); + return QSE_NULL; } if (builder.ptn.curc.type != CT_EOF) { - if (errnum != ASE_NULL) + if (errnum != QSE_NULL) { if (builder.ptn.curc.type == CT_SPECIAL && - builder.ptn.curc.value == ASE_T(')')) + builder.ptn.curc.value == QSE_T(')')) { - *errnum = ASE_REX_EUNBALPAR; + *errnum = QSE_REX_EUNBALPAR; } else { - *errnum = ASE_REX_EGARBAGE; + *errnum = QSE_REX_EGARBAGE; } } - ASE_FREE (builder.mmgr, builder.code.buf); - return ASE_NULL; + QSE_FREE (builder.mmgr, builder.code.buf); + return QSE_NULL; } return builder.code.buf; } -int ase_matchrex ( - ase_mmgr_t* mmgr, ase_ccls_t* ccls, ase_size_t depth, +int qse_matchrex ( + qse_mmgr_t* mmgr, qse_ccls_t* ccls, qse_size_t depth, void* code, int option, - const ase_char_t* str, ase_size_t len, - const ase_char_t** match_ptr, ase_size_t* match_len, int* errnum) + const qse_char_t* str, qse_size_t len, + const qse_char_t** match_ptr, qse_size_t* match_len, int* errnum) { matcher_t matcher; match_t mat; - ase_size_t offset = 0; - /*const ase_char_t* match_ptr_zero = ASE_NULL;*/ + qse_size_t offset = 0; + /*const qse_char_t* match_ptr_zero = QSE_NULL;*/ matcher.mmgr = mmgr; matcher.ccls = ccls; @@ -356,18 +356,18 @@ int ase_matchrex ( matcher.depth.max = depth; matcher.depth.cur = 0; - matcher.ignorecase = (option & ASE_REX_IGNORECASE)? 1: 0; + matcher.ignorecase = (option & QSE_REX_IGNORECASE)? 1: 0; - mat.matched = ASE_FALSE; + mat.matched = QSE_FALSE; /* TODO: should it allow an offset here??? */ mat.match_ptr = str + offset; /*while (mat.match_ptr < matcher.match.str.end)*/ while (mat.match_ptr <= matcher.match.str.end) { - if (match_pattern (&matcher, code, &mat) == ASE_NULL) + if (match_pattern (&matcher, code, &mat) == QSE_NULL) { - if (errnum != ASE_NULL) *errnum = matcher.errnum; + if (errnum != QSE_NULL) *errnum = matcher.errnum; return -1; } @@ -376,17 +376,17 @@ int ase_matchrex ( /* if (mat.match_len == 0) { - if (match_ptr_zero == ASE_NULL) + if (match_ptr_zero == QSE_NULL) match_ptr_zero = mat.match_ptr; mat.match_ptr++; continue; } */ - if (match_ptr != ASE_NULL) *match_ptr = mat.match_ptr; - if (match_len != ASE_NULL) *match_len = mat.match_len; + if (match_ptr != QSE_NULL) *match_ptr = mat.match_ptr; + if (match_len != QSE_NULL) *match_len = mat.match_len; - /*match_ptr_zero = ASE_NULL;*/ + /*match_ptr_zero = QSE_NULL;*/ break; } @@ -394,10 +394,10 @@ int ase_matchrex ( } /* - if (match_ptr_zero != ASE_NULL) + if (match_ptr_zero != QSE_NULL) { - if (match_ptr != ASE_NULL) *match_ptr = match_ptr_zero; - if (match_len != ASE_NULL) *match_len = 0; + if (match_ptr != QSE_NULL) *match_ptr = match_ptr_zero; + if (match_len != QSE_NULL) *match_len = 0; return 1; } */ @@ -405,16 +405,16 @@ int ase_matchrex ( return (mat.matched)? 1: 0; } -void ase_freerex (ase_mmgr_t* mmgr, void* code) +void qse_freerex (qse_mmgr_t* mmgr, void* code) { - ASE_ASSERT (code != ASE_NULL); - ASE_FREE (mmgr, code); + QSE_ASSERT (code != QSE_NULL); + QSE_FREE (mmgr, code); } -ase_bool_t ase_isemptyrex (void* code) +qse_bool_t qse_isemptyrex (void* code) { rhdr_t* rhdr = (rhdr_t*) code; - ASE_ASSERT (rhdr != ASE_NULL); + QSE_ASSERT (rhdr != QSE_NULL); /* an empty regular expression look like: * | expression | @@ -422,7 +422,7 @@ ase_bool_t ase_isemptyrex (void* code) * | | branch header | * | NB(1) | EL(16) | NA(1) | BL(8) | */ return (rhdr->nb == 1 && - rhdr->el == ASE_SIZEOF(ase_size_t)*4)? ASE_TRUE: ASE_FALSE; + rhdr->el == QSE_SIZEOF(qse_size_t)*4)? QSE_TRUE: QSE_FALSE; } static int build_pattern (builder_t* builder) @@ -431,7 +431,7 @@ static int build_pattern (builder_t* builder) if (builder->depth.max > 0 && builder->depth.cur >= builder->depth.max) { - builder->errnum = ASE_REX_ERECUR; + builder->errnum = QSE_REX_ERECUR; return -1; } @@ -444,9 +444,9 @@ static int build_pattern (builder_t* builder) static int build_pattern0 (builder_t* builder) { - ase_size_t zero = 0; - ase_size_t old_size; - ase_size_t pos_nb; + qse_size_t zero = 0; + qse_size_t old_size; + qse_size_t pos_nb; rhdr_t* rhdr; int n; @@ -454,8 +454,8 @@ static int build_pattern0 (builder_t* builder) /* secure space for header and set the header fields to zero */ pos_nb = builder->code.size; - ADD_CODE (builder, &zero, ASE_SIZEOF(zero)); - ADD_CODE (builder, &zero, ASE_SIZEOF(zero)); + ADD_CODE (builder, &zero, QSE_SIZEOF(zero)); + ADD_CODE (builder, &zero, QSE_SIZEOF(zero)); /* handle the first branch */ n = build_branch (builder); @@ -471,7 +471,7 @@ static int build_pattern0 (builder_t* builder) /* handle subsequent branches if any */ while (builder->ptn.curc.type == CT_SPECIAL && - builder->ptn.curc.value == ASE_T('|')) + builder->ptn.curc.value == QSE_T('|')) { NEXT_CHAR (builder, LEVEL_TOP); @@ -498,17 +498,17 @@ static int build_pattern0 (builder_t* builder) static int build_branch (builder_t* builder) { int n; - ase_size_t zero = 0; - ase_size_t old_size; - ase_size_t pos_na; + qse_size_t zero = 0; + qse_size_t old_size; + qse_size_t pos_na; code_t* cmd; bhdr_t* bhdr; old_size = builder->code.size; pos_na = builder->code.size; - ADD_CODE (builder, &zero, ASE_SIZEOF(zero)); - ADD_CODE (builder, &zero, ASE_SIZEOF(zero)); + ADD_CODE (builder, &zero, QSE_SIZEOF(zero)); + ADD_CODE (builder, &zero, QSE_SIZEOF(zero)); while (1) { @@ -552,13 +552,13 @@ static int build_atom (builder_t* builder) if (builder->ptn.curc.type == CT_SPECIAL) { - if (builder->ptn.curc.value == ASE_T('(')) + if (builder->ptn.curc.value == QSE_T('(')) { tmp.cmd = CMD_GROUP; tmp.negate = 0; tmp.lbound = 1; tmp.ubound = 1; - ADD_CODE (builder, &tmp, ASE_SIZEOF(tmp)); + ADD_CODE (builder, &tmp, QSE_SIZEOF(tmp)); NEXT_CHAR (builder, LEVEL_TOP); @@ -566,37 +566,37 @@ static int build_atom (builder_t* builder) if (n == -1) return -1; if (builder->ptn.curc.type != CT_SPECIAL || - builder->ptn.curc.value != ASE_T(')')) + builder->ptn.curc.value != QSE_T(')')) { - builder->errnum = ASE_REX_ERPAREN; + builder->errnum = QSE_REX_ERPAREN; return -1; } } - else if (builder->ptn.curc.value == ASE_T('^')) + else if (builder->ptn.curc.value == QSE_T('^')) { tmp.cmd = CMD_BOL; tmp.negate = 0; tmp.lbound = 1; tmp.ubound = 1; - ADD_CODE (builder, &tmp, ASE_SIZEOF(tmp)); + ADD_CODE (builder, &tmp, QSE_SIZEOF(tmp)); } - else if (builder->ptn.curc.value == ASE_T('$')) + else if (builder->ptn.curc.value == QSE_T('$')) { tmp.cmd = CMD_EOL; tmp.negate = 0; tmp.lbound = 1; tmp.ubound = 1; - ADD_CODE (builder, &tmp, ASE_SIZEOF(tmp)); + ADD_CODE (builder, &tmp, QSE_SIZEOF(tmp)); } - else if (builder->ptn.curc.value == ASE_T('.')) + else if (builder->ptn.curc.value == QSE_T('.')) { tmp.cmd = CMD_ANY_CHAR; tmp.negate = 0; tmp.lbound = 1; tmp.ubound = 1; - ADD_CODE (builder, &tmp, ASE_SIZEOF(tmp)); + ADD_CODE (builder, &tmp, QSE_SIZEOF(tmp)); } - else if (builder->ptn.curc.value == ASE_T('[')) + else if (builder->ptn.curc.value == QSE_T('[')) { code_t* cmd; @@ -606,19 +606,19 @@ static int build_atom (builder_t* builder) tmp.negate = 0; tmp.lbound = 1; tmp.ubound = 1; - ADD_CODE (builder, &tmp, ASE_SIZEOF(tmp)); + ADD_CODE (builder, &tmp, QSE_SIZEOF(tmp)); NEXT_CHAR (builder, LEVEL_CHARSET); n = build_charset (builder, cmd); if (n == -1) return -1; - ASE_ASSERT (n != 0); + QSE_ASSERT (n != 0); if (builder->ptn.curc.type != CT_SPECIAL || - builder->ptn.curc.value != ASE_T(']')) + builder->ptn.curc.value != QSE_T(']')) { - builder->errnum = ASE_REX_ERBRACKET; + builder->errnum = QSE_REX_ERBRACKET; return -1; } @@ -630,17 +630,17 @@ static int build_atom (builder_t* builder) } else { - ASE_ASSERT (builder->ptn.curc.type == CT_NORMAL); + QSE_ASSERT (builder->ptn.curc.type == CT_NORMAL); tmp.cmd = CMD_ORD_CHAR; tmp.negate = 0; tmp.lbound = 1; tmp.ubound = 1; - ADD_CODE (builder, &tmp, ASE_SIZEOF(tmp)); + ADD_CODE (builder, &tmp, QSE_SIZEOF(tmp)); ADD_CODE (builder, &builder->ptn.curc.value, - ASE_SIZEOF(builder->ptn.curc.value)); + QSE_SIZEOF(builder->ptn.curc.value)); NEXT_CHAR (builder, LEVEL_TOP); return 1; @@ -649,19 +649,19 @@ static int build_atom (builder_t* builder) static int build_charset (builder_t* builder, code_t* cmd) { - ase_size_t zero = 0; - ase_size_t old_size; - ase_size_t pos_csc; + qse_size_t zero = 0; + qse_size_t old_size; + qse_size_t pos_csc; cshdr_t* cshdr; old_size = builder->code.size; pos_csc = builder->code.size; - ADD_CODE (builder, &zero, ASE_SIZEOF(zero)); - ADD_CODE (builder, &zero, ASE_SIZEOF(zero)); + ADD_CODE (builder, &zero, QSE_SIZEOF(zero)); + ADD_CODE (builder, &zero, QSE_SIZEOF(zero)); if (builder->ptn.curc.type == CT_NORMAL && - builder->ptn.curc.value == ASE_T('^')) + builder->ptn.curc.value == QSE_T('^')) { cmd->negate = 1; NEXT_CHAR (builder, LEVEL_CHARSET); @@ -669,15 +669,15 @@ static int build_charset (builder_t* builder, code_t* cmd) while (builder->ptn.curc.type == CT_NORMAL) { - ase_char_t c0, c1, c2; + qse_char_t c0, c1, c2; int cc = 0; c1 = builder->ptn.curc.value; NEXT_CHAR(builder, LEVEL_CHARSET); - if (c1 == ASE_T('[') && + if (c1 == QSE_T('[') && builder->ptn.curc.type == CT_NORMAL && - builder->ptn.curc.value == ASE_T(':')) + builder->ptn.curc.value == QSE_T(':')) { if (build_cclass (builder, &c1) == -1) return -1; cc = cc | 1; @@ -685,8 +685,8 @@ static int build_charset (builder_t* builder, code_t* cmd) c2 = c1; if (builder->ptn.curc.type == CT_NORMAL && - builder->ptn.curc.value == ASE_T('-') && - builder->ptn.curc.escaped == ASE_FALSE) + builder->ptn.curc.value == QSE_T('-') && + builder->ptn.curc.escaped == QSE_FALSE) { NEXT_CHAR (builder, LEVEL_CHARSET); @@ -695,9 +695,9 @@ static int build_charset (builder_t* builder, code_t* cmd) c2 = builder->ptn.curc.value; NEXT_CHAR (builder, LEVEL_CHARSET); - if (c2 == ASE_T('[') && + if (c2 == QSE_T('[') && builder->ptn.curc.type == CT_NORMAL && - builder->ptn.curc.value == ASE_T(':')) + builder->ptn.curc.value == QSE_T(':')) { if (build_cclass (builder, &c2) == -1) { @@ -716,30 +716,30 @@ static int build_charset (builder_t* builder, code_t* cmd) if (c1 == c2) { c0 = CHARSET_ONE; - ADD_CODE (builder, &c0, ASE_SIZEOF(c0)); - ADD_CODE (builder, &c1, ASE_SIZEOF(c1)); + ADD_CODE (builder, &c0, QSE_SIZEOF(c0)); + ADD_CODE (builder, &c1, QSE_SIZEOF(c1)); } else { c0 = CHARSET_RANGE; - ADD_CODE (builder, &c0, ASE_SIZEOF(c0)); - ADD_CODE (builder, &c1, ASE_SIZEOF(c1)); - ADD_CODE (builder, &c2, ASE_SIZEOF(c2)); + ADD_CODE (builder, &c0, QSE_SIZEOF(c0)); + ADD_CODE (builder, &c1, QSE_SIZEOF(c1)); + ADD_CODE (builder, &c2, QSE_SIZEOF(c2)); } } else if (cc == 1) { c0 = CHARSET_CLASS; - ADD_CODE (builder, &c0, ASE_SIZEOF(c0)); - ADD_CODE (builder, &c1, ASE_SIZEOF(c1)); + ADD_CODE (builder, &c0, QSE_SIZEOF(c0)); + ADD_CODE (builder, &c1, QSE_SIZEOF(c1)); } else { /* invalid range */ #ifdef DEBUG_REX - DPUTS (ASE_T("build_charset: invalid character set range\n")); + DPUTS (QSE_T("build_charset: invalid character set range\n")); #endif - builder->errnum = ASE_REX_ECRANGE; + builder->errnum = QSE_REX_ECRANGE; return -1; } @@ -753,24 +753,24 @@ static int build_charset (builder_t* builder, code_t* cmd) return 1; } -static int build_cclass (builder_t* builder, ase_char_t* cc) +static int build_cclass (builder_t* builder, qse_char_t* cc) { const struct __char_class_t* ccp = __char_class; - ase_size_t len = builder->ptn.end - builder->ptn.curp; + qse_size_t len = builder->ptn.end - builder->ptn.curp; - while (ccp->name != ASE_NULL) + while (ccp->name != QSE_NULL) { if (__begin_with (builder->ptn.curp, len, ccp->name)) break; ccp++; } - if (ccp->name == ASE_NULL) + if (ccp->name == QSE_NULL) { /* wrong class name */ #ifdef DEBUG_REX - DPUTS (ASE_T("build_cclass: wrong class name\n")); + DPUTS (QSE_T("build_cclass: wrong class name\n")); #endif - builder->errnum = ASE_REX_ECCLASS; + builder->errnum = QSE_REX_ECCLASS; return -1; } @@ -778,12 +778,12 @@ static int build_cclass (builder_t* builder, ase_char_t* cc) NEXT_CHAR (builder, LEVEL_CHARSET); if (builder->ptn.curc.type != CT_NORMAL || - builder->ptn.curc.value != ASE_T(':')) + builder->ptn.curc.value != QSE_T(':')) { #ifdef DEBUG_REX - DPUTS (ASE_T("build_cclass: a colon(:) expected\n")); + DPUTS (QSE_T("build_cclass: a colon(:) expected\n")); #endif - builder->errnum = ASE_REX_ECOLON; + builder->errnum = QSE_REX_ECOLON; return -1; } @@ -791,18 +791,18 @@ static int build_cclass (builder_t* builder, ase_char_t* cc) /* ] happens to be the charset ender ] */ if (builder->ptn.curc.type != CT_SPECIAL || - builder->ptn.curc.value != ASE_T(']')) + builder->ptn.curc.value != QSE_T(']')) { #ifdef DEBUG_REX - DPUTS (ASE_T("build_cclass: ] expected\n")); + DPUTS (QSE_T("build_cclass: ] expected\n")); #endif - builder->errnum = ASE_REX_ERBRACKET; + builder->errnum = QSE_REX_ERBRACKET; return -1; } NEXT_CHAR (builder, LEVEL_CHARSET); - *cc = (ase_char_t)(ccp - __char_class); + *cc = (qse_char_t)(ccp - __char_class); return 1; } @@ -812,7 +812,7 @@ static int build_occurrences (builder_t* builder, code_t* cmd) switch (builder->ptn.curc.value) { - case ASE_T('+'): + case QSE_T('+'): { cmd->lbound = 1; cmd->ubound = BOUND_MAX; @@ -820,7 +820,7 @@ static int build_occurrences (builder_t* builder, code_t* cmd) return 1; } - case ASE_T('*'): + case QSE_T('*'): { cmd->lbound = 0; cmd->ubound = BOUND_MAX; @@ -828,7 +828,7 @@ static int build_occurrences (builder_t* builder, code_t* cmd) return 1; } - case ASE_T('?'): + case QSE_T('?'): { cmd->lbound = 0; cmd->ubound = 1; @@ -836,16 +836,16 @@ static int build_occurrences (builder_t* builder, code_t* cmd) return 1; } - case ASE_T('{'): + case QSE_T('{'): { NEXT_CHAR (builder, LEVEL_RANGE); if (build_range(builder, cmd) == -1) return -1; if (builder->ptn.curc.type != CT_SPECIAL || - builder->ptn.curc.value != ASE_T('}')) + builder->ptn.curc.value != QSE_T('}')) { - builder->errnum = ASE_REX_ERBRACE; + builder->errnum = QSE_REX_ERBRACE; return -1; } @@ -859,32 +859,32 @@ static int build_occurrences (builder_t* builder, code_t* cmd) static int build_range (builder_t* builder, code_t* cmd) { - ase_size_t bound; + qse_size_t bound; /* TODO: should allow white spaces in the range??? what if it is not in the raight format? convert it to ordinary characters?? */ bound = 0; while (builder->ptn.curc.type == CT_NORMAL && - (builder->ptn.curc.value >= ASE_T('0') && - builder->ptn.curc.value <= ASE_T('9'))) + (builder->ptn.curc.value >= QSE_T('0') && + builder->ptn.curc.value <= QSE_T('9'))) { - bound = bound * 10 + builder->ptn.curc.value - ASE_T('0'); + bound = bound * 10 + builder->ptn.curc.value - QSE_T('0'); NEXT_CHAR (builder, LEVEL_RANGE); } cmd->lbound = bound; if (builder->ptn.curc.type == CT_SPECIAL && - builder->ptn.curc.value == ASE_T(',')) + builder->ptn.curc.value == QSE_T(',')) { NEXT_CHAR (builder, LEVEL_RANGE); bound = 0; while (builder->ptn.curc.type == CT_NORMAL && - (builder->ptn.curc.value >= ASE_T('0') && - builder->ptn.curc.value <= ASE_T('9'))) + (builder->ptn.curc.value >= QSE_T('0') && + builder->ptn.curc.value <= QSE_T('9'))) { - bound = bound * 10 + builder->ptn.curc.value - ASE_T('0'); + bound = bound * 10 + builder->ptn.curc.value - QSE_T('0'); NEXT_CHAR (builder, LEVEL_RANGE); } @@ -895,7 +895,7 @@ what if it is not in the raight format? convert it to ordinary characters?? */ if (cmd->lbound > cmd->ubound) { /* invalid occurrences range */ - builder->errnum = ASE_REX_EBRANGE; + builder->errnum = QSE_REX_EBRANGE; return -1; } @@ -906,72 +906,72 @@ what if it is not in the raight format? convert it to ordinary characters?? */ do { \ if (builder->ptn.curp >= builder->ptn.end) \ { \ - builder->errnum = ASE_REX_EEND; \ + builder->errnum = QSE_REX_EEND; \ return -1; \ } \ } while(0) #define IS_HEX(c) \ - ((c >= ASE_T('0') && c <= ASE_T('9')) || \ - (c >= ASE_T('A') && c <= ASE_T('F')) || \ - (c >= ASE_T('a') && c <= ASE_T('f'))) + ((c >= QSE_T('0') && c <= QSE_T('9')) || \ + (c >= QSE_T('A') && c <= QSE_T('F')) || \ + (c >= QSE_T('a') && c <= QSE_T('f'))) #define HEX_TO_NUM(c) \ - ((c >= ASE_T('0') && c <= ASE_T('9'))? c-ASE_T('0'): \ - (c >= ASE_T('A') && c <= ASE_T('F'))? c-ASE_T('A')+10: \ - c-ASE_T('a')+10) + ((c >= QSE_T('0') && c <= QSE_T('9'))? c-QSE_T('0'): \ + (c >= QSE_T('A') && c <= QSE_T('F'))? c-QSE_T('A')+10: \ + c-QSE_T('a')+10) static int next_char (builder_t* builder, int level) { if (builder->ptn.curp >= builder->ptn.end) { builder->ptn.curc.type = CT_EOF; - builder->ptn.curc.value = ASE_T('\0'); - builder->ptn.curc.escaped = ASE_FALSE; + builder->ptn.curc.value = QSE_T('\0'); + builder->ptn.curc.escaped = QSE_FALSE; return 0; } builder->ptn.curc.type = CT_NORMAL; builder->ptn.curc.value = *builder->ptn.curp++; - builder->ptn.curc.escaped = ASE_FALSE; + builder->ptn.curc.escaped = QSE_FALSE; - if (builder->ptn.curc.value == ASE_T('\\')) + if (builder->ptn.curc.value == QSE_T('\\')) { - ase_char_t c; + qse_char_t c; CHECK_END (builder); c = *builder->ptn.curp++; - if (c == ASE_T('n')) c = ASE_T('\n'); - else if (c == ASE_T('r')) c = ASE_T('\r'); - else if (c == ASE_T('t')) c = ASE_T('\t'); - else if (c == ASE_T('f')) c = ASE_T('\f'); - else if (c == ASE_T('b')) c = ASE_T('\b'); - else if (c == ASE_T('v')) c = ASE_T('\v'); - else if (c == ASE_T('a')) c = ASE_T('\a'); - else if (c >= ASE_T('0') && c <= ASE_T('7')) + if (c == QSE_T('n')) c = QSE_T('\n'); + else if (c == QSE_T('r')) c = QSE_T('\r'); + else if (c == QSE_T('t')) c = QSE_T('\t'); + else if (c == QSE_T('f')) c = QSE_T('\f'); + else if (c == QSE_T('b')) c = QSE_T('\b'); + else if (c == QSE_T('v')) c = QSE_T('\v'); + else if (c == QSE_T('a')) c = QSE_T('\a'); + else if (c >= QSE_T('0') && c <= QSE_T('7')) { - ase_char_t cx; + qse_char_t cx; - c = c - ASE_T('0'); + c = c - QSE_T('0'); CHECK_END (builder); cx = *builder->ptn.curp++; - if (cx >= ASE_T('0') && cx <= ASE_T('7')) + if (cx >= QSE_T('0') && cx <= QSE_T('7')) { - c = c * 8 + cx - ASE_T('0'); + c = c * 8 + cx - QSE_T('0'); CHECK_END (builder); cx = *builder->ptn.curp++; - if (cx >= ASE_T('0') && cx <= ASE_T('7')) + if (cx >= QSE_T('0') && cx <= QSE_T('7')) { - c = c * 8 + cx - ASE_T('0'); + c = c * 8 + cx - QSE_T('0'); } } } - else if (c == ASE_T('x')) + else if (c == QSE_T('x')) { - ase_char_t cx; + qse_char_t cx; CHECK_END (builder); cx = *builder->ptn.curp++; @@ -987,16 +987,16 @@ static int next_char (builder_t* builder, int level) } } } - #ifdef ASE_CHAR_IS_WCHAR - else if (c == ASE_T('u') && ASE_SIZEOF(ase_char_t) >= 2) + #ifdef QSE_CHAR_IS_WCHAR + else if (c == QSE_T('u') && QSE_SIZEOF(qse_char_t) >= 2) { - ase_char_t cx; + qse_char_t cx; CHECK_END (builder); cx = *builder->ptn.curp++; if (IS_HEX(cx)) { - ase_size_t i; + qse_size_t i; c = HEX_TO_NUM(cx); @@ -1010,15 +1010,15 @@ static int next_char (builder_t* builder, int level) } } } - else if (c == ASE_T('U') && ASE_SIZEOF(ase_char_t) >= 4) + else if (c == QSE_T('U') && QSE_SIZEOF(qse_char_t) >= 4) { - ase_char_t cx; + qse_char_t cx; CHECK_END (builder); cx = *builder->ptn.curp++; if (IS_HEX(cx)) { - ase_size_t i; + qse_size_t i; c = HEX_TO_NUM(cx); @@ -1035,7 +1035,7 @@ static int next_char (builder_t* builder, int level) #endif builder->ptn.curc.value = c; - builder->ptn.curc.escaped = ASE_TRUE; + builder->ptn.curc.escaped = QSE_TRUE; return 0; } @@ -1043,32 +1043,32 @@ static int next_char (builder_t* builder, int level) { if (level == LEVEL_TOP) { - if (builder->ptn.curc.value == ASE_T('[') || - builder->ptn.curc.value == ASE_T('|') || - builder->ptn.curc.value == ASE_T('^') || - builder->ptn.curc.value == ASE_T('$') || - builder->ptn.curc.value == ASE_T('{') || - builder->ptn.curc.value == ASE_T('+') || - builder->ptn.curc.value == ASE_T('?') || - builder->ptn.curc.value == ASE_T('*') || - builder->ptn.curc.value == ASE_T('.') || - builder->ptn.curc.value == ASE_T('(') || - builder->ptn.curc.value == ASE_T(')')) + if (builder->ptn.curc.value == QSE_T('[') || + builder->ptn.curc.value == QSE_T('|') || + builder->ptn.curc.value == QSE_T('^') || + builder->ptn.curc.value == QSE_T('$') || + builder->ptn.curc.value == QSE_T('{') || + builder->ptn.curc.value == QSE_T('+') || + builder->ptn.curc.value == QSE_T('?') || + builder->ptn.curc.value == QSE_T('*') || + builder->ptn.curc.value == QSE_T('.') || + builder->ptn.curc.value == QSE_T('(') || + builder->ptn.curc.value == QSE_T(')')) { builder->ptn.curc.type = CT_SPECIAL; } } else if (level == LEVEL_CHARSET) { - if (builder->ptn.curc.value == ASE_T(']')) + if (builder->ptn.curc.value == QSE_T(']')) { builder->ptn.curc.type = CT_SPECIAL; } } else if (level == LEVEL_RANGE) { - if (builder->ptn.curc.value == ASE_T(',') || - builder->ptn.curc.value == ASE_T('}')) + if (builder->ptn.curc.value == QSE_T(',') || + builder->ptn.curc.value == QSE_T('}')) { builder->ptn.curc.type = CT_SPECIAL; } @@ -1078,39 +1078,39 @@ static int next_char (builder_t* builder, int level) return 0; } -static int add_code (builder_t* builder, void* data, ase_size_t len) +static int add_code (builder_t* builder, void* data, qse_size_t len) { if (len > builder->code.capa - builder->code.size) { - ase_size_t capa = builder->code.capa * 2; - ase_byte_t* tmp; + qse_size_t capa = builder->code.capa * 2; + qse_byte_t* tmp; if (capa == 0) capa = DEF_CODE_CAPA; while (len > capa - builder->code.size) { capa = capa * 2; } - if (builder->mmgr->realloc != ASE_NULL) + if (builder->mmgr->realloc != QSE_NULL) { - tmp = (ase_byte_t*) ASE_REALLOC ( + tmp = (qse_byte_t*) QSE_REALLOC ( builder->mmgr, builder->code.buf, capa); - if (tmp == ASE_NULL) + if (tmp == QSE_NULL) { - builder->errnum = ASE_REX_ENOMEM; + builder->errnum = QSE_REX_ENOMEM; return -1; } } else { - tmp = (ase_byte_t*) ASE_MALLOC (builder->mmgr, capa); - if (tmp == ASE_NULL) + tmp = (qse_byte_t*) QSE_MALLOC (builder->mmgr, capa); + if (tmp == QSE_NULL) { - builder->errnum = ASE_REX_ENOMEM; + builder->errnum = QSE_REX_ENOMEM; return -1; } - if (builder->code.buf != ASE_NULL) + if (builder->code.buf != QSE_NULL) { - ASE_MEMCPY (tmp, builder->code.buf, builder->code.capa); - ASE_FREE (builder->mmgr, builder->code.buf); + QSE_MEMCPY (tmp, builder->code.buf, builder->code.capa); + QSE_FREE (builder->mmgr, builder->code.buf); } } @@ -1118,47 +1118,47 @@ static int add_code (builder_t* builder, void* data, ase_size_t len) builder->code.capa = capa; } - ASE_MEMCPY (&builder->code.buf[builder->code.size], data, len); + QSE_MEMCPY (&builder->code.buf[builder->code.size], data, len); builder->code.size += len; return 0; } -static ase_bool_t __begin_with ( - const ase_char_t* str, ase_size_t len, const ase_char_t* what) +static qse_bool_t __begin_with ( + const qse_char_t* str, qse_size_t len, const qse_char_t* what) { - const ase_char_t* end = str + len; + const qse_char_t* end = str + len; while (str < end) { - if (*what == ASE_T('\0')) return ASE_TRUE; - if (*what != *str) return ASE_FALSE; + if (*what == QSE_T('\0')) return QSE_TRUE; + if (*what != *str) return QSE_FALSE; str++; what++; } - if (*what == ASE_T('\0')) return ASE_TRUE; - return ASE_FALSE; + if (*what == QSE_T('\0')) return QSE_TRUE; + return QSE_FALSE; } -static const ase_byte_t* match_pattern ( - matcher_t* matcher, const ase_byte_t* base, match_t* mat) +static const qse_byte_t* match_pattern ( + matcher_t* matcher, const qse_byte_t* base, match_t* mat) { match_t mat2; - ase_size_t i; - const ase_byte_t* p; + qse_size_t i; + const qse_byte_t* p; rhdr_t* rhdr; p = base; - rhdr = (rhdr_t*) p; p += ASE_SIZEOF(*rhdr); + rhdr = (rhdr_t*) p; p += QSE_SIZEOF(*rhdr); #ifdef DEBUG_REX - ase_dprintf ( - ASE_T("match_pattern: NB = %u, EL = %u\n"), + qse_dprintf ( + QSE_T("match_pattern: NB = %u, EL = %u\n"), (unsigned int)rhdr->nb, (unsigned int)rhdr->el); #endif - mat->matched = ASE_FALSE; + mat->matched = QSE_FALSE; mat->match_len = 0; for (i = 0; i < rhdr->nb; i++) @@ -1166,11 +1166,11 @@ static const ase_byte_t* match_pattern ( mat2.match_ptr = mat->match_ptr; p = match_branch (matcher, p, &mat2); - if (p == ASE_NULL) return ASE_NULL; + if (p == QSE_NULL) return QSE_NULL; if (mat2.matched) { - mat->matched = ASE_TRUE; + mat->matched = QSE_TRUE; mat->match_len = mat2.match_len; break; } @@ -1179,31 +1179,31 @@ static const ase_byte_t* match_pattern ( return base + rhdr->el; } -static const ase_byte_t* match_branch ( - matcher_t* matcher, const ase_byte_t* base, match_t* mat) +static const qse_byte_t* match_branch ( + matcher_t* matcher, const qse_byte_t* base, match_t* mat) { /* branch body base+sizeof(NA)+sizeof(BL)-----+ * BL base+sizeof(NA) ----------+ | * base NA ------+ | | * | | | - * |NA(ase_size_t)|BL(ase_size_t)|ATOMS.........| + * |NA(qse_size_t)|BL(qse_size_t)|ATOMS.........| */ mat->branch = base; mat->branch_end = base + ((bhdr_t*)base)->bl; return match_branch_body ( - matcher, (const ase_byte_t*)((bhdr_t*)base+1), mat); + matcher, (const qse_byte_t*)((bhdr_t*)base+1), mat); } -static const ase_byte_t* match_branch_body ( - matcher_t* matcher, const ase_byte_t* base, match_t* mat) +static const qse_byte_t* match_branch_body ( + matcher_t* matcher, const qse_byte_t* base, match_t* mat) { - const ase_byte_t* n; + const qse_byte_t* n; if (matcher->depth.max > 0 && matcher->depth.cur >= matcher->depth.max) { - matcher->errnum = ASE_REX_ERECUR; - return ASE_NULL; + matcher->errnum = QSE_REX_ERECUR; + return QSE_NULL; } matcher->depth.cur++; @@ -1213,14 +1213,14 @@ static const ase_byte_t* match_branch_body ( return n; } -static const ase_byte_t* match_branch_body0 ( - matcher_t* matcher, const ase_byte_t* base, match_t* mat) +static const qse_byte_t* match_branch_body0 ( + matcher_t* matcher, const qse_byte_t* base, match_t* mat) { - const ase_byte_t* p; + const qse_byte_t* p; /* match_t mat2;*/ - ase_size_t match_len = 0; + qse_size_t match_len = 0; - mat->matched = ASE_FALSE; + mat->matched = QSE_FALSE; mat->match_len = 0; /* TODO: is mat2 necessary here ? */ @@ -1235,7 +1235,7 @@ static const ase_byte_t* match_branch_body0 ( while (p < mat->branch_end) { p = match_atom (matcher, p, mat); - if (p == ASE_NULL) return ASE_NULL; + if (p == QSE_NULL) return QSE_NULL; if (!mat->matched) break; @@ -1243,15 +1243,15 @@ static const ase_byte_t* match_branch_body0 ( match_len += mat->match_len; #if 0 p = match_atom (matcher, p, &mat2); - if (p == ASE_NULL) return ASE_NULL; + if (p == QSE_NULL) return QSE_NULL; if (!mat2.matched) { - mat->matched = ASE_FALSE; + mat->matched = QSE_FALSE; break; /* stop matching */ } - mat->matched = ASE_TRUE; + mat->matched = QSE_TRUE; mat->match_len += mat2.match_len; mat2.match_ptr = &mat2.match_ptr[mat2.match_len]; @@ -1262,8 +1262,8 @@ static const ase_byte_t* match_branch_body0 ( return mat->branch_end; } -static const ase_byte_t* match_atom ( - matcher_t* matcher, const ase_byte_t* base, match_t* mat) +static const qse_byte_t* match_atom ( + matcher_t* matcher, const qse_byte_t* base, match_t* mat) { static atom_matcher_t matchers[] = { @@ -1275,21 +1275,21 @@ static const ase_byte_t* match_atom ( match_group }; - ASE_ASSERT ( + QSE_ASSERT ( ((code_t*)base)->cmd >= 0 && - ((code_t*)base)->cmd < ASE_COUNTOF(matchers)); + ((code_t*)base)->cmd < QSE_COUNTOF(matchers)); return matchers[((code_t*)base)->cmd] (matcher, base, mat); } -static const ase_byte_t* match_bol ( - matcher_t* matcher, const ase_byte_t* base, match_t* mat) +static const qse_byte_t* match_bol ( + matcher_t* matcher, const qse_byte_t* base, match_t* mat) { - const ase_byte_t* p = base; + const qse_byte_t* p = base; const code_t* cp; - cp = (const code_t*)p; p += ASE_SIZEOF(*cp); - ASE_ASSERT (cp->cmd == CMD_BOL); + cp = (const code_t*)p; p += QSE_SIZEOF(*cp); + QSE_ASSERT (cp->cmd == CMD_BOL); mat->matched = (mat->match_ptr == matcher->match.str.ptr || (cp->lbound == cp->ubound && cp->lbound == 0)); @@ -1298,14 +1298,14 @@ static const ase_byte_t* match_bol ( return p; } -static const ase_byte_t* match_eol ( - matcher_t* matcher, const ase_byte_t* base, match_t* mat) +static const qse_byte_t* match_eol ( + matcher_t* matcher, const qse_byte_t* base, match_t* mat) { - const ase_byte_t* p = base; + const qse_byte_t* p = base; const code_t* cp; - cp = (const code_t*)p; p += ASE_SIZEOF(*cp); - ASE_ASSERT (cp->cmd == CMD_EOL); + cp = (const code_t*)p; p += QSE_SIZEOF(*cp); + QSE_ASSERT (cp->cmd == CMD_EOL); mat->matched = (mat->match_ptr == matcher->match.str.end || (cp->lbound == cp->ubound && cp->lbound == 0)); @@ -1314,20 +1314,20 @@ static const ase_byte_t* match_eol ( return p; } -static const ase_byte_t* match_any_char ( - matcher_t* matcher, const ase_byte_t* base, match_t* mat) +static const qse_byte_t* match_any_char ( + matcher_t* matcher, const qse_byte_t* base, match_t* mat) { - const ase_byte_t* p = base; + const qse_byte_t* p = base; const code_t* cp; - ase_size_t si = 0, lbound, ubound; + qse_size_t si = 0, lbound, ubound; - cp = (const code_t*)p; p += ASE_SIZEOF(*cp); - ASE_ASSERT (cp->cmd == CMD_ANY_CHAR); + cp = (const code_t*)p; p += QSE_SIZEOF(*cp); + QSE_ASSERT (cp->cmd == CMD_ANY_CHAR); lbound = cp->lbound; ubound = cp->ubound; - mat->matched = ASE_FALSE; + mat->matched = QSE_FALSE; mat->match_len = 0; /* merge the same consecutive codes */ @@ -1337,12 +1337,12 @@ static const ase_byte_t* match_any_char ( lbound += ((const code_t*)p)->lbound; ubound += ((const code_t*)p)->ubound; - p += ASE_SIZEOF(*cp); + p += QSE_SIZEOF(*cp); } #ifdef DEBUG_REX - ase_dprintf ( - ASE_T("match_any_char: lbound = %u, ubound = %u\n"), + qse_dprintf ( + QSE_T("match_any_char: lbound = %u, ubound = %u\n"), (unsigned int)lbound, (unsigned int)ubound); #endif @@ -1354,8 +1354,8 @@ static const ase_byte_t* match_any_char ( } #ifdef DEBUG_REX - ase_dprintf ( - ASE_T("match_any_char: max si = %u\n"), (unsigned)si); + qse_dprintf ( + QSE_T("match_any_char: max si = %u\n"), (unsigned)si); #endif if (si >= lbound && si <= ubound) @@ -1366,22 +1366,22 @@ static const ase_byte_t* match_any_char ( return p; } -static const ase_byte_t* match_ord_char ( - matcher_t* matcher, const ase_byte_t* base, match_t* mat) +static const qse_byte_t* match_ord_char ( + matcher_t* matcher, const qse_byte_t* base, match_t* mat) { - const ase_byte_t* p = base; + const qse_byte_t* p = base; const code_t* cp; - ase_size_t si = 0, lbound, ubound; - ase_char_t cc; + qse_size_t si = 0, lbound, ubound; + qse_char_t cc; - cp = (const code_t*)p; p += ASE_SIZEOF(*cp); - ASE_ASSERT (cp->cmd == CMD_ORD_CHAR); + cp = (const code_t*)p; p += QSE_SIZEOF(*cp); + QSE_ASSERT (cp->cmd == CMD_ORD_CHAR); lbound = cp->lbound; ubound = cp->ubound; - cc = *(ase_char_t*)p; p += ASE_SIZEOF(cc); - if (matcher->ignorecase) cc = ASE_CCLS_TOUPPER(matcher->ccls, cc); + cc = *(qse_char_t*)p; p += QSE_SIZEOF(cc); + if (matcher->ignorecase) cc = QSE_CCLS_TOUPPER(matcher->ccls, cc); /* merge the same consecutive codes * for example, a{1,10}a{0,10} is shortened to a{1,20} */ @@ -1390,12 +1390,12 @@ static const ase_byte_t* match_ord_char ( while (p < mat->branch_end && cp->cmd == ((const code_t*)p)->cmd) { - if (ASE_CCLS_TOUPPER (matcher->ccls, *(ase_char_t*)(p+ASE_SIZEOF(*cp))) != cc) break; + if (QSE_CCLS_TOUPPER (matcher->ccls, *(qse_char_t*)(p+QSE_SIZEOF(*cp))) != cc) break; lbound += ((const code_t*)p)->lbound; ubound += ((const code_t*)p)->ubound; - p += ASE_SIZEOF(*cp) + ASE_SIZEOF(cc); + p += QSE_SIZEOF(*cp) + QSE_SIZEOF(cc); } } else @@ -1403,22 +1403,22 @@ static const ase_byte_t* match_ord_char ( while (p < mat->branch_end && cp->cmd == ((const code_t*)p)->cmd) { - if (*(ase_char_t*)(p+ASE_SIZEOF(*cp)) != cc) break; + if (*(qse_char_t*)(p+QSE_SIZEOF(*cp)) != cc) break; lbound += ((const code_t*)p)->lbound; ubound += ((const code_t*)p)->ubound; - p += ASE_SIZEOF(*cp) + ASE_SIZEOF(cc); + p += QSE_SIZEOF(*cp) + QSE_SIZEOF(cc); } } #ifdef DEBUG_REX - ase_dprintf ( - ASE_T("match_ord_char: cc = %c, lbound = %u, ubound = %u\n"), + qse_dprintf ( + QSE_T("match_ord_char: cc = %c, lbound = %u, ubound = %u\n"), cc, (unsigned int)lbound, (unsigned int)ubound); #endif - mat->matched = ASE_FALSE; + mat->matched = QSE_FALSE; mat->match_len = 0; /* find the longest match */ @@ -1428,11 +1428,11 @@ static const ase_byte_t* match_ord_char ( { if (&mat->match_ptr[si] >= matcher->match.str.end) break; #ifdef DEBUG_REX - ase_dprintf ( - ASE_T("match_ord_char: %c %c\n"), + qse_dprintf ( + QSE_T("match_ord_char: %c %c\n"), cc, mat->match_ptr[si]); #endif - if (cc != ASE_CCLS_TOUPPER (matcher->ccls, mat->match_ptr[si])) break; + if (cc != QSE_CCLS_TOUPPER (matcher->ccls, mat->match_ptr[si])) break; si++; } } @@ -1442,8 +1442,8 @@ static const ase_byte_t* match_ord_char ( { if (&mat->match_ptr[si] >= matcher->match.str.end) break; #ifdef DEBUG_REX - ase_dprintf ( - ASE_T("match_ord_char: %c %c\n"), + qse_dprintf ( + QSE_T("match_ord_char: %c %c\n"), cc, mat->match_ptr[si]); #endif if (cc != mat->match_ptr[si]) break; @@ -1452,8 +1452,8 @@ static const ase_byte_t* match_ord_char ( } #ifdef DEBUG_REX - ase_dprintf ( - ASE_T("match_ord_char: max occurrences=%u, lbound=%u, ubound=%u\n"), + qse_dprintf ( + QSE_T("match_ord_char: max occurrences=%u, lbound=%u, ubound=%u\n"), (unsigned)si, (unsigned)lbound, (unsigned)ubound); #endif @@ -1465,29 +1465,29 @@ static const ase_byte_t* match_ord_char ( return p; } -static const ase_byte_t* match_charset ( - matcher_t* matcher, const ase_byte_t* base, match_t* mat) +static const qse_byte_t* match_charset ( + matcher_t* matcher, const qse_byte_t* base, match_t* mat) { - const ase_byte_t* p = base; - ase_size_t si = 0; - ase_bool_t n; - ase_char_t c; + const qse_byte_t* p = base; + qse_size_t si = 0; + qse_bool_t n; + qse_char_t c; code_t* cp; cshdr_t* cshdr; - cp = (code_t*)p; p += ASE_SIZEOF(*cp); - ASE_ASSERT (cp->cmd == CMD_CHARSET); + cp = (code_t*)p; p += QSE_SIZEOF(*cp); + QSE_ASSERT (cp->cmd == CMD_CHARSET); - cshdr = (cshdr_t*)p; p += ASE_SIZEOF(*cshdr); + cshdr = (cshdr_t*)p; p += QSE_SIZEOF(*cshdr); #ifdef DEBUG_REX - ase_dprintf ( - ASE_T("match_charset: lbound = %u, ubound = %u\n"), + qse_dprintf ( + QSE_T("match_charset: lbound = %u, ubound = %u\n"), (unsigned int)cp->lbound, (unsigned int)cp->ubound); #endif - mat->matched = ASE_FALSE; + mat->matched = QSE_FALSE; mat->match_len = 0; while (si < cp->ubound) @@ -1495,7 +1495,7 @@ static const ase_byte_t* match_charset ( if (&mat->match_ptr[si] >= matcher->match.str.end) break; c = mat->match_ptr[si]; - if (matcher->ignorecase) c = ASE_CCLS_TOUPPER(matcher->ccls, c); + if (matcher->ignorecase) c = QSE_CCLS_TOUPPER(matcher->ccls, c); n = __test_charset (matcher, p, cshdr->csc, c); if (cp->negate) n = !n; @@ -1504,11 +1504,11 @@ static const ase_byte_t* match_charset ( si++; } - p = p + cshdr->csl - ASE_SIZEOF(*cshdr); + p = p + cshdr->csl - QSE_SIZEOF(*cshdr); #ifdef DEBUG_REX - ase_dprintf ( - ASE_T("match_charset: max occurrences=%u, lbound=%u, ubound=%u\n"), + qse_dprintf ( + QSE_T("match_charset: max occurrences=%u, lbound=%u, ubound=%u\n"), (unsigned)si, (unsigned)cp->lbound, (unsigned)cp->ubound); #endif @@ -1520,18 +1520,18 @@ static const ase_byte_t* match_charset ( return p; } -static const ase_byte_t* match_group ( - matcher_t* matcher, const ase_byte_t* base, match_t* mat) +static const qse_byte_t* match_group ( + matcher_t* matcher, const qse_byte_t* base, match_t* mat) { - const ase_byte_t* p = base; + const qse_byte_t* p = base; const code_t* cp; match_t mat2; - ase_size_t si = 0, grp_len_static[16], * grp_len; + qse_size_t si = 0, grp_len_static[16], * grp_len; - cp = (const code_t*)p; p += ASE_SIZEOF(*cp); - ASE_ASSERT (cp->cmd == CMD_GROUP); + cp = (const code_t*)p; p += QSE_SIZEOF(*cp); + QSE_ASSERT (cp->cmd == CMD_GROUP); - mat->matched = ASE_FALSE; + mat->matched = QSE_FALSE; mat->match_len = 0; /* @@ -1558,18 +1558,18 @@ static const ase_byte_t* match_group ( * abcabcabcxyz */ - if (cp->ubound < ASE_COUNTOF(grp_len_static)) + if (cp->ubound < QSE_COUNTOF(grp_len_static)) { grp_len = grp_len_static; } else { - grp_len = (ase_size_t*) ASE_MALLOC ( - matcher->mmgr, ASE_SIZEOF(ase_size_t) * cp->ubound); - if (grp_len == ASE_NULL) + grp_len = (qse_size_t*) QSE_MALLOC ( + matcher->mmgr, QSE_SIZEOF(qse_size_t) * cp->ubound); + if (grp_len == QSE_NULL) { - matcher->errnum = ASE_REX_ENOMEM; - return ASE_NULL; + matcher->errnum = QSE_REX_ENOMEM; + return QSE_NULL; } } @@ -1580,11 +1580,11 @@ static const ase_byte_t* match_group ( { if (mat2.match_ptr >= matcher->match.str.end) break; - if (match_pattern (matcher, p, &mat2) == ASE_NULL) + if (match_pattern (matcher, p, &mat2) == QSE_NULL) { if (grp_len != grp_len_static) - ASE_FREE (matcher->mmgr, grp_len); - return ASE_NULL; + QSE_FREE (matcher->mmgr, grp_len); + return QSE_NULL; } if (!mat2.matched) break; @@ -1592,50 +1592,50 @@ static const ase_byte_t* match_group ( mat2.match_ptr += mat2.match_len; mat2.match_len = 0; - mat2.matched = ASE_FALSE; + mat2.matched = QSE_FALSE; si++; } /* increment p by the length of the subpattern */ - p += *(ase_size_t*)(p+ASE_SIZEOF(ase_size_t)); + p += *(qse_size_t*)(p+QSE_SIZEOF(qse_size_t)); /* check the occurrences */ if (si >= cp->lbound && si <= cp->ubound) { if (cp->lbound == cp->ubound || p >= mat->branch_end) { - mat->matched = ASE_TRUE; + mat->matched = QSE_TRUE; mat->match_len = grp_len[si]; } else { - ASE_ASSERT (cp->ubound > cp->lbound); + QSE_ASSERT (cp->ubound > cp->lbound); do { - const ase_byte_t* tmp; + const qse_byte_t* tmp; mat2.match_ptr = &mat->match_ptr[grp_len[si]]; mat2.branch = mat->branch; mat2.branch_end = mat->branch_end; #ifdef DEBUG_REX - ase_dprintf ( - ASE_T("match_group: GROUP si=%d [%s]\n"), + qse_dprintf ( + QSE_T("match_group: GROUP si=%d [%s]\n"), (unsigned)si, mat->match_ptr); #endif tmp = match_branch_body (matcher, p, &mat2); - if (tmp == ASE_NULL) + if (tmp == QSE_NULL) { if (grp_len != grp_len_static) - ASE_FREE (matcher->mmgr, grp_len); - return ASE_NULL; + QSE_FREE (matcher->mmgr, grp_len); + return QSE_NULL; } if (mat2.matched) { - mat->matched = ASE_TRUE; + mat->matched = QSE_TRUE; mat->match_len = grp_len[si] + mat2.match_len; p = tmp; break; @@ -1649,15 +1649,15 @@ static const ase_byte_t* match_group ( } - if (grp_len != grp_len_static) ASE_FREE (matcher->mmgr, grp_len); + if (grp_len != grp_len_static) QSE_FREE (matcher->mmgr, grp_len); return p; } -static const ase_byte_t* match_occurrences ( - matcher_t* matcher, ase_size_t si, const ase_byte_t* p, - ase_size_t lbound, ase_size_t ubound, match_t* mat) +static const qse_byte_t* match_occurrences ( + matcher_t* matcher, qse_size_t si, const qse_byte_t* p, + qse_size_t lbound, qse_size_t ubound, match_t* mat) { - ASE_ASSERT (si >= lbound && si <= ubound); + QSE_ASSERT (si >= lbound && si <= ubound); /* the match has been found */ if (lbound == ubound || p >= mat->branch_end) @@ -1665,7 +1665,7 @@ static const ase_byte_t* match_occurrences ( /* if the match for fixed occurrences was * requested or no atoms remain unchecked in * the branch, the match is returned. */ - mat->matched = ASE_TRUE; + mat->matched = QSE_TRUE; mat->match_len = si; } else @@ -1710,27 +1710,27 @@ static const ase_byte_t* match_occurrences ( * lbound in the implementation below, though) */ - ASE_ASSERT (ubound > lbound); + QSE_ASSERT (ubound > lbound); do { match_t mat2; - const ase_byte_t* tmp; + const qse_byte_t* tmp; mat2.match_ptr = &mat->match_ptr[si]; mat2.branch = mat->branch; mat2.branch_end = mat->branch_end; #ifdef DEBUG_REX - ase_dprintf ( - ASE_T("__match occurrences: si=%u [%s]\n"), + qse_dprintf ( + QSE_T("__match occurrences: si=%u [%s]\n"), (unsigned)si, mat->match_ptr); #endif tmp = match_branch_body (matcher, p, &mat2); if (mat2.matched) { - mat->matched = ASE_TRUE; + mat->matched = QSE_TRUE; mat->match_len = si + mat2.match_len; p = tmp; break; @@ -1745,160 +1745,160 @@ static const ase_byte_t* match_occurrences ( return p; } -static ase_bool_t __test_charset ( - matcher_t* matcher, const ase_byte_t* p, ase_size_t csc, ase_char_t c) +static qse_bool_t __test_charset ( + matcher_t* matcher, const qse_byte_t* p, qse_size_t csc, qse_char_t c) { - ase_size_t i; + qse_size_t i; for (i = 0; i < csc; i++) { - ase_char_t c0, c1, c2; + qse_char_t c0, c1, c2; - c0 = *(const ase_char_t*)p; - p += ASE_SIZEOF(c0); + c0 = *(const qse_char_t*)p; + p += QSE_SIZEOF(c0); if (c0 == CHARSET_ONE) { - c1 = *(const ase_char_t*)p; + c1 = *(const qse_char_t*)p; if (matcher->ignorecase) - c1 = ASE_CCLS_TOUPPER(matcher->ccls, c1); + c1 = QSE_CCLS_TOUPPER(matcher->ccls, c1); #ifdef DEBUG_REX - ase_dprintf ( - ASE_T("match_charset: %c %c\n"), c, c1); + qse_dprintf ( + QSE_T("match_charset: %c %c\n"), c, c1); #endif - if (c == c1) return ASE_TRUE; + if (c == c1) return QSE_TRUE; } else if (c0 == CHARSET_RANGE) { - c1 = *(const ase_char_t*)p; - p += ASE_SIZEOF(c1); - c2 = *(const ase_char_t*)p; + c1 = *(const qse_char_t*)p; + p += QSE_SIZEOF(c1); + c2 = *(const qse_char_t*)p; if (matcher->ignorecase) { - c1 = ASE_CCLS_TOUPPER(matcher->ccls, c1); - c2 = ASE_CCLS_TOUPPER(matcher->ccls, c2); + c1 = QSE_CCLS_TOUPPER(matcher->ccls, c1); + c2 = QSE_CCLS_TOUPPER(matcher->ccls, c2); } #ifdef DEBUG_REX - ase_dprintf ( - ASE_T("match_charset: %c %c-%c\n"), c, c1, c2); + qse_dprintf ( + QSE_T("match_charset: %c %c-%c\n"), c, c1, c2); #endif - if (c >= c1 && c <= c2) return ASE_TRUE; + if (c >= c1 && c <= c2) return QSE_TRUE; } else if (c0 == CHARSET_CLASS) { - c1 = *(const ase_char_t*)p; + c1 = *(const qse_char_t*)p; #ifdef DEBUG_REX - ase_dprintf ( - ASE_T("match_charset: %c %s\n"), + qse_dprintf ( + QSE_T("match_charset: %c %s\n"), c, __char_class[c1].name); #endif if (__char_class[c1].func ( - matcher->ccls, c)) return ASE_TRUE; + matcher->ccls, c)) return QSE_TRUE; } else { - ASE_ASSERT (!"should never happen - invalid charset code"); + QSE_ASSERT (!"should never happen - invalid charset code"); break; } - p += ASE_SIZEOF(c1); + p += QSE_SIZEOF(c1); } - return ASE_FALSE; + return QSE_FALSE; } -static ase_bool_t cc_isalnum (ase_ccls_t* ccls, ase_char_t c) +static qse_bool_t cc_isalnum (qse_ccls_t* ccls, qse_char_t c) { - return ASE_CCLS_ISALNUM (ccls, c); + return QSE_CCLS_ISALNUM (ccls, c); } -static ase_bool_t cc_isalpha (ase_ccls_t* ccls, ase_char_t c) +static qse_bool_t cc_isalpha (qse_ccls_t* ccls, qse_char_t c) { - return ASE_CCLS_ISALPHA (ccls, c); + return QSE_CCLS_ISALPHA (ccls, c); } -static ase_bool_t cc_isblank (ase_ccls_t* ccls, ase_char_t c) +static qse_bool_t cc_isblank (qse_ccls_t* ccls, qse_char_t c) { - return c == ASE_T(' ') || c == ASE_T('\t'); + return c == QSE_T(' ') || c == QSE_T('\t'); } -static ase_bool_t cc_iscntrl (ase_ccls_t* ccls, ase_char_t c) +static qse_bool_t cc_iscntrl (qse_ccls_t* ccls, qse_char_t c) { - return ASE_CCLS_ISCNTRL (ccls, c); + return QSE_CCLS_ISCNTRL (ccls, c); } -static ase_bool_t cc_isdigit (ase_ccls_t* ccls, ase_char_t c) +static qse_bool_t cc_isdigit (qse_ccls_t* ccls, qse_char_t c) { - return ASE_CCLS_ISDIGIT (ccls, c); + return QSE_CCLS_ISDIGIT (ccls, c); } -static ase_bool_t cc_isgraph (ase_ccls_t* ccls, ase_char_t c) +static qse_bool_t cc_isgraph (qse_ccls_t* ccls, qse_char_t c) { - return ASE_CCLS_ISGRAPH (ccls, c); + return QSE_CCLS_ISGRAPH (ccls, c); } -static ase_bool_t cc_islower (ase_ccls_t* ccls, ase_char_t c) +static qse_bool_t cc_islower (qse_ccls_t* ccls, qse_char_t c) { - return ASE_CCLS_ISLOWER (ccls, c); + return QSE_CCLS_ISLOWER (ccls, c); } -static ase_bool_t cc_isprint (ase_ccls_t* ccls, ase_char_t c) +static qse_bool_t cc_isprint (qse_ccls_t* ccls, qse_char_t c) { - return ASE_CCLS_ISPRINT (ccls, c); + return QSE_CCLS_ISPRINT (ccls, c); } -static ase_bool_t cc_ispunct (ase_ccls_t* ccls, ase_char_t c) +static qse_bool_t cc_ispunct (qse_ccls_t* ccls, qse_char_t c) { - return ASE_CCLS_ISPUNCT (ccls, c); + return QSE_CCLS_ISPUNCT (ccls, c); } -static ase_bool_t cc_isspace (ase_ccls_t* ccls, ase_char_t c) +static qse_bool_t cc_isspace (qse_ccls_t* ccls, qse_char_t c) { - return ASE_CCLS_ISSPACE (ccls, c); + return QSE_CCLS_ISSPACE (ccls, c); } -static ase_bool_t cc_isupper (ase_ccls_t* ccls, ase_char_t c) +static qse_bool_t cc_isupper (qse_ccls_t* ccls, qse_char_t c) { - return ASE_CCLS_ISUPPER (ccls, c); + return QSE_CCLS_ISUPPER (ccls, c); } -static ase_bool_t cc_isxdigit (ase_ccls_t* ccls, ase_char_t c) +static qse_bool_t cc_isxdigit (qse_ccls_t* ccls, qse_char_t c) { - return ASE_CCLS_ISXDIGIT (ccls, c); + return QSE_CCLS_ISXDIGIT (ccls, c); } #if 0 #define DPRINTF awk->prmfns.misc.dprintf #define DCUSTOM awk->prmfns.misc.custom_data -void ase_awk_dprintrex (ase_awk_t* awk, void* rex) +void qse_awk_dprintrex (qse_awk_t* awk, void* rex) { __print_pattern (awk, rex); - DPRINTF (DCUSTOM, awk->prmfns.misc.custom_data, ASE_T("\n")); + DPRINTF (DCUSTOM, awk->prmfns.misc.custom_data, QSE_T("\n")); } -static const ase_byte_t* __print_pattern (ase_awk_t* awk, const ase_byte_t* p) +static const qse_byte_t* __print_pattern (qse_awk_t* awk, const qse_byte_t* p) { - ase_size_t i; + qse_size_t i; rhdr_t* rhdr; - rhdr = (rhdr_t*)p; p += ASE_SIZEOF(*rhdr); + rhdr = (rhdr_t*)p; p += QSE_SIZEOF(*rhdr); for (i = 0; i < rhdr->nb; i++) { - if (i != 0) DPRINTF (DCUSTOM, ASE_T("|")); + if (i != 0) DPRINTF (DCUSTOM, QSE_T("|")); p = __print_branch (awk, p); } return p; } -static const ase_byte_t* __print_branch (ase_awk_t* awk, const ase_byte_t* p) +static const qse_byte_t* __print_branch (qse_awk_t* awk, const qse_byte_t* p) { - ase_size_t i; + qse_size_t i; bhdr_t* bhdr; - bhdr = (bhdr_t*)p; p += ASE_SIZEOF(*bhdr); + bhdr = (bhdr_t*)p; p += QSE_SIZEOF(*bhdr); for (i = 0; i < bhdr->na; i++) { @@ -1908,97 +1908,97 @@ static const ase_byte_t* __print_branch (ase_awk_t* awk, const ase_byte_t* p) return p; } -static const ase_byte_t* __print_atom (ase_awk_t* awk, const ase_byte_t* p) +static const qse_byte_t* __print_atom (qse_awk_t* awk, const qse_byte_t* p) { const code_t* cp = (const code_t*)p; if (cp->cmd == CMD_BOL) { - DPRINTF (DCUSTOM, ASE_T("^")); - p += ASE_SIZEOF(*cp); + DPRINTF (DCUSTOM, QSE_T("^")); + p += QSE_SIZEOF(*cp); } else if (cp->cmd == CMD_EOL) { - DPRINTF (DCUSTOM, ASE_T("$")); - p += ASE_SIZEOF(*cp); + DPRINTF (DCUSTOM, QSE_T("$")); + p += QSE_SIZEOF(*cp); } else if (cp->cmd == CMD_ANY_CHAR) { - DPRINTF (DCUSTOM, ASE_T(".")); - p += ASE_SIZEOF(*cp); + DPRINTF (DCUSTOM, QSE_T(".")); + p += QSE_SIZEOF(*cp); } else if (cp->cmd == CMD_ORD_CHAR) { - p += ASE_SIZEOF(*cp); - DPRINTF (DCUSTOM, ASE_T("%c"), *(ase_char_t*)p); - p += ASE_SIZEOF(ase_char_t); + p += QSE_SIZEOF(*cp); + DPRINTF (DCUSTOM, QSE_T("%c"), *(qse_char_t*)p); + p += QSE_SIZEOF(qse_char_t); } else if (cp->cmd == CMD_CHARSET) { - ase_size_t i; + qse_size_t i; cshdr_t* cshdr; - p += ASE_SIZEOF(*cp); - DPRINTF (DCUSTOM, ASE_T("[")); - if (cp->negate) DPRINTF (DCUSTOM, ASE_T("^")); + p += QSE_SIZEOF(*cp); + DPRINTF (DCUSTOM, QSE_T("[")); + if (cp->negate) DPRINTF (DCUSTOM, QSE_T("^")); - cshdr = (cshdr_t*)p; p += ASE_SIZEOF(*cshdr); + cshdr = (cshdr_t*)p; p += QSE_SIZEOF(*cshdr); for (i = 0; i < cshdr->csc; i++) { - ase_char_t c0, c1, c2; + qse_char_t c0, c1, c2; - c0 = *(ase_char_t*)p; - p += ASE_SIZEOF(c0); + c0 = *(qse_char_t*)p; + p += QSE_SIZEOF(c0); if (c0 == CHARSET_ONE) { - c1 = *(ase_char_t*)p; - DPRINTF (DCUSTOM, ASE_T("%c"), c1); + c1 = *(qse_char_t*)p; + DPRINTF (DCUSTOM, QSE_T("%c"), c1); } else if (c0 == CHARSET_RANGE) { - c1 = *(ase_char_t*)p; - p += ASE_SIZEOF(c1); - c2 = *(ase_char_t*)p; - DPRINTF (DCUSTOM, ASE_T("%c-%c"), c1, c2); + c1 = *(qse_char_t*)p; + p += QSE_SIZEOF(c1); + c2 = *(qse_char_t*)p; + DPRINTF (DCUSTOM, QSE_T("%c-%c"), c1, c2); } else if (c0 == CHARSET_CLASS) { - c1 = *(ase_char_t*)p; - DPRINTF (DCUSTOM, ASE_T("[:%s:]"), __char_class[c1].name); + c1 = *(qse_char_t*)p; + DPRINTF (DCUSTOM, QSE_T("[:%s:]"), __char_class[c1].name); } else { - DPRINTF (DCUSTOM, ASE_T("should never happen - invalid charset code\n")); + DPRINTF (DCUSTOM, QSE_T("should never happen - invalid charset code\n")); } - p += ASE_SIZEOF(c1); + p += QSE_SIZEOF(c1); } - DPRINTF (DCUSTOM, ASE_T("]")); + DPRINTF (DCUSTOM, QSE_T("]")); } else if (cp->cmd == CMD_GROUP) { - p += ASE_SIZEOF(*cp); - DPRINTF (DCUSTOM, ASE_T("(")); + p += QSE_SIZEOF(*cp); + DPRINTF (DCUSTOM, QSE_T("(")); p = __print_pattern (awk, p); - DPRINTF (DCUSTOM, ASE_T(")")); + DPRINTF (DCUSTOM, QSE_T(")")); } else { - DPRINTF (DCUSTOM, ASE_T("should never happen - invalid atom code\n")); + DPRINTF (DCUSTOM, QSE_T("should never happen - invalid atom code\n")); } if (cp->lbound == 0 && cp->ubound == BOUND_MAX) - DPRINTF (DCUSTOM, ASE_T("*")); + DPRINTF (DCUSTOM, QSE_T("*")); else if (cp->lbound == 1 && cp->ubound == BOUND_MAX) - DPRINTF (DCUSTOM, ASE_T("+")); + DPRINTF (DCUSTOM, QSE_T("+")); else if (cp->lbound == 0 && cp->ubound == 1) - DPRINTF (DCUSTOM, ASE_T("?")); + DPRINTF (DCUSTOM, QSE_T("?")); else if (cp->lbound != 1 || cp->ubound != 1) { - DPRINTF (DCUSTOM, ASE_T("{%lu,%lu}"), + DPRINTF (DCUSTOM, QSE_T("{%lu,%lu}"), (unsigned long)cp->lbound, (unsigned long)cp->ubound); } diff --git a/qse/lib/cmn/sio.c b/qse/lib/cmn/sio.c index 2c756d19..33fbcdd3 100644 --- a/qse/lib/cmn/sio.c +++ b/qse/lib/cmn/sio.c @@ -2,23 +2,23 @@ * $Id: sio.c,v 1.30 2006/01/15 06:51:35 bacon Ease $ */ -#include +#include #include "mem.h" -static ase_ssize_t __sio_input (int cmd, void* arg, void* buf, ase_size_t size); -static ase_ssize_t __sio_output (int cmd, void* arg, void* buf, ase_size_t size); +static qse_ssize_t __sio_input (int cmd, void* arg, void* buf, qse_size_t size); +static qse_ssize_t __sio_output (int cmd, void* arg, void* buf, qse_size_t size); #ifdef _WIN32 #include #endif -static ase_sio_t __sio_in = +static qse_sio_t __sio_in = { - ASE_NULL, /* mmgr */ + QSE_NULL, /* mmgr */ /* fio */ { - ASE_NULL, + QSE_NULL, #ifdef _WIN32 (HANDLE)STD_INPUT_HANDLE, #else @@ -28,7 +28,7 @@ static ase_sio_t __sio_in = /* tio */ { - ASE_NULL, + QSE_NULL, 0, __sio_input, @@ -46,13 +46,13 @@ static ase_sio_t __sio_in = } }; -static ase_sio_t __sio_out = +static qse_sio_t __sio_out = { - ASE_NULL, /* mmgr */ + QSE_NULL, /* mmgr */ /* fio */ { - ASE_NULL, + QSE_NULL, #ifdef _WIN32 (HANDLE)STD_OUTPUT_HANDLE, #else @@ -62,7 +62,7 @@ static ase_sio_t __sio_out = /* tio */ { - ASE_NULL, + QSE_NULL, 0, __sio_input, @@ -80,13 +80,13 @@ static ase_sio_t __sio_out = } }; -static ase_sio_t __sio_err = +static qse_sio_t __sio_err = { - ASE_NULL, /* mmgr */ + QSE_NULL, /* mmgr */ /* fio */ { - ASE_NULL, + QSE_NULL, #ifdef _WIN32 (HANDLE)STD_ERROR_HANDLE, #else @@ -96,7 +96,7 @@ static ase_sio_t __sio_err = /* tio */ { - ASE_NULL, + QSE_NULL, 0, __sio_input, @@ -114,209 +114,209 @@ static ase_sio_t __sio_err = } }; -ase_sio_t* ase_sio_in = &__sio_in; -ase_sio_t* ase_sio_out = &__sio_out; -ase_sio_t* ase_sio_err = &__sio_err; +qse_sio_t* qse_sio_in = &__sio_in; +qse_sio_t* qse_sio_out = &__sio_out; +qse_sio_t* qse_sio_err = &__sio_err; -ase_sio_t* ase_sio_open ( - ase_mmgr_t* mmgr, ase_size_t ext, const ase_char_t* file, int flags) +qse_sio_t* qse_sio_open ( + qse_mmgr_t* mmgr, qse_size_t ext, const qse_char_t* file, int flags) { - ase_sio_t* sio; + qse_sio_t* sio; - if (mmgr == ASE_NULL) + if (mmgr == QSE_NULL) { - mmgr = ASE_MMGR_GETDFL(); + mmgr = QSE_MMGR_GETDFL(); - ASE_ASSERTX (mmgr != ASE_NULL, - "Set the memory manager with ASE_MMGR_SETDFL()"); + QSE_ASSERTX (mmgr != QSE_NULL, + "Set the memory manager with QSE_MMGR_SETDFL()"); - if (mmgr == ASE_NULL) return ASE_NULL; + if (mmgr == QSE_NULL) return QSE_NULL; } - sio = ASE_MMGR_ALLOC (mmgr, ASE_SIZEOF(ase_sio_t) + ext); - if (sio == ASE_NULL) return ASE_NULL; + sio = QSE_MMGR_ALLOC (mmgr, QSE_SIZEOF(qse_sio_t) + ext); + if (sio == QSE_NULL) return QSE_NULL; - if (ase_sio_init (sio, mmgr, file, flags) == ASE_NULL) + if (qse_sio_init (sio, mmgr, file, flags) == QSE_NULL) { - ASE_MMGR_FREE (mmgr, sio); - return ASE_NULL; + QSE_MMGR_FREE (mmgr, sio); + return QSE_NULL; } return sio; } -void ase_sio_close (ase_sio_t* sio) +void qse_sio_close (qse_sio_t* sio) { - ase_sio_fini (sio); - ASE_MMGR_FREE (sio->mmgr, sio); + qse_sio_fini (sio); + QSE_MMGR_FREE (sio->mmgr, sio); } -ase_sio_t* ase_sio_init ( - ase_sio_t* sio, ase_mmgr_t* mmgr, const ase_char_t* file, int flags) +qse_sio_t* qse_sio_init ( + qse_sio_t* sio, qse_mmgr_t* mmgr, const qse_char_t* file, int flags) { - ASE_MEMSET (sio, 0, ASE_SIZEOF(*sio)); + QSE_MEMSET (sio, 0, QSE_SIZEOF(*sio)); sio->mmgr = mmgr; - if (ase_fio_init (&sio->fio, mmgr, file, flags, 0644) == ASE_NULL) + if (qse_fio_init (&sio->fio, mmgr, file, flags, 0644) == QSE_NULL) { - return ASE_NULL; + return QSE_NULL; } - if (ase_tio_init(&sio->tio, mmgr) == ASE_NULL) + if (qse_tio_init(&sio->tio, mmgr) == QSE_NULL) { - ase_fio_fini (&sio->fio); - return ASE_NULL; + qse_fio_fini (&sio->fio); + return QSE_NULL; } - if (ase_tio_attachin(&sio->tio, __sio_input, sio) == -1 || - ase_tio_attachout(&sio->tio, __sio_output, sio) == -1) + if (qse_tio_attachin(&sio->tio, __sio_input, sio) == -1 || + qse_tio_attachout(&sio->tio, __sio_output, sio) == -1) { - ase_tio_fini (&sio->tio); - ase_fio_fini (&sio->fio); - return ASE_NULL; + qse_tio_fini (&sio->tio); + qse_fio_fini (&sio->fio); + return QSE_NULL; } return sio; } -void ase_sio_fini (ase_sio_t* sio) +void qse_sio_fini (qse_sio_t* sio) { - /*if (ase_sio_flush (sio) == -1) return -1;*/ - ase_sio_flush (sio); - ase_tio_fini (&sio->tio); - ase_fio_fini (&sio->fio); + /*if (qse_sio_flush (sio) == -1) return -1;*/ + qse_sio_flush (sio); + qse_tio_fini (&sio->tio); + qse_fio_fini (&sio->fio); - if (sio == ase_sio_in) ase_sio_in = ASE_NULL; - else if (sio == ase_sio_out) ase_sio_out = ASE_NULL; - else if (sio == ase_sio_err) ase_sio_err = ASE_NULL; + if (sio == qse_sio_in) qse_sio_in = QSE_NULL; + else if (sio == qse_sio_out) qse_sio_out = QSE_NULL; + else if (sio == qse_sio_err) qse_sio_err = QSE_NULL; } -ase_sio_hnd_t ase_sio_gethandle (ase_sio_t* sio) +qse_sio_hnd_t qse_sio_gethandle (qse_sio_t* sio) { - /*return ase_fio_gethandle (&sio->fio);*/ - return ASE_FIO_HANDLE(&sio->fio); + /*return qse_fio_gethandle (&sio->fio);*/ + return QSE_FIO_HANDLE(&sio->fio); } -ase_ssize_t ase_sio_flush (ase_sio_t* sio) +qse_ssize_t qse_sio_flush (qse_sio_t* sio) { - return ase_tio_flush (&sio->tio); + return qse_tio_flush (&sio->tio); } -void ase_sio_purge (ase_sio_t* sio) +void qse_sio_purge (qse_sio_t* sio) { - ase_tio_purge (&sio->tio); + qse_tio_purge (&sio->tio); } -ase_ssize_t ase_sio_getc (ase_sio_t* sio, ase_char_t* c) +qse_ssize_t qse_sio_getc (qse_sio_t* sio, qse_char_t* c) { - return ase_tio_getc (&sio->tio, c); + return qse_tio_getc (&sio->tio, c); } -ase_ssize_t ase_sio_gets (ase_sio_t* sio, ase_char_t* buf, ase_size_t size) +qse_ssize_t qse_sio_gets (qse_sio_t* sio, qse_char_t* buf, qse_size_t size) { - return ase_tio_gets (&sio->tio, buf, size); + return qse_tio_gets (&sio->tio, buf, size); } -ase_ssize_t ase_sio_getsx (ase_sio_t* sio, ase_char_t* buf, ase_size_t size) +qse_ssize_t qse_sio_getsx (qse_sio_t* sio, qse_char_t* buf, qse_size_t size) { - return ase_tio_getsx (&sio->tio, buf, size); + return qse_tio_getsx (&sio->tio, buf, size); } -ase_ssize_t ase_sio_getstr (ase_sio_t* sio, ase_str_t* buf) +qse_ssize_t qse_sio_getstr (qse_sio_t* sio, qse_str_t* buf) { - return ase_tio_getstr (&sio->tio, buf); + return qse_tio_getstr (&sio->tio, buf); } -ase_ssize_t ase_sio_putc (ase_sio_t* sio, ase_char_t c) +qse_ssize_t qse_sio_putc (qse_sio_t* sio, qse_char_t c) { - return ase_tio_putc (&sio->tio, c); + return qse_tio_putc (&sio->tio, c); } -ase_ssize_t ase_sio_puts (ase_sio_t* sio, const ase_char_t* str) +qse_ssize_t qse_sio_puts (qse_sio_t* sio, const qse_char_t* str) { - return ase_tio_puts (&sio->tio, str); + return qse_tio_puts (&sio->tio, str); } -ase_ssize_t ase_sio_putsx (ase_sio_t* sio, const ase_char_t* str, ase_size_t size) +qse_ssize_t qse_sio_putsx (qse_sio_t* sio, const qse_char_t* str, qse_size_t size) { - return ase_tio_putsx (&sio->tio, str, size); + return qse_tio_putsx (&sio->tio, str, size); } #if 0 -ase_ssize_t ase_sio_putsn (ase_sio_t* sio, ...) +qse_ssize_t qse_sio_putsn (qse_sio_t* sio, ...) { - ase_ssize_t n; - ase_va_list ap; + qse_ssize_t n; + qse_va_list ap; - ase_va_start (ap, sio); - n = ase_tio_putsv (&sio->tio, ap); - ase_va_end (ap); + qse_va_start (ap, sio); + n = qse_tio_putsv (&sio->tio, ap); + qse_va_end (ap); return n; } -ase_ssize_t ase_sio_putsxn (ase_sio_t* sio, ...) +qse_ssize_t qse_sio_putsxn (qse_sio_t* sio, ...) { - ase_ssize_t n; - ase_va_list ap; + qse_ssize_t n; + qse_va_list ap; - ase_va_start (ap, sio); - n = ase_tio_putsxv (&sio->tio, ap); - ase_va_end (ap); + qse_va_start (ap, sio); + n = qse_tio_putsxv (&sio->tio, ap); + qse_va_end (ap); return n; } -ase_ssize_t ase_sio_putsv (ase_sio_t* sio, ase_va_list ap) +qse_ssize_t qse_sio_putsv (qse_sio_t* sio, qse_va_list ap) { - return ase_tio_putsv (&sio->tio, ap); + return qse_tio_putsv (&sio->tio, ap); } -ase_ssize_t ase_sio_putsxv (ase_sio_t* sio, ase_va_list ap) +qse_ssize_t qse_sio_putsxv (qse_sio_t* sio, qse_va_list ap) { - return ase_tio_putsxv (&sio->tio, ap); + return qse_tio_putsxv (&sio->tio, ap); } -int ase_sio_getpos (ase_sio_t* sio, ase_siopos_t* pos) +int qse_sio_getpos (qse_sio_t* sio, qse_siopos_t* pos) { - ase_off_t off; + qse_off_t off; - off = ase_fio_seek (&sio->fio, 0, ASE_FIO_SEEK_CURRENT); - if (off == (ase_off_t)-1) return -1; + off = qse_fio_seek (&sio->fio, 0, QSE_FIO_SEEK_CURRENT); + if (off == (qse_off_t)-1) return -1; *pos = off; return 0; } -int ase_sio_setpos (ase_sio_t* sio, ase_siopos_t pos) +int qse_sio_setpos (qse_sio_t* sio, qse_siopos_t pos) { - if (ase_sio_flush(sio) == -1) return -1; - return (ase_fio_seek (&sio->fio, - pos, ASE_FIO_SEEK_BEGIN) == (ase_off_t)-1)? -1: 0; + if (qse_sio_flush(sio) == -1) return -1; + return (qse_fio_seek (&sio->fio, + pos, QSE_FIO_SEEK_BEGIN) == (qse_off_t)-1)? -1: 0; } -int ase_sio_rewind (ase_sio_t* sio) +int qse_sio_rewind (qse_sio_t* sio) { - if (ase_sio_flush(sio) == -1) return -1; - return (ase_fio_seek (&sio->fio, - 0, ASE_FIO_SEEK_BEGIN) == (ase_off_t)-1)? -1: 0; + if (qse_sio_flush(sio) == -1) return -1; + return (qse_fio_seek (&sio->fio, + 0, QSE_FIO_SEEK_BEGIN) == (qse_off_t)-1)? -1: 0; } -int ase_sio_movetoend (ase_sio_t* sio) +int qse_sio_movetoend (qse_sio_t* sio) { - if (ase_sio_flush(sio) == -1) return -1; - return (ase_fio_seek (&sio->fio, - 0, ASE_FIO_SEEK_END) == (ase_off_t)-1)? -1: 0; + if (qse_sio_flush(sio) == -1) return -1; + return (qse_fio_seek (&sio->fio, + 0, QSE_FIO_SEEK_END) == (qse_off_t)-1)? -1: 0; } #endif -static ase_ssize_t __sio_input (int cmd, void* arg, void* buf, ase_size_t size) +static qse_ssize_t __sio_input (int cmd, void* arg, void* buf, qse_size_t size) { - ase_sio_t* sio = (ase_sio_t*)arg; + qse_sio_t* sio = (qse_sio_t*)arg; - ASE_ASSERT (sio != ASE_NULL); + QSE_ASSERT (sio != QSE_NULL); - if (cmd == ASE_TIO_IO_DATA) + if (cmd == QSE_TIO_IO_DATA) { #ifdef _WIN32 /* TODO: I hate this way of adjusting the handle value @@ -333,19 +333,19 @@ static ase_ssize_t __sio_input (int cmd, void* arg, void* buf, ase_size_t size) } } #endif - return ase_fio_read (&sio->fio, buf, size); + return qse_fio_read (&sio->fio, buf, size); } return 0; } -static ase_ssize_t __sio_output (int cmd, void* arg, void* buf, ase_size_t size) +static qse_ssize_t __sio_output (int cmd, void* arg, void* buf, qse_size_t size) { - ase_sio_t* sio = (ase_sio_t*)arg; + qse_sio_t* sio = (qse_sio_t*)arg; - ASE_ASSERT (sio != ASE_NULL); + QSE_ASSERT (sio != QSE_NULL); - if (cmd == ASE_TIO_IO_DATA) + if (cmd == QSE_TIO_IO_DATA) { #ifdef _WIN32 /* TODO: I hate this way of adjusting the handle value @@ -362,7 +362,7 @@ static ase_ssize_t __sio_output (int cmd, void* arg, void* buf, ase_size_t size) } } #endif - return ase_fio_write (&sio->fio, buf, size); + return qse_fio_write (&sio->fio, buf, size); } return 0; diff --git a/qse/lib/cmn/sll.c b/qse/lib/cmn/sll.c index 37bf49fb..5f2fe93f 100644 --- a/qse/lib/cmn/sll.c +++ b/qse/lib/cmn/sll.c @@ -4,35 +4,35 @@ * {License} */ -#include +#include #include "mem.h" -#define sll_t ase_sll_t -#define node_t ase_sll_node_t -#define copier_t ase_sll_copier_t -#define freeer_t ase_sll_freeer_t -#define comper_t ase_sll_comper_t -#define walker_t ase_sll_walker_t +#define sll_t qse_sll_t +#define node_t qse_sll_node_t +#define copier_t qse_sll_copier_t +#define freeer_t qse_sll_freeer_t +#define comper_t qse_sll_comper_t +#define walker_t qse_sll_walker_t -#define HEAD(s) ASE_SLL_HEAD(s) -#define TAIL(s) ASE_SLL_TAIL(s) -#define SIZE(s) ASE_SLL_SIZE(s) +#define HEAD(s) QSE_SLL_HEAD(s) +#define TAIL(s) QSE_SLL_TAIL(s) +#define SIZE(s) QSE_SLL_SIZE(s) -#define DPTR(n) ASE_SLL_DPTR(n) -#define DLEN(n) ASE_SLL_DLEN(n) -#define NEXT(n) ASE_SLL_NEXT(n) +#define DPTR(n) QSE_SLL_DPTR(n) +#define DLEN(n) QSE_SLL_DLEN(n) +#define NEXT(n) QSE_SLL_NEXT(n) #define TOB(sll,len) ((len)*(sll)->scale) -#define SIZEOF(x) ASE_SIZEOF(x) -#define size_t ase_size_t -#define mmgr_t ase_mmgr_t +#define SIZEOF(x) QSE_SIZEOF(x) +#define size_t qse_size_t +#define mmgr_t qse_mmgr_t static int comp_data (sll_t* sll, const void* dptr1, size_t dlen1, const void* dptr2, size_t dlen2) { - if (dlen1 == dlen2) return ASE_MEMCMP (dptr1, dptr2, TOB(sll,dlen1)); + if (dlen1 == dlen2) return QSE_MEMCMP (dptr1, dptr2, TOB(sll,dlen1)); /* it just returns 1 to indicate that they are different. */ return 1; } @@ -41,173 +41,173 @@ static node_t* alloc_node (sll_t* sll, void* dptr, size_t dlen) { node_t* n; - if (sll->copier == ASE_SLL_COPIER_SIMPLE) + if (sll->copier == QSE_SLL_COPIER_SIMPLE) { - n = ASE_MMGR_ALLOC (sll->mmgr, SIZEOF(node_t)); - if (n == ASE_NULL) return ASE_NULL; + n = QSE_MMGR_ALLOC (sll->mmgr, SIZEOF(node_t)); + if (n == QSE_NULL) return QSE_NULL; DPTR(n) = dptr; } - else if (sll->copier == ASE_SLL_COPIER_INLINE) + else if (sll->copier == QSE_SLL_COPIER_INLINE) { - n = ASE_MMGR_ALLOC (sll->mmgr, + n = QSE_MMGR_ALLOC (sll->mmgr, SIZEOF(node_t) + TOB(sll,dlen)); - if (n == ASE_NULL) return ASE_NULL; + if (n == QSE_NULL) return QSE_NULL; - ASE_MEMCPY (n + 1, dptr, TOB(sll,dlen)); + QSE_MEMCPY (n + 1, dptr, TOB(sll,dlen)); DPTR(n) = n + 1; } else { - n = ASE_MMGR_ALLOC (sll->mmgr, SIZEOF(node_t)); - if (n == ASE_NULL) return ASE_NULL; + n = QSE_MMGR_ALLOC (sll->mmgr, SIZEOF(node_t)); + if (n == QSE_NULL) return QSE_NULL; DPTR(n) = sll->copier (sll, dptr, dlen); - if (DPTR(n) == ASE_NULL) + if (DPTR(n) == QSE_NULL) { - ASE_MMGR_FREE (sll->mmgr, n); - return ASE_NULL; + QSE_MMGR_FREE (sll->mmgr, n); + return QSE_NULL; } } DLEN(n) = dlen; - NEXT(n) = ASE_NULL; + NEXT(n) = QSE_NULL; return n; } -sll_t* ase_sll_open (mmgr_t* mmgr, size_t ext) +sll_t* qse_sll_open (mmgr_t* mmgr, size_t ext) { sll_t* sll; - if (mmgr == ASE_NULL) + if (mmgr == QSE_NULL) { - mmgr = ASE_MMGR_GETDFL(); + mmgr = QSE_MMGR_GETDFL(); - ASE_ASSERTX (mmgr != ASE_NULL, - "Set the memory manager with ASE_MMGR_SETDFL()"); + QSE_ASSERTX (mmgr != QSE_NULL, + "Set the memory manager with QSE_MMGR_SETDFL()"); - if (mmgr == ASE_NULL) return ASE_NULL; + if (mmgr == QSE_NULL) return QSE_NULL; } - sll = ASE_MMGR_ALLOC (mmgr, SIZEOF(sll_t) + ext); - if (sll == ASE_NULL) return ASE_NULL; + sll = QSE_MMGR_ALLOC (mmgr, SIZEOF(sll_t) + ext); + if (sll == QSE_NULL) return QSE_NULL; - if (ase_sll_init (sll, mmgr) == ASE_NULL) + if (qse_sll_init (sll, mmgr) == QSE_NULL) { - ASE_MMGR_FREE (mmgr, sll); - return ASE_NULL; + QSE_MMGR_FREE (mmgr, sll); + return QSE_NULL; } return sll; } -void ase_sll_close (sll_t* sll) +void qse_sll_close (sll_t* sll) { - ase_sll_fini (sll); - ASE_MMGR_FREE (sll->mmgr, sll); + qse_sll_fini (sll); + QSE_MMGR_FREE (sll->mmgr, sll); } -sll_t* ase_sll_init (sll_t* sll, mmgr_t* mmgr) +sll_t* qse_sll_init (sll_t* sll, mmgr_t* mmgr) { /* do not zero out the extension */ - ASE_MEMSET (sll, 0, SIZEOF(*sll)); + QSE_MEMSET (sll, 0, SIZEOF(*sll)); sll->mmgr = mmgr; sll->size = 0; sll->scale = 1; sll->comper = comp_data; - sll->copier = ASE_SLL_COPIER_SIMPLE; + sll->copier = QSE_SLL_COPIER_SIMPLE; return sll; } -void ase_sll_fini (sll_t* sll) +void qse_sll_fini (sll_t* sll) { - ase_sll_clear (sll); + qse_sll_clear (sll); } -void* ase_sll_getxtn (sll_t* sll) +void* qse_sll_getxtn (sll_t* sll) { return sll + 1; } -mmgr_t* ase_sll_getmmgr (sll_t* sll) +mmgr_t* qse_sll_getmmgr (sll_t* sll) { return sll->mmgr; } -void ase_sll_setmmgr (sll_t* sll, mmgr_t* mmgr) +void qse_sll_setmmgr (sll_t* sll, mmgr_t* mmgr) { sll->mmgr = mmgr; } -int ase_sll_getscale (sll_t* sll) +int qse_sll_getscale (sll_t* sll) { return sll->scale; } -void ase_sll_setscale (sll_t* sll, int scale) +void qse_sll_setscale (sll_t* sll, int scale) { - ASE_ASSERTX (scale > 0 && scale <= ASE_TYPE_MAX(ase_byte_t), - "The scale should be larger than 0 and less than or equal to the maximum value that the ase_byte_t type can hold"); + QSE_ASSERTX (scale > 0 && scale <= QSE_TYPE_MAX(qse_byte_t), + "The scale should be larger than 0 and less than or equal to the maximum value that the qse_byte_t type can hold"); if (scale <= 0) scale = 1; - if (scale > ASE_TYPE_MAX(ase_byte_t)) scale = ASE_TYPE_MAX(ase_byte_t); + if (scale > QSE_TYPE_MAX(qse_byte_t)) scale = QSE_TYPE_MAX(qse_byte_t); sll->scale = scale; } -copier_t ase_sll_getcopier (sll_t* sll) +copier_t qse_sll_getcopier (sll_t* sll) { return sll->copier; } -void ase_sll_setcopier (sll_t* sll, copier_t copier) +void qse_sll_setcopier (sll_t* sll, copier_t copier) { - if (copier == ASE_NULL) copier = ASE_SLL_COPIER_SIMPLE; + if (copier == QSE_NULL) copier = QSE_SLL_COPIER_SIMPLE; sll->copier = copier; } -freeer_t ase_sll_getfreeer (sll_t* sll) +freeer_t qse_sll_getfreeer (sll_t* sll) { return sll->freeer; } -void ase_sll_setfreeer (sll_t* sll, freeer_t freeer) +void qse_sll_setfreeer (sll_t* sll, freeer_t freeer) { sll->freeer = freeer; } -comper_t ase_sll_getcomper (sll_t* sll) +comper_t qse_sll_getcomper (sll_t* sll) { return sll->comper; } -void ase_sll_setcomper (sll_t* sll, comper_t comper) +void qse_sll_setcomper (sll_t* sll, comper_t comper) { - if (comper == ASE_NULL) comper = comp_data; + if (comper == QSE_NULL) comper = comp_data; sll->comper = comper; } -size_t ase_sll_getsize (sll_t* sll) +size_t qse_sll_getsize (sll_t* sll) { return SIZE(sll); } -node_t* ase_sll_gethead (sll_t* sll) +node_t* qse_sll_gethead (sll_t* sll) { return HEAD(sll); } -node_t* ase_sll_gettail (sll_t* sll) +node_t* qse_sll_gettail (sll_t* sll) { return TAIL(sll); } -node_t* ase_sll_search (sll_t* sll, node_t* pos, const void* dptr, size_t dlen) +node_t* qse_sll_search (sll_t* sll, node_t* pos, const void* dptr, size_t dlen) { - pos = (pos == ASE_NULL)? pos = sll->head: NEXT(pos); + pos = (pos == QSE_NULL)? pos = sll->head: NEXT(pos); - while (pos != ASE_NULL) + while (pos != QSE_NULL) { if (sll->comper (sll, DPTR(pos), DLEN(pos), dptr, dlen) == 0) { @@ -216,21 +216,21 @@ node_t* ase_sll_search (sll_t* sll, node_t* pos, const void* dptr, size_t dlen) pos = NEXT(pos); } - return ASE_NULL; + return QSE_NULL; } -node_t* ase_sll_insert ( +node_t* qse_sll_insert ( sll_t* sll, node_t* pos, void* dptr, size_t dlen) { node_t* n = alloc_node (sll, dptr, dlen); - if (n == ASE_NULL) return ASE_NULL; + if (n == QSE_NULL) return QSE_NULL; - if (pos == ASE_NULL) + if (pos == QSE_NULL) { /* insert at the end */ - if (HEAD(sll) == ASE_NULL) + if (HEAD(sll) == QSE_NULL) { - ASE_ASSERT (TAIL(sll) == ASE_NULL); + QSE_ASSERT (TAIL(sll) == QSE_NULL); HEAD(sll) = n; } else NEXT(TAIL(sll)) = n; @@ -255,15 +255,15 @@ node_t* ase_sll_insert ( return n; } -void ase_sll_delete (sll_t* sll, node_t* pos) +void qse_sll_delete (sll_t* sll, node_t* pos) { - if (pos == ASE_NULL) return; /* not a valid node */ + if (pos == QSE_NULL) return; /* not a valid node */ if (pos == HEAD(sll)) { /* it is simple to delete the head node */ HEAD(sll) = NEXT(pos); - if (HEAD(sll) == ASE_NULL) TAIL(sll) = ASE_NULL; + if (HEAD(sll) == QSE_NULL) TAIL(sll) = QSE_NULL; } else { @@ -279,52 +279,52 @@ void ase_sll_delete (sll_t* sll, node_t* pos) if (pos == TAIL(sll)) TAIL(sll) = n2; } - if (sll->freeer != ASE_NULL) + if (sll->freeer != QSE_NULL) { /* free the actual data */ sll->freeer (sll, DPTR(pos), DLEN(pos)); } /* free the node */ - ASE_MMGR_FREE (sll->mmgr, pos); + QSE_MMGR_FREE (sll->mmgr, pos); /* decrement the number of elements */ SIZE(sll)--; } -void ase_sll_clear (sll_t* sll) +void qse_sll_clear (sll_t* sll) { - while (HEAD(sll) != ASE_NULL) ase_sll_delete (sll, HEAD(sll)); - ASE_ASSERT (TAIL(sll) == ASE_NULL); + while (HEAD(sll) != QSE_NULL) qse_sll_delete (sll, HEAD(sll)); + QSE_ASSERT (TAIL(sll) == QSE_NULL); } -node_t* ase_sll_pushhead (sll_t* sll, void* data, size_t size) +node_t* qse_sll_pushhead (sll_t* sll, void* data, size_t size) { - return ase_sll_insert (sll, HEAD(sll), data, size); + return qse_sll_insert (sll, HEAD(sll), data, size); } -node_t* ase_sll_pushtail (sll_t* sll, void* data, size_t size) +node_t* qse_sll_pushtail (sll_t* sll, void* data, size_t size) { - return ase_sll_insert (sll, ASE_NULL, data, size); + return qse_sll_insert (sll, QSE_NULL, data, size); } -void ase_sll_pophead (sll_t* sll) +void qse_sll_pophead (sll_t* sll) { - ase_sll_delete (sll, HEAD(sll)); + qse_sll_delete (sll, HEAD(sll)); } -void ase_sll_poptail (sll_t* sll) +void qse_sll_poptail (sll_t* sll) { - ase_sll_delete (sll, TAIL(sll)); + qse_sll_delete (sll, TAIL(sll)); } -void ase_sll_walk (sll_t* sll, walker_t walker, void* arg) +void qse_sll_walk (sll_t* sll, walker_t walker, void* arg) { node_t* n = HEAD(sll); - while (n != ASE_NULL) + while (n != QSE_NULL) { - if (walker(sll,n,arg) == ASE_SLL_WALK_STOP) return; + if (walker(sll,n,arg) == QSE_SLL_WALK_STOP) return; n = NEXT(n); } } diff --git a/qse/lib/cmn/str_bas.c b/qse/lib/cmn/str_bas.c index 28c75fa0..01a11342 100644 --- a/qse/lib/cmn/str_bas.c +++ b/qse/lib/cmn/str_bas.c @@ -4,61 +4,61 @@ * {License} */ -#include +#include #include "chr.h" #include "mem.h" -ase_size_t ase_strlen (const ase_char_t* str) +qse_size_t qse_strlen (const qse_char_t* str) { - const ase_char_t* p = str; - while (*p != ASE_T('\0')) p++; + const qse_char_t* p = str; + while (*p != QSE_T('\0')) p++; return p - str; } -ase_size_t ase_strbytes (const ase_char_t* str) +qse_size_t qse_strbytes (const qse_char_t* str) { - const ase_char_t* p = str; - while (*p != ASE_T('\0')) p++; - return (p - str) * ASE_SIZEOF(ase_char_t); + const qse_char_t* p = str; + while (*p != QSE_T('\0')) p++; + return (p - str) * QSE_SIZEOF(qse_char_t); } -ase_size_t ase_strcpy (ase_char_t* buf, const ase_char_t* str) +qse_size_t qse_strcpy (qse_char_t* buf, const qse_char_t* str) { - ase_char_t* org = buf; - while ((*buf++ = *str++) != ASE_T('\0')); + qse_char_t* org = buf; + while ((*buf++ = *str++) != QSE_T('\0')); return buf - org - 1; } -ase_size_t ase_strxcpy ( - ase_char_t* buf, ase_size_t bsz, const ase_char_t* str) +qse_size_t qse_strxcpy ( + qse_char_t* buf, qse_size_t bsz, const qse_char_t* str) { - ase_char_t* p, * p2; + qse_char_t* p, * p2; p = buf; p2 = buf + bsz - 1; while (p < p2) { - if (*str == ASE_T('\0')) break; + if (*str == QSE_T('\0')) break; *p++ = *str++; } - if (bsz > 0) *p = ASE_T('\0'); + if (bsz > 0) *p = QSE_T('\0'); return p - buf; } -ase_size_t ase_strncpy ( - ase_char_t* buf, const ase_char_t* str, ase_size_t len) +qse_size_t qse_strncpy ( + qse_char_t* buf, const qse_char_t* str, qse_size_t len) { /* - const ase_char_t* end = str + len; + const qse_char_t* end = str + len; while (str < end) *buf++ = *str++; - *buf = ASE_T('\0'); + *buf = QSE_T('\0'); return len; */ if (len > 0) { - ase_size_t n = (len-1) >> 3; /* (len-1) / 8 */ + qse_size_t n = (len-1) >> 3; /* (len-1) / 8 */ switch (len & 7) /* len % 8 */ { @@ -77,29 +77,29 @@ ase_size_t ase_strncpy ( } } - *buf = ASE_T('\0'); + *buf = QSE_T('\0'); return len; } -ase_size_t ase_strxncpy ( - ase_char_t* buf, ase_size_t bsz, const ase_char_t* str, ase_size_t len) +qse_size_t qse_strxncpy ( + qse_char_t* buf, qse_size_t bsz, const qse_char_t* str, qse_size_t len) { - ase_size_t n; + qse_size_t n; if (bsz <= 0) return 0; if ((n = bsz - 1) > len) n = len; - ASE_MEMCPY (buf, str, n * ASE_SIZEOF(ase_char_t)); - buf[n] = ASE_T('\0'); + QSE_MEMCPY (buf, str, n * QSE_SIZEOF(qse_char_t)); + buf[n] = QSE_T('\0'); return n; } -ase_size_t ase_strxcat (ase_char_t* buf, ase_size_t bsz, const ase_char_t* str) +qse_size_t qse_strxcat (qse_char_t* buf, qse_size_t bsz, const qse_char_t* str) { - ase_char_t* p, * p2; - ase_size_t blen; + qse_char_t* p, * p2; + qse_size_t blen; - blen = ase_strlen(buf); + blen = qse_strlen(buf); if (blen >= bsz) return blen; /* something wrong */ p = buf + blen; @@ -107,23 +107,23 @@ ase_size_t ase_strxcat (ase_char_t* buf, ase_size_t bsz, const ase_char_t* str) while (p < p2) { - if (*str == ASE_T('\0')) break; + if (*str == QSE_T('\0')) break; *p++ = *str++; } - if (bsz > 0) *p = ASE_T('\0'); + if (bsz > 0) *p = QSE_T('\0'); return p - buf; } -ase_size_t ase_strxncat ( - ase_char_t* buf, ase_size_t bsz, const ase_char_t* str, ase_size_t len) +qse_size_t qse_strxncat ( + qse_char_t* buf, qse_size_t bsz, const qse_char_t* str, qse_size_t len) { - ase_char_t* p, * p2; - const ase_char_t* end; - ase_size_t blen; + qse_char_t* p, * p2; + const qse_char_t* end; + qse_size_t blen; - blen = ase_strlen(buf); + blen = qse_strlen(buf); if (blen >= bsz) return blen; /* something wrong */ p = buf + blen; @@ -137,37 +137,37 @@ ase_size_t ase_strxncat ( *p++ = *str++; } - if (bsz > 0) *p = ASE_T('\0'); + if (bsz > 0) *p = QSE_T('\0'); return p - buf; } -int ase_strcmp (const ase_char_t* s1, const ase_char_t* s2) +int qse_strcmp (const qse_char_t* s1, const qse_char_t* s2) { while (*s1 == *s2) { - if (*s1 == ASE_T('\0')) return 0; + if (*s1 == QSE_T('\0')) return 0; s1++, s2++; } return (*s1 > *s2)? 1: -1; } -int ase_strxcmp (const ase_char_t* s1, ase_size_t len, const ase_char_t* s2) +int qse_strxcmp (const qse_char_t* s1, qse_size_t len, const qse_char_t* s2) { - const ase_char_t* end = s1 + len; - while (s1 < end && *s2 != ASE_T('\0') && *s1 == *s2) s1++, s2++; - if (s1 == end && *s2 == ASE_T('\0')) return 0; + const qse_char_t* end = s1 + len; + while (s1 < end && *s2 != QSE_T('\0') && *s1 == *s2) s1++, s2++; + if (s1 == end && *s2 == QSE_T('\0')) return 0; if (*s1 == *s2) return (s1 < end)? 1: -1; return (*s1 > *s2)? 1: -1; } -int ase_strxncmp ( - const ase_char_t* s1, ase_size_t len1, - const ase_char_t* s2, ase_size_t len2) +int qse_strxncmp ( + const qse_char_t* s1, qse_size_t len1, + const qse_char_t* s2, qse_size_t len2) { - ase_char_t c1, c2; - const ase_char_t* end1 = s1 + len1; - const ase_char_t* end2 = s2 + len2; + qse_char_t c1, c2; + const qse_char_t* end1 = s1 + len1; + const qse_char_t* end2 = s2 + len2; while (s1 < end1) { @@ -185,32 +185,32 @@ int ase_strxncmp ( return (s2 < end2)? -1: 0; } -int ase_strcasecmp ( - const ase_char_t* s1, const ase_char_t* s2, ase_ccls_t* ccls) +int qse_strcasecmp ( + const qse_char_t* s1, const qse_char_t* s2, qse_ccls_t* ccls) { - while (ASE_CCLS_TOUPPER(ccls,*s1) == ASE_CCLS_TOUPPER(ccls,*s2)) + while (QSE_CCLS_TOUPPER(ccls,*s1) == QSE_CCLS_TOUPPER(ccls,*s2)) { - if (*s1 == ASE_C('\0')) return 0; + if (*s1 == QSE_C('\0')) return 0; s1++, s2++; } - return (ASE_CCLS_TOUPPER(ccls,*s1) > ASE_CCLS_TOUPPER(ccls,*s2))? 1: -1; + return (QSE_CCLS_TOUPPER(ccls,*s1) > QSE_CCLS_TOUPPER(ccls,*s2))? 1: -1; } -int ase_strxncasecmp ( - const ase_char_t* s1, ase_size_t len1, - const ase_char_t* s2, ase_size_t len2, ase_ccls_t* ccls) +int qse_strxncasecmp ( + const qse_char_t* s1, qse_size_t len1, + const qse_char_t* s2, qse_size_t len2, qse_ccls_t* ccls) { - ase_char_t c1, c2; - const ase_char_t* end1 = s1 + len1; - const ase_char_t* end2 = s2 + len2; + qse_char_t c1, c2; + const qse_char_t* end1 = s1 + len1; + const qse_char_t* end2 = s2 + len2; while (s1 < end1) { - c1 = ASE_CCLS_TOUPPER (ccls, *s1); + c1 = QSE_CCLS_TOUPPER (ccls, *s1); if (s2 < end2) { - c2 = ASE_CCLS_TOUPPER (ccls, *s2); + c2 = QSE_CCLS_TOUPPER (ccls, *s2); if (c1 > c2) return 1; if (c1 < c2) return -1; } @@ -221,54 +221,54 @@ int ase_strxncasecmp ( return (s2 < end2)? -1: 0; } -ase_char_t* ase_strdup (const ase_char_t* str, ase_mmgr_t* mmgr) +qse_char_t* qse_strdup (const qse_char_t* str, qse_mmgr_t* mmgr) { - ase_char_t* tmp; + qse_char_t* tmp; - tmp = (ase_char_t*) ASE_MALLOC ( - mmgr, (ase_strlen(str)+1)*ASE_SIZEOF(ase_char_t)); - if (tmp == ASE_NULL) return ASE_NULL; + tmp = (qse_char_t*) QSE_MALLOC ( + mmgr, (qse_strlen(str)+1)*QSE_SIZEOF(qse_char_t)); + if (tmp == QSE_NULL) return QSE_NULL; - ase_strcpy (tmp, str); + qse_strcpy (tmp, str); return tmp; } -ase_char_t* ase_strxdup ( - const ase_char_t* str, ase_size_t len, ase_mmgr_t* mmgr) +qse_char_t* qse_strxdup ( + const qse_char_t* str, qse_size_t len, qse_mmgr_t* mmgr) { - ase_char_t* tmp; + qse_char_t* tmp; - tmp = (ase_char_t*) ASE_MALLOC ( - mmgr, (len+1)*ASE_SIZEOF(ase_char_t)); - if (tmp == ASE_NULL) return ASE_NULL; + tmp = (qse_char_t*) QSE_MALLOC ( + mmgr, (len+1)*QSE_SIZEOF(qse_char_t)); + if (tmp == QSE_NULL) return QSE_NULL; - ase_strncpy (tmp, str, len); + qse_strncpy (tmp, str, len); return tmp; } -ase_char_t* ase_strxdup2 ( - const ase_char_t* str1, ase_size_t len1, - const ase_char_t* str2, ase_size_t len2, ase_mmgr_t* mmgr) +qse_char_t* qse_strxdup2 ( + const qse_char_t* str1, qse_size_t len1, + const qse_char_t* str2, qse_size_t len2, qse_mmgr_t* mmgr) { - ase_char_t* tmp; + qse_char_t* tmp; - tmp = (ase_char_t*) ASE_MALLOC ( - mmgr, (len1+len2+1) * ASE_SIZEOF(ase_char_t)); - if (tmp == ASE_NULL) return ASE_NULL; + tmp = (qse_char_t*) QSE_MALLOC ( + mmgr, (len1+len2+1) * QSE_SIZEOF(qse_char_t)); + if (tmp == QSE_NULL) return QSE_NULL; - ase_strncpy (tmp, str1, len1); - ase_strncpy (tmp + len1, str2, len2); + qse_strncpy (tmp, str1, len1); + qse_strncpy (tmp + len1, str2, len2); return tmp; } -ase_char_t* ase_strstr (const ase_char_t* str, const ase_char_t* sub) +qse_char_t* qse_strstr (const qse_char_t* str, const qse_char_t* sub) { - const ase_char_t* x, * y; + const qse_char_t* x, * y; y = sub; - if (*y == ASE_T('\0')) return (ase_char_t*)str; + if (*y == QSE_T('\0')) return (qse_char_t*)str; - while (*str != ASE_T('\0')) + while (*str != QSE_T('\0')) { if (*str != *y) { @@ -279,7 +279,7 @@ ase_char_t* ase_strstr (const ase_char_t* str, const ase_char_t* sub) x = str; while (1) { - if (*y == ASE_T('\0')) return (ase_char_t*)str; + if (*y == QSE_T('\0')) return (qse_char_t*)str; if (*x++ != *y++) break; } @@ -287,35 +287,35 @@ ase_char_t* ase_strstr (const ase_char_t* str, const ase_char_t* sub) str++; } - return ASE_NULL; + return QSE_NULL; } -ase_char_t* ase_strxstr ( - const ase_char_t* str, ase_size_t size, const ase_char_t* sub) +qse_char_t* qse_strxstr ( + const qse_char_t* str, qse_size_t size, const qse_char_t* sub) { - return ase_strxnstr (str, size, sub, ase_strlen(sub)); + return qse_strxnstr (str, size, sub, qse_strlen(sub)); } -ase_char_t* ase_strxnstr ( - const ase_char_t* str, ase_size_t strsz, - const ase_char_t* sub, ase_size_t subsz) +qse_char_t* qse_strxnstr ( + const qse_char_t* str, qse_size_t strsz, + const qse_char_t* sub, qse_size_t subsz) { - const ase_char_t* end, * subp; + const qse_char_t* end, * subp; - if (subsz == 0) return (ase_char_t*)str; - if (strsz < subsz) return ASE_NULL; + if (subsz == 0) return (qse_char_t*)str; + if (strsz < subsz) return QSE_NULL; end = str + strsz - subsz; subp = sub + subsz; while (str <= end) { - const ase_char_t* x = str; - const ase_char_t* y = sub; + const qse_char_t* x = str; + const qse_char_t* y = sub; while (1) { - if (y >= subp) return (ase_char_t*)str; + if (y >= subp) return (qse_char_t*)str; if (*x != *y) break; x++; y++; } @@ -323,155 +323,155 @@ ase_char_t* ase_strxnstr ( str++; } - return ASE_NULL; + return QSE_NULL; } -ase_char_t* ase_strchr (const ase_char_t* str, ase_cint_t c) +qse_char_t* qse_strchr (const qse_char_t* str, qse_cint_t c) { - while (*str != ASE_T('\0')) + while (*str != QSE_T('\0')) { - if (*str == c) return (ase_char_t*)str; + if (*str == c) return (qse_char_t*)str; str++; } - return ASE_NULL; + return QSE_NULL; } -ase_char_t* ase_strxchr (const ase_char_t* str, ase_size_t len, ase_cint_t c) +qse_char_t* qse_strxchr (const qse_char_t* str, qse_size_t len, qse_cint_t c) { - const ase_char_t* end = str + len; + const qse_char_t* end = str + len; while (str < end) { - if (*str == c) return (ase_char_t*)str; + if (*str == c) return (qse_char_t*)str; str++; } - return ASE_NULL; + return QSE_NULL; } -ase_char_t* ase_strrchr (const ase_char_t* str, ase_cint_t c) +qse_char_t* qse_strrchr (const qse_char_t* str, qse_cint_t c) { - const ase_char_t* end = str; + const qse_char_t* end = str; - while (*end != ASE_T('\0')) end++; + while (*end != QSE_T('\0')) end++; while (end > str) { - if (*--end == c) return (ase_char_t*)end; + if (*--end == c) return (qse_char_t*)end; } - return ASE_NULL; + return QSE_NULL; } -ase_char_t* ase_strxrchr (const ase_char_t* str, ase_size_t len, ase_cint_t c) +qse_char_t* qse_strxrchr (const qse_char_t* str, qse_size_t len, qse_cint_t c) { - const ase_char_t* end = str + len; + const qse_char_t* end = str + len; while (end > str) { - if (*--end == c) return (ase_char_t*)end; + if (*--end == c) return (qse_char_t*)end; } - return ASE_NULL; + return QSE_NULL; } -ase_char_t* ase_strbeg (const ase_char_t* str, const ase_char_t* sub) +qse_char_t* qse_strbeg (const qse_char_t* str, const qse_char_t* sub) { - while (*sub != ASE_T('\0')) + while (*sub != QSE_T('\0')) { - if (*str != *sub) return ASE_NULL; + if (*str != *sub) return QSE_NULL; str++; sub++; } /* returns the pointer to the next character of the match */ - return (ase_char_t*)str; + return (qse_char_t*)str; } -ase_char_t* ase_strxbeg ( - const ase_char_t* str, ase_size_t len, const ase_char_t* sub) +qse_char_t* qse_strxbeg ( + const qse_char_t* str, qse_size_t len, const qse_char_t* sub) { - const ase_char_t* end = str + len; + const qse_char_t* end = str + len; - while (*sub != ASE_T('\0')) + while (*sub != QSE_T('\0')) { - if (str >= end || *str != *sub) return ASE_NULL; + if (str >= end || *str != *sub) return QSE_NULL; str++; sub++; } /* returns the pointer to the next character of the match */ - return (ase_char_t*)str; + return (qse_char_t*)str; } -ase_char_t* ase_strnbeg ( - const ase_char_t* str, const ase_char_t* sub, ase_size_t len) +qse_char_t* qse_strnbeg ( + const qse_char_t* str, const qse_char_t* sub, qse_size_t len) { - const ase_char_t* end = sub + len; + const qse_char_t* end = sub + len; while (sub < end) { - if (*str == ASE_T('\0') || *str != *sub) return ASE_NULL; + if (*str == QSE_T('\0') || *str != *sub) return QSE_NULL; str++; sub++; } /* returns the pointer to the next character of the match */ - return (ase_char_t*)str; + return (qse_char_t*)str; } -ase_char_t* ase_strxnbeg ( - const ase_char_t* str, ase_size_t len1, - const ase_char_t* sub, ase_size_t len2) +qse_char_t* qse_strxnbeg ( + const qse_char_t* str, qse_size_t len1, + const qse_char_t* sub, qse_size_t len2) { - const ase_char_t* end1, * end2; + const qse_char_t* end1, * end2; - if (len2 > len1) return ASE_NULL; + if (len2 > len1) return QSE_NULL; end1 = str + len1; end2 = sub + len2; while (sub < end2) { - if (str >= end1 || *str != *sub) return ASE_NULL; + if (str >= end1 || *str != *sub) return QSE_NULL; str++; sub++; } /* returns the pointer to the next character of the match */ - return (ase_char_t*)str; + return (qse_char_t*)str; } -ase_char_t* ase_strend (const ase_char_t* str, const ase_char_t* sub) +qse_char_t* qse_strend (const qse_char_t* str, const qse_char_t* sub) { - return ase_strxnend (str, ase_strlen(str), sub, ase_strlen(sub)); + return qse_strxnend (str, qse_strlen(str), sub, qse_strlen(sub)); } -ase_char_t* ase_strxend ( - const ase_char_t* str, ase_size_t len, const ase_char_t* sub) +qse_char_t* qse_strxend ( + const qse_char_t* str, qse_size_t len, const qse_char_t* sub) { - return ase_strxnend (str, len, sub, ase_strlen(sub)); + return qse_strxnend (str, len, sub, qse_strlen(sub)); } -ase_char_t* ase_strnend ( - const ase_char_t* str, const ase_char_t* sub, ase_size_t len) +qse_char_t* qse_strnend ( + const qse_char_t* str, const qse_char_t* sub, qse_size_t len) { - return ase_strxnend (str, ase_strlen(str), sub, len); + return qse_strxnend (str, qse_strlen(str), sub, len); } -ase_char_t* ase_strxnend ( - const ase_char_t* str, ase_size_t len1, - const ase_char_t* sub, ase_size_t len2) +qse_char_t* qse_strxnend ( + const qse_char_t* str, qse_size_t len1, + const qse_char_t* sub, qse_size_t len2) { - const ase_char_t* end1, * end2; + const qse_char_t* end1, * end2; - if (len2 > len1) return ASE_NULL; + if (len2 > len1) return QSE_NULL; end1 = str + len1; end2 = sub + len2; while (end2 > sub) { - if (end1 <= str) return ASE_NULL; - if (*(--end1) != *(--end2)) return ASE_NULL; + if (end1 <= str) return QSE_NULL; + if (*(--end1) != *(--end2)) return QSE_NULL; } /* returns the pointer to the match start */ - return (ase_char_t*)end1; + return (qse_char_t*)end1; } diff --git a/qse/lib/cmn/str_cnv.c b/qse/lib/cmn/str_cnv.c index 99ac9c65..45b9fea7 100644 --- a/qse/lib/cmn/str_cnv.c +++ b/qse/lib/cmn/str_cnv.c @@ -4,128 +4,128 @@ * {License} */ -#include +#include -int ase_strtoi (const ase_char_t* str) +int qse_strtoi (const qse_char_t* str) { int v; - ASE_STRTONUM (v, str, ASE_NULL, 10); + QSE_STRTONUM (v, str, QSE_NULL, 10); return v; } -long ase_strtol (const ase_char_t* str) +long qse_strtol (const qse_char_t* str) { long v; - ASE_STRTONUM (v, str, ASE_NULL, 10); + QSE_STRTONUM (v, str, QSE_NULL, 10); return v; } -unsigned int ase_strtoui (const ase_char_t* str) +unsigned int qse_strtoui (const qse_char_t* str) { unsigned int v; - ASE_STRTONUM (v, str, ASE_NULL, 10); + QSE_STRTONUM (v, str, QSE_NULL, 10); return v; } -unsigned long ase_strtoul (const ase_char_t* str) +unsigned long qse_strtoul (const qse_char_t* str) { unsigned long v; - ASE_STRTONUM (v, str, ASE_NULL, 10); + QSE_STRTONUM (v, str, QSE_NULL, 10); return v; } -int ase_strxtoi (const ase_char_t* str, ase_size_t len) +int qse_strxtoi (const qse_char_t* str, qse_size_t len) { int v; - ASE_STRXTONUM (v, str, len, ASE_NULL, 10); + QSE_STRXTONUM (v, str, len, QSE_NULL, 10); return v; } -long ase_strxtol (const ase_char_t* str, ase_size_t len) +long qse_strxtol (const qse_char_t* str, qse_size_t len) { long v; - ASE_STRXTONUM (v, str, len, ASE_NULL, 10); + QSE_STRXTONUM (v, str, len, QSE_NULL, 10); return v; } -unsigned int ase_strxtoui (const ase_char_t* str, ase_size_t len) +unsigned int qse_strxtoui (const qse_char_t* str, qse_size_t len) { unsigned int v; - ASE_STRXTONUM (v, str, len, ASE_NULL, 10); + QSE_STRXTONUM (v, str, len, QSE_NULL, 10); return v; } -unsigned long ase_strxtoul (const ase_char_t* str, ase_size_t len) +unsigned long qse_strxtoul (const qse_char_t* str, qse_size_t len) { unsigned long v; - ASE_STRXTONUM (v, str, len, ASE_NULL, 10); + QSE_STRXTONUM (v, str, len, QSE_NULL, 10); return v; } -ase_int_t ase_strtoint (const ase_char_t* str) +qse_int_t qse_strtoint (const qse_char_t* str) { - ase_int_t v; - ASE_STRTONUM (v, str, ASE_NULL, 10); + qse_int_t v; + QSE_STRTONUM (v, str, QSE_NULL, 10); return v; } -ase_long_t ase_strtolong (const ase_char_t* str) +qse_long_t qse_strtolong (const qse_char_t* str) { - ase_long_t v; - ASE_STRTONUM (v, str, ASE_NULL, 10); + qse_long_t v; + QSE_STRTONUM (v, str, QSE_NULL, 10); return v; } -ase_uint_t ase_strtouint (const ase_char_t* str) +qse_uint_t qse_strtouint (const qse_char_t* str) { - ase_uint_t v; - ASE_STRTONUM (v, str, ASE_NULL, 10); + qse_uint_t v; + QSE_STRTONUM (v, str, QSE_NULL, 10); return v; } -ase_ulong_t ase_strtoulong (const ase_char_t* str) +qse_ulong_t qse_strtoulong (const qse_char_t* str) { - ase_ulong_t v; - ASE_STRTONUM (v, str, ASE_NULL, 10); + qse_ulong_t v; + QSE_STRTONUM (v, str, QSE_NULL, 10); return v; } -ase_int_t ase_strxtoint (const ase_char_t* str, ase_size_t len) +qse_int_t qse_strxtoint (const qse_char_t* str, qse_size_t len) { - ase_int_t v; - ASE_STRXTONUM (v, str, len, ASE_NULL, 10); + qse_int_t v; + QSE_STRXTONUM (v, str, len, QSE_NULL, 10); return v; } -ase_long_t ase_strxtolong (const ase_char_t* str, ase_size_t len) +qse_long_t qse_strxtolong (const qse_char_t* str, qse_size_t len) { - ase_long_t v; - ASE_STRXTONUM (v, str, len, ASE_NULL, 10); + qse_long_t v; + QSE_STRXTONUM (v, str, len, QSE_NULL, 10); return v; } -ase_uint_t ase_strxtouint (const ase_char_t* str, ase_size_t len) +qse_uint_t qse_strxtouint (const qse_char_t* str, qse_size_t len) { - ase_uint_t v; - ASE_STRXTONUM (v, str, len, ASE_NULL, 10); + qse_uint_t v; + QSE_STRXTONUM (v, str, len, QSE_NULL, 10); return v; } -ase_ulong_t ase_strxtoulong (const ase_char_t* str, ase_size_t len) +qse_ulong_t qse_strxtoulong (const qse_char_t* str, qse_size_t len) { - ase_ulong_t v; - ASE_STRXTONUM (v, str, len, ASE_NULL, 10); + qse_ulong_t v; + QSE_STRXTONUM (v, str, len, QSE_NULL, 10); return v; } -ase_size_t ase_mbstowcs ( - const ase_mchar_t* mbs, ase_wchar_t* wcs, ase_size_t* wcslen) +qse_size_t qse_mbstowcs ( + const qse_mchar_t* mbs, qse_wchar_t* wcs, qse_size_t* wcslen) { - ase_size_t wlen, mlen; - const ase_mchar_t* mp; + qse_size_t wlen, mlen; + const qse_mchar_t* mp; - /* get the length of mbs and pass it to ase_mbsntowcsn as - * ase_mbtowc called by ase_mbsntowcsn needs it. */ + /* get the length of mbs and pass it to qse_mbsntowcsn as + * qse_mbtowc called by qse_mbsntowcsn needs it. */ for (mp = mbs; *mp != '\0'; mp++); if (*wcslen <= 0) @@ -140,7 +140,7 @@ ase_size_t ase_mbstowcs ( } wlen = *wcslen - 1; - mlen = ase_mbsntowcsn (mbs, mp - mbs, wcs, &wlen); + mlen = qse_mbsntowcsn (mbs, mp - mbs, wcs, &wlen); wcs[wlen] = L'\0'; *wcslen = wlen; @@ -148,19 +148,19 @@ ase_size_t ase_mbstowcs ( return mlen; } -ase_size_t ase_mbsntowcsn ( - const ase_mchar_t* mbs, ase_size_t mbslen, - ase_wchar_t* wcs, ase_size_t* wcslen) +qse_size_t qse_mbsntowcsn ( + const qse_mchar_t* mbs, qse_size_t mbslen, + qse_wchar_t* wcs, qse_size_t* wcslen) { - ase_size_t mlen = mbslen, n; - const ase_mchar_t* p; - ase_wchar_t* q, * qend ; + qse_size_t mlen = mbslen, n; + const qse_mchar_t* p; + qse_wchar_t* q, * qend ; qend = wcs + *wcslen; for (p = mbs, q = wcs; mlen > 0 && q < qend; p += n, mlen -= n) { - n = ase_mbtowc (p, mlen, q); + n = qse_mbtowc (p, mlen, q); if (n == 0 || n > mlen) { /* wrong sequence or insufficient input */ @@ -174,15 +174,15 @@ ase_size_t ase_mbsntowcsn ( return p - mbs; /* returns the number of bytes processed */ } -ase_size_t ase_wcstombs ( - const ase_wchar_t* wcs, ase_mchar_t* mbs, ase_size_t* mbslen) +qse_size_t qse_wcstombs ( + const qse_wchar_t* wcs, qse_mchar_t* mbs, qse_size_t* mbslen) { - const ase_wchar_t* p = wcs; - ase_size_t rem = *mbslen; + const qse_wchar_t* p = wcs; + qse_size_t rem = *mbslen; - while (*p != ASE_WT('\0') && rem > 1) + while (*p != QSE_WT('\0') && rem > 1) { - ase_size_t n = ase_wctomb (*p, mbs, rem); + qse_size_t n = qse_wctomb (*p, mbs, rem); if (n == 0 || n > rem) { /* illegal character or buffer not enough */ @@ -209,17 +209,17 @@ ase_size_t ase_wcstombs ( return p - wcs; } -ase_size_t ase_wcsntombsn ( - const ase_wchar_t* wcs, ase_size_t wcslen, - ase_mchar_t* mbs, ase_size_t* mbslen) +qse_size_t qse_wcsntombsn ( + const qse_wchar_t* wcs, qse_size_t wcslen, + qse_mchar_t* mbs, qse_size_t* mbslen) { - const ase_wchar_t* p = wcs; - const ase_wchar_t* end = wcs + wcslen; - ase_size_t len = *mbslen; + const qse_wchar_t* p = wcs; + const qse_wchar_t* end = wcs + wcslen; + qse_size_t len = *mbslen; while (p < end && len > 0) { - ase_size_t n = ase_wctomb (*p, mbs, len); + qse_size_t n = qse_wctomb (*p, mbs, len); if (n == 0 || n > len) { /* illegal character or buffer not enough */ @@ -236,14 +236,14 @@ ase_size_t ase_wcsntombsn ( return p - wcs; } -int ase_wcstombs_strict ( - const ase_wchar_t* wcs, ase_mchar_t* mbs, ase_size_t mbslen) +int qse_wcstombs_strict ( + const qse_wchar_t* wcs, qse_mchar_t* mbs, qse_size_t mbslen) { - ase_size_t n; - ase_size_t mn = mbslen; + qse_size_t n; + qse_size_t mn = mbslen; - n = ase_wcstombs (wcs, mbs, &mn); - if (wcs[n] != ASE_WT('\0')) return -1; /* didn't process all */ + n = qse_wcstombs (wcs, mbs, &mn); + if (wcs[n] != QSE_WT('\0')) return -1; /* didn't process all */ if (mn >= mbslen) { /* mbs not big enough to be null-terminated. diff --git a/qse/lib/cmn/str_dyn.c b/qse/lib/cmn/str_dyn.c index 1d3fe06f..e8548f0b 100644 --- a/qse/lib/cmn/str_dyn.c +++ b/qse/lib/cmn/str_dyn.c @@ -4,55 +4,55 @@ * {License} */ -#include +#include #include "mem.h" -ase_str_t* ase_str_open (ase_mmgr_t* mmgr, ase_size_t ext, ase_size_t capa) +qse_str_t* qse_str_open (qse_mmgr_t* mmgr, qse_size_t ext, qse_size_t capa) { - ase_str_t* str; + qse_str_t* str; - if (mmgr == ASE_NULL) + if (mmgr == QSE_NULL) { - mmgr = ASE_MMGR_GETDFL(); + mmgr = QSE_MMGR_GETDFL(); - ASE_ASSERTX (mmgr != ASE_NULL, - "Set the memory manager with ASE_MMGR_SETDFL()"); + QSE_ASSERTX (mmgr != QSE_NULL, + "Set the memory manager with QSE_MMGR_SETDFL()"); - if (mmgr == ASE_NULL) return ASE_NULL; + if (mmgr == QSE_NULL) return QSE_NULL; } - str = (ase_str_t*) ASE_MMGR_ALLOC (mmgr, ASE_SIZEOF(ase_str_t) + ext); - if (str == ASE_NULL) return ASE_NULL; + str = (qse_str_t*) QSE_MMGR_ALLOC (mmgr, QSE_SIZEOF(qse_str_t) + ext); + if (str == QSE_NULL) return QSE_NULL; - if (ase_str_init (str, mmgr, capa) == ASE_NULL) + if (qse_str_init (str, mmgr, capa) == QSE_NULL) { - ASE_MMGR_FREE (mmgr, str); - return ASE_NULL; + QSE_MMGR_FREE (mmgr, str); + return QSE_NULL; } return str; } -void ase_str_close (ase_str_t* str) +void qse_str_close (qse_str_t* str) { - ase_str_fini (str); - ASE_MMGR_FREE (str->mmgr, str); + qse_str_fini (str); + QSE_MMGR_FREE (str->mmgr, str); } -ase_str_t* ase_str_init (ase_str_t* str, ase_mmgr_t* mmgr, ase_size_t capa) +qse_str_t* qse_str_init (qse_str_t* str, qse_mmgr_t* mmgr, qse_size_t capa) { - ASE_MEMSET (str, 0, ASE_SIZEOF(ase_str_t)); + QSE_MEMSET (str, 0, QSE_SIZEOF(qse_str_t)); str->mmgr = mmgr; - str->sizer = ASE_NULL; + str->sizer = QSE_NULL; - if (capa == 0) str->ptr = ASE_NULL; + if (capa == 0) str->ptr = QSE_NULL; else { - str->ptr = (ase_char_t*) ASE_MMGR_ALLOC ( - mmgr, ASE_SIZEOF(ase_char_t) * (capa + 1)); - if (str->ptr == ASE_NULL) return ASE_NULL; - str->ptr[0] = ASE_T('\0'); + str->ptr = (qse_char_t*) QSE_MMGR_ALLOC ( + mmgr, QSE_SIZEOF(qse_char_t) * (capa + 1)); + if (str->ptr == QSE_NULL) return QSE_NULL; + str->ptr[0] = QSE_T('\0'); } str->len = 0; @@ -61,25 +61,25 @@ ase_str_t* ase_str_init (ase_str_t* str, ase_mmgr_t* mmgr, ase_size_t capa) return str; } -void ase_str_fini (ase_str_t* str) +void qse_str_fini (qse_str_t* str) { - if (str->ptr != ASE_NULL) ASE_MMGR_FREE (str->mmgr, str->ptr); + if (str->ptr != QSE_NULL) QSE_MMGR_FREE (str->mmgr, str->ptr); } -int ase_str_yield (ase_str_t* str, ase_xstr_t* buf, int new_capa) +int qse_str_yield (qse_str_t* str, qse_xstr_t* buf, int new_capa) { - ase_char_t* tmp; + qse_char_t* tmp; - if (new_capa == 0) tmp = ASE_NULL; + if (new_capa == 0) tmp = QSE_NULL; else { - tmp = (ase_char_t*) ASE_MMGR_ALLOC ( - str->mmgr, ASE_SIZEOF(ase_char_t) * (new_capa + 1)); - if (tmp == ASE_NULL) return -1; - tmp[0] = ASE_T('\0'); + tmp = (qse_char_t*) QSE_MMGR_ALLOC ( + str->mmgr, QSE_SIZEOF(qse_char_t) * (new_capa + 1)); + if (tmp == QSE_NULL) return -1; + tmp[0] = QSE_T('\0'); } - if (buf != ASE_NULL) + if (buf != QSE_NULL) { buf->ptr = str->ptr; buf->len = str->len; @@ -92,66 +92,66 @@ int ase_str_yield (ase_str_t* str, ase_xstr_t* buf, int new_capa) return 0; } -void* ase_str_getxtn (ase_str_t* str) +void* qse_str_getxtn (qse_str_t* str) { return str + 1; } -ase_mmgr_t* ase_str_getmmgr (ase_str_t* str) +qse_mmgr_t* qse_str_getmmgr (qse_str_t* str) { return str->mmgr; } -void ase_str_setmmgr (ase_str_t* str, ase_mmgr_t* mmgr) +void qse_str_setmmgr (qse_str_t* str, qse_mmgr_t* mmgr) { str->mmgr = mmgr; } -ase_str_sizer_t ase_str_getsizer (ase_str_t* str) +qse_str_sizer_t qse_str_getsizer (qse_str_t* str) { return str->sizer; } -void ase_str_setsizer (ase_str_t* str, ase_str_sizer_t sizer) +void qse_str_setsizer (qse_str_t* str, qse_str_sizer_t sizer) { str->sizer = sizer; } -ase_size_t ase_str_getcapa (ase_str_t* str) +qse_size_t qse_str_getcapa (qse_str_t* str) { return str->capa; } -ase_size_t ase_str_setcapa (ase_str_t* str, ase_size_t capa) +qse_size_t qse_str_setcapa (qse_str_t* str, qse_size_t capa) { - ase_char_t* tmp; + qse_char_t* tmp; - if (str->mmgr->realloc != ASE_NULL && str->ptr != ASE_NULL) + if (str->mmgr->realloc != QSE_NULL && str->ptr != QSE_NULL) { - tmp = (ase_char_t*) ASE_MMGR_REALLOC ( + tmp = (qse_char_t*) QSE_MMGR_REALLOC ( str->mmgr, str->ptr, - ASE_SIZEOF(ase_char_t)*(capa+1)); - if (tmp == ASE_NULL) return (ase_size_t)-1; + QSE_SIZEOF(qse_char_t)*(capa+1)); + if (tmp == QSE_NULL) return (qse_size_t)-1; } else { - tmp = (ase_char_t*) ASE_MMGR_ALLOC ( - str->mmgr, ASE_SIZEOF(ase_char_t)*(capa+1)); - if (tmp == ASE_NULL) return (ase_size_t)-1; + tmp = (qse_char_t*) QSE_MMGR_ALLOC ( + str->mmgr, QSE_SIZEOF(qse_char_t)*(capa+1)); + if (tmp == QSE_NULL) return (qse_size_t)-1; - if (str->ptr != ASE_NULL) + if (str->ptr != QSE_NULL) { - ase_size_t ncopy = (str->len <= capa)? str->len: capa; - ASE_MEMCPY (tmp, str->ptr, - ASE_SIZEOF(ase_char_t)*(ncopy+1)); - ASE_MMGR_FREE (str->mmgr, str->ptr); + qse_size_t ncopy = (str->len <= capa)? str->len: capa; + QSE_MEMCPY (tmp, str->ptr, + QSE_SIZEOF(qse_char_t)*(ncopy+1)); + QSE_MMGR_FREE (str->mmgr, str->ptr); } } if (capa < str->len) { str->len = capa; - tmp[capa] = ASE_T('\0'); + tmp[capa] = QSE_T('\0'); } str->capa = capa; @@ -160,15 +160,15 @@ ase_size_t ase_str_setcapa (ase_str_t* str, ase_size_t capa) return str->capa; } -void ase_str_clear (ase_str_t* str) +void qse_str_clear (qse_str_t* str) { str->len = 0; - str->ptr[0] = ASE_T('\0'); + str->ptr[0] = QSE_T('\0'); } -void ase_str_swap (ase_str_t* str, ase_str_t* str1) +void qse_str_swap (qse_str_t* str, qse_str_t* str1) { - ase_str_t tmp; + qse_str_t tmp; tmp.ptr = str->ptr; tmp.len = str->len; @@ -186,46 +186,46 @@ void ase_str_swap (ase_str_t* str, ase_str_t* str1) str1->mmgr = tmp.mmgr; } -ase_size_t ase_str_cpy (ase_str_t* str, const ase_char_t* s) +qse_size_t qse_str_cpy (qse_str_t* str, const qse_char_t* s) { /* TODO: improve it */ - return ase_str_ncpy (str, s, ase_strlen(s)); + return qse_str_ncpy (str, s, qse_strlen(s)); } -ase_size_t ase_str_ncpy (ase_str_t* str, const ase_char_t* s, ase_size_t len) +qse_size_t qse_str_ncpy (qse_str_t* str, const qse_char_t* s, qse_size_t len) { - ase_char_t* buf; + qse_char_t* buf; - if (len > str->capa || str->ptr == ASE_NULL) + if (len > str->capa || str->ptr == QSE_NULL) { - buf = (ase_char_t*) ASE_MMGR_ALLOC ( - str->mmgr, ASE_SIZEOF(ase_char_t) * (len + 1)); - if (buf == ASE_NULL) return (ase_size_t)-1; + buf = (qse_char_t*) QSE_MMGR_ALLOC ( + str->mmgr, QSE_SIZEOF(qse_char_t) * (len + 1)); + if (buf == QSE_NULL) return (qse_size_t)-1; - if (str->ptr != ASE_NULL) ASE_MMGR_FREE (str->mmgr, str->ptr); + if (str->ptr != QSE_NULL) QSE_MMGR_FREE (str->mmgr, str->ptr); str->capa = len; str->ptr = buf; } - str->len = ase_strncpy (str->ptr, s, len); - str->ptr[str->len] = ASE_T('\0'); + str->len = qse_strncpy (str->ptr, s, len); + str->ptr[str->len] = QSE_T('\0'); return str->len; } -ase_size_t ase_str_cat (ase_str_t* str, const ase_char_t* s) +qse_size_t qse_str_cat (qse_str_t* str, const qse_char_t* s) { /* TODO: improve it */ - return ase_str_ncat (str, s, ase_strlen(s)); + return qse_str_ncat (str, s, qse_strlen(s)); } -ase_size_t ase_str_ncat (ase_str_t* str, const ase_char_t* s, ase_size_t len) +qse_size_t qse_str_ncat (qse_str_t* str, const qse_char_t* s, qse_size_t len) { if (len > str->capa - str->len) { - ase_size_t ncapa; + qse_size_t ncapa; - if (str->sizer == ASE_NULL) + if (str->sizer == QSE_NULL) { /* increase the capacity by the length to add */ ncapa = str->len + len; @@ -242,9 +242,9 @@ ase_size_t ase_str_ncat (ase_str_t* str, const ase_char_t* s, ase_size_t len) if (ncapa == str->capa) return str->len; } - if (ase_str_setcapa (str, ncapa) == (ase_size_t)-1) + if (qse_str_setcapa (str, ncapa) == (qse_size_t)-1) { - return (ase_size_t)-1; + return (qse_size_t)-1; } } @@ -257,26 +257,26 @@ ase_size_t ase_str_ncat (ase_str_t* str, const ase_char_t* s, ase_size_t len) if (len > 0) { - ASE_MEMCPY (&str->ptr[str->len], s, len*ASE_SIZEOF(*s)); + QSE_MEMCPY (&str->ptr[str->len], s, len*QSE_SIZEOF(*s)); str->len += len; - str->ptr[str->len] = ASE_T('\0'); + str->ptr[str->len] = QSE_T('\0'); } return str->len; } -ase_size_t ase_str_ccat (ase_str_t* str, ase_char_t c) +qse_size_t qse_str_ccat (qse_str_t* str, qse_char_t c) { - return ase_str_ncat (str, &c, 1); + return qse_str_ncat (str, &c, 1); } -ase_size_t ase_str_nccat (ase_str_t* str, ase_char_t c, ase_size_t len) +qse_size_t qse_str_nccat (qse_str_t* str, qse_char_t c, qse_size_t len) { while (len > 0) { - if (ase_str_ncat (str, &c, 1) == (ase_size_t)-1) + if (qse_str_ncat (str, &c, 1) == (qse_size_t)-1) { - return (ase_size_t)-1; + return (qse_size_t)-1; } len--; diff --git a/qse/lib/cmn/time.c b/qse/lib/cmn/time.c index 9424296f..f47eb1fc 100644 --- a/qse/lib/cmn/time.c +++ b/qse/lib/cmn/time.c @@ -2,7 +2,7 @@ * $Id$ */ -#include +#include #ifdef _WIN32 #include @@ -11,28 +11,28 @@ #include #endif -#if defined(ASE_USE_SYSCALL) && defined(HAVE_SYS_SYSCALL_H) +#if defined(QSE_USE_SYSCALL) && defined(HAVE_SYS_SYSCALL_H) #include #endif #ifdef _WIN32 - #define WIN_EPOCH_YEAR ((ase_ntime_t)1601) - #define WIN_EPOCH_MON ((ase_ntime_t)1) - #define WIN_EPOCH_DAY ((ase_ntime_t)1) + #define WIN_EPOCH_YEAR ((qse_ntime_t)1601) + #define WIN_EPOCH_MON ((qse_ntime_t)1) + #define WIN_EPOCH_DAY ((qse_ntime_t)1) - #define EPOCH_DIFF_YEARS (ASE_EPOCH_YEAR-WIN_EPOCH_YEAR) + #define EPOCH_DIFF_YEARS (QSE_EPOCH_YEAR-WIN_EPOCH_YEAR) #define EPOCH_DIFF_DAYS (EPOCH_DIFF_YEARS*365+EPOCH_DIFF_YEARS/4-3) #define EPOCH_DIFF_SECS (EPOCH_DIFF_DAYS*24*60*60) - #define EPOCH_DIFF_MSECS (EPOCH_DIFF_SECS*ASE_MSEC_IN_SEC) + #define EPOCH_DIFF_MSECS (EPOCH_DIFF_SECS*QSE_MSEC_IN_SEC) #endif -static int mdays[2][ASE_MON_IN_YEAR] = +static int mdays[2][QSE_MON_IN_YEAR] = { { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }, { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 } }; -int ase_gettime (ase_ntime_t* t) +int qse_gettime (qse_ntime_t* t) { #ifdef _WIN32 SYSTEMTIME st; @@ -45,7 +45,7 @@ int ase_gettime (ase_ntime_t* t) GetSystemTime (&st); if (SystemTimeToFileTime (&st, &ft) == FALSE) return -1; - *t = ((ase_ntime_t)(*((ase_int64_t*)&ft)) / (10 * 1000)); + *t = ((qse_ntime_t)(*((qse_int64_t*)&ft)) / (10 * 1000)); *t -= EPOCH_DIFF_MSECS; return 0; #else @@ -53,24 +53,24 @@ int ase_gettime (ase_ntime_t* t) int n; #ifdef SYS_gettimeofday - n = syscall (SYS_gettimeofday, &tv, ASE_NULL); + n = syscall (SYS_gettimeofday, &tv, QSE_NULL); #else - n = gettimeofday (&tv, ASE_NULL); + n = gettimeofday (&tv, QSE_NULL); #endif if (n == -1) return -1; - *t = tv.tv_sec * ASE_MSEC_IN_SEC + tv.tv_usec / ASE_USEC_IN_MSEC; + *t = tv.tv_sec * QSE_MSEC_IN_SEC + tv.tv_usec / QSE_USEC_IN_MSEC; return 0; #endif } -int ase_settime (ase_ntime_t t) +int qse_settime (qse_ntime_t t) { #ifdef _WIN32 FILETIME ft; SYSTEMTIME st; - *((ase_int64_t*)&ft) = ((t + EPOCH_DIFF_MSECS) * (10 * 1000)); + *((qse_int64_t*)&ft) = ((t + EPOCH_DIFF_MSECS) * (10 * 1000)); if (FileTimeToSystemTime (&ft, &st) == FALSE) return -1; if (SetSystemTime(&st) == FALSE) return -1; return 0; @@ -78,8 +78,8 @@ int ase_settime (ase_ntime_t t) struct timeval tv; int n; - tv.tv_sec = t / ASE_MSEC_IN_SEC; - tv.tv_usec = (t % ASE_MSEC_IN_SEC) * ASE_USEC_IN_MSEC; + tv.tv_sec = t / QSE_MSEC_IN_SEC; + tv.tv_usec = (t % QSE_MSEC_IN_SEC) * QSE_USEC_IN_MSEC; /* #if defined CLOCK_REALTIME && HAVE_CLOCK_SETTIME @@ -97,38 +97,38 @@ int ase_settime (ase_ntime_t t) */ #ifdef SYS_settimeofday - n = syscall (SYS_settimeofday, &tv, ASE_NULL); + n = syscall (SYS_settimeofday, &tv, QSE_NULL); #else - n = settimeofday (&tv, ASE_NULL); + n = settimeofday (&tv, QSE_NULL); #endif if (n == -1) return -1; return 0; #endif } -void ase_gmtime (ase_ntime_t nt, ase_btime_t* bt) +void qse_gmtime (qse_ntime_t nt, qse_btime_t* bt) { /* code based on minix 2.0 src/lib/ansi/gmtime.c */ - ase_ntime_t days; /* total days */ - ase_ntime_t secs; /* number of seconds in the fractional days */ - ase_ntime_t time; /* total seconds */ + qse_ntime_t days; /* total days */ + qse_ntime_t secs; /* number of seconds in the fractional days */ + qse_ntime_t time; /* total seconds */ - int year = ASE_EPOCH_YEAR; + int year = QSE_EPOCH_YEAR; - time = nt / ASE_MSEC_IN_SEC; - days = (unsigned long)time / ASE_SEC_IN_DAY; - secs = (unsigned long)time % ASE_SEC_IN_DAY; + time = nt / QSE_MSEC_IN_SEC; + days = (unsigned long)time / QSE_SEC_IN_DAY; + secs = (unsigned long)time % QSE_SEC_IN_DAY; - bt->sec = secs % ASE_SEC_IN_MIN; - bt->min = (secs % ASE_SEC_IN_HOUR) / ASE_SEC_IN_MIN; - bt->hour = secs / ASE_SEC_IN_HOUR; + bt->sec = secs % QSE_SEC_IN_MIN; + bt->min = (secs % QSE_SEC_IN_HOUR) / QSE_SEC_IN_MIN; + bt->hour = secs / QSE_SEC_IN_HOUR; - bt->wday = (days + 4) % ASE_DAY_IN_WEEK; + bt->wday = (days + 4) % QSE_DAY_IN_WEEK; - while (days >= ASE_DAY_IN_YEAR(year)) + while (days >= QSE_DAY_IN_YEAR(year)) { - days -= ASE_DAY_IN_YEAR(year); + days -= QSE_DAY_IN_YEAR(year); year++; } @@ -136,9 +136,9 @@ void ase_gmtime (ase_ntime_t nt, ase_btime_t* bt) bt->yday = days; bt->mon = 0; - while (days >= mdays[ASE_IS_LEAPYEAR(year)][bt->mon]) + while (days >= mdays[QSE_IS_LEAPYEAR(year)][bt->mon]) { - days -= mdays[ASE_IS_LEAPYEAR(year)][bt->mon]; + days -= mdays[QSE_IS_LEAPYEAR(year)][bt->mon]; bt->mon++; } diff --git a/qse/lib/cmn/tio.c b/qse/lib/cmn/tio.c index b98d0874..f40cdd8e 100644 --- a/qse/lib/cmn/tio.c +++ b/qse/lib/cmn/tio.c @@ -2,53 +2,53 @@ * $Id: tio.c,v 1.13 2006/01/01 13:50:24 bacon Exp $ */ -#include +#include #include "mem.h" -ase_tio_t* ase_tio_open (ase_mmgr_t* mmgr, ase_size_t ext) +qse_tio_t* qse_tio_open (qse_mmgr_t* mmgr, qse_size_t ext) { - ase_tio_t* tio; + qse_tio_t* tio; - if (mmgr == ASE_NULL) + if (mmgr == QSE_NULL) { - mmgr = ASE_MMGR_GETDFL(); + mmgr = QSE_MMGR_GETDFL(); - ASE_ASSERTX (mmgr != ASE_NULL, - "Set the memory manager with ASE_MMGR_SETDFL()"); + QSE_ASSERTX (mmgr != QSE_NULL, + "Set the memory manager with QSE_MMGR_SETDFL()"); - if (mmgr == ASE_NULL) return ASE_NULL; + if (mmgr == QSE_NULL) return QSE_NULL; } - tio = ASE_MMGR_ALLOC (mmgr, ASE_SIZEOF(ase_tio_t) + ext); - if (tio == ASE_NULL) return ASE_NULL; + tio = QSE_MMGR_ALLOC (mmgr, QSE_SIZEOF(qse_tio_t) + ext); + if (tio == QSE_NULL) return QSE_NULL; - if (ase_tio_init (tio, mmgr) == ASE_NULL) + if (qse_tio_init (tio, mmgr) == QSE_NULL) { - ASE_MMGR_FREE (mmgr, tio); - return ASE_NULL; + QSE_MMGR_FREE (mmgr, tio); + return QSE_NULL; } return tio; } -int ase_tio_close (ase_tio_t* tio) +int qse_tio_close (qse_tio_t* tio) { - int n = ase_tio_fini (tio); - ASE_MMGR_FREE (tio->mmgr, tio); + int n = qse_tio_fini (tio); + QSE_MMGR_FREE (tio->mmgr, tio); return n; } -ase_tio_t* ase_tio_init (ase_tio_t* tio, ase_mmgr_t* mmgr) +qse_tio_t* qse_tio_init (qse_tio_t* tio, qse_mmgr_t* mmgr) { - ASE_MEMSET (tio, 0, ASE_SIZEOF(*tio)); + QSE_MEMSET (tio, 0, QSE_SIZEOF(*tio)); tio->mmgr = mmgr; /* - tio->input_func = ASE_NULL; - tio->input_arg = ASE_NULL; - tio->output_func = ASE_NULL; - tio->output_arg = ASE_NULL; + tio->input_func = QSE_NULL; + tio->input_arg = QSE_NULL; + tio->output_func = QSE_NULL; + tio->output_arg = QSE_NULL; tio->input_status = 0; tio->inbuf_curp = 0; @@ -56,74 +56,74 @@ ase_tio_t* ase_tio_init (ase_tio_t* tio, ase_mmgr_t* mmgr) tio->outbuf_len = 0; */ - tio->errnum = ASE_TIO_ENOERR; + tio->errnum = QSE_TIO_ENOERR; return tio; } -int ase_tio_fini (ase_tio_t* tio) +int qse_tio_fini (qse_tio_t* tio) { - ase_tio_flush (tio); /* don't care about the result */ - if (ase_tio_detachin(tio) == -1) return -1; - if (ase_tio_detachout(tio) == -1) return -1; + qse_tio_flush (tio); /* don't care about the result */ + if (qse_tio_detachin(tio) == -1) return -1; + if (qse_tio_detachout(tio) == -1) return -1; return 0; } -void* ase_tio_getxtn (ase_tio_t* tio) +void* qse_tio_getxtn (qse_tio_t* tio) { return tio + 1; } -ase_mmgr_t* ase_tio_getmmgr (ase_tio_t* tio) +qse_mmgr_t* qse_tio_getmmgr (qse_tio_t* tio) { return tio->mmgr; } -void ase_tio_setmmgr (ase_tio_t* tio, ase_mmgr_t* mmgr) +void qse_tio_setmmgr (qse_tio_t* tio, qse_mmgr_t* mmgr) { tio->mmgr = mmgr; } -int ase_tio_geterrnum (ase_tio_t* tio) +int qse_tio_geterrnum (qse_tio_t* tio) { return tio->errnum; } -const ase_char_t* ase_tio_geterrstr (ase_tio_t* tio) +const qse_char_t* qse_tio_geterrstr (qse_tio_t* tio) { - static const ase_char_t* __errstr[] = + static const qse_char_t* __errstr[] = { - ASE_T("no error"), - ASE_T("out of memory"), - ASE_T("no more space"), - ASE_T("illegal multibyte sequence"), - ASE_T("incomplete multibyte sequence"), - ASE_T("illegal wide character"), - ASE_T("no input function attached"), - ASE_T("input function returned an error"), - ASE_T("input function failed to open"), - ASE_T("input function failed to closed"), - ASE_T("no output function attached"), - ASE_T("output function returned an error"), - ASE_T("output function failed to open"), - ASE_T("output function failed to closed"), - ASE_T("unknown error") + QSE_T("no error"), + QSE_T("out of memory"), + QSE_T("no more space"), + QSE_T("illegal multibyte sequence"), + QSE_T("incomplete multibyte sequence"), + QSE_T("illegal wide character"), + QSE_T("no input function attached"), + QSE_T("input function returned an error"), + QSE_T("input function failed to open"), + QSE_T("input function failed to closed"), + QSE_T("no output function attached"), + QSE_T("output function returned an error"), + QSE_T("output function failed to open"), + QSE_T("output function failed to closed"), + QSE_T("unknown error") }; return __errstr[ - (tio->errnum < 0 || tio->errnum >= ASE_COUNTOF(__errstr))? - ASE_COUNTOF(__errstr) - 1: tio->errnum]; + (tio->errnum < 0 || tio->errnum >= QSE_COUNTOF(__errstr))? + QSE_COUNTOF(__errstr) - 1: tio->errnum]; } -int ase_tio_attachin (ase_tio_t* tio, ase_tio_io_t input, void* arg) +int qse_tio_attachin (qse_tio_t* tio, qse_tio_io_t input, void* arg) { - if (ase_tio_detachin(tio) == -1) return -1; + if (qse_tio_detachin(tio) == -1) return -1; - ASE_ASSERT (tio->input_func == ASE_NULL); + QSE_ASSERT (tio->input_func == QSE_NULL); - if (input(ASE_TIO_IO_OPEN, arg, ASE_NULL, 0) == -1) + if (input(QSE_TIO_IO_OPEN, arg, QSE_NULL, 0) == -1) { - tio->errnum = ASE_TIO_EINPOP; + tio->errnum = QSE_TIO_EINPOP; return -1; } @@ -137,33 +137,33 @@ int ase_tio_attachin (ase_tio_t* tio, ase_tio_io_t input, void* arg) return 0; } -int ase_tio_detachin (ase_tio_t* tio) +int qse_tio_detachin (qse_tio_t* tio) { - if (tio->input_func != ASE_NULL) + if (tio->input_func != QSE_NULL) { if (tio->input_func ( - ASE_TIO_IO_CLOSE, tio->input_arg, ASE_NULL, 0) == -1) + QSE_TIO_IO_CLOSE, tio->input_arg, QSE_NULL, 0) == -1) { - tio->errnum = ASE_TIO_EINPCL; + tio->errnum = QSE_TIO_EINPCL; return -1; } - tio->input_func = ASE_NULL; - tio->input_arg = ASE_NULL; + tio->input_func = QSE_NULL; + tio->input_arg = QSE_NULL; } return 0; } -int ase_tio_attachout (ase_tio_t* tio, ase_tio_io_t output, void* arg) +int qse_tio_attachout (qse_tio_t* tio, qse_tio_io_t output, void* arg) { - if (ase_tio_detachout(tio) == -1) return -1; + if (qse_tio_detachout(tio) == -1) return -1; - ASE_ASSERT (tio->output_func == ASE_NULL); + QSE_ASSERT (tio->output_func == QSE_NULL); - if (output(ASE_TIO_IO_OPEN, arg, ASE_NULL, 0) == -1) + if (output(QSE_TIO_IO_OPEN, arg, QSE_NULL, 0) == -1) { - tio->errnum = ASE_TIO_EOUTOP; + tio->errnum = QSE_TIO_EOUTOP; return -1; } @@ -174,66 +174,66 @@ int ase_tio_attachout (ase_tio_t* tio, ase_tio_io_t output, void* arg) return 0; } -int ase_tio_detachout (ase_tio_t* tio) +int qse_tio_detachout (qse_tio_t* tio) { - if (tio->output_func != ASE_NULL) + if (tio->output_func != QSE_NULL) { - ase_tio_flush (tio); /* don't care about the result */ + qse_tio_flush (tio); /* don't care about the result */ if (tio->output_func ( - ASE_TIO_IO_CLOSE, tio->output_arg, ASE_NULL, 0) == -1) + QSE_TIO_IO_CLOSE, tio->output_arg, QSE_NULL, 0) == -1) { - tio->errnum = ASE_TIO_EOUTCL; + tio->errnum = QSE_TIO_EOUTCL; return -1; } - tio->output_func = ASE_NULL; - tio->output_arg = ASE_NULL; + tio->output_func = QSE_NULL; + tio->output_arg = QSE_NULL; } return 0; } -ase_ssize_t ase_tio_flush (ase_tio_t* tio) +qse_ssize_t qse_tio_flush (qse_tio_t* tio) { - ase_size_t left, count; + qse_size_t left, count; - if (tio->output_func == ASE_NULL) + if (tio->output_func == QSE_NULL) { - tio->errnum = ASE_TIO_ENOUTF; - return (ase_ssize_t)-1; + tio->errnum = QSE_TIO_ENOUTF; + return (qse_ssize_t)-1; } left = tio->outbuf_len; while (left > 0) { - ase_ssize_t n; + qse_ssize_t n; n = tio->output_func ( - ASE_TIO_IO_DATA, tio->output_arg, tio->outbuf, left); + QSE_TIO_IO_DATA, tio->output_arg, tio->outbuf, left); if (n <= -1) { tio->outbuf_len = left; - tio->errnum = ASE_TIO_EOUTPT; + tio->errnum = QSE_TIO_EOUTPT; return -1; } if (n == 0) break; left -= n; - ASE_MEMCPY (tio->outbuf, &tio->inbuf[n], left); + QSE_MEMCPY (tio->outbuf, &tio->inbuf[n], left); } count = tio->outbuf_len - left; tio->outbuf_len = left; - return (ase_ssize_t)count; + return (qse_ssize_t)count; } -void ase_tio_purge (ase_tio_t* tio) +void qse_tio_purge (qse_tio_t* tio) { tio->input_status = 0; tio->inbuf_curp = 0; tio->inbuf_len = 0; tio->outbuf_len = 0; - tio->errnum = ASE_TIO_ENOERR; + tio->errnum = QSE_TIO_ENOERR; } diff --git a/qse/lib/cmn/tio_get.c b/qse/lib/cmn/tio_get.c index b7144731..81104722 100644 --- a/qse/lib/cmn/tio_get.c +++ b/qse/lib/cmn/tio_get.c @@ -2,34 +2,34 @@ * $Id: tio_get.c,v 1.8 2005/12/26 07:41:48 bacon Exp $ */ -#include +#include #include "mem.h" #define STATUS_GETC_EILSEQ (1 << 0) -ase_ssize_t ase_tio_getc (ase_tio_t* tio, ase_char_t* c) +qse_ssize_t qse_tio_getc (qse_tio_t* tio, qse_char_t* c) { - ase_size_t left = 0; - ase_ssize_t n; - ase_char_t curc; -#ifndef ASE_CHAR_IS_MCHAR - ase_size_t seqlen; + qse_size_t left = 0; + qse_ssize_t n; + qse_char_t curc; +#ifndef QSE_CHAR_IS_MCHAR + qse_size_t seqlen; #endif /* TODO: more efficient way to check this? - * maybe better to use ASE_ASSERT - * ASE_ASSERT (tio->input_func != ASE_NULL); + * maybe better to use QSE_ASSERT + * QSE_ASSERT (tio->input_func != QSE_NULL); */ - if (tio->input_func == ASE_NULL) + if (tio->input_func == QSE_NULL) { - tio->errnum = ASE_TIO_ENOINF; + tio->errnum = QSE_TIO_ENOINF; return -1; } if (tio->input_status & STATUS_GETC_EILSEQ) { tio->input_status &= ~STATUS_GETC_EILSEQ; - tio->errnum = ASE_TIO_EILSEQ; + tio->errnum = QSE_TIO_EILSEQ; return -1; } @@ -37,14 +37,14 @@ ase_ssize_t ase_tio_getc (ase_tio_t* tio, ase_char_t* c) { getc_conv: n = tio->input_func ( - ASE_TIO_IO_DATA, tio->input_arg, - &tio->inbuf[left], ASE_COUNTOF(tio->inbuf) - left); + QSE_TIO_IO_DATA, tio->input_arg, + &tio->inbuf[left], QSE_COUNTOF(tio->inbuf) - left); if (n == 0) { if (tio->inbuf_curp < tio->inbuf_len) { /* gargage left in the buffer */ - tio->errnum = ASE_TIO_EICSEQ; + tio->errnum = QSE_TIO_EICSEQ; return -1; } @@ -52,26 +52,26 @@ ase_ssize_t ase_tio_getc (ase_tio_t* tio, ase_char_t* c) } if (n <= -1) { - tio->errnum = ASE_TIO_EINPUT; + tio->errnum = QSE_TIO_EINPUT; return -1; } tio->inbuf_curp = 0; - tio->inbuf_len = (ase_size_t)n + left; + tio->inbuf_len = (qse_size_t)n + left; } -#ifdef ASE_CHAR_IS_MCHAR +#ifdef QSE_CHAR_IS_MCHAR curc = tio->inbuf[tio->inbuf_curp++]; #else left = tio->inbuf_len - tio->inbuf_curp; #if 0 - seqlen = ase_mblen (tio->inbuf[tio->inbuf_curp], left); + seqlen = qse_mblen (tio->inbuf[tio->inbuf_curp], left); if (seqlen == 0) { /* illegal sequence */ tio->inbuf_curp++; /* skip one byte */ - tio->errnum = ASE_TIO_EILSEQ; + tio->errnum = QSE_TIO_EILSEQ; return -1; } @@ -80,30 +80,30 @@ ase_ssize_t ase_tio_getc (ase_tio_t* tio, ase_char_t* c) /* incomplete sequence */ if (tio->inbuf_curp > 0) { - ASE_MEMCPY (tio->inbuf, &tio->inbuf[tio->inbuf_curp], left); + QSE_MEMCPY (tio->inbuf, &tio->inbuf[tio->inbuf_curp], left); tio->inbuf_curp = 0; tio->inbuf_len = left; } goto getc_conv; } - n = ase_mbtowc (&tio->inbuf[tio->inbuf_curp], seqlen, &curc); + n = qse_mbtowc (&tio->inbuf[tio->inbuf_curp], seqlen, &curc); if (n == 0) { /* illegal sequence */ tio->inbuf_curp++; /* skip one byte */ - tio->errnum = ASE_TIO_EILSEQ; + tio->errnum = QSE_TIO_EILSEQ; return -1; } if (n > seqlen) { /* incomplete sequence - - * this check might not be needed because ase_mblen has - * checked it. would ASE_ASSERT (n <= seqlen) be enough? */ + * this check might not be needed because qse_mblen has + * checked it. would QSE_ASSERT (n <= seqlen) be enough? */ if (tio->inbuf_curp > 0) { - ASE_MEMCPY (tio->inbuf, &tio->inbuf[tio->inbuf_curp], left); + QSE_MEMCPY (tio->inbuf, &tio->inbuf[tio->inbuf_curp], left); tio->inbuf_curp = 0; tio->inbuf_len = left; } @@ -111,12 +111,12 @@ ase_ssize_t ase_tio_getc (ase_tio_t* tio, ase_char_t* c) } #endif - n = ase_mbtowc (&tio->inbuf[tio->inbuf_curp], left, &curc); + n = qse_mbtowc (&tio->inbuf[tio->inbuf_curp], left, &curc); if (n == 0) { /* illegal sequence */ tio->inbuf_curp++; /* skip one byte */ - tio->errnum = ASE_TIO_EILSEQ; + tio->errnum = QSE_TIO_EILSEQ; return -1; } if (n > left) @@ -124,7 +124,7 @@ ase_ssize_t ase_tio_getc (ase_tio_t* tio, ase_char_t* c) /* incomplete sequence */ if (tio->inbuf_curp > 0) { - ASE_MEMCPY (tio->inbuf, &tio->inbuf[tio->inbuf_curp], left); + QSE_MEMCPY (tio->inbuf, &tio->inbuf[tio->inbuf_curp], left); tio->inbuf_curp = 0; tio->inbuf_len = left; } @@ -138,31 +138,31 @@ ase_ssize_t ase_tio_getc (ase_tio_t* tio, ase_char_t* c) return 1; } -ase_ssize_t ase_tio_gets (ase_tio_t* tio, ase_char_t* buf, ase_size_t size) +qse_ssize_t qse_tio_gets (qse_tio_t* tio, qse_char_t* buf, qse_size_t size) { - ase_ssize_t n; + qse_ssize_t n; if (size <= 0) return 0; - n = ase_tio_getsx (tio, buf, size - 1); + n = qse_tio_getsx (tio, buf, size - 1); if (n == -1) return -1; - buf[n] = ASE_T('\0'); + buf[n] = QSE_T('\0'); return n; } -ase_ssize_t ase_tio_getsx (ase_tio_t* tio, ase_char_t* buf, ase_size_t size) +qse_ssize_t qse_tio_getsx (qse_tio_t* tio, qse_char_t* buf, qse_size_t size) { - ase_ssize_t n; - ase_char_t* p, * end, c; + qse_ssize_t n; + qse_char_t* p, * end, c; if (size <= 0) return 0; p = buf; end = buf + size; while (p < end) { - n = ase_tio_getc (tio, &c); + n = qse_tio_getc (tio, &c); if (n == -1) { - if (p > buf && tio->errnum == ASE_TIO_EILSEQ) + if (p > buf && tio->errnum == QSE_TIO_EILSEQ) { tio->input_status |= STATUS_GETC_EILSEQ; break; @@ -173,25 +173,25 @@ ase_ssize_t ase_tio_getsx (ase_tio_t* tio, ase_char_t* buf, ase_size_t size) *p++ = c; /* TODO: support a different line breaker */ - if (c == ASE_T('\n')) break; + if (c == QSE_T('\n')) break; } return p - buf; } -ase_ssize_t ase_tio_getstr (ase_tio_t* tio, ase_str_t* buf) +qse_ssize_t qse_tio_getstr (qse_tio_t* tio, qse_str_t* buf) { - ase_ssize_t n; - ase_char_t c; + qse_ssize_t n; + qse_char_t c; - ase_str_clear (buf); + qse_str_clear (buf); for (;;) { - n = ase_tio_getc (tio, &c); + n = qse_tio_getc (tio, &c); if (n == -1) { - if (ASE_STR_LEN(buf) > 0 && tio->errnum == ASE_TIO_EILSEQ) + if (QSE_STR_LEN(buf) > 0 && tio->errnum == QSE_TIO_EILSEQ) { tio->input_status |= STATUS_GETC_EILSEQ; break; @@ -200,15 +200,15 @@ ase_ssize_t ase_tio_getstr (ase_tio_t* tio, ase_str_t* buf) } if (n == 0) break; - if (ase_str_ccat(buf, c) == (ase_size_t)-1) + if (qse_str_ccat(buf, c) == (qse_size_t)-1) { - tio->errnum = ASE_TIO_ENOMEM; + tio->errnum = QSE_TIO_ENOMEM; return -1; } /* TODO: support a different line breaker */ - if (c == ASE_T('\n')) break; + if (c == QSE_T('\n')) break; } - return ASE_STR_LEN(buf); + return QSE_STR_LEN(buf); } diff --git a/qse/lib/cmn/tio_put.c b/qse/lib/cmn/tio_put.c index 91533198..04911e6b 100644 --- a/qse/lib/cmn/tio_put.c +++ b/qse/lib/cmn/tio_put.c @@ -2,68 +2,68 @@ * $Id: tio_put.c,v 1.2 2005/12/26 07:41:48 bacon Exp $ */ -#include +#include -ase_ssize_t ase_tio_putc (ase_tio_t* tio, ase_char_t c) +qse_ssize_t qse_tio_putc (qse_tio_t* tio, qse_char_t c) { -#ifndef ASE_CHAR_IS_MCHAR - ase_size_t n, i; - ase_mchar_t mc[50]; +#ifndef QSE_CHAR_IS_MCHAR + qse_size_t n, i; + qse_mchar_t mc[50]; #endif - if (tio->outbuf_len >= ASE_COUNTOF(tio->outbuf)) + if (tio->outbuf_len >= QSE_COUNTOF(tio->outbuf)) { /* maybe, previous flush operation has failed a few * times previously. so the buffer is full. */ - tio->errnum = ASE_TIO_ENOSPC; + tio->errnum = QSE_TIO_ENOSPC; return -1; } -#ifdef ASE_CHAR_IS_MCHAR +#ifdef QSE_CHAR_IS_MCHAR tio->outbuf[tio->outbuf_len++] = c; - if (tio->outbuf_len >= ASE_COUNTOF(tio->outbuf)) - return ase_tio_flush (tio); + if (tio->outbuf_len >= QSE_COUNTOF(tio->outbuf)) + return qse_tio_flush (tio); #else - n = ase_wctomb (c, mc, ASE_COUNTOF(mc)); + n = qse_wctomb (c, mc, QSE_COUNTOF(mc)); if (n == 0) { - tio->errnum = ASE_TIO_EILCHR; + tio->errnum = QSE_TIO_EILCHR; return -1; } - else if (n > ASE_COUNTOF(mc)) + else if (n > QSE_COUNTOF(mc)) { - tio->errnum = ASE_TIO_ENOSPC; + tio->errnum = QSE_TIO_ENOSPC; return -1; } for (i = 0; i < n; i++) { tio->outbuf[tio->outbuf_len++] = mc[i]; - if (tio->outbuf_len >= ASE_COUNTOF(tio->outbuf)) + if (tio->outbuf_len >= QSE_COUNTOF(tio->outbuf)) { - if (ase_tio_flush(tio) == -1) return -1; + if (qse_tio_flush(tio) == -1) return -1; } } #endif - if (c == ASE_T('\n') && tio->outbuf_len > 0) + if (c == QSE_T('\n') && tio->outbuf_len > 0) { - if (ase_tio_flush(tio) == -1) return -1; + if (qse_tio_flush(tio) == -1) return -1; } return 1; } -ase_ssize_t ase_tio_puts (ase_tio_t* tio, const ase_char_t* str) +qse_ssize_t qse_tio_puts (qse_tio_t* tio, const qse_char_t* str) { - ase_ssize_t n; - const ase_char_t* p; + qse_ssize_t n; + const qse_char_t* p; - for (p = str; *p != ASE_T('\0'); p++) + for (p = str; *p != QSE_T('\0'); p++) { - n = ase_tio_putc (tio, *p); + n = qse_tio_putc (tio, *p); if (n == -1) return -1; if (n == 0) break; } @@ -71,17 +71,17 @@ ase_ssize_t ase_tio_puts (ase_tio_t* tio, const ase_char_t* str) return p - str; } -ase_ssize_t ase_tio_putsx (ase_tio_t* tio, const ase_char_t* str, ase_size_t size) +qse_ssize_t qse_tio_putsx (qse_tio_t* tio, const qse_char_t* str, qse_size_t size) { - ase_ssize_t n; - const ase_char_t* p, * end; + qse_ssize_t n; + const qse_char_t* p, * end; if (size == 0) return 0; p = str; end = str + size; while (p < end) { - n = ase_tio_putc (tio, *p); + n = qse_tio_putc (tio, *p); if (n == -1) return -1; if (n == 0) break; @@ -92,40 +92,40 @@ ase_ssize_t ase_tio_putsx (ase_tio_t* tio, const ase_char_t* str, ase_size_t siz } #if 0 -ase_ssize_t ase_tio_putsn (ase_tio_t* tio, ...) +qse_ssize_t qse_tio_putsn (qse_tio_t* tio, ...) { - ase_ssize_t n; - ase_va_list ap; + qse_ssize_t n; + qse_va_list ap; - ase_va_start (ap, tio); - n = ase_tio_putsv (tio, ap); - ase_va_end (ap); + qse_va_start (ap, tio); + n = qse_tio_putsv (tio, ap); + qse_va_end (ap); return n; } -ase_ssize_t ase_tio_putsxn (ase_tio_t* tio, ...) +qse_ssize_t qse_tio_putsxn (qse_tio_t* tio, ...) { - ase_ssize_t n; - ase_va_list ap; + qse_ssize_t n; + qse_va_list ap; - ase_va_start (ap, tio); - n = ase_tio_putsxv (tio, ap); - ase_va_end (ap); + qse_va_start (ap, tio); + n = qse_tio_putsxv (tio, ap); + qse_va_end (ap); return n; } -ase_ssize_t ase_tio_putsv (ase_tio_t* tio, ase_va_list ap) +qse_ssize_t qse_tio_putsv (qse_tio_t* tio, qse_va_list ap) { - const ase_char_t* p; - ase_size_t n, total = 0; + const qse_char_t* p; + qse_size_t n, total = 0; - while ((p = ase_va_arg (ap, const ase_char_t*)) != ASE_NULL) + while ((p = qse_va_arg (ap, const qse_char_t*)) != QSE_NULL) { - if (p[0] == ASE_T('\0')) continue; + if (p[0] == QSE_T('\0')) continue; - n = ase_tio_puts (tio, p); + n = qse_tio_puts (tio, p); if (n == -1) return -1; if (n == 0) break; @@ -135,17 +135,17 @@ ase_ssize_t ase_tio_putsv (ase_tio_t* tio, ase_va_list ap) return total; } -ase_ssize_t ase_tio_putsxv (ase_tio_t* tio, ase_va_list ap) +qse_ssize_t qse_tio_putsxv (qse_tio_t* tio, qse_va_list ap) { - const ase_char_t* p; - ase_size_t len, n, total = 0; + const qse_char_t* p; + qse_size_t len, n, total = 0; - while ((p = ase_va_arg (ap, const ase_char_t*)) != ASE_NULL) + while ((p = qse_va_arg (ap, const qse_char_t*)) != QSE_NULL) { - len = ase_va_arg (ap, ase_size_t); + len = qse_va_arg (ap, qse_size_t); if (len == 0) continue; - n = ase_tio_putsx (tio, p, len); + n = qse_tio_putsx (tio, p, len); if (n == -1) return -1; if (n == 0) break; diff --git a/qse/lib/lsp/aselsp.dsp b/qse/lib/lsp/aselsp.dsp deleted file mode 100644 index 032c3d77..00000000 --- a/qse/lib/lsp/aselsp.dsp +++ /dev/null @@ -1,180 +0,0 @@ -# Microsoft Developer Studio Project File - Name="aselsp" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Static Library" 0x0104 - -CFG=aselsp - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "aselsp.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "aselsp.mak" CFG="aselsp - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "aselsp - Win32 Release" (based on "Win32 (x86) Static Library") -!MESSAGE "aselsp - Win32 Debug" (based on "Win32 (x86) Static Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "aselsp - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "../release/lib" -# PROP Intermediate_Dir "release" -# PROP Target_Dir "" -MTL=midl.exe -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c -# ADD CPP /nologo /MT /W3 /GX /O2 /I "../.." /D "NDEBUG" /D "WIN32" /D "_UNICODE" /YX /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo - -!ELSEIF "$(CFG)" == "aselsp - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "../debug/lib" -# PROP Intermediate_Dir "debug" -# PROP Target_Dir "" -MTL=midl.exe -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c -# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "../.." /D "_DEBUG" /D "WIN32" /D "_UNICODE" /YX /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo - -!ENDIF - -# Begin Target - -# Name "aselsp - Win32 Release" -# Name "aselsp - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=.\env.c -# End Source File -# Begin Source File - -SOURCE=.\err.c -# End Source File -# Begin Source File - -SOURCE=.\eval.c -# End Source File -# Begin Source File - -SOURCE=.\lsp.c -# End Source File -# Begin Source File - -SOURCE=.\mem.c -# End Source File -# Begin Source File - -SOURCE=.\misc.c -# End Source File -# Begin Source File - -SOURCE=.\name.c -# End Source File -# Begin Source File - -SOURCE=.\prim.c -# End Source File -# Begin Source File - -SOURCE=.\prim_compar.c -# End Source File -# Begin Source File - -SOURCE=.\prim_let.c -# End Source File -# Begin Source File - -SOURCE=.\prim_math.c -# End Source File -# Begin Source File - -SOURCE=.\prim_prog.c -# End Source File -# Begin Source File - -SOURCE=.\print.c -# End Source File -# Begin Source File - -SOURCE=.\read.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# Begin Source File - -SOURCE=.\env.h -# End Source File -# Begin Source File - -SOURCE=.\lsp.h -# End Source File -# Begin Source File - -SOURCE=.\lsp_i.h -# End Source File -# Begin Source File - -SOURCE=.\mem.h -# End Source File -# Begin Source File - -SOURCE=.\misc.h -# End Source File -# Begin Source File - -SOURCE=.\name.h -# End Source File -# Begin Source File - -SOURCE=.\obj.h -# End Source File -# Begin Source File - -SOURCE=.\prim.h -# End Source File -# End Group -# End Target -# End Project diff --git a/qse/lib/lsp/aselsp.vcproj b/qse/lib/lsp/aselsp.vcproj deleted file mode 100644 index 505c1f91..00000000 --- a/qse/lib/lsp/aselsp.vcproj +++ /dev/null @@ -1,903 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/qse/lib/lsp/descrip.mms b/qse/lib/lsp/descrip.mms deleted file mode 100644 index 95564785..00000000 --- a/qse/lib/lsp/descrip.mms +++ /dev/null @@ -1,28 +0,0 @@ -# -# OpenVMS MMS/MMK -# - -objects = lsp.obj name.obj mem.obj env.obj err.obj read.obj eval.obj print.obj misc.obj prim.obj prim_prog.obj prim_let.obj prim_compar.obj prim_math.obj - -CFLAGS = /include="../.." -#CFLAGS = /pointer_size=long /include="../.." - -aselsp.olb : $(objects) - $(LIBR)/create $(MMS$TARGET) *.obj -# $(LIBR)/create $(MMS$TARGET) $(objects) - -lsp.obj depends_on lsp.c -name.obj depends_on name.c -mem.obj depends_on mem.c -env.obj depends_on env.c -err.obj depends_on err.c -read.obj depends_on read.c -eval.obj depends_on eval.c -print.obj depends_on print.c -misc.obj depends_on misc.c -prim.obj depends_on prim.c -prim_prog.obj depends_on prim_prog.c -prim_let.obj depends_on prim_let.c -prim_compar.obj depends_on prim_compar.c -prim_math.obj depends_on prim_math.c - diff --git a/qse/lib/lsp/env.c b/qse/lib/lsp/env.c index 2991addf..640af4aa 100644 --- a/qse/lib/lsp/env.c +++ b/qse/lib/lsp/env.c @@ -8,120 +8,120 @@ /* TODO: make the frame hash accessible */ -static ase_lsp_assoc_t* __new_assoc ( - ase_lsp_t* lsp, ase_lsp_obj_t* name, - ase_lsp_obj_t* value, ase_lsp_obj_t* func) +static qse_lsp_assoc_t* __new_assoc ( + qse_lsp_t* lsp, qse_lsp_obj_t* name, + qse_lsp_obj_t* value, qse_lsp_obj_t* func) { - ase_lsp_assoc_t* assoc; + qse_lsp_assoc_t* assoc; - assoc = (ase_lsp_assoc_t*) - ASE_LSP_ALLOC (lsp, sizeof(ase_lsp_assoc_t)); - if (assoc == ASE_NULL) + assoc = (qse_lsp_assoc_t*) + QSE_LSP_ALLOC (lsp, sizeof(qse_lsp_assoc_t)); + if (assoc == QSE_NULL) { - ase_lsp_seterror (lsp, ASE_LSP_ENOMEM, ASE_NULL, 0); - return ASE_NULL; + qse_lsp_seterror (lsp, QSE_LSP_ENOMEM, QSE_NULL, 0); + return QSE_NULL; } assoc->name = name; assoc->value = value; assoc->func = func; - assoc->link = ASE_NULL; + assoc->link = QSE_NULL; return assoc; } -ase_lsp_frame_t* ase_lsp_newframe (ase_lsp_t* lsp) +qse_lsp_frame_t* qse_lsp_newframe (qse_lsp_t* lsp) { - ase_lsp_frame_t* frame; + qse_lsp_frame_t* frame; - frame = (ase_lsp_frame_t*) - ASE_LSP_ALLOC (lsp, sizeof(ase_lsp_frame_t)); - if (frame == ASE_NULL) + frame = (qse_lsp_frame_t*) + QSE_LSP_ALLOC (lsp, sizeof(qse_lsp_frame_t)); + if (frame == QSE_NULL) { - ase_lsp_seterror (lsp, ASE_LSP_ENOMEM, ASE_NULL, 0); - return ASE_NULL; + qse_lsp_seterror (lsp, QSE_LSP_ENOMEM, QSE_NULL, 0); + return QSE_NULL; } - frame->assoc = ASE_NULL; - frame->link = ASE_NULL; + frame->assoc = QSE_NULL; + frame->link = QSE_NULL; return frame; } -void ase_lsp_freeframe (ase_lsp_t* lsp, ase_lsp_frame_t* frame) +void qse_lsp_freeframe (qse_lsp_t* lsp, qse_lsp_frame_t* frame) { - ase_lsp_assoc_t* assoc, * link; + qse_lsp_assoc_t* assoc, * link; /* destroy the associations */ assoc = frame->assoc; - while (assoc != ASE_NULL) + while (assoc != QSE_NULL) { link = assoc->link; - ASE_LSP_FREE (lsp, assoc); + QSE_LSP_FREE (lsp, assoc); assoc = link; } - ASE_LSP_FREE (lsp, frame); + QSE_LSP_FREE (lsp, frame); } -ase_lsp_assoc_t* ase_lsp_lookupinframe ( - ase_lsp_t* lsp, ase_lsp_frame_t* frame, ase_lsp_obj_t* name) +qse_lsp_assoc_t* qse_lsp_lookupinframe ( + qse_lsp_t* lsp, qse_lsp_frame_t* frame, qse_lsp_obj_t* name) { - ase_lsp_assoc_t* assoc; + qse_lsp_assoc_t* assoc; - ASE_ASSERT (ASE_LSP_TYPE(name) == ASE_LSP_OBJ_SYM); + QSE_ASSERT (QSE_LSP_TYPE(name) == QSE_LSP_OBJ_SYM); assoc = frame->assoc; - while (assoc != ASE_NULL) + while (assoc != QSE_NULL) { if (name == assoc->name) return assoc; assoc = assoc->link; } - return ASE_NULL; + return QSE_NULL; } -ase_lsp_assoc_t* ase_lsp_insvalueintoframe ( - ase_lsp_t* lsp, ase_lsp_frame_t* frame, - ase_lsp_obj_t* name, ase_lsp_obj_t* value) +qse_lsp_assoc_t* qse_lsp_insvalueintoframe ( + qse_lsp_t* lsp, qse_lsp_frame_t* frame, + qse_lsp_obj_t* name, qse_lsp_obj_t* value) { - ase_lsp_assoc_t* assoc; + qse_lsp_assoc_t* assoc; - ASE_ASSERT (ASE_LSP_TYPE(name) == ASE_LSP_OBJ_SYM); + QSE_ASSERT (QSE_LSP_TYPE(name) == QSE_LSP_OBJ_SYM); - assoc = __new_assoc (lsp, name, value, ASE_NULL); - if (assoc == ASE_NULL) return ASE_NULL; + assoc = __new_assoc (lsp, name, value, QSE_NULL); + if (assoc == QSE_NULL) return QSE_NULL; assoc->link = frame->assoc; frame->assoc = assoc; return assoc; } -ase_lsp_assoc_t* ase_lsp_insfuncintoframe ( - ase_lsp_t* lsp, ase_lsp_frame_t* frame, - ase_lsp_obj_t* name, ase_lsp_obj_t* func) +qse_lsp_assoc_t* qse_lsp_insfuncintoframe ( + qse_lsp_t* lsp, qse_lsp_frame_t* frame, + qse_lsp_obj_t* name, qse_lsp_obj_t* func) { - ase_lsp_assoc_t* assoc; + qse_lsp_assoc_t* assoc; - ASE_ASSERT (ASE_LSP_TYPE(name) == ASE_LSP_OBJ_SYM); + QSE_ASSERT (QSE_LSP_TYPE(name) == QSE_LSP_OBJ_SYM); - assoc = __new_assoc (lsp, name, ASE_NULL, func); - if (assoc == ASE_NULL) return ASE_NULL; + assoc = __new_assoc (lsp, name, QSE_NULL, func); + if (assoc == QSE_NULL) return QSE_NULL; assoc->link = frame->assoc; frame->assoc = assoc; return assoc; } -ase_lsp_tlink_t* ase_lsp_pushtmp (ase_lsp_t* lsp, ase_lsp_obj_t* obj) +qse_lsp_tlink_t* qse_lsp_pushtmp (qse_lsp_t* lsp, qse_lsp_obj_t* obj) { - ase_lsp_tlink_t* tlink; + qse_lsp_tlink_t* tlink; - tlink = (ase_lsp_tlink_t*) - ASE_LSP_ALLOC (lsp, sizeof(ase_lsp_tlink_t)); - if (tlink == ASE_NULL) + tlink = (qse_lsp_tlink_t*) + QSE_LSP_ALLOC (lsp, sizeof(qse_lsp_tlink_t)); + if (tlink == QSE_NULL) { - ase_lsp_seterror (lsp, ASE_LSP_ENOMEM, ASE_NULL, 0); - return ASE_NULL; + qse_lsp_seterror (lsp, QSE_LSP_ENOMEM, QSE_NULL, 0); + return QSE_NULL; } tlink->obj = obj; @@ -132,15 +132,15 @@ ase_lsp_tlink_t* ase_lsp_pushtmp (ase_lsp_t* lsp, ase_lsp_obj_t* obj) return tlink; } -void ase_lsp_poptmp (ase_lsp_t* lsp) +void qse_lsp_poptmp (qse_lsp_t* lsp) { - ase_lsp_tlink_t* top; + qse_lsp_tlink_t* top; - ASE_ASSERT (lsp->mem->tlink != ASE_NULL); + QSE_ASSERT (lsp->mem->tlink != QSE_NULL); top = lsp->mem->tlink; lsp->mem->tlink = top->link; lsp->mem->tlink_count--; - ASE_LSP_FREE (lsp, top); + QSE_LSP_FREE (lsp, top); } diff --git a/qse/lib/lsp/env.h b/qse/lib/lsp/env.h index f9e404e5..8fafa9d7 100644 --- a/qse/lib/lsp/env.h +++ b/qse/lib/lsp/env.h @@ -4,57 +4,57 @@ * {License} */ -#ifndef _ASE_LSP_ENV_H_ -#define _ASE_LSP_ENV_H_ +#ifndef _QSE_LSP_ENV_H_ +#define _QSE_LSP_ENV_H_ -#ifndef _ASE_LSP_LSP_H_ -#error Never include this file directly. Include instead +#ifndef _QSE_LSP_LSP_H_ +#error Never include this file directly. Include instead #endif -typedef struct ase_lsp_assoc_t ase_lsp_assoc_t; -typedef struct ase_lsp_frame_t ase_lsp_frame_t; -typedef struct ase_lsp_tlink_t ase_lsp_tlink_t; +typedef struct qse_lsp_assoc_t qse_lsp_assoc_t; +typedef struct qse_lsp_frame_t qse_lsp_frame_t; +typedef struct qse_lsp_tlink_t qse_lsp_tlink_t; -struct ase_lsp_assoc_t +struct qse_lsp_assoc_t { - ase_lsp_obj_t* name; /* ase_lsp_obj_sym_t */ - ase_lsp_obj_t* value; /* value as a variable */ - ase_lsp_obj_t* func; /* function definition */ + qse_lsp_obj_t* name; /* qse_lsp_obj_sym_t */ + qse_lsp_obj_t* value; /* value as a variable */ + qse_lsp_obj_t* func; /* function definition */ - ase_lsp_assoc_t* link; + qse_lsp_assoc_t* link; }; -struct ase_lsp_frame_t +struct qse_lsp_frame_t { - ase_lsp_assoc_t* assoc; - ase_lsp_frame_t* link; + qse_lsp_assoc_t* assoc; + qse_lsp_frame_t* link; }; -struct ase_lsp_tlink_t +struct qse_lsp_tlink_t { - ase_lsp_obj_t* obj; - ase_lsp_tlink_t* link; + qse_lsp_obj_t* obj; + qse_lsp_tlink_t* link; }; #ifdef __cplusplus extern "C" { #endif -ase_lsp_frame_t* ase_lsp_newframe (ase_lsp_t* lsp); -void ase_lsp_freeframe (ase_lsp_t* lsp, ase_lsp_frame_t* frame); +qse_lsp_frame_t* qse_lsp_newframe (qse_lsp_t* lsp); +void qse_lsp_freeframe (qse_lsp_t* lsp, qse_lsp_frame_t* frame); -ase_lsp_assoc_t* ase_lsp_lookupinframe ( - ase_lsp_t* lsp, ase_lsp_frame_t* frame, ase_lsp_obj_t* name); +qse_lsp_assoc_t* qse_lsp_lookupinframe ( + qse_lsp_t* lsp, qse_lsp_frame_t* frame, qse_lsp_obj_t* name); -ase_lsp_assoc_t* ase_lsp_insvalueintoframe ( - ase_lsp_t* lsp, ase_lsp_frame_t* frame, - ase_lsp_obj_t* name, ase_lsp_obj_t* value); -ase_lsp_assoc_t* ase_lsp_insfuncintoframe ( - ase_lsp_t* lsp, ase_lsp_frame_t* frame, - ase_lsp_obj_t* name, ase_lsp_obj_t* func); +qse_lsp_assoc_t* qse_lsp_insvalueintoframe ( + qse_lsp_t* lsp, qse_lsp_frame_t* frame, + qse_lsp_obj_t* name, qse_lsp_obj_t* value); +qse_lsp_assoc_t* qse_lsp_insfuncintoframe ( + qse_lsp_t* lsp, qse_lsp_frame_t* frame, + qse_lsp_obj_t* name, qse_lsp_obj_t* func); -ase_lsp_tlink_t* ase_lsp_pushtmp (ase_lsp_t* lsp, ase_lsp_obj_t* obj); -void ase_lsp_poptmp (ase_lsp_t* lsp); +qse_lsp_tlink_t* qse_lsp_pushtmp (qse_lsp_t* lsp, qse_lsp_obj_t* obj); +void qse_lsp_poptmp (qse_lsp_t* lsp); #ifdef __cplusplus } diff --git a/qse/lib/lsp/err.c b/qse/lib/lsp/err.c index 8239447b..fa004a67 100644 --- a/qse/lib/lsp/err.c +++ b/qse/lib/lsp/err.c @@ -6,56 +6,56 @@ #include "lsp.h" -static const ase_char_t* __geterrstr (int errnum) +static const qse_char_t* __geterrstr (int errnum) { - static const ase_char_t* __errstr[] = + static const qse_char_t* __errstr[] = { - ASE_T("no error"), - ASE_T("out of memory"), - ASE_T("exit"), - ASE_T("end of source"), - ASE_T("unexpected end of string"), - ASE_T("input not attached"), - ASE_T("input"), - ASE_T("output not attached"), - ASE_T("output"), - ASE_T("syntax"), - ASE_T("right parenthesis expected"), - ASE_T("bad arguments"), - ASE_T("too few arguments"), - ASE_T("too many arguments"), - ASE_T("undefined function '%s'"), - ASE_T("bad function"), - ASE_T("duplicate formal"), - ASE_T("bad symbol"), - ASE_T("undefined symbol '%s'"), - ASE_T("empty body"), - ASE_T("bad value"), - ASE_T("divide by zero") + QSE_T("no error"), + QSE_T("out of memory"), + QSE_T("exit"), + QSE_T("end of source"), + QSE_T("unexpected end of string"), + QSE_T("input not attached"), + QSE_T("input"), + QSE_T("output not attached"), + QSE_T("output"), + QSE_T("syntax"), + QSE_T("right parenthesis expected"), + QSE_T("bad arguments"), + QSE_T("too few arguments"), + QSE_T("too many arguments"), + QSE_T("undefined function '%s'"), + QSE_T("bad function"), + QSE_T("duplicate formal"), + QSE_T("bad symbol"), + QSE_T("undefined symbol '%s'"), + QSE_T("empty body"), + QSE_T("bad value"), + QSE_T("divide by zero") }; - if (errnum >= 0 && errnum < ASE_COUNTOF(__errstr)) + if (errnum >= 0 && errnum < QSE_COUNTOF(__errstr)) { return __errstr[errnum]; } - return ASE_T("unknown error"); + return QSE_T("unknown error"); } -void ase_lsp_geterror ( - ase_lsp_t* lsp, int* errnum, const ase_char_t** errmsg) +void qse_lsp_geterror ( + qse_lsp_t* lsp, int* errnum, const qse_char_t** errmsg) { - if (errnum != ASE_NULL) *errnum = lsp->errnum; - if (errmsg != ASE_NULL) *errmsg = lsp->errmsg; + if (errnum != QSE_NULL) *errnum = lsp->errnum; + if (errmsg != QSE_NULL) *errmsg = lsp->errmsg; } -void ase_lsp_seterror ( - ase_lsp_t* lsp, int errnum, - const ase_char_t** errarg, ase_size_t argcnt) +void qse_lsp_seterror ( + qse_lsp_t* lsp, int errnum, + const qse_char_t** errarg, qse_size_t argcnt) { - const ase_char_t* errfmt; + const qse_char_t* errfmt; - ASE_ASSERT (argcnt <= 5); + QSE_ASSERT (argcnt <= 5); lsp->errnum = errnum; errfmt = __geterrstr (errnum); @@ -66,7 +66,7 @@ void ase_lsp_seterror ( lsp->prmfns.misc.sprintf ( lsp->prmfns.misc.data, lsp->errmsg, - ASE_COUNTOF(lsp->errmsg), + QSE_COUNTOF(lsp->errmsg), errfmt); return; @@ -74,7 +74,7 @@ void ase_lsp_seterror ( lsp->prmfns.misc.sprintf ( lsp->prmfns.misc.data, lsp->errmsg, - ASE_COUNTOF(lsp->errmsg), + QSE_COUNTOF(lsp->errmsg), errfmt, errarg[0]); return; @@ -83,7 +83,7 @@ void ase_lsp_seterror ( lsp->prmfns.misc.sprintf ( lsp->prmfns.misc.data, lsp->errmsg, - ASE_COUNTOF(lsp->errmsg), + QSE_COUNTOF(lsp->errmsg), errfmt, errarg[0], errarg[1]); @@ -93,7 +93,7 @@ void ase_lsp_seterror ( lsp->prmfns.misc.sprintf ( lsp->prmfns.misc.data, lsp->errmsg, - ASE_COUNTOF(lsp->errmsg), + QSE_COUNTOF(lsp->errmsg), errfmt, errarg[0], errarg[1], @@ -104,7 +104,7 @@ void ase_lsp_seterror ( lsp->prmfns.misc.sprintf ( lsp->prmfns.misc.data, lsp->errmsg, - ASE_COUNTOF(lsp->errmsg), + QSE_COUNTOF(lsp->errmsg), errfmt, errarg[0], errarg[1], @@ -116,7 +116,7 @@ void ase_lsp_seterror ( lsp->prmfns.misc.sprintf ( lsp->prmfns.misc.data, lsp->errmsg, - ASE_COUNTOF(lsp->errmsg), + QSE_COUNTOF(lsp->errmsg), errfmt, errarg[0], errarg[1], diff --git a/qse/lib/lsp/eval.c b/qse/lib/lsp/eval.c index f83a7a0c..a0e53a4b 100644 --- a/qse/lib/lsp/eval.c +++ b/qse/lib/lsp/eval.c @@ -6,53 +6,53 @@ #include "lsp.h" -static ase_lsp_obj_t* __eval (ase_lsp_t* lsp, ase_lsp_obj_t* obj); -static ase_lsp_obj_t* makefn ( - ase_lsp_t* lsp, ase_lsp_obj_t* cdr, int is_macro); -static ase_lsp_obj_t* eval_cons ( - ase_lsp_t* lsp, ase_lsp_obj_t* cons); -static ase_lsp_obj_t* apply ( - ase_lsp_t* lsp, ase_lsp_obj_t* func, ase_lsp_obj_t* actual); -static ase_lsp_obj_t* apply_to_prim ( - ase_lsp_t* lsp, ase_lsp_obj_t* func, ase_lsp_obj_t* actual); +static qse_lsp_obj_t* __eval (qse_lsp_t* lsp, qse_lsp_obj_t* obj); +static qse_lsp_obj_t* makefn ( + qse_lsp_t* lsp, qse_lsp_obj_t* cdr, int is_macro); +static qse_lsp_obj_t* eval_cons ( + qse_lsp_t* lsp, qse_lsp_obj_t* cons); +static qse_lsp_obj_t* apply ( + qse_lsp_t* lsp, qse_lsp_obj_t* func, qse_lsp_obj_t* actual); +static qse_lsp_obj_t* apply_to_prim ( + qse_lsp_t* lsp, qse_lsp_obj_t* func, qse_lsp_obj_t* actual); -ase_lsp_obj_t* ase_lsp_eval (ase_lsp_t* lsp, ase_lsp_obj_t* obj) +qse_lsp_obj_t* qse_lsp_eval (qse_lsp_t* lsp, qse_lsp_obj_t* obj) { - if (ASE_LSP_TYPE(obj) == ASE_LSP_OBJ_CONS) + if (QSE_LSP_TYPE(obj) == QSE_LSP_OBJ_CONS) { return eval_cons (lsp, obj); } - else if (ASE_LSP_TYPE(obj) == ASE_LSP_OBJ_SYM) + else if (QSE_LSP_TYPE(obj) == QSE_LSP_OBJ_SYM) { - ase_lsp_assoc_t* assoc; + qse_lsp_assoc_t* assoc; /* if (obj == lsp->mem->lambda || obj == lsp->mem->macro) { - ase_char_t* arg[1]; + qse_char_t* arg[1]; - arg[0] = ASE_LSP_SYMPTR(obj); + arg[0] = QSE_LSP_SYMPTR(obj); printf ("lambda or macro can't be used as a normal symbol\n"); - ase_lsp_seterror ( - lsp, ASE_LSP_EBADSYM, - arg, ASE_COUNTOF(arg)); - return ASE_NULL; + qse_lsp_seterror ( + lsp, QSE_LSP_EBADSYM, + arg, QSE_COUNTOF(arg)); + return QSE_NULL; } */ - assoc = ase_lsp_lookup(lsp->mem, obj); - if (assoc == ASE_NULL || assoc->value == ASE_NULL) + assoc = qse_lsp_lookup(lsp->mem, obj); + if (assoc == QSE_NULL || assoc->value == QSE_NULL) { if (lsp->opt_undef_symbol) { - const ase_char_t* arg[1]; + const qse_char_t* arg[1]; - arg[0] = ASE_LSP_SYMPTR(obj); + arg[0] = QSE_LSP_SYMPTR(obj); - ase_lsp_seterror ( - lsp, ASE_LSP_EUNDEFSYM, - arg, ASE_COUNTOF(arg)); - return ASE_NULL; + qse_lsp_seterror ( + lsp, QSE_LSP_EUNDEFSYM, + arg, QSE_COUNTOF(arg)); + return QSE_NULL; } return lsp->mem->nil; } @@ -63,59 +63,59 @@ ase_lsp_obj_t* ase_lsp_eval (ase_lsp_t* lsp, ase_lsp_obj_t* obj) return obj; } -static ase_lsp_obj_t* makefn (ase_lsp_t* lsp, ase_lsp_obj_t* cdr, int is_macro) +static qse_lsp_obj_t* makefn (qse_lsp_t* lsp, qse_lsp_obj_t* cdr, int is_macro) { - ase_lsp_obj_t* func, * formal, * body, * p; + qse_lsp_obj_t* func, * formal, * body, * p; if (cdr == lsp->mem->nil) { - ase_lsp_seterror (lsp, ASE_LSP_EARGFEW, ASE_NULL, 0); - return ASE_NULL; + qse_lsp_seterror (lsp, QSE_LSP_EARGFEW, QSE_NULL, 0); + return QSE_NULL; } - if (ASE_LSP_TYPE(cdr) != ASE_LSP_OBJ_CONS) + if (QSE_LSP_TYPE(cdr) != QSE_LSP_OBJ_CONS) { - ase_lsp_seterror (lsp, ASE_LSP_EARGBAD, ASE_NULL, 0); - return ASE_NULL; + qse_lsp_seterror (lsp, QSE_LSP_EARGBAD, QSE_NULL, 0); + return QSE_NULL; } - formal = ASE_LSP_CAR(cdr); - body = ASE_LSP_CDR(cdr); + formal = QSE_LSP_CAR(cdr); + body = QSE_LSP_CDR(cdr); if (body == lsp->mem->nil) { - ase_lsp_seterror (lsp, ASE_LSP_EEMPBDY, ASE_NULL, 0); - return ASE_NULL; + qse_lsp_seterror (lsp, QSE_LSP_EEMPBDY, QSE_NULL, 0); + return QSE_NULL; } /* TODO: more lambda expression syntax checks required???. */ /* check if the lambda express has non-nil value * at the terminating cdr */ - for (p = body; ASE_LSP_TYPE(p) == ASE_LSP_OBJ_CONS; p = ASE_LSP_CDR(p)); + for (p = body; QSE_LSP_TYPE(p) == QSE_LSP_OBJ_CONS; p = QSE_LSP_CDR(p)); if (p != lsp->mem->nil) { /* like in (lambda (x) (+ x 10) . 4) */ - ase_lsp_seterror (lsp, ASE_LSP_EARGBAD, ASE_NULL, 0); - return ASE_NULL; + qse_lsp_seterror (lsp, QSE_LSP_EARGBAD, QSE_NULL, 0); + return QSE_NULL; } func = (is_macro)? - ase_lsp_makemacro (lsp->mem, formal, body): - ase_lsp_makefunc (lsp->mem, formal, body); - if (func == ASE_NULL) return ASE_NULL; + qse_lsp_makemacro (lsp->mem, formal, body): + qse_lsp_makefunc (lsp->mem, formal, body); + if (func == QSE_NULL) return QSE_NULL; return func; } -static ase_lsp_obj_t* eval_cons (ase_lsp_t* lsp, ase_lsp_obj_t* cons) +static qse_lsp_obj_t* eval_cons (qse_lsp_t* lsp, qse_lsp_obj_t* cons) { - ase_lsp_obj_t* car, * cdr; + qse_lsp_obj_t* car, * cdr; - ASE_ASSERT (ASE_LSP_TYPE(cons) == ASE_LSP_OBJ_CONS); + QSE_ASSERT (QSE_LSP_TYPE(cons) == QSE_LSP_OBJ_CONS); - car = ASE_LSP_CAR(cons); - cdr = ASE_LSP_CDR(cons); + car = QSE_LSP_CAR(cons); + cdr = QSE_LSP_CDR(cons); if (car == lsp->mem->lambda) { @@ -127,118 +127,118 @@ static ase_lsp_obj_t* eval_cons (ase_lsp_t* lsp, ase_lsp_obj_t* cons) /* (macro (x) (+ x 20)) */ return makefn (lsp, cdr, 1); } - else if (ASE_LSP_TYPE(car) == ASE_LSP_OBJ_SYM) + else if (QSE_LSP_TYPE(car) == QSE_LSP_OBJ_SYM) { - ase_lsp_assoc_t* assoc; + qse_lsp_assoc_t* assoc; - if ((assoc = ase_lsp_lookup(lsp->mem, car)) != ASE_NULL) + if ((assoc = qse_lsp_lookup(lsp->mem, car)) != QSE_NULL) { - /*ase_lsp_obj_t* func = assoc->value;*/ - ase_lsp_obj_t* func = assoc->func; - if (func == ASE_NULL) + /*qse_lsp_obj_t* func = assoc->value;*/ + qse_lsp_obj_t* func = assoc->func; + if (func == QSE_NULL) { /* the symbol's function definition is void */ - const ase_char_t* arg[1]; + const qse_char_t* arg[1]; - arg[0] = ASE_LSP_SYMPTR(car); - ase_lsp_seterror ( - lsp, ASE_LSP_EUNDEFFN, - arg, ASE_COUNTOF(arg)); + arg[0] = QSE_LSP_SYMPTR(car); + qse_lsp_seterror ( + lsp, QSE_LSP_EUNDEFFN, + arg, QSE_COUNTOF(arg)); - return ASE_NULL; + return QSE_NULL; } - if (ASE_LSP_TYPE(func) == ASE_LSP_OBJ_FUNC || - ASE_LSP_TYPE(func) == ASE_LSP_OBJ_MACRO) + if (QSE_LSP_TYPE(func) == QSE_LSP_OBJ_FUNC || + QSE_LSP_TYPE(func) == QSE_LSP_OBJ_MACRO) { return apply (lsp, func, cdr); } - else if (ASE_LSP_TYPE(func) == ASE_LSP_OBJ_PRIM) + else if (QSE_LSP_TYPE(func) == QSE_LSP_OBJ_PRIM) { /* primitive function */ return apply_to_prim (lsp, func, cdr); } else { - const ase_char_t* arg[1]; + const qse_char_t* arg[1]; - arg[0] = ASE_LSP_SYMPTR(car); - ase_lsp_seterror ( - lsp, ASE_LSP_EUNDEFFN, - arg, ASE_COUNTOF(arg)); + arg[0] = QSE_LSP_SYMPTR(car); + qse_lsp_seterror ( + lsp, QSE_LSP_EUNDEFFN, + arg, QSE_COUNTOF(arg)); - return ASE_NULL; + return QSE_NULL; } } else { - const ase_char_t* arg[1]; + const qse_char_t* arg[1]; - arg[0] = ASE_LSP_SYMPTR(car); - ase_lsp_seterror ( - lsp, ASE_LSP_EUNDEFFN, - arg, ASE_COUNTOF(arg)); + arg[0] = QSE_LSP_SYMPTR(car); + qse_lsp_seterror ( + lsp, QSE_LSP_EUNDEFFN, + arg, QSE_COUNTOF(arg)); - return ASE_NULL; + return QSE_NULL; } } - else if (ASE_LSP_TYPE(car) == ASE_LSP_OBJ_FUNC || - ASE_LSP_TYPE(car) == ASE_LSP_OBJ_MACRO) + else if (QSE_LSP_TYPE(car) == QSE_LSP_OBJ_FUNC || + QSE_LSP_TYPE(car) == QSE_LSP_OBJ_MACRO) { return apply (lsp, car, cdr); } - else if (ASE_LSP_TYPE(car) == ASE_LSP_OBJ_CONS) + else if (QSE_LSP_TYPE(car) == QSE_LSP_OBJ_CONS) { /* anonymous function or macros * ((lambda (x) (+ x 10)) 50) */ - if (ASE_LSP_CAR(car) == lsp->mem->lambda) + if (QSE_LSP_CAR(car) == lsp->mem->lambda) { - ase_lsp_obj_t* func = makefn (lsp, ASE_LSP_CDR(car), 0); - if (func == ASE_NULL) return ASE_NULL; + qse_lsp_obj_t* func = makefn (lsp, QSE_LSP_CDR(car), 0); + if (func == QSE_NULL) return QSE_NULL; return apply (lsp, func, cdr); } - else if (ASE_LSP_CAR(car) == lsp->mem->macro) + else if (QSE_LSP_CAR(car) == lsp->mem->macro) { - ase_lsp_obj_t* func = makefn (lsp, ASE_LSP_CDR(car), 1); - if (func == ASE_NULL) return ASE_NULL; + qse_lsp_obj_t* func = makefn (lsp, QSE_LSP_CDR(car), 1); + if (func == QSE_NULL) return QSE_NULL; return apply (lsp, func, cdr); } } - ase_lsp_seterror (lsp, ASE_LSP_EBADFN, ASE_NULL, 0); - return ASE_NULL; + qse_lsp_seterror (lsp, QSE_LSP_EBADFN, QSE_NULL, 0); + return QSE_NULL; } -static ase_lsp_obj_t* apply ( - ase_lsp_t* lsp, ase_lsp_obj_t* func, ase_lsp_obj_t* actual) +static qse_lsp_obj_t* apply ( + qse_lsp_t* lsp, qse_lsp_obj_t* func, qse_lsp_obj_t* actual) { - ase_lsp_frame_t* frame; - ase_lsp_obj_t* formal; - ase_lsp_obj_t* body; - ase_lsp_obj_t* value; - ase_lsp_mem_t* mem; + qse_lsp_frame_t* frame; + qse_lsp_obj_t* formal; + qse_lsp_obj_t* body; + qse_lsp_obj_t* value; + qse_lsp_mem_t* mem; - ASE_ASSERT (ASE_LSP_TYPE(func) == ASE_LSP_OBJ_FUNC || - ASE_LSP_TYPE(func) == ASE_LSP_OBJ_MACRO); + QSE_ASSERT (QSE_LSP_TYPE(func) == QSE_LSP_OBJ_FUNC || + QSE_LSP_TYPE(func) == QSE_LSP_OBJ_MACRO); - ASE_ASSERT (ASE_LSP_TYPE(ASE_LSP_CDR(func)) == ASE_LSP_OBJ_CONS); + QSE_ASSERT (QSE_LSP_TYPE(QSE_LSP_CDR(func)) == QSE_LSP_OBJ_CONS); mem = lsp->mem; - if (ASE_LSP_TYPE(func) == ASE_LSP_OBJ_MACRO) + if (QSE_LSP_TYPE(func) == QSE_LSP_OBJ_MACRO) { - formal = ASE_LSP_MFORMAL (func); - body = ASE_LSP_MBODY (func); + formal = QSE_LSP_MFORMAL (func); + body = QSE_LSP_MBODY (func); } else { - formal = ASE_LSP_FFORMAL (func); - body = ASE_LSP_FBODY (func); + formal = QSE_LSP_FFORMAL (func); + body = QSE_LSP_FBODY (func); } /* make a new frame. */ - frame = ase_lsp_newframe (lsp); - if (frame == ASE_NULL) return ASE_NULL; + frame = qse_lsp_newframe (lsp); + if (frame == QSE_NULL) return QSE_NULL; /* attach it to the brooding frame list to * prevent them from being garbage-collected. */ @@ -251,62 +251,62 @@ static ase_lsp_obj_t* apply ( if (actual == mem->nil) { mem->brooding_frame = frame->link; - ase_lsp_freeframe (lsp, frame); + qse_lsp_freeframe (lsp, frame); - ase_lsp_seterror (lsp, ASE_LSP_EARGFEW, ASE_NULL, 0); - return ASE_NULL; + qse_lsp_seterror (lsp, QSE_LSP_EARGFEW, QSE_NULL, 0); + return QSE_NULL; } - value = ASE_LSP_CAR(actual); - if (ASE_LSP_TYPE(func) != ASE_LSP_OBJ_MACRO) + value = QSE_LSP_CAR(actual); + if (QSE_LSP_TYPE(func) != QSE_LSP_OBJ_MACRO) { /* macro doesn't evaluate actual arguments. */ - value = ase_lsp_eval (lsp, value); - if (value == ASE_NULL) + value = qse_lsp_eval (lsp, value); + if (value == QSE_NULL) { mem->brooding_frame = frame->link; - ase_lsp_freeframe (lsp, frame); - return ASE_NULL; + qse_lsp_freeframe (lsp, frame); + return QSE_NULL; } } - if (ase_lsp_lookupinframe ( - lsp, frame, ASE_LSP_CAR(formal)) != ASE_NULL) + if (qse_lsp_lookupinframe ( + lsp, frame, QSE_LSP_CAR(formal)) != QSE_NULL) { mem->brooding_frame = frame->link; - ase_lsp_freeframe (lsp, frame); + qse_lsp_freeframe (lsp, frame); - ase_lsp_seterror (lsp, ASE_LSP_EDUPFML, ASE_NULL, 0); - return ASE_NULL; + qse_lsp_seterror (lsp, QSE_LSP_EDUPFML, QSE_NULL, 0); + return QSE_NULL; } - if (ase_lsp_insvalueintoframe ( - lsp, frame, ASE_LSP_CAR(formal), value) == ASE_NULL) + if (qse_lsp_insvalueintoframe ( + lsp, frame, QSE_LSP_CAR(formal), value) == QSE_NULL) { mem->brooding_frame = frame->link; - ase_lsp_freeframe (lsp, frame); - return ASE_NULL; + qse_lsp_freeframe (lsp, frame); + return QSE_NULL; } - actual = ASE_LSP_CDR(actual); - formal = ASE_LSP_CDR(formal); + actual = QSE_LSP_CDR(actual); + formal = QSE_LSP_CDR(formal); } - if (ASE_LSP_TYPE(actual) == ASE_LSP_OBJ_CONS) + if (QSE_LSP_TYPE(actual) == QSE_LSP_OBJ_CONS) { mem->brooding_frame = frame->link; - ase_lsp_freeframe (lsp, frame); + qse_lsp_freeframe (lsp, frame); - ase_lsp_seterror (lsp, ASE_LSP_EARGMANY, ASE_NULL, 0); - return ASE_NULL; + qse_lsp_seterror (lsp, QSE_LSP_EARGMANY, QSE_NULL, 0); + return QSE_NULL; } else if (actual != mem->nil) { mem->brooding_frame = frame->link; - ase_lsp_freeframe (lsp, frame); + qse_lsp_freeframe (lsp, frame); - ase_lsp_seterror (lsp, ASE_LSP_EARGBAD, ASE_NULL, 0); - return ASE_NULL; + qse_lsp_seterror (lsp, QSE_LSP_EARGBAD, QSE_NULL, 0); + return QSE_NULL; } /* push the frame */ @@ -318,63 +318,63 @@ static ase_lsp_obj_t* apply ( value = mem->nil; while (body != mem->nil) { - value = ase_lsp_eval(lsp, ASE_LSP_CAR(body)); - if (value == ASE_NULL) + value = qse_lsp_eval(lsp, QSE_LSP_CAR(body)); + if (value == QSE_NULL) { mem->frame = frame->link; - ase_lsp_freeframe (lsp, frame); - return ASE_NULL; + qse_lsp_freeframe (lsp, frame); + return QSE_NULL; } - body = ASE_LSP_CDR(body); + body = QSE_LSP_CDR(body); } /* pop the frame. */ mem->frame = frame->link; /* destroy the frame. */ - ase_lsp_freeframe (lsp, frame); + qse_lsp_freeframe (lsp, frame); - /*if (ASE_LSP_CAR(func) == mem->macro) {*/ - if (ASE_LSP_TYPE(func) == ASE_LSP_OBJ_MACRO) + /*if (QSE_LSP_CAR(func) == mem->macro) {*/ + if (QSE_LSP_TYPE(func) == QSE_LSP_OBJ_MACRO) { - value = ase_lsp_eval (lsp, value); - if (value == ASE_NULL) return ASE_NULL; + value = qse_lsp_eval (lsp, value); + if (value == QSE_NULL) return QSE_NULL; } return value; } -static ase_lsp_obj_t* apply_to_prim ( - ase_lsp_t* lsp, ase_lsp_obj_t* func, ase_lsp_obj_t* actual) +static qse_lsp_obj_t* apply_to_prim ( + qse_lsp_t* lsp, qse_lsp_obj_t* func, qse_lsp_obj_t* actual) { - ase_lsp_obj_t* obj; - ase_size_t count = 0; + qse_lsp_obj_t* obj; + qse_size_t count = 0; - ASE_ASSERT (ASE_LSP_TYPE(func) == ASE_LSP_OBJ_PRIM); + QSE_ASSERT (QSE_LSP_TYPE(func) == QSE_LSP_OBJ_PRIM); obj = actual; - while (ASE_LSP_TYPE(obj) == ASE_LSP_OBJ_CONS) + while (QSE_LSP_TYPE(obj) == QSE_LSP_OBJ_CONS) { count++; - obj = ASE_LSP_CDR(obj); + obj = QSE_LSP_CDR(obj); } if (obj != lsp->mem->nil) { - ase_lsp_seterror (lsp, ASE_LSP_EARGBAD, ASE_NULL, 0); - return ASE_NULL; + qse_lsp_seterror (lsp, QSE_LSP_EARGBAD, QSE_NULL, 0); + return QSE_NULL; } - if (count < ASE_LSP_PMINARGS(func)) + if (count < QSE_LSP_PMINARGS(func)) { - ase_lsp_seterror (lsp, ASE_LSP_EARGFEW, ASE_NULL, 0); - return ASE_NULL; + qse_lsp_seterror (lsp, QSE_LSP_EARGFEW, QSE_NULL, 0); + return QSE_NULL; } - if (count > ASE_LSP_PMAXARGS(func)) + if (count > QSE_LSP_PMAXARGS(func)) { - ase_lsp_seterror (lsp, ASE_LSP_EARGMANY, ASE_NULL, 0); - return ASE_NULL; + qse_lsp_seterror (lsp, QSE_LSP_EARGMANY, QSE_NULL, 0); + return QSE_NULL; } - return ASE_LSP_PIMPL(func) (lsp, actual); + return QSE_LSP_PIMPL(func) (lsp, actual); } diff --git a/qse/lib/lsp/lsp.c b/qse/lib/lsp/lsp.c index f792beab..3b978d56 100644 --- a/qse/lib/lsp/lsp.c +++ b/qse/lib/lsp/lsp.c @@ -11,84 +11,84 @@ #include "lsp.h" -static int __add_builtin_prims (ase_lsp_t* lsp); +static int __add_builtin_prims (qse_lsp_t* lsp); -ase_lsp_t* ase_lsp_open ( - const ase_lsp_prmfns_t* prmfns, - ase_size_t mem_ubound, ase_size_t mem_ubound_inc) +qse_lsp_t* qse_lsp_open ( + const qse_lsp_prmfns_t* prmfns, + qse_size_t mem_ubound, qse_size_t mem_ubound_inc) { - ase_lsp_t* lsp; + qse_lsp_t* lsp; - if (prmfns == ASE_NULL) return ASE_NULL; + if (prmfns == QSE_NULL) return QSE_NULL; /* - if (prmfns->mmgr.malloc == ASE_NULL || - prmfns->mmgr.realloc == ASE_NULL || - prmfns->mmgr.free == ASE_NULL) return ASE_NULL; + if (prmfns->mmgr.malloc == QSE_NULL || + prmfns->mmgr.realloc == QSE_NULL || + prmfns->mmgr.free == QSE_NULL) return QSE_NULL; - if (prmfns->ccls.is_upper == ASE_NULL || - prmfns->ccls.is_lower == ASE_NULL || - prmfns->ccls.is_alpha == ASE_NULL || - prmfns->ccls.is_digit == ASE_NULL || - prmfns->ccls.is_xdigit == ASE_NULL || - prmfns->ccls.is_alnum == ASE_NULL || - prmfns->ccls.is_space == ASE_NULL || - prmfns->ccls.is_print == ASE_NULL || - prmfns->ccls.is_graph == ASE_NULL || - prmfns->ccls.is_cntrl == ASE_NULL || - prmfns->ccls.is_punct == ASE_NULL || - prmfns->ccls.to_upper == ASE_NULL || - prmfns->ccls.to_lower == ASE_NULL) return ASE_NULL; + if (prmfns->ccls.is_upper == QSE_NULL || + prmfns->ccls.is_lower == QSE_NULL || + prmfns->ccls.is_alpha == QSE_NULL || + prmfns->ccls.is_digit == QSE_NULL || + prmfns->ccls.is_xdigit == QSE_NULL || + prmfns->ccls.is_alnum == QSE_NULL || + prmfns->ccls.is_space == QSE_NULL || + prmfns->ccls.is_print == QSE_NULL || + prmfns->ccls.is_graph == QSE_NULL || + prmfns->ccls.is_cntrl == QSE_NULL || + prmfns->ccls.is_punct == QSE_NULL || + prmfns->ccls.to_upper == QSE_NULL || + prmfns->ccls.to_lower == QSE_NULL) return QSE_NULL; */ - if (prmfns->misc.sprintf == ASE_NULL || - prmfns->misc.dprintf == ASE_NULL) return ASE_NULL; + if (prmfns->misc.sprintf == QSE_NULL || + prmfns->misc.dprintf == QSE_NULL) return QSE_NULL; #if defined(_WIN32) && defined(_MSC_VER) && defined(_DEBUG) - lsp = (ase_lsp_t*) malloc (ASE_SIZEOF(ase_lsp_t)); + lsp = (qse_lsp_t*) malloc (QSE_SIZEOF(qse_lsp_t)); #else - lsp = (ase_lsp_t*) prmfns->mmgr.alloc ( - prmfns->mmgr.data, ASE_SIZEOF(ase_lsp_t)); + lsp = (qse_lsp_t*) prmfns->mmgr.alloc ( + prmfns->mmgr.data, QSE_SIZEOF(qse_lsp_t)); #endif - if (lsp == ASE_NULL) return ASE_NULL; + if (lsp == QSE_NULL) return QSE_NULL; - /* it uses the built-in ase_lsp_memset because lsp is not + /* it uses the built-in qse_lsp_memset because lsp is not * fully initialized yet */ - ASE_MEMSET (lsp, 0, ASE_SIZEOF(ase_lsp_t)); - ASE_MEMCPY (&lsp->prmfns, prmfns, ASE_SIZEOF(lsp->prmfns)); - lsp->assoc_data = ASE_NULL; + QSE_MEMSET (lsp, 0, QSE_SIZEOF(qse_lsp_t)); + QSE_MEMCPY (&lsp->prmfns, prmfns, QSE_SIZEOF(lsp->prmfns)); + lsp->assoc_data = QSE_NULL; - if (ase_lsp_name_open(&lsp->token.name, 0, lsp) == ASE_NULL) + if (qse_lsp_name_open(&lsp->token.name, 0, lsp) == QSE_NULL) { - ASE_LSP_FREE (lsp, lsp); - return ASE_NULL; + QSE_LSP_FREE (lsp, lsp); + return QSE_NULL; } - lsp->errnum = ASE_LSP_ENOERR; - lsp->errmsg[0] = ASE_T('\0'); + lsp->errnum = QSE_LSP_ENOERR; + lsp->errmsg[0] = QSE_T('\0'); lsp->opt_undef_symbol = 1; /*lsp->opt_undef_symbol = 0;*/ - lsp->curc = ASE_CHAR_EOF; - lsp->input_func = ASE_NULL; - lsp->output_func = ASE_NULL; - lsp->input_arg = ASE_NULL; - lsp->output_arg = ASE_NULL; + lsp->curc = QSE_CHAR_EOF; + lsp->input_func = QSE_NULL; + lsp->output_func = QSE_NULL; + lsp->input_arg = QSE_NULL; + lsp->output_arg = QSE_NULL; - lsp->mem = ase_lsp_openmem (lsp, mem_ubound, mem_ubound_inc); - if (lsp->mem == ASE_NULL) + lsp->mem = qse_lsp_openmem (lsp, mem_ubound, mem_ubound_inc); + if (lsp->mem == QSE_NULL) { - ase_lsp_name_close (&lsp->token.name); - ASE_LSP_FREE (lsp, lsp); - return ASE_NULL; + qse_lsp_name_close (&lsp->token.name); + QSE_LSP_FREE (lsp, lsp); + return QSE_NULL; } if (__add_builtin_prims(lsp) == -1) { - ase_lsp_closemem (lsp->mem); - ase_lsp_name_close (&lsp->token.name); - ASE_LSP_FREE (lsp, lsp); - return ASE_NULL; + qse_lsp_closemem (lsp->mem); + qse_lsp_name_close (&lsp->token.name); + QSE_LSP_FREE (lsp, lsp); + return QSE_NULL; } lsp->max_eval_depth = 0; /* TODO: put restriction here.... */ @@ -97,30 +97,30 @@ ase_lsp_t* ase_lsp_open ( return lsp; } -void ase_lsp_close (ase_lsp_t* lsp) +void qse_lsp_close (qse_lsp_t* lsp) { - ase_lsp_closemem (lsp->mem); - ase_lsp_name_close (&lsp->token.name); - ASE_LSP_FREE (lsp, lsp); + qse_lsp_closemem (lsp->mem); + qse_lsp_name_close (&lsp->token.name); + QSE_LSP_FREE (lsp, lsp); } -void ase_lsp_setassocdata (ase_lsp_t* lsp, void* data) +void qse_lsp_setassocdata (qse_lsp_t* lsp, void* data) { lsp->assoc_data = data; } -void* ase_lsp_getassocdata (ase_lsp_t* lsp) +void* qse_lsp_getassocdata (qse_lsp_t* lsp) { return lsp->assoc_data; } -int ase_lsp_attinput (ase_lsp_t* lsp, ase_lsp_io_t input, void* arg) +int qse_lsp_attinput (qse_lsp_t* lsp, qse_lsp_io_t input, void* arg) { - if (ase_lsp_detinput(lsp) == -1) return -1; + if (qse_lsp_detinput(lsp) == -1) return -1; - ASE_ASSERT (lsp->input_func == ASE_NULL); + QSE_ASSERT (lsp->input_func == QSE_NULL); - if (input(ASE_LSP_IO_OPEN, arg, ASE_NULL, 0) == -1) + if (input(QSE_LSP_IO_OPEN, arg, QSE_NULL, 0) == -1) { /* TODO: set error number */ return -1; @@ -128,35 +128,35 @@ int ase_lsp_attinput (ase_lsp_t* lsp, ase_lsp_io_t input, void* arg) lsp->input_func = input; lsp->input_arg = arg; - lsp->curc = ASE_CHAR_EOF; + lsp->curc = QSE_CHAR_EOF; return 0; } -int ase_lsp_detinput (ase_lsp_t* lsp) +int qse_lsp_detinput (qse_lsp_t* lsp) { - if (lsp->input_func != ASE_NULL) + if (lsp->input_func != QSE_NULL) { if (lsp->input_func ( - ASE_LSP_IO_CLOSE, lsp->input_arg, ASE_NULL, 0) == -1) + QSE_LSP_IO_CLOSE, lsp->input_arg, QSE_NULL, 0) == -1) { /* TODO: set error number */ return -1; } - lsp->input_func = ASE_NULL; - lsp->input_arg = ASE_NULL; - lsp->curc = ASE_CHAR_EOF; + lsp->input_func = QSE_NULL; + lsp->input_arg = QSE_NULL; + lsp->curc = QSE_CHAR_EOF; } return 0; } -int ase_lsp_attoutput (ase_lsp_t* lsp, ase_lsp_io_t output, void* arg) +int qse_lsp_attoutput (qse_lsp_t* lsp, qse_lsp_io_t output, void* arg) { - if (ase_lsp_detoutput(lsp) == -1) return -1; + if (qse_lsp_detoutput(lsp) == -1) return -1; - ASE_ASSERT (lsp->output_func == ASE_NULL); + QSE_ASSERT (lsp->output_func == QSE_NULL); - if (output(ASE_LSP_IO_OPEN, arg, ASE_NULL, 0) == -1) + if (output(QSE_LSP_IO_OPEN, arg, QSE_NULL, 0) == -1) { /* TODO: set error number */ return -1; @@ -166,66 +166,66 @@ int ase_lsp_attoutput (ase_lsp_t* lsp, ase_lsp_io_t output, void* arg) return 0; } -int ase_lsp_detoutput (ase_lsp_t* lsp) +int qse_lsp_detoutput (qse_lsp_t* lsp) { - if (lsp->output_func != ASE_NULL) + if (lsp->output_func != QSE_NULL) { if (lsp->output_func ( - ASE_LSP_IO_CLOSE, lsp->output_arg, ASE_NULL, 0) == -1) + QSE_LSP_IO_CLOSE, lsp->output_arg, QSE_NULL, 0) == -1) { /* TODO: set error number */ return -1; } - lsp->output_func = ASE_NULL; - lsp->output_arg = ASE_NULL; + lsp->output_func = QSE_NULL; + lsp->output_arg = QSE_NULL; } return 0; } -static int __add_builtin_prims (ase_lsp_t* lsp) +static int __add_builtin_prims (qse_lsp_t* lsp) { #define ADD_PRIM(mem,name,name_len,pimpl,min_args,max_args) \ - if (ase_lsp_addprim(mem,name,name_len,pimpl,min_args,max_args) == -1) return -1; -#define MAX_ARGS ASE_TYPE_MAX(ase_size_t) + if (qse_lsp_addprim(mem,name,name_len,pimpl,min_args,max_args) == -1) return -1; +#define MAX_ARGS QSE_TYPE_MAX(qse_size_t) - ADD_PRIM (lsp, ASE_T("exit"), 4, ase_lsp_prim_exit, 0, 0); - ADD_PRIM (lsp, ASE_T("eval"), 4, ase_lsp_prim_eval, 1, 1); - ADD_PRIM (lsp, ASE_T("prog1"), 5, ase_lsp_prim_prog1, 1, MAX_ARGS); - ADD_PRIM (lsp, ASE_T("progn"), 5, ase_lsp_prim_progn, 1, MAX_ARGS); - ADD_PRIM (lsp, ASE_T("gc"), 2, ase_lsp_prim_gc, 0, 0); + ADD_PRIM (lsp, QSE_T("exit"), 4, qse_lsp_prim_exit, 0, 0); + ADD_PRIM (lsp, QSE_T("eval"), 4, qse_lsp_prim_eval, 1, 1); + ADD_PRIM (lsp, QSE_T("prog1"), 5, qse_lsp_prim_prog1, 1, MAX_ARGS); + ADD_PRIM (lsp, QSE_T("progn"), 5, qse_lsp_prim_progn, 1, MAX_ARGS); + ADD_PRIM (lsp, QSE_T("gc"), 2, qse_lsp_prim_gc, 0, 0); - ADD_PRIM (lsp, ASE_T("cond"), 4, ase_lsp_prim_cond, 0, MAX_ARGS); - ADD_PRIM (lsp, ASE_T("if"), 2, ase_lsp_prim_if, 2, MAX_ARGS); - ADD_PRIM (lsp, ASE_T("while"), 5, ase_lsp_prim_while, 1, MAX_ARGS); + ADD_PRIM (lsp, QSE_T("cond"), 4, qse_lsp_prim_cond, 0, MAX_ARGS); + ADD_PRIM (lsp, QSE_T("if"), 2, qse_lsp_prim_if, 2, MAX_ARGS); + ADD_PRIM (lsp, QSE_T("while"), 5, qse_lsp_prim_while, 1, MAX_ARGS); - ADD_PRIM (lsp, ASE_T("car"), 3, ase_lsp_prim_car, 1, 1); - ADD_PRIM (lsp, ASE_T("cdr"), 3, ase_lsp_prim_cdr, 1, 1); - ADD_PRIM (lsp, ASE_T("cons"), 4, ase_lsp_prim_cons, 2, 2); - ADD_PRIM (lsp, ASE_T("length"), 6, ase_lsp_prim_length, 1, 1); + ADD_PRIM (lsp, QSE_T("car"), 3, qse_lsp_prim_car, 1, 1); + ADD_PRIM (lsp, QSE_T("cdr"), 3, qse_lsp_prim_cdr, 1, 1); + ADD_PRIM (lsp, QSE_T("cons"), 4, qse_lsp_prim_cons, 2, 2); + ADD_PRIM (lsp, QSE_T("length"), 6, qse_lsp_prim_length, 1, 1); - ADD_PRIM (lsp, ASE_T("set"), 3, ase_lsp_prim_set, 2, 2); - ADD_PRIM (lsp, ASE_T("setq"), 4, ase_lsp_prim_setq, 1, MAX_ARGS); - ADD_PRIM (lsp, ASE_T("quote"), 5, ase_lsp_prim_quote, 1, 1); - ADD_PRIM (lsp, ASE_T("defun"), 5, ase_lsp_prim_defun, 3, MAX_ARGS); - ADD_PRIM (lsp, ASE_T("demac"), 5, ase_lsp_prim_demac, 3, MAX_ARGS); - ADD_PRIM (lsp, ASE_T("let"), 3, ase_lsp_prim_let, 1, MAX_ARGS); - ADD_PRIM (lsp, ASE_T("let*"), 4, ase_lsp_prim_letx, 1, MAX_ARGS); - /*ADD_PRIM (lsp, ASE_T("or"), 2, ase_lsp_prim_or, 2, MAX_ARGS);*/ + ADD_PRIM (lsp, QSE_T("set"), 3, qse_lsp_prim_set, 2, 2); + ADD_PRIM (lsp, QSE_T("setq"), 4, qse_lsp_prim_setq, 1, MAX_ARGS); + ADD_PRIM (lsp, QSE_T("quote"), 5, qse_lsp_prim_quote, 1, 1); + ADD_PRIM (lsp, QSE_T("defun"), 5, qse_lsp_prim_defun, 3, MAX_ARGS); + ADD_PRIM (lsp, QSE_T("demac"), 5, qse_lsp_prim_demac, 3, MAX_ARGS); + ADD_PRIM (lsp, QSE_T("let"), 3, qse_lsp_prim_let, 1, MAX_ARGS); + ADD_PRIM (lsp, QSE_T("let*"), 4, qse_lsp_prim_letx, 1, MAX_ARGS); + /*ADD_PRIM (lsp, QSE_T("or"), 2, qse_lsp_prim_or, 2, MAX_ARGS);*/ - ADD_PRIM (lsp, ASE_T("="), 1, ase_lsp_prim_eq, 2, 2); - ADD_PRIM (lsp, ASE_T("/="), 2, ase_lsp_prim_ne, 2, 2); - ADD_PRIM (lsp, ASE_T(">"), 1, ase_lsp_prim_gt, 2, 2); - ADD_PRIM (lsp, ASE_T("<"), 1, ase_lsp_prim_lt, 2, 2); - ADD_PRIM (lsp, ASE_T(">="), 2, ase_lsp_prim_ge, 2, 2); - ADD_PRIM (lsp, ASE_T("<="), 2, ase_lsp_prim_le, 2, 2); + ADD_PRIM (lsp, QSE_T("="), 1, qse_lsp_prim_eq, 2, 2); + ADD_PRIM (lsp, QSE_T("/="), 2, qse_lsp_prim_ne, 2, 2); + ADD_PRIM (lsp, QSE_T(">"), 1, qse_lsp_prim_gt, 2, 2); + ADD_PRIM (lsp, QSE_T("<"), 1, qse_lsp_prim_lt, 2, 2); + ADD_PRIM (lsp, QSE_T(">="), 2, qse_lsp_prim_ge, 2, 2); + ADD_PRIM (lsp, QSE_T("<="), 2, qse_lsp_prim_le, 2, 2); - ADD_PRIM (lsp, ASE_T("+"), 1, ase_lsp_prim_plus, 1, MAX_ARGS); - ADD_PRIM (lsp, ASE_T("-"), 1, ase_lsp_prim_minus, 1, MAX_ARGS); - ADD_PRIM (lsp, ASE_T("*"), 1, ase_lsp_prim_mul, 1, MAX_ARGS); - ADD_PRIM (lsp, ASE_T("/"), 1, ase_lsp_prim_div, 1, MAX_ARGS); - ADD_PRIM (lsp, ASE_T("%"), 1, ase_lsp_prim_mod , 1, MAX_ARGS); + ADD_PRIM (lsp, QSE_T("+"), 1, qse_lsp_prim_plus, 1, MAX_ARGS); + ADD_PRIM (lsp, QSE_T("-"), 1, qse_lsp_prim_minus, 1, MAX_ARGS); + ADD_PRIM (lsp, QSE_T("*"), 1, qse_lsp_prim_mul, 1, MAX_ARGS); + ADD_PRIM (lsp, QSE_T("/"), 1, qse_lsp_prim_div, 1, MAX_ARGS); + ADD_PRIM (lsp, QSE_T("%"), 1, qse_lsp_prim_mod , 1, MAX_ARGS); return 0; } diff --git a/qse/lib/lsp/lsp.h b/qse/lib/lsp/lsp.h index 6d456fd9..616198c6 100644 --- a/qse/lib/lsp/lsp.h +++ b/qse/lib/lsp/lsp.h @@ -4,14 +4,14 @@ * {License} */ -#ifndef _ASE_LIB_LSP_LSP_H_ -#define _ASE_LIB_LSP_LSP_H_ +#ifndef _QSE_LIB_LSP_LSP_H_ +#define _QSE_LIB_LSP_LSP_H_ #include "../cmn/mem.h" #include "../cmn/chr.h" -#include +#include -#include +#include #include "env.h" #include "obj.h" #include "mem.h" @@ -23,59 +23,59 @@ #pragma warning (disable: 4996) #endif -#define ASE_LSP_ALLOC(lsp,size) ASE_MMGR_ALLOC(&(lsp)->prmfns.mmgr,size) -#define ASE_LSP_REALLOC(lsp,ptr,size) ASE_MMGR_REALLOC(&(lsp)->prmfns.mmgr,ptr,size) -#define ASE_LSP_FREE(lsp,ptr) ASE_MMGR_FREE(&(lsp)->prmfns.mmgr,ptr) +#define QSE_LSP_ALLOC(lsp,size) QSE_MMGR_ALLOC(&(lsp)->prmfns.mmgr,size) +#define QSE_LSP_REALLOC(lsp,ptr,size) QSE_MMGR_REALLOC(&(lsp)->prmfns.mmgr,ptr,size) +#define QSE_LSP_FREE(lsp,ptr) QSE_MMGR_FREE(&(lsp)->prmfns.mmgr,ptr) -#define ASE_LSP_ISUPPER(lsp,c) ASE_CCLS_ISUPPER(&(lsp)->prmfns.ccls,c) -#define ASE_LSP_ISLOWER(lsp,c) ASE_CCLS_ISLOWER(&(lsp)->prmfns.ccls,c) -#define ASE_LSP_ISALPHA(lsp,c) ASE_CCLS_ISALPHA(&(lsp)->prmfns.ccls,c) -#define ASE_LSP_ISDIGIT(lsp,c) ASE_CCLS_ISDIGIT(&(lsp)->prmfns.ccls,c) -#define ASE_LSP_ISXDIGIT(lsp,c) ASE_CCLS_ISXDIGIT(&(lsp)->prmfns.ccls,c) -#define ASE_LSP_ISALNUM(lsp,c) ASE_CCLS_ISALNUM(&(lsp)->prmfns.ccls,c) -#define ASE_LSP_ISSPACE(lsp,c) ASE_CCLS_ISSPACE(&(lsp)->prmfns.ccls,c) -#define ASE_LSP_ISPRINT(lsp,c) ASE_CCLS_ISPRINT(&(lsp)->prmfns.ccls,c) -#define ASE_LSP_ISGRAPH(lsp,c) ASE_CCLS_ISGRAPH(&(lsp)->prmfns.ccls,c) -#define ASE_LSP_ISCNTRL(lsp,c) ASE_CCLS_ISCNTRL(&(lsp)->prmfns.ccls,c) -#define ASE_LSP_ISPUNCT(lsp,c) ASE_CCLS_ISPUNCT(&(lsp)->prmfns.ccls,c) -#define ASE_LSP_TOUPPER(lsp,c) ASE_CCLS_TOUPPER(&(lsp)->prmfns.ccls,c) -#define ASE_LSP_TOLOWER(lsp,c) ASE_CCLS_TOLOWER(&(lsp)->prmfns.ccls,c) +#define QSE_LSP_ISUPPER(lsp,c) QSE_CCLS_ISUPPER(&(lsp)->prmfns.ccls,c) +#define QSE_LSP_ISLOWER(lsp,c) QSE_CCLS_ISLOWER(&(lsp)->prmfns.ccls,c) +#define QSE_LSP_ISALPHA(lsp,c) QSE_CCLS_ISALPHA(&(lsp)->prmfns.ccls,c) +#define QSE_LSP_ISDIGIT(lsp,c) QSE_CCLS_ISDIGIT(&(lsp)->prmfns.ccls,c) +#define QSE_LSP_ISXDIGIT(lsp,c) QSE_CCLS_ISXDIGIT(&(lsp)->prmfns.ccls,c) +#define QSE_LSP_ISALNUM(lsp,c) QSE_CCLS_ISALNUM(&(lsp)->prmfns.ccls,c) +#define QSE_LSP_ISSPACE(lsp,c) QSE_CCLS_ISSPACE(&(lsp)->prmfns.ccls,c) +#define QSE_LSP_ISPRINT(lsp,c) QSE_CCLS_ISPRINT(&(lsp)->prmfns.ccls,c) +#define QSE_LSP_ISGRAPH(lsp,c) QSE_CCLS_ISGRAPH(&(lsp)->prmfns.ccls,c) +#define QSE_LSP_ISCNTRL(lsp,c) QSE_CCLS_ISCNTRL(&(lsp)->prmfns.ccls,c) +#define QSE_LSP_ISPUNCT(lsp,c) QSE_CCLS_ISPUNCT(&(lsp)->prmfns.ccls,c) +#define QSE_LSP_TOUPPER(lsp,c) QSE_CCLS_TOUPPER(&(lsp)->prmfns.ccls,c) +#define QSE_LSP_TOLOWER(lsp,c) QSE_CCLS_TOLOWER(&(lsp)->prmfns.ccls,c) -struct ase_lsp_t +struct qse_lsp_t { - ase_lsp_prmfns_t prmfns; + qse_lsp_prmfns_t prmfns; /* user-specified data */ void* assoc_data; /* error */ int errnum; - ase_char_t errmsg[256]; + qse_char_t errmsg[256]; /* options */ int opt_undef_symbol; /* for read */ - ase_cint_t curc; + qse_cint_t curc; struct { int type; - ase_long_t ival; - ase_real_t rval; - ase_lsp_name_t name; + qse_long_t ival; + qse_real_t rval; + qse_lsp_name_t name; } token; /* io functions */ - ase_lsp_io_t input_func; - ase_lsp_io_t output_func; + qse_lsp_io_t input_func; + qse_lsp_io_t output_func; void* input_arg; void* output_arg; /* security options */ - ase_size_t max_eval_depth; - ase_size_t cur_eval_depth; + qse_size_t max_eval_depth; + qse_size_t cur_eval_depth; /* memory manager */ - ase_lsp_mem_t* mem; + qse_lsp_mem_t* mem; }; #endif diff --git a/qse/lib/lsp/makefile.in b/qse/lib/lsp/makefile.in index 4ed61f0b..3b3eba3b 100644 --- a/qse/lib/lsp/makefile.in +++ b/qse/lib/lsp/makefile.in @@ -39,7 +39,7 @@ am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/include/ase/config.h +CONFIG_HEADER = $(top_builddir)/include/qse/config.h CONFIG_CLEAN_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ diff --git a/qse/lib/lsp/makefile.msw.bcc b/qse/lib/lsp/makefile.msw.bcc deleted file mode 100644 index d3a13f88..00000000 --- a/qse/lib/lsp/makefile.msw.bcc +++ /dev/null @@ -1,21 +0,0 @@ -SRCS = lsp.c name.c mem.c env.c err.c read.c eval.c print.c misc.c \ - prim.c prim_prog.c prim_let.c prim_compar.c prim_math.c -OBJS = $(SRCS:.c=.obj) -OUT = aselsp.lib - -CC = bcc32 -CFLAGS = -O2 -WM -w -w-inl -w-sig -w-spa -w-hid -RT- -I../.. - -all: $(OBJS) - tlib $(OUT) @&&! -+-$(**: = &^ -+-) -! - -clean: - -del $(OBJS) $(OUT) *.obj - -.SUFFIXES: .c .obj -.c.obj: - $(CC) $(CFLAGS) -c $< - diff --git a/qse/lib/lsp/makefile.msw.cl b/qse/lib/lsp/makefile.msw.cl deleted file mode 100644 index e7e9c797..00000000 --- a/qse/lib/lsp/makefile.msw.cl +++ /dev/null @@ -1,24 +0,0 @@ -OUT = aselsp - -SRCS = lsp.c name.c mem.c env.c err.c read.c eval.c print.c misc.c \ - prim.c prim_prog.c prim_let.c prim_compar.c prim_math.c -OBJS = $(SRCS:.c=.obj) - -CC = cl -LD = link -CFLAGS = /nologo /O2 /MT /W3 /GR- /Za -I../.. - -all: lib - -lib: $(OBJS) - $(LD) -lib @<< -/nologo /out:$(OUT).lib $(OBJS) -<< - -clean: - del $(OBJS) $(OUT) *.obj - -.SUFFIXES: .c .obj -.c.obj: - $(CC) $(CFLAGS) /c $< - diff --git a/qse/lib/lsp/mem.c b/qse/lib/lsp/mem.c index 4e8cd210..50933f38 100644 --- a/qse/lib/lsp/mem.c +++ b/qse/lib/lsp/mem.c @@ -6,274 +6,274 @@ #include "lsp.h" -ase_lsp_mem_t* ase_lsp_openmem ( - ase_lsp_t* lsp, ase_size_t ubound, ase_size_t ubound_inc) +qse_lsp_mem_t* qse_lsp_openmem ( + qse_lsp_t* lsp, qse_size_t ubound, qse_size_t ubound_inc) { - ase_lsp_mem_t* mem; - ase_size_t i; + qse_lsp_mem_t* mem; + qse_size_t i; /* allocate memory */ - mem = (ase_lsp_mem_t*) ASE_LSP_ALLOC (lsp, ASE_SIZEOF(ase_lsp_mem_t)); - if (mem == ASE_NULL) return ASE_NULL; + mem = (qse_lsp_mem_t*) QSE_LSP_ALLOC (lsp, QSE_SIZEOF(qse_lsp_mem_t)); + if (mem == QSE_NULL) return QSE_NULL; - ASE_MEMSET (mem, 0, ASE_SIZEOF(ase_lsp_mem_t)); + QSE_MEMSET (mem, 0, QSE_SIZEOF(qse_lsp_mem_t)); mem->lsp = lsp; /* create a new root environment frame */ - mem->frame = ase_lsp_newframe (lsp); - if (mem->frame == ASE_NULL) + mem->frame = qse_lsp_newframe (lsp); + if (mem->frame == QSE_NULL) { - ASE_LSP_FREE (lsp, mem); - return ASE_NULL; + QSE_LSP_FREE (lsp, mem); + return QSE_NULL; } mem->root_frame = mem->frame; - mem->brooding_frame = ASE_NULL; - mem->tlink = ASE_NULL; + mem->brooding_frame = QSE_NULL; + mem->tlink = QSE_NULL; mem->tlink_count = 0; /* initialize object allocation list */ mem->ubound = ubound; mem->ubound_inc = ubound_inc; mem->count = 0; - for (i = 0; i < ASE_LSP_TYPE_COUNT; i++) + for (i = 0; i < QSE_LSP_TYPE_COUNT; i++) { - mem->used[i] = ASE_NULL; - mem->free[i] = ASE_NULL; + mem->used[i] = QSE_NULL; + mem->free[i] = QSE_NULL; } - mem->read = ASE_NULL; + mem->read = QSE_NULL; /* when "ubound" is too small, the garbage collection can * be performed while making the common objects. */ - mem->nil = ASE_NULL; - mem->t = ASE_NULL; - mem->quote = ASE_NULL; - mem->lambda = ASE_NULL; - mem->macro = ASE_NULL; + mem->nil = QSE_NULL; + mem->t = QSE_NULL; + mem->quote = QSE_NULL; + mem->lambda = QSE_NULL; + mem->macro = QSE_NULL; /* initialize common object pointers */ - mem->nil = ase_lsp_makenil (mem); - mem->t = ase_lsp_maketrue (mem); - mem->quote = ase_lsp_makesym (mem, ASE_T("quote"), 5); - mem->lambda = ase_lsp_makesym (mem, ASE_T("lambda"), 6); - mem->macro = ase_lsp_makesym (mem, ASE_T("macro"), 5); + mem->nil = qse_lsp_makenil (mem); + mem->t = qse_lsp_maketrue (mem); + mem->quote = qse_lsp_makesym (mem, QSE_T("quote"), 5); + mem->lambda = qse_lsp_makesym (mem, QSE_T("lambda"), 6); + mem->macro = qse_lsp_makesym (mem, QSE_T("macro"), 5); - if (mem->nil == ASE_NULL || - mem->t == ASE_NULL || - mem->quote == ASE_NULL || - mem->lambda == ASE_NULL || - mem->macro == ASE_NULL) + if (mem->nil == QSE_NULL || + mem->t == QSE_NULL || + mem->quote == QSE_NULL || + mem->lambda == QSE_NULL || + mem->macro == QSE_NULL) { - ase_lsp_dispose_all (mem); - ase_lsp_freeframe (lsp, mem->frame); - ASE_LSP_FREE (lsp, mem); - return ASE_NULL; + qse_lsp_dispose_all (mem); + qse_lsp_freeframe (lsp, mem->frame); + QSE_LSP_FREE (lsp, mem); + return QSE_NULL; } - ASE_LSP_PERM(mem->nil) = 1; - ASE_LSP_PERM(mem->t) = 1; - ASE_LSP_PERM(mem->quote) = 1; - ASE_LSP_PERM(mem->lambda) = 1; - ASE_LSP_PERM(mem->macro) = 1; + QSE_LSP_PERM(mem->nil) = 1; + QSE_LSP_PERM(mem->t) = 1; + QSE_LSP_PERM(mem->quote) = 1; + QSE_LSP_PERM(mem->lambda) = 1; + QSE_LSP_PERM(mem->macro) = 1; return mem; } -void ase_lsp_closemem (ase_lsp_mem_t* mem) +void qse_lsp_closemem (qse_lsp_mem_t* mem) { /* dispose of the allocated objects */ - ase_lsp_dispose_all (mem); + qse_lsp_dispose_all (mem); /* dispose of environment frames */ - ase_lsp_freeframe (mem->lsp, mem->frame); + qse_lsp_freeframe (mem->lsp, mem->frame); /* free the memory */ - ASE_LSP_FREE (mem->lsp, mem); + QSE_LSP_FREE (mem->lsp, mem); } -ase_lsp_obj_t* ase_lsp_alloc (ase_lsp_mem_t* mem, int type, ase_size_t size) +qse_lsp_obj_t* qse_lsp_alloc (qse_lsp_mem_t* mem, int type, qse_size_t size) { - ase_lsp_obj_t* obj; + qse_lsp_obj_t* obj; /* TODO: remove the following line... */ -ase_lsp_gc (mem); +qse_lsp_gc (mem); - if (mem->count >= mem->ubound) ase_lsp_gc (mem); + if (mem->count >= mem->ubound) qse_lsp_gc (mem); if (mem->count >= mem->ubound) { mem->ubound += mem->ubound_inc; - if (mem->count >= mem->ubound) return ASE_NULL; + if (mem->count >= mem->ubound) return QSE_NULL; } - obj = (ase_lsp_obj_t*) ASE_LSP_ALLOC (mem->lsp, size); - if (obj == ASE_NULL) + obj = (qse_lsp_obj_t*) QSE_LSP_ALLOC (mem->lsp, size); + if (obj == QSE_NULL) { - ase_lsp_gc (mem); + qse_lsp_gc (mem); - obj = (ase_lsp_obj_t*) ASE_LSP_ALLOC (mem->lsp, size); - if (obj == ASE_NULL) + obj = (qse_lsp_obj_t*) QSE_LSP_ALLOC (mem->lsp, size); + if (obj == QSE_NULL) { - ase_lsp_seterror (mem->lsp, ASE_LSP_ENOMEM, ASE_NULL, 0); - return ASE_NULL; + qse_lsp_seterror (mem->lsp, QSE_LSP_ENOMEM, QSE_NULL, 0); + return QSE_NULL; } } - ASE_LSP_TYPE(obj) = type; - ASE_LSP_SIZE(obj) = size; - ASE_LSP_MARK(obj) = 0; - ASE_LSP_PERM(obj) = 0; - ASE_LSP_LOCK(obj) = 0; + QSE_LSP_TYPE(obj) = type; + QSE_LSP_SIZE(obj) = size; + QSE_LSP_MARK(obj) = 0; + QSE_LSP_PERM(obj) = 0; + QSE_LSP_LOCK(obj) = 0; /* insert the object at the head of the used list */ - ASE_LSP_LINK(obj) = mem->used[type]; + QSE_LSP_LINK(obj) = mem->used[type]; mem->used[type] = obj; mem->count++; #if 0 - ase_dprint1 (ASE_T("mem->count: %u\n"), mem->count); + qse_dprint1 (QSE_T("mem->count: %u\n"), mem->count); #endif return obj; } -void ase_lsp_dispose ( - ase_lsp_mem_t* mem, ase_lsp_obj_t* prev, ase_lsp_obj_t* obj) +void qse_lsp_dispose ( + qse_lsp_mem_t* mem, qse_lsp_obj_t* prev, qse_lsp_obj_t* obj) { - ASE_ASSERT (obj != ASE_NULL); - ASE_ASSERT (mem->count > 0); + QSE_ASSERT (obj != QSE_NULL); + QSE_ASSERT (mem->count > 0); /* TODO: push the object to the free list for more * efficient memory management */ - if (prev == ASE_NULL) - mem->used[ASE_LSP_TYPE(obj)] = ASE_LSP_LINK(obj); - else ASE_LSP_LINK(prev) = ASE_LSP_LINK(obj); + if (prev == QSE_NULL) + mem->used[QSE_LSP_TYPE(obj)] = QSE_LSP_LINK(obj); + else QSE_LSP_LINK(prev) = QSE_LSP_LINK(obj); mem->count--; #if 0 - ase_dprint1 (ASE_T("mem->count: %u\n"), mem->count); + qse_dprint1 (QSE_T("mem->count: %u\n"), mem->count); #endif - ASE_LSP_FREE (mem->lsp, obj); + QSE_LSP_FREE (mem->lsp, obj); } -void ase_lsp_dispose_all (ase_lsp_mem_t* mem) +void qse_lsp_dispose_all (qse_lsp_mem_t* mem) { - ase_lsp_obj_t* obj, * next; - ase_size_t i; + qse_lsp_obj_t* obj, * next; + qse_size_t i; - for (i = 0; i < ASE_LSP_TYPE_COUNT; i++) + for (i = 0; i < QSE_LSP_TYPE_COUNT; i++) { obj = mem->used[i]; - while (obj != ASE_NULL) + while (obj != QSE_NULL) { - next = ASE_LSP_LINK(obj); - ase_lsp_dispose (mem, ASE_NULL, obj); + next = QSE_LSP_LINK(obj); + qse_lsp_dispose (mem, QSE_NULL, obj); obj = next; } } } -static void __mark_obj (ase_lsp_t* lsp, ase_lsp_obj_t* obj) +static void __mark_obj (qse_lsp_t* lsp, qse_lsp_obj_t* obj) { - ASE_ASSERT (obj != ASE_NULL); + QSE_ASSERT (obj != QSE_NULL); /* TODO: can it be recursive? */ - if (ASE_LSP_MARK(obj) != 0) return; + if (QSE_LSP_MARK(obj) != 0) return; - ASE_LSP_MARK(obj) = 1; + QSE_LSP_MARK(obj) = 1; - if (ASE_LSP_TYPE(obj) == ASE_LSP_OBJ_CONS) + if (QSE_LSP_TYPE(obj) == QSE_LSP_OBJ_CONS) { - __mark_obj (lsp, ASE_LSP_CAR(obj)); - __mark_obj (lsp, ASE_LSP_CDR(obj)); + __mark_obj (lsp, QSE_LSP_CAR(obj)); + __mark_obj (lsp, QSE_LSP_CDR(obj)); } - else if (ASE_LSP_TYPE(obj) == ASE_LSP_OBJ_FUNC) + else if (QSE_LSP_TYPE(obj) == QSE_LSP_OBJ_FUNC) { - __mark_obj (lsp, ASE_LSP_FFORMAL(obj)); - __mark_obj (lsp, ASE_LSP_FBODY(obj)); + __mark_obj (lsp, QSE_LSP_FFORMAL(obj)); + __mark_obj (lsp, QSE_LSP_FBODY(obj)); } - else if (ASE_LSP_TYPE(obj) == ASE_LSP_OBJ_MACRO) + else if (QSE_LSP_TYPE(obj) == QSE_LSP_OBJ_MACRO) { - __mark_obj (lsp, ASE_LSP_MFORMAL(obj)); - __mark_obj (lsp, ASE_LSP_MBODY(obj)); + __mark_obj (lsp, QSE_LSP_MFORMAL(obj)); + __mark_obj (lsp, QSE_LSP_MBODY(obj)); } } /* - * ase_lsp_lockobj and ase_lsp_deepunlockobj are just called by ase_lsp_read. + * qse_lsp_lockobj and qse_lsp_deepunlockobj are just called by qse_lsp_read. */ -void ase_lsp_lockobj (ase_lsp_t* lsp, ase_lsp_obj_t* obj) +void qse_lsp_lockobj (qse_lsp_t* lsp, qse_lsp_obj_t* obj) { - ASE_ASSERTX (obj != ASE_NULL, - "an object pointer should not be ASE_NULL"); - if (ASE_LSP_PERM(obj) == 0) ASE_LSP_LOCK(obj)++; + QSE_ASSERTX (obj != QSE_NULL, + "an object pointer should not be QSE_NULL"); + if (QSE_LSP_PERM(obj) == 0) QSE_LSP_LOCK(obj)++; } -void ase_lsp_unlockobj (ase_lsp_t* lsp, ase_lsp_obj_t* obj) +void qse_lsp_unlockobj (qse_lsp_t* lsp, qse_lsp_obj_t* obj) { - ASE_ASSERTX (obj != ASE_NULL, - "an object pointer should not be ASE_NULL"); + QSE_ASSERTX (obj != QSE_NULL, + "an object pointer should not be QSE_NULL"); - if (ASE_LSP_PERM(obj) != 0) return; - ASE_ASSERTX (ASE_LSP_LOCK(obj) > 0, + if (QSE_LSP_PERM(obj) != 0) return; + QSE_ASSERTX (QSE_LSP_LOCK(obj) > 0, "the lock count should be greater than zero to be unlocked"); - ASE_LSP_LOCK(obj)--; + QSE_LSP_LOCK(obj)--; } -void ase_lsp_deepunlockobj (ase_lsp_t* lsp, ase_lsp_obj_t* obj) +void qse_lsp_deepunlockobj (qse_lsp_t* lsp, qse_lsp_obj_t* obj) { - ASE_ASSERTX (obj != ASE_NULL, - "an object pointer should not be ASE_NULL"); + QSE_ASSERTX (obj != QSE_NULL, + "an object pointer should not be QSE_NULL"); - if (ASE_LSP_PERM(obj) == 0) + if (QSE_LSP_PERM(obj) == 0) { - ASE_ASSERTX (ASE_LSP_LOCK(obj) > 0, + QSE_ASSERTX (QSE_LSP_LOCK(obj) > 0, "the lock count should be greater than zero to be unlocked"); - ASE_LSP_LOCK(obj)--; + QSE_LSP_LOCK(obj)--; } - if (ASE_LSP_TYPE(obj) == ASE_LSP_OBJ_CONS) + if (QSE_LSP_TYPE(obj) == QSE_LSP_OBJ_CONS) { - ase_lsp_deepunlockobj (lsp, ASE_LSP_CAR(obj)); - ase_lsp_deepunlockobj (lsp, ASE_LSP_CDR(obj)); + qse_lsp_deepunlockobj (lsp, QSE_LSP_CAR(obj)); + qse_lsp_deepunlockobj (lsp, QSE_LSP_CDR(obj)); } - else if (ASE_LSP_TYPE(obj) == ASE_LSP_OBJ_FUNC) + else if (QSE_LSP_TYPE(obj) == QSE_LSP_OBJ_FUNC) { - ase_lsp_deepunlockobj (lsp, ASE_LSP_FFORMAL(obj)); - ase_lsp_deepunlockobj (lsp, ASE_LSP_FBODY(obj)); + qse_lsp_deepunlockobj (lsp, QSE_LSP_FFORMAL(obj)); + qse_lsp_deepunlockobj (lsp, QSE_LSP_FBODY(obj)); } - else if (ASE_LSP_TYPE(obj) == ASE_LSP_OBJ_MACRO) + else if (QSE_LSP_TYPE(obj) == QSE_LSP_OBJ_MACRO) { - ase_lsp_deepunlockobj (lsp, ASE_LSP_MFORMAL(obj)); - ase_lsp_deepunlockobj (lsp, ASE_LSP_MBODY(obj)); + qse_lsp_deepunlockobj (lsp, QSE_LSP_MFORMAL(obj)); + qse_lsp_deepunlockobj (lsp, QSE_LSP_MBODY(obj)); } } -static void __mark_objs_in_use (ase_lsp_mem_t* mem) +static void __mark_objs_in_use (qse_lsp_mem_t* mem) { - ase_lsp_frame_t* frame; - ase_lsp_assoc_t* assoc; - ase_lsp_tlink_t* tlink; - /*ase_lsp_arr_t* arr;*/ - /*ase_size_t i;*/ + qse_lsp_frame_t* frame; + qse_lsp_assoc_t* assoc; + qse_lsp_tlink_t* tlink; + /*qse_lsp_arr_t* arr;*/ + /*qse_size_t i;*/ #if 0 - ase_dprint0 (ASE_T("marking environment frames\n")); + qse_dprint0 (QSE_T("marking environment frames\n")); #endif /* mark objects in the environment frames */ frame = mem->frame; - while (frame != ASE_NULL) + while (frame != QSE_NULL) { assoc = frame->assoc; - while (assoc != ASE_NULL) + while (assoc != QSE_NULL) { __mark_obj (mem->lsp, assoc->name); - if (assoc->value != ASE_NULL) + if (assoc->value != QSE_NULL) __mark_obj (mem->lsp, assoc->value); - if (assoc->func != ASE_NULL) + if (assoc->func != QSE_NULL) __mark_obj (mem->lsp, assoc->func); assoc = assoc->link; @@ -283,21 +283,21 @@ static void __mark_objs_in_use (ase_lsp_mem_t* mem) } #if 0 - ase_dprint0 (ASE_T("marking interim frames\n")); + qse_dprint0 (QSE_T("marking interim frames\n")); #endif /* mark objects in the interim frames */ frame = mem->brooding_frame; - while (frame != ASE_NULL) + while (frame != QSE_NULL) { assoc = frame->assoc; - while (assoc != ASE_NULL) + while (assoc != QSE_NULL) { __mark_obj (mem->lsp, assoc->name); - if (assoc->value != ASE_NULL) + if (assoc->value != QSE_NULL) __mark_obj (mem->lsp, assoc->value); - if (assoc->func != ASE_NULL) + if (assoc->func != QSE_NULL) __mark_obj (mem->lsp, assoc->func); assoc = assoc->link; @@ -306,68 +306,68 @@ static void __mark_objs_in_use (ase_lsp_mem_t* mem) frame = frame->link; } - /* ase_dprint0 (ASE_T("marking the read object\n"));*/ - if (mem->read != ASE_NULL) __mark_obj (mem->lsp, mem->read); + /* qse_dprint0 (QSE_T("marking the read object\n"));*/ + if (mem->read != QSE_NULL) __mark_obj (mem->lsp, mem->read); - /* ase_dprint0 (ASE_T("marking the temporary objects\n"));*/ - for (tlink = mem->tlink; tlink != ASE_NULL; tlink = tlink->link) + /* qse_dprint0 (QSE_T("marking the temporary objects\n"));*/ + for (tlink = mem->tlink; tlink != QSE_NULL; tlink = tlink->link) { __mark_obj (mem->lsp, tlink->obj); } #if 0 - ase_dprint0 (ASE_T("marking builtin objects\n")); + qse_dprint0 (QSE_T("marking builtin objects\n")); #endif /* mark common objects */ - if (mem->t != ASE_NULL) __mark_obj (mem->lsp, mem->t); - if (mem->nil != ASE_NULL) __mark_obj (mem->lsp, mem->nil); - if (mem->quote != ASE_NULL) __mark_obj (mem->lsp, mem->quote); - if (mem->lambda != ASE_NULL) __mark_obj (mem->lsp, mem->lambda); - if (mem->macro != ASE_NULL) __mark_obj (mem->lsp, mem->macro); + if (mem->t != QSE_NULL) __mark_obj (mem->lsp, mem->t); + if (mem->nil != QSE_NULL) __mark_obj (mem->lsp, mem->nil); + if (mem->quote != QSE_NULL) __mark_obj (mem->lsp, mem->quote); + if (mem->lambda != QSE_NULL) __mark_obj (mem->lsp, mem->lambda); + if (mem->macro != QSE_NULL) __mark_obj (mem->lsp, mem->macro); } -//#include -static void __sweep_unmarked_objs (ase_lsp_mem_t* mem) +//#include +static void __sweep_unmarked_objs (qse_lsp_mem_t* mem) { - ase_lsp_obj_t* obj, * prev, * next; - ase_size_t i; + qse_lsp_obj_t* obj, * prev, * next; + qse_size_t i; /* scan all the allocated objects and get rid of unused objects */ - for (i = 0; i < ASE_LSP_TYPE_COUNT; i++) + for (i = 0; i < QSE_LSP_TYPE_COUNT; i++) { - prev = ASE_NULL; + prev = QSE_NULL; obj = mem->used[i]; #if 0 - ase_dprint1 (ASE_T("sweeping objects of type: %u\n"), i); + qse_dprint1 (QSE_T("sweeping objects of type: %u\n"), i); #endif - while (obj != ASE_NULL) + while (obj != QSE_NULL) { - next = ASE_LSP_LINK(obj); + next = QSE_LSP_LINK(obj); - if (ASE_LSP_LOCK(obj) == 0 && - ASE_LSP_MARK(obj) == 0 && - ASE_LSP_PERM(obj) == 0) + if (QSE_LSP_LOCK(obj) == 0 && + QSE_LSP_MARK(obj) == 0 && + QSE_LSP_PERM(obj) == 0) { /* dispose of unused objects */ /* -if (i == ASE_LSP_OBJ_INT) -ase_printf (ASE_T("disposing....%d [%d]\n"), i, (int)ASE_LSP_IVAL(obj)); -if (i == ASE_LSP_OBJ_REAL) -ase_printf (ASE_T("disposing....%d [%Lf]\n"), i, (double)ASE_LSP_RVAL(obj)); -else if (i == ASE_LSP_OBJ_SYM) -ase_printf (ASE_T("disposing....%d [%s]\n"), i, ASE_LSP_SYMPTR(obj)); -else if (i == ASE_LSP_OBJ_STR) -ase_printf (ASE_T("disposing....%d [%s]\n"), i, ASE_LSP_STRPTR(obj)); +if (i == QSE_LSP_OBJ_INT) +qse_printf (QSE_T("disposing....%d [%d]\n"), i, (int)QSE_LSP_IVAL(obj)); +if (i == QSE_LSP_OBJ_REAL) +qse_printf (QSE_T("disposing....%d [%Lf]\n"), i, (double)QSE_LSP_RVAL(obj)); +else if (i == QSE_LSP_OBJ_SYM) +qse_printf (QSE_T("disposing....%d [%s]\n"), i, QSE_LSP_SYMPTR(obj)); +else if (i == QSE_LSP_OBJ_STR) +qse_printf (QSE_T("disposing....%d [%s]\n"), i, QSE_LSP_STRPTR(obj)); else -ase_printf (ASE_T("disposing....%d\n"), i); +qse_printf (QSE_T("disposing....%d\n"), i); */ - ase_lsp_dispose (mem, prev, obj); + qse_lsp_dispose (mem, prev, obj); } else { /* unmark the object in use */ - ASE_LSP_MARK(obj) = 0; + QSE_LSP_MARK(obj) = 0; prev = obj; } @@ -376,224 +376,224 @@ ase_printf (ASE_T("disposing....%d\n"), i); } } -void ase_lsp_gc (ase_lsp_mem_t* mem) +void qse_lsp_gc (qse_lsp_mem_t* mem) { __mark_objs_in_use (mem); __sweep_unmarked_objs (mem); } -ase_lsp_obj_t* ase_lsp_makenil (ase_lsp_mem_t* mem) +qse_lsp_obj_t* qse_lsp_makenil (qse_lsp_mem_t* mem) { - if (mem->nil != ASE_NULL) return mem->nil; - mem->nil = ase_lsp_alloc ( - mem, ASE_LSP_OBJ_NIL, ASE_SIZEOF(ase_lsp_obj_nil_t)); + if (mem->nil != QSE_NULL) return mem->nil; + mem->nil = qse_lsp_alloc ( + mem, QSE_LSP_OBJ_NIL, QSE_SIZEOF(qse_lsp_obj_nil_t)); return mem->nil; } -ase_lsp_obj_t* ase_lsp_maketrue (ase_lsp_mem_t* mem) +qse_lsp_obj_t* qse_lsp_maketrue (qse_lsp_mem_t* mem) { - if (mem->t != ASE_NULL) return mem->t; - mem->t = ase_lsp_alloc ( - mem, ASE_LSP_OBJ_TRUE, ASE_SIZEOF(ase_lsp_obj_true_t)); + if (mem->t != QSE_NULL) return mem->t; + mem->t = qse_lsp_alloc ( + mem, QSE_LSP_OBJ_TRUE, QSE_SIZEOF(qse_lsp_obj_true_t)); return mem->t; } -ase_lsp_obj_t* ase_lsp_makeintobj (ase_lsp_mem_t* mem, ase_long_t value) +qse_lsp_obj_t* qse_lsp_makeintobj (qse_lsp_mem_t* mem, qse_long_t value) { - ase_lsp_obj_t* obj; + qse_lsp_obj_t* obj; - obj = ase_lsp_alloc (mem, - ASE_LSP_OBJ_INT, ASE_SIZEOF(ase_lsp_obj_int_t)); - if (obj == ASE_NULL) return ASE_NULL; + obj = qse_lsp_alloc (mem, + QSE_LSP_OBJ_INT, QSE_SIZEOF(qse_lsp_obj_int_t)); + if (obj == QSE_NULL) return QSE_NULL; - ASE_LSP_IVAL(obj) = value; + QSE_LSP_IVAL(obj) = value; return obj; } -ase_lsp_obj_t* ase_lsp_makerealobj (ase_lsp_mem_t* mem, ase_real_t value) +qse_lsp_obj_t* qse_lsp_makerealobj (qse_lsp_mem_t* mem, qse_real_t value) { - ase_lsp_obj_t* obj; + qse_lsp_obj_t* obj; - obj = ase_lsp_alloc (mem, - ASE_LSP_OBJ_REAL, ASE_SIZEOF(ase_lsp_obj_real_t)); - if (obj == ASE_NULL) return ASE_NULL; + obj = qse_lsp_alloc (mem, + QSE_LSP_OBJ_REAL, QSE_SIZEOF(qse_lsp_obj_real_t)); + if (obj == QSE_NULL) return QSE_NULL; - ASE_LSP_RVAL(obj) = value; + QSE_LSP_RVAL(obj) = value; return obj; } -ase_lsp_obj_t* ase_lsp_makesym ( - ase_lsp_mem_t* mem, const ase_char_t* str, ase_size_t len) +qse_lsp_obj_t* qse_lsp_makesym ( + qse_lsp_mem_t* mem, const qse_char_t* str, qse_size_t len) { - ase_lsp_obj_t* obj; + qse_lsp_obj_t* obj; /* look for a sysmbol with the given name */ - obj = mem->used[ASE_LSP_OBJ_SYM]; - while (obj != ASE_NULL) + obj = mem->used[QSE_LSP_OBJ_SYM]; + while (obj != QSE_NULL) { /* if there is a symbol with the same name, it is just used. */ - if (ase_strxncmp ( - ASE_LSP_SYMPTR(obj), - ASE_LSP_SYMLEN(obj), + if (qse_strxncmp ( + QSE_LSP_SYMPTR(obj), + QSE_LSP_SYMLEN(obj), str, len) == 0) return obj; - obj = ASE_LSP_LINK(obj); + obj = QSE_LSP_LINK(obj); } /* no such symbol found. create a new one */ - obj = ase_lsp_alloc (mem, ASE_LSP_OBJ_SYM, - ASE_SIZEOF(ase_lsp_obj_sym_t)+(len + 1)*ASE_SIZEOF(ase_char_t)); - if (obj == ASE_NULL) return ASE_NULL; + obj = qse_lsp_alloc (mem, QSE_LSP_OBJ_SYM, + QSE_SIZEOF(qse_lsp_obj_sym_t)+(len + 1)*QSE_SIZEOF(qse_char_t)); + if (obj == QSE_NULL) return QSE_NULL; /* fill in the symbol buffer */ - ase_strncpy (ASE_LSP_SYMPTR(obj), str, len); + qse_strncpy (QSE_LSP_SYMPTR(obj), str, len); return obj; } -ase_lsp_obj_t* ase_lsp_makestr ( - ase_lsp_mem_t* mem, const ase_char_t* str, ase_size_t len) +qse_lsp_obj_t* qse_lsp_makestr ( + qse_lsp_mem_t* mem, const qse_char_t* str, qse_size_t len) { - ase_lsp_obj_t* obj; + qse_lsp_obj_t* obj; /* allocate memory for the string */ - obj = ase_lsp_alloc (mem, ASE_LSP_OBJ_STR, - ASE_SIZEOF(ase_lsp_obj_str_t)+(len + 1)*ASE_SIZEOF(ase_char_t)); - if (obj == ASE_NULL) return ASE_NULL; + obj = qse_lsp_alloc (mem, QSE_LSP_OBJ_STR, + QSE_SIZEOF(qse_lsp_obj_str_t)+(len + 1)*QSE_SIZEOF(qse_char_t)); + if (obj == QSE_NULL) return QSE_NULL; /* fill in the string buffer */ - ase_strncpy (ASE_LSP_STRPTR(obj), str, len); + qse_strncpy (QSE_LSP_STRPTR(obj), str, len); return obj; } -ase_lsp_obj_t* ase_lsp_makecons ( - ase_lsp_mem_t* mem, ase_lsp_obj_t* car, ase_lsp_obj_t* cdr) +qse_lsp_obj_t* qse_lsp_makecons ( + qse_lsp_mem_t* mem, qse_lsp_obj_t* car, qse_lsp_obj_t* cdr) { - ase_lsp_obj_t* obj; + qse_lsp_obj_t* obj; - obj = ase_lsp_alloc (mem, - ASE_LSP_OBJ_CONS, ASE_SIZEOF(ase_lsp_obj_cons_t)); - if (obj == ASE_NULL) return ASE_NULL; + obj = qse_lsp_alloc (mem, + QSE_LSP_OBJ_CONS, QSE_SIZEOF(qse_lsp_obj_cons_t)); + if (obj == QSE_NULL) return QSE_NULL; - ASE_LSP_CAR(obj) = car; - ASE_LSP_CDR(obj) = cdr; + QSE_LSP_CAR(obj) = car; + QSE_LSP_CDR(obj) = cdr; return obj; } -ase_lsp_obj_t* ase_lsp_makefunc ( - ase_lsp_mem_t* mem, ase_lsp_obj_t* formal, ase_lsp_obj_t* body) +qse_lsp_obj_t* qse_lsp_makefunc ( + qse_lsp_mem_t* mem, qse_lsp_obj_t* formal, qse_lsp_obj_t* body) { - ase_lsp_obj_t* obj; + qse_lsp_obj_t* obj; - obj = ase_lsp_alloc (mem, - ASE_LSP_OBJ_FUNC, ASE_SIZEOF(ase_lsp_obj_func_t)); - if (obj == ASE_NULL) return ASE_NULL; + obj = qse_lsp_alloc (mem, + QSE_LSP_OBJ_FUNC, QSE_SIZEOF(qse_lsp_obj_func_t)); + if (obj == QSE_NULL) return QSE_NULL; - ASE_LSP_FFORMAL(obj) = formal; - ASE_LSP_FBODY(obj) = body; + QSE_LSP_FFORMAL(obj) = formal; + QSE_LSP_FBODY(obj) = body; return obj; } -ase_lsp_obj_t* ase_lsp_makemacro ( - ase_lsp_mem_t* mem, ase_lsp_obj_t* formal, ase_lsp_obj_t* body) +qse_lsp_obj_t* qse_lsp_makemacro ( + qse_lsp_mem_t* mem, qse_lsp_obj_t* formal, qse_lsp_obj_t* body) { - ase_lsp_obj_t* obj; + qse_lsp_obj_t* obj; - obj = ase_lsp_alloc (mem, - ASE_LSP_OBJ_MACRO, ASE_SIZEOF(ase_lsp_obj_macro_t)); - if (obj == ASE_NULL) return ASE_NULL; + obj = qse_lsp_alloc (mem, + QSE_LSP_OBJ_MACRO, QSE_SIZEOF(qse_lsp_obj_macro_t)); + if (obj == QSE_NULL) return QSE_NULL; - ASE_LSP_MFORMAL(obj) = formal; - ASE_LSP_MBODY(obj) = body; + QSE_LSP_MFORMAL(obj) = formal; + QSE_LSP_MBODY(obj) = body; return obj; } -ase_lsp_obj_t* ase_lsp_makeprim (ase_lsp_mem_t* mem, - ase_lsp_prim_t impl, ase_size_t min_args, ase_size_t max_args) +qse_lsp_obj_t* qse_lsp_makeprim (qse_lsp_mem_t* mem, + qse_lsp_prim_t impl, qse_size_t min_args, qse_size_t max_args) { - ase_lsp_obj_t* obj; + qse_lsp_obj_t* obj; - obj = ase_lsp_alloc ( - mem, ASE_LSP_OBJ_PRIM, ASE_SIZEOF(ase_lsp_obj_prim_t)); - if (obj == ASE_NULL) return ASE_NULL; + obj = qse_lsp_alloc ( + mem, QSE_LSP_OBJ_PRIM, QSE_SIZEOF(qse_lsp_obj_prim_t)); + if (obj == QSE_NULL) return QSE_NULL; - ASE_LSP_PIMPL(obj) = impl; - ASE_LSP_PMINARGS(obj) = min_args; - ASE_LSP_PMAXARGS(obj) = max_args; + QSE_LSP_PIMPL(obj) = impl; + QSE_LSP_PMINARGS(obj) = min_args; + QSE_LSP_PMAXARGS(obj) = max_args; return obj; } -ase_lsp_assoc_t* ase_lsp_lookup (ase_lsp_mem_t* mem, ase_lsp_obj_t* name) +qse_lsp_assoc_t* qse_lsp_lookup (qse_lsp_mem_t* mem, qse_lsp_obj_t* name) { - ase_lsp_frame_t* frame; - ase_lsp_assoc_t* assoc; + qse_lsp_frame_t* frame; + qse_lsp_assoc_t* assoc; - ASE_ASSERT (ASE_LSP_TYPE(name) == ASE_LSP_OBJ_SYM); + QSE_ASSERT (QSE_LSP_TYPE(name) == QSE_LSP_OBJ_SYM); frame = mem->frame; - while (frame != ASE_NULL) + while (frame != QSE_NULL) { - assoc = ase_lsp_lookupinframe (mem->lsp, frame, name); - if (assoc != ASE_NULL) return assoc; + assoc = qse_lsp_lookupinframe (mem->lsp, frame, name); + if (assoc != QSE_NULL) return assoc; frame = frame->link; } - return ASE_NULL; + return QSE_NULL; } -ase_lsp_assoc_t* ase_lsp_setvalue ( - ase_lsp_mem_t* mem, ase_lsp_obj_t* name, ase_lsp_obj_t* value) +qse_lsp_assoc_t* qse_lsp_setvalue ( + qse_lsp_mem_t* mem, qse_lsp_obj_t* name, qse_lsp_obj_t* value) { - ase_lsp_assoc_t* assoc; + qse_lsp_assoc_t* assoc; - assoc = ase_lsp_lookup (mem, name); - if (assoc == ASE_NULL) + assoc = qse_lsp_lookup (mem, name); + if (assoc == QSE_NULL) { - assoc = ase_lsp_insvalueintoframe ( + assoc = qse_lsp_insvalueintoframe ( mem->lsp, mem->root_frame, name, value); - if (assoc == ASE_NULL) return ASE_NULL; + if (assoc == QSE_NULL) return QSE_NULL; } else assoc->value = value; return assoc; } -ase_lsp_assoc_t* ase_lsp_setfunc ( - ase_lsp_mem_t* mem, ase_lsp_obj_t* name, ase_lsp_obj_t* func) +qse_lsp_assoc_t* qse_lsp_setfunc ( + qse_lsp_mem_t* mem, qse_lsp_obj_t* name, qse_lsp_obj_t* func) { - ase_lsp_assoc_t* assoc; + qse_lsp_assoc_t* assoc; - assoc = ase_lsp_lookup (mem, name); - if (assoc == ASE_NULL) + assoc = qse_lsp_lookup (mem, name); + if (assoc == QSE_NULL) { - assoc = ase_lsp_insfuncintoframe ( + assoc = qse_lsp_insfuncintoframe ( mem->lsp, mem->root_frame, name, func); - if (assoc == ASE_NULL) return ASE_NULL; + if (assoc == QSE_NULL) return QSE_NULL; } else assoc->func = func; return assoc; } -ase_size_t ase_lsp_conslen (ase_lsp_mem_t* mem, ase_lsp_obj_t* obj) +qse_size_t qse_lsp_conslen (qse_lsp_mem_t* mem, qse_lsp_obj_t* obj) { - ase_size_t count; + qse_size_t count; - ASE_ASSERT ( - obj == mem->nil || ASE_LSP_TYPE(obj) == ASE_LSP_OBJ_CONS); + QSE_ASSERT ( + obj == mem->nil || QSE_LSP_TYPE(obj) == QSE_LSP_OBJ_CONS); count = 0; /*while (obj != mem->nil) {*/ - while (ASE_LSP_TYPE(obj) == ASE_LSP_OBJ_CONS) + while (QSE_LSP_TYPE(obj) == QSE_LSP_OBJ_CONS) { count++; - obj = ASE_LSP_CDR(obj); + obj = QSE_LSP_CDR(obj); } return count; diff --git a/qse/lib/lsp/mem.h b/qse/lib/lsp/mem.h index c78c7b4e..fe4ae687 100644 --- a/qse/lib/lsp/mem.h +++ b/qse/lib/lsp/mem.h @@ -4,93 +4,93 @@ * {License} */ -#ifndef _ASE_LSP_MEM_H_ -#define _ASE_LSP_MEM_H_ +#ifndef _QSE_LSP_MEM_H_ +#define _QSE_LSP_MEM_H_ -#ifndef _ASE_LSP_LSP_H_ -#error Never include this file directly. Include instead +#ifndef _QSE_LSP_LSP_H_ +#error Never include this file directly. Include instead #endif -typedef struct ase_lsp_mem_t ase_lsp_mem_t; +typedef struct qse_lsp_mem_t qse_lsp_mem_t; -struct ase_lsp_mem_t +struct qse_lsp_mem_t { - ase_lsp_t* lsp; + qse_lsp_t* lsp; /* object allocation list */ - ase_size_t ubound; /* upper bounds of the maximum number of objects */ - ase_size_t ubound_inc; /* increment of the upper bounds */ - ase_size_t count; /* the number of objects currently allocated */ - ase_lsp_obj_t* used[ASE_LSP_TYPE_COUNT]; - ase_lsp_obj_t* free[ASE_LSP_TYPE_COUNT]; - ase_lsp_obj_t* read; + qse_size_t ubound; /* upper bounds of the maximum number of objects */ + qse_size_t ubound_inc; /* increment of the upper bounds */ + qse_size_t count; /* the number of objects currently allocated */ + qse_lsp_obj_t* used[QSE_LSP_TYPE_COUNT]; + qse_lsp_obj_t* free[QSE_LSP_TYPE_COUNT]; + qse_lsp_obj_t* read; /* commonly accessed objects */ - ase_lsp_obj_t* nil; /* ase_lsp_obj_nil_t */ - ase_lsp_obj_t* t; /* ase_lsp_obj_true_t */ - ase_lsp_obj_t* quote; /* ase_lsp_obj_sym_t */ - ase_lsp_obj_t* lambda; /* ase_lsp_obj_sym_t */ - ase_lsp_obj_t* macro; /* ase_lsp_obj_sym_t */ + qse_lsp_obj_t* nil; /* qse_lsp_obj_nil_t */ + qse_lsp_obj_t* t; /* qse_lsp_obj_true_t */ + qse_lsp_obj_t* quote; /* qse_lsp_obj_sym_t */ + qse_lsp_obj_t* lambda; /* qse_lsp_obj_sym_t */ + qse_lsp_obj_t* macro; /* qse_lsp_obj_sym_t */ /* run-time environment frame */ - ase_lsp_frame_t* frame; + qse_lsp_frame_t* frame; /* pointer to a global-level frame */ - ase_lsp_frame_t* root_frame; + qse_lsp_frame_t* root_frame; /* pointer to an interim frame not yet added to "frame" */ - ase_lsp_frame_t* brooding_frame; + qse_lsp_frame_t* brooding_frame; /* links for temporary objects */ - ase_lsp_tlink_t* tlink; - ase_size_t tlink_count; + qse_lsp_tlink_t* tlink; + qse_size_t tlink_count; }; #ifdef __cplusplus extern "C" { #endif -ase_lsp_mem_t* ase_lsp_openmem ( - ase_lsp_t* lsp, ase_size_t ubound, ase_size_t ubound_inc); -void ase_lsp_closemem (ase_lsp_mem_t* mem); +qse_lsp_mem_t* qse_lsp_openmem ( + qse_lsp_t* lsp, qse_size_t ubound, qse_size_t ubound_inc); +void qse_lsp_closemem (qse_lsp_mem_t* mem); -ase_lsp_obj_t* ase_lsp_alloc (ase_lsp_mem_t* mem, int type, ase_size_t size); -void ase_lsp_dispose (ase_lsp_mem_t* mem, ase_lsp_obj_t* prev, ase_lsp_obj_t* obj); -void ase_lsp_dispose_all (ase_lsp_mem_t* mem); -void ase_lsp_gc (ase_lsp_mem_t* mem); +qse_lsp_obj_t* qse_lsp_alloc (qse_lsp_mem_t* mem, int type, qse_size_t size); +void qse_lsp_dispose (qse_lsp_mem_t* mem, qse_lsp_obj_t* prev, qse_lsp_obj_t* obj); +void qse_lsp_dispose_all (qse_lsp_mem_t* mem); +void qse_lsp_gc (qse_lsp_mem_t* mem); -void ase_lsp_lockobj (ase_lsp_t* lsp, ase_lsp_obj_t* obj); -void ase_lsp_unlockobj (ase_lsp_t* lsp, ase_lsp_obj_t* obj); -void ase_lsp_deepunlockobj (ase_lsp_t* lsp, ase_lsp_obj_t* obj); +void qse_lsp_lockobj (qse_lsp_t* lsp, qse_lsp_obj_t* obj); +void qse_lsp_unlockobj (qse_lsp_t* lsp, qse_lsp_obj_t* obj); +void qse_lsp_deepunlockobj (qse_lsp_t* lsp, qse_lsp_obj_t* obj); /* object creation of standard types */ -ase_lsp_obj_t* ase_lsp_makenil (ase_lsp_mem_t* mem); -ase_lsp_obj_t* ase_lsp_maketrue (ase_lsp_mem_t* mem); -ase_lsp_obj_t* ase_lsp_makeintobj (ase_lsp_mem_t* mem, ase_long_t value); -ase_lsp_obj_t* ase_lsp_makerealobj (ase_lsp_mem_t* mem, ase_real_t value); +qse_lsp_obj_t* qse_lsp_makenil (qse_lsp_mem_t* mem); +qse_lsp_obj_t* qse_lsp_maketrue (qse_lsp_mem_t* mem); +qse_lsp_obj_t* qse_lsp_makeintobj (qse_lsp_mem_t* mem, qse_long_t value); +qse_lsp_obj_t* qse_lsp_makerealobj (qse_lsp_mem_t* mem, qse_real_t value); -ase_lsp_obj_t* ase_lsp_makesym ( - ase_lsp_mem_t* mem, const ase_char_t* str, ase_size_t len); -ase_lsp_obj_t* ase_lsp_makestr ( - ase_lsp_mem_t* mem, const ase_char_t* str, ase_size_t len); +qse_lsp_obj_t* qse_lsp_makesym ( + qse_lsp_mem_t* mem, const qse_char_t* str, qse_size_t len); +qse_lsp_obj_t* qse_lsp_makestr ( + qse_lsp_mem_t* mem, const qse_char_t* str, qse_size_t len); -ase_lsp_obj_t* ase_lsp_makecons ( - ase_lsp_mem_t* mem, ase_lsp_obj_t* car, ase_lsp_obj_t* cdr); -ase_lsp_obj_t* ase_lsp_makefunc ( - ase_lsp_mem_t* mem, ase_lsp_obj_t* formal, ase_lsp_obj_t* body); -ase_lsp_obj_t* ase_lsp_makemacro ( - ase_lsp_mem_t* mem, ase_lsp_obj_t* formal, ase_lsp_obj_t* body); +qse_lsp_obj_t* qse_lsp_makecons ( + qse_lsp_mem_t* mem, qse_lsp_obj_t* car, qse_lsp_obj_t* cdr); +qse_lsp_obj_t* qse_lsp_makefunc ( + qse_lsp_mem_t* mem, qse_lsp_obj_t* formal, qse_lsp_obj_t* body); +qse_lsp_obj_t* qse_lsp_makemacro ( + qse_lsp_mem_t* mem, qse_lsp_obj_t* formal, qse_lsp_obj_t* body); -ase_lsp_obj_t* ase_lsp_makeprim (ase_lsp_mem_t* mem, - ase_lsp_prim_t impl, ase_size_t min_args, ase_size_t max_args); +qse_lsp_obj_t* qse_lsp_makeprim (qse_lsp_mem_t* mem, + qse_lsp_prim_t impl, qse_size_t min_args, qse_size_t max_args); /* frame lookup */ -ase_lsp_assoc_t* ase_lsp_lookup (ase_lsp_mem_t* mem, ase_lsp_obj_t* name); -ase_lsp_assoc_t* ase_lsp_setvalue ( - ase_lsp_mem_t* mem, ase_lsp_obj_t* name, ase_lsp_obj_t* value); -ase_lsp_assoc_t* ase_lsp_setfunc ( - ase_lsp_mem_t* mem, ase_lsp_obj_t* name, ase_lsp_obj_t* func); +qse_lsp_assoc_t* qse_lsp_lookup (qse_lsp_mem_t* mem, qse_lsp_obj_t* name); +qse_lsp_assoc_t* qse_lsp_setvalue ( + qse_lsp_mem_t* mem, qse_lsp_obj_t* name, qse_lsp_obj_t* value); +qse_lsp_assoc_t* qse_lsp_setfunc ( + qse_lsp_mem_t* mem, qse_lsp_obj_t* name, qse_lsp_obj_t* func); /* cons operations */ -ase_size_t ase_lsp_conslen (ase_lsp_mem_t* mem, ase_lsp_obj_t* obj); +qse_size_t qse_lsp_conslen (qse_lsp_mem_t* mem, qse_lsp_obj_t* obj); #ifdef __cplusplus } diff --git a/qse/lib/lsp/misc.c b/qse/lib/lsp/misc.c index e68e9f4f..0f643841 100644 --- a/qse/lib/lsp/misc.c +++ b/qse/lib/lsp/misc.c @@ -6,34 +6,34 @@ #include "lsp.h" -ase_long_t ase_lsp_strxtolong ( - ase_lsp_t* lsp, const ase_char_t* str, ase_size_t len, - int base, const ase_char_t** endptr) +qse_long_t qse_lsp_strxtolong ( + qse_lsp_t* lsp, const qse_char_t* str, qse_size_t len, + int base, const qse_char_t** endptr) { - ase_long_t n = 0; - const ase_char_t* p; - const ase_char_t* end; - ase_size_t rem; + qse_long_t n = 0; + const qse_char_t* p; + const qse_char_t* end; + qse_size_t rem; int digit, negative = 0; - ASE_ASSERT (base < 37); + QSE_ASSERT (base < 37); p = str; end = str + len; /* strip off leading spaces */ - /*while (ASE_LSP_ISSPACE(lsp,*p)) p++;*/ + /*while (QSE_LSP_ISSPACE(lsp,*p)) p++;*/ /* check for a sign */ - /*while (*p != ASE_T('\0')) */ + /*while (*p != QSE_T('\0')) */ while (p < end) { - if (*p == ASE_T('-')) + if (*p == QSE_T('-')) { negative = ~negative; p++; } - else if (*p == ASE_T('+')) p++; + else if (*p == QSE_T('+')) p++; else break; } @@ -41,16 +41,16 @@ ase_long_t ase_lsp_strxtolong ( rem = end - p; if (base == 0) { - if (rem >= 1 && *p == ASE_T('0')) + if (rem >= 1 && *p == QSE_T('0')) { p++; if (rem == 1) base = 8; - else if (*p == ASE_T('x') || *p == ASE_T('X')) + else if (*p == QSE_T('x') || *p == QSE_T('X')) { p++; base = 16; } - else if (*p == ASE_T('b') || *p == ASE_T('B')) + else if (*p == QSE_T('b') || *p == QSE_T('B')) { p++; base = 2; } @@ -60,25 +60,25 @@ ase_long_t ase_lsp_strxtolong ( } else if (rem >= 2 && base == 16) { - if (*p == ASE_T('0') && - (*(p+1) == ASE_T('x') || *(p+1) == ASE_T('X'))) p += 2; + if (*p == QSE_T('0') && + (*(p+1) == QSE_T('x') || *(p+1) == QSE_T('X'))) p += 2; } else if (rem >= 2 && base == 2) { - if (*p == ASE_T('0') && - (*(p+1) == ASE_T('b') || *(p+1) == ASE_T('B'))) p += 2; + if (*p == QSE_T('0') && + (*(p+1) == QSE_T('b') || *(p+1) == QSE_T('B'))) p += 2; } /* process the digits */ - /*while (*p != ASE_T('\0'))*/ + /*while (*p != QSE_T('\0'))*/ while (p < end) { - if (*p >= ASE_T('0') && *p <= ASE_T('9')) - digit = *p - ASE_T('0'); - else if (*p >= ASE_T('A') && *p <= ASE_T('Z')) - digit = *p - ASE_T('A') + 10; - else if (*p >= ASE_T('a') && *p <= ASE_T('z')) - digit = *p - ASE_T('a') + 10; + if (*p >= QSE_T('0') && *p <= QSE_T('9')) + digit = *p - QSE_T('0'); + else if (*p >= QSE_T('A') && *p <= QSE_T('Z')) + digit = *p - QSE_T('A') + 10; + else if (*p >= QSE_T('a') && *p <= QSE_T('z')) + digit = *p - QSE_T('a') + 10; else break; if (digit >= base) break; @@ -87,13 +87,13 @@ ase_long_t ase_lsp_strxtolong ( p++; } - if (endptr != ASE_NULL) *endptr = p; + if (endptr != QSE_NULL) *endptr = p; return (negative)? -n: n; } /* - * ase_lsp_strtoreal is almost a replica of strtod. + * qse_lsp_strtoreal is almost a replica of strtod. * * strtod.c -- * @@ -113,21 +113,21 @@ ase_long_t ase_lsp_strxtolong ( #define MAX_EXPONENT 511 -ase_real_t ase_lsp_strtoreal (ase_lsp_t* lsp, const ase_char_t* str) +qse_real_t qse_lsp_strtoreal (qse_lsp_t* lsp, const qse_char_t* str) { /* * Table giving binary powers of 10. Entry is 10^2^i. * Used to convert decimal exponents into floating-point numbers. */ - static ase_real_t powers_of_10[] = + static qse_real_t powers_of_10[] = { 10., 100., 1.0e4, 1.0e8, 1.0e16, 1.0e32, 1.0e64, 1.0e128, 1.0e256 }; - ase_real_t fraction, dbl_exp, * d; - const ase_char_t* p; - ase_cint_t c; + qse_real_t fraction, dbl_exp, * d; + const qse_char_t* p; + qse_cint_t c; int exp = 0; /* Esseonent read from "EX" field */ /* @@ -142,23 +142,23 @@ ase_real_t ase_lsp_strtoreal (ase_lsp_t* lsp, const ase_char_t* str) int frac_exp; int mant_size; /* Number of digits in mantissa. */ int dec_pt; /* Number of mantissa digits BEFORE decimal point */ - const ase_char_t *pexp; /* Temporarily holds location of exponent in string */ + const qse_char_t *pexp; /* Temporarily holds location of exponent in string */ int negative = 0, exp_negative = 0; p = str; /* strip off leading blanks */ - /*while (ASE_LSP_ISSPACE(lsp,*p)) p++;*/ + /*while (QSE_LSP_ISSPACE(lsp,*p)) p++;*/ /* check for a sign */ - while (*p != ASE_T('\0')) + while (*p != QSE_T('\0')) { - if (*p == ASE_T('-')) + if (*p == QSE_T('-')) { negative = ~negative; p++; } - else if (*p == ASE_T('+')) p++; + else if (*p == QSE_T('+')) p++; else break; } @@ -168,9 +168,9 @@ ase_real_t ase_lsp_strtoreal (ase_lsp_t* lsp, const ase_char_t* str) for (mant_size = 0; ; mant_size++) { c = *p; - if (!ASE_LSP_ISDIGIT (lsp, c)) + if (!QSE_LSP_ISDIGIT (lsp, c)) { - if ((c != ASE_T('.')) || (dec_pt >= 0)) break; + if ((c != QSE_T('.')) || (dec_pt >= 0)) break; dec_pt = mant_size; } p++; @@ -218,51 +218,51 @@ ase_real_t ase_lsp_strtoreal (ase_lsp_t* lsp, const ase_char_t* str) { c = *p; p++; - if (c == ASE_T('.')) + if (c == QSE_T('.')) { c = *p; p++; } - frac1 = 10 * frac1 + (c - ASE_T('0')); + frac1 = 10 * frac1 + (c - QSE_T('0')); } frac2 = 0; for (; mant_size > 0; mant_size--) { c = *p; p++; - if (c == ASE_T('.')) + if (c == QSE_T('.')) { c = *p; p++; } - frac2 = 10*frac2 + (c - ASE_T('0')); + frac2 = 10*frac2 + (c - QSE_T('0')); } fraction = (1.0e9 * frac1) + frac2; } /* Skim off the exponent */ p = pexp; - if ((*p == ASE_T('E')) || (*p == ASE_T('e'))) + if ((*p == QSE_T('E')) || (*p == QSE_T('e'))) { p++; - if (*p == ASE_T('-')) + if (*p == QSE_T('-')) { exp_negative = 1; p++; } else { - if (*p == ASE_T('+')) p++; + if (*p == QSE_T('+')) p++; exp_negative = 0; } - if (!ASE_LSP_ISDIGIT (lsp, *p)) + if (!QSE_LSP_ISDIGIT (lsp, *p)) { /* p = pexp; */ /* goto done; */ goto no_exp; } - while (ASE_LSP_ISDIGIT (lsp, *p)) + while (QSE_LSP_ISDIGIT (lsp, *p)) { - exp = exp * 10 + (*p - ASE_T('0')); + exp = exp * 10 + (*p - QSE_T('0')); p++; } } @@ -300,23 +300,23 @@ done: return (negative)? -fraction: fraction; } -ase_real_t ase_lsp_strxtoreal ( - ase_lsp_t* lsp, const ase_char_t* str, ase_size_t len, - const ase_char_t** endptr) +qse_real_t qse_lsp_strxtoreal ( + qse_lsp_t* lsp, const qse_char_t* str, qse_size_t len, + const qse_char_t** endptr) { /* * Table giving binary powers of 10. Entry is 10^2^i. * Used to convert decimal exponents into floating-point numbers. */ - static ase_real_t powers_of_10[] = + static qse_real_t powers_of_10[] = { 10., 100., 1.0e4, 1.0e8, 1.0e16, 1.0e32, 1.0e64, 1.0e128, 1.0e256 }; - ase_real_t fraction, dbl_exp, * d; - const ase_char_t* p, * end; - ase_cint_t c; + qse_real_t fraction, dbl_exp, * d; + const qse_char_t* p, * end; + qse_cint_t c; int exp = 0; /* Esseonent read from "EX" field */ /* @@ -331,24 +331,24 @@ ase_real_t ase_lsp_strxtoreal ( int frac_exp; int mant_size; /* Number of digits in mantissa. */ int dec_pt; /* Number of mantissa digits BEFORE decimal point */ - const ase_char_t *pexp; /* Temporarily holds location of exponent in string */ + const qse_char_t *pexp; /* Temporarily holds location of exponent in string */ int negative = 0, exp_negative = 0; p = str; end = str + len; /* Strip off leading blanks and check for a sign */ - /*while (ASE_LSP_ISSPACE(lsp,*p)) p++;*/ + /*while (QSE_LSP_ISSPACE(lsp,*p)) p++;*/ - /*while (*p != ASE_T('\0')) */ + /*while (*p != QSE_T('\0')) */ while (p < end) { - if (*p == ASE_T('-')) + if (*p == QSE_T('-')) { negative = ~negative; p++; } - else if (*p == ASE_T('+')) p++; + else if (*p == QSE_T('+')) p++; else break; } @@ -359,9 +359,9 @@ ase_real_t ase_lsp_strxtoreal ( for (mant_size = 0; p < end; mant_size++) { c = *p; - if (!ASE_LSP_ISDIGIT (lsp, c)) + if (!QSE_LSP_ISDIGIT (lsp, c)) { - if (c != ASE_T('.') || dec_pt >= 0) break; + if (c != QSE_T('.') || dec_pt >= 0) break; dec_pt = mant_size; } p++; @@ -384,7 +384,7 @@ ase_real_t ase_lsp_strxtoreal ( mant_size--; /* One of the digits was the point */ } - if (mant_size > 18) /* TODO: is 18 correct for ase_real_t??? */ + if (mant_size > 18) /* TODO: is 18 correct for qse_real_t??? */ { frac_exp = dec_pt - 18; mant_size = 18; @@ -410,58 +410,58 @@ ase_real_t ase_lsp_strxtoreal ( { c = *p; p++; - if (c == ASE_T('.')) + if (c == QSE_T('.')) { c = *p; p++; } - frac1 = 10 * frac1 + (c - ASE_T('0')); + frac1 = 10 * frac1 + (c - QSE_T('0')); } frac2 = 0; for (; mant_size > 0; mant_size--) { c = *p++; - if (c == ASE_T('.')) + if (c == QSE_T('.')) { c = *p; p++; } - frac2 = 10 * frac2 + (c - ASE_T('0')); + frac2 = 10 * frac2 + (c - QSE_T('0')); } fraction = (1.0e9 * frac1) + frac2; } /* Skim off the exponent */ p = pexp; - if (p < end && (*p == ASE_T('E') || *p == ASE_T('e'))) + if (p < end && (*p == QSE_T('E') || *p == QSE_T('e'))) { p++; if (p < end) { - if (*p == ASE_T('-')) + if (*p == QSE_T('-')) { exp_negative = 1; p++; } else { - if (*p == ASE_T('+')) p++; + if (*p == QSE_T('+')) p++; exp_negative = 0; } } else exp_negative = 0; - if (!(p < end && ASE_LSP_ISDIGIT (lsp, *p))) + if (!(p < end && QSE_LSP_ISDIGIT (lsp, *p))) { /*p = pexp;*/ /*goto done;*/ goto no_exp; } - while (p < end && ASE_LSP_ISDIGIT (lsp, *p)) + while (p < end && QSE_LSP_ISDIGIT (lsp, *p)) { - exp = exp * 10 + (*p - ASE_T('0')); + exp = exp * 10 + (*p - QSE_T('0')); p++; } } @@ -496,35 +496,35 @@ no_exp: else fraction *= dbl_exp; done: - if (endptr != ASE_NULL) *endptr = p; + if (endptr != QSE_NULL) *endptr = p; return (negative)? -fraction: fraction; } -ase_size_t ase_lsp_longtostr ( - ase_long_t value, int radix, const ase_char_t* prefix, - ase_char_t* buf, ase_size_t size) +qse_size_t qse_lsp_longtostr ( + qse_long_t value, int radix, const qse_char_t* prefix, + qse_char_t* buf, qse_size_t size) { - ase_long_t t, rem; - ase_size_t len, ret, i; - ase_size_t prefix_len; + qse_long_t t, rem; + qse_size_t len, ret, i; + qse_size_t prefix_len; - prefix_len = (prefix != ASE_NULL)? ase_strlen(prefix): 0; + prefix_len = (prefix != QSE_NULL)? qse_strlen(prefix): 0; t = value; if (t == 0) { /* zero */ - if (buf == ASE_NULL) return prefix_len + 1; + if (buf == QSE_NULL) return prefix_len + 1; if (size < prefix_len+1) { /* buffer too small */ - return (ase_size_t)-1; + return (qse_size_t)-1; } for (i = 0; i < prefix_len; i++) buf[i] = prefix[i]; - buf[prefix_len] = ASE_T('0'); - if (size > prefix_len+1) buf[prefix_len+1] = ASE_T('\0'); + buf[prefix_len] = QSE_T('0'); + if (size > prefix_len+1) buf[prefix_len+1] = QSE_T('\0'); return 1; } @@ -533,14 +533,14 @@ ase_size_t ase_lsp_longtostr ( if (t < 0) { t = -t; len++; } while (t > 0) { len++; t /= radix; } - if (buf == ASE_NULL) + if (buf == QSE_NULL) { /* if buf is not given, return the number of bytes required */ return len; } - if (size < len) return (ase_size_t)-1; /* buffer too small */ - if (size > len) buf[len] = ASE_T('\0'); + if (size < len) return (qse_size_t)-1; /* buffer too small */ + if (size > len) buf[len] = QSE_T('\0'); ret = len; t = value; @@ -550,9 +550,9 @@ ase_size_t ase_lsp_longtostr ( { rem = t % radix; if (rem >= 10) - buf[--len] = (ase_char_t)rem + ASE_T('a') - 10; + buf[--len] = (qse_char_t)rem + QSE_T('a') - 10; else - buf[--len] = (ase_char_t)rem + ASE_T('0'); + buf[--len] = (qse_char_t)rem + QSE_T('0'); t /= radix; } @@ -563,7 +563,7 @@ ase_size_t ase_lsp_longtostr ( buf[i] = prefix[i-1]; len--; } - buf[--len] = ASE_T('-'); + buf[--len] = QSE_T('-'); } else { diff --git a/qse/lib/lsp/misc.h b/qse/lib/lsp/misc.h index b0327835..7b40f5d7 100644 --- a/qse/lib/lsp/misc.h +++ b/qse/lib/lsp/misc.h @@ -4,19 +4,19 @@ * {License} */ -#ifndef _ASE_LSP_MISC_H_ -#define _ASE_LSP_MISC_H_ +#ifndef _QSE_LSP_MISC_H_ +#define _QSE_LSP_MISC_H_ -#ifndef _ASE_LSP_LSP_H_ -#error Never include this file directly. Include instead +#ifndef _QSE_LSP_LSP_H_ +#error Never include this file directly. Include instead #endif #ifdef __cplusplus extern "C" { #endif -void* ase_lsp_memcpy (void* dst, const void* src, ase_size_t n); -void* ase_lsp_memset (void* dst, int val, ase_size_t n); +void* qse_lsp_memcpy (void* dst, const void* src, qse_size_t n); +void* qse_lsp_memset (void* dst, int val, qse_size_t n); #ifdef __cplusplus } diff --git a/qse/lib/lsp/name.c b/qse/lib/lsp/name.c index 6aafacf6..f66945a4 100644 --- a/qse/lib/lsp/name.c +++ b/qse/lib/lsp/name.c @@ -6,79 +6,79 @@ #include "lsp.h" -ase_lsp_name_t* ase_lsp_name_open ( - ase_lsp_name_t* name, ase_size_t capa, ase_lsp_t* lsp) +qse_lsp_name_t* qse_lsp_name_open ( + qse_lsp_name_t* name, qse_size_t capa, qse_lsp_t* lsp) { - if (capa == 0) capa = ASE_COUNTOF(name->static_buf) - 1; + if (capa == 0) capa = QSE_COUNTOF(name->static_buf) - 1; - if (name == ASE_NULL) + if (name == QSE_NULL) { - name = (ase_lsp_name_t*) - ASE_LSP_ALLOC (lsp, ASE_SIZEOF(ase_lsp_name_t)); - if (name == ASE_NULL) return ASE_NULL; - name->__dynamic = ASE_TRUE; + name = (qse_lsp_name_t*) + QSE_LSP_ALLOC (lsp, QSE_SIZEOF(qse_lsp_name_t)); + if (name == QSE_NULL) return QSE_NULL; + name->__dynamic = QSE_TRUE; } - else name->__dynamic = ASE_FALSE; + else name->__dynamic = QSE_FALSE; - if (capa < ASE_COUNTOF(name->static_buf)) + if (capa < QSE_COUNTOF(name->static_buf)) { name->buf = name->static_buf; } else { - name->buf = (ase_char_t*) - ASE_LSP_ALLOC (lsp, (capa+1)*ASE_SIZEOF(ase_char_t)); - if (name->buf == ASE_NULL) + name->buf = (qse_char_t*) + QSE_LSP_ALLOC (lsp, (capa+1)*QSE_SIZEOF(qse_char_t)); + if (name->buf == QSE_NULL) { - if (name->__dynamic) ASE_LSP_FREE (lsp, name); - return ASE_NULL; + if (name->__dynamic) QSE_LSP_FREE (lsp, name); + return QSE_NULL; } } name->size = 0; name->capa = capa; - name->buf[0] = ASE_T('\0'); + name->buf[0] = QSE_T('\0'); name->lsp = lsp; return name; } -void ase_lsp_name_close (ase_lsp_name_t* name) +void qse_lsp_name_close (qse_lsp_name_t* name) { - if (name->capa >= ASE_COUNTOF(name->static_buf)) + if (name->capa >= QSE_COUNTOF(name->static_buf)) { - ASE_ASSERT (name->buf != name->static_buf); - ASE_LSP_FREE (name->lsp, name->buf); + QSE_ASSERT (name->buf != name->static_buf); + QSE_LSP_FREE (name->lsp, name->buf); } - if (name->__dynamic) ASE_LSP_FREE (name->lsp, name); + if (name->__dynamic) QSE_LSP_FREE (name->lsp, name); } -int ase_lsp_name_addc (ase_lsp_name_t* name, ase_cint_t c) +int qse_lsp_name_addc (qse_lsp_name_t* name, qse_cint_t c) { if (name->size >= name->capa) { /* double the capacity */ - ase_size_t new_capa = name->capa * 2; + qse_size_t new_capa = name->capa * 2; - if (new_capa >= ASE_COUNTOF(name->static_buf)) + if (new_capa >= QSE_COUNTOF(name->static_buf)) { - ase_char_t* space; + qse_char_t* space; - if (name->capa < ASE_COUNTOF(name->static_buf)) + if (name->capa < QSE_COUNTOF(name->static_buf)) { - space = (ase_char_t*) ASE_LSP_ALLOC ( - name->lsp, (new_capa+1)*ASE_SIZEOF(ase_char_t)); - if (space == ASE_NULL) return -1; + space = (qse_char_t*) QSE_LSP_ALLOC ( + name->lsp, (new_capa+1)*QSE_SIZEOF(qse_char_t)); + if (space == QSE_NULL) return -1; /* don't need to copy up to the terminating null */ - ASE_MEMCPY (space, name->buf, name->capa*ASE_SIZEOF(ase_char_t)); + QSE_MEMCPY (space, name->buf, name->capa*QSE_SIZEOF(qse_char_t)); } else { - space = (ase_char_t*) ASE_LSP_REALLOC ( + space = (qse_char_t*) QSE_LSP_REALLOC ( name->lsp, name->buf, - (new_capa+1)*ASE_SIZEOF(ase_char_t)); - if (space == ASE_NULL) return -1; + (new_capa+1)*QSE_SIZEOF(qse_char_t)); + if (space == QSE_NULL) return -1; } name->buf = space; @@ -88,31 +88,31 @@ int ase_lsp_name_addc (ase_lsp_name_t* name, ase_cint_t c) } name->buf[name->size++] = c; - name->buf[name->size] = ASE_T('\0'); + name->buf[name->size] = QSE_T('\0'); return 0; } -int ase_lsp_name_adds (ase_lsp_name_t* name, const ase_char_t* s) +int qse_lsp_name_adds (qse_lsp_name_t* name, const qse_char_t* s) { - while (*s != ASE_T('\0')) + while (*s != QSE_T('\0')) { - if (ase_lsp_name_addc(name, *s) == -1) return -1; + if (qse_lsp_name_addc(name, *s) == -1) return -1; s++; } return 0; } -void ase_lsp_name_clear (ase_lsp_name_t* name) +void qse_lsp_name_clear (qse_lsp_name_t* name) { name->size = 0; - name->buf[0] = ASE_T('\0'); + name->buf[0] = QSE_T('\0'); } -int ase_lsp_name_compare (ase_lsp_name_t* name, const ase_char_t* str) +int qse_lsp_name_compare (qse_lsp_name_t* name, const qse_char_t* str) { - ase_char_t* p = name->buf; - ase_size_t index = 0; + qse_char_t* p = name->buf; + qse_size_t index = 0; while (index < name->size) { @@ -121,5 +121,5 @@ int ase_lsp_name_compare (ase_lsp_name_t* name, const ase_char_t* str) index++; p++; str++; } - return (*str == ASE_T('\0'))? 0: -1; + return (*str == QSE_T('\0'))? 0: -1; } diff --git a/qse/lib/lsp/name.h b/qse/lib/lsp/name.h index b7013a8f..9515b7d0 100644 --- a/qse/lib/lsp/name.h +++ b/qse/lib/lsp/name.h @@ -4,36 +4,36 @@ * {License} */ -#ifndef _ASE_LSP_NAME_H_ -#define _ASE_LSP_NAME_H_ +#ifndef _QSE_LSP_NAME_H_ +#define _QSE_LSP_NAME_H_ -#include -#include +#include +#include -struct ase_lsp_name_t +struct qse_lsp_name_t { - ase_size_t capa; - ase_size_t size; - ase_char_t* buf; - ase_char_t static_buf[128]; - ase_lsp_t* lsp; - ase_bool_t __dynamic; + qse_size_t capa; + qse_size_t size; + qse_char_t* buf; + qse_char_t static_buf[128]; + qse_lsp_t* lsp; + qse_bool_t __dynamic; }; -typedef struct ase_lsp_name_t ase_lsp_name_t; +typedef struct qse_lsp_name_t qse_lsp_name_t; #ifdef __cplusplus extern "C" { #endif -ase_lsp_name_t* ase_lsp_name_open ( - ase_lsp_name_t* name, ase_size_t capa, ase_lsp_t* lsp); -void ase_lsp_name_close (ase_lsp_name_t* name); +qse_lsp_name_t* qse_lsp_name_open ( + qse_lsp_name_t* name, qse_size_t capa, qse_lsp_t* lsp); +void qse_lsp_name_close (qse_lsp_name_t* name); -int ase_lsp_name_addc (ase_lsp_name_t* name, ase_cint_t c); -int ase_lsp_name_adds (ase_lsp_name_t* name, const ase_char_t* s); -void ase_lsp_name_clear (ase_lsp_name_t* name); -int ase_lsp_name_compare (ase_lsp_name_t* name, const ase_char_t* str); +int qse_lsp_name_addc (qse_lsp_name_t* name, qse_cint_t c); +int qse_lsp_name_adds (qse_lsp_name_t* name, const qse_char_t* s); +void qse_lsp_name_clear (qse_lsp_name_t* name); +int qse_lsp_name_compare (qse_lsp_name_t* name, const qse_char_t* str); #ifdef __cplusplus } diff --git a/qse/lib/lsp/obj.h b/qse/lib/lsp/obj.h index dc1b1f0a..d801f3ba 100644 --- a/qse/lib/lsp/obj.h +++ b/qse/lib/lsp/obj.h @@ -4,158 +4,158 @@ * {License} */ -#ifndef _ASE_LSP_OBJ_H_ -#define _ASE_LSP_OBJ_H_ +#ifndef _QSE_LSP_OBJ_H_ +#define _QSE_LSP_OBJ_H_ -#ifndef _ASE_LSP_LSP_H_ -#error Never include this file directly. Include instead +#ifndef _QSE_LSP_LSP_H_ +#error Never include this file directly. Include instead #endif /* object types */ enum { - ASE_LSP_OBJ_NIL = 0, - ASE_LSP_OBJ_TRUE, - ASE_LSP_OBJ_INT, - ASE_LSP_OBJ_REAL, - ASE_LSP_OBJ_SYM, - ASE_LSP_OBJ_STR, - ASE_LSP_OBJ_CONS, - ASE_LSP_OBJ_FUNC, - ASE_LSP_OBJ_MACRO, - ASE_LSP_OBJ_PRIM, + QSE_LSP_OBJ_NIL = 0, + QSE_LSP_OBJ_TRUE, + QSE_LSP_OBJ_INT, + QSE_LSP_OBJ_REAL, + QSE_LSP_OBJ_SYM, + QSE_LSP_OBJ_STR, + QSE_LSP_OBJ_CONS, + QSE_LSP_OBJ_FUNC, + QSE_LSP_OBJ_MACRO, + QSE_LSP_OBJ_PRIM, - ASE_LSP_TYPE_COUNT /* the number of lsp object types */ + QSE_LSP_TYPE_COUNT /* the number of lsp object types */ }; -typedef struct ase_lsp_objhdr_t ase_lsp_objhdr_t; -typedef struct ase_lsp_obj_nil_t ase_lsp_obj_nil_t; -typedef struct ase_lsp_obj_true_t ase_lsp_obj_true_t; -typedef struct ase_lsp_obj_int_t ase_lsp_obj_int_t; -typedef struct ase_lsp_obj_real_t ase_lsp_obj_real_t; -typedef struct ase_lsp_obj_sym_t ase_lsp_obj_sym_t; -typedef struct ase_lsp_obj_str_t ase_lsp_obj_str_t; -typedef struct ase_lsp_obj_cons_t ase_lsp_obj_cons_t; -typedef struct ase_lsp_obj_func_t ase_lsp_obj_func_t; -typedef struct ase_lsp_obj_macro_t ase_lsp_obj_macro_t; -typedef struct ase_lsp_obj_prim_t ase_lsp_obj_prim_t; +typedef struct qse_lsp_objhdr_t qse_lsp_objhdr_t; +typedef struct qse_lsp_obj_nil_t qse_lsp_obj_nil_t; +typedef struct qse_lsp_obj_true_t qse_lsp_obj_true_t; +typedef struct qse_lsp_obj_int_t qse_lsp_obj_int_t; +typedef struct qse_lsp_obj_real_t qse_lsp_obj_real_t; +typedef struct qse_lsp_obj_sym_t qse_lsp_obj_sym_t; +typedef struct qse_lsp_obj_str_t qse_lsp_obj_str_t; +typedef struct qse_lsp_obj_cons_t qse_lsp_obj_cons_t; +typedef struct qse_lsp_obj_func_t qse_lsp_obj_func_t; +typedef struct qse_lsp_obj_macro_t qse_lsp_obj_macro_t; +typedef struct qse_lsp_obj_prim_t qse_lsp_obj_prim_t; -struct ase_lsp_objhdr_t +struct qse_lsp_objhdr_t { - ase_uint32_t type: 8; - ase_uint32_t mark: 4; - ase_uint32_t perm: 4; - ase_uint32_t lock: 16; - ase_size_t size; - ase_lsp_obj_t* link; + qse_uint32_t type: 8; + qse_uint32_t mark: 4; + qse_uint32_t perm: 4; + qse_uint32_t lock: 16; + qse_size_t size; + qse_lsp_obj_t* link; }; -struct ase_lsp_obj_t +struct qse_lsp_obj_t { - ase_lsp_objhdr_t hdr; + qse_lsp_objhdr_t hdr; }; -struct ase_lsp_obj_nil_t +struct qse_lsp_obj_nil_t { - ase_lsp_objhdr_t hdr; + qse_lsp_objhdr_t hdr; }; -struct ase_lsp_obj_true_t +struct qse_lsp_obj_true_t { - ase_lsp_objhdr_t hdr; + qse_lsp_objhdr_t hdr; }; -struct ase_lsp_obj_int_t +struct qse_lsp_obj_int_t { - ase_lsp_objhdr_t hdr; - ase_long_t value; + qse_lsp_objhdr_t hdr; + qse_long_t value; }; -struct ase_lsp_obj_real_t +struct qse_lsp_obj_real_t { - ase_lsp_objhdr_t hdr; - ase_real_t value; + qse_lsp_objhdr_t hdr; + qse_real_t value; }; -struct ase_lsp_obj_sym_t +struct qse_lsp_obj_sym_t { - ase_lsp_objhdr_t hdr; + qse_lsp_objhdr_t hdr; #if defined(__GNUC__) - ase_char_t buffer[0]; + qse_char_t buffer[0]; #endif }; -struct ase_lsp_obj_str_t +struct qse_lsp_obj_str_t { - ase_lsp_objhdr_t hdr; + qse_lsp_objhdr_t hdr; #if defined(__GNUC__) - ase_char_t buffer[0]; + qse_char_t buffer[0]; #endif }; -struct ase_lsp_obj_cons_t +struct qse_lsp_obj_cons_t { - ase_lsp_objhdr_t hdr; - ase_lsp_obj_t* car; - ase_lsp_obj_t* cdr; + qse_lsp_objhdr_t hdr; + qse_lsp_obj_t* car; + qse_lsp_obj_t* cdr; }; -struct ase_lsp_obj_func_t +struct qse_lsp_obj_func_t { - ase_lsp_objhdr_t hdr; - ase_lsp_obj_t* formal; - ase_lsp_obj_t* body; + qse_lsp_objhdr_t hdr; + qse_lsp_obj_t* formal; + qse_lsp_obj_t* body; }; -struct ase_lsp_obj_macro_t +struct qse_lsp_obj_macro_t { - ase_lsp_objhdr_t hdr; - ase_lsp_obj_t* formal; - ase_lsp_obj_t* body; + qse_lsp_objhdr_t hdr; + qse_lsp_obj_t* formal; + qse_lsp_obj_t* body; }; -struct ase_lsp_obj_prim_t +struct qse_lsp_obj_prim_t { - ase_lsp_objhdr_t hdr; - ase_lsp_prim_t impl; - ase_size_t min_args; - ase_size_t max_args; + qse_lsp_objhdr_t hdr; + qse_lsp_prim_t impl; + qse_size_t min_args; + qse_size_t max_args; }; /* header access */ -#define ASE_LSP_TYPE(x) (((ase_lsp_obj_t*)x)->hdr.type) -#define ASE_LSP_SIZE(x) (((ase_lsp_obj_t*)x)->hdr.size) -#define ASE_LSP_MARK(x) (((ase_lsp_obj_t*)x)->hdr.mark) -#define ASE_LSP_PERM(x) (((ase_lsp_obj_t*)x)->hdr.perm) -#define ASE_LSP_LOCK(x) (((ase_lsp_obj_t*)x)->hdr.lock) -#define ASE_LSP_LINK(x) (((ase_lsp_obj_t*)x)->hdr.link) +#define QSE_LSP_TYPE(x) (((qse_lsp_obj_t*)x)->hdr.type) +#define QSE_LSP_SIZE(x) (((qse_lsp_obj_t*)x)->hdr.size) +#define QSE_LSP_MARK(x) (((qse_lsp_obj_t*)x)->hdr.mark) +#define QSE_LSP_PERM(x) (((qse_lsp_obj_t*)x)->hdr.perm) +#define QSE_LSP_LOCK(x) (((qse_lsp_obj_t*)x)->hdr.lock) +#define QSE_LSP_LINK(x) (((qse_lsp_obj_t*)x)->hdr.link) /* value access */ -#define ASE_LSP_IVAL(x) (((ase_lsp_obj_int_t*)x)->value) -#define ASE_LSP_RVAL(x) (((ase_lsp_obj_real_t*)x)->value) +#define QSE_LSP_IVAL(x) (((qse_lsp_obj_int_t*)x)->value) +#define QSE_LSP_RVAL(x) (((qse_lsp_obj_real_t*)x)->value) #if defined(__GNUC__) - #define ASE_LSP_SYMPTR(x) (((ase_lsp_obj_sym_t*)x)->buffer) + #define QSE_LSP_SYMPTR(x) (((qse_lsp_obj_sym_t*)x)->buffer) #else - #define ASE_LSP_SYMPTR(x) ((ase_char_t*)(((ase_lsp_obj_sym_t*)x) + 1)) + #define QSE_LSP_SYMPTR(x) ((qse_char_t*)(((qse_lsp_obj_sym_t*)x) + 1)) #endif -#define ASE_LSP_SYMLEN(x) ((((ase_lsp_obj_sym_t*)x)->hdr.size - sizeof(ase_lsp_obj_t)) / sizeof(ase_char_t) - 1) +#define QSE_LSP_SYMLEN(x) ((((qse_lsp_obj_sym_t*)x)->hdr.size - sizeof(qse_lsp_obj_t)) / sizeof(qse_char_t) - 1) #if defined(__GNUC__) - #define ASE_LSP_STRPTR(x) (((ase_lsp_obj_str_t*)x)->buffer) + #define QSE_LSP_STRPTR(x) (((qse_lsp_obj_str_t*)x)->buffer) #else - #define ASE_LSP_STRPTR(x) ((ase_char_t*)(((ase_lsp_obj_str_t*)x) + 1)) + #define QSE_LSP_STRPTR(x) ((qse_char_t*)(((qse_lsp_obj_str_t*)x) + 1)) #endif -#define ASE_LSP_STRLEN(x) ((((ase_lsp_obj_str_t*)x)->hdr.size - sizeof(ase_lsp_obj_t)) / sizeof(ase_char_t) - 1) +#define QSE_LSP_STRLEN(x) ((((qse_lsp_obj_str_t*)x)->hdr.size - sizeof(qse_lsp_obj_t)) / sizeof(qse_char_t) - 1) -#define ASE_LSP_CAR(x) (((ase_lsp_obj_cons_t*)x)->car) -#define ASE_LSP_CDR(x) (((ase_lsp_obj_cons_t*)x)->cdr) -#define ASE_LSP_FFORMAL(x) (((ase_lsp_obj_func_t*)x)->formal) -#define ASE_LSP_FBODY(x) (((ase_lsp_obj_func_t*)x)->body) -#define ASE_LSP_MFORMAL(x) (((ase_lsp_obj_macro_t*)x)->formal) -#define ASE_LSP_MBODY(x) (((ase_lsp_obj_macro_t*)x)->body) -#define ASE_LSP_PIMPL(x) (((ase_lsp_obj_prim_t*)x)->impl) -#define ASE_LSP_PMINARGS(x) (((ase_lsp_obj_prim_t*)x)->min_args) -#define ASE_LSP_PMAXARGS(x) (((ase_lsp_obj_prim_t*)x)->max_args) +#define QSE_LSP_CAR(x) (((qse_lsp_obj_cons_t*)x)->car) +#define QSE_LSP_CDR(x) (((qse_lsp_obj_cons_t*)x)->cdr) +#define QSE_LSP_FFORMAL(x) (((qse_lsp_obj_func_t*)x)->formal) +#define QSE_LSP_FBODY(x) (((qse_lsp_obj_func_t*)x)->body) +#define QSE_LSP_MFORMAL(x) (((qse_lsp_obj_macro_t*)x)->formal) +#define QSE_LSP_MBODY(x) (((qse_lsp_obj_macro_t*)x)->body) +#define QSE_LSP_PIMPL(x) (((qse_lsp_obj_prim_t*)x)->impl) +#define QSE_LSP_PMINARGS(x) (((qse_lsp_obj_prim_t*)x)->min_args) +#define QSE_LSP_PMAXARGS(x) (((qse_lsp_obj_prim_t*)x)->max_args) #endif diff --git a/qse/lib/lsp/prim.c b/qse/lib/lsp/prim.c index 7badb41d..77dfdafd 100644 --- a/qse/lib/lsp/prim.c +++ b/qse/lib/lsp/prim.c @@ -6,94 +6,94 @@ #include "lsp.h" -static int __add_prim (ase_lsp_mem_t* mem, - const ase_char_t* name, ase_size_t len, - ase_lsp_prim_t pimpl, ase_size_t min_args, ase_size_t max_args); +static int __add_prim (qse_lsp_mem_t* mem, + const qse_char_t* name, qse_size_t len, + qse_lsp_prim_t pimpl, qse_size_t min_args, qse_size_t max_args); -int ase_lsp_addprim ( - ase_lsp_t* lsp, const ase_char_t* name, ase_size_t name_len, - ase_lsp_prim_t prim, ase_size_t min_args, ase_size_t max_args) +int qse_lsp_addprim ( + qse_lsp_t* lsp, const qse_char_t* name, qse_size_t name_len, + qse_lsp_prim_t prim, qse_size_t min_args, qse_size_t max_args) { return __add_prim (lsp->mem, name, name_len, prim, min_args, max_args); } -int ase_lsp_removeprim (ase_lsp_t* lsp, const ase_char_t* name) +int qse_lsp_removeprim (qse_lsp_t* lsp, const qse_char_t* name) { /* TODO: */ return -1; } -static int __add_prim (ase_lsp_mem_t* mem, - const ase_char_t* name, ase_size_t name_len, - ase_lsp_prim_t pimpl, ase_size_t min_args, ase_size_t max_args) +static int __add_prim (qse_lsp_mem_t* mem, + const qse_char_t* name, qse_size_t name_len, + qse_lsp_prim_t pimpl, qse_size_t min_args, qse_size_t max_args) { - ase_lsp_obj_t* n, * p; + qse_lsp_obj_t* n, * p; - n = ase_lsp_makesym (mem, name, name_len); - if (n == ASE_NULL) return -1; + n = qse_lsp_makesym (mem, name, name_len); + if (n == QSE_NULL) return -1; - if (ase_lsp_pushtmp (mem->lsp, n) == ASE_NULL) return -1; + if (qse_lsp_pushtmp (mem->lsp, n) == QSE_NULL) return -1; - p = ase_lsp_makeprim (mem, pimpl, min_args, max_args); - if (p == ASE_NULL) + p = qse_lsp_makeprim (mem, pimpl, min_args, max_args); + if (p == QSE_NULL) { - ase_lsp_poptmp (mem->lsp); + qse_lsp_poptmp (mem->lsp); return -1; } - if (ase_lsp_pushtmp (mem->lsp, p) == ASE_NULL) + if (qse_lsp_pushtmp (mem->lsp, p) == QSE_NULL) { - ase_lsp_poptmp (mem->lsp); + qse_lsp_poptmp (mem->lsp); return -1; } - if (ase_lsp_setfunc(mem, n, p) == ASE_NULL) + if (qse_lsp_setfunc(mem, n, p) == QSE_NULL) { - ase_lsp_poptmp (mem->lsp); - ase_lsp_poptmp (mem->lsp); + qse_lsp_poptmp (mem->lsp); + qse_lsp_poptmp (mem->lsp); return -1; } - ase_lsp_poptmp (mem->lsp); - ase_lsp_poptmp (mem->lsp); + qse_lsp_poptmp (mem->lsp); + qse_lsp_poptmp (mem->lsp); return 0; } -ase_lsp_obj_t* ase_lsp_prim_exit (ase_lsp_t* lsp, ase_lsp_obj_t* args) +qse_lsp_obj_t* qse_lsp_prim_exit (qse_lsp_t* lsp, qse_lsp_obj_t* args) { - lsp->errnum = ASE_LSP_EEXIT; - return ASE_NULL; + lsp->errnum = QSE_LSP_EEXIT; + return QSE_NULL; } -ase_lsp_obj_t* ase_lsp_prim_eval (ase_lsp_t* lsp, ase_lsp_obj_t* args) +qse_lsp_obj_t* qse_lsp_prim_eval (qse_lsp_t* lsp, qse_lsp_obj_t* args) { - ase_lsp_obj_t* tmp1, * tmp2; + qse_lsp_obj_t* tmp1, * tmp2; - ASE_ASSERT (ASE_LSP_TYPE(args) == ASE_LSP_OBJ_CONS); + QSE_ASSERT (QSE_LSP_TYPE(args) == QSE_LSP_OBJ_CONS); - tmp1 = ase_lsp_eval (lsp, ASE_LSP_CAR(args)); - if (tmp1 == ASE_NULL) return ASE_NULL; + tmp1 = qse_lsp_eval (lsp, QSE_LSP_CAR(args)); + if (tmp1 == QSE_NULL) return QSE_NULL; - if (ase_lsp_pushtmp (lsp, tmp1) == ASE_NULL) return ASE_NULL; + if (qse_lsp_pushtmp (lsp, tmp1) == QSE_NULL) return QSE_NULL; - tmp2 = ase_lsp_eval (lsp, tmp1); - if (tmp2 == ASE_NULL) + tmp2 = qse_lsp_eval (lsp, tmp1); + if (tmp2 == QSE_NULL) { - ase_lsp_poptmp (lsp); - return ASE_NULL; + qse_lsp_poptmp (lsp); + return QSE_NULL; } - ase_lsp_poptmp (lsp); + qse_lsp_poptmp (lsp); return tmp2; } -ase_lsp_obj_t* ase_lsp_prim_gc (ase_lsp_t* lsp, ase_lsp_obj_t* args) +qse_lsp_obj_t* qse_lsp_prim_gc (qse_lsp_t* lsp, qse_lsp_obj_t* args) { - ase_lsp_gc (lsp->mem); + qse_lsp_gc (lsp->mem); return lsp->mem->nil; } -ase_lsp_obj_t* ase_lsp_prim_cond (ase_lsp_t* lsp, ase_lsp_obj_t* args) +qse_lsp_obj_t* qse_lsp_prim_cond (qse_lsp_t* lsp, qse_lsp_obj_t* args) { /* * (cond @@ -103,302 +103,302 @@ ase_lsp_obj_t* ase_lsp_prim_cond (ase_lsp_t* lsp, ase_lsp_obj_t* args) * (t resultN)) */ - ase_lsp_obj_t* tmp, * ret; + qse_lsp_obj_t* tmp, * ret; - while (ASE_LSP_TYPE(args) == ASE_LSP_OBJ_CONS) + while (QSE_LSP_TYPE(args) == QSE_LSP_OBJ_CONS) { - if (ASE_LSP_TYPE(ASE_LSP_CAR(args)) != ASE_LSP_OBJ_CONS) + if (QSE_LSP_TYPE(QSE_LSP_CAR(args)) != QSE_LSP_OBJ_CONS) { - ase_lsp_seterror (lsp, ASE_LSP_EARGBAD, ASE_NULL, 0); - return ASE_NULL; + qse_lsp_seterror (lsp, QSE_LSP_EARGBAD, QSE_NULL, 0); + return QSE_NULL; } - tmp = ase_lsp_eval (lsp, ASE_LSP_CAR(ASE_LSP_CAR(args))); - if (tmp == ASE_NULL) return ASE_NULL; + tmp = qse_lsp_eval (lsp, QSE_LSP_CAR(QSE_LSP_CAR(args))); + if (tmp == QSE_NULL) return QSE_NULL; - if (ase_lsp_pushtmp (lsp, tmp) == ASE_NULL) return ASE_NULL; + if (qse_lsp_pushtmp (lsp, tmp) == QSE_NULL) return QSE_NULL; if (tmp != lsp->mem->nil) { int f = 0; - tmp = ASE_LSP_CDR(ASE_LSP_CAR(args)); + tmp = QSE_LSP_CDR(QSE_LSP_CAR(args)); ret = lsp->mem->nil; - while (ASE_LSP_TYPE(tmp) == ASE_LSP_OBJ_CONS) + while (QSE_LSP_TYPE(tmp) == QSE_LSP_OBJ_CONS) { - ret = ase_lsp_eval (lsp, ASE_LSP_CAR(tmp)); - if (ret == ASE_NULL) + ret = qse_lsp_eval (lsp, QSE_LSP_CAR(tmp)); + if (ret == QSE_NULL) { - if (!f) ase_lsp_poptmp (lsp); /* ret */ - ase_lsp_poptmp (lsp); /* tmp */ - return ASE_NULL; + if (!f) qse_lsp_poptmp (lsp); /* ret */ + qse_lsp_poptmp (lsp); /* tmp */ + return QSE_NULL; } - if (!f) ase_lsp_poptmp (lsp); /* ret */ - if (ase_lsp_pushtmp (lsp, ret) == ASE_NULL) + if (!f) qse_lsp_poptmp (lsp); /* ret */ + if (qse_lsp_pushtmp (lsp, ret) == QSE_NULL) { - ase_lsp_poptmp (lsp); /* tmp */ - return ASE_NULL; + qse_lsp_poptmp (lsp); /* tmp */ + return QSE_NULL; } f = 1; - tmp = ASE_LSP_CDR(tmp); + tmp = QSE_LSP_CDR(tmp); } if (tmp != lsp->mem->nil) { - if (!f) ase_lsp_poptmp (lsp); /* ret */ - ase_lsp_poptmp (lsp); /* tmp */ + if (!f) qse_lsp_poptmp (lsp); /* ret */ + qse_lsp_poptmp (lsp); /* tmp */ - ase_lsp_seterror (lsp, ASE_LSP_EARGBAD, ASE_NULL, 0); - return ASE_NULL; + qse_lsp_seterror (lsp, QSE_LSP_EARGBAD, QSE_NULL, 0); + return QSE_NULL; } - if (!f) ase_lsp_poptmp (lsp); /* ret */ - ase_lsp_poptmp (lsp); /* tmp */ + if (!f) qse_lsp_poptmp (lsp); /* ret */ + qse_lsp_poptmp (lsp); /* tmp */ return ret; } - ase_lsp_poptmp (lsp); /* tmp */ - args = ASE_LSP_CDR(args); + qse_lsp_poptmp (lsp); /* tmp */ + args = QSE_LSP_CDR(args); } return lsp->mem->nil; } -ase_lsp_obj_t* ase_lsp_prim_if (ase_lsp_t* lsp, ase_lsp_obj_t* args) +qse_lsp_obj_t* qse_lsp_prim_if (qse_lsp_t* lsp, qse_lsp_obj_t* args) { - ase_lsp_obj_t* tmp; + qse_lsp_obj_t* tmp; - ASE_ASSERT (ASE_LSP_TYPE(args) == ASE_LSP_OBJ_CONS); + QSE_ASSERT (QSE_LSP_TYPE(args) == QSE_LSP_OBJ_CONS); - tmp = ase_lsp_eval (lsp, ASE_LSP_CAR(args)); - if (tmp == ASE_NULL) return ASE_NULL; + tmp = qse_lsp_eval (lsp, QSE_LSP_CAR(args)); + if (tmp == QSE_NULL) return QSE_NULL; - if (ase_lsp_pushtmp (lsp, tmp) == ASE_NULL) return ASE_NULL; + if (qse_lsp_pushtmp (lsp, tmp) == QSE_NULL) return QSE_NULL; if (tmp != lsp->mem->nil) { - tmp = ase_lsp_eval (lsp, ASE_LSP_CAR(ASE_LSP_CDR(args))); - if (tmp == ASE_NULL) + tmp = qse_lsp_eval (lsp, QSE_LSP_CAR(QSE_LSP_CDR(args))); + if (tmp == QSE_NULL) { - ase_lsp_poptmp (lsp); /* tmp */ - return ASE_NULL; + qse_lsp_poptmp (lsp); /* tmp */ + return QSE_NULL; } - ase_lsp_poptmp (lsp); /* tmp */ + qse_lsp_poptmp (lsp); /* tmp */ return tmp; } else { - ase_lsp_obj_t* res = lsp->mem->nil; + qse_lsp_obj_t* res = lsp->mem->nil; int f = 0; - tmp = ASE_LSP_CDR(ASE_LSP_CDR(args)); + tmp = QSE_LSP_CDR(QSE_LSP_CDR(args)); - while (ASE_LSP_TYPE(tmp) == ASE_LSP_OBJ_CONS) + while (QSE_LSP_TYPE(tmp) == QSE_LSP_OBJ_CONS) { - res = ase_lsp_eval (lsp, ASE_LSP_CAR(tmp)); - if (res == ASE_NULL) + res = qse_lsp_eval (lsp, QSE_LSP_CAR(tmp)); + if (res == QSE_NULL) { - if (!f) ase_lsp_poptmp (lsp); /* res */ - ase_lsp_poptmp (lsp); /* tmp */ - return ASE_NULL; + if (!f) qse_lsp_poptmp (lsp); /* res */ + qse_lsp_poptmp (lsp); /* tmp */ + return QSE_NULL; } - if (!f) ase_lsp_poptmp (lsp); /* res */ - if (ase_lsp_pushtmp (lsp, res) == ASE_NULL) + if (!f) qse_lsp_poptmp (lsp); /* res */ + if (qse_lsp_pushtmp (lsp, res) == QSE_NULL) { - ase_lsp_poptmp (lsp); /* tmp */ - return ASE_NULL; + qse_lsp_poptmp (lsp); /* tmp */ + return QSE_NULL; } f = 1; - tmp = ASE_LSP_CDR(tmp); + tmp = QSE_LSP_CDR(tmp); } if (tmp != lsp->mem->nil) { - if (!f) ase_lsp_poptmp (lsp); /* ret */ - ase_lsp_poptmp (lsp); /* tmp */ + if (!f) qse_lsp_poptmp (lsp); /* ret */ + qse_lsp_poptmp (lsp); /* tmp */ - ase_lsp_seterror (lsp, ASE_LSP_EARGBAD, ASE_NULL, 0); - return ASE_NULL; + qse_lsp_seterror (lsp, QSE_LSP_EARGBAD, QSE_NULL, 0); + return QSE_NULL; } - if (!f) ase_lsp_poptmp (lsp); /* ret */ - ase_lsp_poptmp (lsp); /* tmp */ + if (!f) qse_lsp_poptmp (lsp); /* ret */ + qse_lsp_poptmp (lsp); /* tmp */ return res; } } -ase_lsp_obj_t* ase_lsp_prim_while (ase_lsp_t* lsp, ase_lsp_obj_t* args) +qse_lsp_obj_t* qse_lsp_prim_while (qse_lsp_t* lsp, qse_lsp_obj_t* args) { /* * (setq a 1) * (while (< a 100) (setq a (+ a 1))) */ - ase_lsp_obj_t* tmp; + qse_lsp_obj_t* tmp; - ASE_ASSERT (ASE_LSP_TYPE(args) == ASE_LSP_OBJ_CONS); + QSE_ASSERT (QSE_LSP_TYPE(args) == QSE_LSP_OBJ_CONS); while (1) { - tmp = ase_lsp_eval (lsp, ASE_LSP_CAR(args)); - if (tmp == ASE_NULL) return ASE_NULL; + tmp = qse_lsp_eval (lsp, QSE_LSP_CAR(args)); + if (tmp == QSE_NULL) return QSE_NULL; if (tmp == lsp->mem->nil) break; - if (ase_lsp_pushtmp (lsp, tmp) == ASE_NULL) return ASE_NULL; + if (qse_lsp_pushtmp (lsp, tmp) == QSE_NULL) return QSE_NULL; - tmp = ASE_LSP_CDR(args); - while (ASE_LSP_TYPE(tmp) == ASE_LSP_OBJ_CONS) + tmp = QSE_LSP_CDR(args); + while (QSE_LSP_TYPE(tmp) == QSE_LSP_OBJ_CONS) { - if (ase_lsp_eval(lsp, ASE_LSP_CAR(tmp)) == ASE_NULL) + if (qse_lsp_eval(lsp, QSE_LSP_CAR(tmp)) == QSE_NULL) { - ase_lsp_poptmp (lsp); /* tmp */ - return ASE_NULL; + qse_lsp_poptmp (lsp); /* tmp */ + return QSE_NULL; } - tmp = ASE_LSP_CDR(tmp); + tmp = QSE_LSP_CDR(tmp); } if (tmp != lsp->mem->nil) { - ase_lsp_poptmp (lsp); /* tmp */ + qse_lsp_poptmp (lsp); /* tmp */ - ase_lsp_seterror (lsp, ASE_LSP_EARGBAD, ASE_NULL, 0); - return ASE_NULL; + qse_lsp_seterror (lsp, QSE_LSP_EARGBAD, QSE_NULL, 0); + return QSE_NULL; } - ase_lsp_poptmp (lsp); /* tmp */ + qse_lsp_poptmp (lsp); /* tmp */ } return lsp->mem->nil; } -ase_lsp_obj_t* ase_lsp_prim_car (ase_lsp_t* lsp, ase_lsp_obj_t* args) +qse_lsp_obj_t* qse_lsp_prim_car (qse_lsp_t* lsp, qse_lsp_obj_t* args) { /* * (car '(10 20 30)) */ - ase_lsp_obj_t* tmp; + qse_lsp_obj_t* tmp; - ASE_ASSERT (ASE_LSP_TYPE(args) == ASE_LSP_OBJ_CONS); + QSE_ASSERT (QSE_LSP_TYPE(args) == QSE_LSP_OBJ_CONS); - tmp = ase_lsp_eval (lsp, ASE_LSP_CAR(args)); - if (tmp == ASE_NULL) return ASE_NULL; + tmp = qse_lsp_eval (lsp, QSE_LSP_CAR(args)); + if (tmp == QSE_NULL) return QSE_NULL; if (tmp == lsp->mem->nil) return lsp->mem->nil; - if (ASE_LSP_TYPE(tmp) != ASE_LSP_OBJ_CONS) + if (QSE_LSP_TYPE(tmp) != QSE_LSP_OBJ_CONS) { - ase_lsp_seterror (lsp, ASE_LSP_EARGBAD, ASE_NULL, 0); - return ASE_NULL; + qse_lsp_seterror (lsp, QSE_LSP_EARGBAD, QSE_NULL, 0); + return QSE_NULL; } - return ASE_LSP_CAR(tmp); + return QSE_LSP_CAR(tmp); } -ase_lsp_obj_t* ase_lsp_prim_cdr (ase_lsp_t* lsp, ase_lsp_obj_t* args) +qse_lsp_obj_t* qse_lsp_prim_cdr (qse_lsp_t* lsp, qse_lsp_obj_t* args) { /* * (cdr '(10 20 30)) */ - ase_lsp_obj_t* tmp; + qse_lsp_obj_t* tmp; - ASE_ASSERT (ASE_LSP_TYPE(args) == ASE_LSP_OBJ_CONS); + QSE_ASSERT (QSE_LSP_TYPE(args) == QSE_LSP_OBJ_CONS); - tmp = ase_lsp_eval (lsp, ASE_LSP_CAR(args)); - if (tmp == ASE_NULL) return ASE_NULL; + tmp = qse_lsp_eval (lsp, QSE_LSP_CAR(args)); + if (tmp == QSE_NULL) return QSE_NULL; if (tmp == lsp->mem->nil) return lsp->mem->nil; - if (ASE_LSP_TYPE(tmp) != ASE_LSP_OBJ_CONS) + if (QSE_LSP_TYPE(tmp) != QSE_LSP_OBJ_CONS) { - ase_lsp_seterror (lsp, ASE_LSP_EARGBAD, ASE_NULL, 0); - return ASE_NULL; + qse_lsp_seterror (lsp, QSE_LSP_EARGBAD, QSE_NULL, 0); + return QSE_NULL; } - return ASE_LSP_CDR(tmp); + return QSE_LSP_CDR(tmp); } -ase_lsp_obj_t* ase_lsp_prim_cons (ase_lsp_t* lsp, ase_lsp_obj_t* args) +qse_lsp_obj_t* qse_lsp_prim_cons (qse_lsp_t* lsp, qse_lsp_obj_t* args) { /* * (cons 10 20) * (cons '(10 20) 30) */ - ase_lsp_obj_t* car, * cdr, * cons; + qse_lsp_obj_t* car, * cdr, * cons; - ASE_ASSERT (ASE_LSP_TYPE(args) == ASE_LSP_OBJ_CONS); + QSE_ASSERT (QSE_LSP_TYPE(args) == QSE_LSP_OBJ_CONS); - car = ase_lsp_eval (lsp, ASE_LSP_CAR(args)); - if (car == ASE_NULL) return ASE_NULL; + car = qse_lsp_eval (lsp, QSE_LSP_CAR(args)); + if (car == QSE_NULL) return QSE_NULL; - if (ase_lsp_pushtmp (lsp, car) == ASE_NULL) return ASE_NULL; + if (qse_lsp_pushtmp (lsp, car) == QSE_NULL) return QSE_NULL; - cdr = ase_lsp_eval (lsp, ASE_LSP_CAR(ASE_LSP_CDR(args))); - if (cdr == ASE_NULL) + cdr = qse_lsp_eval (lsp, QSE_LSP_CAR(QSE_LSP_CDR(args))); + if (cdr == QSE_NULL) { - ase_lsp_poptmp (lsp); /* car */ - return ASE_NULL; + qse_lsp_poptmp (lsp); /* car */ + return QSE_NULL; } - if (ase_lsp_pushtmp (lsp, cdr) == ASE_NULL) + if (qse_lsp_pushtmp (lsp, cdr) == QSE_NULL) { - ase_lsp_poptmp (lsp); /* car */ - return ASE_NULL; + qse_lsp_poptmp (lsp); /* car */ + return QSE_NULL; } - cons = ase_lsp_makecons (lsp->mem, car, cdr); - if (cons == ASE_NULL) + cons = qse_lsp_makecons (lsp->mem, car, cdr); + if (cons == QSE_NULL) { - ase_lsp_poptmp (lsp); /* cdr */ - ase_lsp_poptmp (lsp); /* car */ - return ASE_NULL; + qse_lsp_poptmp (lsp); /* cdr */ + qse_lsp_poptmp (lsp); /* car */ + return QSE_NULL; } - ase_lsp_poptmp (lsp); /* cdr */ - ase_lsp_poptmp (lsp); /* car */ + qse_lsp_poptmp (lsp); /* cdr */ + qse_lsp_poptmp (lsp); /* car */ return cons; } -ase_lsp_obj_t* ase_lsp_prim_length (ase_lsp_t* lsp, ase_lsp_obj_t* args) +qse_lsp_obj_t* qse_lsp_prim_length (qse_lsp_t* lsp, qse_lsp_obj_t* args) { - ase_lsp_obj_t* body, * tmp; - ase_long_t len = 0; + qse_lsp_obj_t* body, * tmp; + qse_long_t len = 0; - ASE_ASSERT (ASE_LSP_TYPE(args) == ASE_LSP_OBJ_CONS); + QSE_ASSERT (QSE_LSP_TYPE(args) == QSE_LSP_OBJ_CONS); body = args; - while (ASE_LSP_TYPE(body) == ASE_LSP_OBJ_CONS) + while (QSE_LSP_TYPE(body) == QSE_LSP_OBJ_CONS) { - tmp = ase_lsp_eval (lsp, ASE_LSP_CAR(body)); - if (tmp == ASE_NULL) return ASE_NULL; + tmp = qse_lsp_eval (lsp, QSE_LSP_CAR(body)); + if (tmp == QSE_NULL) return QSE_NULL; - if (ASE_LSP_TYPE(tmp) == ASE_LSP_OBJ_NIL) + if (QSE_LSP_TYPE(tmp) == QSE_LSP_OBJ_NIL) { len = 0; } - else if (ASE_LSP_TYPE(tmp) == ASE_LSP_OBJ_STR) + else if (QSE_LSP_TYPE(tmp) == QSE_LSP_OBJ_STR) { - len = ASE_LSP_STRLEN(tmp); + len = QSE_LSP_STRLEN(tmp); } - else if (ASE_LSP_TYPE(tmp) == ASE_LSP_OBJ_SYM) + else if (QSE_LSP_TYPE(tmp) == QSE_LSP_OBJ_SYM) { - len = ASE_LSP_SYMLEN(tmp); + len = QSE_LSP_SYMLEN(tmp); } - else if (ASE_LSP_TYPE(tmp) == ASE_LSP_OBJ_CONS) + else if (QSE_LSP_TYPE(tmp) == QSE_LSP_OBJ_CONS) { len = 0; do { len++; - tmp = ASE_LSP_CDR(tmp); + tmp = QSE_LSP_CDR(tmp); } - while (ASE_LSP_TYPE(tmp) == ASE_LSP_OBJ_CONS); + while (QSE_LSP_TYPE(tmp) == QSE_LSP_OBJ_CONS); /* TODO: more flexible without the check below? * both of the following expression evalute @@ -406,26 +406,26 @@ ase_lsp_obj_t* ase_lsp_prim_length (ase_lsp_t* lsp, ase_lsp_obj_t* args) * (length '(9 9 9 . 9)) * (length '(9 9 9)) */ - if (ASE_LSP_TYPE(tmp) != ASE_LSP_OBJ_NIL) + if (QSE_LSP_TYPE(tmp) != QSE_LSP_OBJ_NIL) { - ase_lsp_seterror (lsp, ASE_LSP_EVALBAD, ASE_NULL, 0); - return ASE_NULL; + qse_lsp_seterror (lsp, QSE_LSP_EVALBAD, QSE_NULL, 0); + return QSE_NULL; } } else { - ase_lsp_seterror (lsp, ASE_LSP_EVALBAD, ASE_NULL, 0); - return ASE_NULL; + qse_lsp_seterror (lsp, QSE_LSP_EVALBAD, QSE_NULL, 0); + return QSE_NULL; } - body = ASE_LSP_CDR(body); + body = QSE_LSP_CDR(body); } - ASE_ASSERT (body == lsp->mem->nil); - return ase_lsp_makeintobj (lsp->mem, len); + QSE_ASSERT (body == lsp->mem->nil); + return qse_lsp_makeintobj (lsp->mem, len); } -ase_lsp_obj_t* ase_lsp_prim_set (ase_lsp_t* lsp, ase_lsp_obj_t* args) +qse_lsp_obj_t* qse_lsp_prim_set (qse_lsp_t* lsp, qse_lsp_obj_t* args) { /* * (set 'flowers 'rose) @@ -433,103 +433,103 @@ ase_lsp_obj_t* ase_lsp_prim_set (ase_lsp_t* lsp, ase_lsp_obj_t* args) * rose */ - ase_lsp_obj_t* p1, * p2; + qse_lsp_obj_t* p1, * p2; - ASE_ASSERT (ASE_LSP_TYPE(args) == ASE_LSP_OBJ_CONS); + QSE_ASSERT (QSE_LSP_TYPE(args) == QSE_LSP_OBJ_CONS); - p1 = ase_lsp_eval (lsp, ASE_LSP_CAR(args)); - if (p1 == ASE_NULL) return ASE_NULL; + p1 = qse_lsp_eval (lsp, QSE_LSP_CAR(args)); + if (p1 == QSE_NULL) return QSE_NULL; - if (ase_lsp_pushtmp (lsp, p1) == ASE_NULL) return ASE_NULL; + if (qse_lsp_pushtmp (lsp, p1) == QSE_NULL) return QSE_NULL; - if (ASE_LSP_TYPE(p1) != ASE_LSP_OBJ_SYM) + if (QSE_LSP_TYPE(p1) != QSE_LSP_OBJ_SYM) { - ase_lsp_poptmp (lsp); /* p1 */ + qse_lsp_poptmp (lsp); /* p1 */ - ase_lsp_seterror (lsp, ASE_LSP_EARGBAD, ASE_NULL, 0); - return ASE_NULL; + qse_lsp_seterror (lsp, QSE_LSP_EARGBAD, QSE_NULL, 0); + return QSE_NULL; } - p2 = ase_lsp_eval (lsp, ASE_LSP_CAR(ASE_LSP_CDR(args))); - if (p2 == ASE_NULL) + p2 = qse_lsp_eval (lsp, QSE_LSP_CAR(QSE_LSP_CDR(args))); + if (p2 == QSE_NULL) { - ase_lsp_poptmp (lsp); /* p1 */ - return ASE_NULL; + qse_lsp_poptmp (lsp); /* p1 */ + return QSE_NULL; } - if (ase_lsp_pushtmp (lsp, p2) == ASE_NULL) + if (qse_lsp_pushtmp (lsp, p2) == QSE_NULL) { - ase_lsp_poptmp (lsp); /* p1 */ - return ASE_NULL; + qse_lsp_poptmp (lsp); /* p1 */ + return QSE_NULL; } - if (ase_lsp_setvalue (lsp->mem, p1, p2) == ASE_NULL) + if (qse_lsp_setvalue (lsp->mem, p1, p2) == QSE_NULL) { - ase_lsp_poptmp (lsp); /* p2 */ - ase_lsp_poptmp (lsp); /* p1 */ - return ASE_NULL; + qse_lsp_poptmp (lsp); /* p2 */ + qse_lsp_poptmp (lsp); /* p1 */ + return QSE_NULL; } - ase_lsp_poptmp (lsp); /* p2 */ - ase_lsp_poptmp (lsp); /* p1 */ + qse_lsp_poptmp (lsp); /* p2 */ + qse_lsp_poptmp (lsp); /* p1 */ return p2; } -ase_lsp_obj_t* ase_lsp_prim_setq (ase_lsp_t* lsp, ase_lsp_obj_t* args) +qse_lsp_obj_t* qse_lsp_prim_setq (qse_lsp_t* lsp, qse_lsp_obj_t* args) { /* * (setq x 10) * (setq x "string") */ - ase_lsp_obj_t* p = args, * p1, * p2 = lsp->mem->nil; + qse_lsp_obj_t* p = args, * p1, * p2 = lsp->mem->nil; while (p != lsp->mem->nil) { - ASE_ASSERT (ASE_LSP_TYPE(p) == ASE_LSP_OBJ_CONS); + QSE_ASSERT (QSE_LSP_TYPE(p) == QSE_LSP_OBJ_CONS); - p1 = ASE_LSP_CAR(p); - if (ASE_LSP_TYPE(p1) != ASE_LSP_OBJ_SYM) + p1 = QSE_LSP_CAR(p); + if (QSE_LSP_TYPE(p1) != QSE_LSP_OBJ_SYM) { - ase_lsp_seterror (lsp, ASE_LSP_EARGBAD, ASE_NULL, 0); - return ASE_NULL; + qse_lsp_seterror (lsp, QSE_LSP_EARGBAD, QSE_NULL, 0); + return QSE_NULL; } - if (ASE_LSP_TYPE(ASE_LSP_CDR(p)) != ASE_LSP_OBJ_CONS) + if (QSE_LSP_TYPE(QSE_LSP_CDR(p)) != QSE_LSP_OBJ_CONS) { - lsp->errnum = ASE_LSP_EARGFEW; - return ASE_NULL; + lsp->errnum = QSE_LSP_EARGFEW; + return QSE_NULL; } - p2 = ase_lsp_eval (lsp, ASE_LSP_CAR(ASE_LSP_CDR(p))); - if (p2 == ASE_NULL) return ASE_NULL; + p2 = qse_lsp_eval (lsp, QSE_LSP_CAR(QSE_LSP_CDR(p))); + if (p2 == QSE_NULL) return QSE_NULL; - if (ase_lsp_pushtmp (lsp, p2) == ASE_NULL) return ASE_NULL; + if (qse_lsp_pushtmp (lsp, p2) == QSE_NULL) return QSE_NULL; - if (ase_lsp_setvalue (lsp->mem, p1, p2) == ASE_NULL) + if (qse_lsp_setvalue (lsp->mem, p1, p2) == QSE_NULL) { - ase_lsp_poptmp (lsp); - return ASE_NULL; + qse_lsp_poptmp (lsp); + return QSE_NULL; } - ase_lsp_poptmp (lsp); - p = ASE_LSP_CDR(ASE_LSP_CDR(p)); + qse_lsp_poptmp (lsp); + p = QSE_LSP_CDR(QSE_LSP_CDR(p)); } return p2; } -ase_lsp_obj_t* ase_lsp_prim_quote (ase_lsp_t* lsp, ase_lsp_obj_t* args) +qse_lsp_obj_t* qse_lsp_prim_quote (qse_lsp_t* lsp, qse_lsp_obj_t* args) { /* * (quote (10 20 30 50)) */ - ASE_ASSERT (ASE_LSP_TYPE(args) == ASE_LSP_OBJ_CONS); - return ASE_LSP_CAR(args); + QSE_ASSERT (QSE_LSP_TYPE(args) == QSE_LSP_OBJ_CONS); + return QSE_LSP_CAR(args); } -ase_lsp_obj_t* ase_lsp_prim_defun (ase_lsp_t* lsp, ase_lsp_obj_t* args) +qse_lsp_obj_t* qse_lsp_prim_defun (qse_lsp_t* lsp, qse_lsp_obj_t* args) { /* * (defun x (a b) (+ a b 100)) @@ -540,80 +540,80 @@ ase_lsp_obj_t* ase_lsp_prim_defun (ase_lsp_t* lsp, ase_lsp_obj_t* args) * temp */ - ase_lsp_obj_t* name, * fun; + qse_lsp_obj_t* name, * fun; - name = ASE_LSP_CAR(args); - if (ASE_LSP_TYPE(name) != ASE_LSP_OBJ_SYM) + name = QSE_LSP_CAR(args); + if (QSE_LSP_TYPE(name) != QSE_LSP_OBJ_SYM) { - ase_lsp_seterror (lsp, ASE_LSP_EARGBAD, ASE_NULL, 0); - return ASE_NULL; + qse_lsp_seterror (lsp, QSE_LSP_EARGBAD, QSE_NULL, 0); + return QSE_NULL; } - fun = ase_lsp_makefunc (lsp->mem, - ASE_LSP_CAR(ASE_LSP_CDR(args)), ASE_LSP_CDR(ASE_LSP_CDR(args))); - if (fun == ASE_NULL) return ASE_NULL; + fun = qse_lsp_makefunc (lsp->mem, + QSE_LSP_CAR(QSE_LSP_CDR(args)), QSE_LSP_CDR(QSE_LSP_CDR(args))); + if (fun == QSE_NULL) return QSE_NULL; - if (ase_lsp_pushtmp (lsp, fun) == ASE_NULL) return ASE_NULL; + if (qse_lsp_pushtmp (lsp, fun) == QSE_NULL) return QSE_NULL; - if (ase_lsp_setfunc (lsp->mem, ASE_LSP_CAR(args), fun) == ASE_NULL) + if (qse_lsp_setfunc (lsp->mem, QSE_LSP_CAR(args), fun) == QSE_NULL) { - ase_lsp_poptmp (lsp); - return ASE_NULL; + qse_lsp_poptmp (lsp); + return QSE_NULL; } - ase_lsp_poptmp (lsp); + qse_lsp_poptmp (lsp); return fun; } -ase_lsp_obj_t* ase_lsp_prim_demac (ase_lsp_t* lsp, ase_lsp_obj_t* args) +qse_lsp_obj_t* qse_lsp_prim_demac (qse_lsp_t* lsp, qse_lsp_obj_t* args) { /* * (demac x (abc) x y z) * (setq x (macro (abc) x y z)) */ - ase_lsp_obj_t* name, * mac; + qse_lsp_obj_t* name, * mac; - name = ASE_LSP_CAR(args); - if (ASE_LSP_TYPE(name) != ASE_LSP_OBJ_SYM) + name = QSE_LSP_CAR(args); + if (QSE_LSP_TYPE(name) != QSE_LSP_OBJ_SYM) { - ase_lsp_seterror (lsp, ASE_LSP_EARGBAD, ASE_NULL, 0); - return ASE_NULL; + qse_lsp_seterror (lsp, QSE_LSP_EARGBAD, QSE_NULL, 0); + return QSE_NULL; } - mac = ase_lsp_makemacro (lsp->mem, - ASE_LSP_CAR(ASE_LSP_CDR(args)), ASE_LSP_CDR(ASE_LSP_CDR(args))); - if (mac == ASE_NULL) return ASE_NULL; + mac = qse_lsp_makemacro (lsp->mem, + QSE_LSP_CAR(QSE_LSP_CDR(args)), QSE_LSP_CDR(QSE_LSP_CDR(args))); + if (mac == QSE_NULL) return QSE_NULL; - if (ase_lsp_pushtmp (lsp, mac) == ASE_NULL) return ASE_NULL; + if (qse_lsp_pushtmp (lsp, mac) == QSE_NULL) return QSE_NULL; - if (ase_lsp_setfunc (lsp->mem, ASE_LSP_CAR(args), mac) == ASE_NULL) + if (qse_lsp_setfunc (lsp->mem, QSE_LSP_CAR(args), mac) == QSE_NULL) { - ase_lsp_poptmp (lsp); - return ASE_NULL; + qse_lsp_poptmp (lsp); + return QSE_NULL; } - ase_lsp_poptmp (lsp); + qse_lsp_poptmp (lsp); return mac; } -ase_lsp_obj_t* ase_lsp_prim_or (ase_lsp_t* lsp, ase_lsp_obj_t* args) +qse_lsp_obj_t* qse_lsp_prim_or (qse_lsp_t* lsp, qse_lsp_obj_t* args) { /* * (or 10 20 30 40) * (or (= n 20) (= n 30)) */ - ase_lsp_obj_t* tmp; + qse_lsp_obj_t* tmp; /* TODO: this is wrong. redo the work */ - while (ASE_LSP_TYPE(args) == ASE_LSP_OBJ_CONS) + while (QSE_LSP_TYPE(args) == QSE_LSP_OBJ_CONS) { - tmp = ase_lsp_eval (lsp, ASE_LSP_CAR(args)); - if (tmp == ASE_NULL) return ASE_NULL; + tmp = qse_lsp_eval (lsp, QSE_LSP_CAR(args)); + if (tmp == QSE_NULL) return QSE_NULL; - if (ASE_LSP_TYPE(args) == ASE_LSP_OBJ_INT) + if (QSE_LSP_TYPE(args) == QSE_LSP_OBJ_INT) if (tmp != lsp->mem->nil) return lsp->mem->t; - args = ASE_LSP_CDR(args); + args = QSE_LSP_CDR(args); } return lsp->mem->nil; diff --git a/qse/lib/lsp/prim.h b/qse/lib/lsp/prim.h index 03f0ccd2..9f5c5a34 100644 --- a/qse/lib/lsp/prim.h +++ b/qse/lib/lsp/prim.h @@ -4,63 +4,63 @@ * {License} */ -#ifndef _ASE_LSP_PRIM_H_ -#define _ASE_LSP_PRIM_H_ +#ifndef _QSE_LSP_PRIM_H_ +#define _QSE_LSP_PRIM_H_ -#ifndef _ASE_LSP_LSP_H_ -#error Never include this file directly. Include instead +#ifndef _QSE_LSP_LSP_H_ +#error Never include this file directly. Include instead #endif #ifdef __cplusplus extern "C" { #endif -ase_lsp_obj_t* ase_lsp_prim_exit (ase_lsp_t* lsp, ase_lsp_obj_t* args); -ase_lsp_obj_t* ase_lsp_prim_eval (ase_lsp_t* lsp, ase_lsp_obj_t* args); -ase_lsp_obj_t* ase_lsp_prim_prog1 (ase_lsp_t* lsp, ase_lsp_obj_t* args); -ase_lsp_obj_t* ase_lsp_prim_progn (ase_lsp_t* lsp, ase_lsp_obj_t* args); -ase_lsp_obj_t* ase_lsp_prim_gc (ase_lsp_t* lsp, ase_lsp_obj_t* args); -ase_lsp_obj_t* ase_lsp_prim_cond (ase_lsp_t* lsp, ase_lsp_obj_t* args); -ase_lsp_obj_t* ase_lsp_prim_if (ase_lsp_t* lsp, ase_lsp_obj_t* args); -ase_lsp_obj_t* ase_lsp_prim_while (ase_lsp_t* lsp, ase_lsp_obj_t* args); +qse_lsp_obj_t* qse_lsp_prim_exit (qse_lsp_t* lsp, qse_lsp_obj_t* args); +qse_lsp_obj_t* qse_lsp_prim_eval (qse_lsp_t* lsp, qse_lsp_obj_t* args); +qse_lsp_obj_t* qse_lsp_prim_prog1 (qse_lsp_t* lsp, qse_lsp_obj_t* args); +qse_lsp_obj_t* qse_lsp_prim_progn (qse_lsp_t* lsp, qse_lsp_obj_t* args); +qse_lsp_obj_t* qse_lsp_prim_gc (qse_lsp_t* lsp, qse_lsp_obj_t* args); +qse_lsp_obj_t* qse_lsp_prim_cond (qse_lsp_t* lsp, qse_lsp_obj_t* args); +qse_lsp_obj_t* qse_lsp_prim_if (qse_lsp_t* lsp, qse_lsp_obj_t* args); +qse_lsp_obj_t* qse_lsp_prim_while (qse_lsp_t* lsp, qse_lsp_obj_t* args); -ase_lsp_obj_t* ase_lsp_prim_car (ase_lsp_t* lsp, ase_lsp_obj_t* args); -ase_lsp_obj_t* ase_lsp_prim_cdr (ase_lsp_t* lsp, ase_lsp_obj_t* args); -ase_lsp_obj_t* ase_lsp_prim_cons (ase_lsp_t* lsp, ase_lsp_obj_t* args); -ase_lsp_obj_t* ase_lsp_prim_length (ase_lsp_t* lsp, ase_lsp_obj_t* args); +qse_lsp_obj_t* qse_lsp_prim_car (qse_lsp_t* lsp, qse_lsp_obj_t* args); +qse_lsp_obj_t* qse_lsp_prim_cdr (qse_lsp_t* lsp, qse_lsp_obj_t* args); +qse_lsp_obj_t* qse_lsp_prim_cons (qse_lsp_t* lsp, qse_lsp_obj_t* args); +qse_lsp_obj_t* qse_lsp_prim_length (qse_lsp_t* lsp, qse_lsp_obj_t* args); -ase_lsp_obj_t* ase_lsp_prim_set (ase_lsp_t* lsp, ase_lsp_obj_t* args); -ase_lsp_obj_t* ase_lsp_prim_setq (ase_lsp_t* lsp, ase_lsp_obj_t* args); -ase_lsp_obj_t* ase_lsp_prim_quote (ase_lsp_t* lsp, ase_lsp_obj_t* args); -ase_lsp_obj_t* ase_lsp_prim_defun (ase_lsp_t* lsp, ase_lsp_obj_t* args); -ase_lsp_obj_t* ase_lsp_prim_demac (ase_lsp_t* lsp, ase_lsp_obj_t* args); -ase_lsp_obj_t* ase_lsp_prim_let (ase_lsp_t* lsp, ase_lsp_obj_t* args); -ase_lsp_obj_t* ase_lsp_prim_letx (ase_lsp_t* lsp, ase_lsp_obj_t* args); -ase_lsp_obj_t* ase_lsp_prim_or (ase_lsp_t* lsp, ase_lsp_obj_t* args); +qse_lsp_obj_t* qse_lsp_prim_set (qse_lsp_t* lsp, qse_lsp_obj_t* args); +qse_lsp_obj_t* qse_lsp_prim_setq (qse_lsp_t* lsp, qse_lsp_obj_t* args); +qse_lsp_obj_t* qse_lsp_prim_quote (qse_lsp_t* lsp, qse_lsp_obj_t* args); +qse_lsp_obj_t* qse_lsp_prim_defun (qse_lsp_t* lsp, qse_lsp_obj_t* args); +qse_lsp_obj_t* qse_lsp_prim_demac (qse_lsp_t* lsp, qse_lsp_obj_t* args); +qse_lsp_obj_t* qse_lsp_prim_let (qse_lsp_t* lsp, qse_lsp_obj_t* args); +qse_lsp_obj_t* qse_lsp_prim_letx (qse_lsp_t* lsp, qse_lsp_obj_t* args); +qse_lsp_obj_t* qse_lsp_prim_or (qse_lsp_t* lsp, qse_lsp_obj_t* args); /*--------------------- prim_compar.c ---------------------*/ -ase_lsp_obj_t* ase_lsp_prim_eq (ase_lsp_t* lsp, ase_lsp_obj_t* args); -ase_lsp_obj_t* ase_lsp_prim_ne (ase_lsp_t* lsp, ase_lsp_obj_t* args); -ase_lsp_obj_t* ase_lsp_prim_gt (ase_lsp_t* lsp, ase_lsp_obj_t* args); -ase_lsp_obj_t* ase_lsp_prim_lt (ase_lsp_t* lsp, ase_lsp_obj_t* args); -ase_lsp_obj_t* ase_lsp_prim_ge (ase_lsp_t* lsp, ase_lsp_obj_t* args); -ase_lsp_obj_t* ase_lsp_prim_le (ase_lsp_t* lsp, ase_lsp_obj_t* args); +qse_lsp_obj_t* qse_lsp_prim_eq (qse_lsp_t* lsp, qse_lsp_obj_t* args); +qse_lsp_obj_t* qse_lsp_prim_ne (qse_lsp_t* lsp, qse_lsp_obj_t* args); +qse_lsp_obj_t* qse_lsp_prim_gt (qse_lsp_t* lsp, qse_lsp_obj_t* args); +qse_lsp_obj_t* qse_lsp_prim_lt (qse_lsp_t* lsp, qse_lsp_obj_t* args); +qse_lsp_obj_t* qse_lsp_prim_ge (qse_lsp_t* lsp, qse_lsp_obj_t* args); +qse_lsp_obj_t* qse_lsp_prim_le (qse_lsp_t* lsp, qse_lsp_obj_t* args); /*--------------------- prim_math.c ---------------------*/ -ase_lsp_obj_t* ase_lsp_prim_plus (ase_lsp_t* lsp, ase_lsp_obj_t* args); -ase_lsp_obj_t* ase_lsp_prim_minus (ase_lsp_t* lsp, ase_lsp_obj_t* args); -ase_lsp_obj_t* ase_lsp_prim_mul (ase_lsp_t* lsp, ase_lsp_obj_t* args); -ase_lsp_obj_t* ase_lsp_prim_div (ase_lsp_t* lsp, ase_lsp_obj_t* args); -ase_lsp_obj_t* ase_lsp_prim_mod (ase_lsp_t* lsp, ase_lsp_obj_t* args); +qse_lsp_obj_t* qse_lsp_prim_plus (qse_lsp_t* lsp, qse_lsp_obj_t* args); +qse_lsp_obj_t* qse_lsp_prim_minus (qse_lsp_t* lsp, qse_lsp_obj_t* args); +qse_lsp_obj_t* qse_lsp_prim_mul (qse_lsp_t* lsp, qse_lsp_obj_t* args); +qse_lsp_obj_t* qse_lsp_prim_div (qse_lsp_t* lsp, qse_lsp_obj_t* args); +qse_lsp_obj_t* qse_lsp_prim_mod (qse_lsp_t* lsp, qse_lsp_obj_t* args); /*--------------------- prim_fact.c ---------------------*/ -ase_lsp_obj_t* ase_lsp_prim_fact (ase_lsp_t* lsp, ase_lsp_obj_t* args); +qse_lsp_obj_t* qse_lsp_prim_fact (qse_lsp_t* lsp, qse_lsp_obj_t* args); #ifdef __cplusplus } diff --git a/qse/lib/lsp/prim_compar.c b/qse/lib/lsp/prim_compar.c index 6267d096..2b637740 100644 --- a/qse/lib/lsp/prim_compar.c +++ b/qse/lib/lsp/prim_compar.c @@ -8,134 +8,134 @@ #define PRIM_COMPAR(lsp,args,op) \ { \ - ase_lsp_obj_t* p1, * p2; \ + qse_lsp_obj_t* p1, * p2; \ int res; \ - ASE_ASSERT (ASE_LSP_TYPE(args) == ASE_LSP_OBJ_CONS); \ + QSE_ASSERT (QSE_LSP_TYPE(args) == QSE_LSP_OBJ_CONS); \ \ - p1 = ase_lsp_eval (lsp, ASE_LSP_CAR(args)); \ - if (p1 == ASE_NULL) return ASE_NULL; \ - if (ase_lsp_pushtmp (lsp, p1) == ASE_NULL) return ASE_NULL; \ + p1 = qse_lsp_eval (lsp, QSE_LSP_CAR(args)); \ + if (p1 == QSE_NULL) return QSE_NULL; \ + if (qse_lsp_pushtmp (lsp, p1) == QSE_NULL) return QSE_NULL; \ \ - p2 = ase_lsp_eval (lsp, ASE_LSP_CAR(ASE_LSP_CDR(args))); \ - if (p2 == ASE_NULL) \ + p2 = qse_lsp_eval (lsp, QSE_LSP_CAR(QSE_LSP_CDR(args))); \ + if (p2 == QSE_NULL) \ { \ - ase_lsp_poptmp (lsp); \ - return ASE_NULL; \ + qse_lsp_poptmp (lsp); \ + return QSE_NULL; \ } \ \ - if (ase_lsp_pushtmp (lsp, p2) == ASE_NULL) \ + if (qse_lsp_pushtmp (lsp, p2) == QSE_NULL) \ { \ - ase_lsp_poptmp (lsp); \ - return ASE_NULL; \ + qse_lsp_poptmp (lsp); \ + return QSE_NULL; \ } \ \ - if (ASE_LSP_TYPE(p1) == ASE_LSP_OBJ_INT) \ + if (QSE_LSP_TYPE(p1) == QSE_LSP_OBJ_INT) \ { \ - if (ASE_LSP_TYPE(p2) == ASE_LSP_OBJ_INT) \ + if (QSE_LSP_TYPE(p2) == QSE_LSP_OBJ_INT) \ { \ - res = ASE_LSP_IVAL(p1) op ASE_LSP_IVAL(p2); \ + res = QSE_LSP_IVAL(p1) op QSE_LSP_IVAL(p2); \ } \ - else if (ASE_LSP_TYPE(p2) == ASE_LSP_OBJ_REAL) \ + else if (QSE_LSP_TYPE(p2) == QSE_LSP_OBJ_REAL) \ { \ - res = ASE_LSP_IVAL(p1) op ASE_LSP_RVAL(p2); \ + res = QSE_LSP_IVAL(p1) op QSE_LSP_RVAL(p2); \ } \ else \ { \ - ase_lsp_poptmp (lsp); \ - ase_lsp_poptmp (lsp); \ - ase_lsp_seterror (lsp, ASE_LSP_EVALBAD, ASE_NULL, 0); \ - return ASE_NULL; \ + qse_lsp_poptmp (lsp); \ + qse_lsp_poptmp (lsp); \ + qse_lsp_seterror (lsp, QSE_LSP_EVALBAD, QSE_NULL, 0); \ + return QSE_NULL; \ } \ } \ - else if (ASE_LSP_TYPE(p1) == ASE_LSP_OBJ_REAL) \ + else if (QSE_LSP_TYPE(p1) == QSE_LSP_OBJ_REAL) \ { \ - if (ASE_LSP_TYPE(p2) == ASE_LSP_OBJ_INT) \ + if (QSE_LSP_TYPE(p2) == QSE_LSP_OBJ_INT) \ { \ - res = ASE_LSP_RVAL(p1) op ASE_LSP_IVAL(p2); \ + res = QSE_LSP_RVAL(p1) op QSE_LSP_IVAL(p2); \ } \ - else if (ASE_LSP_TYPE(p2) == ASE_LSP_OBJ_REAL) \ + else if (QSE_LSP_TYPE(p2) == QSE_LSP_OBJ_REAL) \ { \ - res = ASE_LSP_RVAL(p1) op ASE_LSP_RVAL(p2); \ + res = QSE_LSP_RVAL(p1) op QSE_LSP_RVAL(p2); \ } \ else \ { \ - ase_lsp_poptmp (lsp); \ - ase_lsp_poptmp (lsp); \ - ase_lsp_seterror (lsp, ASE_LSP_EVALBAD, ASE_NULL, 0); \ - return ASE_NULL; \ + qse_lsp_poptmp (lsp); \ + qse_lsp_poptmp (lsp); \ + qse_lsp_seterror (lsp, QSE_LSP_EVALBAD, QSE_NULL, 0); \ + return QSE_NULL; \ } \ } \ - else if (ASE_LSP_TYPE(p1) == ASE_LSP_OBJ_SYM) \ + else if (QSE_LSP_TYPE(p1) == QSE_LSP_OBJ_SYM) \ { \ - if (ASE_LSP_TYPE(p2) == ASE_LSP_OBJ_SYM) \ + if (QSE_LSP_TYPE(p2) == QSE_LSP_OBJ_SYM) \ { \ - res = ase_strxncmp ( \ - ASE_LSP_SYMPTR(p1), ASE_LSP_SYMLEN(p1), \ - ASE_LSP_SYMPTR(p2), ASE_LSP_SYMLEN(p2)) op 0; \ + res = qse_strxncmp ( \ + QSE_LSP_SYMPTR(p1), QSE_LSP_SYMLEN(p1), \ + QSE_LSP_SYMPTR(p2), QSE_LSP_SYMLEN(p2)) op 0; \ } \ else \ { \ - ase_lsp_poptmp (lsp); \ - ase_lsp_poptmp (lsp); \ - ase_lsp_seterror (lsp, ASE_LSP_EVALBAD, ASE_NULL, 0); \ - return ASE_NULL; \ + qse_lsp_poptmp (lsp); \ + qse_lsp_poptmp (lsp); \ + qse_lsp_seterror (lsp, QSE_LSP_EVALBAD, QSE_NULL, 0); \ + return QSE_NULL; \ } \ } \ - else if (ASE_LSP_TYPE(p1) == ASE_LSP_OBJ_STR) \ + else if (QSE_LSP_TYPE(p1) == QSE_LSP_OBJ_STR) \ { \ - if (ASE_LSP_TYPE(p2) == ASE_LSP_OBJ_STR) \ + if (QSE_LSP_TYPE(p2) == QSE_LSP_OBJ_STR) \ { \ - res = ase_strxncmp ( \ - ASE_LSP_STRPTR(p1), ASE_LSP_STRLEN(p1), \ - ASE_LSP_STRPTR(p2), ASE_LSP_STRLEN(p2)) op 0; \ + res = qse_strxncmp ( \ + QSE_LSP_STRPTR(p1), QSE_LSP_STRLEN(p1), \ + QSE_LSP_STRPTR(p2), QSE_LSP_STRLEN(p2)) op 0; \ } \ else \ { \ - ase_lsp_poptmp (lsp); \ - ase_lsp_poptmp (lsp); \ - ase_lsp_seterror (lsp, ASE_LSP_EVALBAD, ASE_NULL, 0); \ - return ASE_NULL; \ + qse_lsp_poptmp (lsp); \ + qse_lsp_poptmp (lsp); \ + qse_lsp_seterror (lsp, QSE_LSP_EVALBAD, QSE_NULL, 0); \ + return QSE_NULL; \ } \ } \ else \ { \ - ase_lsp_poptmp (lsp); \ - ase_lsp_poptmp (lsp); \ - ase_lsp_seterror (lsp, ASE_LSP_EVALBAD, ASE_NULL, 0); \ - return ASE_NULL; \ + qse_lsp_poptmp (lsp); \ + qse_lsp_poptmp (lsp); \ + qse_lsp_seterror (lsp, QSE_LSP_EVALBAD, QSE_NULL, 0); \ + return QSE_NULL; \ } \ \ - ase_lsp_poptmp (lsp); \ - ase_lsp_poptmp (lsp); \ + qse_lsp_poptmp (lsp); \ + qse_lsp_poptmp (lsp); \ return (res)? lsp->mem->t: lsp->mem->nil; \ } -ase_lsp_obj_t* ase_lsp_prim_eq (ase_lsp_t* lsp, ase_lsp_obj_t* args) +qse_lsp_obj_t* qse_lsp_prim_eq (qse_lsp_t* lsp, qse_lsp_obj_t* args) { PRIM_COMPAR (lsp, args, ==); } -ase_lsp_obj_t* ase_lsp_prim_ne (ase_lsp_t* lsp, ase_lsp_obj_t* args) +qse_lsp_obj_t* qse_lsp_prim_ne (qse_lsp_t* lsp, qse_lsp_obj_t* args) { PRIM_COMPAR (lsp, args, !=); } -ase_lsp_obj_t* ase_lsp_prim_gt (ase_lsp_t* lsp, ase_lsp_obj_t* args) +qse_lsp_obj_t* qse_lsp_prim_gt (qse_lsp_t* lsp, qse_lsp_obj_t* args) { PRIM_COMPAR (lsp, args, >); } -ase_lsp_obj_t* ase_lsp_prim_lt (ase_lsp_t* lsp, ase_lsp_obj_t* args) +qse_lsp_obj_t* qse_lsp_prim_lt (qse_lsp_t* lsp, qse_lsp_obj_t* args) { PRIM_COMPAR (lsp, args, <); } -ase_lsp_obj_t* ase_lsp_prim_ge (ase_lsp_t* lsp, ase_lsp_obj_t* args) +qse_lsp_obj_t* qse_lsp_prim_ge (qse_lsp_t* lsp, qse_lsp_obj_t* args) { PRIM_COMPAR (lsp, args, >=); } -ase_lsp_obj_t* ase_lsp_prim_le (ase_lsp_t* lsp, ase_lsp_obj_t* args) +qse_lsp_obj_t* qse_lsp_prim_le (qse_lsp_t* lsp, qse_lsp_obj_t* args) { PRIM_COMPAR (lsp, args, <=); } diff --git a/qse/lib/lsp/prim_let.c b/qse/lib/lsp/prim_let.c index 4535a6fe..74226d4a 100644 --- a/qse/lib/lsp/prim_let.c +++ b/qse/lib/lsp/prim_let.c @@ -13,17 +13,17 @@ * body...) */ -static ase_lsp_obj_t* __prim_let ( - ase_lsp_t* lsp, ase_lsp_obj_t* args, int sequential) +static qse_lsp_obj_t* __prim_let ( + qse_lsp_t* lsp, qse_lsp_obj_t* args, int sequential) { - ase_lsp_frame_t* frame; - ase_lsp_obj_t* assoc; - ase_lsp_obj_t* body; - ase_lsp_obj_t* value; + qse_lsp_frame_t* frame; + qse_lsp_obj_t* assoc; + qse_lsp_obj_t* body; + qse_lsp_obj_t* value; /* create a new frameq */ - frame = ase_lsp_newframe (lsp); - if (frame == ASE_NULL) return ASE_NULL; + frame = qse_lsp_newframe (lsp); + if (frame == QSE_NULL) return QSE_NULL; /*frame->link = lsp->mem->frame;*/ if (sequential) @@ -37,104 +37,104 @@ static ase_lsp_obj_t* __prim_let ( lsp->mem->brooding_frame = frame; } - assoc = ASE_LSP_CAR(args); + assoc = QSE_LSP_CAR(args); /*while (assoc != lsp->mem->nil) {*/ - while (ASE_LSP_TYPE(assoc) == ASE_LSP_OBJ_CONS) + while (QSE_LSP_TYPE(assoc) == QSE_LSP_OBJ_CONS) { - ase_lsp_obj_t* ass = ASE_LSP_CAR(assoc); - if (ASE_LSP_TYPE(ass) == ASE_LSP_OBJ_CONS) + qse_lsp_obj_t* ass = QSE_LSP_CAR(assoc); + if (QSE_LSP_TYPE(ass) == QSE_LSP_OBJ_CONS) { - ase_lsp_obj_t* n = ASE_LSP_CAR(ass); - ase_lsp_obj_t* v = ASE_LSP_CDR(ass); + qse_lsp_obj_t* n = QSE_LSP_CAR(ass); + qse_lsp_obj_t* v = QSE_LSP_CDR(ass); - if (ASE_LSP_TYPE(n) != ASE_LSP_OBJ_SYM) + if (QSE_LSP_TYPE(n) != QSE_LSP_OBJ_SYM) { if (sequential) lsp->mem->frame = frame->link; else lsp->mem->brooding_frame = frame->link; - ase_lsp_freeframe (lsp, frame); + qse_lsp_freeframe (lsp, frame); - ase_lsp_seterror (lsp, ASE_LSP_EARGBAD, ASE_NULL, 0); - return ASE_NULL; + qse_lsp_seterror (lsp, QSE_LSP_EARGBAD, QSE_NULL, 0); + return QSE_NULL; } if (v != lsp->mem->nil) { - if (ASE_LSP_CDR(v) != lsp->mem->nil) + if (QSE_LSP_CDR(v) != lsp->mem->nil) { if (sequential) lsp->mem->frame = frame->link; else lsp->mem->brooding_frame = frame->link; - ase_lsp_freeframe (lsp, frame); + qse_lsp_freeframe (lsp, frame); - ase_lsp_seterror (lsp, ASE_LSP_EARGMANY, ASE_NULL, 0); - return ASE_NULL; + qse_lsp_seterror (lsp, QSE_LSP_EARGMANY, QSE_NULL, 0); + return QSE_NULL; } - if ((v = ase_lsp_eval(lsp, ASE_LSP_CAR(v))) == ASE_NULL) + if ((v = qse_lsp_eval(lsp, QSE_LSP_CAR(v))) == QSE_NULL) { if (sequential) lsp->mem->frame = frame->link; else lsp->mem->brooding_frame = frame->link; - ase_lsp_freeframe (lsp, frame); - return ASE_NULL; + qse_lsp_freeframe (lsp, frame); + return QSE_NULL; } } - if (ase_lsp_lookupinframe (lsp, frame, n) != ASE_NULL) + if (qse_lsp_lookupinframe (lsp, frame, n) != QSE_NULL) { if (sequential) lsp->mem->frame = frame->link; else lsp->mem->brooding_frame = frame->link; - ase_lsp_freeframe (lsp, frame); + qse_lsp_freeframe (lsp, frame); - ase_lsp_seterror (lsp, ASE_LSP_EDUPFML, ASE_NULL, 0); - return ASE_NULL; + qse_lsp_seterror (lsp, QSE_LSP_EDUPFML, QSE_NULL, 0); + return QSE_NULL; } - if (ase_lsp_insvalueintoframe (lsp, frame, n, v) == ASE_NULL) + if (qse_lsp_insvalueintoframe (lsp, frame, n, v) == QSE_NULL) { if (sequential) lsp->mem->frame = frame->link; else lsp->mem->brooding_frame = frame->link; - ase_lsp_freeframe (lsp, frame); - return ASE_NULL; + qse_lsp_freeframe (lsp, frame); + return QSE_NULL; } } - else if (ASE_LSP_TYPE(ass) == ASE_LSP_OBJ_SYM) + else if (QSE_LSP_TYPE(ass) == QSE_LSP_OBJ_SYM) { - if (ase_lsp_lookupinframe (lsp, frame, ass) != ASE_NULL) + if (qse_lsp_lookupinframe (lsp, frame, ass) != QSE_NULL) { if (sequential) lsp->mem->frame = frame->link; else lsp->mem->brooding_frame = frame->link; - ase_lsp_freeframe (lsp, frame); + qse_lsp_freeframe (lsp, frame); - ase_lsp_seterror (lsp, ASE_LSP_EDUPFML, ASE_NULL, 0); - return ASE_NULL; + qse_lsp_seterror (lsp, QSE_LSP_EDUPFML, QSE_NULL, 0); + return QSE_NULL; } - if (ase_lsp_insvalueintoframe (lsp, frame, ass, lsp->mem->nil) == ASE_NULL) + if (qse_lsp_insvalueintoframe (lsp, frame, ass, lsp->mem->nil) == QSE_NULL) { if (sequential) lsp->mem->frame = frame->link; else lsp->mem->brooding_frame = frame->link; - ase_lsp_freeframe (lsp, frame); - return ASE_NULL; + qse_lsp_freeframe (lsp, frame); + return QSE_NULL; } } else { if (sequential) lsp->mem->frame = frame->link; else lsp->mem->brooding_frame = frame->link; - ase_lsp_freeframe (lsp, frame); + qse_lsp_freeframe (lsp, frame); - ase_lsp_seterror (lsp, ASE_LSP_EARGBAD, ASE_NULL, 0); - return ASE_NULL; + qse_lsp_seterror (lsp, QSE_LSP_EARGBAD, QSE_NULL, 0); + return QSE_NULL; } - assoc = ASE_LSP_CDR(assoc); + assoc = QSE_LSP_CDR(assoc); } if (assoc != lsp->mem->nil) { if (sequential) lsp->mem->frame = frame->link; else lsp->mem->brooding_frame = frame->link; - ase_lsp_freeframe (lsp, frame); + qse_lsp_freeframe (lsp, frame); - ase_lsp_seterror (lsp, ASE_LSP_EARGBAD, ASE_NULL, 0); - return ASE_NULL; + qse_lsp_seterror (lsp, QSE_LSP_EARGBAD, QSE_NULL, 0); + return QSE_NULL; } /* push the frame */ @@ -147,28 +147,28 @@ static ase_lsp_obj_t* __prim_let ( /* evaluate forms in the body */ value = lsp->mem->nil; - body = ASE_LSP_CDR(args); + body = QSE_LSP_CDR(args); while (body != lsp->mem->nil) { - value = ase_lsp_eval (lsp, ASE_LSP_CAR(body)); - if (value == ASE_NULL) + value = qse_lsp_eval (lsp, QSE_LSP_CAR(body)); + if (value == QSE_NULL) { lsp->mem->frame = frame->link; - ase_lsp_freeframe (lsp, frame); - return ASE_NULL; + qse_lsp_freeframe (lsp, frame); + return QSE_NULL; } - body = ASE_LSP_CDR(body); + body = QSE_LSP_CDR(body); } /* pop the frame */ lsp->mem->frame = frame->link; /* destroy the frame */ - ase_lsp_freeframe (lsp, frame); + qse_lsp_freeframe (lsp, frame); return value; } -ase_lsp_obj_t* ase_lsp_prim_let (ase_lsp_t* lsp, ase_lsp_obj_t* args) +qse_lsp_obj_t* qse_lsp_prim_let (qse_lsp_t* lsp, qse_lsp_obj_t* args) { /* * (defun x (x y) @@ -180,7 +180,7 @@ ase_lsp_obj_t* ase_lsp_prim_let (ase_lsp_t* lsp, ase_lsp_obj_t* args) return __prim_let (lsp, args, 0); } -ase_lsp_obj_t* ase_lsp_prim_letx (ase_lsp_t* lsp, ase_lsp_obj_t* args) +qse_lsp_obj_t* qse_lsp_prim_letx (qse_lsp_t* lsp, qse_lsp_obj_t* args) { return __prim_let (lsp, args, 1); } diff --git a/qse/lib/lsp/prim_math.c b/qse/lib/lsp/prim_math.c index d989e480..103c66fb 100644 --- a/qse/lib/lsp/prim_math.c +++ b/qse/lib/lsp/prim_math.c @@ -6,346 +6,346 @@ #include "lsp.h" -ase_lsp_obj_t* ase_lsp_prim_plus (ase_lsp_t* lsp, ase_lsp_obj_t* args) +qse_lsp_obj_t* qse_lsp_prim_plus (qse_lsp_t* lsp, qse_lsp_obj_t* args) { - ase_lsp_obj_t* body, * tmp; - ase_long_t ival = 0; - ase_real_t rval = .0; - ase_bool_t realnum = ASE_FALSE; + qse_lsp_obj_t* body, * tmp; + qse_long_t ival = 0; + qse_real_t rval = .0; + qse_bool_t realnum = QSE_FALSE; - ASE_ASSERT (ASE_LSP_TYPE(args) == ASE_LSP_OBJ_CONS); + QSE_ASSERT (QSE_LSP_TYPE(args) == QSE_LSP_OBJ_CONS); body = args; - while (ASE_LSP_TYPE(body) == ASE_LSP_OBJ_CONS) + while (QSE_LSP_TYPE(body) == QSE_LSP_OBJ_CONS) { - tmp = ase_lsp_eval (lsp, ASE_LSP_CAR(body)); - if (tmp == ASE_NULL) return ASE_NULL; + tmp = qse_lsp_eval (lsp, QSE_LSP_CAR(body)); + if (tmp == QSE_NULL) return QSE_NULL; - if (ASE_LSP_TYPE(tmp) == ASE_LSP_OBJ_INT) + if (QSE_LSP_TYPE(tmp) == QSE_LSP_OBJ_INT) { if (body == args) { - ASE_ASSERT (realnum == ASE_FALSE); - ival = ASE_LSP_IVAL(tmp); + QSE_ASSERT (realnum == QSE_FALSE); + ival = QSE_LSP_IVAL(tmp); } else { if (!realnum) - ival = ival + ASE_LSP_IVAL(tmp); + ival = ival + QSE_LSP_IVAL(tmp); else - rval = rval + ASE_LSP_IVAL(tmp); + rval = rval + QSE_LSP_IVAL(tmp); } } - else if (ASE_LSP_TYPE(tmp) == ASE_LSP_OBJ_REAL) + else if (QSE_LSP_TYPE(tmp) == QSE_LSP_OBJ_REAL) { if (body == args) { - ASE_ASSERT (realnum == ASE_FALSE); - realnum = ASE_TRUE; - rval = ASE_LSP_RVAL(tmp); + QSE_ASSERT (realnum == QSE_FALSE); + realnum = QSE_TRUE; + rval = QSE_LSP_RVAL(tmp); } else { if (!realnum) { - realnum = ASE_TRUE; - rval = (ase_real_t)ival; + realnum = QSE_TRUE; + rval = (qse_real_t)ival; } - rval = rval + ASE_LSP_RVAL(tmp); + rval = rval + QSE_LSP_RVAL(tmp); } } else { - ase_lsp_seterror (lsp, ASE_LSP_EVALBAD, ASE_NULL, 0); - return ASE_NULL; + qse_lsp_seterror (lsp, QSE_LSP_EVALBAD, QSE_NULL, 0); + return QSE_NULL; } - body = ASE_LSP_CDR(body); + body = QSE_LSP_CDR(body); } - ASE_ASSERT (body == lsp->mem->nil); + QSE_ASSERT (body == lsp->mem->nil); tmp = (realnum)? - ase_lsp_makerealobj (lsp->mem, rval): - ase_lsp_makeintobj (lsp->mem, ival); - if (tmp == ASE_NULL) return ASE_NULL; + qse_lsp_makerealobj (lsp->mem, rval): + qse_lsp_makeintobj (lsp->mem, ival); + if (tmp == QSE_NULL) return QSE_NULL; return tmp; } -ase_lsp_obj_t* ase_lsp_prim_minus (ase_lsp_t* lsp, ase_lsp_obj_t* args) +qse_lsp_obj_t* qse_lsp_prim_minus (qse_lsp_t* lsp, qse_lsp_obj_t* args) { - ase_lsp_obj_t* body, * tmp; - ase_long_t ival = 0; - ase_real_t rval = .0; - ase_bool_t realnum = ASE_FALSE; + qse_lsp_obj_t* body, * tmp; + qse_long_t ival = 0; + qse_real_t rval = .0; + qse_bool_t realnum = QSE_FALSE; - ASE_ASSERT (ASE_LSP_TYPE(args) == ASE_LSP_OBJ_CONS); + QSE_ASSERT (QSE_LSP_TYPE(args) == QSE_LSP_OBJ_CONS); body = args; - while (ASE_LSP_TYPE(body) == ASE_LSP_OBJ_CONS) + while (QSE_LSP_TYPE(body) == QSE_LSP_OBJ_CONS) { - tmp = ase_lsp_eval (lsp, ASE_LSP_CAR(body)); - if (tmp == ASE_NULL) return ASE_NULL; + tmp = qse_lsp_eval (lsp, QSE_LSP_CAR(body)); + if (tmp == QSE_NULL) return QSE_NULL; - if (ASE_LSP_TYPE(tmp) == ASE_LSP_OBJ_INT) + if (QSE_LSP_TYPE(tmp) == QSE_LSP_OBJ_INT) { if (body == args) { - ASE_ASSERT (realnum == ASE_FALSE); - ival = ASE_LSP_IVAL(tmp); + QSE_ASSERT (realnum == QSE_FALSE); + ival = QSE_LSP_IVAL(tmp); } else { if (!realnum) - ival = ival - ASE_LSP_IVAL(tmp); + ival = ival - QSE_LSP_IVAL(tmp); else - rval = rval - ASE_LSP_IVAL(tmp); + rval = rval - QSE_LSP_IVAL(tmp); } } - else if (ASE_LSP_TYPE(tmp) == ASE_LSP_OBJ_REAL) + else if (QSE_LSP_TYPE(tmp) == QSE_LSP_OBJ_REAL) { if (body == args) { - ASE_ASSERT (realnum == ASE_FALSE); - realnum = ASE_TRUE; - rval = ASE_LSP_RVAL(tmp); + QSE_ASSERT (realnum == QSE_FALSE); + realnum = QSE_TRUE; + rval = QSE_LSP_RVAL(tmp); } else { if (!realnum) { - realnum = ASE_TRUE; - rval = (ase_real_t)ival; + realnum = QSE_TRUE; + rval = (qse_real_t)ival; } - rval = rval - ASE_LSP_RVAL(tmp); + rval = rval - QSE_LSP_RVAL(tmp); } } else { - ase_lsp_seterror (lsp, ASE_LSP_EVALBAD, ASE_NULL, 0); - return ASE_NULL; + qse_lsp_seterror (lsp, QSE_LSP_EVALBAD, QSE_NULL, 0); + return QSE_NULL; } - body = ASE_LSP_CDR(body); + body = QSE_LSP_CDR(body); } - ASE_ASSERT (body == lsp->mem->nil); + QSE_ASSERT (body == lsp->mem->nil); tmp = (realnum)? - ase_lsp_makerealobj (lsp->mem, rval): - ase_lsp_makeintobj (lsp->mem, ival); - if (tmp == ASE_NULL) return ASE_NULL; + qse_lsp_makerealobj (lsp->mem, rval): + qse_lsp_makeintobj (lsp->mem, ival); + if (tmp == QSE_NULL) return QSE_NULL; return tmp; } -ase_lsp_obj_t* ase_lsp_prim_mul (ase_lsp_t* lsp, ase_lsp_obj_t* args) +qse_lsp_obj_t* qse_lsp_prim_mul (qse_lsp_t* lsp, qse_lsp_obj_t* args) { - ase_lsp_obj_t* body, * tmp; - ase_long_t ival = 0; - ase_real_t rval = .0; - ase_bool_t realnum = ASE_FALSE; + qse_lsp_obj_t* body, * tmp; + qse_long_t ival = 0; + qse_real_t rval = .0; + qse_bool_t realnum = QSE_FALSE; - ASE_ASSERT (ASE_LSP_TYPE(args) == ASE_LSP_OBJ_CONS); + QSE_ASSERT (QSE_LSP_TYPE(args) == QSE_LSP_OBJ_CONS); body = args; - while (ASE_LSP_TYPE(body) == ASE_LSP_OBJ_CONS) + while (QSE_LSP_TYPE(body) == QSE_LSP_OBJ_CONS) { - tmp = ase_lsp_eval (lsp, ASE_LSP_CAR(body)); - if (tmp == ASE_NULL) return ASE_NULL; + tmp = qse_lsp_eval (lsp, QSE_LSP_CAR(body)); + if (tmp == QSE_NULL) return QSE_NULL; - if (ASE_LSP_TYPE(tmp) == ASE_LSP_OBJ_INT) + if (QSE_LSP_TYPE(tmp) == QSE_LSP_OBJ_INT) { if (body == args) { - ASE_ASSERT (realnum == ASE_FALSE); - ival = ASE_LSP_IVAL(tmp); + QSE_ASSERT (realnum == QSE_FALSE); + ival = QSE_LSP_IVAL(tmp); } else { if (!realnum) - ival = ival * ASE_LSP_IVAL(tmp); + ival = ival * QSE_LSP_IVAL(tmp); else - rval = rval * ASE_LSP_IVAL(tmp); + rval = rval * QSE_LSP_IVAL(tmp); } } - else if (ASE_LSP_TYPE(tmp) == ASE_LSP_OBJ_REAL) + else if (QSE_LSP_TYPE(tmp) == QSE_LSP_OBJ_REAL) { if (body == args) { - ASE_ASSERT (realnum == ASE_FALSE); - realnum = ASE_TRUE; - rval = ASE_LSP_RVAL(tmp); + QSE_ASSERT (realnum == QSE_FALSE); + realnum = QSE_TRUE; + rval = QSE_LSP_RVAL(tmp); } else { if (!realnum) { - realnum = ASE_TRUE; - rval = (ase_real_t)ival; + realnum = QSE_TRUE; + rval = (qse_real_t)ival; } - rval = rval * ASE_LSP_RVAL(tmp); + rval = rval * QSE_LSP_RVAL(tmp); } } else { - ase_lsp_seterror (lsp, ASE_LSP_EVALBAD, ASE_NULL, 0); - return ASE_NULL; + qse_lsp_seterror (lsp, QSE_LSP_EVALBAD, QSE_NULL, 0); + return QSE_NULL; } - body = ASE_LSP_CDR(body); + body = QSE_LSP_CDR(body); } - ASE_ASSERT (body == lsp->mem->nil); + QSE_ASSERT (body == lsp->mem->nil); tmp = (realnum)? - ase_lsp_makerealobj (lsp->mem, rval): - ase_lsp_makeintobj (lsp->mem, ival); - if (tmp == ASE_NULL) return ASE_NULL; + qse_lsp_makerealobj (lsp->mem, rval): + qse_lsp_makeintobj (lsp->mem, ival); + if (tmp == QSE_NULL) return QSE_NULL; return tmp; } -ase_lsp_obj_t* ase_lsp_prim_div (ase_lsp_t* lsp, ase_lsp_obj_t* args) +qse_lsp_obj_t* qse_lsp_prim_div (qse_lsp_t* lsp, qse_lsp_obj_t* args) { - ase_lsp_obj_t* body, * tmp; - ase_long_t ival = 0; - ase_real_t rval = .0; - ase_bool_t realnum = ASE_FALSE; + qse_lsp_obj_t* body, * tmp; + qse_long_t ival = 0; + qse_real_t rval = .0; + qse_bool_t realnum = QSE_FALSE; - ASE_ASSERT (ASE_LSP_TYPE(args) == ASE_LSP_OBJ_CONS); + QSE_ASSERT (QSE_LSP_TYPE(args) == QSE_LSP_OBJ_CONS); body = args; - while (ASE_LSP_TYPE(body) == ASE_LSP_OBJ_CONS) + while (QSE_LSP_TYPE(body) == QSE_LSP_OBJ_CONS) { - tmp = ase_lsp_eval (lsp, ASE_LSP_CAR(body)); - if (tmp == ASE_NULL) return ASE_NULL; + tmp = qse_lsp_eval (lsp, QSE_LSP_CAR(body)); + if (tmp == QSE_NULL) return QSE_NULL; - if (ASE_LSP_TYPE(tmp) == ASE_LSP_OBJ_INT) + if (QSE_LSP_TYPE(tmp) == QSE_LSP_OBJ_INT) { if (body == args) { - ASE_ASSERT (realnum == ASE_FALSE); - ival = ASE_LSP_IVAL(tmp); + QSE_ASSERT (realnum == QSE_FALSE); + ival = QSE_LSP_IVAL(tmp); } else { if (!realnum) { - if (ASE_LSP_IVAL(tmp) == 0) + if (QSE_LSP_IVAL(tmp) == 0) { - ase_lsp_seterror (lsp, ASE_LSP_EDIVBY0, ASE_NULL, 0); - return ASE_NULL; + qse_lsp_seterror (lsp, QSE_LSP_EDIVBY0, QSE_NULL, 0); + return QSE_NULL; } - ival = ival / ASE_LSP_IVAL(tmp); + ival = ival / QSE_LSP_IVAL(tmp); } else - rval = rval / ASE_LSP_IVAL(tmp); + rval = rval / QSE_LSP_IVAL(tmp); } } - else if (ASE_LSP_TYPE(tmp) == ASE_LSP_OBJ_REAL) + else if (QSE_LSP_TYPE(tmp) == QSE_LSP_OBJ_REAL) { if (body == args) { - ASE_ASSERT (realnum == ASE_FALSE); - realnum = ASE_TRUE; - rval = ASE_LSP_RVAL(tmp); + QSE_ASSERT (realnum == QSE_FALSE); + realnum = QSE_TRUE; + rval = QSE_LSP_RVAL(tmp); } else { if (!realnum) { - realnum = ASE_TRUE; - rval = (ase_real_t)ival; + realnum = QSE_TRUE; + rval = (qse_real_t)ival; } - rval = rval / ASE_LSP_RVAL(tmp); + rval = rval / QSE_LSP_RVAL(tmp); } } else { - ase_lsp_seterror (lsp, ASE_LSP_EVALBAD, ASE_NULL, 0); - return ASE_NULL; + qse_lsp_seterror (lsp, QSE_LSP_EVALBAD, QSE_NULL, 0); + return QSE_NULL; } - body = ASE_LSP_CDR(body); + body = QSE_LSP_CDR(body); } - ASE_ASSERT (body == lsp->mem->nil); + QSE_ASSERT (body == lsp->mem->nil); tmp = (realnum)? - ase_lsp_makerealobj (lsp->mem, rval): - ase_lsp_makeintobj (lsp->mem, ival); - if (tmp == ASE_NULL) return ASE_NULL; + qse_lsp_makerealobj (lsp->mem, rval): + qse_lsp_makeintobj (lsp->mem, ival); + if (tmp == QSE_NULL) return QSE_NULL; return tmp; } -ase_lsp_obj_t* ase_lsp_prim_mod (ase_lsp_t* lsp, ase_lsp_obj_t* args) +qse_lsp_obj_t* qse_lsp_prim_mod (qse_lsp_t* lsp, qse_lsp_obj_t* args) { - ase_lsp_obj_t* body, * tmp; - ase_long_t ival = 0; + qse_lsp_obj_t* body, * tmp; + qse_long_t ival = 0; - ASE_ASSERT (ASE_LSP_TYPE(args) == ASE_LSP_OBJ_CONS); + QSE_ASSERT (QSE_LSP_TYPE(args) == QSE_LSP_OBJ_CONS); body = args; - while (ASE_LSP_TYPE(body) == ASE_LSP_OBJ_CONS) + while (QSE_LSP_TYPE(body) == QSE_LSP_OBJ_CONS) { - tmp = ase_lsp_eval (lsp, ASE_LSP_CAR(body)); - if (tmp == ASE_NULL) return ASE_NULL; + tmp = qse_lsp_eval (lsp, QSE_LSP_CAR(body)); + if (tmp == QSE_NULL) return QSE_NULL; - if (ASE_LSP_TYPE(tmp) == ASE_LSP_OBJ_INT) + if (QSE_LSP_TYPE(tmp) == QSE_LSP_OBJ_INT) { if (body == args) { - ival = ASE_LSP_IVAL(tmp); + ival = QSE_LSP_IVAL(tmp); } else { - if (ASE_LSP_IVAL(tmp) == 0) + if (QSE_LSP_IVAL(tmp) == 0) { - ase_lsp_seterror (lsp, ASE_LSP_EDIVBY0, ASE_NULL, 0); - return ASE_NULL; + qse_lsp_seterror (lsp, QSE_LSP_EDIVBY0, QSE_NULL, 0); + return QSE_NULL; } - ival = ival % ASE_LSP_IVAL(tmp); + ival = ival % QSE_LSP_IVAL(tmp); } } - else if (ASE_LSP_TYPE(tmp) == ASE_LSP_OBJ_REAL) + else if (QSE_LSP_TYPE(tmp) == QSE_LSP_OBJ_REAL) { if (body == args) { - ival = (ase_long_t)ASE_LSP_RVAL(tmp); + ival = (qse_long_t)QSE_LSP_RVAL(tmp); } else { - ase_long_t tmpi = (ase_long_t)ASE_LSP_RVAL(tmp); + qse_long_t tmpi = (qse_long_t)QSE_LSP_RVAL(tmp); if (tmpi == 0) { - ase_lsp_seterror (lsp, ASE_LSP_EDIVBY0, ASE_NULL, 0); - return ASE_NULL; + qse_lsp_seterror (lsp, QSE_LSP_EDIVBY0, QSE_NULL, 0); + return QSE_NULL; } ival = ival % tmpi; } } else { - ase_lsp_seterror (lsp, ASE_LSP_EVALBAD, ASE_NULL, 0); - return ASE_NULL; + qse_lsp_seterror (lsp, QSE_LSP_EVALBAD, QSE_NULL, 0); + return QSE_NULL; } - body = ASE_LSP_CDR(body); + body = QSE_LSP_CDR(body); } - ASE_ASSERT (body == lsp->mem->nil); + QSE_ASSERT (body == lsp->mem->nil); - tmp = ase_lsp_makeintobj (lsp->mem, ival); - if (tmp == ASE_NULL) return ASE_NULL; + tmp = qse_lsp_makeintobj (lsp->mem, ival); + if (tmp == QSE_NULL) return QSE_NULL; return tmp; } diff --git a/qse/lib/lsp/prim_prog.c b/qse/lib/lsp/prim_prog.c index cd3bbc08..26f29af1 100644 --- a/qse/lib/lsp/prim_prog.c +++ b/qse/lib/lsp/prim_prog.c @@ -6,47 +6,47 @@ #include "lsp.h" -ase_lsp_obj_t* ase_lsp_prim_prog1 (ase_lsp_t* lsp, ase_lsp_obj_t* args) +qse_lsp_obj_t* qse_lsp_prim_prog1 (qse_lsp_t* lsp, qse_lsp_obj_t* args) { /* (prog1 1 2 3) returns 1 */ - ase_lsp_obj_t* res = ASE_NULL, * tmp; + qse_lsp_obj_t* res = QSE_NULL, * tmp; /*while (args != lsp->mem->nil) {*/ - while (ASE_LSP_TYPE(args) == ASE_LSP_OBJ_CONS) + while (QSE_LSP_TYPE(args) == QSE_LSP_OBJ_CONS) { - tmp = ase_lsp_eval (lsp, ASE_LSP_CAR(args)); - if (tmp == ASE_NULL) return ASE_NULL; + tmp = qse_lsp_eval (lsp, QSE_LSP_CAR(args)); + if (tmp == QSE_NULL) return QSE_NULL; - if (res == ASE_NULL) + if (res == QSE_NULL) { res = tmp; - if (ase_lsp_pushtmp (lsp, res) == ASE_NULL) + if (qse_lsp_pushtmp (lsp, res) == QSE_NULL) { - return ASE_NULL; + return QSE_NULL; } } - args = ASE_LSP_CDR(args); + args = QSE_LSP_CDR(args); } - if (res != ASE_NULL) ase_lsp_poptmp (lsp); + if (res != QSE_NULL) qse_lsp_poptmp (lsp); return res; } -ase_lsp_obj_t* ase_lsp_prim_progn (ase_lsp_t* lsp, ase_lsp_obj_t* args) +qse_lsp_obj_t* qse_lsp_prim_progn (qse_lsp_t* lsp, qse_lsp_obj_t* args) { /* (progn 1 2 3) returns 3 */ - ase_lsp_obj_t* res, * tmp; + qse_lsp_obj_t* res, * tmp; res = lsp->mem->nil; /*while (args != lsp->mem->nil) {*/ - while (ASE_LSP_TYPE(args) == ASE_LSP_OBJ_CONS) + while (QSE_LSP_TYPE(args) == QSE_LSP_OBJ_CONS) { - tmp = ase_lsp_eval (lsp, ASE_LSP_CAR(args)); - if (tmp == ASE_NULL) return ASE_NULL; + tmp = qse_lsp_eval (lsp, QSE_LSP_CAR(args)); + if (tmp == QSE_NULL) return QSE_NULL; res = tmp; - args = ASE_LSP_CDR(args); + args = QSE_LSP_CDR(args); } return res; diff --git a/qse/lib/lsp/print.c b/qse/lib/lsp/print.c index b7fb4574..65aea3e7 100644 --- a/qse/lib/lsp/print.c +++ b/qse/lib/lsp/print.c @@ -8,149 +8,149 @@ #define OUTPUT_STR(lsp,str) \ do { \ - if (lsp->output_func(ASE_LSP_IO_WRITE, lsp->output_arg, (ase_char_t*)str, ase_strlen(str)) == -1) { \ - ase_lsp_seterror (lsp, ASE_LSP_EOUTPUT, ASE_NULL, 0); \ + if (lsp->output_func(QSE_LSP_IO_WRITE, lsp->output_arg, (qse_char_t*)str, qse_strlen(str)) == -1) { \ + qse_lsp_seterror (lsp, QSE_LSP_EOUTPUT, QSE_NULL, 0); \ return -1; \ } \ } while (0) #define OUTPUT_STRX(lsp,str,len) \ do { \ - if (lsp->output_func(ASE_LSP_IO_WRITE, lsp->output_arg, (ase_char_t*)str, len) == -1) { \ - ase_lsp_seterror (lsp, ASE_LSP_EOUTPUT, ASE_NULL, 0); \ + if (lsp->output_func(QSE_LSP_IO_WRITE, lsp->output_arg, (qse_char_t*)str, len) == -1) { \ + qse_lsp_seterror (lsp, QSE_LSP_EOUTPUT, QSE_NULL, 0); \ return -1; \ } \ } while (0) -static int __print (ase_lsp_t* lsp, const ase_lsp_obj_t* obj, ase_bool_t prt_cons_par) +static int __print (qse_lsp_t* lsp, const qse_lsp_obj_t* obj, qse_bool_t prt_cons_par) { - ase_char_t buf[256]; + qse_char_t buf[256]; - if (lsp->output_func == ASE_NULL) + if (lsp->output_func == QSE_NULL) { - ase_lsp_seterror (lsp, ASE_LSP_ENOOUTP, ASE_NULL, 0); + qse_lsp_seterror (lsp, QSE_LSP_ENOOUTP, QSE_NULL, 0); return -1; } - switch (ASE_LSP_TYPE(obj)) + switch (QSE_LSP_TYPE(obj)) { - case ASE_LSP_OBJ_NIL: - OUTPUT_STR (lsp, ASE_T("nil")); + case QSE_LSP_OBJ_NIL: + OUTPUT_STR (lsp, QSE_T("nil")); break; - case ASE_LSP_OBJ_TRUE: - OUTPUT_STR (lsp, ASE_T("t")); + case QSE_LSP_OBJ_TRUE: + OUTPUT_STR (lsp, QSE_T("t")); break; - case ASE_LSP_OBJ_INT: - #if ASE_SIZEOF_LONG_LONG > 0 + case QSE_LSP_OBJ_INT: + #if QSE_SIZEOF_LONG_LONG > 0 lsp->prmfns.misc.sprintf ( lsp->prmfns.misc.data, - buf, ASE_COUNTOF(buf), - ASE_T("%lld"), (long long)ASE_LSP_IVAL(obj)); - #elif ASE_SIZEOF___INT64 > 0 + buf, QSE_COUNTOF(buf), + QSE_T("%lld"), (long long)QSE_LSP_IVAL(obj)); + #elif QSE_SIZEOF___INT64 > 0 lsp->prmfns.misc.sprintf ( lsp->prmfns.misc.data, - buf, ASE_COUNTOF(buf), - ASE_T("%I64d"), (__int64)ASE_LSP_IVAL(obj)); - #elif ASE_SIZEOF_LONG > 0 + buf, QSE_COUNTOF(buf), + QSE_T("%I64d"), (__int64)QSE_LSP_IVAL(obj)); + #elif QSE_SIZEOF_LONG > 0 lsp->prmfns.misc.sprintf ( lsp->prmfns.misc.data, - buf, ASE_COUNTOF(buf), - ASE_T("%ld"), (long)ASE_LSP_IVAL(obj)); - #elif ASE_SIZEOF_INT > 0 + buf, QSE_COUNTOF(buf), + QSE_T("%ld"), (long)QSE_LSP_IVAL(obj)); + #elif QSE_SIZEOF_INT > 0 lsp->prmfns.misc.sprintf ( lsp->prmfns.misc.data, - buf, ASE_COUNTOF(buf), - ASE_T("%d"), (int)ASE_LSP_IVAL(obj)); + buf, QSE_COUNTOF(buf), + QSE_T("%d"), (int)QSE_LSP_IVAL(obj)); #else #error unsupported size #endif OUTPUT_STR (lsp, buf); break; - case ASE_LSP_OBJ_REAL: + case QSE_LSP_OBJ_REAL: lsp->prmfns.misc.sprintf ( lsp->prmfns.misc.data, - buf, ASE_COUNTOF(buf), - ASE_T("%Lf"), + buf, QSE_COUNTOF(buf), + QSE_T("%Lf"), #ifdef __MINGW32__ - (double)ASE_LSP_RVAL(obj) + (double)QSE_LSP_RVAL(obj) #else - (long double)ASE_LSP_RVAL(obj) + (long double)QSE_LSP_RVAL(obj) #endif ); OUTPUT_STR (lsp, buf); break; - case ASE_LSP_OBJ_SYM: - OUTPUT_STRX (lsp, ASE_LSP_SYMPTR(obj), ASE_LSP_SYMLEN(obj)); + case QSE_LSP_OBJ_SYM: + OUTPUT_STRX (lsp, QSE_LSP_SYMPTR(obj), QSE_LSP_SYMLEN(obj)); break; - case ASE_LSP_OBJ_STR: - OUTPUT_STR (lsp, ASE_T("\"")); + case QSE_LSP_OBJ_STR: + OUTPUT_STR (lsp, QSE_T("\"")); /* TODO: deescaping */ - OUTPUT_STRX (lsp, ASE_LSP_STRPTR(obj), ASE_LSP_STRLEN(obj)); - OUTPUT_STR (lsp, ASE_T("\"")); + OUTPUT_STRX (lsp, QSE_LSP_STRPTR(obj), QSE_LSP_STRLEN(obj)); + OUTPUT_STR (lsp, QSE_T("\"")); break; - case ASE_LSP_OBJ_CONS: + case QSE_LSP_OBJ_CONS: { - const ase_lsp_obj_t* p = obj; - if (prt_cons_par) OUTPUT_STR (lsp, ASE_T("(")); + const qse_lsp_obj_t* p = obj; + if (prt_cons_par) OUTPUT_STR (lsp, QSE_T("(")); do { - ase_lsp_print (lsp, ASE_LSP_CAR(p)); - p = ASE_LSP_CDR(p); + qse_lsp_print (lsp, QSE_LSP_CAR(p)); + p = QSE_LSP_CDR(p); if (p != lsp->mem->nil) { - OUTPUT_STR (lsp, ASE_T(" ")); - if (ASE_LSP_TYPE(p) != ASE_LSP_OBJ_CONS) + OUTPUT_STR (lsp, QSE_T(" ")); + if (QSE_LSP_TYPE(p) != QSE_LSP_OBJ_CONS) { - OUTPUT_STR (lsp, ASE_T(". ")); - ase_lsp_print (lsp, p); + OUTPUT_STR (lsp, QSE_T(". ")); + qse_lsp_print (lsp, p); } } } - while (p != lsp->mem->nil && ASE_LSP_TYPE(p) == ASE_LSP_OBJ_CONS); - if (prt_cons_par) OUTPUT_STR (lsp, ASE_T(")")); + while (p != lsp->mem->nil && QSE_LSP_TYPE(p) == QSE_LSP_OBJ_CONS); + if (prt_cons_par) OUTPUT_STR (lsp, QSE_T(")")); break; } - case ASE_LSP_OBJ_FUNC: - /*OUTPUT_STR (lsp, ASE_T("func"));*/ - OUTPUT_STR (lsp, ASE_T("(lambda ")); - if (__print (lsp, ASE_LSP_FFORMAL(obj), ASE_TRUE) == -1) return -1; - OUTPUT_STR (lsp, ASE_T(" ")); - if (__print (lsp, ASE_LSP_FBODY(obj), ASE_FALSE) == -1) return -1; - OUTPUT_STR (lsp, ASE_T(")")); + case QSE_LSP_OBJ_FUNC: + /*OUTPUT_STR (lsp, QSE_T("func"));*/ + OUTPUT_STR (lsp, QSE_T("(lambda ")); + if (__print (lsp, QSE_LSP_FFORMAL(obj), QSE_TRUE) == -1) return -1; + OUTPUT_STR (lsp, QSE_T(" ")); + if (__print (lsp, QSE_LSP_FBODY(obj), QSE_FALSE) == -1) return -1; + OUTPUT_STR (lsp, QSE_T(")")); break; - case ASE_LSP_OBJ_MACRO: - OUTPUT_STR (lsp, ASE_T("(macro ")); - if (__print (lsp, ASE_LSP_FFORMAL(obj), ASE_TRUE) == -1) return -1; - OUTPUT_STR (lsp, ASE_T(" ")); - if (__print (lsp, ASE_LSP_FBODY(obj), ASE_FALSE) == -1) return -1; - OUTPUT_STR (lsp, ASE_T(")")); + case QSE_LSP_OBJ_MACRO: + OUTPUT_STR (lsp, QSE_T("(macro ")); + if (__print (lsp, QSE_LSP_FFORMAL(obj), QSE_TRUE) == -1) return -1; + OUTPUT_STR (lsp, QSE_T(" ")); + if (__print (lsp, QSE_LSP_FBODY(obj), QSE_FALSE) == -1) return -1; + OUTPUT_STR (lsp, QSE_T(")")); break; - case ASE_LSP_OBJ_PRIM: - OUTPUT_STR (lsp, ASE_T("prim")); + case QSE_LSP_OBJ_PRIM: + OUTPUT_STR (lsp, QSE_T("prim")); break; default: lsp->prmfns.misc.sprintf ( lsp->prmfns.misc.data, - buf, ASE_COUNTOF(buf), - ASE_T("unknown object type: %d"), ASE_LSP_TYPE(obj)); + buf, QSE_COUNTOF(buf), + QSE_T("unknown object type: %d"), QSE_LSP_TYPE(obj)); OUTPUT_STR (lsp, buf); } return 0; } -int ase_lsp_print (ase_lsp_t* lsp, const ase_lsp_obj_t* obj) +int qse_lsp_print (qse_lsp_t* lsp, const qse_lsp_obj_t* obj) { - return __print (lsp, obj, ASE_TRUE); + return __print (lsp, obj, QSE_TRUE); } diff --git a/qse/lib/lsp/read.c b/qse/lib/lsp/read.c index 88c7cf02..41057435 100644 --- a/qse/lib/lsp/read.c +++ b/qse/lib/lsp/read.c @@ -7,14 +7,14 @@ #include "lsp.h" #define IS_IDENT(c) \ - ((c) == ASE_T('+') || (c) == ASE_T('-') || \ - (c) == ASE_T('*') || (c) == ASE_T('/') || \ - (c) == ASE_T('%') || (c) == ASE_T('&') || \ - (c) == ASE_T('<') || (c) == ASE_T('>') || \ - (c) == ASE_T('=') || (c) == ASE_T('_') || \ - (c) == ASE_T('?')) + ((c) == QSE_T('+') || (c) == QSE_T('-') || \ + (c) == QSE_T('*') || (c) == QSE_T('/') || \ + (c) == QSE_T('%') || (c) == QSE_T('&') || \ + (c) == QSE_T('<') || (c) == QSE_T('>') || \ + (c) == QSE_T('=') || (c) == QSE_T('_') || \ + (c) == QSE_T('?')) -#define TOKEN_CLEAR(lsp) ase_lsp_name_clear (&(lsp)->token.name) +#define TOKEN_CLEAR(lsp) qse_lsp_name_clear (&(lsp)->token.name) #define TOKEN_TYPE(lsp) (lsp)->token.type #define TOKEN_IVAL(lsp) (lsp)->token.ival #define TOKEN_RVAL(lsp) (lsp)->token.rval @@ -23,14 +23,14 @@ #define TOKEN_ADD_CHAR(lsp,ch) \ do { \ - if (ase_lsp_name_addc(&(lsp)->token.name, ch) == -1) { \ - ase_lsp_seterror (lsp, ASE_LSP_ENOMEM, ASE_NULL, 0); \ + if (qse_lsp_name_addc(&(lsp)->token.name, ch) == -1) { \ + qse_lsp_seterror (lsp, QSE_LSP_ENOMEM, QSE_NULL, 0); \ return -1; \ } \ } while (0) #define TOKEN_COMPARE(lsp,str) \ - ase_lsp_name_compare (&(lsp)->token.name, str) + qse_lsp_name_compare (&(lsp)->token.name, str) #define TOKEN_END 0 #define TOKEN_INT 1 @@ -54,40 +54,40 @@ } while (0) #define NEXT_TOKEN(lsp) \ - do { if (read_token(lsp) == -1) return ASE_NULL; } while (0) + do { if (read_token(lsp) == -1) return QSE_NULL; } while (0) -static ase_lsp_obj_t* read_obj (ase_lsp_t* lsp); -static ase_lsp_obj_t* read_list (ase_lsp_t* lsp); -static ase_lsp_obj_t* read_quote (ase_lsp_t* lsp); +static qse_lsp_obj_t* read_obj (qse_lsp_t* lsp); +static qse_lsp_obj_t* read_list (qse_lsp_t* lsp); +static qse_lsp_obj_t* read_quote (qse_lsp_t* lsp); -static int read_char (ase_lsp_t* lsp); -static int read_token (ase_lsp_t* lsp); -static int read_number (ase_lsp_t* lsp, int negative); -static int read_ident (ase_lsp_t* lsp); -static int read_string (ase_lsp_t* lsp); +static int read_char (qse_lsp_t* lsp); +static int read_token (qse_lsp_t* lsp); +static int read_number (qse_lsp_t* lsp, int negative); +static int read_ident (qse_lsp_t* lsp); +static int read_string (qse_lsp_t* lsp); -ase_lsp_obj_t* ase_lsp_read (ase_lsp_t* lsp) +qse_lsp_obj_t* qse_lsp_read (qse_lsp_t* lsp) { - if (lsp->curc == ASE_CHAR_EOF && - read_char(lsp) == -1) return ASE_NULL; + if (lsp->curc == QSE_CHAR_EOF && + read_char(lsp) == -1) return QSE_NULL; NEXT_TOKEN (lsp); lsp->mem->read = read_obj (lsp); - if (lsp->mem->read != ASE_NULL) - ase_lsp_deepunlockobj (lsp, lsp->mem->read); + if (lsp->mem->read != QSE_NULL) + qse_lsp_deepunlockobj (lsp, lsp->mem->read); return lsp->mem->read; } -static ase_lsp_obj_t* read_obj (ase_lsp_t* lsp) +static qse_lsp_obj_t* read_obj (qse_lsp_t* lsp) { - ase_lsp_obj_t* obj; + qse_lsp_obj_t* obj; switch (TOKEN_TYPE(lsp)) { case TOKEN_END: - ase_lsp_seterror (lsp, ASE_LSP_EEND, ASE_NULL, 0); - return ASE_NULL; + qse_lsp_seterror (lsp, QSE_LSP_EEND, QSE_NULL, 0); + return QSE_NULL; case TOKEN_LPAREN: NEXT_TOKEN (lsp); @@ -98,87 +98,87 @@ static ase_lsp_obj_t* read_obj (ase_lsp_t* lsp) return read_quote (lsp); case TOKEN_INT: - obj = ase_lsp_makeintobj (lsp->mem, TOKEN_IVAL(lsp)); - if (obj == ASE_NULL) return ASE_NULL; - ase_lsp_lockobj (lsp, obj); + obj = qse_lsp_makeintobj (lsp->mem, TOKEN_IVAL(lsp)); + if (obj == QSE_NULL) return QSE_NULL; + qse_lsp_lockobj (lsp, obj); return obj; case TOKEN_REAL: - obj = ase_lsp_makerealobj (lsp->mem, TOKEN_RVAL(lsp)); - if (obj == ASE_NULL) return ASE_NULL; - ase_lsp_lockobj (lsp, obj); + obj = qse_lsp_makerealobj (lsp->mem, TOKEN_RVAL(lsp)); + if (obj == QSE_NULL) return QSE_NULL; + qse_lsp_lockobj (lsp, obj); return obj; case TOKEN_STRING: - obj = ase_lsp_makestr ( + obj = qse_lsp_makestr ( lsp->mem, TOKEN_SPTR(lsp), TOKEN_SLEN(lsp)); - if (obj == ASE_NULL) return ASE_NULL; - ase_lsp_lockobj (lsp, obj); + if (obj == QSE_NULL) return QSE_NULL; + qse_lsp_lockobj (lsp, obj); return obj; case TOKEN_IDENT: - ASE_ASSERT ( - lsp->mem->nil != ASE_NULL && - lsp->mem->t != ASE_NULL); + QSE_ASSERT ( + lsp->mem->nil != QSE_NULL && + lsp->mem->t != QSE_NULL); - if (TOKEN_COMPARE(lsp,ASE_T("nil")) == 0) + if (TOKEN_COMPARE(lsp,QSE_T("nil")) == 0) { obj = lsp->mem->nil; } - else if (TOKEN_COMPARE(lsp,ASE_T("t")) == 0) + else if (TOKEN_COMPARE(lsp,QSE_T("t")) == 0) { obj = lsp->mem->t; } else { - obj = ase_lsp_makesym ( + obj = qse_lsp_makesym ( lsp->mem, TOKEN_SPTR(lsp), TOKEN_SLEN(lsp)); - if (obj == ASE_NULL) return ASE_NULL; - ase_lsp_lockobj (lsp, obj); + if (obj == QSE_NULL) return QSE_NULL; + qse_lsp_lockobj (lsp, obj); } return obj; } - ase_lsp_seterror (lsp, ASE_LSP_ESYNTAX, ASE_NULL, 0); - return ASE_NULL; + qse_lsp_seterror (lsp, QSE_LSP_ESYNTAX, QSE_NULL, 0); + return QSE_NULL; } -static ase_lsp_obj_t* read_list (ase_lsp_t* lsp) +static qse_lsp_obj_t* read_list (qse_lsp_t* lsp) { - ase_lsp_obj_t* obj; - ase_lsp_obj_cons_t* p, * first = ASE_NULL, * prev = ASE_NULL; + qse_lsp_obj_t* obj; + qse_lsp_obj_cons_t* p, * first = QSE_NULL, * prev = QSE_NULL; while (TOKEN_TYPE(lsp) != TOKEN_RPAREN) { if (TOKEN_TYPE(lsp) == TOKEN_END) { /* unexpected end of input */ - ase_lsp_seterror (lsp, ASE_LSP_ESYNTAX, ASE_NULL, 0); - return ASE_NULL; + qse_lsp_seterror (lsp, QSE_LSP_ESYNTAX, QSE_NULL, 0); + return QSE_NULL; } if (TOKEN_TYPE(lsp) == TOKEN_DOT) { - if (prev == ASE_NULL) + if (prev == QSE_NULL) { /* unexpected dot */ - ase_lsp_seterror (lsp, ASE_LSP_ESYNTAX, ASE_NULL, 0); - return ASE_NULL; + qse_lsp_seterror (lsp, QSE_LSP_ESYNTAX, QSE_NULL, 0); + return QSE_NULL; } NEXT_TOKEN (lsp); obj = read_obj (lsp); - if (obj == ASE_NULL) + if (obj == QSE_NULL) { - if (lsp->errnum == ASE_LSP_EEND) + if (lsp->errnum == QSE_LSP_EEND) { /* unexpected end of input */ - ase_lsp_seterror (lsp, ASE_LSP_ESYNTAX, ASE_NULL, 0); + qse_lsp_seterror (lsp, QSE_LSP_ESYNTAX, QSE_NULL, 0); } - return ASE_NULL; + return QSE_NULL; } prev->cdr = obj; @@ -186,31 +186,31 @@ static ase_lsp_obj_t* read_list (ase_lsp_t* lsp) if (TOKEN_TYPE(lsp) != TOKEN_RPAREN) { /* ) expected */ - ase_lsp_seterror (lsp, ASE_LSP_ERPAREN, ASE_NULL, 0); - return ASE_NULL; + qse_lsp_seterror (lsp, QSE_LSP_ERPAREN, QSE_NULL, 0); + return QSE_NULL; } break; } obj = read_obj (lsp); - if (obj == ASE_NULL) + if (obj == QSE_NULL) { - if (lsp->errnum == ASE_LSP_EEND) + if (lsp->errnum == QSE_LSP_EEND) { /* unexpected end of input */ - ase_lsp_seterror (lsp, ASE_LSP_ESYNTAX, ASE_NULL, 0); + qse_lsp_seterror (lsp, QSE_LSP_ESYNTAX, QSE_NULL, 0); } - return ASE_NULL; + return QSE_NULL; } - p = (ase_lsp_obj_cons_t*)ase_lsp_makecons ( + p = (qse_lsp_obj_cons_t*)qse_lsp_makecons ( lsp->mem, lsp->mem->nil, lsp->mem->nil); - if (p == ASE_NULL) return ASE_NULL; - ase_lsp_lockobj (lsp, (ase_lsp_obj_t*)p); + if (p == QSE_NULL) return QSE_NULL; + qse_lsp_lockobj (lsp, (qse_lsp_obj_t*)p); - if (first == ASE_NULL) first = p; - if (prev != ASE_NULL) prev->cdr = (ase_lsp_obj_t*)p; + if (first == QSE_NULL) first = p; + if (prev != QSE_NULL) prev->cdr = (qse_lsp_obj_t*)p; p->car = obj; prev = p; @@ -218,120 +218,120 @@ static ase_lsp_obj_t* read_list (ase_lsp_t* lsp) NEXT_TOKEN (lsp); } - return (first == ASE_NULL)? lsp->mem->nil: (ase_lsp_obj_t*)first; + return (first == QSE_NULL)? lsp->mem->nil: (qse_lsp_obj_t*)first; } -static ase_lsp_obj_t* read_quote (ase_lsp_t* lsp) +static qse_lsp_obj_t* read_quote (qse_lsp_t* lsp) { - ase_lsp_obj_t* cons, * tmp; + qse_lsp_obj_t* cons, * tmp; tmp = read_obj (lsp); - if (tmp == ASE_NULL) + if (tmp == QSE_NULL) { - if (lsp->errnum == ASE_LSP_EEND) + if (lsp->errnum == QSE_LSP_EEND) { /* unexpected end of input */ - ase_lsp_seterror (lsp, ASE_LSP_ESYNTAX, ASE_NULL, 0); + qse_lsp_seterror (lsp, QSE_LSP_ESYNTAX, QSE_NULL, 0); } - return ASE_NULL; + return QSE_NULL; } - cons = ase_lsp_makecons (lsp->mem, tmp, lsp->mem->nil); - if (cons == ASE_NULL) return ASE_NULL; - ase_lsp_lockobj (lsp, cons); + cons = qse_lsp_makecons (lsp->mem, tmp, lsp->mem->nil); + if (cons == QSE_NULL) return QSE_NULL; + qse_lsp_lockobj (lsp, cons); - cons = ase_lsp_makecons (lsp->mem, lsp->mem->quote, cons); - if (cons == ASE_NULL) return ASE_NULL; - ase_lsp_lockobj (lsp, cons); + cons = qse_lsp_makecons (lsp->mem, lsp->mem->quote, cons); + if (cons == QSE_NULL) return QSE_NULL; + qse_lsp_lockobj (lsp, cons); return cons; } -static int read_char (ase_lsp_t* lsp) +static int read_char (qse_lsp_t* lsp) { - ase_ssize_t n; - ase_char_t c; + qse_ssize_t n; + qse_char_t c; - if (lsp->input_func == ASE_NULL) + if (lsp->input_func == QSE_NULL) { - ase_lsp_seterror (lsp, ASE_LSP_ENOINP, ASE_NULL, 0); + qse_lsp_seterror (lsp, QSE_LSP_ENOINP, QSE_NULL, 0); return -1; } - n = lsp->input_func(ASE_LSP_IO_READ, lsp->input_arg, &c, 1); + n = lsp->input_func(QSE_LSP_IO_READ, lsp->input_arg, &c, 1); if (n == -1) { - ase_lsp_seterror (lsp, ASE_LSP_EINPUT, ASE_NULL, 0); + qse_lsp_seterror (lsp, QSE_LSP_EINPUT, QSE_NULL, 0); return -1; } - if (n == 0) lsp->curc = ASE_CHAR_EOF; + if (n == 0) lsp->curc = QSE_CHAR_EOF; else lsp->curc = c; return 0; } -static int read_token (ase_lsp_t* lsp) +static int read_token (qse_lsp_t* lsp) { - ASE_ASSERT (lsp->input_func != ASE_NULL); + QSE_ASSERT (lsp->input_func != QSE_NULL); TOKEN_CLEAR (lsp); while (1) { /* skip white spaces */ - while (ASE_LSP_ISSPACE(lsp, lsp->curc)) NEXT_CHAR (lsp); + while (QSE_LSP_ISSPACE(lsp, lsp->curc)) NEXT_CHAR (lsp); /* skip the comments here */ - if (lsp->curc == ASE_T(';')) + if (lsp->curc == QSE_T(';')) { do { NEXT_CHAR (lsp); } - while (lsp->curc != ASE_T('\n') && - lsp->curc != ASE_CHAR_EOF); + while (lsp->curc != QSE_T('\n') && + lsp->curc != QSE_CHAR_EOF); } else break; } - if (lsp->curc == ASE_CHAR_EOF) + if (lsp->curc == QSE_CHAR_EOF) { TOKEN_TYPE(lsp) = TOKEN_END; return 0; } - else if (lsp->curc == ASE_T('(')) + else if (lsp->curc == QSE_T('(')) { TOKEN_ADD_CHAR (lsp, lsp->curc); TOKEN_TYPE(lsp) = TOKEN_LPAREN; NEXT_CHAR (lsp); return 0; } - else if (lsp->curc == ASE_T(')')) + else if (lsp->curc == QSE_T(')')) { TOKEN_ADD_CHAR (lsp, lsp->curc); TOKEN_TYPE(lsp) = TOKEN_RPAREN; NEXT_CHAR (lsp); return 0; } - else if (lsp->curc == ASE_T('\'')) + else if (lsp->curc == QSE_T('\'')) { TOKEN_ADD_CHAR (lsp, lsp->curc); TOKEN_TYPE(lsp) = TOKEN_QUOTE; NEXT_CHAR (lsp); return 0; } - else if (lsp->curc == ASE_T('.')) + else if (lsp->curc == QSE_T('.')) { TOKEN_ADD_CHAR (lsp, lsp->curc); TOKEN_TYPE(lsp) = TOKEN_DOT; NEXT_CHAR (lsp); return 0; } - else if (lsp->curc == ASE_T('-')) + else if (lsp->curc == QSE_T('-')) { TOKEN_ADD_CHAR (lsp, lsp->curc); NEXT_CHAR (lsp); - if (ASE_LSP_ISDIGIT(lsp,lsp->curc)) + if (QSE_LSP_ISDIGIT(lsp,lsp->curc)) { return read_number (lsp, 1); } @@ -345,15 +345,15 @@ static int read_token (ase_lsp_t* lsp) return 0; } } - else if (ASE_LSP_ISDIGIT(lsp,lsp->curc)) + else if (QSE_LSP_ISDIGIT(lsp,lsp->curc)) { return read_number (lsp, 0); } - else if (ASE_LSP_ISALPHA(lsp,lsp->curc) || IS_IDENT(lsp->curc)) + else if (QSE_LSP_ISALPHA(lsp,lsp->curc) || IS_IDENT(lsp->curc)) { return read_ident (lsp); } - else if (lsp->curc == ASE_T('\"')) + else if (lsp->curc == QSE_T('\"')) { return read_string (lsp); } @@ -363,30 +363,30 @@ static int read_token (ase_lsp_t* lsp) return 0; } -static int read_number (ase_lsp_t* lsp, int negative) +static int read_number (qse_lsp_t* lsp, int negative) { - ase_long_t ival = 0; - ase_real_t rval = .0; + qse_long_t ival = 0; + qse_real_t rval = .0; do { - ival = ival * 10 + (lsp->curc - ASE_T('0')); + ival = ival * 10 + (lsp->curc - QSE_T('0')); TOKEN_ADD_CHAR (lsp, lsp->curc); NEXT_CHAR (lsp); } - while (ASE_LSP_ISDIGIT(lsp, lsp->curc)); + while (QSE_LSP_ISDIGIT(lsp, lsp->curc)); /* TODO: extend parsing floating point number */ - if (lsp->curc == ASE_T('.')) + if (lsp->curc == QSE_T('.')) { - ase_real_t fraction = 0.1; + qse_real_t fraction = 0.1; NEXT_CHAR (lsp); - rval = (ase_real_t)ival; + rval = (qse_real_t)ival; - while (ASE_LSP_ISDIGIT(lsp, lsp->curc)) + while (QSE_LSP_ISDIGIT(lsp, lsp->curc)) { - rval += (ase_real_t)(lsp->curc - ASE_T('0')) * fraction; + rval += (qse_real_t)(lsp->curc - QSE_T('0')) * fraction; fraction *= 0.1; NEXT_CHAR (lsp); } @@ -405,40 +405,40 @@ static int read_number (ase_lsp_t* lsp, int negative) return 0; } -static int read_ident (ase_lsp_t* lsp) +static int read_ident (qse_lsp_t* lsp) { do { TOKEN_ADD_CHAR (lsp, lsp->curc); NEXT_CHAR (lsp); } - while (ASE_LSP_ISALNUM(lsp,lsp->curc) || IS_IDENT(lsp->curc)); + while (QSE_LSP_ISALNUM(lsp,lsp->curc) || IS_IDENT(lsp->curc)); TOKEN_TYPE(lsp) = TOKEN_IDENT; return 0; } -static int read_string (ase_lsp_t* lsp) +static int read_string (qse_lsp_t* lsp) { - ase_cint_t c; + qse_cint_t c; int escaped = 0; int digit_count = 0; - ase_cint_t c_acc = 0; + qse_cint_t c_acc = 0; while (1) { NEXT_CHAR_TO (lsp, c); - if (c == ASE_CHAR_EOF) + if (c == QSE_CHAR_EOF) { - ase_lsp_seterror (lsp, ASE_LSP_EENDSTR, ASE_NULL, 0); + qse_lsp_seterror (lsp, QSE_LSP_EENDSTR, QSE_NULL, 0); return -1; } if (escaped == 3) { - if (c >= ASE_T('0') && c <= ASE_T('7')) + if (c >= QSE_T('0') && c <= QSE_T('7')) { - c_acc = c_acc * 8 + c - ASE_T('0'); + c_acc = c_acc * 8 + c - QSE_T('0'); digit_count++; if (digit_count >= escaped) { @@ -455,9 +455,9 @@ static int read_string (ase_lsp_t* lsp) } else if (escaped == 2 || escaped == 4 || escaped == 8) { - if (c >= ASE_T('0') && c <= ASE_T('9')) + if (c >= QSE_T('0') && c <= QSE_T('9')) { - c_acc = c_acc * 16 + c - ASE_T('0'); + c_acc = c_acc * 16 + c - QSE_T('0'); digit_count++; if (digit_count >= escaped) { @@ -466,9 +466,9 @@ static int read_string (ase_lsp_t* lsp) } continue; } - else if (c >= ASE_T('A') && c <= ASE_T('F')) + else if (c >= QSE_T('A') && c <= QSE_T('F')) { - c_acc = c_acc * 16 + c - ASE_T('A') + 10; + c_acc = c_acc * 16 + c - QSE_T('A') + 10; digit_count++; if (digit_count >= escaped) { @@ -477,9 +477,9 @@ static int read_string (ase_lsp_t* lsp) } continue; } - else if (c >= ASE_T('a') && c <= ASE_T('f')) + else if (c >= QSE_T('a') && c <= QSE_T('f')) { - c_acc = c_acc * 16 + c - ASE_T('a') + 10; + c_acc = c_acc * 16 + c - QSE_T('a') + 10; digit_count++; if (digit_count >= escaped) { @@ -490,10 +490,10 @@ static int read_string (ase_lsp_t* lsp) } else { - ase_char_t rc; + qse_char_t rc; - rc = (escaped == 2)? ASE_T('x'): - (escaped == 4)? ASE_T('u'): ASE_T('U'); + rc = (escaped == 2)? QSE_T('x'): + (escaped == 4)? QSE_T('u'): QSE_T('U'); if (digit_count == 0) TOKEN_ADD_CHAR (lsp, rc); else TOKEN_ADD_CHAR (lsp, c_acc); @@ -502,7 +502,7 @@ static int read_string (ase_lsp_t* lsp) } } - if (escaped == 0 && c == ASE_T('\"')) + if (escaped == 0 && c == QSE_T('\"')) { /* terminating quote */ /*NEXT_CHAR_TO (lsp, c);*/ @@ -510,7 +510,7 @@ static int read_string (ase_lsp_t* lsp) break; } - if (escaped == 0 && c == ASE_T('\\')) + if (escaped == 0 && c == QSE_T('\\')) { escaped = 1; continue; @@ -518,36 +518,36 @@ static int read_string (ase_lsp_t* lsp) if (escaped == 1) { - if (c == ASE_T('n')) c = ASE_T('\n'); - else if (c == ASE_T('r')) c = ASE_T('\r'); - else if (c == ASE_T('t')) c = ASE_T('\t'); - else if (c == ASE_T('f')) c = ASE_T('\f'); - else if (c == ASE_T('b')) c = ASE_T('\b'); - else if (c == ASE_T('v')) c = ASE_T('\v'); - else if (c == ASE_T('a')) c = ASE_T('\a'); - else if (c >= ASE_T('0') && c <= ASE_T('7')) + if (c == QSE_T('n')) c = QSE_T('\n'); + else if (c == QSE_T('r')) c = QSE_T('\r'); + else if (c == QSE_T('t')) c = QSE_T('\t'); + else if (c == QSE_T('f')) c = QSE_T('\f'); + else if (c == QSE_T('b')) c = QSE_T('\b'); + else if (c == QSE_T('v')) c = QSE_T('\v'); + else if (c == QSE_T('a')) c = QSE_T('\a'); + else if (c >= QSE_T('0') && c <= QSE_T('7')) { escaped = 3; digit_count = 1; - c_acc = c - ASE_T('0'); + c_acc = c - QSE_T('0'); continue; } - else if (c == ASE_T('x')) + else if (c == QSE_T('x')) { escaped = 2; digit_count = 0; c_acc = 0; continue; } - #ifdef ASE_CHAR_IS_WCHAR - else if (c == ASE_T('u') && ASE_SIZEOF(ase_char_t) >= 2) + #ifdef QSE_CHAR_IS_WCHAR + else if (c == QSE_T('u') && QSE_SIZEOF(qse_char_t) >= 2) { escaped = 4; digit_count = 0; c_acc = 0; continue; } - else if (c == ASE_T('U') && ASE_SIZEOF(ase_char_t) >= 4) + else if (c == QSE_T('U') && QSE_SIZEOF(qse_char_t) >= 4) { escaped = 8; digit_count = 0; diff --git a/qse/lib/makefile.in b/qse/lib/makefile.in index 1d68bb19..2457322a 100644 --- a/qse/lib/makefile.in +++ b/qse/lib/makefile.in @@ -38,7 +38,7 @@ am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/include/ase/config.h +CONFIG_HEADER = $(top_builddir)/include/qse/config.h CONFIG_CLEAN_FILES = SOURCES = DIST_SOURCES = diff --git a/qse/lib/stx/array.c b/qse/lib/stx/array.c new file mode 100644 index 00000000..1f6c1800 --- /dev/null +++ b/qse/lib/stx/array.c @@ -0,0 +1,18 @@ +/* + * $Id: array.c 118 2008-03-03 11:21:33Z baconevi $ + */ + +#include +#include +#include + +qse_word_t qse_stx_new_array (qse_stx_t* stx, qse_word_t size) +{ + qse_word_t x; + + qse_assert (stx->class_array != stx->nil); + x = qse_stx_alloc_word_object (stx, QSE_NULL, 0, QSE_NULL, size); + QSE_STX_CLASS(stx,x) = stx->class_array; + + return x; +} diff --git a/qse/lib/stx/array.h b/qse/lib/stx/array.h new file mode 100644 index 00000000..90062704 --- /dev/null +++ b/qse/lib/stx/array.h @@ -0,0 +1,21 @@ +/* + * $Id: array.h 118 2008-03-03 11:21:33Z baconevi $ + */ + +#ifndef _QSE_STX_ARRAY_H_ +#define _QSE_STX_ARRAY_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +qse_word_t qse_stx_new_array (qse_stx_t* stx, qse_word_t size); + +#ifdef __cplusplus +} +#endif + + +#endif diff --git a/qse/lib/stx/bootstrp.c b/qse/lib/stx/bootstrp.c new file mode 100644 index 00000000..682eb5a3 --- /dev/null +++ b/qse/lib/stx/bootstrp.c @@ -0,0 +1,676 @@ +/* + * $Id: bootstrp.c 118 2008-03-03 11:21:33Z baconevi $ + */ + +#include +#include +#include +#include +#include +#include + +static void __create_bootstrapping_objects (qse_stx_t* stx); +static void __create_builtin_classes (qse_stx_t* stx); +static qse_word_t __make_classvar_dict ( + qse_stx_t* stx, qse_word_t class, const qse_char_t* names); +static void __filein_kernel (qse_stx_t* stx); + +static qse_word_t __count_names (const qse_char_t* str); +static void __set_names ( + qse_stx_t* stx, qse_word_t* array, const qse_char_t* str); + +static qse_word_t __count_subclasses (const qse_char_t* str); +static void __set_subclasses ( + qse_stx_t* stx, qse_word_t* array, const qse_char_t* str); +static void __set_metaclass_subclasses ( + qse_stx_t* stx, qse_word_t* array, const qse_char_t* str); + +struct class_info_t +{ + const qse_char_t* name; + const qse_char_t* superclass; + const qse_char_t* instance_variables; + const qse_char_t* class_variables; + const qse_char_t* pool_dictionaries; + const int indexable; +}; + +typedef struct class_info_t class_info_t; + +static class_info_t class_info[] = +{ + { + QSE_T("Object"), + QSE_NULL, + QSE_NULL, + QSE_NULL, + QSE_NULL, + QSE_STX_SPEC_NOT_INDEXABLE + }, + { + QSE_T("UndefinedObject"), + QSE_T("Object"), + QSE_NULL, + QSE_NULL, + QSE_NULL, + QSE_STX_SPEC_NOT_INDEXABLE + }, + { + QSE_T("Behavior"), + QSE_T("Object"), + QSE_T("spec methods superclass"), + QSE_NULL, + QSE_NULL, + QSE_STX_SPEC_NOT_INDEXABLE + }, + { + QSE_T("Class"), + QSE_T("Behavior"), + QSE_T("name variables classVariables poolDictionaries"), + QSE_NULL, + QSE_NULL, + QSE_STX_SPEC_NOT_INDEXABLE + }, + { + QSE_T("Metaclass"), + QSE_T("Behavior"), + QSE_T("instanceClass"), + QSE_NULL, + QSE_NULL, + QSE_STX_SPEC_NOT_INDEXABLE + }, + { + QSE_T("Block"), + QSE_T("Object"), + QSE_T("context argCount argLoc bytePointer"), + QSE_NULL, + QSE_NULL, + QSE_STX_SPEC_NOT_INDEXABLE + }, + { + QSE_T("Boolean"), + QSE_T("Object"), + QSE_NULL, + QSE_NULL, + QSE_NULL, + QSE_STX_SPEC_NOT_INDEXABLE + }, + { + QSE_T("True"), + QSE_T("Boolean"), + QSE_NULL, + QSE_NULL, + QSE_NULL, + QSE_STX_SPEC_NOT_INDEXABLE + }, + { + QSE_T("False"), + QSE_T("Boolean"), + QSE_NULL, + QSE_NULL, + QSE_NULL, + QSE_STX_SPEC_NOT_INDEXABLE + }, + { + QSE_T("Context"), + QSE_T("Object"), + QSE_T("stack stackTop receiver pc method"), + QSE_NULL, + QSE_NULL, + QSE_STX_SPEC_NOT_INDEXABLE + }, + { + QSE_T("Method"), + QSE_T("Object"), + QSE_T("text selector bytecodes tmpCount argCount"), + QSE_NULL, + QSE_NULL, + QSE_STX_SPEC_WORD_INDEXABLE + }, + { + QSE_T("Magnitude"), + QSE_T("Object"), + QSE_NULL, + QSE_NULL, + QSE_NULL, + QSE_STX_SPEC_NOT_INDEXABLE + }, + { + QSE_T("Association"), + QSE_T("Magnitude"), + QSE_T("key value"), + QSE_NULL, + QSE_NULL, + QSE_STX_SPEC_NOT_INDEXABLE + }, + { + QSE_T("Character"), + QSE_T("Magnitude"), + QSE_T("value"), + QSE_NULL, + QSE_NULL, + QSE_STX_SPEC_NOT_INDEXABLE + }, + { + QSE_T("Number"), + QSE_T("Magnitude"), + QSE_NULL, + QSE_NULL, + QSE_NULL, + QSE_STX_SPEC_NOT_INDEXABLE + }, + { + QSE_T("Integer"), + QSE_T("Number"), + QSE_NULL, + QSE_NULL, + QSE_NULL, + QSE_STX_SPEC_NOT_INDEXABLE + }, + { + QSE_T("SmallInteger"), + QSE_T("Integer"), + QSE_NULL, + QSE_NULL, + QSE_NULL, + QSE_STX_SPEC_NOT_INDEXABLE + }, + { + QSE_T("LargeInteger"), + QSE_T("Integer"), + QSE_NULL, + QSE_NULL, + QSE_NULL, + QSE_STX_SPEC_BYTE_INDEXABLE + }, + { + QSE_T("Collection"), + QSE_T("Magnitude"), + QSE_NULL, + QSE_NULL, + QSE_NULL, + QSE_STX_SPEC_NOT_INDEXABLE + }, + { + QSE_T("IndexedCollection"), + QSE_T("Collection"), + QSE_NULL, + QSE_NULL, + QSE_NULL, + QSE_STX_SPEC_NOT_INDEXABLE + }, + { + QSE_T("Array"), + QSE_T("IndexedCollection"), + QSE_NULL, + QSE_NULL, + QSE_NULL, + QSE_STX_SPEC_WORD_INDEXABLE + }, + { + QSE_T("ByteArray"), + QSE_T("IndexedCollection"), + QSE_NULL, + QSE_NULL, + QSE_NULL, + QSE_STX_SPEC_BYTE_INDEXABLE + }, + { + QSE_T("Dictionary"), + QSE_T("IndexedCollection"), + QSE_T("tally"), + QSE_NULL, + QSE_NULL, + QSE_STX_SPEC_WORD_INDEXABLE + }, + { + QSE_T("SystemDictionary"), + QSE_T("Dictionary"), + QSE_NULL, + QSE_NULL, + QSE_NULL, + QSE_STX_SPEC_WORD_INDEXABLE + }, + { + QSE_T("PoolDictionary"), + QSE_T("Dictionary"), + QSE_NULL, + QSE_NULL, + QSE_NULL, + QSE_STX_SPEC_WORD_INDEXABLE + }, + { + QSE_T("String"), + QSE_T("IndexedCollection"), + QSE_NULL, + QSE_NULL, + QSE_NULL, + QSE_STX_SPEC_CHAR_INDEXABLE + }, + { + QSE_T("Symbol"), + QSE_T("String"), + QSE_NULL, + QSE_NULL, + QSE_NULL, + QSE_STX_SPEC_CHAR_INDEXABLE + }, + { + QSE_T("Link"), + QSE_T("Object"), + QSE_T("link"), + QSE_NULL, + QSE_NULL, + QSE_STX_SPEC_NOT_INDEXABLE + }, + { + QSE_NULL, + QSE_NULL, + QSE_NULL, + QSE_NULL, + QSE_NULL, + QSE_STX_SPEC_NOT_INDEXABLE + } +}; + +qse_word_t INLINE __new_string (qse_stx_t* stx, const qse_char_t* str) +{ + qse_word_t x; + + qse_assert (stx->class_string != stx->nil); + x = qse_stx_alloc_char_object (stx, str); + QSE_STX_CLASS(stx,x) = stx->class_string; + + return x; +} + +int qse_stx_bootstrap (qse_stx_t* stx) +{ + qse_word_t symbol_Smalltalk; + qse_word_t object_meta; + + __create_bootstrapping_objects (stx); + + /* object, class, and array are precreated for easier instantiation + * of builtin classes */ + stx->class_object = qse_stx_new_class (stx, QSE_T("Object")); + stx->class_class = qse_stx_new_class (stx, QSE_T("Class")); + stx->class_array = qse_stx_new_class (stx, QSE_T("Array")); + stx->class_bytearray = qse_stx_new_class (stx, QSE_T("ByteArray")); + stx->class_string = qse_stx_new_class (stx, QSE_T("String")); + stx->class_character = qse_stx_new_class (stx, QSE_T("Character")); + stx->class_context = qse_stx_new_class (stx, QSE_T("Context")); + stx->class_system_dictionary = + qse_stx_new_class (stx, QSE_T("SystemDictionary")); + stx->class_method = + qse_stx_new_class (stx, QSE_T("Method")); + stx->class_smallinteger = + qse_stx_new_class (stx, QSE_T("SmallInteger")); + + __create_builtin_classes (stx); + + /* (Object class) setSuperclass: Class */ + object_meta = QSE_STX_CLASS(stx,stx->class_object); + QSE_STX_WORD_AT(stx,object_meta,QSE_STX_METACLASS_SUPERCLASS) = stx->class_class; + /* instance class for Object is set here as it is not + * set in __create_builtin_classes */ + QSE_STX_WORD_AT(stx,object_meta,QSE_STX_METACLASS_INSTANCE_CLASS) = stx->class_object; + + /* for some fun here */ + { + qse_word_t array; + array = qse_stx_new_array (stx, 1); + QSE_STX_WORD_AT(stx,array,0) = object_meta; + QSE_STX_WORD_AT(stx,stx->class_class,QSE_STX_CLASS_SUBCLASSES) = array; + } + + /* more initialization */ + QSE_STX_CLASS(stx,stx->smalltalk) = stx->class_system_dictionary; + + symbol_Smalltalk = qse_stx_new_symbol (stx, QSE_T("Smalltalk")); + qse_stx_dict_put (stx, stx->smalltalk, symbol_Smalltalk, stx->smalltalk); + + /* create #nil, #true, #false */ + qse_stx_new_symbol (stx, QSE_T("nil")); + qse_stx_new_symbol (stx, QSE_T("true")); + qse_stx_new_symbol (stx, QSE_T("false")); + + /* nil setClass: UndefinedObject */ + QSE_STX_CLASS(stx,stx->nil) = + qse_stx_lookup_class(stx, QSE_T("UndefinedObject")); + /* true setClass: True */ + QSE_STX_CLASS(stx,stx->true) = + qse_stx_lookup_class (stx, QSE_T("True")); + /* fales setClass: False */ + QSE_STX_CLASS(stx,stx->false) = + qse_stx_lookup_class (stx, QSE_T("False")); + + __filein_kernel (stx); + return 0; +} + +static void __create_bootstrapping_objects (qse_stx_t* stx) +{ + qse_word_t class_SymbolMeta; + qse_word_t class_MetaclassMeta; + qse_word_t class_AssociationMeta; + qse_word_t symbol_Symbol; + qse_word_t symbol_Metaclass; + qse_word_t symbol_Association; + + /* allocate three keyword objects */ + stx->nil = qse_stx_alloc_word_object (stx, QSE_NULL, 0, QSE_NULL, 0); + stx->true = qse_stx_alloc_word_object (stx, QSE_NULL, 0, QSE_NULL, 0); + stx->false = qse_stx_alloc_word_object (stx, QSE_NULL, 0, QSE_NULL, 0); + + qse_assert (stx->nil == QSE_STX_NIL); + qse_assert (stx->true == QSE_STX_TRUE); + qse_assert (stx->false == QSE_STX_FALSE); + + /* system dictionary */ + /* TODO: dictionary size */ + stx->smalltalk = qse_stx_alloc_word_object ( + stx, QSE_NULL, 1, QSE_NULL, 256); + /* set tally */ + QSE_STX_WORD_AT(stx,stx->smalltalk,0) = QSE_STX_TO_SMALLINT(0); + + /* Symbol */ + stx->class_symbol = qse_stx_alloc_word_object( + stx, QSE_NULL, QSE_STX_CLASS_SIZE, QSE_NULL, 0); + /* Metaclass */ + stx->class_metaclass = qse_stx_alloc_word_object( + stx, QSE_NULL, QSE_STX_CLASS_SIZE, QSE_NULL, 0); + /* Association */ + stx->class_association = qse_stx_alloc_word_object( + stx, QSE_NULL, QSE_STX_CLASS_SIZE, QSE_NULL, 0); + + /* Metaclass is a class so it has the same structure + * as a normal class. "Metaclass class" is an instance of + * Metaclass. */ + + /* Symbol class */ + class_SymbolMeta = qse_stx_alloc_word_object( + stx, QSE_NULL, QSE_STX_METACLASS_SIZE, QSE_NULL, 0); + /* Metaclass class */ + class_MetaclassMeta = qse_stx_alloc_word_object( + stx, QSE_NULL, QSE_STX_METACLASS_SIZE, QSE_NULL, 0); + /* Association class */ + class_AssociationMeta = qse_stx_alloc_word_object( + stx, QSE_NULL, QSE_STX_METACLASS_SIZE, QSE_NULL, 0); + + /* (Symbol class) setClass: Metaclass */ + QSE_STX_CLASS(stx,class_SymbolMeta) = stx->class_metaclass; + /* (Metaclass class) setClass: Metaclass */ + QSE_STX_CLASS(stx,class_MetaclassMeta) = stx->class_metaclass; + /* (Association class) setClass: Metaclass */ + QSE_STX_CLASS(stx,class_AssociationMeta) = stx->class_metaclass; + + /* Symbol setClass: (Symbol class) */ + QSE_STX_CLASS(stx,stx->class_symbol) = class_SymbolMeta; + /* Metaclass setClass: (Metaclass class) */ + QSE_STX_CLASS(stx,stx->class_metaclass) = class_MetaclassMeta; + /* Association setClass: (Association class) */ + QSE_STX_CLASS(stx,stx->class_association) = class_AssociationMeta; + + /* (Symbol class) setSpec: CLASS_SIZE */ + QSE_STX_WORD_AT(stx,class_SymbolMeta,QSE_STX_CLASS_SPEC) = + QSE_STX_TO_SMALLINT((QSE_STX_CLASS_SIZE << QSE_STX_SPEC_INDEXABLE_BITS) | QSE_STX_SPEC_NOT_INDEXABLE); + /* (Metaclass class) setSpec: CLASS_SIZE */ + QSE_STX_WORD_AT(stx,class_MetaclassMeta,QSE_STX_CLASS_SPEC) = + QSE_STX_TO_SMALLINT((QSE_STX_CLASS_SIZE << QSE_STX_SPEC_INDEXABLE_BITS) | QSE_STX_SPEC_NOT_INDEXABLE); + /* (Association class) setSpec: CLASS_SIZE */ + QSE_STX_WORD_AT(stx,class_AssociationMeta,QSE_STX_CLASS_SPEC) = + QSE_STX_TO_SMALLINT((QSE_STX_CLASS_SIZE << QSE_STX_SPEC_INDEXABLE_BITS) | QSE_STX_SPEC_NOT_INDEXABLE); + + /* specs for class_metaclass, class_association, + * class_symbol are set later in __create_builtin_classes */ + + /* #Symbol */ + symbol_Symbol = qse_stx_new_symbol (stx, QSE_T("Symbol")); + /* #Metaclass */ + symbol_Metaclass = qse_stx_new_symbol (stx, QSE_T("Metaclass")); + /* #Association */ + symbol_Association = qse_stx_new_symbol (stx, QSE_T("Association")); + + /* Symbol setName: #Symbol */ + QSE_STX_WORD_AT(stx,stx->class_symbol,QSE_STX_CLASS_NAME) = symbol_Symbol; + /* Metaclass setName: #Metaclass */ + QSE_STX_WORD_AT(stx,stx->class_metaclass,QSE_STX_CLASS_NAME) = symbol_Metaclass; + /* Association setName: #Association */ + QSE_STX_WORD_AT(stx,stx->class_association,QSE_STX_CLASS_NAME) = symbol_Association; + + /* register class names into the system dictionary */ + qse_stx_dict_put (stx, + stx->smalltalk, symbol_Symbol, stx->class_symbol); + qse_stx_dict_put (stx, + stx->smalltalk, symbol_Metaclass, stx->class_metaclass); + qse_stx_dict_put (stx, + stx->smalltalk, symbol_Association, stx->class_association); +} + +static void __create_builtin_classes (qse_stx_t* stx) +{ + class_info_t* p; + qse_word_t class, superclass, array; + qse_stx_class_t* class_obj, * superclass_obj; + qse_word_t metaclass; + qse_stx_metaclass_t* metaclass_obj; + qse_word_t n, nfields; + + qse_assert (stx->class_array != stx->nil); + + for (p = class_info; p->name != QSE_NULL; p++) { + class = qse_stx_lookup_class(stx, p->name); + if (class == stx->nil) { + class = qse_stx_new_class (stx, p->name); + } + + qse_assert (class != stx->nil); + class_obj = (qse_stx_class_t*)QSE_STX_OBJECT(stx, class); + class_obj->superclass = (p->superclass == QSE_NULL)? + stx->nil: qse_stx_lookup_class(stx,p->superclass); + + nfields = 0; + if (p->superclass != QSE_NULL) { + qse_word_t meta; + qse_stx_metaclass_t* meta_obj; + + superclass = qse_stx_lookup_class(stx,p->superclass); + qse_assert (superclass != stx->nil); + + meta = class_obj->header.class; + meta_obj = (qse_stx_metaclass_t*)QSE_STX_OBJECT(stx,meta); + meta_obj->superclass = QSE_STX_CLASS(stx,superclass); + meta_obj->instance_class = class; + + while (superclass != stx->nil) { + superclass_obj = (qse_stx_class_t*) + QSE_STX_OBJECT(stx,superclass); + nfields += + QSE_STX_FROM_SMALLINT(superclass_obj->spec) >> + QSE_STX_SPEC_INDEXABLE_BITS; + superclass = superclass_obj->superclass; + } + + } + + if (p->instance_variables != QSE_NULL) { + nfields += __count_names (p->instance_variables); + class_obj->variables = + __new_string (stx, p->instance_variables); + } + + qse_assert (nfields <= 0 || (nfields > 0 && + (p->indexable == QSE_STX_SPEC_NOT_INDEXABLE || + p->indexable == QSE_STX_SPEC_WORD_INDEXABLE))); + + class_obj->spec = QSE_STX_TO_SMALLINT( + (nfields << QSE_STX_SPEC_INDEXABLE_BITS) | p->indexable); + } + + for (p = class_info; p->name != QSE_NULL; p++) { + class = qse_stx_lookup_class(stx, p->name); + qse_assert (class != stx->nil); + + class_obj = (qse_stx_class_t*)QSE_STX_OBJECT(stx, class); + + if (p->class_variables != QSE_NULL) { + class_obj->class_variables = + __make_classvar_dict(stx, class, p->class_variables); + } + + /* + TODO: + if (p->pool_dictionaries != QSE_NULL) { + class_obj->pool_dictionaries = + __make_pool_dictionary(stx, class, p->pool_dictionaries); + } + */ + } + + /* fill subclasses */ + for (p = class_info; p->name != QSE_NULL; p++) { + n = __count_subclasses (p->name); + array = qse_stx_new_array (stx, n); + __set_subclasses (stx, QSE_STX_DATA(stx,array), p->name); + + class = qse_stx_lookup_class(stx, p->name); + qse_assert (class != stx->nil); + class_obj = (qse_stx_class_t*)QSE_STX_OBJECT(stx, class); + class_obj->subclasses = array; + } + + /* fill subclasses for metaclasses */ + for (p = class_info; p->name != QSE_NULL; p++) { + n = __count_subclasses (p->name); + array = qse_stx_new_array (stx, n); + __set_metaclass_subclasses (stx, QSE_STX_DATA(stx,array), p->name); + + class = qse_stx_lookup_class(stx, p->name); + qse_assert (class != stx->nil); + metaclass = QSE_STX_CLASS(stx,class); + metaclass_obj = (qse_stx_metaclass_t*)QSE_STX_OBJECT(stx, metaclass); + metaclass_obj->subclasses = array; + } +} + +static qse_word_t __count_names (const qse_char_t* str) +{ + qse_word_t n = 0; + const qse_char_t* p = str; + + do { + while (*p == QSE_T(' ') || + *p == QSE_T('\t')) p++; + if (*p == QSE_T('\0')) break; + + n++; + while (*p != QSE_T(' ') && + *p != QSE_T('\t') && + *p != QSE_T('\0')) p++; + } while (1); + + return n; +} + +static void __set_names ( + qse_stx_t* stx, qse_word_t* array, const qse_char_t* str) +{ + qse_word_t n = 0; + const qse_char_t* p = str; + const qse_char_t* name; + + do { + while (*p == QSE_T(' ') || + *p == QSE_T('\t')) p++; + if (*p == QSE_T('\0')) break; + + name = p; + while (*p != QSE_T(' ') && + *p != QSE_T('\t') && + *p != QSE_T('\0')) p++; + + array[n++] = qse_stx_new_symbolx (stx, name, p - name); + } while (1); +} + +static qse_word_t __count_subclasses (const qse_char_t* str) +{ + class_info_t* p; + qse_word_t n = 0; + + for (p = class_info; p->name != QSE_NULL; p++) { + if (p->superclass == QSE_NULL) continue; + if (qse_strcmp (str, p->superclass) == 0) n++; + } + + return n; +} + +static void __set_subclasses ( + qse_stx_t* stx, qse_word_t* array, const qse_char_t* str) +{ + class_info_t* p; + qse_word_t n = 0, class; + + for (p = class_info; p->name != QSE_NULL; p++) { + if (p->superclass == QSE_NULL) continue; + if (qse_strcmp (str, p->superclass) != 0) continue; + class = qse_stx_lookup_class (stx, p->name); + qse_assert (class != stx->nil); + array[n++] = class; + } +} + +static void __set_metaclass_subclasses ( + qse_stx_t* stx, qse_word_t* array, const qse_char_t* str) +{ + class_info_t* p; + qse_word_t n = 0, class; + + for (p = class_info; p->name != QSE_NULL; p++) { + if (p->superclass == QSE_NULL) continue; + if (qse_strcmp (str, p->superclass) != 0) continue; + class = qse_stx_lookup_class (stx, p->name); + qse_assert (class != stx->nil); + array[n++] = QSE_STX_CLASS(stx,class); + } +} + +static qse_word_t __make_classvar_dict ( + qse_stx_t* stx, qse_word_t class, const qse_char_t* names) +{ + qse_word_t dict, symbol; + const qse_char_t* p = names; + const qse_char_t* name; + + dict = qse_stx_instantiate ( + stx, stx->class_system_dictionary, + QSE_NULL, QSE_NULL, __count_names(names)); + + do { + while (*p == QSE_T(' ') || + *p == QSE_T('\t')) p++; + if (*p == QSE_T('\0')) break; + + name = p; + while (*p != QSE_T(' ') && + *p != QSE_T('\t') && + *p != QSE_T('\0')) p++; + + symbol = qse_stx_new_symbolx (stx, name, p - name); + qse_stx_dict_put (stx, dict, symbol, stx->nil); + } while (1); + + return dict; +} + +static void __filein_kernel (qse_stx_t* stx) +{ + class_info_t* p; + + for (p = class_info; p->name != QSE_NULL; p++) { + /* TODO: */ + } +} + diff --git a/qse/lib/stx/bootstrp.h b/qse/lib/stx/bootstrp.h new file mode 100644 index 00000000..7a3e6d6e --- /dev/null +++ b/qse/lib/stx/bootstrp.h @@ -0,0 +1,21 @@ +/* + * $Id: bootstrp.h 118 2008-03-03 11:21:33Z baconevi $ + */ + +#ifndef _QSE_STX_BOOTSTRP_H_ +#define _QSE_STX_BOOTSTRP_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +qse_word_t qse_stx_new_array (qse_stx_t* stx, qse_word_t size); +int qse_stx_bootstrap (qse_stx_t* stx); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/qse/lib/stx/bytecode.c b/qse/lib/stx/bytecode.c new file mode 100644 index 00000000..87c034f7 --- /dev/null +++ b/qse/lib/stx/bytecode.c @@ -0,0 +1,193 @@ +/* + * $Id: bytecode.c 118 2008-03-03 11:21:33Z baconevi $ + */ +#include +#include +#include +#include + +static void __decode1 (qse_stx_t* stx, qse_word_t idx, void* data); +static int __decode2 (qse_stx_t* stx, + qse_stx_class_t* class_obj, qse_stx_method_t* method_obj); + +int qse_stx_decode (qse_stx_t* stx, qse_word_t class) +{ + qse_stx_class_t* class_obj; + + class_obj = (qse_stx_class_t*)QSE_STX_OBJECT(stx, class); + if (class_obj->methods == stx->nil) return 0; + +/* TODO */ + qse_stx_dict_traverse (stx, class_obj->methods, __decode1, class_obj); + return 0; +} + +#include +static void __dump_object (qse_stx_t* stx, qse_word_t obj) +{ + if (QSE_STX_IS_SMALLINT(obj)) { + qse_printf (QSE_T("%d"), QSE_STX_FROM_SMALLINT(obj)); + } + else if (QSE_STX_CLASS(stx,obj) == stx->class_character) { + qse_printf (QSE_T("$%c"), QSE_STX_WORD_AT(stx,obj,0)); + } + else if (QSE_STX_CLASS(stx,obj) == stx->class_string) { + qse_printf (QSE_T("'%s'"), QSE_STX_DATA(stx,obj)); + } + else if (QSE_STX_CLASS(stx,obj) == stx->class_symbol) { + qse_printf (QSE_T("#%s"), QSE_STX_DATA(stx,obj)); + } + else if (QSE_STX_IS_CHAR_OBJECT(stx, obj)) { + qse_printf (QSE_T("unknow char object [%s]"), QSE_STX_DATA(stx,obj)); + } + else if (QSE_STX_IS_BYTE_OBJECT(stx, obj)) { + qse_printf (QSE_T("unknown byte object"), QSE_STX_DATA(stx,obj)); + } + else if (QSE_STX_IS_WORD_OBJECT(stx, obj)) { + qse_printf (QSE_T("unknown word object"), QSE_STX_DATA(stx,obj)); + } + else { + qse_printf (QSE_T("invalid object type")); + } +} + +static void __decode1 (qse_stx_t* stx, qse_word_t idx, void* data) +{ + qse_stx_method_t* method_obj; + qse_stx_class_t* class_obj; + qse_word_t key = QSE_STX_WORD_AT(stx,idx,QSE_STX_ASSOCIATION_KEY); + qse_word_t value = QSE_STX_WORD_AT(stx,idx,QSE_STX_ASSOCIATION_VALUE); + qse_word_t* literals; + qse_word_t literal_count, i; + + qse_word_t method_class; + qse_stx_class_t* method_class_obj; + + class_obj = (qse_stx_class_t*)data; + + qse_printf (QSE_T("* Method: %s\n"), QSE_STX_DATA(stx, key)); + method_obj = (qse_stx_method_t*)QSE_STX_OBJECT(stx, value); + + literals = method_obj->literals; + /* + literal_count = QSE_STX_SIZE(stx, value) - + (QSE_STX_FROM_SMALLINT(class_obj->spec) >> QSE_STX_SPEC_INDEXABLE_BITS); + */ + method_class = QSE_STX_CLASS(stx,value); + method_class_obj = QSE_STX_OBJECT(stx, method_class); + literal_count = QSE_STX_SIZE(stx,value) - + (QSE_STX_FROM_SMALLINT(method_class_obj->spec) >> QSE_STX_SPEC_INDEXABLE_BITS); + + qse_printf (QSE_T("* Literal Count: %d, Temporary Count: %d, Argument Count: %d\n"), + literal_count, + QSE_STX_FROM_SMALLINT(method_obj->tmpcount), + QSE_STX_FROM_SMALLINT(method_obj->argcount)); + for (i = 0; i < literal_count; i++) { + qse_printf (QSE_T("%d. ["), i); + __dump_object (stx, literals[i]); + qse_printf (QSE_T("]\n")); + } + __decode2 (stx, data, method_obj); +} + +static int __decode2 (qse_stx_t* stx, + qse_stx_class_t* class_obj, qse_stx_method_t* method_obj) +{ + qse_stx_byte_object_t* bytecodes; + qse_word_t bytecode_size, pc = 0; + int code, next, next2; + + static const qse_char_t* stack_opcode_names[] = + { + QSE_T("push_receiver_variable"), + QSE_T("push_temporary_location"), + QSE_T("push_literal_constant"), + QSE_T("push_literal_variable"), + QSE_T("store_receiver_variable"), + QSE_T("store_temporary_location") + }; + + static const qse_char_t* send_opcode_names[] = + { + QSE_T("send_to_self"), + QSE_T("send_to_super") + }; + + static const qse_char_t* stack_special_opcode_names[] = + { + QSE_T("pop_stack_top"), + QSE_T("duplicate_pop_stack_top"), + QSE_T("push_active_context"), + QSE_T("push_nil"), + QSE_T("push_true"), + QSE_T("push_false"), + QSE_T("push_receiver") + }; + + static const qse_char_t* return_opcode_names[] = + { + QSE_T("return_receiver"), + QSE_T("return_true"), + QSE_T("return_false"), + QSE_T("return_nil"), + QSE_T("return_from_message"), + QSE_T("return_from_block") + }; + + bytecodes = QSE_STX_BYTE_OBJECT(stx, method_obj->bytecodes); + bytecode_size = QSE_STX_SIZE(stx, method_obj->bytecodes); + + while (pc < bytecode_size) { + code = bytecodes->data[pc++]; + + if (code >= 0x00 && code <= 0x5F) { + /* stack */ + qse_printf (QSE_T("%s %d\n"), + stack_opcode_names[code >> 4], code & 0x0F); + } + else if (code >= 0x60 && code <= 0x65) { + /* stack extended */ + next = bytecodes->data[pc++]; + qse_printf (QSE_T("%s %d\n"), + stack_opcode_names[code & 0x0F], next); + } + else if (code >= 0x67 && code <= 0x6D) { + /* stack special */ + qse_printf (QSE_T("%s\n"), + stack_special_opcode_names[code - 0x67]); + } + + else if (code >= 0x70 && code <= 0x71 ) { + /* send message */ + next = bytecodes->data[pc++]; + qse_printf (QSE_T("%s nargs(%d) selector(%d)\n"), + send_opcode_names[code - 0x70], next >> 5, next & 0x1F); + } + else if (code >= 0x72 && code <= 0x73 ) { + /* send message extended */ + next = bytecodes->data[pc++]; + next2 = bytecodes->data[pc++]; + qse_printf (QSE_T("%s %d %d\n"), + send_opcode_names[code - 0x72], next, next2); + + } + else if (code >= 0x78 && code <= 0x7D) { + qse_printf (QSE_T("%s\n"), + return_opcode_names[code - 0x78]); + } + else if (code >= 0x80 && code <= 0x8F) { + // jump + } + else if (code >= 0xF0 && code <= 0xFF) { + // primitive + next = bytecodes->data[pc++]; + qse_printf (QSE_T("do_primitive %d\n"), ((code & 0x0F) << 8) | next); + + } + else { + qse_printf (QSE_T("unknown byte code 0x%x\n"), code); + } + } + + return 0; +} diff --git a/qse/stx/bytecode.h b/qse/lib/stx/bytecode.h similarity index 91% rename from qse/stx/bytecode.h rename to qse/lib/stx/bytecode.h index 396cba96..93d2e1c7 100644 --- a/qse/stx/bytecode.h +++ b/qse/lib/stx/bytecode.h @@ -2,10 +2,10 @@ * $Id: bytecode.h 118 2008-03-03 11:21:33Z baconevi $ */ -#ifndef _ASE_STX_BYTECODE_H_ -#define _ASE_STX_BYTECODE_H_ +#ifndef _QSE_STX_BYTECODE_H_ +#define _QSE_STX_BYTECODE_H_ -#include +#include #define PUSH_RECEIVER_VARIABLE 0x00 #define PUSH_TEMPORARY_LOCATION 0x10 @@ -47,7 +47,7 @@ extern "C" { #endif -int ase_stx_decode (ase_stx_t* stx, ase_word_t class_idx); +int qse_stx_decode (qse_stx_t* stx, qse_word_t class_idx); #ifdef __cplusplus } diff --git a/qse/lib/stx/class.c b/qse/lib/stx/class.c new file mode 100644 index 00000000..9dc39a2a --- /dev/null +++ b/qse/lib/stx/class.c @@ -0,0 +1,168 @@ +/* + * $Id: class.c 118 2008-03-03 11:21:33Z baconevi $ + */ + +#include +#include +#include +#include +#include + +qse_word_t qse_stx_new_class (qse_stx_t* stx, const qse_char_t* name) +{ + qse_word_t meta, class; + qse_word_t class_name; + + meta = qse_stx_alloc_word_object ( + stx, QSE_NULL, QSE_STX_METACLASS_SIZE, QSE_NULL, 0); + QSE_STX_CLASS(stx,meta) = stx->class_metaclass; + /* the spec of the metaclass must be the spec of its + * instance. so the QSE_STX_CLASS_SIZE is set */ + QSE_STX_WORD_AT(stx,meta,QSE_STX_METACLASS_SPEC) = + QSE_STX_TO_SMALLINT((QSE_STX_CLASS_SIZE << QSE_STX_SPEC_INDEXABLE_BITS) | QSE_STX_SPEC_NOT_INDEXABLE); + + /* the spec of the class is set later in __create_builtin_classes */ + class = qse_stx_alloc_word_object ( + stx, QSE_NULL, QSE_STX_CLASS_SIZE, QSE_NULL, 0); + QSE_STX_CLASS(stx,class) = meta; + class_name = qse_stx_new_symbol (stx, name); + QSE_STX_WORD_AT(stx,class,QSE_STX_CLASS_NAME) = class_name; + + qse_stx_dict_put (stx, stx->smalltalk, class_name, class); + return class; +} + +qse_word_t qse_stx_lookup_class (qse_stx_t* stx, const qse_char_t* name) +{ + qse_word_t assoc, meta, value; + + assoc = qse_stx_dict_lookup (stx, stx->smalltalk, name); + if (assoc == stx->nil) { + return stx->nil; + } + + value = QSE_STX_WORD_AT(stx,assoc,QSE_STX_ASSOCIATION_VALUE); + meta = QSE_STX_CLASS(stx,value); + if (QSE_STX_CLASS(stx,meta) != stx->class_metaclass) return stx->nil; + + return value; +} + +int qse_stx_get_instance_variable_index ( + qse_stx_t* stx, qse_word_t class_index, + const qse_char_t* name, qse_word_t* index) +{ + qse_word_t index_super = 0; + qse_stx_class_t* class_obj; + qse_stx_char_object_t* string; + + class_obj = (qse_stx_class_t*)QSE_STX_OBJECT(stx, class_index); + qse_assert (class_obj != QSE_NULL); + + if (class_obj->superclass != stx->nil) { + if (qse_stx_get_instance_variable_index ( + stx, class_obj->superclass, name, &index_super) == 0) { + *index = index_super; + return 0; + } + } + + if (class_obj->header.class == stx->class_metaclass) { + /* metaclass */ + /* TODO: can a metaclas have instance variables? */ + *index = index_super; + } + else { + if (class_obj->variables == stx->nil) *index = 0; + else { + string = QSE_STX_CHAR_OBJECT(stx, class_obj->variables); + if (qse_stx_strword(string->data, name, index) != QSE_NULL) { + *index += index_super; + return 0; + } + } + + *index += index_super; + } + + return -1; +} + +qse_word_t qse_stx_lookup_class_variable ( + qse_stx_t* stx, qse_word_t class_index, const qse_char_t* name) +{ + qse_stx_class_t* class_obj; + + class_obj = (qse_stx_class_t*)QSE_STX_OBJECT(stx, class_index); + qse_assert (class_obj != QSE_NULL); + + if (class_obj->superclass != stx->nil) { + qse_word_t tmp; + tmp = qse_stx_lookup_class_variable ( + stx, class_obj->superclass, name); + if (tmp != stx->nil) return tmp; + } + + /* TODO: can a metaclas have class variables? */ + if (class_obj->header.class != stx->class_metaclass && + class_obj->class_variables != stx->nil) { + if (qse_stx_dict_lookup(stx, + class_obj->class_variables,name) != stx->nil) return class_index; + } + + return stx->nil; +} + +qse_word_t qse_stx_lookup_method (qse_stx_t* stx, + qse_word_t class_index, const qse_char_t* name, qse_bool_t from_super) +{ + qse_stx_class_t* class_obj; + + class_obj = (qse_stx_class_t*)QSE_STX_OBJECT(stx, class_index); + qse_assert (class_obj != QSE_NULL); + +#if 0 + if (class_obj->header.class != stx->class_metaclass && + class_obj->methods != stx->nil) { + qse_word_t assoc; + assoc = qse_stx_dict_lookup(stx, class_obj->methods, name); + if (assoc != stx->nil) { + qse_assert (QSE_STX_CLASS(stx,assoc) == stx->class_association); + return QSE_STX_WORD_AT(stx, assoc, QSE_STX_ASSOCIATION_VALUE); + } + } + + if (class_obj->superclass != stx->nil) { + qse_word_t tmp; + tmp = qse_stx_lookup_method ( + stx, class_obj->superclass, name); + if (tmp != stx->nil) return tmp; + } +#endif + + while (class_index != stx->nil) { + class_obj = (qse_stx_class_t*)QSE_STX_OBJECT(stx, class_index); + + qse_assert (class_obj != QSE_NULL); + qse_assert ( + class_obj->header.class == stx->class_metaclass || + QSE_STX_CLASS(stx,class_obj->header.class) == stx->class_metaclass); + + if (from_super) { + from_super = qse_false; + } + else if (class_obj->methods != stx->nil) { + qse_word_t assoc; + assoc = qse_stx_dict_lookup(stx, class_obj->methods, name); + if (assoc != stx->nil) { + qse_assert (QSE_STX_CLASS(stx,assoc) == stx->class_association); + return QSE_STX_WORD_AT(stx, assoc, QSE_STX_ASSOCIATION_VALUE); + } + } + + class_index = class_obj->superclass; + } + + return stx->nil; +} + diff --git a/qse/lib/stx/class.h b/qse/lib/stx/class.h new file mode 100644 index 00000000..9c3716e2 --- /dev/null +++ b/qse/lib/stx/class.h @@ -0,0 +1,81 @@ +/* + * $Id: class.h 118 2008-03-03 11:21:33Z baconevi $ + */ + +#ifndef _QSE_STX_CLASS_H_ +#define _QSE_STX_CLASS_H_ + +#include + +/* definitions for common objects */ +#define QSE_STX_CLASS_SIZE 8 +#define QSE_STX_CLASS_SPEC 0 +#define QSE_STX_CLASS_METHODS 1 +#define QSE_STX_CLASS_SUPERCLASS 2 +#define QSE_STX_CLASS_SUBCLASSES 3 +#define QSE_STX_CLASS_NAME 4 +#define QSE_STX_CLASS_VARIABLES 5 +#define QSE_STX_CLASS_CLASS_VARIABLES 6 +#define QSE_STX_CLASS_POOL_DICTIONARIES 7 + +#define QSE_STX_METACLASS_SIZE 5 +#define QSE_STX_METACLASS_SPEC 0 +#define QSE_STX_METACLASS_METHODS 1 +#define QSE_STX_METACLASS_SUPERCLASS 2 +#define QSE_STX_METACLASS_SUBCLASSES 3 +#define QSE_STX_METACLASS_INSTANCE_CLASS 4 + +#define QSE_STX_SPEC_INDEXABLE_BITS 2 +#define QSE_STX_SPEC_INDEXABLE_MASK 3 +#define QSE_STX_SPEC_NOT_INDEXABLE 0 +#define QSE_STX_SPEC_WORD_INDEXABLE 1 +#define QSE_STX_SPEC_BYTE_INDEXABLE 2 +#define QSE_STX_SPEC_CHAR_INDEXABLE 3 + +struct qse_stx_class_t +{ + qse_stx_objhdr_t header; + qse_word_t spec; /* indexable: 2, nfields: the rest */ + qse_word_t methods; + qse_word_t superclass; + qse_word_t subclasses; + qse_word_t name; + qse_word_t variables; + qse_word_t class_variables; + qse_word_t pool_dictonaries; +}; + +struct qse_stx_metaclass_t +{ + qse_stx_objhdr_t header; + qse_word_t spec; + qse_word_t methods; + qse_word_t superclass; + qse_word_t subclasses; + qse_word_t instance_class; +}; + +typedef struct qse_stx_class_t qse_stx_class_t; +typedef struct qse_stx_metaclass_t qse_stx_metaclass_t; + +#ifdef __cplusplus +extern "C" { +#endif + +qse_word_t qse_stx_new_class (qse_stx_t* stx, const qse_char_t* name); +qse_word_t qse_stx_lookup_class (qse_stx_t* stx, const qse_char_t* name); + +int qse_stx_get_instance_variable_index ( + qse_stx_t* stx, qse_word_t class_index, + const qse_char_t* name, qse_word_t* index); + +qse_word_t qse_stx_lookup_class_variable ( + qse_stx_t* stx, qse_word_t class_index, const qse_char_t* name); +qse_word_t qse_stx_lookup_method (qse_stx_t* stx, + qse_word_t class_index, const qse_char_t* name, qse_bool_t from_super); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/qse/lib/stx/context.c b/qse/lib/stx/context.c new file mode 100644 index 00000000..df1e270d --- /dev/null +++ b/qse/lib/stx/context.c @@ -0,0 +1,75 @@ +/* + * $Id: context.c 118 2008-03-03 11:21:33Z baconevi $ + */ + +#include +#include +#include +#include + +qse_word_t qse_stx_new_context (qse_stx_t* stx, + qse_word_t method, qse_word_t args, qse_word_t temp) +{ + qse_word_t context; + qse_stx_context_t* obj; + + context = qse_stx_alloc_word_object( + stx, QSE_NULL, QSE_STX_CONTEXT_SIZE, QSE_NULL, 0); + obj = (qse_stx_context_t*)QSE_STX_OBJECT(stx,context); + obj->header.class = qse_stx_lookup_class(stx,QSE_T("Context")); + obj->ip = QSE_STX_TO_SMALLINT(0); + obj->method = method; + obj->arguments = args; + obj->temporaries = temp; + + return context; +} + +static qse_byte_t __fetch_byte ( + qse_stx_t* stx, qse_stx_context_t* context_obj) +{ + qse_word_t ip, method; + + qse_assert (QSE_STX_IS_SMALLINT(context_obj->ip)); + ip = QSE_STX_FROM_SMALLINT(context_obj->ip); + method = context_obj->method; + + /* increment instruction pointer */ + context_obj->ip = QSE_STX_TO_SMALLINT(ip + 1); + + qse_assert (QSE_STX_TYPE(stx,method) == QSE_STX_BYTE_INDEXED); + return QSE_STX_BYTE_AT(stx,method,ip); +} + +int qse_stx_run_context (qse_stx_t* stx, qse_word_t context) +{ + qse_byte_t byte, operand; + qse_stx_context_t* context_obj; + + context_obj = (qse_stx_context_t*)QSE_STX_OBJECT(stx,context); + + while (!stx->__wantabort) { + /* check_process_switch (); // hopefully */ + byte = __fetch_byte (stx, context_obj); + +#ifdef _DOS +printf (QSE_T("code: %x\n"), byte); +#else +qse_printf (QSE_T("code: %x\n"), byte); +#endif + + switch (byte) { + case PUSH_OBJECT: + operand = __fetch_byte (stx, context_obj); + break; + case SEND_UNARY_MESSAGE: + operand = __fetch_byte (stx, context_obj); + break; + case HALT: + goto exit_run_context; + } + } + +exit_run_context: + return 0; +} diff --git a/qse/lib/stx/context.h b/qse/lib/stx/context.h new file mode 100644 index 00000000..7a785013 --- /dev/null +++ b/qse/lib/stx/context.h @@ -0,0 +1,43 @@ +/* + * $Id: context.h 118 2008-03-03 11:21:33Z baconevi $ + */ + +#ifndef _QSE_STX_CONTEXT_H_ +#define _QSE_STX_CONTEXT_H_ + +#include + +#define PUSH_OBJECT 0xA0 +#define SEND_UNARY_MESSAGE 0xB0 +#define HALT 0xFF + +#define QSE_STX_CONTEXT_SIZE 4 +#define QSE_STX_CONTEXT_IP 0 +#define QSE_STX_CONTEXT_METHOD 1 +#define QSE_STX_CONTEXT_ARGUMENTS 2 +#define QSE_STX_CONTEXT_TEMPORARIES 3 + +struct qse_stx_context_t +{ + qse_stx_objhdr_t header; + qse_word_t ip; + qse_word_t method; + qse_word_t arguments; + qse_word_t temporaries; +}; + +typedef struct qse_stx_context_t qse_stx_context_t; + +#ifdef __cplusplus +extern "C" { +#endif + +qse_word_t qse_stx_new_context (qse_stx_t* stx, + qse_word_t method, qse_word_t args, qse_word_t temp); +int qse_stx_run_context (qse_stx_t* stx, qse_word_t context); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/qse/lib/stx/dict.c b/qse/lib/stx/dict.c new file mode 100644 index 00000000..979d66b8 --- /dev/null +++ b/qse/lib/stx/dict.c @@ -0,0 +1,190 @@ +/* + * $Id: dict.c 118 2008-03-03 11:21:33Z baconevi $ + */ + +#include +#include +#include + +/* NOTE: + * The code here implements SystemDictionary whose key is always a symbol. + * Dictionary, on the contrary, can accept any object as a key. + */ + +qse_word_t __new_association ( + qse_stx_t* stx, qse_word_t key, qse_word_t value) +{ + qse_word_t x; +#ifdef __GNUC__ + qse_word_t data[2] = { key, value }; +#else + qse_word_t data[2]; + data[0] = key; + data[1] = value; +#endif + x = qse_stx_alloc_word_object ( + stx, data, QSE_STX_ASSOCIATION_SIZE, QSE_NULL, 0); + QSE_STX_CLASS(stx,x) = stx->class_association; + return x; +} + +static qse_word_t __dict_find_slot ( + qse_stx_t* stx, qse_word_t dict, qse_word_t key) +{ + qse_word_t size, hash, index, assoc, symbol; + qse_stx_word_object_t* dict_obj; + + qse_assert (!QSE_STX_IS_SMALLINT(dict) && + QSE_STX_IS_WORD_OBJECT(stx, dict)); + qse_assert (dict == stx->smalltalk || + qse_stx_classof(stx,dict) == stx->class_system_dictionary); + qse_assert (qse_stx_classof(stx,key) == stx->class_symbol); + + size = QSE_STX_SIZE(stx,dict); + hash = qse_stx_hash_object(stx, key); + + /* consider tally, the only instance variable of a system dictionary */ + index = hash % (size - 1) + 1; + + dict_obj = QSE_STX_WORD_OBJECT(stx,dict); + + while (1) { + assoc = dict_obj->data[index]; + if (assoc == stx->nil) break; + + symbol = QSE_STX_WORD_AT(stx,assoc,QSE_STX_ASSOCIATION_KEY); + qse_assert (qse_stx_classof(stx,symbol) == stx->class_symbol); + + /* NOTE: + * shallow comparison is enough for identity check + * because a symbol can just be a key of a system dictionary + */ + if (qse_strxncmp( + QSE_STX_DATA(stx,key), QSE_STX_SIZE(stx,key), + QSE_STX_DATA(stx,symbol), QSE_STX_SIZE(stx,symbol)) == 0) break; + + /* consider tally here too */ + index = index % (size - 1) + 1; + } + + return index; +} + +static void __grow_dict (qse_stx_t* stx, qse_word_t dict) +{ + qse_word_t new, size, index, assoc; + + /* WARNING: + * if this assertion fails, adjust the initial size of the + * system dictionary. i don't want this function to be called + * during the bootstrapping. + */ + qse_assert (stx->class_system_dictionary != stx->nil); + qse_assert (qse_stx_classof(stx,dict) == stx->class_system_dictionary); + + size = QSE_STX_SIZE(stx,dict); + new = qse_stx_instantiate (stx, + QSE_STX_CLASS(stx,dict), QSE_NULL, QSE_NULL, (size - 1) * 2); + QSE_STX_WORD_AT(stx,new,0) = QSE_STX_TO_SMALLINT(0); + + for (index = 1; index < size; index++) { + assoc = QSE_STX_WORD_AT(stx,dict,index); + if (assoc == stx->nil) continue; + + qse_stx_dict_put (stx, new, + QSE_STX_WORD_AT(stx,assoc,QSE_STX_ASSOCIATION_KEY), + QSE_STX_WORD_AT(stx,assoc,QSE_STX_ASSOCIATION_VALUE)); + } + + /* TODO: explore if dict can be immediately destroyed. */ + + qse_assert (qse_sizeof(qse_stx_object_t*) == qse_sizeof(qse_uint_t)); + QSE_SWAP (QSE_STX_OBJECT(stx,dict), + QSE_STX_OBJECT(stx,new), + qse_stx_object_t*, qse_uint_t); +} + +qse_word_t qse_stx_dict_lookup ( + qse_stx_t* stx, qse_word_t dict, const qse_char_t* key) +{ + qse_word_t size, hash, index, assoc, symbol; + qse_stx_word_object_t* dict_obj; + + qse_assert (!QSE_STX_IS_SMALLINT(dict) && + QSE_STX_IS_WORD_OBJECT(stx, dict)); + qse_assert (dict == stx->smalltalk || + qse_stx_classof(stx,dict) == stx->class_system_dictionary); + + size = QSE_STX_SIZE(stx,dict); + hash = qse_stx_hash(key, qse_strlen(key) * qse_sizeof(qse_char_t)); + + /* consider tally, the only instance variable of a system dictionary */ + index = hash % (size - 1) + 1; + + dict_obj = QSE_STX_WORD_OBJECT(stx,dict); + + while (1) { + assoc = dict_obj->data[index]; + if (assoc == stx->nil) break; + + symbol = QSE_STX_WORD_AT(stx,assoc,QSE_STX_ASSOCIATION_KEY); + qse_assert (qse_stx_classof(stx,symbol) == stx->class_symbol); + + if (qse_strxcmp (QSE_STX_DATA(stx,symbol), + QSE_STX_SIZE(stx,symbol), key) == 0) break; + + /* consider tally here too */ + index = index % (size - 1) + 1; + } + + return QSE_STX_WORD_AT(stx,dict,index); +} + +qse_word_t qse_stx_dict_get (qse_stx_t* stx, qse_word_t dict, qse_word_t key) +{ + return QSE_STX_WORD_AT(stx,dict,__dict_find_slot(stx, dict, key)); +} + +qse_word_t qse_stx_dict_put ( + qse_stx_t* stx, qse_word_t dict, qse_word_t key, qse_word_t value) +{ + qse_word_t slot, capa, tally, assoc; + + /* the dictionary must have at least one slot excluding tally */ + qse_assert (QSE_STX_SIZE(stx,dict) > 1); + + capa = QSE_STX_SIZE(stx,dict) - 1; + tally = QSE_STX_FROM_SMALLINT(QSE_STX_WORD_AT(stx,dict,0)); + if (capa <= tally + 1) { + __grow_dict (stx, dict); + /* refresh tally */ + tally = QSE_STX_FROM_SMALLINT(QSE_STX_WORD_AT(stx,dict,0)); + } + + slot = __dict_find_slot (stx, dict, key); + + assoc = QSE_STX_WORD_AT(stx,dict,slot); + if (assoc == stx->nil) { + QSE_STX_WORD_AT(stx,dict,slot) = + __new_association (stx, key, value); + QSE_STX_WORD_AT(stx,dict,0) = QSE_STX_TO_SMALLINT(tally + 1); + } + else QSE_STX_WORD_AT(stx,assoc,QSE_STX_ASSOCIATION_VALUE) = value; + + return QSE_STX_WORD_AT(stx,dict,slot); +} + +void qse_stx_dict_traverse ( + qse_stx_t* stx, qse_word_t dict, + void (*func) (qse_stx_t*,qse_word_t,void*), void* data) +{ + qse_word_t index, assoc; + qse_word_t size = QSE_STX_SIZE(stx,dict); + + for (index = 1; index < size; index++) { + assoc = QSE_STX_WORD_AT(stx,dict,index); + if (assoc == stx->nil) continue; + func (stx, assoc, data); + } +} + diff --git a/qse/lib/stx/dict.h b/qse/lib/stx/dict.h new file mode 100644 index 00000000..44f72e11 --- /dev/null +++ b/qse/lib/stx/dict.h @@ -0,0 +1,42 @@ +/* + * $Id: dict.h 118 2008-03-03 11:21:33Z baconevi $ + */ + +#ifndef _QSE_STX_DICT_H_ +#define _QSE_STX_DICT_H_ + +#include + +#define QSE_STX_ASSOCIATION_SIZE 2 +#define QSE_STX_ASSOCIATION_KEY 0 +#define QSE_STX_ASSOCIATION_VALUE 1 + +struct qse_stx_association_t +{ + qse_stx_objhdr_t header; + qse_word_t key; + qse_word_t value; +}; + +typedef struct qse_stx_association_t qse_stx_association_t; + +#ifdef __cplusplus +extern "C" +#endif + +qse_word_t qse_stx_dict_lookup ( + qse_stx_t* stx, qse_word_t dict, const qse_char_t* key); +qse_word_t qse_stx_dict_get ( + qse_stx_t* stx, qse_word_t dict, qse_word_t key); +qse_word_t qse_stx_dict_put ( + qse_stx_t* stx, qse_word_t dict, qse_word_t key, qse_word_t value); +void qse_stx_dict_traverse ( + qse_stx_t* stx, qse_word_t dict, + void (*func) (qse_stx_t*,qse_word_t,void*), void* data); + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/qse/stx/interp.c b/qse/lib/stx/interp.c similarity index 57% rename from qse/stx/interp.c rename to qse/lib/stx/interp.c index 04f23b11..6b2f55f7 100644 --- a/qse/stx/interp.c +++ b/qse/lib/stx/interp.c @@ -2,13 +2,13 @@ * $Id: interp.c 118 2008-03-03 11:21:33Z baconevi $ */ -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include /* activation record @@ -37,46 +37,46 @@ receiver struct process_t { - ase_word_t* stack; - ase_word_t stack_size; - ase_word_t stack_base; - ase_word_t stack_top; + qse_word_t* stack; + qse_word_t stack_size; + qse_word_t stack_base; + qse_word_t stack_top; - ase_word_t receiver; - ase_word_t method; - ase_word_t pc; + qse_word_t receiver; + qse_word_t method; + qse_word_t pc; /* cached information about the method above */ - ase_word_t* literals; - ase_byte_t* bytecodes; - ase_word_t bytecode_size; - ase_size_t argcount; - ase_size_t tmpcount; + qse_word_t* literals; + qse_byte_t* bytecodes; + qse_word_t bytecode_size; + qse_size_t argcount; + qse_size_t tmpcount; }; typedef struct process_t process_t; -static int __run_process (ase_stx_t* stx, process_t* proc); -static int __push_to_stack (ase_stx_t* stx, - process_t* proc, ase_word_t what, ase_word_t index); -static int __store_from_stack (ase_stx_t* stx, - process_t* proc, ase_word_t what, ase_word_t index); -static int __send_message (ase_stx_t* stx, process_t* proc, - ase_word_t nargs, ase_word_t selector, ase_bool_t to_super); -static int __return_from_message (ase_stx_t* stx, process_t* proc); -static int __dispatch_primitive (ase_stx_t* stx, process_t* proc, ase_word_t no); +static int __run_process (qse_stx_t* stx, process_t* proc); +static int __push_to_stack (qse_stx_t* stx, + process_t* proc, qse_word_t what, qse_word_t index); +static int __store_from_stack (qse_stx_t* stx, + process_t* proc, qse_word_t what, qse_word_t index); +static int __send_message (qse_stx_t* stx, process_t* proc, + qse_word_t nargs, qse_word_t selector, qse_bool_t to_super); +static int __return_from_message (qse_stx_t* stx, process_t* proc); +static int __dispatch_primitive (qse_stx_t* stx, process_t* proc, qse_word_t no); -int ase_stx_interp (ase_stx_t* stx, ase_word_t receiver, ase_word_t method) +int qse_stx_interp (qse_stx_t* stx, qse_word_t receiver, qse_word_t method) { process_t proc; - ase_stx_method_t* mthobj; - ase_word_t i; + qse_stx_method_t* mthobj; + qse_word_t i; int n; // TODO: size of process stack. - proc.stack = (ase_word_t*)ase_malloc (10000 * ase_sizeof(ase_word_t)); - if (proc.stack == ASE_NULL) { -ase_printf (ASE_T("out of memory in ase_stx_interp\n")); + proc.stack = (qse_word_t*)qse_malloc (10000 * qse_sizeof(qse_word_t)); + if (proc.stack == QSE_NULL) { +qse_printf (QSE_T("out of memory in qse_stx_interp\n")); return -1; } @@ -84,15 +84,15 @@ ase_printf (ASE_T("out of memory in ase_stx_interp\n")); proc.stack_base = 0; proc.stack_top = 0; - mthobj = (ase_stx_method_t*)ASE_STX_OBJECT(stx,method); - ase_assert (mthobj != ASE_NULL); + mthobj = (qse_stx_method_t*)QSE_STX_OBJECT(stx,method); + qse_assert (mthobj != QSE_NULL); proc.literals = mthobj->literals; - proc.bytecodes = ASE_STX_DATA(stx, mthobj->bytecodes); - proc.bytecode_size = ASE_STX_SIZE(stx, mthobj->bytecodes); + proc.bytecodes = QSE_STX_DATA(stx, mthobj->bytecodes); + proc.bytecode_size = QSE_STX_SIZE(stx, mthobj->bytecodes); /* TODO: disable the method with arguments for start-up */ - proc.argcount = ASE_STX_FROM_SMALLINT(mthobj->argcount); - proc.tmpcount = ASE_STX_FROM_SMALLINT(mthobj->tmpcount); + proc.argcount = QSE_STX_FROM_SMALLINT(mthobj->argcount); + proc.tmpcount = QSE_STX_FROM_SMALLINT(mthobj->tmpcount); proc.receiver = receiver; proc.method = method; @@ -121,11 +121,11 @@ ase_printf (ASE_T("out of memory in ase_stx_interp\n")); n = __run_process (stx, &proc); - ase_free (proc.stack); + qse_free (proc.stack); return n; } -static int __run_process (ase_stx_t* stx, process_t* proc) +static int __run_process (qse_stx_t* stx, process_t* proc) { int code, next, next2; @@ -133,7 +133,7 @@ static int __run_process (ase_stx_t* stx, process_t* proc) code = proc->bytecodes[proc->pc++]; #ifdef DEBUG - ase_printf (ASE_T("code = 0x%x\n"), code); + qse_printf (QSE_T("code = 0x%x\n"), code); #endif if (code >= 0x00 && code <= 0x3F) { @@ -176,27 +176,27 @@ static int __run_process (ase_stx_t* stx, process_t* proc) /* send message to self */ next = proc->bytecodes[proc->pc++]; if (__send_message (stx, proc, next >> 5, - proc->literals[next & 0x1F], ase_false) == -1) break; + proc->literals[next & 0x1F], qse_false) == -1) break; } else if (code == 0x71) { /* send message to super */ next = proc->bytecodes[proc->pc++]; if (__send_message (stx, proc, next >> 5, - proc->literals[next & 0x1F], ase_true) == -1) break; + proc->literals[next & 0x1F], qse_true) == -1) break; } else if (code == 0x72) { /* send message to self extended */ next = proc->bytecodes[proc->pc++]; next2 = proc->bytecodes[proc->pc++]; if (__send_message (stx, proc, next >> 5, - proc->literals[next2], ase_false) == -1) break; + proc->literals[next2], qse_false) == -1) break; } else if (code == 0x73) { /* send message to super extended */ next = proc->bytecodes[proc->pc++]; next2 = proc->bytecodes[proc->pc++]; if (__send_message (stx, proc, next >> 5, - proc->literals[next2], ase_true) == -1) break; + proc->literals[next2], qse_true) == -1) break; } /* more code .... */ @@ -218,7 +218,7 @@ static int __run_process (ase_stx_t* stx, process_t* proc) } else { -ase_printf (ASE_T("INVALID OPCODE...........\n")); +qse_printf (QSE_T("INVALID OPCODE...........\n")); break; } } @@ -226,13 +226,13 @@ break; return 0; } -static int __push_to_stack (ase_stx_t* stx, - process_t* proc, ase_word_t what, ase_word_t index) +static int __push_to_stack (qse_stx_t* stx, + process_t* proc, qse_word_t what, qse_word_t index) { switch (what) { case 0: /* receiver variable */ proc->stack[proc->stack_top++] = - ASE_STX_WORD_AT(stx, proc->stack[proc->stack_base], index); + QSE_STX_WORD_AT(stx, proc->stack[proc->stack_base], index); break; case 1: /* temporary variable */ proc->stack[proc->stack_top++] = @@ -248,12 +248,12 @@ static int __push_to_stack (ase_stx_t* stx, return 0; } -static int __store_from_stack (ase_stx_t* stx, - process_t* proc, ase_word_t what, ase_word_t index) +static int __store_from_stack (qse_stx_t* stx, + process_t* proc, qse_word_t what, qse_word_t index) { switch (what) { case 4: /* receiver variable */ - ASE_STX_WORD_AT(stx,proc->stack[proc->stack_base],index) = proc->stack[--proc->stack_top]; + QSE_STX_WORD_AT(stx,proc->stack[proc->stack_base],index) = proc->stack[--proc->stack_top]; break; case 5: /* temporary location */ proc->stack[proc->stack_base + 1 + index] = proc->stack[--proc->stack_top]; @@ -263,29 +263,29 @@ static int __store_from_stack (ase_stx_t* stx, return 0; } -static int __send_message (ase_stx_t* stx, process_t* proc, - ase_word_t nargs, ase_word_t selector, ase_bool_t to_super) +static int __send_message (qse_stx_t* stx, process_t* proc, + qse_word_t nargs, qse_word_t selector, qse_bool_t to_super) { - ase_word_t receiver, method; - ase_word_t i, tmpcount, argcount; - ase_stx_method_t* mthobj; + qse_word_t receiver, method; + qse_word_t i, tmpcount, argcount; + qse_stx_method_t* mthobj; - ase_assert (ASE_STX_CLASS(stx,selector) == stx->class_symbol); + qse_assert (QSE_STX_CLASS(stx,selector) == stx->class_symbol); receiver = proc->stack[proc->stack_top - nargs - 1]; - method = ase_stx_lookup_method ( - stx, ASE_STX_CLASS(stx,receiver), - ASE_STX_DATA(stx,selector), to_super); + method = qse_stx_lookup_method ( + stx, QSE_STX_CLASS(stx,receiver), + QSE_STX_DATA(stx,selector), to_super); if (method == stx->nil) { -ase_printf (ASE_T("cannot find the method....\n")); +qse_printf (QSE_T("cannot find the method....\n")); return -1; } - mthobj = (ase_stx_method_t*)ASE_STX_OBJECT(stx,method); + mthobj = (qse_stx_method_t*)QSE_STX_OBJECT(stx,method); - argcount = ASE_STX_FROM_SMALLINT(mthobj->argcount); - tmpcount = ASE_STX_FROM_SMALLINT(mthobj->tmpcount); - ase_assert (argcount == nargs); + argcount = QSE_STX_FROM_SMALLINT(mthobj->argcount); + tmpcount = QSE_STX_FROM_SMALLINT(mthobj->tmpcount); + qse_assert (argcount == nargs); /* secure space for temporaries */ for (i = 0; i < tmpcount; i++) { @@ -300,25 +300,25 @@ ase_printf (ASE_T("cannot find the method....\n")); proc->stack[proc->stack_top++] = proc->stack_base; proc->stack_base = proc->stack_top - 3 - tmpcount - argcount - 1; - ase_assert (proc->stack_base > 0); + qse_assert (proc->stack_base > 0); proc->receiver = receiver; proc->method = method; proc->pc = 0; proc->literals = mthobj->literals; - proc->bytecodes = ASE_STX_DATA(stx, mthobj->bytecodes); - proc->bytecode_size = ASE_STX_SIZE(stx, mthobj->bytecodes); + proc->bytecodes = QSE_STX_DATA(stx, mthobj->bytecodes); + proc->bytecode_size = QSE_STX_SIZE(stx, mthobj->bytecodes); proc->argcount = argcount; proc->tmpcount = tmpcount; return 0; } -static int __return_from_message (ase_stx_t* stx, process_t* proc) +static int __return_from_message (qse_stx_t* stx, process_t* proc) { - ase_word_t method, pc, stack_base; - ase_stx_method_t* mthobj; + qse_word_t method, pc, stack_base; + qse_stx_method_t* mthobj; if (proc->stack_base == 0) { /* return from the startup method */ @@ -329,8 +329,8 @@ static int __return_from_message (ase_stx_t* stx, process_t* proc) method = proc->stack[proc->stack_base + 1 + proc->tmpcount + proc->argcount + 1]; pc = proc->stack[proc->stack_base + 1 + proc->tmpcount + proc->argcount]; - mthobj = (ase_stx_method_t*)ASE_STX_OBJECT(stx,method); - ase_assert (mthobj != ASE_NULL); + mthobj = (qse_stx_method_t*)QSE_STX_OBJECT(stx,method); + qse_assert (mthobj != QSE_NULL); /* return value is located on top of the previous stack */ proc->stack[proc->stack_base - 1] = proc->stack[proc->stack_top - 1]; @@ -344,35 +344,35 @@ static int __return_from_message (ase_stx_t* stx, process_t* proc) proc->pc = pc; proc->literals = mthobj->literals; - proc->bytecodes = ASE_STX_DATA(stx, mthobj->bytecodes); - proc->bytecode_size = ASE_STX_SIZE(stx, mthobj->bytecodes); - proc->argcount = ASE_STX_FROM_SMALLINT(mthobj->argcount); - proc->tmpcount = ASE_STX_FROM_SMALLINT(mthobj->tmpcount); + proc->bytecodes = QSE_STX_DATA(stx, mthobj->bytecodes); + proc->bytecode_size = QSE_STX_SIZE(stx, mthobj->bytecodes); + proc->argcount = QSE_STX_FROM_SMALLINT(mthobj->argcount); + proc->tmpcount = QSE_STX_FROM_SMALLINT(mthobj->tmpcount); return 0; } -static int __dispatch_primitive (ase_stx_t* stx, process_t* proc, ase_word_t no) +static int __dispatch_primitive (qse_stx_t* stx, process_t* proc, qse_word_t no) { switch (no) { case 0: - ase_printf (ASE_T("[[ hello stx smalltalk ]]\n")); + qse_printf (QSE_T("[[ hello stx smalltalk ]]\n")); break; case 1: - ase_printf (ASE_T("<< AMAZING STX SMALLTALK WORLD >>\n")); + qse_printf (QSE_T("<< AMAZING STX SMALLTALK WORLD >>\n")); break; case 2: - ase_printf (ASE_T("<< FUNKY STX SMALLTALK >> %d\n"), - ASE_STX_FROM_SMALLINT(proc->stack[proc->stack_base + 1])); + qse_printf (QSE_T("<< FUNKY STX SMALLTALK >> %d\n"), + QSE_STX_FROM_SMALLINT(proc->stack[proc->stack_base + 1])); break; case 3: - ase_printf (ASE_T("<< HIGH STX SMALLTALK >> %d, %d\n"), - ASE_STX_FROM_SMALLINT(proc->stack[proc->stack_base + 1]), - ASE_STX_FROM_SMALLINT(proc->stack[proc->stack_base + 2])); + qse_printf (QSE_T("<< HIGH STX SMALLTALK >> %d, %d\n"), + QSE_STX_FROM_SMALLINT(proc->stack[proc->stack_base + 1]), + QSE_STX_FROM_SMALLINT(proc->stack[proc->stack_base + 2])); break; case 20: - ase_printf (ASE_T("<< PRIMITIVE 20 >>\n")); + qse_printf (QSE_T("<< PRIMITIVE 20 >>\n")); break; } diff --git a/qse/stx/interp.h b/qse/lib/stx/interp.h similarity index 51% rename from qse/stx/interp.h rename to qse/lib/stx/interp.h index 2061f832..d893a0bd 100644 --- a/qse/stx/interp.h +++ b/qse/lib/stx/interp.h @@ -2,16 +2,16 @@ * $Id: interp.h 118 2008-03-03 11:21:33Z baconevi $ */ -#ifndef _ASE_STX_INTERP_H_ -#define _ASE_STX_INTERP_H_ +#ifndef _QSE_STX_INTERP_H_ +#define _QSE_STX_INTERP_H_ -#include +#include #ifdef __cplusplus extern "C" { #endif -int ase_stx_interp (ase_stx_t* stx, ase_word_t receiver, ase_word_t method); +int qse_stx_interp (qse_stx_t* stx, qse_word_t receiver, qse_word_t method); #ifdef __cplusplus } diff --git a/qse/stx/kernel/Object.st b/qse/lib/stx/kernel/Object.st similarity index 100% rename from qse/stx/kernel/Object.st rename to qse/lib/stx/kernel/Object.st diff --git a/qse/stx/makefile.in b/qse/lib/stx/makefile.in similarity index 100% rename from qse/stx/makefile.in rename to qse/lib/stx/makefile.in diff --git a/qse/lib/stx/memory.c b/qse/lib/stx/memory.c new file mode 100644 index 00000000..0f9eb954 --- /dev/null +++ b/qse/lib/stx/memory.c @@ -0,0 +1,98 @@ +/* + * $Id: memory.c 118 2008-03-03 11:21:33Z baconevi $ + */ + +#include +#include + +qse_stx_memory_t* qse_stx_memory_open ( + qse_stx_memory_t* mem, qse_word_t capacity) +{ + qse_stx_object_t** slots; + qse_word_t n; + + qse_assert (capacity > 0); + if (mem == QSE_NULL) { + mem = (qse_stx_memory_t*)qse_malloc(qse_sizeof(qse_stx_memory_t)); + if (mem == QSE_NULL) return QSE_NULL; + mem->__dynamic = qse_true; + } + else mem->__dynamic = qse_false; + + slots = (qse_stx_object_t**)qse_malloc ( + capacity * qse_sizeof(qse_stx_object_t*)); + if (slots == QSE_NULL) { + if (mem->__dynamic) qse_free (mem); + mem = QSE_NULL; + } + + mem->capacity = capacity; + mem->slots = slots; + + /* weave the free slot list */ + mem->free = &slots[0]; + for (n = 0; n < capacity - 1; n++) { + mem->slots[n] = (qse_stx_object_t*)&mem->slots[n + 1]; + } + mem->slots[n] = QSE_NULL; + + return mem; +} + +void qse_stx_memory_close (qse_stx_memory_t* mem) +{ + /* TODO: free all linked objects... */ + + qse_free (mem->slots); + mem->capacity = 0; + mem->slots = QSE_NULL; + mem->free = QSE_NULL; + if (mem->__dynamic) qse_free (mem); +} + +void qse_stx_memory_gc (qse_stx_memory_t* mem) +{ + /* TODO: implement this function */ +} + +qse_word_t qse_stx_memory_alloc (qse_stx_memory_t* mem, qse_word_t nbytes) +{ + qse_stx_object_t** slot; + qse_stx_object_t* object; + + /* find the free object slot */ + if (mem->free == QSE_NULL) { + qse_stx_memory_gc (mem); + if (mem->free == QSE_NULL) return mem->capacity;; + } + + object = (qse_stx_object_t*)qse_malloc (nbytes); + if (object == QSE_NULL) { + qse_stx_memory_gc (mem); + object = (qse_stx_object_t*)qse_malloc (nbytes); + /*if (object == QSE_NULL) return mem->capacity;*/ +if (object == QSE_NULL) { +qse_assert (QSE_T("MEMORY ALLOCATION ERROR\n") == QSE_NULL); +exit (1); +} + } + + slot = mem->free; + mem->free = (qse_stx_object_t**)*slot; + *slot = object; + + return (qse_word_t)(slot - mem->slots); +} + +void qse_stx_memory_dealloc (qse_stx_memory_t* mem, qse_word_t object_index) +{ + /* + * THIS IS PRIMITIVE LOW-LEVEL DEALLOC. THIS WILL NOT + * DEALLOCATE MEMORY ALLOCATED FOR ITS INSTANCE VARIABLES. + */ + + qse_free (mem->slots[object_index]); + mem->slots[object_index] = (qse_stx_object_t*)mem->free; + mem->free = &mem->slots[object_index]; +} + diff --git a/qse/lib/stx/memory.h b/qse/lib/stx/memory.h new file mode 100644 index 00000000..74565f6d --- /dev/null +++ b/qse/lib/stx/memory.h @@ -0,0 +1,26 @@ +/* + * $Id: memory.h 118 2008-03-03 11:21:33Z baconevi $ + */ + +#ifndef _QSE_STX_MEMORY_H_ +#define _QSE_STX_MEMORY_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +qse_stx_memory_t* qse_stx_memory_open ( + qse_stx_memory_t* mem, qse_word_t capacity); +void qse_stx_memory_close (qse_stx_memory_t* mem); + +void qse_stx_memory_gc (qse_stx_memory_t* mem); +qse_word_t qse_stx_memory_alloc (qse_stx_memory_t* mem, qse_word_t size); +void qse_stx_memory_dealloc (qse_stx_memory_t* mem, qse_word_t object_index); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/qse/stx/method.h b/qse/lib/stx/method.h similarity index 58% rename from qse/stx/method.h rename to qse/lib/stx/method.h index ecb1c782..13156102 100644 --- a/qse/stx/method.h +++ b/qse/lib/stx/method.h @@ -2,17 +2,17 @@ * $Id: method.h 118 2008-03-03 11:21:33Z baconevi $ */ -#ifndef _ASE_STX_METHOD_H_ -#define _ASE_STX_METHOD_H_ +#ifndef _QSE_STX_METHOD_H_ +#define _QSE_STX_METHOD_H_ -#include +#include -#define ASE_STX_METHOD_SIZE 5 -#define ASE_STX_METHOD_TEXT 0 -#define ASE_STX_METHOD_SELECTOR 1 -#define ASE_STX_METHOD_BYTECODES 2 -#define ASE_STX_METHOD_TMPCOUNT 3 -#define ASE_STX_METHOD_ARGCOUNT 4 +#define QSE_STX_METHOD_SIZE 5 +#define QSE_STX_METHOD_TEXT 0 +#define QSE_STX_METHOD_SELECTOR 1 +#define QSE_STX_METHOD_BYTECODES 2 +#define QSE_STX_METHOD_TMPCOUNT 3 +#define QSE_STX_METHOD_ARGCOUNT 4 /* dolphin smalltalk's flags representation @@ -26,18 +26,18 @@ Block flag SmallInteger flag" */ -struct ase_stx_method_t +struct qse_stx_method_t { - ase_stx_objhdr_t header; - ase_word_t text; - ase_word_t selector; /* is this necessary? */ - ase_word_t bytecodes; - ase_word_t tmpcount; - ase_word_t argcount; - ase_word_t literals[1]; + qse_stx_objhdr_t header; + qse_word_t text; + qse_word_t selector; /* is this necessary? */ + qse_word_t bytecodes; + qse_word_t tmpcount; + qse_word_t argcount; + qse_word_t literals[1]; }; -typedef struct ase_stx_method_t ase_stx_method_t; +typedef struct qse_stx_method_t qse_stx_method_t; #ifdef __cplusplus extern "C" { diff --git a/qse/lib/stx/misc.c b/qse/lib/stx/misc.c new file mode 100644 index 00000000..f6a9e3b2 --- /dev/null +++ b/qse/lib/stx/misc.c @@ -0,0 +1,70 @@ +/* + * $Id: misc.c 118 2008-03-03 11:21:33Z baconevi $ + */ + +#include + +qse_word_t qse_stx_hash (const void* data, qse_word_t len) +{ + qse_word_t h = 0; + qse_byte_t* bp, * be; + + bp = (qse_byte_t*)data; be = bp + len; + while (bp < be) h = h * 31 + *bp++; + + return h; +} + +qse_word_t qse_stx_strhash (const qse_char_t* str) +{ + qse_word_t h = 0; + qse_byte_t* bp, * be; + const qse_char_t* p = str; + + while (*p != QSE_T('\0')) { + bp = (qse_byte_t*)p; + be = bp + qse_sizeof(qse_char_t); + while (bp < be) h = h * 31 + *bp++; + p++; + } + + return h; +} + +qse_word_t qse_stx_strxhash (const qse_char_t* str, qse_word_t len) +{ + qse_word_t h = 0; + qse_byte_t* bp, * be; + const qse_char_t* p = str, * end = str + len; + + while (p < end) { + bp = (qse_byte_t*)p; + be = bp + qse_sizeof(qse_char_t); + while (bp < be) h = h * 31 + *bp++; + p++; + } + + return h; +} + +qse_char_t* qse_stx_strword ( + const qse_char_t* str, const qse_char_t* word, qse_word_t* word_index) +{ + qse_char_t* p = (qse_char_t*)str; + qse_char_t* tok; + qse_size_t len; + qse_word_t index = 0; + + while (p != QSE_NULL) { + p = qse_strtok (p, QSE_T(""), &tok, &len); + if (qse_strxcmp (tok, len, word) == 0) { + *word_index = index; + return tok; + } + + index++; + } + + *word_index = index; + return QSE_NULL; +} diff --git a/qse/lib/stx/misc.h b/qse/lib/stx/misc.h new file mode 100644 index 00000000..28e65123 --- /dev/null +++ b/qse/lib/stx/misc.h @@ -0,0 +1,63 @@ +/* + * $Id: misc.h 118 2008-03-03 11:21:33Z baconevi $ + */ + +#ifndef _QSE_STX_MISC_H_ +#define _QSE_STX_MISC_H_ + +#include + +/* TODO: remove this header later */ +#include + +#ifdef _DOS + #include + #include + #include + #include + #include + #include + + #define qse_assert assert + #define qse_malloc malloc + #define qse_realloc realloc + #define qse_free free + #define qse_va_list va_list + #define qse_va_start va_start + #define qse_va_end va_end + #define qse_va_arg va_arg + #define qse_isspace isspace + #define qse_isdigit isdigit + #define qse_isalpha isalpha + #define qse_isalnum isalnum +#else + #include + #include + #include + #include + #include + #include +#endif + +#if defined(__BORLANDC__) || defined(_MSC_VER) + #define INLINE +#else + #define INLINE inline +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +qse_word_t qse_stx_hash (const void* data, qse_word_t len); +qse_word_t qse_stx_strhash (const qse_char_t* str); +qse_word_t qse_stx_strxhash (const qse_char_t* str, qse_word_t len); + +qse_char_t* qse_stx_strword ( + const qse_char_t* str, const qse_char_t* word, qse_word_t* word_index); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/qse/lib/stx/name.c b/qse/lib/stx/name.c new file mode 100644 index 00000000..8ea23696 --- /dev/null +++ b/qse/lib/stx/name.c @@ -0,0 +1,146 @@ +/* + * $Id: name.c 118 2008-03-03 11:21:33Z baconevi $ + */ + +#include +#include + +qse_stx_name_t* qse_stx_name_open ( + qse_stx_name_t* name, qse_word_t capacity) +{ + if (capacity == 0) + capacity = qse_countof(name->static_buffer) - 1; + + if (name == QSE_NULL) { + name = (qse_stx_name_t*) + qse_malloc (qse_sizeof(qse_stx_name_t)); + if (name == QSE_NULL) return QSE_NULL; + name->__dynamic = qse_true; + } + else name->__dynamic = qse_false; + + if (capacity < qse_countof(name->static_buffer)) { + name->buffer = name->static_buffer; + } + else { + name->buffer = (qse_char_t*) + qse_malloc ((capacity + 1) * qse_sizeof(qse_char_t)); + if (name->buffer == QSE_NULL) { + if (name->__dynamic) qse_free (name); + return QSE_NULL; + } + } + + name->size = 0; + name->capacity = capacity; + name->buffer[0] = QSE_T('\0'); + + return name; +} + +void qse_stx_name_close (qse_stx_name_t* name) +{ + if (name->capacity >= qse_countof(name->static_buffer)) { + qse_assert (name->buffer != name->static_buffer); + qse_free (name->buffer); + } + if (name->__dynamic) qse_free (name); +} + +int qse_stx_name_addc (qse_stx_name_t* name, qse_cint_t c) +{ + if (name->size >= name->capacity) { + /* double the capacity. */ + qse_size_t new_capacity = name->capacity * 2; + + if (new_capacity >= qse_countof(name->static_buffer)) { + qse_char_t* space; + + if (name->capacity < qse_countof(name->static_buffer)) { + space = (qse_char_t*)qse_malloc ( + (new_capacity + 1) * qse_sizeof(qse_char_t)); + if (space == QSE_NULL) return -1; + + /* don't need to copy up to the terminating null */ + qse_memcpy (space, name->buffer, + name->capacity * qse_sizeof(qse_char_t)); + } + else { + space = (qse_char_t*)qse_realloc (name->buffer, + (new_capacity + 1) * qse_sizeof(qse_char_t)); + if (space == QSE_NULL) return -1; + } + + name->buffer = space; + } + + name->capacity = new_capacity; + } + + name->buffer[name->size++] = c; + name->buffer[name->size] = QSE_T('\0'); + return 0; +} + +int qse_stx_name_adds (qse_stx_name_t* name, const qse_char_t* s) +{ + while (*s != QSE_T('\0')) { + if (qse_stx_name_addc(name, *s) == -1) return -1; + s++; + } + + return 0; +} + +void qse_stx_name_clear (qse_stx_name_t* name) +{ + name->size = 0; + name->buffer[0] = QSE_T('\0'); +} + +qse_char_t* qse_stx_name_yield (qse_stx_name_t* name, qse_word_t capacity) +{ + qse_char_t* old_buffer, * new_buffer; + + if (capacity == 0) + capacity = qse_countof(name->static_buffer) - 1; + + if (name->capacity < qse_countof(name->static_buffer)) { + old_buffer = (qse_char_t*) + qse_malloc((name->capacity + 1) * qse_sizeof(qse_char_t)); + if (old_buffer == QSE_NULL) return QSE_NULL; + qse_memcpy (old_buffer, name->buffer, + (name->capacity + 1) * qse_sizeof(qse_char_t)); + } + else old_buffer = name->buffer; + + if (capacity < qse_countof(name->static_buffer)) { + new_buffer = name->static_buffer; + } + else { + new_buffer = (qse_char_t*) + qse_malloc((capacity + 1) * qse_sizeof(qse_char_t)); + if (new_buffer == QSE_NULL) return QSE_NULL; + } + + name->buffer = new_buffer; + name->size = 0; + name->capacity = capacity; + name->buffer[0] = QSE_T('\0'); + + return old_buffer; +} + +int qse_stx_name_compare (qse_stx_name_t* name, const qse_char_t* str) +{ + qse_char_t* p = name->buffer; + qse_word_t index = 0; + + while (index < name->size) { + if (*p > *str) return 1; + if (*p < *str) return -1; + index++; p++; str++; + } + + return (*str == QSE_T('\0'))? 0: -1; +} diff --git a/qse/lib/stx/name.h b/qse/lib/stx/name.h new file mode 100644 index 00000000..238e8bd4 --- /dev/null +++ b/qse/lib/stx/name.h @@ -0,0 +1,39 @@ +/* + * $Id: name.h 118 2008-03-03 11:21:33Z baconevi $ + */ + +#ifndef _QSE_STX_NAME_H_ +#define _QSE_STX_NAME_H_ + +#include + +struct qse_stx_name_t +{ + qse_word_t capacity; + qse_word_t size; + qse_char_t* buffer; + qse_char_t static_buffer[128]; + qse_bool_t __dynamic; +}; + +typedef struct qse_stx_name_t qse_stx_name_t; + +#ifdef __cplusplus +extern "C" { +#endif + +qse_stx_name_t* qse_stx_name_open ( + qse_stx_name_t* name, qse_word_t capacity); +void qse_stx_name_close (qse_stx_name_t* name); + +int qse_stx_name_addc (qse_stx_name_t* name, qse_cint_t c); +int qse_stx_name_adds (qse_stx_name_t* name, const qse_char_t* s); +void qse_stx_name_clear (qse_stx_name_t* name); +qse_char_t* qse_stx_name_yield (qse_stx_name_t* name, qse_word_t capacity); +int qse_stx_name_compare (qse_stx_name_t* name, const qse_char_t* str); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/qse/lib/stx/object.c b/qse/lib/stx/object.c new file mode 100644 index 00000000..bd9c3733 --- /dev/null +++ b/qse/lib/stx/object.c @@ -0,0 +1,246 @@ +/* + * $Id: object.c 118 2008-03-03 11:21:33Z baconevi $ + */ + +#include +#include +#include +#include +#include + +/* n: number of instance variables */ +qse_word_t qse_stx_alloc_word_object ( + qse_stx_t* stx, const qse_word_t* data, qse_word_t nfields, + const qse_word_t* variable_data, qse_word_t variable_nfields) +{ + qse_word_t idx, n; + qse_stx_word_object_t* obj; + + qse_assert (stx->nil == QSE_STX_NIL); + + /* bytes to allocated = + * (number of instance variables + + * number of variable instance variables) * word_size + */ + n = nfields + variable_nfields; + idx = qse_stx_memory_alloc (&stx->memory, + n * qse_sizeof(qse_word_t) + qse_sizeof(qse_stx_object_t)); + if (idx >= stx->memory.capacity) return idx; /* failed TODO: return a difference value OINDEX_INVALID */ + + idx = QSE_STX_TO_OINDEX(idx); + obj = QSE_STX_WORD_OBJECT(stx,idx); + obj->header.class = stx->nil; + obj->header.access = (n << 2) | QSE_STX_WORD_INDEXED; + + if (variable_data == QSE_NULL) { + while (n > nfields) obj->data[--n] = stx->nil; + } + else { + while (n > nfields) { + n--; obj->data[n] = variable_data[n - nfields]; + } + } + + if (data == QSE_NULL) { + while (n > 0) obj->data[--n] = stx->nil; + } + else { + while (n > 0) { + n--; obj->data[n] = data[n]; + } + } + + return idx; +} + +/* n: number of bytes */ +qse_word_t qse_stx_alloc_byte_object ( + qse_stx_t* stx, const qse_byte_t* data, qse_word_t n) +{ + qse_word_t idx; + qse_stx_byte_object_t* obj; + + qse_assert (stx->nil == QSE_STX_NIL); + + idx = qse_stx_memory_alloc ( + &stx->memory, n + qse_sizeof(qse_stx_object_t)); + if (idx >= stx->memory.capacity) return idx; /* failed */ + + idx = QSE_STX_TO_OINDEX(idx); + obj = QSE_STX_BYTE_OBJECT(stx,idx); + obj->header.class = stx->nil; + obj->header.access = (n << 2) | QSE_STX_BYTE_INDEXED; + + if (data == QSE_NULL) { + while (n-- > 0) obj->data[n] = 0; + } + else { + while (n-- > 0) obj->data[n] = data[n]; + } + + return idx; +} + +qse_word_t qse_stx_alloc_char_object ( + qse_stx_t* stx, const qse_char_t* str) +{ + return (str == QSE_NULL)? + qse_stx_alloc_char_objectx (stx, QSE_NULL, 0): + qse_stx_alloc_char_objectx (stx, str, qse_strlen(str)); +} + +/* n: number of characters */ +qse_word_t qse_stx_alloc_char_objectx ( + qse_stx_t* stx, const qse_char_t* str, qse_word_t n) +{ + qse_word_t idx; + qse_stx_char_object_t* obj; + + qse_assert (stx->nil == QSE_STX_NIL); + + idx = qse_stx_memory_alloc (&stx->memory, + (n + 1) * qse_sizeof(qse_char_t) + qse_sizeof(qse_stx_object_t)); + if (idx >= stx->memory.capacity) return idx; /* failed */ + + idx = QSE_STX_TO_OINDEX(idx); + obj = QSE_STX_CHAR_OBJECT(stx,idx); + obj->header.class = stx->nil; + obj->header.access = (n << 2) | QSE_STX_CHAR_INDEXED; + obj->data[n] = QSE_T('\0'); + + if (str == QSE_NULL) { + while (n-- > 0) obj->data[n] = QSE_T('\0'); + } + else { + while (n-- > 0) obj->data[n] = str[n]; + } + + return idx; +} + +qse_word_t qse_stx_allocn_char_object (qse_stx_t* stx, ...) +{ + qse_word_t idx, n = 0; + const qse_char_t* p; + qse_va_list ap; + qse_stx_char_object_t* obj; + + qse_assert (stx->nil == QSE_STX_NIL); + + qse_va_start (ap, stx); + while ((p = qse_va_arg(ap, const qse_char_t*)) != QSE_NULL) { + n += qse_strlen(p); + } + qse_va_end (ap); + + idx = qse_stx_memory_alloc (&stx->memory, + (n + 1) * qse_sizeof(qse_char_t) + qse_sizeof(qse_stx_object_t)); + if (idx >= stx->memory.capacity) return idx; /* failed */ + + idx = QSE_STX_TO_OINDEX(idx); + obj = QSE_STX_CHAR_OBJECT(stx,idx); + obj->header.class = stx->nil; + obj->header.access = (n << 2) | QSE_STX_CHAR_INDEXED; + obj->data[n] = QSE_T('\0'); + + qse_va_start (ap, stx); + n = 0; + while ((p = qse_va_arg(ap, const qse_char_t*)) != QSE_NULL) { + while (*p != QSE_T('\0')) { + /*QSE_STX_CHAR_AT(stx,idx,n++) = *p++;*/ + obj->data[n++] = *p++; + } + } + qse_va_end (ap); + + return idx; +} + +qse_word_t qse_stx_hash_object (qse_stx_t* stx, qse_word_t object) +{ + qse_word_t hv; + + if (QSE_STX_IS_SMALLINT(object)) { + qse_word_t tmp = QSE_STX_FROM_SMALLINT(object); + hv = qse_stx_hash(&tmp, qse_sizeof(tmp)); + } + else if (QSE_STX_IS_CHAR_OBJECT(stx,object)) { + /* the additional null is not taken into account */ + hv = qse_stx_hash (QSE_STX_DATA(stx,object), + QSE_STX_SIZE(stx,object) * qse_sizeof(qse_char_t)); + } + else if (QSE_STX_IS_BYTE_OBJECT(stx,object)) { + hv = qse_stx_hash ( + QSE_STX_DATA(stx,object), QSE_STX_SIZE(stx,object)); + } + else { + qse_assert (QSE_STX_IS_WORD_OBJECT(stx,object)); + hv = qse_stx_hash (QSE_STX_DATA(stx,object), + QSE_STX_SIZE(stx,object) * qse_sizeof(qse_word_t)); + } + + return hv; +} + +qse_word_t qse_stx_instantiate ( + qse_stx_t* stx, qse_word_t class, const void* data, + const void* variable_data, qse_word_t variable_nfields) +{ + qse_stx_class_t* class_obj; + qse_word_t spec, nfields, new; + int indexable; + + qse_assert (class != stx->class_smallinteger); + class_obj = (qse_stx_class_t*)QSE_STX_OBJECT(stx, class); + + /* don't instantiate a metaclass whose instance must be + created in a different way */ + /* TODO: maybe delete the following line */ + qse_assert (class_obj->header.class != stx->class_metaclass); + qse_assert (QSE_STX_IS_SMALLINT(class_obj->spec)); + + spec = QSE_STX_FROM_SMALLINT(class_obj->spec); + nfields = (spec >> QSE_STX_SPEC_INDEXABLE_BITS); + indexable = spec & QSE_STX_SPEC_INDEXABLE_MASK; + + if (indexable == QSE_STX_SPEC_BYTE_INDEXABLE) { + qse_assert (nfields == 0 && data == QSE_NULL); + new = qse_stx_alloc_byte_object( + stx, variable_data, variable_nfields); + } + else if (indexable == QSE_STX_SPEC_CHAR_INDEXABLE) { + qse_assert (nfields == 0 && data == QSE_NULL); + new = qse_stx_alloc_char_objectx( + stx, variable_data, variable_nfields); + } + else if (indexable == QSE_STX_SPEC_WORD_INDEXABLE) { + new = qse_stx_alloc_word_object ( + stx, data, nfields, variable_data, variable_nfields); + } + else { + qse_assert (indexable == QSE_STX_SPEC_NOT_INDEXABLE); + qse_assert (variable_nfields == 0 && variable_data == QSE_NULL); + new = qse_stx_alloc_word_object ( + stx, data, nfields, QSE_NULL, 0); + } + + QSE_STX_CLASS(stx, new) = class; + return new; +} + +qse_word_t qse_stx_class (qse_stx_t* stx, qse_word_t obj) +{ + return QSE_STX_IS_SMALLINT(obj)? + stx->class_smallinteger: QSE_STX_CLASS(stx,obj); +} + +qse_word_t qse_stx_classof (qse_stx_t* stx, qse_word_t obj) +{ + return QSE_STX_IS_SMALLINT(obj)? + stx->class_smallinteger: QSE_STX_CLASS(stx,obj); +} + +qse_word_t qse_stx_sizeof (qse_stx_t* stx, qse_word_t obj) +{ + return QSE_STX_IS_SMALLINT(obj)? 1: QSE_STX_SIZE(stx,obj); +} diff --git a/qse/lib/stx/object.h b/qse/lib/stx/object.h new file mode 100644 index 00000000..f182aaa6 --- /dev/null +++ b/qse/lib/stx/object.h @@ -0,0 +1,40 @@ +/* + * $Id: object.h 118 2008-03-03 11:21:33Z baconevi $ + */ + +#ifndef _QSE_STX_OBJECT_H_ +#define _QSE_STX_OBJECT_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +qse_word_t qse_stx_alloc_word_object ( + qse_stx_t* stx, const qse_word_t* data, qse_word_t nfields, + const qse_word_t* variable_data, qse_word_t variable_nfields); + +qse_word_t qse_stx_alloc_byte_object ( + qse_stx_t* stx, const qse_byte_t* data, qse_word_t n); + +qse_word_t qse_stx_alloc_char_object ( + qse_stx_t* stx, const qse_char_t* str); +qse_word_t qse_stx_alloc_char_objectx ( + qse_stx_t* stx, const qse_char_t* str, qse_word_t n); +qse_word_t qse_stx_allocn_char_object (qse_stx_t* stx, ...); + +qse_word_t qse_stx_hash_object (qse_stx_t* stx, qse_word_t object); + +qse_word_t qse_stx_instantiate ( + qse_stx_t* stx, qse_word_t class_index, const void* data, + const void* variable_data, qse_word_t variable_nfields); +qse_word_t qse_stx_classof (qse_stx_t* stx, qse_word_t obj); +qse_word_t qse_stx_sizeof (qse_stx_t* stx, qse_word_t obj); + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/qse/lib/stx/parser.c b/qse/lib/stx/parser.c new file mode 100644 index 00000000..bc50f37a --- /dev/null +++ b/qse/lib/stx/parser.c @@ -0,0 +1,1608 @@ +/* + * $Id: parser.c 118 2008-03-03 11:21:33Z baconevi $ + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +static int __parse_method ( + qse_stx_parser_t* parser, + qse_word_t method_class, void* input); +static int __finish_method (qse_stx_parser_t* parser); + +static int __parse_message_pattern (qse_stx_parser_t* parser); +static int __parse_unary_pattern (qse_stx_parser_t* parser); +static int __parse_binary_pattern (qse_stx_parser_t* parser); +static int __parse_keyword_pattern (qse_stx_parser_t* parser); + +static int __parse_temporaries (qse_stx_parser_t* parser); +static int __parse_primitive (qse_stx_parser_t* parser); +static int __parse_statements (qse_stx_parser_t* parser); +static int __parse_block_statements (qse_stx_parser_t* parser); +static int __parse_statement (qse_stx_parser_t* parser); +static int __parse_expression (qse_stx_parser_t* parser); + +static int __parse_assignment ( + qse_stx_parser_t* parser, const qse_char_t* target); +static int __parse_basic_expression ( + qse_stx_parser_t* parser, const qse_char_t* ident); +static int __parse_primary ( + qse_stx_parser_t* parser, const qse_char_t* ident, qse_bool_t* is_super); +static int __parse_primary_ident ( + qse_stx_parser_t* parser, const qse_char_t* ident, qse_bool_t* is_super); + +static int __parse_block_constructor (qse_stx_parser_t* parser); +static int __parse_message_continuation ( + qse_stx_parser_t* parser, qse_bool_t is_super); +static int __parse_keyword_message ( + qse_stx_parser_t* parser, qse_bool_t is_super); +static int __parse_binary_message ( + qse_stx_parser_t* parser, qse_bool_t is_super); +static int __parse_unary_message ( + qse_stx_parser_t* parser, qse_bool_t is_super); + +static int __get_token (qse_stx_parser_t* parser); +static int __get_ident (qse_stx_parser_t* parser); +static int __get_numlit (qse_stx_parser_t* parser, qse_bool_t negated); +static int __get_charlit (qse_stx_parser_t* parser); +static int __get_strlit (qse_stx_parser_t* parser); +static int __get_binary (qse_stx_parser_t* parser); +static int __skip_spaces (qse_stx_parser_t* parser); +static int __skip_comment (qse_stx_parser_t* parser); +static int __get_char (qse_stx_parser_t* parser); +static int __unget_char (qse_stx_parser_t* parser, qse_cint_t c); +static int __open_input (qse_stx_parser_t* parser, void* input); +static int __close_input (qse_stx_parser_t* parser); + +qse_stx_parser_t* qse_stx_parser_open (qse_stx_parser_t* parser, qse_stx_t* stx) +{ + if (parser == QSE_NULL) { + parser = (qse_stx_parser_t*) + qse_malloc (qse_sizeof(qse_stx_parser_t)); + if (parser == QSE_NULL) return QSE_NULL; + parser->__dynamic = qse_true; + } + else parser->__dynamic = qse_false; + + if (qse_stx_name_open (&parser->method_name, 0) == QSE_NULL) { + if (parser->__dynamic) qse_free (parser); + return QSE_NULL; + } + + if (qse_stx_token_open (&parser->token, 0) == QSE_NULL) { + qse_stx_name_close (&parser->method_name); + if (parser->__dynamic) qse_free (parser); + return QSE_NULL; + } + + if (qse_arr_open ( + &parser->bytecode, 256, + qse_sizeof(qse_byte_t), QSE_NULL) == QSE_NULL) { + qse_stx_name_close (&parser->method_name); + qse_stx_token_close (&parser->token); + if (parser->__dynamic) qse_free (parser); + return QSE_NULL; + } + + parser->stx = stx; + parser->error_code = QSE_STX_PARSER_ERROR_NONE; + + parser->temporary_count = 0; + parser->argument_count = 0; + parser->literal_count = 0; + + parser->curc = QSE_T_EOF; + parser->ungotc_count = 0; + + parser->input_owner = QSE_NULL; + parser->input_func = QSE_NULL; + return parser; +} + +void qse_stx_parser_close (qse_stx_parser_t* parser) +{ + while (parser->temporary_count > 0) { + qse_free (parser->temporaries[--parser->temporary_count]); + } + parser->argument_count = 0; + + qse_arr_close (&parser->bytecode); + qse_stx_name_close (&parser->method_name); + qse_stx_token_close (&parser->token); + + if (parser->__dynamic) qse_free (parser); +} + +#define GET_CHAR(parser) \ + do { if (__get_char(parser) == -1) return -1; } while (0) +#define UNGET_CHAR(parser,c) \ + do { if (__unget_char(parser,c) == -1) return -1; } while (0) +#define GET_TOKEN(parser) \ + do { if (__get_token(parser) == -1) return -1; } while (0) +#define ADD_TOKEN_CHAR(parser,c) \ + do { \ + if (qse_stx_token_addc (&(parser)->token, c) == -1) { \ + (parser)->error_code = QSE_STX_PARSER_ERROR_MEMORY; \ + return -1; \ + } \ + } while (0) + +const qse_char_t* qse_stx_parser_error_string (qse_stx_parser_t* parser) +{ + static const qse_char_t* msg[] = + { + QSE_T("no error"), + + QSE_T("input fucntion not ready"), + QSE_T("input function error"), + QSE_T("out of memory"), + + QSE_T("invalid character"), + QSE_T("incomplete character literal"), + QSE_T("incomplete string literal"), + QSE_T("incomplete literal"), + + QSE_T("message selector"), + QSE_T("invalid argument name"), + QSE_T("too many arguments"), + + QSE_T("invalid primitive type"), + QSE_T("primitive number expected"), + QSE_T("primitive number out of range"), + QSE_T("primitive not closed"), + + QSE_T("temporary list not closed"), + QSE_T("too many temporaries"), + QSE_T("cannot redefine pseudo variable"), + QSE_T("invalid primary/expression-start"), + + QSE_T("no period at end of statement"), + QSE_T("no closing parenthesis"), + QSE_T("block argument name missing"), + QSE_T("block argument list not closed"), + QSE_T("block not closed"), + + QSE_T("undeclared name"), + QSE_T("too many literals") + }; + + if (parser->error_code >= 0 && + parser->error_code < qse_countof(msg)) return msg[parser->error_code]; + + return QSE_T("unknown error"); +} + +static INLINE qse_bool_t __is_pseudo_variable (const qse_stx_token_t* token) +{ + return token->type == QSE_STX_TOKEN_IDENT && + (qse_strcmp(token->name.buffer, QSE_T("self")) == 0 || + qse_strcmp(token->name.buffer, QSE_T("super")) == 0 || + qse_strcmp(token->name.buffer, QSE_T("nil")) == 0 || + qse_strcmp(token->name.buffer, QSE_T("true")) == 0 || + qse_strcmp(token->name.buffer, QSE_T("false")) == 0); +} + +static INLINE qse_bool_t __is_vbar_token (const qse_stx_token_t* token) +{ + return + token->type == QSE_STX_TOKEN_BINARY && + token->name.size == 1 && + token->name.buffer[0] == QSE_T('|'); +} + +static INLINE qse_bool_t __is_primitive_opener (const qse_stx_token_t* token) +{ + return + token->type == QSE_STX_TOKEN_BINARY && + token->name.size == 1 && + token->name.buffer[0] == QSE_T('<'); +} + +static INLINE qse_bool_t __is_primitive_closer (const qse_stx_token_t* token) +{ + return + token->type == QSE_STX_TOKEN_BINARY && + token->name.size == 1 && + token->name.buffer[0] == QSE_T('>'); +} + +static INLINE qse_bool_t __is_binary_char (qse_cint_t c) +{ + /* + * binaryCharacter ::= + * '!' | '%' | '&' | '*' | '+' | ',' | + * '/' | '<' | '=' | '>' | '?' | '@' | + * '\' | '~' | '|' | '-' + */ + + return + c == QSE_T('!') || c == QSE_T('%') || + c == QSE_T('&') || c == QSE_T('*') || + c == QSE_T('+') || c == QSE_T(',') || + c == QSE_T('/') || c == QSE_T('<') || + c == QSE_T('=') || c == QSE_T('>') || + c == QSE_T('?') || c == QSE_T('@') || + c == QSE_T('\\') || c == QSE_T('|') || + c == QSE_T('~') || c == QSE_T('-'); +} + +static INLINE qse_bool_t __is_closing_char (qse_cint_t c) +{ + return + c == QSE_T('.') || c == QSE_T(']') || + c == QSE_T(')') || c == QSE_T(';') || + c == QSE_T('\"') || c == QSE_T('\''); +} + +#define EMIT_CODE_TEST(parser,high,low) \ + do { if (__emit_code_test(parser,high,low) == -1) return -1; } while (0) + +#define EMIT_CODE(parser,code) \ + do { if (__emit_code(parser,code) == -1) return -1; } while(0) + +#define EMIT_PUSH_RECEIVER_VARIABLE(parser,pos) \ + do { \ + if (__emit_stack_positional ( \ + parser, PUSH_RECEIVER_VARIABLE, pos) == -1) return -1; \ + } while (0) + +#define EMIT_PUSH_TEMPORARY_LOCATION(parser,pos) \ + do { \ + if (__emit_stack_positional ( \ + parser, PUSH_TEMPORARY_LOCATION, pos) == -1) return -1; \ + } while (0) + +#define EMIT_PUSH_LITERAL_CONSTANT(parser,pos) \ + do { \ + if (__emit_stack_positional ( \ + parser, PUSH_LITERAL_CONSTANT, pos) == -1) return -1; \ + } while (0) + + +#define EMIT_PUSH_LITERAL_VARIABLE(parser,pos) \ + do { \ + if (__emit_stack_positional ( \ + parser, PUSH_LITERAL_VARIABLE, pos) == -1) return -1; \ + } while (0) + +#define EMIT_STORE_RECEIVER_VARIABLE(parser,pos) \ + do { \ + if (__emit_stack_positional ( \ + parser, STORE_RECEIVER_VARIABLE, pos) == -1) return -1; \ + } while (0) + +#define EMIT_STORE_TEMPORARY_LOCATION(parser,pos) \ + do { \ + if (__emit_stack_positional ( \ + parser, STORE_TEMPORARY_LOCATION, pos) == -1) return -1; \ + } while (0) + + +#define EMIT_POP_STACK_TOP(parser) EMIT_CODE(parser, POP_STACK_TOP) +#define EMIT_DUPLICATE_STACK_TOP(parser) EMIT_CODE(parser, DUPLICATE_STACK_TOP) +#define EMIT_PUSH_ACTIVE_CONTEXT(parser) EMIT_CODE(parser, PUSH_ACTIVE_CONTEXT) +#define EMIT_RETURN_FROM_MESSAGE(parser) EMIT_CODE(parser, RETURN_FROM_MESSAGE) +#define EMIT_RETURN_FROM_BLOCK(parser) EMIT_CODE(parser, RETURN_FROM_BLOCK) + +#define EMIT_SEND_TO_SELF(parser,nargs,selector) \ + do { \ + if (__emit_send_to_self(parser,nargs,selector) == -1) return -1; \ + } while (0) + +#define EMIT_SEND_TO_SUPER(parser,nargs,selector) \ + do { \ + if (__emit_send_to_super(parser,nargs,selector) == -1) return -1; \ + } while (0) + +#define EMIT_DO_PRIMITIVE(parser,no) \ + do { if (__emit_do_primitive(parser,no) == -1) return -1; } while(0) + +static INLINE int __emit_code_test ( + qse_stx_parser_t* parser, const qse_char_t* high, const qse_char_t* low) +{ + qse_printf (QSE_T("CODE: %s %s\n"), high, low); + return 0; +} + +static INLINE int __emit_code (qse_stx_parser_t* parser, qse_byte_t code) +{ + if (qse_arr_adddatum(&parser->bytecode, &code) == QSE_NULL) { + parser->error_code = QSE_STX_PARSER_ERROR_MEMORY; + return -1; + } + + return 0; +} + +static INLINE int __emit_stack_positional ( + qse_stx_parser_t* parser, int opcode, int pos) +{ + qse_assert (pos >= 0x0 && pos <= 0xFF); + + if (pos <= 0x0F) { + EMIT_CODE (parser, (opcode & 0xF0) | (pos & 0x0F)); + } + else { + EMIT_CODE (parser, (opcode >> 4) & 0x6F); + EMIT_CODE (parser, pos & 0xFF); + } + + return 0; +} + +static INLINE int __emit_send_to_self ( + qse_stx_parser_t* parser, int nargs, int selector) +{ + qse_assert (nargs >= 0x00 && nargs <= 0xFF); + qse_assert (selector >= 0x00 && selector <= 0xFF); + + if (nargs <= 0x08 && selector <= 0x1F) { + EMIT_CODE (parser, SEND_TO_SELF); + EMIT_CODE (parser, (nargs << 5) | selector); + } + else { + EMIT_CODE (parser, SEND_TO_SELF_EXTENDED); + EMIT_CODE (parser, nargs); + EMIT_CODE (parser, selector); + } + + return 0; +} + +static INLINE int __emit_send_to_super ( + qse_stx_parser_t* parser, int nargs, int selector) +{ + qse_assert (nargs >= 0x00 && nargs <= 0xFF); + qse_assert (selector >= 0x00 && selector <= 0xFF); + + if (nargs <= 0x08 && selector <= 0x1F) { + EMIT_CODE (parser, SEND_TO_SUPER); + EMIT_CODE (parser, (nargs << 5) | selector); + } + else { + EMIT_CODE (parser, SEND_TO_SUPER_EXTENDED); + EMIT_CODE (parser, nargs); + EMIT_CODE (parser, selector); + } + + return 0; +} + +static INLINE int __emit_do_primitive (qse_stx_parser_t* parser, int no) +{ + qse_assert (no >= 0x0 && no <= 0xFFF); + + EMIT_CODE (parser, DO_PRIMITIVE | ((no >> 8) & 0x0F)); + EMIT_CODE (parser, no & 0xFF); + + return 0; +} + +static int __add_literal (qse_stx_parser_t* parser, qse_word_t literal) +{ + qse_word_t i; + + for (i = 0; i < parser->literal_count; i++) { + /* + * it would remove redundancy of symbols and small integers. + * more complex redundacy check may be done somewhere else + * like in __add_string_literal. + */ + if (parser->literals[i] == literal) return i; + } + + if (parser->literal_count >= qse_countof(parser->literals)) { + parser->error_code = QSE_STX_PARSER_ERROR_TOO_MANY_LITERALS; + return -1; + } + + parser->literals[parser->literal_count++] = literal; + return parser->literal_count - 1; +} + +static int __add_character_literal (qse_stx_parser_t* parser, qse_char_t ch) +{ + qse_word_t i, c, literal; + qse_stx_t* stx = parser->stx; + + for (i = 0; i < parser->literal_count; i++) { + c = QSE_STX_IS_SMALLINT(parser->literals[i])? + stx->class_smallinteger: QSE_STX_CLASS (stx, parser->literals[i]); + if (c != stx->class_character) continue; + + if (ch == QSE_STX_CHAR_AT(stx,parser->literals[i],0)) return i; + } + + literal = qse_stx_instantiate ( + stx, stx->class_character, &ch, QSE_NULL, 0); + return __add_literal (parser, literal); +} + +static int __add_string_literal ( + qse_stx_parser_t* parser, const qse_char_t* str, qse_word_t size) +{ + qse_word_t i, c, literal; + qse_stx_t* stx = parser->stx; + + for (i = 0; i < parser->literal_count; i++) { + c = QSE_STX_IS_SMALLINT(parser->literals[i])? + stx->class_smallinteger: QSE_STX_CLASS (stx, parser->literals[i]); + if (c != stx->class_string) continue; + + if (qse_strxncmp (str, size, + QSE_STX_DATA(stx,parser->literals[i]), + QSE_STX_SIZE(stx,parser->literals[i])) == 0) return i; + } + + literal = qse_stx_instantiate ( + stx, stx->class_string, QSE_NULL, str, size); + return __add_literal (parser, literal); +} + +static int __add_symbol_literal ( + qse_stx_parser_t* parser, const qse_char_t* str, qse_word_t size) +{ + qse_stx_t* stx = parser->stx; + return __add_literal (parser, qse_stx_new_symbolx(stx, str, size)); +} + +int qse_stx_parser_parse_method ( + qse_stx_parser_t* parser, qse_word_t method_class, void* input) +{ + int n; + + if (parser->input_func == QSE_NULL) { + parser->error_code = QSE_STX_PARSER_ERROR_INPUT_FUNC; + return -1; + } + + parser->method_class = method_class; + if (__open_input(parser, input) == -1) return -1; + n = __parse_method (parser, method_class, input); + if (__close_input(parser) == -1) return -1; + + return n; +} + +static int __parse_method ( + qse_stx_parser_t* parser, qse_word_t method_class, void* input) +{ + /* + * ::= + * [] [] [] + */ + + GET_CHAR (parser); + GET_TOKEN (parser); + + qse_stx_name_clear (&parser->method_name); + qse_arr_clear (&parser->bytecode); + + while (parser->temporary_count > 0) { + qse_free (parser->temporaries[--parser->temporary_count]); + } + parser->argument_count = 0; + parser->literal_count = 0; + + if (__parse_message_pattern(parser) == -1) return -1; + if (__parse_temporaries(parser) == -1) return -1; + if (__parse_primitive(parser) == -1) return -1; + if (__parse_statements(parser) == -1) return -1; + if (__finish_method (parser) == -1) return -1; + + return 0; +} + +static int __finish_method (qse_stx_parser_t* parser) +{ + qse_stx_t* stx = parser->stx; + qse_stx_class_t* class_obj; + qse_stx_method_t* method_obj; + qse_word_t method, selector; + + qse_assert (parser->bytecode.size != 0); + + class_obj = (qse_stx_class_t*) + QSE_STX_OBJECT(stx, parser->method_class); + + if (class_obj->methods == stx->nil) { + /* TODO: reconfigure method dictionary size */ + class_obj->methods = qse_stx_instantiate ( + stx, stx->class_system_dictionary, + QSE_NULL, QSE_NULL, 64); + } + qse_assert (class_obj->methods != stx->nil); + + selector = qse_stx_new_symbolx ( + stx, parser->method_name.buffer, parser->method_name.size); + + method = qse_stx_instantiate(stx, stx->class_method, + QSE_NULL, parser->literals, parser->literal_count); + method_obj = (qse_stx_method_t*)QSE_STX_OBJECT(stx, method); + + /* TODO: text saving must be optional */ + /*method_obj->text = qse_stx_instantiate ( + stx, stx->class_string, QSE_NULL, + parser->text, qse_strlen(parser->text)); + */ + method_obj->selector = selector; + method_obj->bytecodes = qse_stx_instantiate ( + stx, stx->class_bytearray, QSE_NULL, + parser->bytecode.buf, parser->bytecode.size); + + /* TODO: better way to store argument count & temporary count */ + method_obj->tmpcount = + QSE_STX_TO_SMALLINT(parser->temporary_count - parser->argument_count); + method_obj->argcount = QSE_STX_TO_SMALLINT(parser->argument_count); + + qse_stx_dict_put (stx, class_obj->methods, selector, method); + return 0; +} + +static int __parse_message_pattern (qse_stx_parser_t* parser) +{ + /* + * ::= + * | | + * ::= unarySelector + * ::= binarySelector + * ::= (keyword )+ + */ + int n; + + if (parser->token.type == QSE_STX_TOKEN_IDENT) { + n = __parse_unary_pattern (parser); + } + else if (parser->token.type == QSE_STX_TOKEN_BINARY) { + n = __parse_binary_pattern (parser); + } + else if (parser->token.type == QSE_STX_TOKEN_KEYWORD) { + n = __parse_keyword_pattern (parser); + } + else { + parser->error_code = QSE_STX_PARSER_ERROR_MESSAGE_SELECTOR; + n = -1; + } + + parser->temporary_count = parser->argument_count; + return n; +} + +static int __parse_unary_pattern (qse_stx_parser_t* parser) +{ + /* TODO: check if the method name exists */ + + if (qse_stx_name_adds( + &parser->method_name, parser->token.name.buffer) == -1) { + parser->error_code = QSE_STX_PARSER_ERROR_MEMORY; + return -1; + } + + GET_TOKEN (parser); + return 0; +} + +static int __parse_binary_pattern (qse_stx_parser_t* parser) +{ + /* TODO: check if the method name exists */ + + if (qse_stx_name_adds( + &parser->method_name, parser->token.name.buffer) == -1) { + parser->error_code = QSE_STX_PARSER_ERROR_MEMORY; + return -1; + } + + GET_TOKEN (parser); + if (parser->token.type != QSE_STX_TOKEN_IDENT) { + parser->error_code = QSE_STX_PARSER_ERROR_ARGUMENT_NAME; + return -1; + } + + if (parser->argument_count >= qse_countof(parser->temporaries)) { + parser->error_code = QSE_STX_PARSER_ERROR_TOO_MANY_ARGUMENTS; + return -1; + } + + /* TODO: check for duplicate entries...in instvars */ + parser->temporaries[parser->argument_count] = + qse_stx_token_yield (&parser->token, 0); + if (parser->temporaries[parser->argument_count] == QSE_NULL) { + parser->error_code = QSE_STX_PARSER_ERROR_MEMORY; + return -1; + } + parser->argument_count++; + + GET_TOKEN (parser); + return 0; +} + +static int __parse_keyword_pattern (qse_stx_parser_t* parser) +{ + do { + if (qse_stx_name_adds( + &parser->method_name, parser->token.name.buffer) == -1) { + parser->error_code = QSE_STX_PARSER_ERROR_MEMORY; + return -1; + } + + GET_TOKEN (parser); + if (parser->token.type != QSE_STX_TOKEN_IDENT) { + parser->error_code = QSE_STX_PARSER_ERROR_ARGUMENT_NAME; + return -1; + } + + if (__is_pseudo_variable(&parser->token)) { + parser->error_code = QSE_STX_PARSER_ERROR_PSEUDO_VARIABLE; + return -1; + } + + if (parser->argument_count >= qse_countof(parser->temporaries)) { + parser->error_code = QSE_STX_PARSER_ERROR_TOO_MANY_ARGUMENTS; + return -1; + } + + parser->temporaries[parser->argument_count] = + qse_stx_token_yield (&parser->token, 0); + if (parser->temporaries[parser->argument_count] == QSE_NULL) { + parser->error_code = QSE_STX_PARSER_ERROR_MEMORY; + return -1; + } + +/* TODO: check for duplicate entries...in instvars/arguments */ + parser->argument_count++; + + GET_TOKEN (parser); + } while (parser->token.type == QSE_STX_TOKEN_KEYWORD); + + /* TODO: check if the method name exists */ + /* if it exists, collapse arguments */ +qse_printf (QSE_T("METHOD NAME ==> [%s]\n"), parser->method_name.buffer); + + return 0; +} + +static int __parse_temporaries (qse_stx_parser_t* parser) +{ + /* + * ::= '|' '|' + * ::= identifier* + */ + + if (!__is_vbar_token(&parser->token)) return 0; + + GET_TOKEN (parser); + while (parser->token.type == QSE_STX_TOKEN_IDENT) { + if (parser->temporary_count >= qse_countof(parser->temporaries)) { + parser->error_code = QSE_STX_PARSER_ERROR_TOO_MANY_TEMPORARIES; + return -1; + } + + if (__is_pseudo_variable(&parser->token)) { + parser->error_code = QSE_STX_PARSER_ERROR_PSEUDO_VARIABLE; + return -1; + } + + parser->temporaries[parser->temporary_count] = + qse_stx_token_yield (&parser->token, 0); + if (parser->temporaries[parser->temporary_count] == QSE_NULL) { + parser->error_code = QSE_STX_PARSER_ERROR_MEMORY; + return -1; + } + +/* TODO: check for duplicate entries...in instvars/arguments/temporaries */ + parser->temporary_count++; + + GET_TOKEN (parser); + } + if (!__is_vbar_token(&parser->token)) { + parser->error_code = QSE_STX_PARSER_ERROR_TEMPORARIES_NOT_CLOSED; + return -1; + } + + GET_TOKEN (parser); + return 0; +} + +static int __parse_primitive (qse_stx_parser_t* parser) +{ + /* + * ::= '<' 'primitive:' number '>' + */ + + int prim_no; + + if (!__is_primitive_opener(&parser->token)) return 0; + GET_TOKEN (parser); + + if (parser->token.type != QSE_STX_TOKEN_KEYWORD || + qse_strcmp (parser->token.name.buffer, QSE_T("primitive:")) != 0) { + parser->error_code = QSE_STX_PARSER_ERROR_PRIMITIVE_KEYWORD; + return -1; + } + + GET_TOKEN (parser); /* TODO: only integer */ + if (parser->token.type != QSE_STX_TOKEN_NUMLIT) { + parser->error_code = QSE_STX_PARSER_ERROR_PRIMITIVE_NUMBER; + return -1; + } + +/*TODO: more checks the validity of the primitive number */ + if (!qse_stristype(parser->token.name.buffer, qse_isdigit)) { + parser->error_code = QSE_STX_PARSER_ERROR_PRIMITIVE_NUMBER; + return -1; + } + + QSE_STRTOI (prim_no, parser->token.name.buffer, QSE_NULL, 10); + if (prim_no < 0 || prim_no > 0xFF) { + parser->error_code = QSE_STX_PARSER_ERROR_PRIMITIVE_NUMBER_RANGE; + return -1; + } + + EMIT_DO_PRIMITIVE (parser, prim_no); + + GET_TOKEN (parser); + if (!__is_primitive_closer(&parser->token)) { + parser->error_code = QSE_STX_PARSER_ERROR_PRIMITIVE_NOT_CLOSED; + return -1; + } + + GET_TOKEN (parser); + return 0; +} + +static int __parse_statements (qse_stx_parser_t* parser) +{ + /* + * ::= (ORIGINAL->maybe wrong) + * ( ['.'] ) | + * ( ['.' []]) + * ::= (REVISED->correct?) + * ['. []] + */ + + while (parser->token.type != QSE_STX_TOKEN_END) { + if (__parse_statement (parser) == -1) return -1; + + if (parser->token.type == QSE_STX_TOKEN_PERIOD) { + GET_TOKEN (parser); + continue; + } + + if (parser->token.type != QSE_STX_TOKEN_END) { + parser->error_code = QSE_STX_PARSER_ERROR_NO_PERIOD; + return -1; + } + } + + EMIT_CODE (parser, RETURN_RECEIVER); + return 0; +} + +static int __parse_block_statements (qse_stx_parser_t* parser) +{ + while (parser->token.type != QSE_STX_TOKEN_RBRACKET && + parser->token.type != QSE_STX_TOKEN_END) { + + if (__parse_statement(parser) == -1) return -1; + if (parser->token.type != QSE_STX_TOKEN_PERIOD) break; + GET_TOKEN (parser); + } + + return 0; +} + +static int __parse_statement (qse_stx_parser_t* parser) +{ + /* + * ::= | + * ::= returnOperator + * returnOperator ::= '^' + */ + + if (parser->token.type == QSE_STX_TOKEN_RETURN) { + GET_TOKEN (parser); + if (__parse_expression(parser) == -1) return -1; + EMIT_RETURN_FROM_MESSAGE (parser); + } + else { + if (__parse_expression(parser) == -1) return -1; + } + + return 0; +} + +static int __parse_expression (qse_stx_parser_t* parser) +{ + /* + * ::= | + * ::= assignmentOperator + * ::= [ ] + * ::= identifier + * assignmentOperator ::= ':=' + */ + qse_stx_t* stx = parser->stx; + + if (parser->token.type == QSE_STX_TOKEN_IDENT) { + qse_char_t* ident = qse_stx_token_yield (&parser->token, 0); + if (ident == QSE_NULL) { + parser->error_code = QSE_STX_PARSER_ERROR_MEMORY; + return -1; + } + + GET_TOKEN (parser); + if (parser->token.type == QSE_STX_TOKEN_ASSIGN) { + GET_TOKEN (parser); + if (__parse_assignment(parser, ident) == -1) { + qse_free (ident); + return -1; + } + } + else { + if (__parse_basic_expression(parser, ident) == -1) { + qse_free (ident); + return -1; + } + } + + qse_free (ident); + } + else { + if (__parse_basic_expression(parser, QSE_NULL) == -1) return -1; + } + + return 0; +} + +static int __parse_basic_expression ( + qse_stx_parser_t* parser, const qse_char_t* ident) +{ + /* + * ::= [ ] + */ + qse_bool_t is_super; + + if (__parse_primary(parser, ident, &is_super) == -1) return -1; + if (parser->token.type != QSE_STX_TOKEN_END && + parser->token.type != QSE_STX_TOKEN_PERIOD) { + if (__parse_message_continuation(parser, is_super) == -1) return -1; + } + return 0; +} + +static int __parse_assignment ( + qse_stx_parser_t* parser, const qse_char_t* target) +{ + /* + * ::= assignmentOperator + */ + + qse_word_t i; + qse_stx_t* stx = parser->stx; + + for (i = parser->argument_count; i < parser->temporary_count; i++) { + if (qse_strcmp (target, parser->temporaries[i]) == 0) { + if (__parse_expression(parser) == -1) return -1; + EMIT_STORE_TEMPORARY_LOCATION (parser, i); + return 0; + } + } + + if (qse_stx_get_instance_variable_index ( + stx, parser->method_class, target, &i) == 0) { + if (__parse_expression(parser) == -1) return -1; + EMIT_STORE_RECEIVER_VARIABLE (parser, i); + return 0; + } + + if (qse_stx_lookup_class_variable ( + stx, parser->method_class, target) != stx->nil) { + if (__parse_expression(parser) == -1) return -1; + + /* TODO */ + EMIT_CODE_TEST (parser, QSE_T("ASSIGN_CLASSVAR #"), target); + //EMIT_STORE_CLASS_VARIABLE (parser, target); + return 0; + } + + /* TODO: IMPLEMENT POOL DICTIONARIES */ + + /* TODO: IMPLEMENT GLOBLAS, but i don't like this idea */ + + parser->error_code = QSE_STX_PARSER_ERROR_UNDECLARED_NAME; + return -1; +} + +static int __parse_primary ( + qse_stx_parser_t* parser, const qse_char_t* ident, qse_bool_t* is_super) +{ + /* + * ::= + * identifier | | + * | ( '('')' ) + */ + + qse_stx_t* stx = parser->stx; + + if (ident == QSE_NULL) { + int pos; + qse_word_t literal; + + *is_super = qse_false; + + if (parser->token.type == QSE_STX_TOKEN_IDENT) { + if (__parse_primary_ident(parser, + parser->token.name.buffer, is_super) == -1) return -1; + GET_TOKEN (parser); + } + else if (parser->token.type == QSE_STX_TOKEN_CHARLIT) { + pos = __add_character_literal( + parser, parser->token.name.buffer[0]); + if (pos == -1) return -1; + EMIT_PUSH_LITERAL_CONSTANT (parser, pos); + GET_TOKEN (parser); + } + else if (parser->token.type == QSE_STX_TOKEN_STRLIT) { + pos = __add_string_literal (parser, + parser->token.name.buffer, parser->token.name.size); + if (pos == -1) return -1; + EMIT_PUSH_LITERAL_CONSTANT (parser, pos); + GET_TOKEN (parser); + } + else if (parser->token.type == QSE_STX_TOKEN_NUMLIT) { + /* TODO: other types of numbers, negative numbers, etc */ + qse_word_t tmp; + QSE_STRTOI (tmp, parser->token.name.buffer, QSE_NULL, 10); + literal = QSE_STX_TO_SMALLINT(tmp); + pos = __add_literal(parser, literal); + if (pos == -1) return -1; + EMIT_PUSH_LITERAL_CONSTANT (parser, pos); + GET_TOKEN (parser); + } + else if (parser->token.type == QSE_STX_TOKEN_SYMLIT) { + pos = __add_symbol_literal (parser, + parser->token.name.buffer, parser->token.name.size); + if (pos == -1) return -1; + EMIT_PUSH_LITERAL_CONSTANT (parser, pos); + GET_TOKEN (parser); + } + else if (parser->token.type == QSE_STX_TOKEN_LBRACKET) { + GET_TOKEN (parser); + if (__parse_block_constructor(parser) == -1) return -1; + } + else if (parser->token.type == QSE_STX_TOKEN_APAREN) { + /* TODO: array literal */ + } + else if (parser->token.type == QSE_STX_TOKEN_LPAREN) { + GET_TOKEN (parser); + if (__parse_expression(parser) == -1) return -1; + if (parser->token.type != QSE_STX_TOKEN_RPAREN) { + parser->error_code = QSE_STX_PARSER_ERROR_NO_RPAREN; + return -1; + } + GET_TOKEN (parser); + } + else { + parser->error_code = QSE_STX_PARSER_ERROR_PRIMARY; + return -1; + } + } + else { + /*if (__parse_primary_ident(parser, parser->token.name.buffer) == -1) return -1;*/ + if (__parse_primary_ident(parser, ident, is_super) == -1) return -1; + } + + return 0; +} + +static int __parse_primary_ident ( + qse_stx_parser_t* parser, const qse_char_t* ident, qse_bool_t* is_super) +{ + qse_word_t i; + qse_stx_t* stx = parser->stx; + + *is_super = qse_false; + + if (qse_strcmp(ident, QSE_T("self")) == 0) { + EMIT_CODE (parser, PUSH_RECEIVER); + return 0; + } + else if (qse_strcmp(ident, QSE_T("super")) == 0) { + *is_super = qse_true; + EMIT_CODE (parser, PUSH_RECEIVER); + return 0; + } + else if (qse_strcmp(ident, QSE_T("nil")) == 0) { + EMIT_CODE (parser, PUSH_NIL); + return 0; + } + else if (qse_strcmp(ident, QSE_T("true")) == 0) { + EMIT_CODE (parser, PUSH_TRUE); + return 0; + } + else if (qse_strcmp(ident, QSE_T("false")) == 0) { + EMIT_CODE (parser, PUSH_FALSE); + return 0; + } + + /* Refer to __parse_assignment for identifier lookup */ + + for (i = 0; i < parser->temporary_count; i++) { + if (qse_strcmp(ident, parser->temporaries[i]) == 0) { + EMIT_PUSH_TEMPORARY_LOCATION (parser, i); + return 0; + } + } + + if (qse_stx_get_instance_variable_index ( + stx, parser->method_class, ident, &i) == 0) { + EMIT_PUSH_RECEIVER_VARIABLE (parser, i); + return 0; + } + + /* TODO: what is the best way to look up a class variable? */ + /* 1. Use the class containing it and using its position */ + /* 2. Use a primitive method after pushing the name as a symbol */ + /* 3. Implement a vm instruction to do it */ +/* + if (qse_stx_lookup_class_variable ( + stx, parser->method_class, ident) != stx->nil) { + //EMIT_LOOKUP_CLASS_VARIABLE (parser, ident); + return 0; + } +*/ + + /* TODO: IMPLEMENT POOL DICTIONARIES */ + + /* TODO: IMPLEMENT GLOBLAS, but i don't like this idea */ + + parser->error_code = QSE_STX_PARSER_ERROR_UNDECLARED_NAME; + return -1; +} + +static int __parse_block_constructor (qse_stx_parser_t* parser) +{ + /* + * ::= '[' ']' + * ::= [* '|'] + * [] [] + * ::= ':' identifier + */ + + if (parser->token.type == QSE_STX_TOKEN_COLON) { + do { + GET_TOKEN (parser); + + if (parser->token.type != QSE_STX_TOKEN_IDENT) { + parser->error_code = QSE_STX_PARSER_ERROR_BLOCK_ARGUMENT_NAME; + return -1; + } + + /* TODO : store block arguments */ + GET_TOKEN (parser); + } while (parser->token.type == QSE_STX_TOKEN_COLON); + + if (!__is_vbar_token(&parser->token)) { + parser->error_code = QSE_STX_PARSER_ERROR_BLOCK_ARGUMENT_LIST; + return -1; + } + + GET_TOKEN (parser); + } + + /* TODO: create a block closure */ + if (__parse_temporaries(parser) == -1) return -1; + if (__parse_block_statements(parser) == -1) return -1; + + if (parser->token.type != QSE_STX_TOKEN_RBRACKET) { + parser->error_code = QSE_STX_PARSER_ERROR_BLOCK_NOT_CLOSED; + return -1; + } + + GET_TOKEN (parser); + + /* TODO: do special treatment for block closures */ + + return 0; +} + +static int __parse_message_continuation ( + qse_stx_parser_t* parser, qse_bool_t is_super) +{ + /* + * ::= + * (+ * [] ) | + * (+ [] ) | + * + * ::= (';' )* + */ + if (__parse_keyword_message(parser, is_super) == -1) return -1; + + while (parser->token.type == QSE_STX_TOKEN_SEMICOLON) { + EMIT_CODE_TEST (parser, QSE_T("DoSpecial(DUP_RECEIVER(CASCADE))"), QSE_T("")); + GET_TOKEN (parser); + + if (__parse_keyword_message(parser, qse_false) == -1) return -1; + EMIT_CODE_TEST (parser, QSE_T("DoSpecial(POP_TOP)"), QSE_T("")); + } + + return 0; +} + +static int __parse_keyword_message (qse_stx_parser_t* parser, qse_bool_t is_super) +{ + /* + * ::= (keyword )+ + * ::= * * + */ + + qse_stx_name_t name; + qse_word_t pos; + qse_bool_t is_super2; + int nargs = 0, n; + + if (__parse_binary_message (parser, is_super) == -1) return -1; + if (parser->token.type != QSE_STX_TOKEN_KEYWORD) return 0; + + if (qse_stx_name_open(&name, 0) == QSE_NULL) { + parser->error_code = QSE_STX_PARSER_ERROR_MEMORY; + return -1; + } + + do { + if (qse_stx_name_adds(&name, parser->token.name.buffer) == -1) { + parser->error_code = QSE_STX_PARSER_ERROR_MEMORY; + qse_stx_name_close (&name); + return -1; + } + + GET_TOKEN (parser); + if (__parse_primary(parser, QSE_NULL, &is_super2) == -1) { + qse_stx_name_close (&name); + return -1; + } + + if (__parse_binary_message(parser, is_super2) == -1) { + qse_stx_name_close (&name); + return -1; + } + + nargs++; + /* TODO: check if it has too many arguments.. */ + } while (parser->token.type == QSE_STX_TOKEN_KEYWORD); + + pos = __add_symbol_literal (parser, name.buffer, name.size); + if (pos == -1) { + qse_stx_name_close (&name); + return -1; + } + + n = (is_super)? + __emit_send_to_super(parser,nargs,pos): + __emit_send_to_self(parser,nargs,pos); + if (n == -1) { + qse_stx_name_close (&name); + return -1; + } + + qse_stx_name_close (&name); + return 0; +} + +static int __parse_binary_message (qse_stx_parser_t* parser, qse_bool_t is_super) +{ + /* + * ::= binarySelector + * ::= * + */ + qse_word_t pos; + qse_bool_t is_super2; + int n; + + if (__parse_unary_message (parser, is_super) == -1) return -1; + + while (parser->token.type == QSE_STX_TOKEN_BINARY) { + qse_char_t* op = qse_stx_token_yield (&parser->token, 0); + if (op == QSE_NULL) { + parser->error_code = QSE_STX_PARSER_ERROR_MEMORY; + return -1; + } + + GET_TOKEN (parser); + if (__parse_primary(parser, QSE_NULL, &is_super2) == -1) { + qse_free (op); + return -1; + } + + if (__parse_unary_message(parser, is_super2) == -1) { + qse_free (op); + return -1; + } + + pos = __add_symbol_literal (parser, op, qse_strlen(op)); + if (pos == -1) { + qse_free (op); + return -1; + } + + n = (is_super)? + __emit_send_to_super(parser,2,pos): + __emit_send_to_self(parser,2,pos); + if (n == -1) { + qse_free (op); + return -1; + } + + qse_free (op); + } + + return 0; +} + +static int __parse_unary_message (qse_stx_parser_t* parser, qse_bool_t is_super) +{ + /* ::= unarySelector */ + + qse_word_t pos; + int n; + + while (parser->token.type == QSE_STX_TOKEN_IDENT) { + pos = __add_symbol_literal (parser, + parser->token.name.buffer, parser->token.name.size); + if (pos == -1) return -1; + + n = (is_super)? + __emit_send_to_super(parser,0,pos): + __emit_send_to_self(parser,0,pos); + if (n == -1) return -1; + + GET_TOKEN (parser); + } + + return 0; +} + +static int __get_token (qse_stx_parser_t* parser) +{ + qse_cint_t c; + + do { + if (__skip_spaces(parser) == -1) return -1; + if (parser->curc == QSE_T('"')) { + GET_CHAR (parser); + if (__skip_comment(parser) == -1) return -1; + } + else break; + } while (1); + + c = parser->curc; + qse_stx_token_clear (&parser->token); + + if (c == QSE_T_EOF) { + parser->token.type = QSE_STX_TOKEN_END; + } + else if (qse_isalpha(c)) { + if (__get_ident(parser) == -1) return -1; + } + else if (qse_isdigit(c)) { + if (__get_numlit(parser, qse_false) == -1) return -1; + } + else if (c == QSE_T('$')) { + GET_CHAR (parser); + if (__get_charlit(parser) == -1) return -1; + } + else if (c == QSE_T('\'')) { + GET_CHAR (parser); + if (__get_strlit(parser) == -1) return -1; + } + else if (c == QSE_T(':')) { + parser->token.type = QSE_STX_TOKEN_COLON; + ADD_TOKEN_CHAR(parser, c); + GET_CHAR (parser); + + c = parser->curc; + if (c == QSE_T('=')) { + parser->token.type = QSE_STX_TOKEN_ASSIGN; + ADD_TOKEN_CHAR(parser, c); + GET_CHAR (parser); + } + } + else if (c == QSE_T('^')) { + parser->token.type = QSE_STX_TOKEN_RETURN; + ADD_TOKEN_CHAR(parser, c); + GET_CHAR (parser); + } + else if (c == QSE_T('[')) { + parser->token.type = QSE_STX_TOKEN_LBRACKET; + ADD_TOKEN_CHAR(parser, c); + GET_CHAR (parser); + } + else if (c == QSE_T(']')) { + parser->token.type = QSE_STX_TOKEN_RBRACKET; + ADD_TOKEN_CHAR(parser, c); + GET_CHAR (parser); + } + else if (c == QSE_T('(')) { + parser->token.type = QSE_STX_TOKEN_LPAREN; + ADD_TOKEN_CHAR(parser, c); + GET_CHAR (parser); + } + else if (c == QSE_T(')')) { + parser->token.type = QSE_STX_TOKEN_RPAREN; + ADD_TOKEN_CHAR(parser, c); + GET_CHAR (parser); + } + else if (c == QSE_T('#')) { + /*ADD_TOKEN_CHAR(parser, c);*/ + GET_CHAR (parser); + + c = parser->curc; + if (c == QSE_T_EOF) { + parser->error_code = QSE_STX_PARSER_ERROR_LITERAL; + return -1; + } + else if (c == QSE_T('(')) { + ADD_TOKEN_CHAR(parser, c); + parser->token.type = QSE_STX_TOKEN_APAREN; + GET_CHAR (parser); + } + else if (c == QSE_T('\'')) { + GET_CHAR (parser); + if (__get_strlit(parser) == -1) return -1; + parser->token.type = QSE_STX_TOKEN_SYMLIT; + } + else if (!__is_closing_char(c) && !qse_isspace(c)) { + do { + ADD_TOKEN_CHAR(parser, c); + GET_CHAR (parser); + c = parser->curc; + } while (!__is_closing_char(c) && !qse_isspace(c)); + + parser->token.type = QSE_STX_TOKEN_SYMLIT; + } + else { + parser->error_code = QSE_STX_PARSER_ERROR_LITERAL; + return -1; + } + } + else if (c == QSE_T('.')) { + parser->token.type = QSE_STX_TOKEN_PERIOD; + ADD_TOKEN_CHAR(parser, c); + GET_CHAR (parser); + } + else if (c == QSE_T(';')) { + parser->token.type = QSE_STX_TOKEN_SEMICOLON; + ADD_TOKEN_CHAR(parser, c); + GET_CHAR (parser); + } + else if (__is_binary_char(c)) { + if (__get_binary(parser) == -1) return -1; + } + else { + parser->error_code = QSE_STX_PARSER_ERROR_CHAR; + return -1; + } + +//qse_printf (QSE_T("TOKEN: %s\n"), parser->token.name.buffer); + return 0; +} + +static int __get_ident (qse_stx_parser_t* parser) +{ + /* + * identifier ::= letter (letter | digit)* + * keyword ::= identifier ':' + */ + + qse_cint_t c = parser->curc; + parser->token.type = QSE_STX_TOKEN_IDENT; + + do { + ADD_TOKEN_CHAR(parser, c); + GET_CHAR (parser); + c = parser->curc; + } while (qse_isalnum(c)); + + if (c == QSE_T(':')) { + ADD_TOKEN_CHAR (parser, c); + parser->token.type = QSE_STX_TOKEN_KEYWORD; + GET_CHAR (parser); + } + + return 0; +} + +static int __get_numlit (qse_stx_parser_t* parser, qse_bool_t negated) +{ + /* + * ::= ['-'] + * ::= integer | float | scaledDecimal + * integer ::= decimalInteger | radixInteger + * decimalInteger ::= digits + * digits ::= digit+ + * radixInteger ::= radixSpecifier 'r' radixDigits + * radixSpecifier := digits + * radixDigits ::= (digit | uppercaseAlphabetic)+ + * float ::= mantissa [exponentLetter exponent] + * mantissa ::= digits'.' digits + * exponent ::= ['-']decimalInteger + * exponentLetter ::= 'e' | 'd' | 'q' + * scaledDecimal ::= scaledMantissa 's' [fractionalDigits] + * scaledMantissa ::= decimalInteger | mantissa + * fractionalDigits ::= decimalInteger + */ + + qse_cint_t c = parser->curc; + parser->token.type = QSE_STX_TOKEN_NUMLIT; + + do { + ADD_TOKEN_CHAR(parser, c); + GET_CHAR (parser); + c = parser->curc; + } while (qse_isalnum(c)); + + /* TODO; more */ + return 0; +} + +static int __get_charlit (qse_stx_parser_t* parser) +{ + /* + * character_literal ::= '$' character + * character ::= "Any character in the implementation-defined character set" + */ + + qse_cint_t c = parser->curc; /* even a new-line or white space would be taken */ + if (c == QSE_T_EOF) { + parser->error_code = QSE_STX_PARSER_ERROR_CHARLIT; + return -1; + } + + parser->token.type = QSE_STX_TOKEN_CHARLIT; + ADD_TOKEN_CHAR(parser, c); + GET_CHAR (parser); + return 0; +} + +static int __get_strlit (qse_stx_parser_t* parser) +{ + /* + * string_literal ::= stringDelimiter stringBody stringDelimiter + * stringBody ::= (nonStringDelimiter | (stringDelimiter stringDelimiter)*) + * stringDelimiter ::= ''' "a single quote" + */ + + /* TODO: C-like string */ + + qse_cint_t c = parser->curc; + parser->token.type = QSE_STX_TOKEN_STRLIT; + + do { + do { + ADD_TOKEN_CHAR (parser, c); + GET_CHAR (parser); + c = parser->curc; + + if (c == QSE_T_EOF) { + parser->error_code = QSE_STX_PARSER_ERROR_STRLIT; + return -1; + } + } while (c != QSE_T('\'')); + + GET_CHAR (parser); + c = parser->curc; + } while (c == QSE_T('\'')); + + return 0; +} + +static int __get_binary (qse_stx_parser_t* parser) +{ + /* + * binarySelector ::= binaryCharacter+ + */ + + qse_cint_t c = parser->curc; + ADD_TOKEN_CHAR (parser, c); + + if (c == QSE_T('-')) { + GET_CHAR (parser); + c = parser->curc; + if (qse_isdigit(c)) return __get_numlit(parser,qse_true); + } + else { + GET_CHAR (parser); + c = parser->curc; + } + + /* up to 2 characters only */ + if (__is_binary_char(c)) { + ADD_TOKEN_CHAR (parser, c); + GET_CHAR (parser); + c = parser->curc; + } + + /* or up to any occurrences */ + /* + while (__is_binary_char(c)) { + ADD_TOKEN_CHAR (parser, c); + GET_CHAR (parser); + c = parser->curc; + } + */ + + parser->token.type = QSE_STX_TOKEN_BINARY; + return 0; +} + +static int __skip_spaces (qse_stx_parser_t* parser) +{ + while (qse_isspace(parser->curc)) GET_CHAR (parser); + return 0; +} + +static int __skip_comment (qse_stx_parser_t* parser) +{ + while (parser->curc != QSE_T('"')) GET_CHAR (parser); + GET_CHAR (parser); + return 0; +} + +static int __get_char (qse_stx_parser_t* parser) +{ + qse_cint_t c; + + if (parser->ungotc_count > 0) { + parser->curc = parser->ungotc[parser->ungotc_count--]; + } + else { + if (parser->input_func ( + QSE_STX_PARSER_INPUT_CONSUME, + parser->input_owner, (void*)&c) == -1) { + parser->error_code = QSE_STX_PARSER_ERROR_INPUT; + return -1; + } + parser->curc = c; + } + return 0; +} + +static int __unget_char (qse_stx_parser_t* parser, qse_cint_t c) +{ + if (parser->ungotc_count >= qse_countof(parser->ungotc)) return -1; + parser->ungotc[parser->ungotc_count++] = c; + return 0; +} + +static int __open_input (qse_stx_parser_t* parser, void* input) +{ + if (parser->input_func( + QSE_STX_PARSER_INPUT_OPEN, + (void*)&parser->input_owner, input) == -1) { + parser->error_code = QSE_STX_PARSER_ERROR_INPUT; + return -1; + } + + parser->error_code = QSE_STX_PARSER_ERROR_NONE; + parser->curc = QSE_T_EOF; + parser->ungotc_count = 0; + return 0; +} + +static int __close_input (qse_stx_parser_t* parser) +{ + if (parser->input_func( + QSE_STX_PARSER_INPUT_CLOSE, + parser->input_owner, QSE_NULL) == -1) { + parser->error_code = QSE_STX_PARSER_ERROR_INPUT; + return -1; + } + + return 0; +} + diff --git a/qse/lib/stx/parser.h b/qse/lib/stx/parser.h new file mode 100644 index 00000000..d0de7e05 --- /dev/null +++ b/qse/lib/stx/parser.h @@ -0,0 +1,107 @@ +/* + * $Id: parser.h 118 2008-03-03 11:21:33Z baconevi $ + */ + +#ifndef _QSE_STX_PARSER_H_ +#define _QSE_STX_PARSER_H_ + +#include +#include +#include +#include + +enum +{ + QSE_STX_PARSER_ERROR_NONE, + + /* system errors */ + QSE_STX_PARSER_ERROR_INPUT_FUNC, + QSE_STX_PARSER_ERROR_INPUT, + QSE_STX_PARSER_ERROR_MEMORY, + + /* lexical errors */ + QSE_STX_PARSER_ERROR_CHAR, + QSE_STX_PARSER_ERROR_CHARLIT, + QSE_STX_PARSER_ERROR_STRLIT, + QSE_STX_PARSER_ERROR_LITERAL, + + /* syntatic error */ + QSE_STX_PARSER_ERROR_MESSAGE_SELECTOR, + QSE_STX_PARSER_ERROR_ARGUMENT_NAME, + QSE_STX_PARSER_ERROR_TOO_MANY_ARGUMENTS, + + QSE_STX_PARSER_ERROR_PRIMITIVE_KEYWORD, + QSE_STX_PARSER_ERROR_PRIMITIVE_NUMBER, + QSE_STX_PARSER_ERROR_PRIMITIVE_NUMBER_RANGE, + QSE_STX_PARSER_ERROR_PRIMITIVE_NOT_CLOSED, + + QSE_STX_PARSER_ERROR_TEMPORARIES_NOT_CLOSED, + QSE_STX_PARSER_ERROR_TOO_MANY_TEMPORARIES, + QSE_STX_PARSER_ERROR_PSEUDO_VARIABLE, + QSE_STX_PARSER_ERROR_PRIMARY, + + QSE_STX_PARSER_ERROR_NO_PERIOD, + QSE_STX_PARSER_ERROR_NO_RPAREN, + QSE_STX_PARSER_ERROR_BLOCK_ARGUMENT_NAME, + QSE_STX_PARSER_ERROR_BLOCK_ARGUMENT_LIST, + QSE_STX_PARSER_ERROR_BLOCK_NOT_CLOSED, + + QSE_STX_PARSER_ERROR_UNDECLARED_NAME, + QSE_STX_PARSER_ERROR_TOO_MANY_LITERALS +}; + +enum +{ + /* input_func cmd */ + QSE_STX_PARSER_INPUT_OPEN, + QSE_STX_PARSER_INPUT_CLOSE, + QSE_STX_PARSER_INPUT_CONSUME, + QSE_STX_PARSER_INPUT_REWIND +}; + +typedef struct qse_stx_parser_t qse_stx_parser_t; + +struct qse_stx_parser_t +{ + qse_stx_t* stx; + int error_code; + + qse_word_t method_class; + qse_stx_name_t method_name; + + qse_char_t* temporaries[256]; /* TODO: different size? or dynamic? */ + qse_word_t argument_count; + qse_word_t temporary_count; + + qse_word_t literals[256]; /* TODO: make it a dynamic array */ + qse_word_t literal_count; + + qse_arr_t bytecode; + + qse_stx_token_t token; + qse_cint_t curc; + qse_cint_t ungotc[5]; + qse_size_t ungotc_count; + + void* input_owner; + int (*input_func) (int cmd, void* owner, void* arg); + + qse_bool_t __dynamic; +}; + +#ifdef __cplusplus +extern "C" { +#endif + +qse_stx_parser_t* qse_stx_parser_open (qse_stx_parser_t* parser, qse_stx_t* stx); +void qse_stx_parser_close (qse_stx_parser_t* parser); + +const qse_char_t* qse_stx_parser_error_string (qse_stx_parser_t* parser); +int qse_stx_parser_parse_method ( + qse_stx_parser_t* parser, qse_word_t method_class, void* input); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/qse/stx/stx.bnf b/qse/lib/stx/stx.bnf similarity index 100% rename from qse/stx/stx.bnf rename to qse/lib/stx/stx.bnf diff --git a/qse/lib/stx/stx.c b/qse/lib/stx/stx.c new file mode 100644 index 00000000..42311431 --- /dev/null +++ b/qse/lib/stx/stx.c @@ -0,0 +1,70 @@ +/* + * $Id: stx.c 118 2008-03-03 11:21:33Z baconevi $ + */ + +#include +#include +#include + +qse_stx_t* qse_stx_open (qse_stx_t* stx, qse_word_t capacity) +{ + qse_word_t i; + + if (stx == QSE_NULL) { + stx = (qse_stx_t*)qse_malloc (qse_sizeof(stx)); + if (stx == QSE_NULL) return QSE_NULL; + stx->__dynamic = qse_true; + } + else stx->__dynamic = qse_false; + + if (qse_stx_memory_open (&stx->memory, capacity) == QSE_NULL) { + if (stx->__dynamic) qse_free (stx); + return QSE_NULL; + } + + stx->symtab.size = 0; + stx->symtab.capacity = 128; /* TODO: symbol table size */ + stx->symtab.datum = (qse_word_t*)qse_malloc ( + qse_sizeof(qse_word_t) * stx->symtab.capacity); + if (stx->symtab.datum == QSE_NULL) { + qse_stx_memory_close (&stx->memory); + if (stx->__dynamic) qse_free (stx); + return QSE_NULL; + } + + stx->nil = QSE_STX_NIL; + stx->true = QSE_STX_TRUE; + stx->false = QSE_STX_FALSE; + + stx->smalltalk = QSE_STX_NIL; + + stx->class_symbol = QSE_STX_NIL; + stx->class_metaclass = QSE_STX_NIL; + stx->class_association = QSE_STX_NIL; + + stx->class_object = QSE_STX_NIL; + stx->class_class = QSE_STX_NIL; + stx->class_array = QSE_STX_NIL; + stx->class_bytearray = QSE_STX_NIL; + stx->class_string = QSE_STX_NIL; + stx->class_character = QSE_STX_NIL; + stx->class_context = QSE_STX_NIL; + stx->class_system_dictionary = QSE_STX_NIL; + stx->class_method = QSE_STX_NIL; + stx->class_smallinteger = QSE_STX_NIL; + + for (i = 0; i < stx->symtab.capacity; i++) { + stx->symtab.datum[i] = stx->nil; + } + + stx->__wantabort = qse_false; + return stx; +} + +void qse_stx_close (qse_stx_t* stx) +{ + qse_free (stx->symtab.datum); + qse_stx_memory_close (&stx->memory); + if (stx->__dynamic) qse_free (stx); +} + diff --git a/qse/lib/stx/stx.h b/qse/lib/stx/stx.h new file mode 100644 index 00000000..5e7dd41d --- /dev/null +++ b/qse/lib/stx/stx.h @@ -0,0 +1,163 @@ +/* + * $Id: stx.h 118 2008-03-03 11:21:33Z baconevi $ + */ + +#ifndef _QSE_STX_STX_H_ +#define _QSE_STX_STX_H_ + +#include +#include + +typedef struct qse_stx_objhdr_t qse_stx_objhdr_t; +typedef struct qse_stx_object_t qse_stx_object_t; +typedef struct qse_stx_word_object_t qse_stx_word_object_t; +typedef struct qse_stx_byte_object_t qse_stx_byte_object_t; +typedef struct qse_stx_char_object_t qse_stx_char_object_t; +typedef struct qse_stx_memory_t qse_stx_memory_t; +typedef struct qse_stx_symtab_t qse_stx_symtab_t; +typedef struct qse_stx_t qse_stx_t; + +/* common object structure */ +struct qse_stx_objhdr_t +{ + /* access - type: 2; size: rest; + * type - word indexed: 00 byte indexed: 01 char indexed: 10 + */ + qse_word_t access; + qse_word_t class; +}; + +struct qse_stx_object_t +{ + qse_stx_objhdr_t header; +}; + +struct qse_stx_word_object_t +{ + qse_stx_objhdr_t header; + qse_word_t data[1]; +}; + +struct qse_stx_byte_object_t +{ + qse_stx_objhdr_t header; + qse_byte_t data[1]; +}; + +struct qse_stx_char_object_t +{ + qse_stx_objhdr_t header; + qse_char_t data[1]; +}; + + +struct qse_stx_memory_t +{ + qse_word_t capacity; + qse_stx_object_t** slots; + qse_stx_object_t** free; + qse_bool_t __dynamic; +}; + +struct qse_stx_symtab_t +{ + qse_word_t* datum; + qse_word_t size; + qse_word_t capacity; +}; + +struct qse_stx_t +{ + qse_stx_memory_t memory; + qse_stx_symtab_t symtab; + + qse_word_t nil; + qse_word_t true; + qse_word_t false; + + qse_word_t smalltalk; + + qse_word_t class_symbol; + qse_word_t class_metaclass; + qse_word_t class_association; + + qse_word_t class_object; + qse_word_t class_class; + qse_word_t class_array; + qse_word_t class_bytearray; + qse_word_t class_string; + qse_word_t class_character; + qse_word_t class_context; + qse_word_t class_system_dictionary; + qse_word_t class_method; + qse_word_t class_smallinteger; + + qse_bool_t __dynamic; + qse_bool_t __wantabort; /* TODO: make it a function pointer */ +}; + +#define QSE_STX_IS_SMALLINT(x) (((x) & 0x01) == 0x01) +#define QSE_STX_TO_SMALLINT(x) (((x) << 1) | 0x01) +#define QSE_STX_FROM_SMALLINT(x) ((x) >> 1) + +#define QSE_STX_IS_OINDEX(x) (((x) & 0x01) == 0x00) +#define QSE_STX_TO_OINDEX(x) (((x) << 1) | 0x00) +#define QSE_STX_FROM_OINDEX(x) ((x) >> 1) + +#define QSE_STX_NIL QSE_STX_TO_OINDEX(0) +#define QSE_STX_TRUE QSE_STX_TO_OINDEX(1) +#define QSE_STX_FALSE QSE_STX_TO_OINDEX(2) + +#define QSE_STX_OBJECT(stx,idx) (((stx)->memory).slots[QSE_STX_FROM_OINDEX(idx)]) +#define QSE_STX_CLASS(stx,idx) (QSE_STX_OBJECT(stx,(idx))->header.class) +#define QSE_STX_ACCESS(stx,idx) (QSE_STX_OBJECT(stx,(idx))->header.access) +#define QSE_STX_DATA(stx,idx) ((void*)(QSE_STX_OBJECT(stx,idx) + 1)) + +#define QSE_STX_TYPE(stx,idx) (QSE_STX_ACCESS(stx,idx) & 0x03) +#define QSE_STX_SIZE(stx,idx) (QSE_STX_ACCESS(stx,idx) >> 0x02) + +#define QSE_STX_WORD_INDEXED (0x00) +#define QSE_STX_BYTE_INDEXED (0x01) +#define QSE_STX_CHAR_INDEXED (0x02) + +#define QSE_STX_IS_WORD_OBJECT(stx,idx) \ + (QSE_STX_TYPE(stx,idx) == QSE_STX_WORD_INDEXED) +#define QSE_STX_IS_BYTE_OBJECT(stx,idx) \ + (QSE_STX_TYPE(stx,idx) == QSE_STX_BYTE_INDEXED) +#define QSE_STX_IS_CHAR_OBJECT(stx,idx) \ + (QSE_STX_TYPE(stx,idx) == QSE_STX_CHAR_INDEXED) + +#define QSE_STX_WORD_OBJECT(stx,idx) \ + ((qse_stx_word_object_t*)QSE_STX_OBJECT(stx,idx)) +#define QSE_STX_BYTE_OBJECT(stx,idx) \ + ((qse_stx_byte_object_t*)QSE_STX_OBJECT(stx,idx)) +#define QSE_STX_CHAR_OBJECT(stx,idx) \ + ((qse_stx_char_object_t*)QSE_STX_OBJECT(stx,idx)) + +/* +#define QSE_STX_WORD_AT(stx,idx,n) \ + (((qse_word_t*)(QSE_STX_OBJECT(stx,idx) + 1))[n]) +#define QSE_STX_BYTE_AT(stx,idx,n) \ + (((qse_byte_t*)(QSE_STX_OBJECT(stx,idx) + 1))[n]) +#define QSE_STX_CHAR_AT(stx,idx,n) \ + (((qse_char_t*)(QSE_STX_OBJECT(stx,idx) + 1))[n]) +*/ +#define QSE_STX_WORD_AT(stx,idx,n) \ + (QSE_STX_WORD_OBJECT(stx,idx)->data[n]) +#define QSE_STX_BYTE_AT(stx,idx,n) \ + (QSE_STX_BYTE_OBJECT(stx,idx)->data[n]) +#define QSE_STX_CHAR_AT(stx,idx,n) \ + (QSE_STX_CHAR_OBJECT(stx,idx)->data[n]) + +#ifdef __cplusplus +extern "C" { +#endif + +qse_stx_t* qse_stx_open (qse_stx_t* stx, qse_word_t capacity); +void qse_stx_close (qse_stx_t* stx); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/qse/stx/stx.txt b/qse/lib/stx/stx.txt similarity index 97% rename from qse/stx/stx.txt rename to qse/lib/stx/stx.txt index 992c0d3f..e1cb5a2d 100644 --- a/qse/stx/stx.txt +++ b/qse/lib/stx/stx.txt @@ -1,7 +1,7 @@ -stx(1) ase +stx(1) qse NAME - stx - ase embeddable smalltalk system + stx - qse smalltalk system SYNOPSIS stx [-f imageFile] MainClass @@ -33,7 +33,7 @@ COPYRIGHT Copyright(c) 2005 bacon@abiyo.net SEE ALSO - ase(7) + qse(7) -- stack bytecodes -- diff --git a/qse/lib/stx/symbol.c b/qse/lib/stx/symbol.c new file mode 100644 index 00000000..e6f236d1 --- /dev/null +++ b/qse/lib/stx/symbol.c @@ -0,0 +1,102 @@ +/* + * $Id: symbol.c 118 2008-03-03 11:21:33Z baconevi $ + */ + +#include +#include +#include + +static void __grow_symtab (qse_stx_t* stx) +{ + qse_word_t capa, ncapa, i, j; + qse_word_t* nspace; + + capa = stx->symtab.capacity; + ncapa = capa << 1; + + nspace = (qse_word_t*)qse_malloc(qse_sizeof(qse_word_t) * ncapa); + if (nspace == QSE_NULL) + { + /* TODO: handle memory error */ + } + + for (i = 0; i < capa; i++) + { + qse_word_t x = stx->symtab.datum[i]; + if (x == stx->nil) continue; + + j = qse_stx_strxhash ( + QSE_STX_DATA(stx,x), QSE_STX_SIZE(stx,x)) % ncapa; + + while (1) + { + if (nspace[j] == stx->nil) + { + nspace[j] = x; + break; + } + j = (j % ncapa) + 1; + } + } + + stx->symtab.capacity = ncapa; + qse_free (stx->symtab.datum); + stx->symtab.datum = nspace; +} + +qse_word_t qse_stx_new_symbol (qse_stx_t* stx, const qse_char_t* name) +{ + return qse_stx_new_symbolx (stx, name, qse_strlen(name)); +} + +qse_word_t qse_stx_new_symbolx ( + qse_stx_t* stx, const qse_char_t* name, qse_word_t len) +{ + qse_word_t capa, hash, index, size, x; + + capa = stx->symtab.capacity; + size = stx->symtab.size; + + if (capa <= size + 1) + { + __grow_symtab (stx); + capa = stx->symtab.capacity; + } + + hash = qse_stx_strxhash(name,len); + index = hash % stx->symtab.capacity; + + while (1) + { + x = stx->symtab.datum[index]; + if (x == stx->nil) + { + /* insert a new item into an empty slot */ + x = qse_stx_alloc_char_objectx (stx, name, len); + QSE_STX_CLASS(stx,x) = stx->class_symbol; + stx->symtab.datum[index] = x; + stx->symtab.size++; + break; + } + + if (qse_strxncmp(name, len, + QSE_STX_DATA(stx,x), QSE_STX_SIZE(stx,x)) == 0) break; + + index = (index % stx->symtab.capacity) + 1; + } + + return x; +} + +void qse_stx_traverse_symbol_table ( + qse_stx_t* stx, void (*func) (qse_stx_t*,qse_word_t,void*), void* data) +{ + qse_word_t index, x; + + for (index = 0; index < stx->symtab.capacity; index++) + { + x = stx->symtab.datum[index]; + if (x != stx->nil) func (stx, x, data); + } +} + diff --git a/qse/lib/stx/symbol.h b/qse/lib/stx/symbol.h new file mode 100644 index 00000000..cc1975db --- /dev/null +++ b/qse/lib/stx/symbol.h @@ -0,0 +1,40 @@ +/* + * $Id: symbol.h 118 2008-03-03 11:21:33Z baconevi $ + */ + +#ifndef _QSE_STX_SYMBOL_H_ +#define _QSE_STX_SYMBOL_H_ + +#include + +#define QSE_STX_SYMLINK_SIZE 2 +#define QSE_STX_SYMLINK_LINK 0 +#define QSE_STX_SYMLINK_SYMBOL 1 + +struct qse_stx_symlink_t +{ + qse_stx_objhdr_t header; + qse_word_t link; + qse_word_t symbol; +}; + +typedef struct qse_stx_symlink_t qse_stx_symlink_t; + +#ifdef __cplusplus +extern "C" { +#endif + +qse_word_t qse_stx_new_symbol_link (qse_stx_t* stx, qse_word_t sym); + +qse_word_t qse_stx_new_symbol ( + qse_stx_t* stx, const qse_char_t* name); +qse_word_t qse_stx_new_symbolx ( + qse_stx_t* stx, const qse_char_t* name, qse_word_t len); +void qse_stx_traverse_symbol_table ( + qse_stx_t* stx, void (*func) (qse_stx_t*,qse_word_t,void*), void* data); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/qse/lib/stx/token.c b/qse/lib/stx/token.c new file mode 100644 index 00000000..339db19d --- /dev/null +++ b/qse/lib/stx/token.c @@ -0,0 +1,77 @@ +/* + * $Id: token.c 118 2008-03-03 11:21:33Z baconevi $ + */ + +#include +#include + +qse_stx_token_t* qse_stx_token_open ( + qse_stx_token_t* token, qse_word_t capacity) +{ + if (token == QSE_NULL) { + token = (qse_stx_token_t*) + qse_malloc (qse_sizeof(qse_stx_token_t)); + if (token == QSE_NULL) return QSE_NULL; + token->__dynamic = qse_true; + } + else token->__dynamic = qse_false; + + if (qse_stx_name_open(&token->name, capacity) == QSE_NULL) { + if (token->__dynamic) qse_free (token); + return QSE_NULL; + } + + /* + token->ivalue = 0; + token->fvalue = .0; + */ + token->type = QSE_STX_TOKEN_END; + return token; +} + +void qse_stx_token_close (qse_stx_token_t* token) +{ + qse_stx_name_close (&token->name); + if (token->__dynamic) qse_free (token); +} + +int qse_stx_token_addc (qse_stx_token_t* token, qse_cint_t c) +{ + return qse_stx_name_addc (&token->name, c); +} + +int qse_stx_token_adds (qse_stx_token_t* token, const qse_char_t* s) +{ + return qse_stx_name_adds (&token->name, s); +} + +void qse_stx_token_clear (qse_stx_token_t* token) +{ + /* + token->ivalue = 0; + token->fvalue = .0; + */ + + token->type = QSE_STX_TOKEN_END; + qse_stx_name_clear (&token->name); +} + +qse_char_t* qse_stx_token_yield (qse_stx_token_t* token, qse_word_t capacity) +{ + qse_char_t* p; + + p = qse_stx_name_yield (&token->name, capacity); + if (p == QSE_NULL) return QSE_NULL; + + /* + token->ivalue = 0; + token->fvalue = .0; + */ + token->type = QSE_STX_TOKEN_END; + return p; +} + +int qse_stx_token_compare_name (qse_stx_token_t* token, const qse_char_t* str) +{ + return qse_stx_name_compare (&token->name, str); +} diff --git a/qse/lib/stx/token.h b/qse/lib/stx/token.h new file mode 100644 index 00000000..efc914e4 --- /dev/null +++ b/qse/lib/stx/token.h @@ -0,0 +1,66 @@ +/* + * $Id: token.h 118 2008-03-03 11:21:33Z baconevi $ + */ + +#ifndef _QSE_STX_TOKEN_H_ +#define _QSE_STX_TOKEN_H_ + +#include +#include + +enum +{ + QSE_STX_TOKEN_END, + QSE_STX_TOKEN_CHARLIT, + QSE_STX_TOKEN_STRLIT, + QSE_STX_TOKEN_SYMLIT, + QSE_STX_TOKEN_NUMLIT, + QSE_STX_TOKEN_IDENT, + QSE_STX_TOKEN_BINARY, + QSE_STX_TOKEN_KEYWORD, + QSE_STX_TOKEN_PRIMITIVE, + QSE_STX_TOKEN_ASSIGN, + QSE_STX_TOKEN_COLON, + QSE_STX_TOKEN_RETURN, + QSE_STX_TOKEN_LBRACKET, + QSE_STX_TOKEN_RBRACKET, + QSE_STX_TOKEN_LPAREN, + QSE_STX_TOKEN_RPAREN, + QSE_STX_TOKEN_APAREN, + QSE_STX_TOKEN_PERIOD, + QSE_STX_TOKEN_SEMICOLON +}; + +struct qse_stx_token_t +{ + int type; + + /* + qse_stx_int_t ivalue; + qse_stx_real_t fvalue; + */ + qse_stx_name_t name; + qse_bool_t __dynamic; +}; + +typedef struct qse_stx_token_t qse_stx_token_t; + +#ifdef __cplusplus +extern "C" { +#endif + +qse_stx_token_t* qse_stx_token_open ( + qse_stx_token_t* token, qse_word_t capacity); +void qse_stx_token_close (qse_stx_token_t* token); + +int qse_stx_token_addc (qse_stx_token_t* token, qse_cint_t c); +int qse_stx_token_adds (qse_stx_token_t* token, const qse_char_t* s); +void qse_stx_token_clear (qse_stx_token_t* token); +qse_char_t* qse_stx_token_yield (qse_stx_token_t* token, qse_word_t capacity); +int qse_stx_token_compare_name (qse_stx_token_t* token, const qse_char_t* str); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/qse/lib/tgp/makefile.in b/qse/lib/tgp/makefile.in index b77290a9..30d61977 100644 --- a/qse/lib/tgp/makefile.in +++ b/qse/lib/tgp/makefile.in @@ -39,7 +39,7 @@ am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/include/ase/config.h +CONFIG_HEADER = $(top_builddir)/include/qse/config.h CONFIG_CLEAN_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ diff --git a/qse/lib/tgp/tgp.c b/qse/lib/tgp/tgp.c index e1c65f95..c4f43524 100644 --- a/qse/lib/tgp/tgp.c +++ b/qse/lib/tgp/tgp.c @@ -2,111 +2,111 @@ * $Id$ */ -#include +#include #include "../cmn/mem.h" -struct ase_tgp_t +struct qse_tgp_t { - ase_mmgr_t mmgr; + qse_mmgr_t mmgr; void* assoc_data; int errnum; struct { - ase_tgp_io_t func; + qse_tgp_io_t func; void* arg; } ih; struct { - ase_tgp_io_t func; + qse_tgp_io_t func; void* arg; } oh; struct { - ase_tgp_io_t func; + qse_tgp_io_t func; void* arg; } rh; struct { - ase_size_t pos; - ase_size_t len; - ase_char_t ptr[512]; + qse_size_t pos; + qse_size_t len; + qse_char_t ptr[512]; } ib; struct { - ase_size_t len; - ase_char_t ptr[512]; + qse_size_t len; + qse_char_t ptr[512]; } ob; struct { - ase_size_t len; - ase_char_t ptr[512]; + qse_size_t len; + qse_char_t ptr[512]; } rb; - int (*read) (ase_tgp_t* tgp, ase_char_t* buf, int len); - int (*write) (ase_tgp_t* tgp, const ase_char_t* buf, int len); - int (*run) (ase_tgp_t* tgp, const ase_char_t* buf, int len); + int (*read) (qse_tgp_t* tgp, qse_char_t* buf, int len); + int (*write) (qse_tgp_t* tgp, const qse_char_t* buf, int len); + int (*run) (qse_tgp_t* tgp, const qse_char_t* buf, int len); }; -ase_tgp_t* ase_tgp_open (ase_mmgr_t* mmgr) +qse_tgp_t* qse_tgp_open (qse_mmgr_t* mmgr) { - ase_tgp_t* tgp; + qse_tgp_t* tgp; /* - if (mmgr == ASE_NULL) mmgr = ASE_GETMMGR(); - if (mmgr == ASE_NULL) + if (mmgr == QSE_NULL) mmgr = QSE_GETMMGR(); + if (mmgr == QSE_NULL) { - ASE_ASSERTX (mmgr != ASE_NULL, - "Provide the memory manager or set the global memory manager with ASE_SETMMGR()"); - return ASE_NULL; + QSE_ASSERTX (mmgr != QSE_NULL, + "Provide the memory manager or set the global memory manager with QSE_SETMMGR()"); + return QSE_NULL; } */ - tgp = ASE_MMGR_ALLOC (mmgr, ASE_SIZEOF(*tgp)); - if (tgp == ASE_NULL) return ASE_NULL; + tgp = QSE_MMGR_ALLOC (mmgr, QSE_SIZEOF(*tgp)); + if (tgp == QSE_NULL) return QSE_NULL; - ASE_MEMSET (tgp, 0, ASE_SIZEOF(*tgp)); - ASE_MEMCPY (&tgp->mmgr, mmgr, ASE_SIZEOF(*mmgr)); + QSE_MEMSET (tgp, 0, QSE_SIZEOF(*tgp)); + QSE_MEMCPY (&tgp->mmgr, mmgr, QSE_SIZEOF(*mmgr)); return tgp; } -void ase_tgp_close (ase_tgp_t* tgp) +void qse_tgp_close (qse_tgp_t* tgp) { - ASE_MMGR_FREE (&tgp->mmgr, tgp); + QSE_MMGR_FREE (&tgp->mmgr, tgp); } -void ase_tgp_setassocdata (ase_tgp_t* tgp, void* data) +void qse_tgp_setassocdata (qse_tgp_t* tgp, void* data) { tgp->assoc_data = data; } -void* ase_tgp_getassocdata (ase_tgp_t* tgp) +void* qse_tgp_getassocdata (qse_tgp_t* tgp) { return tgp->assoc_data; } -int ase_tgp_geterrnum (ase_tgp_t* tgp) +int qse_tgp_geterrnum (qse_tgp_t* tgp) { return tgp->errnum; } -static int getc (ase_tgp_t* tgp, ase_char_t* c) +static int getc (qse_tgp_t* tgp, qse_char_t* c) { if (tgp->ib.pos >= tgp->ib.len) { - ase_ssize_t n; + qse_ssize_t n; - n = tgp->ih.func (ASE_TGP_IO_READ, tgp->ih.arg, tgp->ib.ptr, ASE_COUNTOF(tgp->ib.ptr)); + n = tgp->ih.func (QSE_TGP_IO_READ, tgp->ih.arg, tgp->ib.ptr, QSE_COUNTOF(tgp->ib.ptr)); if (n < 0) return -1; else if (n == 0) { - *c = ASE_CHAR_EOF; + *c = QSE_CHAR_EOF; return 0; } else @@ -120,14 +120,14 @@ static int getc (ase_tgp_t* tgp, ase_char_t* c) return 1; } -static int putc (ase_tgp_t* tgp, ase_char_t c) +static int putc (qse_tgp_t* tgp, qse_char_t c) { - if (tgp->ob.len >= ASE_COUNTOF(tgp->ob.ptr)) + if (tgp->ob.len >= QSE_COUNTOF(tgp->ob.ptr)) { - ase_ssize_t n; + qse_ssize_t n; /* TODO: submit on a newline as well */ - n = tgp->oh.func (ASE_TGP_IO_WRITE, tgp->oh.arg, tgp->ob.ptr, ASE_COUNTOF(tgp->ob.ptr)); + n = tgp->oh.func (QSE_TGP_IO_WRITE, tgp->oh.arg, tgp->ob.ptr, QSE_COUNTOF(tgp->ob.ptr)); if (n < 0) return -1; else if (n == 0) return 0; } @@ -136,27 +136,27 @@ static int putc (ase_tgp_t* tgp, ase_char_t c) return 1; } -static int runc (ase_tgp_t* tgp, ase_char_t c) +static int runc (qse_tgp_t* tgp, qse_char_t c) { - if (tgp->rb.len >= ASE_COUNTOF(tgp->rb.ptr)) + if (tgp->rb.len >= QSE_COUNTOF(tgp->rb.ptr)) { - ase_ssize_t n; + qse_ssize_t n; - n = tgp->rh.func (ASE_TGP_IO_WRITE, tgp->rh.arg, tgp->rb.ptr, tgp->rb.len); + n = tgp->rh.func (QSE_TGP_IO_WRITE, tgp->rh.arg, tgp->rb.ptr, tgp->rb.len); if (n < 0) return -1; else if (n == 0) return 0; - tgp->rh.func (ASE_TGP_IO_READ, tgp->rh.arg, tgp->rb.ptr, tgp->rb.len); + tgp->rh.func (QSE_TGP_IO_READ, tgp->rh.arg, tgp->rb.ptr, tgp->rb.len); } tgp->rb.ptr[tgp->rb.len++] = c; return 1; } -int ase_tgp_run (ase_tgp_t* tgp) +int qse_tgp_run (qse_tgp_t* tgp) { - ase_bool_t in_tag = ASE_FALSE; - ase_char_t c; + qse_bool_t in_tag = QSE_FALSE; + qse_char_t c; int n; tgp->ib.pos = 0; @@ -164,7 +164,7 @@ int ase_tgp_run (ase_tgp_t* tgp) tgp->ob.len = 0; tgp->rb.len = 0; - n = tgp->ih.func (ASE_TGP_IO_OPEN, tgp->ih.arg, ASE_NULL, 0); + n = tgp->ih.func (QSE_TGP_IO_OPEN, tgp->ih.arg, QSE_NULL, 0); if (n == -1) { /* error */ @@ -173,21 +173,21 @@ int ase_tgp_run (ase_tgp_t* tgp) if (n == 0) { /* reached end of input upon opening the file... */ - tgp->ih.func (ASE_TGP_IO_CLOSE, tgp->ih.arg, ASE_NULL, 0); + tgp->ih.func (QSE_TGP_IO_CLOSE, tgp->ih.arg, QSE_NULL, 0); return 0; } - n = tgp->oh.func (ASE_TGP_IO_OPEN, tgp->oh.arg, ASE_NULL, 0); + n = tgp->oh.func (QSE_TGP_IO_OPEN, tgp->oh.arg, QSE_NULL, 0); if (n == -1) { - tgp->ih.func (ASE_TGP_IO_CLOSE, tgp->ih.arg, ASE_NULL, 0); + tgp->ih.func (QSE_TGP_IO_CLOSE, tgp->ih.arg, QSE_NULL, 0); return -1; } if (n == 0) { /* reached end of input upon opening the file... */ - tgp->oh.func (ASE_TGP_IO_CLOSE, tgp->oh.arg, ASE_NULL, 0); - tgp->ih.func (ASE_TGP_IO_CLOSE, tgp->ih.arg, ASE_NULL, 0); + tgp->oh.func (QSE_TGP_IO_CLOSE, tgp->oh.arg, QSE_NULL, 0); + tgp->ih.func (QSE_TGP_IO_CLOSE, tgp->ih.arg, QSE_NULL, 0); return 0; } @@ -197,44 +197,44 @@ int ase_tgp_run (ase_tgp_t* tgp) if (n == -1) return -1; if (n == 0) break; - if (c == ASE_T('<')) + if (c == QSE_T('<')) { n = getc (tgp, &c); if (n == -1) return -1; if (n == 0) { - putc (tgp, ASE_T('<')); + putc (tgp, QSE_T('<')); break; } - if (c == ASE_T('?')) + if (c == QSE_T('?')) { if (in_tag) { /* ERROR - netsted tag */ return -1; } - else in_tag = ASE_TRUE; + else in_tag = QSE_TRUE; } else { - if (putc (tgp, ASE_T('<')) <= 0) return -1; + if (putc (tgp, QSE_T('<')) <= 0) return -1; if (putc (tgp, c) <= 0) return -1; } } - else if (c == ASE_T('?')) + else if (c == QSE_T('?')) { n = getc (tgp, &c); if (n == -1) return -1; if (n == 0) { - if (putc (tgp, ASE_T('<')) <= 0) return -1; + if (putc (tgp, QSE_T('<')) <= 0) return -1; break; } - if (c == ASE_T('>')) + if (c == QSE_T('>')) { - if (in_tag) in_tag = ASE_FALSE; + if (in_tag) in_tag = QSE_FALSE; else { /* ERROR - unpaired tag close */ @@ -243,7 +243,7 @@ int ase_tgp_run (ase_tgp_t* tgp) } else { - if (putc (tgp, ASE_T('?')) <= 0) return -1; + if (putc (tgp, QSE_T('?')) <= 0) return -1; if (putc (tgp, c) <= 0) return -1; } } @@ -257,43 +257,43 @@ int ase_tgp_run (ase_tgp_t* tgp) } } - tgp->oh.func (ASE_TGP_IO_CLOSE, tgp->oh.arg, ASE_NULL, 0); - tgp->ih.func (ASE_TGP_IO_CLOSE, tgp->ih.arg, ASE_NULL, 0); + tgp->oh.func (QSE_TGP_IO_CLOSE, tgp->oh.arg, QSE_NULL, 0); + tgp->ih.func (QSE_TGP_IO_CLOSE, tgp->ih.arg, QSE_NULL, 0); return 0; } -void ase_tgp_attachin (ase_tgp_t* tgp, ase_tgp_io_t io, void* arg) +void qse_tgp_attachin (qse_tgp_t* tgp, qse_tgp_io_t io, void* arg) { tgp->ih.func = io; tgp->ih.arg = arg; } -void ase_tgp_detachin (ase_tgp_t* tgp) +void qse_tgp_detachin (qse_tgp_t* tgp) { - tgp->ih.func = ASE_NULL; - tgp->ih.arg = ASE_NULL; + tgp->ih.func = QSE_NULL; + tgp->ih.arg = QSE_NULL; } -void ase_tgp_attachout (ase_tgp_t* tgp, ase_tgp_io_t io, void* arg) +void qse_tgp_attachout (qse_tgp_t* tgp, qse_tgp_io_t io, void* arg) { tgp->oh.func = io; tgp->oh.arg = arg; } -void ase_tgp_detachout (ase_tgp_t* tgp) +void qse_tgp_detachout (qse_tgp_t* tgp) { - tgp->oh.func = ASE_NULL; - tgp->oh.arg = ASE_NULL; + tgp->oh.func = QSE_NULL; + tgp->oh.arg = QSE_NULL; } -void ase_tgp_attachexec (ase_tgp_t* tgp, ase_tgp_io_t io, void* arg) +void qse_tgp_attachexec (qse_tgp_t* tgp, qse_tgp_io_t io, void* arg) { tgp->rh.func = io; tgp->rh.arg = arg; } -void ase_tgp_detachexec (ase_tgp_t* tgp) +void qse_tgp_detachexec (qse_tgp_t* tgp) { - tgp->rh.func = ASE_NULL; - tgp->rh.arg = ASE_NULL; + tgp->rh.func = QSE_NULL; + tgp->rh.arg = QSE_NULL; } diff --git a/qse/lib/tgp/tgp.h b/qse/lib/tgp/tgp.h index b2b16c8f..58d29273 100644 --- a/qse/lib/tgp/tgp.h +++ b/qse/lib/tgp/tgp.h @@ -1,28 +1,28 @@ -#ifndef _ASE_TGP_H_ -#define _ASE_TGP_H_ +#ifndef _QSE_TGP_H_ +#define _QSE_TGP_H_ -#include -#include +#include +#include -typedef struct ase_tgp_t ase_tgp_t; +typedef struct qse_tgp_t qse_tgp_t; -enum ase_tgp_iocmd_t +enum qse_tgp_iocmd_t { - ASE_TGP_IO_OPEN = 0, - ASE_TGP_IO_CLOSE = 1, - ASE_TGP_IO_READ = 2, - ASE_TGP_IO_WRITE = 3 + QSE_TGP_IO_OPEN = 0, + QSE_TGP_IO_CLOSE = 1, + QSE_TGP_IO_READ = 2, + QSE_TGP_IO_WRITE = 3 }; -typedef ase_ssize_t (*ase_tgp_io_t) ( - int cmd, void* arg, ase_char_t* data, ase_size_t count); +typedef qse_ssize_t (*qse_tgp_io_t) ( + int cmd, void* arg, qse_char_t* data, qse_size_t count); #ifdef __cplusplus extern "C" { #endif -ase_tgp_t* ase_tgp_open (ase_mmgr_t* mmgr); -void ase_tgp_close (ase_tgp_t* tgp); +qse_tgp_t* qse_tgp_open (qse_mmgr_t* mmgr); +void qse_tgp_close (qse_tgp_t* tgp); #ifdef __cplusplus } diff --git a/qse/lib/utl/aseutl.bdsproj b/qse/lib/utl/aseutl.bdsproj deleted file mode 100644 index 6adbafce..00000000 --- a/qse/lib/utl/aseutl.bdsproj +++ /dev/null @@ -1,249 +0,0 @@ - - - - - - - - - - - - main.c - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - False - False - 1 - 0 - 0 - 0 - False - False - False - False - False - 1033 - 1252 - - - - - 1.0.0.0 - - - - - - 1.0.0.0 - - - - - - - - - False - - - - - - - False - - False - - True - False - - - - - - - - - - - mkdir $(PROJECTDIR)..\release\lib -mkdir $(PROJECTDIR)..\debug\lib - - - - - diff --git a/qse/lib/utl/aseutl.dsp b/qse/lib/utl/aseutl.dsp deleted file mode 100644 index 9f2821d7..00000000 --- a/qse/lib/utl/aseutl.dsp +++ /dev/null @@ -1,135 +0,0 @@ -# Microsoft Developer Studio Project File - Name="aseutl" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Static Library" 0x0104 - -CFG=aseutl - Win32 Release -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "aseutl.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "aseutl.mak" CFG="aseutl - Win32 Release" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "aseutl - Win32 Release" (based on "Win32 (x86) Static Library") -!MESSAGE "aseutl - Win32 Debug" (based on "Win32 (x86) Static Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "aseutl - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "../release/lib" -# PROP Intermediate_Dir "release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -MTL=midl.exe -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_UNICODE" /D "_USRDLL" /Yu"stdafx.h" /FD /c -# ADD CPP /nologo /MT /Za /W3 /GX /O2 /I "../.." /D "NDEBUG" /D "WIN32" /D "_UNICODE" /FD /c -# SUBTRACT CPP /YX /Yc /Yu -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo - -!ELSEIF "$(CFG)" == "aseutl - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "../debug/lib" -# PROP Intermediate_Dir "debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -MTL=midl.exe -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_UNICODE" /D "_USRDLL" /Yu"stdafx.h" /FD /GZ /c -# ADD CPP /nologo /MTd /Za /W3 /Gm /GX /ZI /Od /I "../.." /D "_DEBUG" /D "WIN32" /D "_UNICODE" /FD /GZ /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo - -!ENDIF - -# Begin Target - -# Name "aseutl - Win32 Release" -# Name "aseutl - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=.\ctype.c -# End Source File -# Begin Source File - -SOURCE=.\http.c -# End Source File -# Begin Source File - -SOURCE=.\main.c -# End Source File -# Begin Source File - -SOURCE=.\stdio.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# Begin Source File - -SOURCE=.\ctype.h -# End Source File -# Begin Source File - -SOURCE=.\http.h -# End Source File -# Begin Source File - -SOURCE=.\main.h -# End Source File -# Begin Source File - -SOURCE=.\stdio.h -# End Source File -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/qse/lib/utl/aseutl.vcproj b/qse/lib/utl/aseutl.vcproj deleted file mode 100644 index 8cf7e217..00000000 --- a/qse/lib/utl/aseutl.vcproj +++ /dev/null @@ -1,460 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/qse/lib/utl/assert.c b/qse/lib/utl/assert.c index 6aec373c..615314bd 100644 --- a/qse/lib/utl/assert.c +++ b/qse/lib/utl/assert.c @@ -2,28 +2,28 @@ * $Id: assert.c 223 2008-06-26 06:44:41Z baconevi $ */ -#include -#include +#include +#include #ifndef NDEBUG -#include +#include #include -void ase_assert_failed ( - const ase_char_t* expr, const ase_char_t* desc, - const ase_char_t* file, ase_size_t line) +void qse_assert_failed ( + const qse_char_t* expr, const qse_char_t* desc, + const qse_char_t* file, qse_size_t line) { - ase_fprintf (ASE_STDERR, ASE_T("=[ASSERTION FAILURE]============================================================")); - ase_fprintf (ASE_STDERR, ASE_T("FILE %s LINE %lu: %s\n"), + qse_fprintf (QSE_STDERR, QSE_T("=[ASSERTION FAILURE]============================================================")); + qse_fprintf (QSE_STDERR, QSE_T("FILE %s LINE %lu: %s\n"), file, (unsigned long)line, expr); - if (desc != ASE_NULL) + if (desc != QSE_NULL) { - ase_fprintf (ASE_STDERR, ASE_T("DESCRIPTION: %s\n"), + qse_fprintf (QSE_STDERR, QSE_T("DESCRIPTION: %s\n"), file, (unsigned long)line, expr, desc); } - ase_fprintf (ASE_STDERR, ASE_T("================================================================================")); + qse_fprintf (QSE_STDERR, QSE_T("================================================================================")); abort (); } diff --git a/qse/lib/utl/descrip.mms b/qse/lib/utl/descrip.mms deleted file mode 100644 index 67ceced0..00000000 --- a/qse/lib/utl/descrip.mms +++ /dev/null @@ -1,18 +0,0 @@ -# -# OpenVMS MMS/MMK -# - -objects = main.obj,ctype.obj,stdio.obj,http.obj,getopt.obj - -CFLAGS = /include="../.." -#CFLAGS = /pointer_size=long /include="../.." -LIBRFLAGS = - -aseutl.olb : $(objects) - $(LIBR)/create $(MMS$TARGET) $(objects) - -main.obj depends_on main.c -ctype.obj depends_on ctype.c -stdio.obj depends_on stdio.c -http.obj depends_on http.c -getopt.obj depends_on getopt.c diff --git a/qse/lib/utl/http.c b/qse/lib/utl/http.c index c9eb2726..22b2f24a 100644 --- a/qse/lib/utl/http.c +++ b/qse/lib/utl/http.c @@ -4,93 +4,93 @@ * {License} */ -#include +#include #include "../cmn/mem.h" #include "../cmn/chr.h" -static int is_http_space (ase_char_t c) +static int is_http_space (qse_char_t c) { - return ASE_ISSPACE(c) && c != ASE_T('\r') && c != ASE_T('\n'); + return QSE_ISSPACE(c) && c != QSE_T('\r') && c != QSE_T('\n'); } -#define is_http_ctl(c) ASE_ISCNTRL(c) +#define is_http_ctl(c) QSE_ISCNTRL(c) -static int is_http_separator (ase_char_t c) +static int is_http_separator (qse_char_t c) { - return c == ASE_T('(') || - c == ASE_T(')') || - c == ASE_T('<') || - c == ASE_T('>') || - c == ASE_T('@') || - c == ASE_T(',') || - c == ASE_T(';') || - c == ASE_T(':') || - c == ASE_T('\\') || - c == ASE_T('\"') || - c == ASE_T('/') || - c == ASE_T('[') || - c == ASE_T(']') || - c == ASE_T('?') || - c == ASE_T('=') || - c == ASE_T('{') || - c == ASE_T('}') || - c == ASE_T('\t') || - c == ASE_T(' '); + return c == QSE_T('(') || + c == QSE_T(')') || + c == QSE_T('<') || + c == QSE_T('>') || + c == QSE_T('@') || + c == QSE_T(',') || + c == QSE_T(';') || + c == QSE_T(':') || + c == QSE_T('\\') || + c == QSE_T('\"') || + c == QSE_T('/') || + c == QSE_T('[') || + c == QSE_T(']') || + c == QSE_T('?') || + c == QSE_T('=') || + c == QSE_T('{') || + c == QSE_T('}') || + c == QSE_T('\t') || + c == QSE_T(' '); } -static int is_http_token (ase_char_t c) +static int is_http_token (qse_char_t c) { - return ASE_ISPRINT(c) && !is_http_ctl(c) && !is_http_separator(c); + return QSE_ISPRINT(c) && !is_http_ctl(c) && !is_http_separator(c); } -static int digit_to_num (ase_char_t c) +static int digit_to_num (qse_char_t c) { - if (c >= ASE_T('0') && c <= ASE_T('9')) return c - ASE_T('0'); - if (c >= ASE_T('A') && c <= ASE_T('Z')) return c - ASE_T('A') + 10; - if (c >= ASE_T('a') && c <= ASE_T('z')) return c - ASE_T('a') + 10; + if (c >= QSE_T('0') && c <= QSE_T('9')) return c - QSE_T('0'); + if (c >= QSE_T('A') && c <= QSE_T('Z')) return c - QSE_T('A') + 10; + if (c >= QSE_T('a') && c <= QSE_T('z')) return c - QSE_T('a') + 10; return -1; } -ase_char_t* ase_parsehttpreq (ase_char_t* buf, ase_http_req_t* req) +qse_char_t* qse_parsehttpreq (qse_char_t* buf, qse_http_req_t* req) { - ase_char_t* p = buf, * x; + qse_char_t* p = buf, * x; /* ignore leading spaces */ while (is_http_space(*p)) p++; /* the method should start with an alphabet */ - if (!ASE_ISALPHA(*p)) return ASE_NULL; + if (!QSE_ISALPHA(*p)) return QSE_NULL; /* scan the method */ - req->method = p; while (ASE_ISALPHA(*p)) p++; + req->method = p; while (QSE_ISALPHA(*p)) p++; /* the method should be followed by a space */ - if (!is_http_space(*p)) return ASE_NULL; + if (!is_http_space(*p)) return QSE_NULL; /* null-terminate the method */ - *p++ = ASE_T('\0'); + *p++ = QSE_T('\0'); /* skip spaces */ while (is_http_space(*p)) p++; /* scan the url */ req->path.ptr = p; - req->args.ptr = ASE_NULL; + req->args.ptr = QSE_NULL; x = p; - while (ASE_ISPRINT(*p) && !ASE_ISSPACE(*p)) + while (QSE_ISPRINT(*p) && !QSE_ISSPACE(*p)) { - if (*p == ASE_T('%') && ASE_ISXDIGIT(*(p+1)) && ASE_ISXDIGIT(*(p+2))) + if (*p == QSE_T('%') && QSE_ISXDIGIT(*(p+1)) && QSE_ISXDIGIT(*(p+2))) { *x++ = (digit_to_num(*(p+1)) << 4) + digit_to_num(*(p+2)); p += 3; } - else if (*p == ASE_T('?') && req->args.ptr == ASE_NULL) + else if (*p == QSE_T('?') && req->args.ptr == QSE_NULL) { /* ? must be explicit to be a argument instroducer. * %3f is just a literal. */ req->path.len = x - req->path.ptr; - *x++ = ASE_T('\0'); + *x++ = QSE_T('\0'); req->args.ptr = x; p++; } @@ -98,65 +98,65 @@ ase_char_t* ase_parsehttpreq (ase_char_t* buf, ase_http_req_t* req) } /* the url should be followed by a space */ - if (!is_http_space(*p)) return ASE_NULL; + if (!is_http_space(*p)) return QSE_NULL; /* null-terminate the url and store the length */ - if (req->args.ptr != ASE_NULL) + if (req->args.ptr != QSE_NULL) req->args.len = x - req->args.ptr; else req->path.len = x - req->path.ptr; - *x++ = ASE_T('\0'); + *x++ = QSE_T('\0'); /* path should start with a slash */ - if (req->path.len <= 0 || req->path.ptr[0] != ASE_T('/')) return ASE_NULL; + if (req->path.len <= 0 || req->path.ptr[0] != QSE_T('/')) return QSE_NULL; /* skip spaces */ do { p++; } while (is_http_space(*p)); /* check http version */ - if ((p[0] == ASE_T('H') || p[0] == ASE_T('h')) && - (p[1] == ASE_T('T') || p[1] == ASE_T('t')) && - (p[2] == ASE_T('T') || p[2] == ASE_T('t')) && - (p[3] == ASE_T('P') || p[3] == ASE_T('p')) && - p[4] == ASE_T('/') && p[6] == ASE_T('.')) + if ((p[0] == QSE_T('H') || p[0] == QSE_T('h')) && + (p[1] == QSE_T('T') || p[1] == QSE_T('t')) && + (p[2] == QSE_T('T') || p[2] == QSE_T('t')) && + (p[3] == QSE_T('P') || p[3] == QSE_T('p')) && + p[4] == QSE_T('/') && p[6] == QSE_T('.')) { - if (!ASE_ISDIGIT(p[5])) return ASE_NULL; - if (!ASE_ISDIGIT(p[7])) return ASE_NULL; - req->vers.major = p[5] - ASE_T('0'); - req->vers.minor = p[7] - ASE_T('0'); + if (!QSE_ISDIGIT(p[5])) return QSE_NULL; + if (!QSE_ISDIGIT(p[7])) return QSE_NULL; + req->vers.major = p[5] - QSE_T('0'); + req->vers.minor = p[7] - QSE_T('0'); p += 8; } - else return ASE_NULL; + else return QSE_NULL; - while (ASE_ISSPACE(*p)) + while (QSE_ISSPACE(*p)) { - if (*p++ == ASE_T('\n')) goto ok; + if (*p++ == QSE_T('\n')) goto ok; } /* not terminating with a new line. * maybe garbage after the request line */ - if (*p != ASE_T('\0')) return ASE_NULL; + if (*p != QSE_T('\0')) return QSE_NULL; ok: /* returns the next position */ return p; } -ase_char_t* ase_parsehttphdr (ase_char_t* buf, ase_http_hdr_t* hdr) +qse_char_t* qse_parsehttphdr (qse_char_t* buf, qse_http_hdr_t* hdr) { - ase_char_t* p = buf, * last; + qse_char_t* p = buf, * last; /* ignore leading spaces including CR and NL */ - while (ASE_ISSPACE(*p)) p++; + while (QSE_ISSPACE(*p)) p++; - if (*p == ASE_T('\0')) + if (*p == QSE_T('\0')) { /* no more header line */ - ASE_MEMSET (hdr, 0, ASE_SIZEOF(*hdr)); + QSE_MEMSET (hdr, 0, QSE_SIZEOF(*hdr)); return p; } - if (!is_http_token(*p)) return ASE_NULL; + if (!is_http_token(*p)) return QSE_NULL; hdr->name.ptr = p; do { p++; } while (is_http_token(*p)); @@ -165,29 +165,29 @@ ase_char_t* ase_parsehttphdr (ase_char_t* buf, ase_http_hdr_t* hdr) hdr->name.len = last - hdr->name.ptr; while (is_http_space(*p)) p++; - if (*p != ASE_T(':')) return ASE_NULL; + if (*p != QSE_T(':')) return QSE_NULL; - *last = ASE_T('\0'); + *last = QSE_T('\0'); do { p++; } while (is_http_space(*p)); hdr->value.ptr = last = p; - while (ASE_ISPRINT(*p)) + while (QSE_ISPRINT(*p)) { - if (!ASE_ISSPACE(*p++)) last = p; + if (!QSE_ISSPACE(*p++)) last = p; } hdr->value.len = last - hdr->value.ptr; - while (ASE_ISSPACE(*p)) + while (QSE_ISSPACE(*p)) { - if (*p++ == ASE_T('\n')) goto ok; + if (*p++ == QSE_T('\n')) goto ok; } /* not terminating with a new line. * maybe garbage after the header line */ - if (*p != ASE_T('\0')) return ASE_NULL; + if (*p != QSE_T('\0')) return QSE_NULL; ok: - *last = ASE_T('\0'); + *last = QSE_T('\0'); return p; } diff --git a/qse/lib/utl/main.c b/qse/lib/utl/main.c index 47bb54a0..0d333c7e 100644 --- a/qse/lib/utl/main.c +++ b/qse/lib/utl/main.c @@ -4,7 +4,7 @@ * {License} */ -#include +#include #include #include #include @@ -12,27 +12,27 @@ #if defined(_WIN32) && !defined(__MINGW32__) -int ase_runmain (int argc, ase_achar_t* argv[], int(*mf) (int,ase_char_t*[])) +int qse_runmain (int argc, qse_achar_t* argv[], int(*mf) (int,qse_char_t*[])) { return mf (argc, argv); } -#elif defined(ASE_CHAR_IS_WCHAR) +#elif defined(QSE_CHAR_IS_WCHAR) -int ase_runmain (int argc, ase_achar_t* argv[], int(*mf) (int,ase_char_t*[])) +int qse_runmain (int argc, qse_achar_t* argv[], int(*mf) (int,qse_char_t*[])) { int i, ret; - ase_char_t** v; + qse_char_t** v; setlocale (LC_ALL, ""); - v = (ase_char_t**) malloc (argc * ASE_SIZEOF(ase_char_t*)); + v = (qse_char_t**) malloc (argc * QSE_SIZEOF(qse_char_t*)); if (v == NULL) return -1; for (i = 0; i < argc; i++) v[i] = NULL; for (i = 0; i < argc; i++) { - ase_size_t n, len, rem; + qse_size_t n, len, rem; char* p = argv[i]; len = 0; rem = strlen (p); @@ -48,10 +48,10 @@ int ase_runmain (int argc, ase_achar_t* argv[], int(*mf) (int,ase_char_t*[])) p += x; rem -= x; len++; } - #if (defined(vms) || defined(__vms)) && (ASE_SIZEOF_VOID_P >= 8) - v[i] = (ase_char_t*) _malloc32 ((len+1)*ASE_SIZEOF(ase_char_t)); + #if (defined(vms) || defined(__vms)) && (QSE_SIZEOF_VOID_P >= 8) + v[i] = (qse_char_t*) _malloc32 ((len+1)*QSE_SIZEOF(qse_char_t)); #else - v[i] = (ase_char_t*) malloc ((len+1)*ASE_SIZEOF(ase_char_t)); + v[i] = (qse_char_t*) malloc ((len+1)*QSE_SIZEOF(qse_char_t)); #endif if (v[i] == NULL) { @@ -66,7 +66,7 @@ int ase_runmain (int argc, ase_achar_t* argv[], int(*mf) (int,ase_char_t*[])) return -1; } - if (n == len) v[i][len] = ASE_T('\0'); + if (n == len) v[i][len] = QSE_T('\0'); } /* TODO: envp... */ @@ -85,7 +85,7 @@ exit_main: #else -int ase_runmain (int argc, ase_achar_t* argv[], int(*mf) (int,ase_char_t*[])) +int qse_runmain (int argc, qse_achar_t* argv[], int(*mf) (int,qse_char_t*[])) { return mf (argc, argv); } diff --git a/qse/lib/utl/makefile.in b/qse/lib/utl/makefile.in index 13ab948a..8bd71338 100644 --- a/qse/lib/utl/makefile.in +++ b/qse/lib/utl/makefile.in @@ -39,7 +39,7 @@ am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/include/ase/config.h +CONFIG_HEADER = $(top_builddir)/include/qse/config.h CONFIG_CLEAN_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ @@ -56,7 +56,7 @@ libaseutl_la_OBJECTS = $(am_libaseutl_la_OBJECTS) libaseutl_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(libaseutl_la_LDFLAGS) $(LDFLAGS) -o $@ -DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include/ase +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include/qse depcomp = $(SHELL) $(top_srcdir)/autoconf/depcomp am__depfiles_maybe = depfiles COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ diff --git a/qse/lib/utl/msw-bcc.mak b/qse/lib/utl/msw-bcc.mak deleted file mode 100644 index 77027ec8..00000000 --- a/qse/lib/utl/msw-bcc.mak +++ /dev/null @@ -1,63 +0,0 @@ -NAME = aseutl - -!ifndef MODE -MODE = release -!endif - -CC = bcc32 -LD = ilink32 -AR = tlib - -CFLAGS = -WM -WU -RT- -w -q -I..\.. - -!IF "$(MODE)" == "debug" -CFLAGS = $(CFLAGS) -D_DEBUG -DDEBUG -!ELSEIF "$(MODE)" == "release" -CFLAGS = $(CFLAGS) -DNDEBUG -O2 -!ELSE -CFLAGS = $(CFLAGS) -!ENDIF - -OUT_DIR = ..\$(MODE)\lib -OUT_FILE_LIB = $(OUT_DIR)\$(NAME).lib - -TMP_DIR = $(MODE) - -OBJ_FILES_LIB = \ - $(TMP_DIR)\main.obj \ - $(TMP_DIR)\ctype.obj \ - $(TMP_DIR)\stdio.obj \ - $(TMP_DIR)\http.obj - -all: lib - -lib: $(TMP_DIR) $(OUT_DIR) $(OUT_FILE_LIB) - -$(OUT_FILE_LIB): $(OBJ_FILES_LIB) - $(AR) $(OUT_FILE_LIB) @&&! -+-$(**: = &^ -+-) -! - -$(TMP_DIR)\main.obj: main.c - $(CC) $(CFLAGS) -o$@ -c main.c - -$(TMP_DIR)\ctype.obj: ctype.c - $(CC) $(CFLAGS) -o$@ -c ctype.c - -$(TMP_DIR)\stdio.obj: stdio.c - $(CC) $(CFLAGS) -o$@ -c stdio.c - -$(TMP_DIR)\http.obj: http.c - $(CC) $(CFLAGS) -o$@ -c http.c - -$(OUT_DIR): - -md $(OUT_DIR) - -$(TMP_DIR): - -md $(TMP_DIR) - -clean: - -del $(OUT_FILE_LIB) - -del $(OBJ_FILES_LIB) - diff --git a/qse/lib/utl/msw-cl.mak b/qse/lib/utl/msw-cl.mak deleted file mode 100644 index 9eecdc65..00000000 --- a/qse/lib/utl/msw-cl.mak +++ /dev/null @@ -1,59 +0,0 @@ -NAME = aseutl -MODE = release - -CC = cl -LD = link -AR = link - -CFLAGS = /nologo /W3 -I..\.. - -!IF "$(MODE)" == "debug" -CFLAGS = $(CFLAGS) -D_DEBUG -DDEBUG /MTd /Zi -!ELSEIF "$(MODE)" == "release" -CFLAGS = $(CFLAGS) -DNDEBUG /MT /O2 -!ELSE -CFLAGS = $(CFLAGS) /MT -!ENDIF - -OUT_DIR = ..\$(MODE)\lib -OUT_FILE_LIB = $(OUT_DIR)\$(NAME).lib - -TMP_DIR = $(MODE) - -OBJ_FILES_LIB = \ - $(TMP_DIR)\main.obj \ - $(TMP_DIR)\ctype.obj \ - $(TMP_DIR)\stdio.obj \ - $(TMP_DIR)\http.obj - -all: lib - -lib: $(OUT_FILE_LIB) - -$(OUT_FILE_LIB): $(TMP_DIR) $(OUT_DIR) $(OBJ_FILES_LIB) - $(AR) /lib @<< -/nologo /out:$(OUT_FILE_LIB) $(OBJ_FILES_LIB) -<< - -$(TMP_DIR)\main.obj: main.c - $(CC) $(CFLAGS) /Fo$@ /c main.c - -$(TMP_DIR)\ctype.obj: ctype.c - $(CC) $(CFLAGS) /Fo$@ /c ctype.c - -$(TMP_DIR)\stdio.obj: stdio.c - $(CC) $(CFLAGS) /Fo$@ /c stdio.c - -$(TMP_DIR)\http.obj: http.c - $(CC) $(CFLAGS) /Fo$@ /c http.c - -$(OUT_DIR): - -md $(OUT_DIR) - -$(TMP_DIR): - -md $(TMP_DIR) - -clean: - -del $(OUT_FILE_LIB) - -del $(OBJ_FILES_LIB) - diff --git a/qse/lib/utl/msw-dmc.mak b/qse/lib/utl/msw-dmc.mak deleted file mode 100644 index 5a09cbd8..00000000 --- a/qse/lib/utl/msw-dmc.mak +++ /dev/null @@ -1,50 +0,0 @@ -# -# You may override the value of MODE by specifying from the command-line -# make -f msw-dmc.mak MODE=debug -# - -NAME = aseutl -MODE = release - -CC = dmc -AR = lib - -CFLAGS = -mn -I..\.. -DUNICODE -D_UNICODE - -OUT_DIR = ..\$(MODE)\lib -OUT_FILE_LIB = $(OUT_DIR)\$(NAME).lib - -TMP_DIR = $(MODE) - -OBJ_FILES_LIB = \ - $(TMP_DIR)\main.obj \ - $(TMP_DIR)\ctype.obj \ - $(TMP_DIR)\stdio.obj \ - $(TMP_DIR)\http.obj - -all: $(OUT_FILE_LIB) - -$(OUT_FILE_LIB): $(TMP_DIR) $(OUT_DIR) $(OBJ_FILES_LIB) - $(AR) -c $(OUT_FILE_LIB) $(OBJ_FILES_LIB) - -$(TMP_DIR)\main.obj: main.c - $(CC) $(CFLAGS) -o$@ -c main.c - -$(TMP_DIR)\ctype.obj: ctype.c - $(CC) $(CFLAGS) -o$@ -c ctype.c - -$(TMP_DIR)\stdio.obj: stdio.c - $(CC) $(CFLAGS) -o$@ -c stdio.c - -$(TMP_DIR)\http.obj: http.c - $(CC) $(CFLAGS) -o$@ -c http.c - -$(OUT_DIR): - md $(OUT_DIR) - -$(TMP_DIR): - md $(TMP_DIR) - -clean: - del $(OUT_FILE_LIB) $(OBJ_FILES_LIB) - diff --git a/qse/lib/utl/stdio.c b/qse/lib/utl/stdio.c index bfb6dc1d..b26ff89c 100644 --- a/qse/lib/utl/stdio.c +++ b/qse/lib/utl/stdio.c @@ -4,7 +4,7 @@ * {License} */ -#include +#include #include "../cmn/chr.h" #include @@ -17,46 +17,46 @@ #if defined(_WIN32) -int ase_vsprintf (ase_char_t* buf, size_t size, const ase_char_t* fmt, va_list ap) +int qse_vsprintf (qse_char_t* buf, size_t size, const qse_char_t* fmt, va_list ap) { int n; -#ifdef ASE_CHAR_IS_MCHAR +#ifdef QSE_CHAR_IS_MCHAR n = _vsnprintf (buf, size, fmt, ap); #else n = _vsnwprintf (buf, size, fmt, ap); #endif if (n < 0 || (size_t)n >= size) { - if (size > 0) buf[size-1] = ASE_T('\0'); + if (size > 0) buf[size-1] = QSE_T('\0'); n = -1; } return n; } -int ase_sprintf (ase_char_t* buf, size_t size, const ase_char_t* fmt, ...) +int qse_sprintf (qse_char_t* buf, size_t size, const qse_char_t* fmt, ...) { int n; va_list ap; va_start (ap, fmt); - n = ase_vsprintf (buf, size, fmt, ap); + n = qse_vsprintf (buf, size, fmt, ap); va_end (ap); return n; } #else -static ase_char_t* __adjust_format (const ase_char_t* format); +static qse_char_t* __adjust_format (const qse_char_t* format); -int ase_vfprintf (ASE_FILE *stream, const ase_char_t* fmt, va_list ap) +int qse_vfprintf (QSE_FILE *stream, const qse_char_t* fmt, va_list ap) { int n; - ase_char_t* nf = __adjust_format (fmt); + qse_char_t* nf = __adjust_format (fmt); if (nf == NULL) return -1; -#ifdef ASE_CHAR_IS_MCHAR +#ifdef QSE_CHAR_IS_MCHAR n = vfprintf (stream, nf, ap); #else n = vfwprintf (stream, nf, ap); @@ -65,40 +65,40 @@ int ase_vfprintf (ASE_FILE *stream, const ase_char_t* fmt, va_list ap) return n; } -int ase_vprintf (const ase_char_t* fmt, va_list ap) +int qse_vprintf (const qse_char_t* fmt, va_list ap) { - return ase_vfprintf (stdout, fmt, ap); + return qse_vfprintf (stdout, fmt, ap); } -int ase_fprintf (ASE_FILE* file, const ase_char_t* fmt, ...) +int qse_fprintf (QSE_FILE* file, const qse_char_t* fmt, ...) { int n; va_list ap; va_start (ap, fmt); - n = ase_vfprintf (file, fmt, ap); + n = qse_vfprintf (file, fmt, ap); va_end (ap); return n; } -int ase_printf (const ase_char_t* fmt, ...) +int qse_printf (const qse_char_t* fmt, ...) { int n; va_list ap; va_start (ap, fmt); - n = ase_vprintf (fmt, ap); + n = qse_vprintf (fmt, ap); va_end (ap); return n; } -int ase_vsprintf (ase_char_t* buf, size_t size, const ase_char_t* fmt, va_list ap) +int qse_vsprintf (qse_char_t* buf, size_t size, const qse_char_t* fmt, va_list ap) { int n; - ase_char_t* nf = __adjust_format (fmt); + qse_char_t* nf = __adjust_format (fmt); if (nf == NULL) return -1; -#if defined(ASE_CHAR_IS_MCHAR) +#if defined(QSE_CHAR_IS_MCHAR) n = vsnprintf (buf, size, nf, ap); #elif defined(_WIN32) n = _vsnwprintf (buf, size, nf, ap); @@ -107,7 +107,7 @@ int ase_vsprintf (ase_char_t* buf, size_t size, const ase_char_t* fmt, va_list a #endif if (n < 0 || (size_t)n >= size) { - if (size > 0) buf[size-1] = ASE_T('\0'); + if (size > 0) buf[size-1] = QSE_T('\0'); n = -1; } @@ -115,13 +115,13 @@ int ase_vsprintf (ase_char_t* buf, size_t size, const ase_char_t* fmt, va_list a return n; } -int ase_sprintf (ase_char_t* buf, size_t size, const ase_char_t* fmt, ...) +int qse_sprintf (qse_char_t* buf, size_t size, const qse_char_t* fmt, ...) { int n; va_list ap; va_start (ap, fmt); - n = ase_vsprintf (buf, size, fmt, ap); + n = qse_vsprintf (buf, size, fmt, ap); va_end (ap); return n; } @@ -134,9 +134,9 @@ int ase_sprintf (ase_char_t* buf, size_t size, const ase_char_t* fmt, ...) do { \ if (buf.len >= buf.cap) \ { \ - ase_char_t* tmp; \ - tmp = (ase_char_t*)realloc ( \ - buf.ptr, sizeof(ase_char_t)*(buf.cap+256+1)); \ + qse_char_t* tmp; \ + tmp = (qse_char_t*)realloc ( \ + buf.ptr, sizeof(qse_char_t)*(buf.cap+256+1)); \ if (tmp == NULL) \ { \ free (buf.ptr); \ @@ -148,36 +148,36 @@ int ase_sprintf (ase_char_t* buf, size_t size, const ase_char_t* fmt, ...) buf.ptr[buf.len++] = c; \ } while (0) -static ase_char_t* __adjust_format (const ase_char_t* format) +static qse_char_t* __adjust_format (const qse_char_t* format) { - const ase_char_t* fp = format; + const qse_char_t* fp = format; int modifier; - ase_char_t ch; + qse_char_t ch; struct { - ase_char_t* ptr; - ase_size_t len; - ase_size_t cap; + qse_char_t* ptr; + qse_size_t len; + qse_size_t cap; } buf; buf.len = 0; buf.cap = 256; -#if (defined(vms) || defined(__vms)) && (ASE_SIZEOF_VOID_P >= 8) - buf.ptr = (ase_char_t*) _malloc32 (sizeof(ase_char_t)*(buf.cap+1)); +#if (defined(vms) || defined(__vms)) && (QSE_SIZEOF_VOID_P >= 8) + buf.ptr = (qse_char_t*) _malloc32 (sizeof(qse_char_t)*(buf.cap+1)); #else - buf.ptr = (ase_char_t*) malloc (sizeof(ase_char_t)*(buf.cap+1)); + buf.ptr = (qse_char_t*) malloc (sizeof(qse_char_t)*(buf.cap+1)); #endif if (buf.ptr == NULL) return NULL; - while (*fp != ASE_T('\0')) + while (*fp != QSE_T('\0')) { - while (*fp != ASE_T('\0') && *fp != ASE_T('%')) + while (*fp != QSE_T('\0') && *fp != QSE_T('%')) { ADDC (buf, *fp++); } - if (*fp == ASE_T('\0')) break; + if (*fp == QSE_T('\0')) break; ch = *fp++; ADDC (buf, ch); /* add % */ @@ -187,15 +187,15 @@ static ase_char_t* __adjust_format (const ase_char_t* format) /* flags */ while (1) { - if (ch == ASE_T(' ') || ch == ASE_T('+') || - ch == ASE_T('-') || ch == ASE_T('#')) + if (ch == QSE_T(' ') || ch == QSE_T('+') || + ch == QSE_T('-') || ch == QSE_T('#')) { ADDC (buf, ch); ch = *fp++; } else { - if (ch == ASE_T('0')) + if (ch == QSE_T('0')) { ADDC (buf, ch); ch = *fp++; @@ -206,14 +206,14 @@ static ase_char_t* __adjust_format (const ase_char_t* format) } /* check the width */ - if (ch == ASE_T('*')) + if (ch == QSE_T('*')) { ADDC (buf, ch); ch = *fp++; } else { - while (ASE_ISDIGIT(ch)) + while (QSE_ISDIGIT(ch)) { ADDC (buf, ch); ch = *fp++; @@ -221,19 +221,19 @@ static ase_char_t* __adjust_format (const ase_char_t* format) } /* precision */ - if (ch == ASE_T('.')) + if (ch == QSE_T('.')) { ADDC (buf, ch); ch = *fp++; - if (ch == ASE_T('*')) + if (ch == QSE_T('*')) { ADDC (buf, ch); ch = *fp++; } else { - while (ASE_ISDIGIT(ch)) + while (QSE_ISDIGIT(ch)) { ADDC (buf, ch); ch = *fp++; @@ -244,8 +244,8 @@ static ase_char_t* __adjust_format (const ase_char_t* format) /* modifier */ for (modifier = 0;;) { - if (ch == ASE_T('h')) modifier = MOD_SHORT; - else if (ch == ASE_T('l')) + if (ch == QSE_T('h')) modifier = MOD_SHORT; + else if (ch == QSE_T('l')) { modifier = (modifier == MOD_LONG)? MOD_LONGLONG: MOD_LONG; } @@ -255,28 +255,28 @@ static ase_char_t* __adjust_format (const ase_char_t* format) /* type */ - if (ch == ASE_T('%')) ADDC (buf, ch); - else if (ch == ASE_T('c') || ch == ASE_T('s')) + if (ch == QSE_T('%')) ADDC (buf, ch); + else if (ch == QSE_T('c') || ch == QSE_T('s')) { -#if !defined(ASE_CHAR_IS_MCHAR) && !defined(_WIN32) +#if !defined(QSE_CHAR_IS_MCHAR) && !defined(_WIN32) ADDC (buf, 'l'); #endif ADDC (buf, ch); } - else if (ch == ASE_T('C') || ch == ASE_T('S')) + else if (ch == QSE_T('C') || ch == QSE_T('S')) { #if defined(_WIN32) ADDC (buf, ch); #else - #ifdef ASE_CHAR_IS_MCHAR + #ifdef QSE_CHAR_IS_MCHAR ADDC (buf, 'l'); #endif - ADDC (buf, ASE_TOLOWER(ch)); + ADDC (buf, QSE_TOLOWER(ch)); #endif } - else if (ch == ASE_T('d') || ch == ASE_T('i') || - ch == ASE_T('o') || ch == ASE_T('u') || - ch == ASE_T('x') || ch == ASE_T('X')) + else if (ch == QSE_T('d') || ch == QSE_T('i') || + ch == QSE_T('o') || ch == QSE_T('u') || + ch == QSE_T('x') || ch == QSE_T('X')) { if (modifier == MOD_SHORT) { @@ -299,31 +299,31 @@ static ase_char_t* __adjust_format (const ase_char_t* format) } ADDC (buf, ch); } - else if (ch == ASE_T('\0')) break; + else if (ch == QSE_T('\0')) break; else ADDC (buf, ch); } - buf.ptr[buf.len] = ASE_T('\0'); + buf.ptr[buf.len] = QSE_T('\0'); return buf.ptr; } #endif -int ase_dprintf (const ase_char_t* fmt, ...) +int qse_dprintf (const qse_char_t* fmt, ...) { int n; va_list ap; va_start (ap, fmt); - n = ase_vfprintf (stderr, fmt, ap); + n = qse_vfprintf (stderr, fmt, ap); va_end (ap); return n; } -ASE_FILE* ase_fopen (const ase_char_t* path, const ase_char_t* mode) +QSE_FILE* qse_fopen (const qse_char_t* path, const qse_char_t* mode) { -#if defined(ASE_CHAR_IS_MCHAR) +#if defined(QSE_CHAR_IS_MCHAR) return fopen (path, mode); #elif defined(_WIN32) return _wfopen (path, mode); @@ -333,21 +333,21 @@ ASE_FILE* ase_fopen (const ase_char_t* path, const ase_char_t* mode) char mode_mb[32]; size_t n; - n = wcstombs (path_mb, path, ASE_COUNTOF(path_mb)); + n = wcstombs (path_mb, path, QSE_COUNTOF(path_mb)); if (n == (size_t)-1) return NULL; - if (n == ASE_COUNTOF(path_mb)) path_mb[ASE_COUNTOF(path_mb)-1] = '\0'; + if (n == QSE_COUNTOF(path_mb)) path_mb[QSE_COUNTOF(path_mb)-1] = '\0'; - n = wcstombs (mode_mb, mode, ASE_COUNTOF(mode_mb)); + n = wcstombs (mode_mb, mode, QSE_COUNTOF(mode_mb)); if (n == (size_t)-1) return NULL; - if (n == ASE_COUNTOF(mode_mb)) path_mb[ASE_COUNTOF(mode_mb)-1] = '\0'; + if (n == QSE_COUNTOF(mode_mb)) path_mb[QSE_COUNTOF(mode_mb)-1] = '\0'; return fopen (path_mb, mode_mb); #endif } -ASE_FILE* ase_popen (const ase_char_t* cmd, const ase_char_t* mode) +QSE_FILE* qse_popen (const qse_char_t* cmd, const qse_char_t* mode) { -#if defined(ASE_CHAR_IS_MCHAR) +#if defined(QSE_CHAR_IS_MCHAR) return popen (cmd, mode); #elif defined(_WIN32) return _wpopen (cmd, mode); @@ -356,74 +356,74 @@ ASE_FILE* ase_popen (const ase_char_t* cmd, const ase_char_t* mode) char mode_mb[32]; size_t n; - n = wcstombs (cmd_mb, cmd, ASE_COUNTOF(cmd_mb)); + n = wcstombs (cmd_mb, cmd, QSE_COUNTOF(cmd_mb)); if (n == (size_t)-1) return NULL; - if (n == ASE_COUNTOF(cmd_mb)) cmd_mb[ASE_COUNTOF(cmd_mb)-1] = '\0'; + if (n == QSE_COUNTOF(cmd_mb)) cmd_mb[QSE_COUNTOF(cmd_mb)-1] = '\0'; - n = wcstombs (mode_mb, mode, ASE_COUNTOF(mode_mb)); + n = wcstombs (mode_mb, mode, QSE_COUNTOF(mode_mb)); if (n == (size_t)-1) return NULL; - if (n == ASE_COUNTOF(mode_mb)) cmd_mb[ASE_COUNTOF(mode_mb)-1] = '\0'; + if (n == QSE_COUNTOF(mode_mb)) cmd_mb[QSE_COUNTOF(mode_mb)-1] = '\0'; return popen (cmd_mb, mode_mb); #endif } -static int isnl (const ase_char_t* ptr, ase_size_t len, void* delim) +static int isnl (const qse_char_t* ptr, qse_size_t len, void* delim) { - return (ptr[len-1] == *(ase_char_t*)delim)? 1: 0; + return (ptr[len-1] == *(qse_char_t*)delim)? 1: 0; } -ase_ssize_t ase_getline (ase_char_t **buf, ase_size_t *n, ASE_FILE *fp) +qse_ssize_t qse_getline (qse_char_t **buf, qse_size_t *n, QSE_FILE *fp) { - ase_char_t nl = ASE_T('\n'); - return ase_getdelim (buf, n, isnl, &nl, fp); + qse_char_t nl = QSE_T('\n'); + return qse_getdelim (buf, n, isnl, &nl, fp); } -ase_ssize_t ase_getdelim ( - ase_char_t **buf, ase_size_t *n, - ase_getdelim_t fn, void* fnarg, ASE_FILE *fp) +qse_ssize_t qse_getdelim ( + qse_char_t **buf, qse_size_t *n, + qse_getdelim_t fn, void* fnarg, QSE_FILE *fp) { - ase_char_t* b; - ase_size_t capa; - ase_size_t len = 0; + qse_char_t* b; + qse_size_t capa; + qse_size_t len = 0; int x; - ASE_ASSERT (buf != ASE_NULL); - ASE_ASSERT (n != ASE_NULL); + QSE_ASSERT (buf != QSE_NULL); + QSE_ASSERT (n != QSE_NULL); b = *buf; capa = *n; - if (b == ASE_NULL) + if (b == QSE_NULL) { capa = 256; - #if (defined(vms) || defined(__vms)) && (ASE_SIZEOF_VOID_P >= 8) - b = (ase_char_t*) _malloc32 (sizeof(ase_char_t)*(capa+1)); + #if (defined(vms) || defined(__vms)) && (QSE_SIZEOF_VOID_P >= 8) + b = (qse_char_t*) _malloc32 (sizeof(qse_char_t)*(capa+1)); #else - b = (ase_char_t*) malloc (sizeof(ase_char_t)*(capa+1)); + b = (qse_char_t*) malloc (sizeof(qse_char_t)*(capa+1)); #endif - if (b == ASE_NULL) return -2; + if (b == QSE_NULL) return -2; } - if (ase_feof(fp)) + if (qse_feof(fp)) { - len = (ase_size_t)-1; + len = (qse_size_t)-1; goto exit_task; } while (1) { - ase_cint_t c = ase_fgetc(fp); - if (c == ASE_CHAR_EOF) + qse_cint_t c = qse_fgetc(fp); + if (c == QSE_CHAR_EOF) { - if (ase_ferror(fp)) + if (qse_ferror(fp)) { - len = (ase_size_t)-2; + len = (qse_size_t)-2; goto exit_task; } if (len == 0) { - len = (ase_size_t)-1; + len = (qse_size_t)-1; goto exit_task; } @@ -432,13 +432,13 @@ ase_ssize_t ase_getdelim ( if (len+1 >= capa) { - ase_size_t ncapa = capa + 256; - ase_char_t* nb; + qse_size_t ncapa = capa + 256; + qse_char_t* nb; - nb = realloc (b, ncapa*sizeof(ase_char_t)); - if (nb == ASE_NULL) + nb = realloc (b, ncapa*sizeof(qse_char_t)); + if (nb == QSE_NULL) { - len = (ase_size_t)-2; + len = (qse_size_t)-2; goto exit_task; } @@ -451,16 +451,16 @@ ase_ssize_t ase_getdelim ( x = fn (b, len, fnarg); if (x < 0) { - len = (ase_size_t)-3; + len = (qse_size_t)-3; goto exit_task; } if (x > 0) break; } - b[len] = ASE_T('\0'); + b[len] = QSE_T('\0'); exit_task: *buf = b; *n = capa; - return (ase_ssize_t)len; + return (qse_ssize_t)len; } diff --git a/qse/makefile.in b/qse/makefile.in index 250be8b3..a189ef3d 100644 --- a/qse/makefile.in +++ b/qse/makefile.in @@ -39,7 +39,7 @@ POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = . -DIST_COMMON = $(am__configure_deps) $(srcdir)/makefile.am \ +DIST_COMMON = README $(am__configure_deps) $(srcdir)/makefile.am \ $(srcdir)/makefile.in $(top_srcdir)/configure autoconf/compile \ autoconf/config.guess autoconf/config.sub autoconf/depcomp \ autoconf/install-sh autoconf/ltmain.sh autoconf/missing @@ -50,7 +50,7 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/include/ase/config.h +CONFIG_HEADER = $(top_builddir)/include/qse/config.h CONFIG_CLEAN_FILES = SOURCES = DIST_SOURCES = diff --git a/qse/net/AssemblyInfo.cpp b/qse/net/AssemblyInfo.cpp deleted file mode 100644 index f857107c..00000000 --- a/qse/net/AssemblyInfo.cpp +++ /dev/null @@ -1,40 +0,0 @@ -#include "stdafx.h" - -using namespace System; -using namespace System::Reflection; -using namespace System::Runtime::CompilerServices; -using namespace System::Runtime::InteropServices; -using namespace System::Security::Permissions; - -// -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -// -[assembly:AssemblyTitleAttribute("asenet")]; -[assembly:AssemblyDescriptionAttribute("")]; -[assembly:AssemblyConfigurationAttribute("")]; -[assembly:AssemblyCompanyAttribute("")]; -[assembly:AssemblyProductAttribute("asenet")]; -[assembly:AssemblyCopyrightAttribute("Copyright (c) 2007")]; -[assembly:AssemblyTrademarkAttribute("")]; -[assembly:AssemblyCultureAttribute("")]; - -// -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the value or you can default the Revision and Build Numbers -// by using the '*' as shown below: - -[assembly:AssemblyVersionAttribute("1.0.*")]; - -[assembly:ComVisible(false)]; - -[assembly:CLSCompliantAttribute(true)]; - -[assembly:SecurityPermission(SecurityAction::RequestMinimum, UnmanagedCode = true)]; diff --git a/qse/net/Awk.cpp b/qse/net/Awk.cpp deleted file mode 100644 index ac8a0092..00000000 --- a/qse/net/Awk.cpp +++ /dev/null @@ -1,1198 +0,0 @@ -/* - * $Id: Awk.cpp 117 2008-03-03 11:20:05Z baconevi $ - * - * {License} - */ - -#include "stdafx.h" -#include "Awk.hpp" - -#include -#include -#include -#include -#include - -//#include -#include - -using System::Runtime::InteropServices::GCHandle; - -ASE_BEGIN_NAMESPACE2(ASE,Net) - -class MojoAwk: protected ASE::Awk -{ -public: - MojoAwk (): wrapper(nullptr) - { - } - - ~MojoAwk () - { - } - - int open (ASE::Net::Awk^ wrapper) - { - ASE::Net::Awk^ old = this->wrapper; - this->wrapper = wrapper; - int n = ASE::Awk::open (); - this->wrapper = old; - return n; - } - - void close (ASE::Net::Awk^ wrapper) - { - ASE::Net::Awk^ old = this->wrapper; - this->wrapper = wrapper; - Awk::close (); - this->wrapper = old; - } - - int getOption (ASE::Net::Awk^ wrapper) const - { - ASE::Net::Awk^ old = this->wrapper; - this->wrapper = wrapper; - int n = ASE::Awk::getOption (); - this->wrapper = old; - return n; - } - - void setOption (ASE::Net::Awk^ wrapper, int opt) - { - ASE::Net::Awk^ old = this->wrapper; - this->wrapper = wrapper; - ASE::Awk::setOption (opt); - this->wrapper = old; - } - - size_t getErrorLine (ASE::Net::Awk^ wrapper) const - { - ASE::Net::Awk^ old = this->wrapper; - size_t x = ASE::Awk::getErrorLine (); - this->wrapper = old; - return x; - } - - ErrorCode getErrorCode (ASE::Net::Awk^ wrapper) const - { - ASE::Net::Awk^ old = this->wrapper; - ASE::Awk::ErrorCode x = ASE::Awk::getErrorCode (); - this->wrapper = old; - return x; - } - - const char_t* getErrorMessage (ASE::Net::Awk^ wrapper) const - { - ASE::Net::Awk^ old = this->wrapper; - this->wrapper = wrapper; - const char_t* x = ASE::Awk::getErrorMessage(); - this->wrapper = old; - return x; - } - - const char_t* getErrorString (ASE::Net::Awk^ wrapper, ErrorCode num) const - { - ASE::Net::Awk^ old = this->wrapper; - this->wrapper = wrapper; - const char_t* x = ASE::Awk::getErrorString (num); - this->wrapper = old; - return x; - } - - void setError (ASE::Net::Awk^ wrapper, ErrorCode num) - { - ASE::Net::Awk^ old = this->wrapper; - this->wrapper = wrapper; - ASE::Awk::setError (num); - this->wrapper = old; - } - - void setError (ASE::Net::Awk^ wrapper, ErrorCode num, size_t line) - { - ASE::Net::Awk^ old = this->wrapper; - this->wrapper = wrapper; - ASE::Awk::setError (num, line); - this->wrapper = old; - } - - void setError (ASE::Net::Awk^ wrapper, ErrorCode num, size_t line, const char_t* arg, size_t len) - { - ASE::Net::Awk^ old = this->wrapper; - this->wrapper = wrapper; - ASE::Awk::setError (num, line, arg, len); - this->wrapper = old; - } - - void setErrorWithMessage (ASE::Net::Awk^ wrapper, ErrorCode num, size_t line, const char_t* msg) - { - ASE::Net::Awk^ old = this->wrapper; - this->wrapper = wrapper; - ASE::Awk::setErrorWithMessage (num, line, msg); - this->wrapper = old; - } - - int setErrorString (ASE::Net::Awk^ wrapper, ErrorCode num, const char_t* msg) - { - ASE::Net::Awk^ old = this->wrapper; - this->wrapper = wrapper; - int x = ASE::Awk::setErrorString (num, msg); - this->wrapper = old; - return x; - } - - int parse (ASE::Net::Awk^ wrapper) - { - ASE::Net::Awk^ old = this->wrapper; - this->wrapper = wrapper; - int n = ASE::Awk::parse (); - this->wrapper = old; - return n; - } - - int run (ASE::Net::Awk^ wrapper, const char_t* main = ASE_NULL, - const char_t** args = ASE_NULL, size_t nargs = 0) - { - ASE::Net::Awk^ old = this->wrapper; - this->wrapper = wrapper; - int n = ASE::Awk::run (main, args, nargs); - this->wrapper = old; - return n; - } - - void stop (ASE::Net::Awk^ wrapper) - { - /* - ASE::Net::Awk^ old = this->wrapper; - this->wrapper = wrapper; - ASE::Awk::stop (); - this->wrapper = old; - */ - if ((ASE::Net::Awk^)this->wrapper != nullptr) ASE::Awk::stop (); - } - - int getWord (ASE::Net::Awk^ wrapper, const char_t* ow, size_t olen, const char_t** nw, size_t* nlen) - { - ASE::Net::Awk^ old = this->wrapper; - this->wrapper = wrapper; - int n = ASE::Awk::getWord (ow, olen, nw, nlen); - this->wrapper = old; - return n; - } - - int setWord (ASE::Net::Awk^ wrapper, const char_t* ow, size_t olen, const char_t* nw, size_t nlen) - { - ASE::Net::Awk^ old = this->wrapper; - this->wrapper = wrapper; - int n = ASE::Awk::setWord (ow, olen, nw, nlen); - this->wrapper = old; - return n; - } - - int unsetWord (ASE::Net::Awk^ wrapper, const char_t* ow, size_t olen) - { - ASE::Net::Awk^ old = this->wrapper; - this->wrapper = wrapper; - int n = ASE::Awk::unsetWord (ow, olen); - this->wrapper = old; - return n; - } - - int unsetAllWords (ASE::Net::Awk^ wrapper) - { - ASE::Net::Awk^ old = this->wrapper; - this->wrapper = wrapper; - int n = ASE::Awk::unsetAllWords (); - this->wrapper = old; - return n; - } - - void setMaxDepth (ASE::Net::Awk^ wrapper, int ids, size_t depth) - { - ASE::Net::Awk^ old = this->wrapper; - this->wrapper = wrapper; - ASE::Awk::setMaxDepth (ids, depth); - this->wrapper = old; - } - - size_t getMaxDepth (ASE::Net::Awk^ wrapper, int id) const - { - ASE::Net::Awk^ old = this->wrapper; - this->wrapper = wrapper; - size_t n = ASE::Awk::getMaxDepth (id); - this->wrapper = old; - return n; - } - - void enableRunCallback (ASE::Net::Awk^ wrapper) - { - ASE::Net::Awk^ old = this->wrapper; - this->wrapper = wrapper; - ASE::Awk::enableRunCallback (); - this->wrapper = old; - } - - void disableRunCallback (ASE::Net::Awk^ wrapper) - { - ASE::Net::Awk^ old = this->wrapper; - this->wrapper = wrapper; - ASE::Awk::disableRunCallback (); - this->wrapper = old; - } - - void onRunStart (Run& run) - { - wrapper->runErrorReported = false; - - Net::Awk::Context^ ctx = gcnew Net::Awk::Context (wrapper, run); - GCHandle gh = GCHandle::Alloc (ctx); - run.setCustom ((void*)GCHandle::ToIntPtr(gh)); - - if (wrapper->OnRunStart != nullptr) - { - //wrapper->OnRunStart (wrapper); - try { wrapper->OnRunStart (ctx); } - catch (...) {} - } - - } - void onRunEnd (Run& run) - { - System::IntPtr ip ((void*)run.getCustom ()); - GCHandle gh = GCHandle::FromIntPtr (ip); - - ErrorCode code = run.getErrorCode(); - if (code != ERR_NOERR) - { - wrapper->runErrorReported = true; - wrapper->errMsg = gcnew System::String (run.getErrorMessage()); - wrapper->errLine = run.getErrorLine(); - wrapper->errCode = (ASE::Net::Awk::ERROR)code; - } - - if (wrapper->OnRunEnd != nullptr) - { - //wrapper->OnRunEnd (wrapper); - try { wrapper->OnRunEnd ((ASE::Net::Awk::Context^)gh.Target); } - catch (...) {} - } - - gh.Free (); - } - - void onRunReturn (Run& run, const Argument& ret) - { - if (wrapper->OnRunReturn != nullptr) - { - System::IntPtr ip ((void*)run.getCustom ()); - GCHandle gh = GCHandle::FromIntPtr (ip); - - //wrapper->OnRunReturn (wrapper); - try { wrapper->OnRunReturn ((ASE::Net::Awk::Context^)gh.Target); } - catch (...) {} - } - } - - void onRunStatement (Run& run, size_t line) - { - if (wrapper->OnRunStatement != nullptr) - { - System::IntPtr ip ((void*)run.getCustom ()); - GCHandle gh = GCHandle::FromIntPtr (ip); - - //wrapper->OnRunStatement (wrapper); - try { wrapper->OnRunStatement ((ASE::Net::Awk::Context^)gh.Target); } - catch (...) {} - } - } - - int addGlobal (ASE::Net::Awk^ wrapper, const char_t* name) - { - ASE::Net::Awk^ old = this->wrapper; - this->wrapper = wrapper; - int n = ASE::Awk::addGlobal (name); - this->wrapper = old; - return n; - } - - int deleteGlobal (ASE::Net::Awk^ wrapper, const char_t* name) - { - ASE::Net::Awk^ old = this->wrapper; - this->wrapper = wrapper; - int n = ASE::Awk::deleteGlobal (name); - this->wrapper = old; - return n; - } - - int addFunction ( - ASE::Net::Awk^ wrapper, const char_t* name, - size_t minArgs, size_t maxArgs, FunctionHandler handler) - { - ASE::Net::Awk^ old = this->wrapper; - this->wrapper = wrapper; - int n = ASE::Awk::addFunction (name, minArgs, maxArgs, handler); - this->wrapper = old; - return n; - } - - int deleteFunction (ASE::Net::Awk^ wrapper, const char_t* main) - { - ASE::Net::Awk^ old = this->wrapper; - this->wrapper = wrapper; - int n = ASE::Awk::deleteFunction (main); - this->wrapper = old; - return n; - } - - int mojoFunctionHandler ( - Run& run, Return& ret, const Argument* args, size_t nargs, - const char_t* name, size_t len) - { - System::IntPtr ip ((void*)run.getCustom ()); - GCHandle gh = GCHandle::FromIntPtr (ip); - - return wrapper->DispatchFunction ( - (ASE::Net::Awk::Context^)gh.Target, - ret, args, nargs, name, len)? 0: -1; - } - - int openSource (Source& io) - { - ASE::Net::Awk::Source^ nio = gcnew ASE::Net::Awk::Source ( - (ASE::Net::Awk::Source::MODE)io.getMode()); - - GCHandle gh = GCHandle::Alloc (nio); - io.setHandle (GCHandle::ToIntPtr(gh).ToPointer()); - - try { return wrapper->OpenSource (nio); } - catch (...) - { - gh.Free (); - io.setHandle (NULL); - return -1; - } - } - - int closeSource (Source& io) - { - System::IntPtr ip ((void*)io.getHandle ()); - GCHandle gh = GCHandle::FromIntPtr (ip); - - try - { - return wrapper->CloseSource ( - (ASE::Net::Awk::Source^)gh.Target); - } - catch (...) { return -1; } - finally { gh.Free (); } - } - - ssize_t readSource (Source& io, char_t* buf, size_t len) - { - System::IntPtr ip ((void*)io.getHandle()); - GCHandle gh = GCHandle::FromIntPtr (ip); - - cli::array^ b = nullptr; - - try - { - b = gcnew cli::array (len); - int n = wrapper->ReadSource ( - (ASE::Net::Awk::Source^)gh.Target, b, len); - for (int i = 0; i < n; i++) buf[i] = b[i]; - return n; - } - catch (...) { return -1; } - finally { if (b != nullptr) delete b; } - } - - ssize_t writeSource (Source& io, char_t* buf, size_t len) - { - System::IntPtr ip ((void*)io.getHandle()); - GCHandle gh = GCHandle::FromIntPtr (ip); - - cli::array^ b = nullptr; - try - { - b = gcnew cli::array (len); - for (size_t i = 0; i < len; i++) b[i] = buf[i]; - return wrapper->WriteSource ( - (ASE::Net::Awk::Source^)gh.Target, b, len); - } - catch (...) { return -1; } - finally { if (b != nullptr) delete b; } - } - - int openPipe (Pipe& io) - { - ASE::Net::Awk::Pipe^ nio = gcnew ASE::Net::Awk::Pipe ( - gcnew System::String (io.getName ()), - (ASE::Net::Awk::Pipe::MODE)io.getMode()); - - GCHandle gh = GCHandle::Alloc (nio); - io.setHandle (GCHandle::ToIntPtr(gh).ToPointer()); - - try { return wrapper->OpenPipe (nio); } - catch (...) - { - gh.Free (); - io.setHandle (NULL); - return -1; - } - } - - int closePipe (Pipe& io) - { - System::IntPtr ip ((void*)io.getHandle ()); - GCHandle gh = GCHandle::FromIntPtr (ip); - - try - { - return wrapper->ClosePipe ( - (ASE::Net::Awk::Pipe^)gh.Target); - } - catch (...) { return -1; } - finally { gh.Free (); } - } - - ssize_t readPipe (Pipe& io, char_t* buf, size_t len) - { - System::IntPtr ip ((void*)io.getHandle()); - GCHandle gh = GCHandle::FromIntPtr (ip); - - cli::array^ b = nullptr; - - try - { - b = gcnew cli::array (len); - int n = wrapper->ReadPipe ( - (ASE::Net::Awk::Pipe^)gh.Target, b, len); - for (int i = 0; i < n; i++) buf[i] = b[i]; - return n; - } - catch (...) { return -1; } - finally { if (b != nullptr) delete b; } - } - - ssize_t writePipe (Pipe& io, char_t* buf, size_t len) - { - System::IntPtr ip ((void*)io.getHandle()); - GCHandle gh = GCHandle::FromIntPtr (ip); - - cli::array^ b = nullptr; - try - { - b = gcnew cli::array (len); - for (size_t i = 0; i < len; i++) b[i] = buf[i]; - return wrapper->WritePipe ( - (ASE::Net::Awk::Pipe^)gh.Target, b, len); - } - catch (...) { return -1; } - finally { if (b != nullptr) delete b; } - } - - int flushPipe (Pipe& io) - { - System::IntPtr ip ((void*)io.getHandle()); - GCHandle gh = GCHandle::FromIntPtr (ip); - - try - { - return wrapper->FlushPipe ( - (ASE::Net::Awk::Pipe^)gh.Target); - } - catch (...) { return -1; } - } - - int openFile (File& io) - { - ASE::Net::Awk::File^ nio = gcnew ASE::Net::Awk::File ( - gcnew System::String (io.getName ()), - (ASE::Net::Awk::File::MODE)io.getMode()); - - GCHandle gh = GCHandle::Alloc (nio); - io.setHandle (GCHandle::ToIntPtr(gh).ToPointer()); - - try { return wrapper->OpenFile (nio); } - catch (...) - { - gh.Free (); - io.setHandle (NULL); - return -1; - } - } - - int closeFile (File& io) - { - System::IntPtr ip ((void*)io.getHandle ()); - GCHandle gh = GCHandle::FromIntPtr (ip); - - try - { - return wrapper->CloseFile ( - (ASE::Net::Awk::File^)gh.Target); - } - catch (...) { return -1; } - finally { gh.Free (); } - } - - ssize_t readFile (File& io, char_t* buf, size_t len) - { - System::IntPtr ip ((void*)io.getHandle()); - GCHandle gh = GCHandle::FromIntPtr (ip); - - cli::array^ b = nullptr; - try - { - b = gcnew cli::array (len); - int n = wrapper->ReadFile ( - (ASE::Net::Awk::File^)gh.Target, b, len); - for (int i = 0; i < n; i++) buf[i] = b[i]; - return n; - } - catch (...) { return -1; } - finally { if (b != nullptr) delete b; } - } - - ssize_t writeFile (File& io, char_t* buf, size_t len) - { - System::IntPtr ip ((void*)io.getHandle()); - GCHandle gh = GCHandle::FromIntPtr (ip); - - cli::array^ b = nullptr; - try - { - b = gcnew cli::array (len); - for (size_t i = 0; i < len; i++) b[i] = buf[i]; - return wrapper->WriteFile ( - (ASE::Net::Awk::File^)gh.Target, b, len); - } - catch (...) { return -1; } - finally { if (b != nullptr) delete b; } - } - - int flushFile (File& io) - { - System::IntPtr ip ((void*)io.getHandle()); - GCHandle gh = GCHandle::FromIntPtr (ip); - - try - { - return wrapper->FlushFile ( - (ASE::Net::Awk::File^)gh.Target); - } - catch (...) { return -1; } - } - - int openConsole (Console& io) - { - ASE::Net::Awk::Console^ nio = gcnew ASE::Net::Awk::Console ( - gcnew System::String (io.getName ()), - (ASE::Net::Awk::Console::MODE)io.getMode()); - - GCHandle gh = GCHandle::Alloc (nio); - io.setHandle (GCHandle::ToIntPtr(gh).ToPointer()); - - try { return wrapper->OpenConsole (nio); } - catch (...) - { - gh.Free (); - io.setHandle (NULL); - return -1; - } - } - - int closeConsole (Console& io) - { - System::IntPtr ip ((void*)io.getHandle ()); - GCHandle gh = GCHandle::FromIntPtr (ip); - - try - { - return wrapper->CloseConsole ( - (ASE::Net::Awk::Console^)gh.Target); - } - catch (...) { return -1; } - finally { gh.Free (); } - } - - ssize_t readConsole (Console& io, char_t* buf, size_t len) - { - System::IntPtr ip ((void*)io.getHandle()); - GCHandle gh = GCHandle::FromIntPtr (ip); - - cli::array^ b = nullptr; - try - { - b = gcnew cli::array (len); - int n = wrapper->ReadConsole ( - (ASE::Net::Awk::Console^)gh.Target, b, len); - for (int i = 0; i < n; i++) buf[i] = b[i]; - return n; - } - catch (...) { return -1; } - finally { if (b != nullptr) delete b; } - } - - ssize_t writeConsole (Console& io, char_t* buf, size_t len) - { - System::IntPtr ip ((void*)io.getHandle()); - GCHandle gh = GCHandle::FromIntPtr (ip); - - cli::array^ b = nullptr; - try - { - b = gcnew cli::array (len); - for (size_t i = 0; i < len; i++) b[i] = buf[i]; - return wrapper->WriteConsole ( - (ASE::Net::Awk::Console^)gh.Target, b, len); - } - catch (...) { return -1; } - finally { if (b != nullptr) delete b; } - } - - int flushConsole (Console& io) - { - System::IntPtr ip ((void*)io.getHandle()); - GCHandle gh = GCHandle::FromIntPtr (ip); - - try - { - return wrapper->FlushConsole ( - (ASE::Net::Awk::Console^)gh.Target); - } - catch (...) { return -1; } - } - - int nextConsole (Console& io) - { - System::IntPtr ip ((void*)io.getHandle()); - GCHandle gh = GCHandle::FromIntPtr (ip); - - try - { - return wrapper->NextConsole ( - (ASE::Net::Awk::Console^)gh.Target); - } - catch (...) { return -1; } - } - - // primitive operations - void* allocMem (size_t n) { return ::malloc (n); } - void* reallocMem (void* ptr, size_t n) { return ::realloc (ptr, n); } - void freeMem (void* ptr) { ::free (ptr); } - - bool_t isUpper (cint_t c) { return ase_isupper (c); } - bool_t isLower (cint_t c) { return ase_islower (c); } - bool_t isAlpha (cint_t c) { return ase_isalpha (c); } - bool_t isDigit (cint_t c) { return ase_isdigit (c); } - bool_t isXdigit (cint_t c) { return ase_isxdigit (c); } - bool_t isAlnum (cint_t c) { return ase_isalnum (c); } - bool_t isSpace (cint_t c) { return ase_isspace (c); } - bool_t isPrint (cint_t c) { return ase_isprint (c); } - bool_t isGraph (cint_t c) { return ase_isgraph (c); } - bool_t isCntrl (cint_t c) { return ase_iscntrl (c); } - bool_t isPunct (cint_t c) { return ase_ispunct (c); } - cint_t toUpper (cint_t c) { return ase_toupper (c); } - cint_t toLower (cint_t c) { return ase_tolower (c); } - - real_t pow (real_t x, real_t y) - { - return ::pow (x, y); - } - - int vsprintf (char_t* buf, size_t size, const char_t* fmt, va_list arg) - { - return ase_vsprintf (buf, size, fmt, arg); - } - - void vdprintf (const char_t* fmt, va_list arg) - { - ase_vfprintf (stderr, fmt, arg); - } - -protected: - //msclr::auto_gcroot wrapper; - mutable gcroot wrapper; -}; - -Awk::Awk () -{ - funcs = gcnew System::Collections::Hashtable(); - - awk = new ASE::Net::MojoAwk (); - if (awk->open (this) == -1) - { - throw gcnew System::Exception (gcnew System::String(awk->getErrorMessage(this))); - } - - //option = (OPTION)(awk->getOption (this) | MojoAwk::OPT_CRLF); - option = (OPTION)(awk->getOption (this) | ASE::Awk::OPT_CRLF); - awk->setOption (this, (int)option); - - errMsg = ""; - errLine = 0; - errCode = ASE::Net::Awk::ERROR::NOERR; - runErrorReported = false; -} - -Awk::~Awk () -{ - if (awk != NULL) - { - awk->close (this); - delete awk; - awk = NULL; - } - - if (funcs != nullptr) - { - funcs->Clear (); - delete funcs; - funcs = nullptr; - } -} - -Awk::!Awk () -{ - if (awk != NULL) - { - awk->close (this); - delete awk; - awk = NULL; - } -} - -Awk::OPTION Awk::Option::get () -{ - if (awk != NULL) this->option = (OPTION)awk->getOption (this); - return this->option; -} - -void Awk::Option::set (Awk::OPTION opt) -{ - this->option = opt; - if (awk != NULL) awk->setOption (this, (int)this->option); -} - -bool Awk::SetErrorString (Awk::ERROR num, System::String^ msg) -{ - if (awk == NULL) - { - SetError (ERROR::NOPER); - return false; - } - - cli::pin_ptr nptr = PtrToStringChars(msg); - bool r = (awk->setErrorString (this, (ASE::Awk::ErrorCode)num, nptr) == 0); - if (!r) { RetrieveError (); } - return r; -} - -void Awk::Close () -{ - if (awk != NULL) - { - awk->close (this); - delete awk; - awk = NULL; - } - - if (funcs != nullptr) - { - funcs->Clear (); - delete funcs; - funcs = nullptr; - } -} - -bool Awk::Parse () -{ - if (awk == NULL) - { - SetError (ERROR::NOPER); - return false; - } - bool r = (awk->parse (this) == 0); - if (!r) { RetrieveError (); } - return r; -} - -bool Awk::Run () -{ - return Run (nullptr, nullptr); -} - -bool Awk::Run (System::String^ entryPoint, cli::array^ args) -{ - runErrorReported = false; - - if (awk == NULL) - { - SetError (ERROR::NOPER); - return false; - } - - //if (OnRunStart != nullptr || OnRunEnd != nullptr || - // OnRunReturn != nullptr || OnRunStatement != nullptr) - //{ - awk->enableRunCallback (this); - //} - - if (args == nullptr || args->Length <= 0) - { - if (entryPoint == nullptr || entryPoint->Length <= 0) - { - bool r = (awk->run (this) == 0); - if (runErrorReported) r = false; - else if (!r) RetrieveError (); - return r; - } - else - { - cli::pin_ptr nptr = PtrToStringChars(entryPoint); - bool r = (awk->run (this, nptr) == 0); - if (runErrorReported) r = false; - else if (!r) RetrieveError (); - return r; - } - } - else - { - int nargs = args->Length; - ASE::Awk::char_t** ptr = ASE_NULL; - - try - { - bool r = false; - - ptr = (ASE::Awk::char_t**)awk->allocMem (nargs * ASE_SIZEOF(ASE::Awk::char_t*)); - if (ptr == ASE_NULL) - { - SetError (ERROR::NOMEM); - return false; - } - for (int i = 0; i < nargs; i++) ptr[i] = ASE_NULL; - for (int i = 0; i < nargs; i++) - { - cli::pin_ptr nptr = PtrToStringChars (args[i]); - ptr[i] = (ASE::Awk::char_t*)awk->allocMem ((args[i]->Length+1)*ASE_SIZEOF(ASE::Awk::char_t)); - if (ptr[i] == ASE_NULL) - { - r = false; - SetError (ERROR::NOMEM); - goto exit_run; - } - memcpy (ptr[i], nptr, args[i]->Length*ASE_SIZEOF(ASE::Awk::char_t)); - ptr[i][args[i]->Length] = ASE_T('\0'); - } - - if (entryPoint == nullptr || entryPoint->Length <= 0) - { - r = (awk->run (this, ASE_NULL, (const ASE::Awk::char_t**)ptr, nargs) == 0); - } - else - { - cli::pin_ptr nptr = PtrToStringChars(entryPoint); - r = (awk->run (this, nptr, (const ASE::Awk::char_t**)ptr, nargs) == 0); - } - - exit_run: - if (ptr != ASE_NULL) - { - for (int i = 0; i < nargs; i++) - { - if (ptr[i] != ASE_NULL) - { - awk->freeMem (ptr[i]); - ptr[i] = ASE_NULL; - } - } - - awk->freeMem (ptr); - ptr = ASE_NULL; - } - - if (runErrorReported) r = false; - else if (!r) RetrieveError (); - - return r; - } - catch (...) - { - if (ptr != ASE_NULL) - { - for (int i = 0; i < nargs; i++) - { - if (ptr[i] != ASE_NULL) - { - awk->freeMem (ptr[i]); - ptr[i] = ASE_NULL; - } - } - awk->freeMem (ptr); - ptr = ASE_NULL; - } - - SetError (ERROR::NOMEM); - return false; - } - } -} - -bool Awk::Stop () -{ - if (awk == NULL) - { - SetError (ERROR::NOPER); - return false; - } - - awk->stop (this); - return true; -} - -bool Awk::AddGlobal (System::String^ name, [System::Runtime::InteropServices::Out] int% id) -{ - if (awk == NULL) - { - SetError (ERROR::NOPER); - return false; - } - - cli::pin_ptr nptr = PtrToStringChars(name); - int n = awk->addGlobal (this, nptr); - if (n == -1) - { - RetrieveError (); - return false; - } - - id = n; - return true; -} - -bool Awk::DeleteGlobal (System::String^ name) -{ - if (awk == NULL) - { - SetError (ERROR::NOPER); - return false; - } - - cli::pin_ptr nptr = PtrToStringChars(name); - int n = awk->deleteGlobal (this, nptr); - if (n == -1) RetrieveError (); - return n == 0; -} - -bool Awk::AddFunction ( - System::String^ name, int minArgs, int maxArgs, - FunctionHandler^ handler) -{ - if (awk == NULL) - { - SetError (ERROR::NOPER); - return false; - } - cli::pin_ptr nptr = PtrToStringChars(name); - int n = awk->addFunction (this, nptr, minArgs, maxArgs, - (ASE::Awk::FunctionHandler)&MojoAwk::mojoFunctionHandler); - if (n == 0) funcs->Add(name, handler); - else RetrieveError (); - return n == 0; -} - -bool Awk::DeleteFunction (System::String^ name) -{ - if (awk == NULL) - { - SetError (ERROR::NOPER); - return false; - } - cli::pin_ptr nptr = PtrToStringChars(name); - int n = awk->deleteFunction (this, nptr); - if (n == 0) funcs->Remove (name); - else RetrieveError (); - return n == 0; -} - -bool Awk::DispatchFunction ( - Context^ ctx, ASE::Awk::Return& ret, - const ASE::Awk::Argument* args, size_t nargs, - const char_t* name, size_t len) -{ - System::String^ nm = gcnew System::String (name, 0, len); - - FunctionHandler^ fh = (FunctionHandler^)funcs[nm]; - if (fh == nullptr) - { - ctx->SetError (ERROR::INVAL); - return false; - } - - Return^ r = gcnew Return (ret); - cli::array^ a = gcnew cli::array (nargs); - - size_t i; - for (i = 0; i < nargs; i++) - a[i] = gcnew Argument(ctx, args[i]); - - bool n = fh (ctx, nm, a, r); - - while (i > 0) delete a[--i]; - delete a; - delete r; - - return n; -} - -System::String^ Awk::GetWord (System::String^ ow) -{ - if (awk == NULL) - { - SetError (ERROR::NOPER); - return nullptr; - } - - const char_t* nptr; - size_t nlen; - - cli::pin_ptr optr = PtrToStringChars(ow); - if (awk->getWord (this, optr, ow->Length, &nptr, &nlen) == -1) - { - RetrieveError (); - return nullptr; - } - - return gcnew System::String (nptr, 0, nlen); -} - -bool Awk::SetWord (System::String^ ow, System::String^ nw) -{ - if (awk == NULL) - { - SetError (ERROR::NOPER); - return false; - } - - cli::pin_ptr optr = PtrToStringChars(ow); - cli::pin_ptr nptr = PtrToStringChars(nw); - return (awk->setWord (this, optr, ow->Length, nptr, nw->Length) == 0); -} - -bool Awk::UnsetWord (System::String^ ow) -{ - if (awk == NULL) - { - SetError (ERROR::NOPER); - return false; - } - cli::pin_ptr optr = PtrToStringChars(ow); - return (awk->unsetWord (this, optr, ow->Length) == 0); -} - -bool Awk::UnsetAllWords () -{ - if (awk == NULL) - { - SetError (ERROR::NOPER); - return false; - } - return (awk->unsetAllWords (this) == 0); -} - -bool Awk::SetMaxDepth (DEPTH id, size_t depth) -{ - if (awk == NULL) - { - SetError (ERROR::NOPER); - return false; - } - awk->setMaxDepth (this, (int)id, depth); - return true; -} - -bool Awk::GetMaxDepth (DEPTH id, size_t* depth) -{ - if (awk == NULL) - { - SetError (ERROR::NOPER); - return false; - } - *depth = awk->getMaxDepth (this, (int)id); - return true; -} - -void Awk::SetError (ERROR num) -{ - if (awk != NULL) - { - awk->setError (this, (ASE::Awk::ErrorCode)num); - RetrieveError (); - } - else - { - errMsg = ""; - errLine = 0; - errCode = num; - } -} - -void Awk::SetError (ERROR num, size_t line) -{ - if (awk != NULL) - { - awk->setError (this, (ASE::Awk::ErrorCode)num, line); - RetrieveError (); - } - else - { - errMsg = ""; - errLine = line; - errCode = num; - } -} - -void Awk::SetError (ERROR num, size_t line, System::String^ arg) -{ - if (awk != NULL) - { - cli::pin_ptr p = PtrToStringChars(arg); - awk->setError (this, (ASE::Awk::ErrorCode)num, line, p, arg->Length); - RetrieveError (); - } - else - { - errMsg = ""; - errLine = line; - errCode = num; - } -} - -void Awk::SetErrorWithMessage (ERROR num, size_t line, System::String^ msg) -{ - if (awk != NULL) - { - cli::pin_ptr p = PtrToStringChars(msg); - awk->setErrorWithMessage (this, (ASE::Awk::ErrorCode)num, line, p); - RetrieveError (); - } - else - { - errMsg = msg; - errLine = line; - errCode = num; - } -} - -void Awk::RetrieveError () -{ - if (awk != NULL) - { - errMsg = gcnew System::String (awk->getErrorMessage(this)); - errLine = awk->getErrorLine (this); - errCode = (ERROR)awk->getErrorCode (this); - } -} - -ASE_END_NAMESPACE2(Net,ASE) diff --git a/qse/net/Awk.hpp b/qse/net/Awk.hpp deleted file mode 100644 index ac5b8903..00000000 --- a/qse/net/Awk.hpp +++ /dev/null @@ -1,830 +0,0 @@ -/* - * $Id: Awk.hpp 117 2008-03-03 11:20:05Z baconevi $ - * - * {License} - */ - -#pragma once - -#include -#include - -/////////////////////////////// -ASE_BEGIN_NAMESPACE2(ASE,Net) -/////////////////////////////// - -class MojoAwk; - -public ref class Awk abstract -{ -public: - typedef ASE::Awk::long_t long_t; - typedef ASE::Awk::real_t real_t; - typedef ASE::Awk::char_t char_t; - typedef ASE::Awk::size_t size_t; - typedef ASE::Awk::ssize_t ssize_t; - typedef ASE::Awk::cint_t cint_t; - typedef ASE::Awk::bool_t bool_t; - - [System::Flags] enum class OPTION: int - { - NONE = 0, - IMPLICIT = ASE::Awk::OPT_IMPLICIT, - EXPLICIT = ASE::Awk::OPT_EXPLICIT, - SHIFT = ASE::Awk::OPT_SHIFT, - IDIV = ASE::Awk::OPT_IDIV, - STRCONCAT = ASE::Awk::OPT_STRCONCAT, - EXTIO = ASE::Awk::OPT_EXTIO, - COPROC = ASE::Awk::OPT_COPROC, - BLOCKLESS = ASE::Awk::OPT_BLOCKLESS, - BASEONE = ASE::Awk::OPT_BASEONE, - STRIPSPACES = ASE::Awk::OPT_STRIPSPACES, - NEXTOFILE = ASE::Awk::OPT_NEXTOFILE, - CRLF = ASE::Awk::OPT_CRLF, - ARGSTOMAIN = ASE::Awk::OPT_ARGSTOMAIN, - RESET = ASE::Awk::OPT_RESET, - MAPTOVAR = ASE::Awk::OPT_MAPTOVAR, - PABLOCK = ASE::Awk::OPT_PABLOCK - }; - - enum class DEPTH: int - { - BLOCK_PARSE = ASE::Awk::DEPTH_BLOCK_PARSE, - BLOCK_RUN = ASE::Awk::DEPTH_BLOCK_RUN, - EXPR_PARSE = ASE::Awk::DEPTH_EXPR_PARSE, - EXPR_RUN = ASE::Awk::DEPTH_EXPR_RUN, - REX_BUILD = ASE::Awk::DEPTH_REX_BUILD, - REX_MATCH = ASE::Awk::DEPTH_REX_MATCH - }; - - // generated by generrcode-net.awk - enum class ERROR: int - { - NOERR = ASE::Awk::ERR_NOERR, - CUSTOM = ASE::Awk::ERR_CUSTOM, - INVAL = ASE::Awk::ERR_INVAL, - NOMEM = ASE::Awk::ERR_NOMEM, - NOSUP = ASE::Awk::ERR_NOSUP, - NOPER = ASE::Awk::ERR_NOPER, - NODEV = ASE::Awk::ERR_NODEV, - NOSPC = ASE::Awk::ERR_NOSPC, - MFILE = ASE::Awk::ERR_MFILE, - MLINK = ASE::Awk::ERR_MLINK, - AGAIN = ASE::Awk::ERR_AGAIN, - NOENT = ASE::Awk::ERR_NOENT, - EXIST = ASE::Awk::ERR_EXIST, - FTBIG = ASE::Awk::ERR_FTBIG, - TBUSY = ASE::Awk::ERR_TBUSY, - ISDIR = ASE::Awk::ERR_ISDIR, - IOERR = ASE::Awk::ERR_IOERR, - OPEN = ASE::Awk::ERR_OPEN, - READ = ASE::Awk::ERR_READ, - WRITE = ASE::Awk::ERR_WRITE, - CLOSE = ASE::Awk::ERR_CLOSE, - INTERN = ASE::Awk::ERR_INTERN, - RUNTIME = ASE::Awk::ERR_RUNTIME, - BLKNST = ASE::Awk::ERR_BLKNST, - EXPRNST = ASE::Awk::ERR_EXPRNST, - SINOP = ASE::Awk::ERR_SINOP, - SINCL = ASE::Awk::ERR_SINCL, - SINRD = ASE::Awk::ERR_SINRD, - SOUTOP = ASE::Awk::ERR_SOUTOP, - SOUTCL = ASE::Awk::ERR_SOUTCL, - SOUTWR = ASE::Awk::ERR_SOUTWR, - LXCHR = ASE::Awk::ERR_LXCHR, - LXDIG = ASE::Awk::ERR_LXDIG, - LXUNG = ASE::Awk::ERR_LXUNG, - ENDSRC = ASE::Awk::ERR_ENDSRC, - ENDCMT = ASE::Awk::ERR_ENDCMT, - ENDSTR = ASE::Awk::ERR_ENDSTR, - ENDREX = ASE::Awk::ERR_ENDREX, - LBRACE = ASE::Awk::ERR_LBRACE, - LPAREN = ASE::Awk::ERR_LPAREN, - RPAREN = ASE::Awk::ERR_RPAREN, - RBRACK = ASE::Awk::ERR_RBRACK, - COMMA = ASE::Awk::ERR_COMMA, - SCOLON = ASE::Awk::ERR_SCOLON, - COLON = ASE::Awk::ERR_COLON, - STMEND = ASE::Awk::ERR_STMEND, - IN = ASE::Awk::ERR_IN, - NOTVAR = ASE::Awk::ERR_NOTVAR, - EXPRES = ASE::Awk::ERR_EXPRES, - FUNC = ASE::Awk::ERR_FUNC, - WHILE = ASE::Awk::ERR_WHILE, - ASSIGN = ASE::Awk::ERR_ASSIGN, - IDENT = ASE::Awk::ERR_IDENT, - FNNAME = ASE::Awk::ERR_FNNAME, - BLKBEG = ASE::Awk::ERR_BLKBEG, - BLKEND = ASE::Awk::ERR_BLKEND, - DUPBEG = ASE::Awk::ERR_DUPBEG, - DUPEND = ASE::Awk::ERR_DUPEND, - BFNRED = ASE::Awk::ERR_BFNRED, - AFNRED = ASE::Awk::ERR_AFNRED, - GBLRED = ASE::Awk::ERR_GBLRED, - PARRED = ASE::Awk::ERR_PARRED, - DUPPAR = ASE::Awk::ERR_DUPPAR, - DUPGBL = ASE::Awk::ERR_DUPGBL, - DUPLCL = ASE::Awk::ERR_DUPLCL, - BADPAR = ASE::Awk::ERR_BADPAR, - BADVAR = ASE::Awk::ERR_BADVAR, - UNDEF = ASE::Awk::ERR_UNDEF, - LVALUE = ASE::Awk::ERR_LVALUE, - GBLTM = ASE::Awk::ERR_GBLTM, - LCLTM = ASE::Awk::ERR_LCLTM, - PARTM = ASE::Awk::ERR_PARTM, - DELETE = ASE::Awk::ERR_DELETE, - BREAK = ASE::Awk::ERR_BREAK, - CONTINUE = ASE::Awk::ERR_CONTINUE, - NEXTBEG = ASE::Awk::ERR_NEXTBEG, - NEXTEND = ASE::Awk::ERR_NEXTEND, - NEXTFBEG = ASE::Awk::ERR_NEXTFBEG, - NEXTFEND = ASE::Awk::ERR_NEXTFEND, - PRINTFARG = ASE::Awk::ERR_PRINTFARG, - PREPST = ASE::Awk::ERR_PREPST, - GLNCPS = ASE::Awk::ERR_GLNCPS, - DIVBY0 = ASE::Awk::ERR_DIVBY0, - OPERAND = ASE::Awk::ERR_OPERAND, - POSIDX = ASE::Awk::ERR_POSIDX, - ARGTF = ASE::Awk::ERR_ARGTF, - ARGTM = ASE::Awk::ERR_ARGTM, - FNNONE = ASE::Awk::ERR_FNNONE, - NOTIDX = ASE::Awk::ERR_NOTIDX, - NOTDEL = ASE::Awk::ERR_NOTDEL, - NOTMAP = ASE::Awk::ERR_NOTMAP, - NOTMAPIN = ASE::Awk::ERR_NOTMAPIN, - NOTMAPNILIN = ASE::Awk::ERR_NOTMAPNILIN, - NOTREF = ASE::Awk::ERR_NOTREF, - NOTASS = ASE::Awk::ERR_NOTASS, - IDXVALASSMAP = ASE::Awk::ERR_IDXVALASSMAP, - POSVALASSMAP = ASE::Awk::ERR_POSVALASSMAP, - MAPTOSCALAR = ASE::Awk::ERR_MAPTOSCALAR, - SCALARTOMAP = ASE::Awk::ERR_SCALARTOMAP, - MAPNOTALLOWED = ASE::Awk::ERR_MAPNOTALLOWED, - VALTYPE = ASE::Awk::ERR_VALTYPE, - RDELETE = ASE::Awk::ERR_RDELETE, - RNEXTBEG = ASE::Awk::ERR_RNEXTBEG, - RNEXTEND = ASE::Awk::ERR_RNEXTEND, - RNEXTFBEG = ASE::Awk::ERR_RNEXTFBEG, - RNEXTFEND = ASE::Awk::ERR_RNEXTFEND, - BFNUSER = ASE::Awk::ERR_BFNUSER, - BFNIMPL = ASE::Awk::ERR_BFNIMPL, - IOUSER = ASE::Awk::ERR_IOUSER, - IONONE = ASE::Awk::ERR_IONONE, - IOIMPL = ASE::Awk::ERR_IOIMPL, - IONMEM = ASE::Awk::ERR_IONMEM, - IONMNL = ASE::Awk::ERR_IONMNL, - FMTARG = ASE::Awk::ERR_FMTARG, - FMTCNV = ASE::Awk::ERR_FMTCNV, - CONVFMTCHR = ASE::Awk::ERR_CONVFMTCHR, - OFMTCHR = ASE::Awk::ERR_OFMTCHR, - REXRECUR = ASE::Awk::ERR_REXRECUR, - REXRPAREN = ASE::Awk::ERR_REXRPAREN, - REXRBRACKET = ASE::Awk::ERR_REXRBRACKET, - REXRBRACE = ASE::Awk::ERR_REXRBRACE, - REXUNBALPAR = ASE::Awk::ERR_REXUNBALPAR, - REXCOLON = ASE::Awk::ERR_REXCOLON, - REXCRANGE = ASE::Awk::ERR_REXCRANGE, - REXCCLASS = ASE::Awk::ERR_REXCCLASS, - REXBRANGE = ASE::Awk::ERR_REXBRANGE, - REXEND = ASE::Awk::ERR_REXEND, - REXGARBAGE = ASE::Awk::ERR_REXGARBAGE - }; - // end of enum class ERROR - - ref class Context; - - ref class Argument - { - public: - Argument (Context^ ctx) - { - arg = new((ASE::Awk::awk_t*)(ASE::Awk*)ctx->run) ASE::Awk::Argument (ctx->run); - if (arg == ASE_NULL) - { - throw gcnew System::OutOfMemoryException ("cannot create an instance of ASE::Awk::Argument"); - } - - arg_new = true; - } - - public protected: - Argument (Context^ ctx, const ASE::Awk::Argument& arg): - ctx(ctx), arg((ASE::Awk::Argument*)&arg), arg_new (false) - { - } - - public: - ~Argument () - { - if (arg_new && arg != ASE_NULL) - { - delete arg; - arg = ASE_NULL; - } - } - - !Argument () - { - if (arg_new && arg != ASE_NULL) - { - delete arg; - arg = ASE_NULL; - } - } - - public: - property long_t LongValue - { - long_t get () { return arg->toInt(); } - } - - property real_t RealValue - { - real_t get () { return arg->toReal(); } - } - - property System::String^ StringValue - { - System::String^ get () - { - size_t len; - const char_t* s = arg->toStr(&len); - return gcnew System::String (s, 0, len); - } - } - - bool GetIndexed (System::String^ idx, [System::Runtime::InteropServices::Out] Argument^% v) - { - cli::pin_ptr ip = PtrToStringChars(idx); - return arg->getIndexed (ip, idx->Length, *v->arg) == 0; - } - - public protected: - Context^ ctx; - ASE::Awk::Argument* arg; - bool arg_new; - }; - - ref class Return - { - public protected: - Return (ASE::Awk::Return& ret): ret (ret) - { - } - - public: - void Clear () - { - ret.clear (); - } - - bool Set (System::String^ v) - { - cli::pin_ptr nptr = PtrToStringChars(v); - return ret.set (nptr, v->Length) == 0; - } - - bool Set (long_t v) - { - return ret.set (v) == 0; - } - - bool Set (real_t v) - { - return ret.set (v) == 0; - } - - bool Set (System::Single^ v) - { - return ret.set ((real_t)(float)v) == 0; - } - - bool Set (System::Double^ v) - { - return ret.set ((real_t)(double)v) == 0; - } - - bool Set (System::SByte^ v) - { - return ret.set ((long_t)(__int8)v) == 0; - } - - bool Set (System::Int16^ v) - { - return ret.set ((long_t)(__int16)v) == 0; - } - - bool Set (System::Int32^ v) - { - return ret.set ((long_t)(__int32)v) == 0; - } - - bool Set (System::Int64^ v) - { - return ret.set ((long_t)(__int64)v) == 0; - } - - bool Set (System::Byte^ v) - { - return ret.set ((long_t)(unsigned __int8)v) == 0; - } - - bool Set (System::UInt16^ v) - { - return ret.set ((long_t)(unsigned __int16)v) == 0; - } - - bool Set (System::UInt32^ v) - { - return ret.set ((long_t)(unsigned __int32)v) == 0; - } - - bool Set (System::UInt64^ v) - { - return ret.set ((long_t)(unsigned __int64)v) == 0; - } - - bool IsIndexed () - { - return ret.isIndexed (); - } - - bool SetIndexed (System::String^ idx, System::String^ v) - { - cli::pin_ptr ip = PtrToStringChars(idx); - cli::pin_ptr vp = PtrToStringChars(v); - return ret.setIndexed (ip, idx->Length, vp, v->Length) == 0; - } - - bool SetIndexed (System::String^ idx, long_t v) - { - cli::pin_ptr ip = PtrToStringChars(idx); - return ret.setIndexed (ip, idx->Length, v) == 0; - } - - bool SetIndexed (System::String^ idx, real_t v) - { - cli::pin_ptr ip = PtrToStringChars(idx); - return ret.setIndexed (ip, idx->Length, v) == 0; - } - - bool SetIndexed (System::String^ idx, System::Single^ v) - { - cli::pin_ptr ip = PtrToStringChars(idx); - return ret.setIndexed (ip, idx->Length, (real_t)(float)v) == 0; - } - - bool SetIndexed (System::String^ idx, System::Double^ v) - { - cli::pin_ptr ip = PtrToStringChars(idx); - return ret.setIndexed (ip, idx->Length, (real_t)(double)v) == 0; - } - - bool SetIndexed (System::String^ idx, System::SByte^ v) - { - cli::pin_ptr ip = PtrToStringChars(idx); - return ret.setIndexed (ip, idx->Length, (long_t)(__int8)v) == 0; - } - - bool SetIndexed (System::String^ idx, System::Int16^ v) - { - cli::pin_ptr ip = PtrToStringChars(idx); - return ret.setIndexed (ip, idx->Length, (long_t)(__int16)v) == 0; - } - - bool SetIndexed (System::String^ idx, System::Int32^ v) - { - cli::pin_ptr ip = PtrToStringChars(idx); - return ret.setIndexed (ip, idx->Length, (long_t)(__int32)v) == 0; - } - - bool SetIndexed (System::String^ idx, System::Int64^ v) - { - cli::pin_ptr ip = PtrToStringChars(idx); - return ret.setIndexed (ip, idx->Length, (long_t)(__int64)v) == 0; - } - - bool SetIndexed (System::String^ idx, System::Byte^ v) - { - cli::pin_ptr ip = PtrToStringChars(idx); - return ret.setIndexed (ip, idx->Length, (long_t)(unsigned __int8)v) == 0; - } - - bool SetIndexed (System::String^ idx, System::UInt16^ v) - { - cli::pin_ptr ip = PtrToStringChars(idx); - return ret.setIndexed (ip, idx->Length, (long_t)(unsigned __int16)v) == 0; - } - - bool SetIndexed (System::String^ idx, System::UInt32^ v) - { - cli::pin_ptr ip = PtrToStringChars(idx); - return ret.setIndexed (ip, idx->Length, (long_t)(unsigned __int32)v) == 0; - } - - bool SetIndexed (System::String^ idx, System::UInt64^ v) - { - cli::pin_ptr ip = PtrToStringChars(idx); - return ret.setIndexed (ip, idx->Length, (long_t)(unsigned __int64)v) == 0; - } - - public protected: - ASE::Awk::Return& ret; - }; - - ref class Context - { - public protected: - Context (Awk^ owner, const ASE::Awk::Run& run): owner (owner), run ((ASE::Awk::Run&)run) - { - } - - public: - enum class GLOBAL: int - { - ARGC = ASE::Awk::GBL_ARGC, - ARGV = ASE::Awk::GBL_ARGV, - CONVFMT = ASE::Awk::GBL_CONVFMT, - FILENAME = ASE::Awk::GBL_FILENAME, - FNR = ASE::Awk::GBL_FNR, - FS = ASE::Awk::GBL_FS, - IGNORECASE = ASE::Awk::GBL_IGNORECASE, - NF = ASE::Awk::GBL_NF, - NR = ASE::Awk::GBL_NR, - OFILENAME = ASE::Awk::GBL_OFILENAME, - OFMT = ASE::Awk::GBL_OFMT, - OFS = ASE::Awk::GBL_OFS, - ORS = ASE::Awk::GBL_ORS, - RLENGTH = ASE::Awk::GBL_RLENGTH, - RS = ASE::Awk::GBL_RS, - RSTART = ASE::Awk::GBL_RSTART, - SUBSEP = ASE::Awk::GBL_SUBSEP - }; - - property Awk^ Owner - { - Awk^ get () { return this->owner; } - } - - void Stop () - { - run.stop (); - } - - property bool isStop - { - bool get () { return run.isStop(); } - } - - void SetError (ASE::Net::Awk::ERROR num) - { - return run.setError ((ASE::Awk::ErrorCode)num); - } - - void SetError (ASE::Net::Awk::ERROR num, size_t line) - { - return run.setError ((ASE::Awk::ErrorCode)num, line); - } - - void SetError (ASE::Net::Awk::ERROR num, size_t line, System::String^ arg) - { - cli::pin_ptr p = PtrToStringChars(arg); - return run.setError ( - (ASE::Awk::ErrorCode)num, line, p, arg->Length); - } - - void SetErrorWithMessage ( - ASE::Net::Awk::ERROR num, size_t line, System::String^ msg) - { - cli::pin_ptr p = PtrToStringChars(msg); - return run.setErrorWithMessage ( - (ASE::Awk::ErrorCode)num, line, p); - } - - bool SetGlobal (GLOBAL id, System::String^ v) - { - cli::pin_ptr nptr = PtrToStringChars(v); - return run.setGlobal ((ASE::Awk::Global)id, nptr, v->Length) == 0; - } - - bool SetGlobal (GLOBAL id, long_t v) - { - return run.setGlobal ((ASE::Awk::Global)id, v) == 0; - } - bool SetGlobal (GLOBAL id, System::SByte^ v) - { - return run.setGlobal ((ASE::Awk::Global)id, (long_t)(__int8)v) == 0; - } - bool SetGlobal (GLOBAL id, System::Int16^ v) - { - return run.setGlobal ((ASE::Awk::Global)id, (long_t)(__int16)v) == 0; - } - bool SetGlobal (GLOBAL id, System::Int32^ v) - { - return run.setGlobal ((ASE::Awk::Global)id, (long_t)(__int32)v) == 0; - } - bool SetGlobal (GLOBAL id, System::Int64^ v) - { - return run.setGlobal ((ASE::Awk::Global)id, (long_t)(__int64)v) == 0; - } - bool SetGlobal (GLOBAL id, System::Byte^ v) - { - return run.setGlobal ((ASE::Awk::Global)id, (long_t)(unsigned __int8)v) == 0; - } - bool SetGlobal (GLOBAL id, System::UInt16^ v) - { - return run.setGlobal ((ASE::Awk::Global)id, (long_t)(unsigned __int16)v) == 0; - } - bool SetGlobal (GLOBAL id, System::UInt32^ v) - { - return run.setGlobal ((ASE::Awk::Global)id, (long_t)(unsigned __int32)v) == 0; - } - bool SetGlobal (GLOBAL id, System::UInt64^ v) - { - return run.setGlobal ((ASE::Awk::Global)id, (long_t)(unsigned __int64)v) == 0; - } - - bool SetGlobal (GLOBAL id, real_t v) - { - return run.setGlobal ((ASE::Awk::Global)id, v) == 0; - } - bool SetGlobal (GLOBAL id, System::Single^ v) - { - return run.setGlobal ((ASE::Awk::Global)id, (real_t)(float)v) == 0; - } - bool SetGlobal (GLOBAL id, System::Double^ v) - { - return run.setGlobal ((ASE::Awk::Global)id, (real_t)(double)v) == 0; - } - - bool SetGlobal (GLOBAL id, Return^ v) - { - return run.setGlobal ((ASE::Awk::Global)id, v->ret) == 0; - } - - bool GetGlobal (GLOBAL id, [System::Runtime::InteropServices::Out] Argument^% v) - { - return run.getGlobal ((ASE::Awk::Global)id, *v->arg) == 0; - } - - public protected: - Awk^ owner; - ASE::Awk::Run& run; - }; - - ref class Source - { - public: - enum class MODE - { - READ = ASE::Awk::Source::READ, - WRITE = ASE::Awk::Source::WRITE - }; - - Source (MODE^ mode): handle (nullptr) - { - this->mode = mode; - } - - property Object^ Handle - { - Object^ get () { return this->handle; } - void set (Object^ handle) { this->handle = handle; } - } - - property MODE^ Mode - { - MODE^ get () { return this->mode; } - }; - - private: - MODE^ mode; - Object^ handle; - }; - - ref class Extio - { - public: - Extio (System::String^ name): handle (nullptr) - { - this->name = name; - } - - property Object^ Handle - { - Object^ get () { return this->handle; } - void set (Object^ handle) { this->handle = handle; } - } - - property System::String^ Name - { - System::String^ get () { return this->name; } - }; - - private: - Object^ handle; - System::String^ name; - }; - - ref class Pipe: public Extio - { - public: - enum class MODE - { - READ = ASE::Awk::Pipe::READ, - WRITE = ASE::Awk::Pipe::WRITE - }; - - property MODE^ Mode - { - MODE^ get () { return this->mode; } - }; - - Pipe (System::String^ name, MODE^ mode): Extio (name) - { - this->mode = mode; - } - - private: - MODE^ mode; - }; - - ref class File: public Extio - { - public: - enum class MODE - { - READ = ASE::Awk::File::READ, - WRITE = ASE::Awk::File::WRITE, - APPEND = ASE::Awk::File::APPEND - }; - - property MODE^ Mode - { - MODE^ get () { return this->mode; } - }; - - File (System::String^ name, MODE^ mode): Extio (name) - { - this->mode = mode; - } - - private: - MODE^ mode; - }; - - ref class Console: public Extio - { - public: - enum class MODE - { - READ = ASE::Awk::Console::READ, - WRITE = ASE::Awk::Console::WRITE - }; - - property MODE^ Mode - { - MODE^ get () { return this->mode; } - }; - - Console (System::String^ name, MODE^ mode): Extio (name) - { - this->mode = mode; - } - - private: - MODE^ mode; - }; - - Awk (); - !Awk (); - virtual ~Awk (); - - virtual void Close (); - virtual bool Parse (); - virtual bool Run (); - virtual bool Run (System::String^ entryPoint, cli::array^ args); - virtual bool Stop (); - - delegate void RunStartHandler (Context^ ctx); - delegate void RunEndHandler (Context^ ctx); - delegate void RunReturnHandler (Context^ ctx); - delegate void RunStatementHandler (Context^ ctx); - - /*event*/ RunStartHandler^ OnRunStart; - /*event*/ RunEndHandler^ OnRunEnd; - /*event*/ RunReturnHandler^ OnRunReturn; - /*event*/ RunStatementHandler^ OnRunStatement; - - virtual bool AddGlobal ( - System::String^ name, - [System::Runtime::InteropServices::Out] int% id); - virtual bool DeleteGlobal (System::String^ name); - - delegate bool FunctionHandler ( - Context^ ctx, System::String^ name, - cli::array^ args, Return^ ret); - - virtual bool AddFunction ( - System::String^ name, int minArgs, - int maxArgs, FunctionHandler^ handler); - virtual bool DeleteFunction (System::String^ name); - - virtual System::String^ GetWord (System::String^ ow); - virtual bool SetWord (System::String^ ow, System::String^ nw); - virtual bool UnsetWord (System::String^ ow); - virtual bool UnsetAllWords (); - - virtual bool SetMaxDepth (DEPTH id, size_t depth); - virtual bool GetMaxDepth (DEPTH id, size_t* depth); - - virtual bool SetErrorString (ERROR num, System::String^ str); - - property OPTION Option - { - OPTION get (); - void set (OPTION opt); - } - - property System::String^ ErrorMessage - { - System::String^ get () { return this->errMsg; } - } - - property ERROR ErrorCode - { - ERROR get () { return this->errCode; } - } - - property unsigned int ErrorLine - { - unsigned int get () { return this->errLine; } - } - -protected: - - MojoAwk* awk; - OPTION option; - System::Collections::Hashtable^ funcs; - -public protected: - // Source - virtual int OpenSource (Source^ source) = 0; - virtual int CloseSource (Source^ source) = 0; - virtual int ReadSource ( - Source^ source, cli::array^ buf, int len) = 0; - virtual int WriteSource ( - Source^ source, cli::array^ buf, int len) = 0; - - // File - virtual int OpenFile (File^ file) = 0; - virtual int CloseFile (File^ file) = 0; - virtual int ReadFile ( - File^ file, cli::array^ buf, int len) = 0; - virtual int WriteFile ( - File^ file, cli::array^ buf, int len) = 0; - virtual int FlushFile (File^ file) = 0; - - // Pipe - virtual int OpenPipe (Pipe^ pipe) = 0; - virtual int ClosePipe (Pipe^ pipe) = 0; - virtual int ReadPipe ( - Pipe^ pipe, cli::array^ buf, int len) = 0; - virtual int WritePipe ( - Pipe^ pipe, cli::array^ buf, int len) = 0; - virtual int FlushPipe (Pipe^ pipe) = 0; - - // Console - virtual int OpenConsole (Console^ console) = 0; - virtual int CloseConsole (Console^ console) = 0; - virtual int ReadConsole ( - Console^ console, cli::array^ buf, int len) = 0; - virtual int WriteConsole ( - Console^ console, cli::array^ buf, int len) = 0; - virtual int FlushConsole (Console^ console) = 0; - virtual int NextConsole (Console^ console) = 0; - -public protected: - bool Awk::DispatchFunction ( - Context^ ctx, ASE::Awk::Return& ret, - const ASE::Awk::Argument* args, size_t nargs, - const char_t* name, size_t len); - -public protected: - System::String^ errMsg; - unsigned int errLine; - ERROR errCode; - - void SetError (ERROR num); - void SetError (ERROR num, size_t line); - void SetError (ERROR num, size_t line, System::String^ arg); - void SetErrorWithMessage (ERROR num, size_t line, System::String^ msg); - - void RetrieveError (); - - bool runErrorReported; // only used if the run-callback is activated. -}; - -////////////////////////////// -ASE_END_NAMESPACE2(Net,ASE) -////////////////////////////// diff --git a/qse/net/StdAwk.cpp b/qse/net/StdAwk.cpp deleted file mode 100644 index 5b2af8c2..00000000 --- a/qse/net/StdAwk.cpp +++ /dev/null @@ -1,363 +0,0 @@ -/* - * $Id: StdAwk.cpp 117 2008-03-03 11:20:05Z baconevi $ - * - * {License} - */ - -#include "stdafx.h" -#include "misc.h" - -#include -#include -#include -#include -#include -#include - -#pragma warning(disable:4996) - -ASE_BEGIN_NAMESPACE2(ASE,Net) - -StdAwk::StdAwk () -{ - random_seed = (gcnew System::Random)->Next (System::Int32::MinValue, System::Int32::MaxValue); - random = gcnew System::Random (random_seed); - - // TODO: exception/error handling.... - AddFunction ("sin", 1, 1, gcnew FunctionHandler (this, &StdAwk::Sin)); - AddFunction ("cos", 1, 1, gcnew FunctionHandler (this, &StdAwk::Cos)); - AddFunction ("tan", 1, 1, gcnew FunctionHandler (this, &StdAwk::Tan)); - AddFunction ("atan", 1, 1, gcnew FunctionHandler (this, &StdAwk::Atan)); - AddFunction ("atan2", 2, 2, gcnew FunctionHandler (this, &StdAwk::Atan2)); - AddFunction ("log", 1, 1, gcnew FunctionHandler (this, &StdAwk::Log)); - AddFunction ("exp", 1, 1, gcnew FunctionHandler (this, &StdAwk::Exp)); - AddFunction ("sqrt", 1, 1, gcnew FunctionHandler (this, &StdAwk::Sqrt)); - AddFunction ("int", 1, 1, gcnew FunctionHandler (this, &StdAwk::Int)); - AddFunction ("rand", 0, 0, gcnew FunctionHandler (this, &StdAwk::Rand)); - AddFunction ("srand", 1, 1, gcnew FunctionHandler (this, &StdAwk::Srand)); - AddFunction ("systime", 0, 0, gcnew FunctionHandler (this, &StdAwk::Systime)); - AddFunction ("strftime", 0, 2, gcnew FunctionHandler (this, &StdAwk::Strftime)); - AddFunction ("strfgmtime", 0, 2, gcnew FunctionHandler (this, &StdAwk::Strfgmtime)); -} - -StdAwk::~StdAwk () -{ -} - -bool StdAwk::Sin (Context^ ctx, System::String^ name, array^ args, Return^ ret) -{ - return ret->Set ((real_t)System::Math::Sin (args[0]->RealValue)); -} - -bool StdAwk::Cos (Context^ ctx, System::String^ name, array^ args, Return^ ret) -{ - return ret->Set ((real_t)System::Math::Cos (args[0]->RealValue)); -} - -bool StdAwk::Tan (Context^ ctx, System::String^ name, array^ args, Return^ ret) -{ - return ret->Set ((real_t)System::Math::Tan (args[0]->RealValue)); -} - -bool StdAwk::Atan (Context^ ctx, System::String^ name, array^ args, Return^ ret) -{ - return ret->Set ((real_t)System::Math::Atan (args[0]->RealValue)); -} - -bool StdAwk::Atan2 (Context^ ctx, System::String^ name, array^ args, Return^ ret) -{ - return ret->Set ((real_t)System::Math::Atan2 (args[0]->RealValue, args[1]->RealValue)); -} - -bool StdAwk::Log (Context^ ctx, System::String^ name, array^ args, Return^ ret) -{ - return ret->Set ((real_t)System::Math::Log (args[0]->RealValue)); -} - -bool StdAwk::Exp (Context^ ctx, System::String^ name, array^ args, Return^ ret) -{ - return ret->Set ((real_t)System::Math::Exp (args[0]->RealValue)); -} - -bool StdAwk::Sqrt (Context^ ctx, System::String^ name, array^ args, Return^ ret) -{ - return ret->Set ((real_t)System::Math::Sqrt (args[0]->RealValue)); -} - -bool StdAwk::Int (Context^ ctx, System::String^ name, array^ args, Return^ ret) -{ - return ret->Set (args[0]->LongValue); -} - -bool StdAwk::Rand (Context^ ctx, System::String^ name, array^ args, Return^ ret) -{ - return ret->Set ((long_t)random->Next ()); -} - -bool StdAwk::Srand (Context^ ctx, System::String^ name, array^ args, Return^ ret) -{ - int seed = (int)args[0]->LongValue; - System::Random^ tmp = gcnew System::Random (seed); - - if (!ret->Set((long_t)tmp->Next())) return false; - - this->random_seed = seed; - this->random = tmp; - return true; -} - -#if defined(_WIN32) && defined(_MSC_VER) && (_MSC_VER>=1400) - #define time_t __time64_t - #define time _time64 - #define localtime _localtime64 - #define gmtime _gmtime64 -#endif - -bool StdAwk::Systime (Context^ ctx, System::String^ name, array^ args, Return^ ret) -{ - return ret->Set ((long_t)::time(NULL)); -} - -bool StdAwk::Strftime (Context^ ctx, System::String^ name, array^ args, Return^ ret) -{ - wchar_t buf[128]; - struct tm* tm; - size_t len; - - if (args->Length < 1) - { - const wchar_t* fmt = L"%c"; - time_t t = (args->Length < 2)? ::time(NULL): (time_t)args[1]->LongValue; - - tm = ::localtime (&t); - len = ::wcsftime (buf, ASE_COUNTOF(buf), fmt, tm); - } - else - { - cli::pin_ptr fmt = PtrToStringChars(args[0]->StringValue); - - time_t t = (args->Length < 2)? ::time(NULL): (time_t)args[1]->LongValue; - - tm = ::localtime (&t); - len = ::wcsftime (buf, ASE_COUNTOF(buf), fmt, tm); - } - - return ret->Set (gcnew System::String (buf, 0, len)); -} - -bool StdAwk::Strfgmtime (Context^ ctx, System::String^ name, array^ args, Return^ ret) -{ - wchar_t buf[128]; - struct tm* tm; - size_t len; - - if (args->Length < 1) - { - const wchar_t* fmt = L"%c"; - time_t t = (args->Length < 2)? ::time(NULL): (time_t)args[1]->LongValue; - - tm = ::gmtime (&t); - len = ::wcsftime (buf, ASE_COUNTOF(buf), fmt, tm); - } - else - { - cli::pin_ptr fmt = PtrToStringChars(args[0]->StringValue); - - time_t t = (args->Length < 2)? ::time(NULL): (time_t)args[1]->LongValue; - - tm = ::gmtime (&t); - len = ::wcsftime (buf, ASE_COUNTOF(buf), fmt, tm); - } - - return ret->Set (gcnew System::String (buf, 0, len)); -} - -int StdAwk::OpenFile (File^ file) -{ - System::IO::FileMode mode; - System::IO::FileAccess access; - System::IO::FileStream^ fs; - - if (file->Mode->Equals(File::MODE::READ)) - { - mode = System::IO::FileMode::Open; - access = System::IO::FileAccess::Read; - - fs = gcnew System::IO::FileStream (file->Name, mode, access); - System::IO::StreamReader^ rd = gcnew System::IO::StreamReader (fs); - file->Handle = rd; - } - else if (file->Mode->Equals(File::MODE::WRITE)) - { - mode = System::IO::FileMode::Create; - access = System::IO::FileAccess::Write; - - fs = gcnew System::IO::FileStream (file->Name, mode, access); - System::IO::StreamWriter^ wr = gcnew System::IO::StreamWriter (fs); - file->Handle = wr; - } - else /* File::MODE::APPEND */ - { - mode = System::IO::FileMode::Append; - access = System::IO::FileAccess::Write; - - fs = gcnew System::IO::FileStream (file->Name, mode, access); - System::IO::StreamWriter^ wr = gcnew System::IO::StreamWriter (fs); - file->Handle = wr; - } - - return 1; -} - -int StdAwk::CloseFile (File^ file) -{ - if (file->Mode->Equals(File::MODE::READ)) - { - System::IO::StreamReader^ sr = (System::IO::StreamReader^)file->Handle; - sr->Close (); - } - else - { - System::IO::StreamWriter^ sw = (System::IO::StreamWriter^)file->Handle; - sw->Close (); - } - return 0; -} - -int StdAwk::ReadFile (File^ file, cli::array^ buf, int len) -{ - System::IO::StreamReader^ sr = (System::IO::StreamReader^)file->Handle; - return sr->Read (buf, 0, len); -} - -int StdAwk::WriteFile (File^ file, cli::array^ buf, int len) -{ - System::IO::StreamWriter^ sw = (System::IO::StreamWriter^)file->Handle; - sw->Write (buf, 0, len); - return len; -} - -int StdAwk::FlushFile (File^ file) -{ - System::IO::StreamWriter^ sw = (System::IO::StreamWriter^)file->Handle; - sw->Flush (); - return 0; -} - - -int StdAwk::OpenPipe (Pipe^ pipe) -{ - FILE* fp = NULL; - - cli::pin_ptr name = - PtrToStringChars(pipe->Name); - - if (pipe->Mode->Equals(Pipe::MODE::READ)) - { - fp = _wpopen (name, L"r"); - } - else // Pipe::MODE::WRITE - { - fp = _wpopen (name, L"w"); - } - - if (fp == NULL) return -1; - - pipe->Handle = System::IntPtr ((void*)fp); - return 1; -} - -int StdAwk::ClosePipe (Pipe^ pipe) -{ - System::IntPtr ip = (System::IntPtr)pipe->Handle; - FILE* fp = (FILE*)ip.ToPointer(); - return (::_pclose (fp) == EOF)? -1: 0; -} - -int StdAwk::ReadPipe (Pipe^ pipe, cli::array^ buf, int len) -{ - System::IntPtr ip = (System::IntPtr)pipe->Handle; - FILE* fp = (FILE*)ip.ToPointer(); - - int n = 0; - - while (n < len) - { - wint_t c = fgetwc (fp); - if (c == WEOF) break; - - buf[n++] = c; - if (c == L'\n') break; - } - - return n; -} - -int StdAwk::WritePipe (Pipe^ pipe, cli::array^ buf, int len) -{ - System::IntPtr ip = (System::IntPtr)pipe->Handle; - FILE* fp = (FILE*)ip.ToPointer(); - int left; - - cli::pin_ptr bp = &buf[0]; - - /* somehow, fwprintf returns 0 when non-ascii - * characters are included in the buffer. - while (left > 0) - { - if (*bp == ASE_T('\0')) - { - if (fputwc (*ptr, fp) == WEOF) - { - return -1; - } - left -= 1; bp += 1; - } - else - { - int n = fwprintf (fp, L"%.*s", left, bp); - if (n < 0 || n > left) return -1; - left -= n; bp += n; - } - }*/ - - /* so the scheme has been changed to the following */ - char* mbp = unicode_to_multibyte (bp, len, &left); - if (mbp == NULL) return -1; - - char* ptr = mbp; - while (left > 0) - { - if (*ptr == '\0') - { - if (fputwc (*ptr, fp) == WEOF) - { - ::free (mbp); - return -1; - } - left -= 1; ptr += 1; - } - else - { - int n = fprintf (fp, "%.*s", left, ptr); - if (n < 0 || n > left) - { - ::free (mbp); - return -1; - } - left -= n; ptr += n; - } - } - - ::free (mbp); - return len; -} - -int StdAwk::FlushPipe (Pipe^ pipe) -{ - System::IntPtr ip = (System::IntPtr)pipe->Handle; - FILE* fp = (FILE*)ip.ToPointer(); - return (::fflush (fp) == EOF)? -1: 0; -} - -ASE_END_NAMESPACE2(Net,ASE) diff --git a/qse/net/StdAwk.hpp b/qse/net/StdAwk.hpp deleted file mode 100644 index 4be695f2..00000000 --- a/qse/net/StdAwk.hpp +++ /dev/null @@ -1,54 +0,0 @@ -/* - * $Id: StdAwk.hpp 117 2008-03-03 11:20:05Z baconevi $ - */ - -#include - -ASE_BEGIN_NAMESPACE2(ASE,Net) - -public ref class StdAwk abstract: public Awk -{ -public: - StdAwk (); - ~StdAwk (); - -protected: - int random_seed; - System::Random^ random; - - bool Sin (Context^ ctx, System::String^ name, array^ args, Return^ ret); - bool Cos (Context^ ctx, System::String^ name, array^ args, Return^ ret); - bool Tan (Context^ ctx, System::String^ name, array^ args, Return^ ret); - bool Atan (Context^ ctx, System::String^ name, array^ args, Return^ ret); - bool Atan2 (Context^ ctx, System::String^ name, array^ args, Return^ ret); - bool Log (Context^ ctx, System::String^ name, array^ args, Return^ ret); - bool Exp (Context^ ctx, System::String^ name, array^ args, Return^ ret); - bool Sqrt (Context^ ctx, System::String^ name, array^ args, Return^ ret); - bool Int (Context^ ctx, System::String^ name, array^ args, Return^ ret); - bool Rand (Context^ ctx, System::String^ name, array^ args, Return^ ret); - bool Srand (Context^ ctx, System::String^ name, array^ args, Return^ ret); - bool Systime (Context^ ctx, System::String^ name, array^ args, Return^ ret); - bool Strftime (Context^ ctx, System::String^ name, array^ args, Return^ ret); - bool Strfgmtime (Context^ ctx, System::String^ name, array^ args, Return^ ret); - -public protected: - // File - virtual int OpenFile (File^ file) override; - virtual int CloseFile (File^ file) override; - virtual int ReadFile ( - File^ file, cli::array^ buf, int len) override; - virtual int WriteFile ( - File^ file, cli::array^ buf, int len) override; - virtual int FlushFile (File^ file) override; - - // Pipe - virtual int OpenPipe (Pipe^ pipe) override; - virtual int ClosePipe (Pipe^ pipe) override; - virtual int ReadPipe ( - Pipe^ pipe, cli::array^ buf, int len) override; - virtual int WritePipe ( - Pipe^ pipe, cli::array^ buf, int len) override; - virtual int FlushPipe (Pipe^ pipe) override; -}; - -ASE_END_NAMESPACE2(Net,ASE) diff --git a/qse/net/Stdafx.cpp b/qse/net/Stdafx.cpp deleted file mode 100644 index f3feb62d..00000000 --- a/qse/net/Stdafx.cpp +++ /dev/null @@ -1,5 +0,0 @@ -// stdafx.cpp : source file that includes just the standard includes -// asenet.pch will be the pre-compiled header -// stdafx.obj will contain the pre-compiled type information - -#include "stdafx.h" diff --git a/qse/net/Stdafx.h b/qse/net/Stdafx.h deleted file mode 100644 index 3cc4c24e..00000000 --- a/qse/net/Stdafx.h +++ /dev/null @@ -1,7 +0,0 @@ -// stdafx.h : include file for standard system include files, -// or project specific include files that are used frequently, -// but are changed infrequently - -#pragma once - - diff --git a/qse/net/app.ico b/qse/net/app.ico deleted file mode 100644 index 3a5525fd794f7a7c5c8e6187f470ea3af38cd2b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1078 zcmeHHJr05}7=1t!Hp3A*8IHkVf+j?-!eHY14Gtcw1Eb*_9>Bq^zETJ@GKj{_2j4$w zo9}xCh!8{T3=X##Skq>ikMjsvB|y%crWBM2iW(4pI}c%z6%lW!=~4v77#3{z!dmB1 z__&l)-{KUYR+|8|;wB^R|9ET$J@(@=#rd^=)qs85?vAy(PSF5CyNkus435LVkZ$rj zNw|JG-P7^hF<(;#o*Vk}5R#e|^13tBbQkeF?djULtvqyxd3<{9 diff --git a/qse/net/app.rc b/qse/net/app.rc deleted file mode 100644 index 807aa896..00000000 --- a/qse/net/app.rc +++ /dev/null @@ -1,63 +0,0 @@ -// Microsoft Visual C++ generated resource script. -// -#include "resource.h" - -#define APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// English (U.S.) resources - - -///////////////////////////////////////////////////////////////////////////// -// -// Icon -// - -// Icon placed first or with lowest ID value becomes application icon - -LANGUAGE 9, 1 -#pragma code_page(1252) -1 ICON "app.ico" - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE -BEGIN - "resource.h\0" - "\0" -END - -2 TEXTINCLUDE -BEGIN - "#include ""afxres.h""\r\n" - "\0" -END - -3 TEXTINCLUDE -BEGIN - "\0" -END - -#endif // APSTUDIO_INVOKED - -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - diff --git a/qse/net/asenet.cpp b/qse/net/asenet.cpp deleted file mode 100644 index 871f9981..00000000 --- a/qse/net/asenet.cpp +++ /dev/null @@ -1,9 +0,0 @@ -/* - * $Id: asenet.cpp 117 2008-03-03 11:20:05Z baconevi $ - * - * {License} - */ - -#include "stdafx.h" -#include "asenet.h" - diff --git a/qse/net/asenet.h b/qse/net/asenet.h deleted file mode 100644 index 9a9889bf..00000000 --- a/qse/net/asenet.h +++ /dev/null @@ -1,17 +0,0 @@ -/* - * $Id: asenet.h 117 2008-03-03 11:20:05Z baconevi $ - * - * {License} - */ - -#pragma once - -using namespace System; - -namespace ASE -{ - namespace Net - { - - } -} diff --git a/qse/net/asenet.vcproj b/qse/net/asenet.vcproj deleted file mode 100644 index d337c577..00000000 --- a/qse/net/asenet.vcproj +++ /dev/null @@ -1,442 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/qse/net/misc.cpp b/qse/net/misc.cpp deleted file mode 100644 index fbd36ce3..00000000 --- a/qse/net/misc.cpp +++ /dev/null @@ -1,57 +0,0 @@ -/* - * $Id: misc.cpp 117 2008-03-03 11:20:05Z baconevi $ - * - * {License} - */ - -#include "stdafx.h" -#include "misc.h" -#include -#include -#include - -#ifndef NDEBUG - -#include -#include - -#pragma warning(disable:4996) -#pragma unmanaged - -void ase_assert_abort (void) -{ - ::abort (); -} - -void ase_assert_printf (const ase_char_t* fmt, ...) -{ - va_list ap; -#ifdef _WIN32 - int n; - ase_char_t buf[1024]; -#endif - - va_start (ap, fmt); - - n = _vsntprintf (buf, ASE_COUNTOF(buf), fmt, ap); - if (n < 0) buf[ASE_COUNTOF(buf)-1] = ASE_T('\0'); - - //ase_vprintf (fmt, ap); - ::MessageBox (NULL, buf, - ASE_T("ASSERTION FAILURE"), MB_OK|MB_ICONERROR); - - va_end (ap); -} -#endif - -char* unicode_to_multibyte (const wchar_t* in, int inlen, int* outlen) -{ - int n; - n = WideCharToMultiByte (CP_UTF8, 0, in, inlen, NULL, 0, NULL, 0); - - char* ptr = (char*)::malloc (sizeof(char)*n); - if (ptr == NULL) return NULL; - - *outlen = WideCharToMultiByte (CP_UTF8, 0, in, inlen, ptr, n, NULL, 0); - return ptr; -} diff --git a/qse/net/misc.h b/qse/net/misc.h deleted file mode 100644 index e5325497..00000000 --- a/qse/net/misc.h +++ /dev/null @@ -1,20 +0,0 @@ -/* - * $Id: misc.h 117 2008-03-03 11:20:05Z baconevi $ - * - * {License} - */ - -#ifndef _MISC_H_ -#define _MISC_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -char* unicode_to_multibyte (const wchar_t* in, int inlen, int* outlen); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/qse/net/resource.h b/qse/net/resource.h deleted file mode 100644 index d5ac7c42..00000000 --- a/qse/net/resource.h +++ /dev/null @@ -1,3 +0,0 @@ -//{{NO_DEPENDENCIES}} -// Microsoft Visual C++ generated include file. -// Used by app.rc diff --git a/qse/rel/doc.awk b/qse/rel/doc.awk deleted file mode 100644 index 50a48ebb..00000000 --- a/qse/rel/doc.awk +++ /dev/null @@ -1,369 +0,0 @@ -/* - * $Id: doc.awk,v 1.4 2007/09/06 09:05:32 bacon Exp $ - * - * {License} - */ - -global header, mode; -global empty_line_count; -global para_started; -global list_count; -global table_row_count; -global table_row_line_count; -global table_in_th; -global tabs; - -function print_text (full) -{ - local fra1, fra2, link, idx, t1, t2; - - gsub ("<", "\\<", full); - gsub (">", "\\>", full); - gsub (/\t/, tabs, full); - - while (match (full, /\{[^{},]+,[^{},]+\}/) > 0) - { - fra1 = substr (full, 1, RSTART-1); - link = substr (full, RSTART, RLENGTH); - fra2 = substr (full, RSTART+RLENGTH, length(full)-RLENGTH); - - idx = index(link, ","); - t1 = substr (link, 2, idx-2); - t2 = substr (link, idx+1, length(link)-idx-1); - - full = sprintf ("%s%s%s", fra1, t2, t1, fra2); - } - - while (match (full, /##\/[^\[\][:space:]]+\/##/) > 0) - { - fra1 = substr (full, 1, RSTART-1); - link = substr (full, RSTART+3, RLENGTH-6); - fra2 = substr (full, RSTART+RLENGTH, length(full)-RLENGTH); - - full = sprintf ("%s%s%s", fra1, link, fra2); - } - - while (match (full, /##=[^#[:space:]]+=##/) > 0) - { - fra1 = substr (full, 1, RSTART-1); - link = substr (full, RSTART+3, RLENGTH-6); - fra2 = substr (full, RSTART+RLENGTH, length(full)-RLENGTH); - - full = sprintf ("%s%s%s", fra1, link, fra2); - } - - while (match (full, /##-[^#[:space:]]+-##/) > 0) - { - fra1 = substr (full, 1, RSTART-1); - link = substr (full, RSTART+3, RLENGTH-6); - fra2 = substr (full, RSTART+RLENGTH, length(full)-RLENGTH); - - full = sprintf ("%s%s%s", fra1, link, fra2); - } - - print full; -} - -BEGIN { - header = 1; - mode = 0; - empty_line_count = 0; - para_started = 0; - - tabs = "\\ \\ \\ \\ \\ \\ \\ \\ "; - - #output=ARGV[1]; - #gsub (/\.man/, ".html", output); - #print "OUTPUT TO: " output; - - print ""; - print ""; - print ""; - print ""; -} - -header && /^\.[[:alpha:]]+[[:space:]]/ { - if ($1 == ".title") - { - local i; - - printf ""; - for (i = 2; i <= NF; i++) printf "%s ", $i; - print ""; - } - else if ($1 == ".tabstop") - { - if (NF >= 2) - { - local i; - for (i = 0; i < $2; i++) tabs = tabs . "\\ "; - } - } -} - -header && !/^\.[[:alpha:]]+[[:space:]]/ { - - header = 0; - print ""; - print ""; -} - -!header { - local text; - - if (mode == 0) - { - if (/^$/) - { - # empty line - if (para_started) - { - para_started = 0; - print "

"; - } - empty_line_count++; - } - else - { - if (/^= [^=]+ =$/) - { - if (para_started) - { - print "

"; - para_started = 0; - } - text=substr($0, 2, length($0)-2); - print "

" . text . "

"; - } - else if (/^== [^=]+ ==$/) - { - if (para_started) - { - print "

"; - para_started = 0; - } - text=substr($0, 3, length($0)-4); - print "

" . text . "

"; - } - else if (/^=== [^=]+ ===$/) - { - if (para_started) - { - print "

"; - para_started = 0; - } - text=substr($0, 4, length($0)-6); - print "

" . text . "

"; - } - else if (/^==== [^=]+ ====$/) - { - if (para_started) - { - print "

"; - para_started = 0; - } - text=substr($0, 5, length($0)-8); - print "

" . text . "

"; - } - else if (/^\{\{\{$/) # {{{ - { - # {{{ - if (para_started) - { - print "

"; - para_started = 0; - } - print "
";
-				mode = 1;
-			}
-			else if (/^\[\[\[$/) # [[[
-			{
-				if (para_started)
-				{
-					print "

"; - para_started = 0; - } - print "
    "; - mode = 2; - list_count = 0; - } - else if (/^\(\(\($/) # ((( - { - if (para_started) - { - print "

    "; - para_started = 0; - } - print "
      "; - mode = 3; - list_count = 0; - } - else if (/^\{\{\|$/) # {{| - { - if (para_started) - { - print "

      "; - para_started = 0; - } - - print ""; - mode = 4; - table_row_count = 0; - - print ""; - table_row_count++; - table_row_line_count = 0; - } - else - { - if (!para_started > 0) - { - print "

      "; - para_started = 1; - } - - /* - gsub ("<", "\\<"); - gsub (">", "\\>"); - print $0; - */ - - print_text ($0); - print "
      "; - } - - empty_line_count = 0; - } - } - else if (mode == 1) - { - if (/^}}}$/) - { - # }}} - print ""; - mode = 0; - } - else - { - gsub ("<", "\\<"); - gsub (">", "\\>"); - print $0; - } - } - else if (mode == 2) - { - if (/^]]]$/) - { - # ]]] - print ""; - print ""; - mode = 0; - } - else if (/^\* [^[:space:]]+/) - { - gsub ("<", "\\<"); - gsub (">", "\\>"); - if (list_count > 0) print ""; - print "

    1. "; - - print_text (substr ($0, 3, length($0)-2)); - list_count++; - } - else - { - print_text ($0); - } - } - else if (mode == 3) - { - if (/^\)\)\)$/) - { - # ))) - print "
    2. "; - print ""; - mode = 0; - } - else if (/^\* [^[:space:]]+/) - { - gsub ("<", "\\<"); - gsub (">", "\\>"); - if (list_count > 0) print ""; - print "
    3. "; - - print_text (substr ($0, 3, length($0)-2)); - list_count++; - } - else - { - print_text ($0); - } - } - else if (mode == 4) - { - if (/^\|}}$/) # |}} - { - if (table_row_line_count > 0) - print ((table_in_th)? "": ""); - if (table_row_count > 0) print "
    4. "; - print "
      "; - mode = 0; - } - else if (/^\|-+$/) # |- - { - if (table_row_line_count > 0) - print ((table_in_th)? "": ""); - if (table_row_count > 0) print ""; - print ""; - table_row_count++; - table_row_line_count = 0; - } - else if (table_row_count == 1 && /^![[:space:]]*$/) # ! - { - if (table_row_line_count > 0) - print ((table_in_th)? "": ""); - print ""; - print " "; - table_in_th = 1; - table_row_line_count++; - } - else if (table_row_count == 1 && /^! .+/) # ! text - { - if (table_row_line_count > 0) - print ((table_in_th)? "": ""); - print ""; - print_text (substr ($0, 3, length($0)-2)); - table_in_th = 1; - table_row_line_count++; - } - else if (/^\|[[:space:]]*$/) # | - { - if (table_row_line_count > 0) - print ((table_in_th)? "": ""); - print ""; - print " "; - table_in_th = 0; - table_row_line_count++; - } - else if (/^\| .+/) # | text - { - if (table_row_line_count > 0) - print ((table_in_th)? "": ""); - print ""; - - print_text (substr ($0, 3, length($0)-2)); - table_in_th = 0; - table_row_line_count++; - } - else - { - print "
      "; - print_text ($0); - table_row_line_count++; - } - } -} - -END { - print ""; - print ""; -} diff --git a/qse/rel/lic.awk b/qse/rel/lic.awk deleted file mode 100644 index ba5574de..00000000 --- a/qse/rel/lic.awk +++ /dev/null @@ -1,21 +0,0 @@ -/* - * $Id: lic.awk,v 1.4 2007/09/06 09:05:32 bacon Exp $ - * - * {License} - */ - -NR == 1 { - new_file = ARGV[1]; - printf "" > new_file; /* clear the file */ -} - -/^ \* \{License\}/ { - print " * Copyright (c) 2007, Hyung-Hwan Chung." >> new_file; - print " * All rights reserved." >> new_file; - print " * Licensed under the BSD license: " >> new_file; - print " * http://www.abiyo.net/ase/license.html" >> new_file; -} - -!/^ \* \{License\}/ { - print $0 >> new_file; -} diff --git a/qse/rel/rel.sh b/qse/rel/rel.sh deleted file mode 100755 index 80e15634..00000000 --- a/qse/rel/rel.sh +++ /dev/null @@ -1,145 +0,0 @@ -#!/bin/sh - -finalize () -{ - cur="$1"; dir="$2"; - - if [ "$dir" = "" ] - then - cd "$BASE" - else - cd "$BASE/$dir" - fi - - for i in * - do - if [ "$i" = "*" ]; then continue; fi - if [ "$i" = "CVS" ]; then continue; fi - if [ "$i" = ".svn" ]; then continue; fi - if [ "$i" = "stx" ]; then continue; fi - - if [ "$cur" = "" ] - then - file="$i" - full="$BASE/$i" - else - file="$cur/$i" - full="$BASE/$cur/$i" - fi - - if [ -d "$full" ] - then - if [ "$dir" = "" ] - then - new="$i" - else - new="$dir/$i" - fi - - finalize "$file" "$new" - cur="$1"; dir="$2"; - elif [ -f "$full" ] - then - target="$SOURCE_ROOT/ase" - mkdir -p "$target/$cur" - - case "$i" in - *.h|*.c|*.cc|*.cpp|*.java|*.awk|*.in) - "$ASEAWK" -f "$BASE/rel/lic.awk" -a "$target/$file" "$full" - ;; - *.man) - html=`echo $i | sed 's/.man$/.html/'` - "$ASEAWK" -explicit -noimplicit -f "$BASE/rel/doc.awk" "$full" > "$SOURCE_ROOT/html/$html" - "$ASEAWK" -explicit -noimplicit -f "$BASE/rel/doc.awk" "$full" > "$ASETGT/$html" - cp -f "$full" "$target/$file" - ;; - *.css) - cp -f "$full" "$target/$file" - cp -f "$full" "$SOURCE_ROOT/html/$i" - cp -f "$full" "$ASETGT/$i" - ;; - *.dsp|*.dsw|*.sln|*.vcproj|*.csproj|*.bat|*.cmd) - "$ASEAWK" -f "$BASE/rel/unix2dos.awk" "$full" > "$target/$file" - ;; - descrip.mms) - "$ASEAWK" -f "$BASE/rel/unix2dos.awk" "$full" > "$target/$file" - ;; - *.frx) - cp -f "$full" "$target/$file" - ;; - *) - if [ "$dir" = "test/com" ] - then - "$ASEAWK" -f "$BASE/rel/unix2dos.awk" "$full" > "$target/$file" - else - cp -f "$full" "$target/$file" - fi - ;; - esac - fi - done -} - - -print_usage () -{ - echo "Usage: $0 awk version target archiver" - echo "where awk := full path to aseawk" - echo " version := any string" - echo " target := full path to the target directory" - echo " archiver := gzip | zip" -} - -############################ -# BEGINNING OF THE PROGRAM # -############################ - -if [ $# -ne 4 ] -then - print_usage "$0" - exit 1 -fi - -if [ "$4" != "gzip" -a "$4" != "zip" ] -then - print_usage "$0" - exit 1 -fi - -ASEAWK="$1" -ASEVER="$2" -ASETGT="$3" -ASEARC="$4" - -CURDIR=`pwd` -cd ".." -BASE=`pwd` - -SOURCE_ROOT="$ASETGT/ase-$ASEVER" - -rm -rf "$ASETGT" -mkdir -p "$ASETGT" -mkdir -p "$SOURCE_ROOT" -mkdir -p "$SOURCE_ROOT/html" - -finalize "" "" - -cd "$ASETGT" - -if [ "$ASEARC" = "gzip" ] -then - tar -cvf "ase-$ASEVER.tar" "ase-$ASEVER" - gzip "ase-$ASEVER.tar" - #mv "ase-$ASEVER.tar.gz" "ase-$ASEVER.tgz" -elif [ "$ASEARC" = "zip" ] -then - ls -l - echo zip -r "ase-$ASEVER" "ase-$ASEVER" - zip -r ase "ase-$ASEVER" - mv -f ase.zip "ase-$ASEVER.zip" -fi - -rm -rf "ase-$ASEVER" - -cd "$CURDIR" -exit 0 diff --git a/qse/rel/unix2dos.awk b/qse/rel/unix2dos.awk deleted file mode 100644 index b8a6e3ef..00000000 --- a/qse/rel/unix2dos.awk +++ /dev/null @@ -1,2 +0,0 @@ -BEGIN { ORS="\r\n"; } -{ print $0; } diff --git a/qse/stx/array.c b/qse/stx/array.c deleted file mode 100644 index 3e800b03..00000000 --- a/qse/stx/array.c +++ /dev/null @@ -1,18 +0,0 @@ -/* - * $Id: array.c 118 2008-03-03 11:21:33Z baconevi $ - */ - -#include -#include -#include - -ase_word_t ase_stx_new_array (ase_stx_t* stx, ase_word_t size) -{ - ase_word_t x; - - ase_assert (stx->class_array != stx->nil); - x = ase_stx_alloc_word_object (stx, ASE_NULL, 0, ASE_NULL, size); - ASE_STX_CLASS(stx,x) = stx->class_array; - - return x; -} diff --git a/qse/stx/array.h b/qse/stx/array.h deleted file mode 100644 index c9685c6d..00000000 --- a/qse/stx/array.h +++ /dev/null @@ -1,21 +0,0 @@ -/* - * $Id: array.h 118 2008-03-03 11:21:33Z baconevi $ - */ - -#ifndef _ASE_STX_ARRAY_H_ -#define _ASE_STX_ARRAY_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -ase_word_t ase_stx_new_array (ase_stx_t* stx, ase_word_t size); - -#ifdef __cplusplus -} -#endif - - -#endif diff --git a/qse/stx/bootstrp.c b/qse/stx/bootstrp.c deleted file mode 100644 index 1dbb934d..00000000 --- a/qse/stx/bootstrp.c +++ /dev/null @@ -1,676 +0,0 @@ -/* - * $Id: bootstrp.c 118 2008-03-03 11:21:33Z baconevi $ - */ - -#include -#include -#include -#include -#include -#include - -static void __create_bootstrapping_objects (ase_stx_t* stx); -static void __create_builtin_classes (ase_stx_t* stx); -static ase_word_t __make_classvar_dict ( - ase_stx_t* stx, ase_word_t class, const ase_char_t* names); -static void __filein_kernel (ase_stx_t* stx); - -static ase_word_t __count_names (const ase_char_t* str); -static void __set_names ( - ase_stx_t* stx, ase_word_t* array, const ase_char_t* str); - -static ase_word_t __count_subclasses (const ase_char_t* str); -static void __set_subclasses ( - ase_stx_t* stx, ase_word_t* array, const ase_char_t* str); -static void __set_metaclass_subclasses ( - ase_stx_t* stx, ase_word_t* array, const ase_char_t* str); - -struct class_info_t -{ - const ase_char_t* name; - const ase_char_t* superclass; - const ase_char_t* instance_variables; - const ase_char_t* class_variables; - const ase_char_t* pool_dictionaries; - const int indexable; -}; - -typedef struct class_info_t class_info_t; - -static class_info_t class_info[] = -{ - { - ASE_T("Object"), - ASE_NULL, - ASE_NULL, - ASE_NULL, - ASE_NULL, - ASE_STX_SPEC_NOT_INDEXABLE - }, - { - ASE_T("UndefinedObject"), - ASE_T("Object"), - ASE_NULL, - ASE_NULL, - ASE_NULL, - ASE_STX_SPEC_NOT_INDEXABLE - }, - { - ASE_T("Behavior"), - ASE_T("Object"), - ASE_T("spec methods superclass"), - ASE_NULL, - ASE_NULL, - ASE_STX_SPEC_NOT_INDEXABLE - }, - { - ASE_T("Class"), - ASE_T("Behavior"), - ASE_T("name variables classVariables poolDictionaries"), - ASE_NULL, - ASE_NULL, - ASE_STX_SPEC_NOT_INDEXABLE - }, - { - ASE_T("Metaclass"), - ASE_T("Behavior"), - ASE_T("instanceClass"), - ASE_NULL, - ASE_NULL, - ASE_STX_SPEC_NOT_INDEXABLE - }, - { - ASE_T("Block"), - ASE_T("Object"), - ASE_T("context argCount argLoc bytePointer"), - ASE_NULL, - ASE_NULL, - ASE_STX_SPEC_NOT_INDEXABLE - }, - { - ASE_T("Boolean"), - ASE_T("Object"), - ASE_NULL, - ASE_NULL, - ASE_NULL, - ASE_STX_SPEC_NOT_INDEXABLE - }, - { - ASE_T("True"), - ASE_T("Boolean"), - ASE_NULL, - ASE_NULL, - ASE_NULL, - ASE_STX_SPEC_NOT_INDEXABLE - }, - { - ASE_T("False"), - ASE_T("Boolean"), - ASE_NULL, - ASE_NULL, - ASE_NULL, - ASE_STX_SPEC_NOT_INDEXABLE - }, - { - ASE_T("Context"), - ASE_T("Object"), - ASE_T("stack stackTop receiver pc method"), - ASE_NULL, - ASE_NULL, - ASE_STX_SPEC_NOT_INDEXABLE - }, - { - ASE_T("Method"), - ASE_T("Object"), - ASE_T("text selector bytecodes tmpCount argCount"), - ASE_NULL, - ASE_NULL, - ASE_STX_SPEC_WORD_INDEXABLE - }, - { - ASE_T("Magnitude"), - ASE_T("Object"), - ASE_NULL, - ASE_NULL, - ASE_NULL, - ASE_STX_SPEC_NOT_INDEXABLE - }, - { - ASE_T("Association"), - ASE_T("Magnitude"), - ASE_T("key value"), - ASE_NULL, - ASE_NULL, - ASE_STX_SPEC_NOT_INDEXABLE - }, - { - ASE_T("Character"), - ASE_T("Magnitude"), - ASE_T("value"), - ASE_NULL, - ASE_NULL, - ASE_STX_SPEC_NOT_INDEXABLE - }, - { - ASE_T("Number"), - ASE_T("Magnitude"), - ASE_NULL, - ASE_NULL, - ASE_NULL, - ASE_STX_SPEC_NOT_INDEXABLE - }, - { - ASE_T("Integer"), - ASE_T("Number"), - ASE_NULL, - ASE_NULL, - ASE_NULL, - ASE_STX_SPEC_NOT_INDEXABLE - }, - { - ASE_T("SmallInteger"), - ASE_T("Integer"), - ASE_NULL, - ASE_NULL, - ASE_NULL, - ASE_STX_SPEC_NOT_INDEXABLE - }, - { - ASE_T("LargeInteger"), - ASE_T("Integer"), - ASE_NULL, - ASE_NULL, - ASE_NULL, - ASE_STX_SPEC_BYTE_INDEXABLE - }, - { - ASE_T("Collection"), - ASE_T("Magnitude"), - ASE_NULL, - ASE_NULL, - ASE_NULL, - ASE_STX_SPEC_NOT_INDEXABLE - }, - { - ASE_T("IndexedCollection"), - ASE_T("Collection"), - ASE_NULL, - ASE_NULL, - ASE_NULL, - ASE_STX_SPEC_NOT_INDEXABLE - }, - { - ASE_T("Array"), - ASE_T("IndexedCollection"), - ASE_NULL, - ASE_NULL, - ASE_NULL, - ASE_STX_SPEC_WORD_INDEXABLE - }, - { - ASE_T("ByteArray"), - ASE_T("IndexedCollection"), - ASE_NULL, - ASE_NULL, - ASE_NULL, - ASE_STX_SPEC_BYTE_INDEXABLE - }, - { - ASE_T("Dictionary"), - ASE_T("IndexedCollection"), - ASE_T("tally"), - ASE_NULL, - ASE_NULL, - ASE_STX_SPEC_WORD_INDEXABLE - }, - { - ASE_T("SystemDictionary"), - ASE_T("Dictionary"), - ASE_NULL, - ASE_NULL, - ASE_NULL, - ASE_STX_SPEC_WORD_INDEXABLE - }, - { - ASE_T("PoolDictionary"), - ASE_T("Dictionary"), - ASE_NULL, - ASE_NULL, - ASE_NULL, - ASE_STX_SPEC_WORD_INDEXABLE - }, - { - ASE_T("String"), - ASE_T("IndexedCollection"), - ASE_NULL, - ASE_NULL, - ASE_NULL, - ASE_STX_SPEC_CHAR_INDEXABLE - }, - { - ASE_T("Symbol"), - ASE_T("String"), - ASE_NULL, - ASE_NULL, - ASE_NULL, - ASE_STX_SPEC_CHAR_INDEXABLE - }, - { - ASE_T("Link"), - ASE_T("Object"), - ASE_T("link"), - ASE_NULL, - ASE_NULL, - ASE_STX_SPEC_NOT_INDEXABLE - }, - { - ASE_NULL, - ASE_NULL, - ASE_NULL, - ASE_NULL, - ASE_NULL, - ASE_STX_SPEC_NOT_INDEXABLE - } -}; - -ase_word_t INLINE __new_string (ase_stx_t* stx, const ase_char_t* str) -{ - ase_word_t x; - - ase_assert (stx->class_string != stx->nil); - x = ase_stx_alloc_char_object (stx, str); - ASE_STX_CLASS(stx,x) = stx->class_string; - - return x; -} - -int ase_stx_bootstrap (ase_stx_t* stx) -{ - ase_word_t symbol_Smalltalk; - ase_word_t object_meta; - - __create_bootstrapping_objects (stx); - - /* object, class, and array are precreated for easier instantiation - * of builtin classes */ - stx->class_object = ase_stx_new_class (stx, ASE_T("Object")); - stx->class_class = ase_stx_new_class (stx, ASE_T("Class")); - stx->class_array = ase_stx_new_class (stx, ASE_T("Array")); - stx->class_bytearray = ase_stx_new_class (stx, ASE_T("ByteArray")); - stx->class_string = ase_stx_new_class (stx, ASE_T("String")); - stx->class_character = ase_stx_new_class (stx, ASE_T("Character")); - stx->class_context = ase_stx_new_class (stx, ASE_T("Context")); - stx->class_system_dictionary = - ase_stx_new_class (stx, ASE_T("SystemDictionary")); - stx->class_method = - ase_stx_new_class (stx, ASE_T("Method")); - stx->class_smallinteger = - ase_stx_new_class (stx, ASE_T("SmallInteger")); - - __create_builtin_classes (stx); - - /* (Object class) setSuperclass: Class */ - object_meta = ASE_STX_CLASS(stx,stx->class_object); - ASE_STX_WORD_AT(stx,object_meta,ASE_STX_METACLASS_SUPERCLASS) = stx->class_class; - /* instance class for Object is set here as it is not - * set in __create_builtin_classes */ - ASE_STX_WORD_AT(stx,object_meta,ASE_STX_METACLASS_INSTANCE_CLASS) = stx->class_object; - - /* for some fun here */ - { - ase_word_t array; - array = ase_stx_new_array (stx, 1); - ASE_STX_WORD_AT(stx,array,0) = object_meta; - ASE_STX_WORD_AT(stx,stx->class_class,ASE_STX_CLASS_SUBCLASSES) = array; - } - - /* more initialization */ - ASE_STX_CLASS(stx,stx->smalltalk) = stx->class_system_dictionary; - - symbol_Smalltalk = ase_stx_new_symbol (stx, ASE_T("Smalltalk")); - ase_stx_dict_put (stx, stx->smalltalk, symbol_Smalltalk, stx->smalltalk); - - /* create #nil, #true, #false */ - ase_stx_new_symbol (stx, ASE_T("nil")); - ase_stx_new_symbol (stx, ASE_T("true")); - ase_stx_new_symbol (stx, ASE_T("false")); - - /* nil setClass: UndefinedObject */ - ASE_STX_CLASS(stx,stx->nil) = - ase_stx_lookup_class(stx, ASE_T("UndefinedObject")); - /* true setClass: True */ - ASE_STX_CLASS(stx,stx->true) = - ase_stx_lookup_class (stx, ASE_T("True")); - /* fales setClass: False */ - ASE_STX_CLASS(stx,stx->false) = - ase_stx_lookup_class (stx, ASE_T("False")); - - __filein_kernel (stx); - return 0; -} - -static void __create_bootstrapping_objects (ase_stx_t* stx) -{ - ase_word_t class_SymbolMeta; - ase_word_t class_MetaclassMeta; - ase_word_t class_AssociationMeta; - ase_word_t symbol_Symbol; - ase_word_t symbol_Metaclass; - ase_word_t symbol_Association; - - /* allocate three keyword objects */ - stx->nil = ase_stx_alloc_word_object (stx, ASE_NULL, 0, ASE_NULL, 0); - stx->true = ase_stx_alloc_word_object (stx, ASE_NULL, 0, ASE_NULL, 0); - stx->false = ase_stx_alloc_word_object (stx, ASE_NULL, 0, ASE_NULL, 0); - - ase_assert (stx->nil == ASE_STX_NIL); - ase_assert (stx->true == ASE_STX_TRUE); - ase_assert (stx->false == ASE_STX_FALSE); - - /* system dictionary */ - /* TODO: dictionary size */ - stx->smalltalk = ase_stx_alloc_word_object ( - stx, ASE_NULL, 1, ASE_NULL, 256); - /* set tally */ - ASE_STX_WORD_AT(stx,stx->smalltalk,0) = ASE_STX_TO_SMALLINT(0); - - /* Symbol */ - stx->class_symbol = ase_stx_alloc_word_object( - stx, ASE_NULL, ASE_STX_CLASS_SIZE, ASE_NULL, 0); - /* Metaclass */ - stx->class_metaclass = ase_stx_alloc_word_object( - stx, ASE_NULL, ASE_STX_CLASS_SIZE, ASE_NULL, 0); - /* Association */ - stx->class_association = ase_stx_alloc_word_object( - stx, ASE_NULL, ASE_STX_CLASS_SIZE, ASE_NULL, 0); - - /* Metaclass is a class so it has the same structure - * as a normal class. "Metaclass class" is an instance of - * Metaclass. */ - - /* Symbol class */ - class_SymbolMeta = ase_stx_alloc_word_object( - stx, ASE_NULL, ASE_STX_METACLASS_SIZE, ASE_NULL, 0); - /* Metaclass class */ - class_MetaclassMeta = ase_stx_alloc_word_object( - stx, ASE_NULL, ASE_STX_METACLASS_SIZE, ASE_NULL, 0); - /* Association class */ - class_AssociationMeta = ase_stx_alloc_word_object( - stx, ASE_NULL, ASE_STX_METACLASS_SIZE, ASE_NULL, 0); - - /* (Symbol class) setClass: Metaclass */ - ASE_STX_CLASS(stx,class_SymbolMeta) = stx->class_metaclass; - /* (Metaclass class) setClass: Metaclass */ - ASE_STX_CLASS(stx,class_MetaclassMeta) = stx->class_metaclass; - /* (Association class) setClass: Metaclass */ - ASE_STX_CLASS(stx,class_AssociationMeta) = stx->class_metaclass; - - /* Symbol setClass: (Symbol class) */ - ASE_STX_CLASS(stx,stx->class_symbol) = class_SymbolMeta; - /* Metaclass setClass: (Metaclass class) */ - ASE_STX_CLASS(stx,stx->class_metaclass) = class_MetaclassMeta; - /* Association setClass: (Association class) */ - ASE_STX_CLASS(stx,stx->class_association) = class_AssociationMeta; - - /* (Symbol class) setSpec: CLASS_SIZE */ - ASE_STX_WORD_AT(stx,class_SymbolMeta,ASE_STX_CLASS_SPEC) = - ASE_STX_TO_SMALLINT((ASE_STX_CLASS_SIZE << ASE_STX_SPEC_INDEXABLE_BITS) | ASE_STX_SPEC_NOT_INDEXABLE); - /* (Metaclass class) setSpec: CLASS_SIZE */ - ASE_STX_WORD_AT(stx,class_MetaclassMeta,ASE_STX_CLASS_SPEC) = - ASE_STX_TO_SMALLINT((ASE_STX_CLASS_SIZE << ASE_STX_SPEC_INDEXABLE_BITS) | ASE_STX_SPEC_NOT_INDEXABLE); - /* (Association class) setSpec: CLASS_SIZE */ - ASE_STX_WORD_AT(stx,class_AssociationMeta,ASE_STX_CLASS_SPEC) = - ASE_STX_TO_SMALLINT((ASE_STX_CLASS_SIZE << ASE_STX_SPEC_INDEXABLE_BITS) | ASE_STX_SPEC_NOT_INDEXABLE); - - /* specs for class_metaclass, class_association, - * class_symbol are set later in __create_builtin_classes */ - - /* #Symbol */ - symbol_Symbol = ase_stx_new_symbol (stx, ASE_T("Symbol")); - /* #Metaclass */ - symbol_Metaclass = ase_stx_new_symbol (stx, ASE_T("Metaclass")); - /* #Association */ - symbol_Association = ase_stx_new_symbol (stx, ASE_T("Association")); - - /* Symbol setName: #Symbol */ - ASE_STX_WORD_AT(stx,stx->class_symbol,ASE_STX_CLASS_NAME) = symbol_Symbol; - /* Metaclass setName: #Metaclass */ - ASE_STX_WORD_AT(stx,stx->class_metaclass,ASE_STX_CLASS_NAME) = symbol_Metaclass; - /* Association setName: #Association */ - ASE_STX_WORD_AT(stx,stx->class_association,ASE_STX_CLASS_NAME) = symbol_Association; - - /* register class names into the system dictionary */ - ase_stx_dict_put (stx, - stx->smalltalk, symbol_Symbol, stx->class_symbol); - ase_stx_dict_put (stx, - stx->smalltalk, symbol_Metaclass, stx->class_metaclass); - ase_stx_dict_put (stx, - stx->smalltalk, symbol_Association, stx->class_association); -} - -static void __create_builtin_classes (ase_stx_t* stx) -{ - class_info_t* p; - ase_word_t class, superclass, array; - ase_stx_class_t* class_obj, * superclass_obj; - ase_word_t metaclass; - ase_stx_metaclass_t* metaclass_obj; - ase_word_t n, nfields; - - ase_assert (stx->class_array != stx->nil); - - for (p = class_info; p->name != ASE_NULL; p++) { - class = ase_stx_lookup_class(stx, p->name); - if (class == stx->nil) { - class = ase_stx_new_class (stx, p->name); - } - - ase_assert (class != stx->nil); - class_obj = (ase_stx_class_t*)ASE_STX_OBJECT(stx, class); - class_obj->superclass = (p->superclass == ASE_NULL)? - stx->nil: ase_stx_lookup_class(stx,p->superclass); - - nfields = 0; - if (p->superclass != ASE_NULL) { - ase_word_t meta; - ase_stx_metaclass_t* meta_obj; - - superclass = ase_stx_lookup_class(stx,p->superclass); - ase_assert (superclass != stx->nil); - - meta = class_obj->header.class; - meta_obj = (ase_stx_metaclass_t*)ASE_STX_OBJECT(stx,meta); - meta_obj->superclass = ASE_STX_CLASS(stx,superclass); - meta_obj->instance_class = class; - - while (superclass != stx->nil) { - superclass_obj = (ase_stx_class_t*) - ASE_STX_OBJECT(stx,superclass); - nfields += - ASE_STX_FROM_SMALLINT(superclass_obj->spec) >> - ASE_STX_SPEC_INDEXABLE_BITS; - superclass = superclass_obj->superclass; - } - - } - - if (p->instance_variables != ASE_NULL) { - nfields += __count_names (p->instance_variables); - class_obj->variables = - __new_string (stx, p->instance_variables); - } - - ase_assert (nfields <= 0 || (nfields > 0 && - (p->indexable == ASE_STX_SPEC_NOT_INDEXABLE || - p->indexable == ASE_STX_SPEC_WORD_INDEXABLE))); - - class_obj->spec = ASE_STX_TO_SMALLINT( - (nfields << ASE_STX_SPEC_INDEXABLE_BITS) | p->indexable); - } - - for (p = class_info; p->name != ASE_NULL; p++) { - class = ase_stx_lookup_class(stx, p->name); - ase_assert (class != stx->nil); - - class_obj = (ase_stx_class_t*)ASE_STX_OBJECT(stx, class); - - if (p->class_variables != ASE_NULL) { - class_obj->class_variables = - __make_classvar_dict(stx, class, p->class_variables); - } - - /* - TODO: - if (p->pool_dictionaries != ASE_NULL) { - class_obj->pool_dictionaries = - __make_pool_dictionary(stx, class, p->pool_dictionaries); - } - */ - } - - /* fill subclasses */ - for (p = class_info; p->name != ASE_NULL; p++) { - n = __count_subclasses (p->name); - array = ase_stx_new_array (stx, n); - __set_subclasses (stx, ASE_STX_DATA(stx,array), p->name); - - class = ase_stx_lookup_class(stx, p->name); - ase_assert (class != stx->nil); - class_obj = (ase_stx_class_t*)ASE_STX_OBJECT(stx, class); - class_obj->subclasses = array; - } - - /* fill subclasses for metaclasses */ - for (p = class_info; p->name != ASE_NULL; p++) { - n = __count_subclasses (p->name); - array = ase_stx_new_array (stx, n); - __set_metaclass_subclasses (stx, ASE_STX_DATA(stx,array), p->name); - - class = ase_stx_lookup_class(stx, p->name); - ase_assert (class != stx->nil); - metaclass = ASE_STX_CLASS(stx,class); - metaclass_obj = (ase_stx_metaclass_t*)ASE_STX_OBJECT(stx, metaclass); - metaclass_obj->subclasses = array; - } -} - -static ase_word_t __count_names (const ase_char_t* str) -{ - ase_word_t n = 0; - const ase_char_t* p = str; - - do { - while (*p == ASE_T(' ') || - *p == ASE_T('\t')) p++; - if (*p == ASE_T('\0')) break; - - n++; - while (*p != ASE_T(' ') && - *p != ASE_T('\t') && - *p != ASE_T('\0')) p++; - } while (1); - - return n; -} - -static void __set_names ( - ase_stx_t* stx, ase_word_t* array, const ase_char_t* str) -{ - ase_word_t n = 0; - const ase_char_t* p = str; - const ase_char_t* name; - - do { - while (*p == ASE_T(' ') || - *p == ASE_T('\t')) p++; - if (*p == ASE_T('\0')) break; - - name = p; - while (*p != ASE_T(' ') && - *p != ASE_T('\t') && - *p != ASE_T('\0')) p++; - - array[n++] = ase_stx_new_symbolx (stx, name, p - name); - } while (1); -} - -static ase_word_t __count_subclasses (const ase_char_t* str) -{ - class_info_t* p; - ase_word_t n = 0; - - for (p = class_info; p->name != ASE_NULL; p++) { - if (p->superclass == ASE_NULL) continue; - if (ase_strcmp (str, p->superclass) == 0) n++; - } - - return n; -} - -static void __set_subclasses ( - ase_stx_t* stx, ase_word_t* array, const ase_char_t* str) -{ - class_info_t* p; - ase_word_t n = 0, class; - - for (p = class_info; p->name != ASE_NULL; p++) { - if (p->superclass == ASE_NULL) continue; - if (ase_strcmp (str, p->superclass) != 0) continue; - class = ase_stx_lookup_class (stx, p->name); - ase_assert (class != stx->nil); - array[n++] = class; - } -} - -static void __set_metaclass_subclasses ( - ase_stx_t* stx, ase_word_t* array, const ase_char_t* str) -{ - class_info_t* p; - ase_word_t n = 0, class; - - for (p = class_info; p->name != ASE_NULL; p++) { - if (p->superclass == ASE_NULL) continue; - if (ase_strcmp (str, p->superclass) != 0) continue; - class = ase_stx_lookup_class (stx, p->name); - ase_assert (class != stx->nil); - array[n++] = ASE_STX_CLASS(stx,class); - } -} - -static ase_word_t __make_classvar_dict ( - ase_stx_t* stx, ase_word_t class, const ase_char_t* names) -{ - ase_word_t dict, symbol; - const ase_char_t* p = names; - const ase_char_t* name; - - dict = ase_stx_instantiate ( - stx, stx->class_system_dictionary, - ASE_NULL, ASE_NULL, __count_names(names)); - - do { - while (*p == ASE_T(' ') || - *p == ASE_T('\t')) p++; - if (*p == ASE_T('\0')) break; - - name = p; - while (*p != ASE_T(' ') && - *p != ASE_T('\t') && - *p != ASE_T('\0')) p++; - - symbol = ase_stx_new_symbolx (stx, name, p - name); - ase_stx_dict_put (stx, dict, symbol, stx->nil); - } while (1); - - return dict; -} - -static void __filein_kernel (ase_stx_t* stx) -{ - class_info_t* p; - - for (p = class_info; p->name != ASE_NULL; p++) { - /* TODO: */ - } -} - diff --git a/qse/stx/bootstrp.h b/qse/stx/bootstrp.h deleted file mode 100644 index 55891431..00000000 --- a/qse/stx/bootstrp.h +++ /dev/null @@ -1,21 +0,0 @@ -/* - * $Id: bootstrp.h 118 2008-03-03 11:21:33Z baconevi $ - */ - -#ifndef _ASE_STX_BOOTSTRP_H_ -#define _ASE_STX_BOOTSTRP_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -ase_word_t ase_stx_new_array (ase_stx_t* stx, ase_word_t size); -int ase_stx_bootstrap (ase_stx_t* stx); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/qse/stx/bytecode.c b/qse/stx/bytecode.c deleted file mode 100644 index bcf56e96..00000000 --- a/qse/stx/bytecode.c +++ /dev/null @@ -1,193 +0,0 @@ -/* - * $Id: bytecode.c 118 2008-03-03 11:21:33Z baconevi $ - */ -#include -#include -#include -#include - -static void __decode1 (ase_stx_t* stx, ase_word_t idx, void* data); -static int __decode2 (ase_stx_t* stx, - ase_stx_class_t* class_obj, ase_stx_method_t* method_obj); - -int ase_stx_decode (ase_stx_t* stx, ase_word_t class) -{ - ase_stx_class_t* class_obj; - - class_obj = (ase_stx_class_t*)ASE_STX_OBJECT(stx, class); - if (class_obj->methods == stx->nil) return 0; - -/* TODO */ - ase_stx_dict_traverse (stx, class_obj->methods, __decode1, class_obj); - return 0; -} - -#include -static void __dump_object (ase_stx_t* stx, ase_word_t obj) -{ - if (ASE_STX_IS_SMALLINT(obj)) { - ase_printf (ASE_T("%d"), ASE_STX_FROM_SMALLINT(obj)); - } - else if (ASE_STX_CLASS(stx,obj) == stx->class_character) { - ase_printf (ASE_T("$%c"), ASE_STX_WORD_AT(stx,obj,0)); - } - else if (ASE_STX_CLASS(stx,obj) == stx->class_string) { - ase_printf (ASE_T("'%s'"), ASE_STX_DATA(stx,obj)); - } - else if (ASE_STX_CLASS(stx,obj) == stx->class_symbol) { - ase_printf (ASE_T("#%s"), ASE_STX_DATA(stx,obj)); - } - else if (ASE_STX_IS_CHAR_OBJECT(stx, obj)) { - ase_printf (ASE_T("unknow char object [%s]"), ASE_STX_DATA(stx,obj)); - } - else if (ASE_STX_IS_BYTE_OBJECT(stx, obj)) { - ase_printf (ASE_T("unknown byte object"), ASE_STX_DATA(stx,obj)); - } - else if (ASE_STX_IS_WORD_OBJECT(stx, obj)) { - ase_printf (ASE_T("unknown word object"), ASE_STX_DATA(stx,obj)); - } - else { - ase_printf (ASE_T("invalid object type")); - } -} - -static void __decode1 (ase_stx_t* stx, ase_word_t idx, void* data) -{ - ase_stx_method_t* method_obj; - ase_stx_class_t* class_obj; - ase_word_t key = ASE_STX_WORD_AT(stx,idx,ASE_STX_ASSOCIATION_KEY); - ase_word_t value = ASE_STX_WORD_AT(stx,idx,ASE_STX_ASSOCIATION_VALUE); - ase_word_t* literals; - ase_word_t literal_count, i; - - ase_word_t method_class; - ase_stx_class_t* method_class_obj; - - class_obj = (ase_stx_class_t*)data; - - ase_printf (ASE_T("* Method: %s\n"), ASE_STX_DATA(stx, key)); - method_obj = (ase_stx_method_t*)ASE_STX_OBJECT(stx, value); - - literals = method_obj->literals; - /* - literal_count = ASE_STX_SIZE(stx, value) - - (ASE_STX_FROM_SMALLINT(class_obj->spec) >> ASE_STX_SPEC_INDEXABLE_BITS); - */ - method_class = ASE_STX_CLASS(stx,value); - method_class_obj = ASE_STX_OBJECT(stx, method_class); - literal_count = ASE_STX_SIZE(stx,value) - - (ASE_STX_FROM_SMALLINT(method_class_obj->spec) >> ASE_STX_SPEC_INDEXABLE_BITS); - - ase_printf (ASE_T("* Literal Count: %d, Temporary Count: %d, Argument Count: %d\n"), - literal_count, - ASE_STX_FROM_SMALLINT(method_obj->tmpcount), - ASE_STX_FROM_SMALLINT(method_obj->argcount)); - for (i = 0; i < literal_count; i++) { - ase_printf (ASE_T("%d. ["), i); - __dump_object (stx, literals[i]); - ase_printf (ASE_T("]\n")); - } - __decode2 (stx, data, method_obj); -} - -static int __decode2 (ase_stx_t* stx, - ase_stx_class_t* class_obj, ase_stx_method_t* method_obj) -{ - ase_stx_byte_object_t* bytecodes; - ase_word_t bytecode_size, pc = 0; - int code, next, next2; - - static const ase_char_t* stack_opcode_names[] = - { - ASE_T("push_receiver_variable"), - ASE_T("push_temporary_location"), - ASE_T("push_literal_constant"), - ASE_T("push_literal_variable"), - ASE_T("store_receiver_variable"), - ASE_T("store_temporary_location") - }; - - static const ase_char_t* send_opcode_names[] = - { - ASE_T("send_to_self"), - ASE_T("send_to_super") - }; - - static const ase_char_t* stack_special_opcode_names[] = - { - ASE_T("pop_stack_top"), - ASE_T("duplicate_pop_stack_top"), - ASE_T("push_active_context"), - ASE_T("push_nil"), - ASE_T("push_true"), - ASE_T("push_false"), - ASE_T("push_receiver") - }; - - static const ase_char_t* return_opcode_names[] = - { - ASE_T("return_receiver"), - ASE_T("return_true"), - ASE_T("return_false"), - ASE_T("return_nil"), - ASE_T("return_from_message"), - ASE_T("return_from_block") - }; - - bytecodes = ASE_STX_BYTE_OBJECT(stx, method_obj->bytecodes); - bytecode_size = ASE_STX_SIZE(stx, method_obj->bytecodes); - - while (pc < bytecode_size) { - code = bytecodes->data[pc++]; - - if (code >= 0x00 && code <= 0x5F) { - /* stack */ - ase_printf (ASE_T("%s %d\n"), - stack_opcode_names[code >> 4], code & 0x0F); - } - else if (code >= 0x60 && code <= 0x65) { - /* stack extended */ - next = bytecodes->data[pc++]; - ase_printf (ASE_T("%s %d\n"), - stack_opcode_names[code & 0x0F], next); - } - else if (code >= 0x67 && code <= 0x6D) { - /* stack special */ - ase_printf (ASE_T("%s\n"), - stack_special_opcode_names[code - 0x67]); - } - - else if (code >= 0x70 && code <= 0x71 ) { - /* send message */ - next = bytecodes->data[pc++]; - ase_printf (ASE_T("%s nargs(%d) selector(%d)\n"), - send_opcode_names[code - 0x70], next >> 5, next & 0x1F); - } - else if (code >= 0x72 && code <= 0x73 ) { - /* send message extended */ - next = bytecodes->data[pc++]; - next2 = bytecodes->data[pc++]; - ase_printf (ASE_T("%s %d %d\n"), - send_opcode_names[code - 0x72], next, next2); - - } - else if (code >= 0x78 && code <= 0x7D) { - ase_printf (ASE_T("%s\n"), - return_opcode_names[code - 0x78]); - } - else if (code >= 0x80 && code <= 0x8F) { - // jump - } - else if (code >= 0xF0 && code <= 0xFF) { - // primitive - next = bytecodes->data[pc++]; - ase_printf (ASE_T("do_primitive %d\n"), ((code & 0x0F) << 8) | next); - - } - else { - ase_printf (ASE_T("unknown byte code 0x%x\n"), code); - } - } - - return 0; -} diff --git a/qse/stx/class.c b/qse/stx/class.c deleted file mode 100644 index 790a8356..00000000 --- a/qse/stx/class.c +++ /dev/null @@ -1,168 +0,0 @@ -/* - * $Id: class.c 118 2008-03-03 11:21:33Z baconevi $ - */ - -#include -#include -#include -#include -#include - -ase_word_t ase_stx_new_class (ase_stx_t* stx, const ase_char_t* name) -{ - ase_word_t meta, class; - ase_word_t class_name; - - meta = ase_stx_alloc_word_object ( - stx, ASE_NULL, ASE_STX_METACLASS_SIZE, ASE_NULL, 0); - ASE_STX_CLASS(stx,meta) = stx->class_metaclass; - /* the spec of the metaclass must be the spec of its - * instance. so the ASE_STX_CLASS_SIZE is set */ - ASE_STX_WORD_AT(stx,meta,ASE_STX_METACLASS_SPEC) = - ASE_STX_TO_SMALLINT((ASE_STX_CLASS_SIZE << ASE_STX_SPEC_INDEXABLE_BITS) | ASE_STX_SPEC_NOT_INDEXABLE); - - /* the spec of the class is set later in __create_builtin_classes */ - class = ase_stx_alloc_word_object ( - stx, ASE_NULL, ASE_STX_CLASS_SIZE, ASE_NULL, 0); - ASE_STX_CLASS(stx,class) = meta; - class_name = ase_stx_new_symbol (stx, name); - ASE_STX_WORD_AT(stx,class,ASE_STX_CLASS_NAME) = class_name; - - ase_stx_dict_put (stx, stx->smalltalk, class_name, class); - return class; -} - -ase_word_t ase_stx_lookup_class (ase_stx_t* stx, const ase_char_t* name) -{ - ase_word_t assoc, meta, value; - - assoc = ase_stx_dict_lookup (stx, stx->smalltalk, name); - if (assoc == stx->nil) { - return stx->nil; - } - - value = ASE_STX_WORD_AT(stx,assoc,ASE_STX_ASSOCIATION_VALUE); - meta = ASE_STX_CLASS(stx,value); - if (ASE_STX_CLASS(stx,meta) != stx->class_metaclass) return stx->nil; - - return value; -} - -int ase_stx_get_instance_variable_index ( - ase_stx_t* stx, ase_word_t class_index, - const ase_char_t* name, ase_word_t* index) -{ - ase_word_t index_super = 0; - ase_stx_class_t* class_obj; - ase_stx_char_object_t* string; - - class_obj = (ase_stx_class_t*)ASE_STX_OBJECT(stx, class_index); - ase_assert (class_obj != ASE_NULL); - - if (class_obj->superclass != stx->nil) { - if (ase_stx_get_instance_variable_index ( - stx, class_obj->superclass, name, &index_super) == 0) { - *index = index_super; - return 0; - } - } - - if (class_obj->header.class == stx->class_metaclass) { - /* metaclass */ - /* TODO: can a metaclas have instance variables? */ - *index = index_super; - } - else { - if (class_obj->variables == stx->nil) *index = 0; - else { - string = ASE_STX_CHAR_OBJECT(stx, class_obj->variables); - if (ase_stx_strword(string->data, name, index) != ASE_NULL) { - *index += index_super; - return 0; - } - } - - *index += index_super; - } - - return -1; -} - -ase_word_t ase_stx_lookup_class_variable ( - ase_stx_t* stx, ase_word_t class_index, const ase_char_t* name) -{ - ase_stx_class_t* class_obj; - - class_obj = (ase_stx_class_t*)ASE_STX_OBJECT(stx, class_index); - ase_assert (class_obj != ASE_NULL); - - if (class_obj->superclass != stx->nil) { - ase_word_t tmp; - tmp = ase_stx_lookup_class_variable ( - stx, class_obj->superclass, name); - if (tmp != stx->nil) return tmp; - } - - /* TODO: can a metaclas have class variables? */ - if (class_obj->header.class != stx->class_metaclass && - class_obj->class_variables != stx->nil) { - if (ase_stx_dict_lookup(stx, - class_obj->class_variables,name) != stx->nil) return class_index; - } - - return stx->nil; -} - -ase_word_t ase_stx_lookup_method (ase_stx_t* stx, - ase_word_t class_index, const ase_char_t* name, ase_bool_t from_super) -{ - ase_stx_class_t* class_obj; - - class_obj = (ase_stx_class_t*)ASE_STX_OBJECT(stx, class_index); - ase_assert (class_obj != ASE_NULL); - -#if 0 - if (class_obj->header.class != stx->class_metaclass && - class_obj->methods != stx->nil) { - ase_word_t assoc; - assoc = ase_stx_dict_lookup(stx, class_obj->methods, name); - if (assoc != stx->nil) { - ase_assert (ASE_STX_CLASS(stx,assoc) == stx->class_association); - return ASE_STX_WORD_AT(stx, assoc, ASE_STX_ASSOCIATION_VALUE); - } - } - - if (class_obj->superclass != stx->nil) { - ase_word_t tmp; - tmp = ase_stx_lookup_method ( - stx, class_obj->superclass, name); - if (tmp != stx->nil) return tmp; - } -#endif - - while (class_index != stx->nil) { - class_obj = (ase_stx_class_t*)ASE_STX_OBJECT(stx, class_index); - - ase_assert (class_obj != ASE_NULL); - ase_assert ( - class_obj->header.class == stx->class_metaclass || - ASE_STX_CLASS(stx,class_obj->header.class) == stx->class_metaclass); - - if (from_super) { - from_super = ase_false; - } - else if (class_obj->methods != stx->nil) { - ase_word_t assoc; - assoc = ase_stx_dict_lookup(stx, class_obj->methods, name); - if (assoc != stx->nil) { - ase_assert (ASE_STX_CLASS(stx,assoc) == stx->class_association); - return ASE_STX_WORD_AT(stx, assoc, ASE_STX_ASSOCIATION_VALUE); - } - } - - class_index = class_obj->superclass; - } - - return stx->nil; -} - diff --git a/qse/stx/class.h b/qse/stx/class.h deleted file mode 100644 index 50b1d682..00000000 --- a/qse/stx/class.h +++ /dev/null @@ -1,81 +0,0 @@ -/* - * $Id: class.h 118 2008-03-03 11:21:33Z baconevi $ - */ - -#ifndef _ASE_STX_CLASS_H_ -#define _ASE_STX_CLASS_H_ - -#include - -/* definitions for common objects */ -#define ASE_STX_CLASS_SIZE 8 -#define ASE_STX_CLASS_SPEC 0 -#define ASE_STX_CLASS_METHODS 1 -#define ASE_STX_CLASS_SUPERCLASS 2 -#define ASE_STX_CLASS_SUBCLASSES 3 -#define ASE_STX_CLASS_NAME 4 -#define ASE_STX_CLASS_VARIABLES 5 -#define ASE_STX_CLASS_CLASS_VARIABLES 6 -#define ASE_STX_CLASS_POOL_DICTIONARIES 7 - -#define ASE_STX_METACLASS_SIZE 5 -#define ASE_STX_METACLASS_SPEC 0 -#define ASE_STX_METACLASS_METHODS 1 -#define ASE_STX_METACLASS_SUPERCLASS 2 -#define ASE_STX_METACLASS_SUBCLASSES 3 -#define ASE_STX_METACLASS_INSTANCE_CLASS 4 - -#define ASE_STX_SPEC_INDEXABLE_BITS 2 -#define ASE_STX_SPEC_INDEXABLE_MASK 3 -#define ASE_STX_SPEC_NOT_INDEXABLE 0 -#define ASE_STX_SPEC_WORD_INDEXABLE 1 -#define ASE_STX_SPEC_BYTE_INDEXABLE 2 -#define ASE_STX_SPEC_CHAR_INDEXABLE 3 - -struct ase_stx_class_t -{ - ase_stx_objhdr_t header; - ase_word_t spec; /* indexable: 2, nfields: the rest */ - ase_word_t methods; - ase_word_t superclass; - ase_word_t subclasses; - ase_word_t name; - ase_word_t variables; - ase_word_t class_variables; - ase_word_t pool_dictonaries; -}; - -struct ase_stx_metaclass_t -{ - ase_stx_objhdr_t header; - ase_word_t spec; - ase_word_t methods; - ase_word_t superclass; - ase_word_t subclasses; - ase_word_t instance_class; -}; - -typedef struct ase_stx_class_t ase_stx_class_t; -typedef struct ase_stx_metaclass_t ase_stx_metaclass_t; - -#ifdef __cplusplus -extern "C" { -#endif - -ase_word_t ase_stx_new_class (ase_stx_t* stx, const ase_char_t* name); -ase_word_t ase_stx_lookup_class (ase_stx_t* stx, const ase_char_t* name); - -int ase_stx_get_instance_variable_index ( - ase_stx_t* stx, ase_word_t class_index, - const ase_char_t* name, ase_word_t* index); - -ase_word_t ase_stx_lookup_class_variable ( - ase_stx_t* stx, ase_word_t class_index, const ase_char_t* name); -ase_word_t ase_stx_lookup_method (ase_stx_t* stx, - ase_word_t class_index, const ase_char_t* name, ase_bool_t from_super); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/qse/stx/context.c b/qse/stx/context.c deleted file mode 100644 index a6ad0d8d..00000000 --- a/qse/stx/context.c +++ /dev/null @@ -1,75 +0,0 @@ -/* - * $Id: context.c 118 2008-03-03 11:21:33Z baconevi $ - */ - -#include -#include -#include -#include - -ase_word_t ase_stx_new_context (ase_stx_t* stx, - ase_word_t method, ase_word_t args, ase_word_t temp) -{ - ase_word_t context; - ase_stx_context_t* obj; - - context = ase_stx_alloc_word_object( - stx, ASE_NULL, ASE_STX_CONTEXT_SIZE, ASE_NULL, 0); - obj = (ase_stx_context_t*)ASE_STX_OBJECT(stx,context); - obj->header.class = ase_stx_lookup_class(stx,ASE_T("Context")); - obj->ip = ASE_STX_TO_SMALLINT(0); - obj->method = method; - obj->arguments = args; - obj->temporaries = temp; - - return context; -} - -static ase_byte_t __fetch_byte ( - ase_stx_t* stx, ase_stx_context_t* context_obj) -{ - ase_word_t ip, method; - - ase_assert (ASE_STX_IS_SMALLINT(context_obj->ip)); - ip = ASE_STX_FROM_SMALLINT(context_obj->ip); - method = context_obj->method; - - /* increment instruction pointer */ - context_obj->ip = ASE_STX_TO_SMALLINT(ip + 1); - - ase_assert (ASE_STX_TYPE(stx,method) == ASE_STX_BYTE_INDEXED); - return ASE_STX_BYTE_AT(stx,method,ip); -} - -int ase_stx_run_context (ase_stx_t* stx, ase_word_t context) -{ - ase_byte_t byte, operand; - ase_stx_context_t* context_obj; - - context_obj = (ase_stx_context_t*)ASE_STX_OBJECT(stx,context); - - while (!stx->__wantabort) { - /* check_process_switch (); // hopefully */ - byte = __fetch_byte (stx, context_obj); - -#ifdef _DOS -printf (ASE_T("code: %x\n"), byte); -#else -ase_printf (ASE_T("code: %x\n"), byte); -#endif - - switch (byte) { - case PUSH_OBJECT: - operand = __fetch_byte (stx, context_obj); - break; - case SEND_UNARY_MESSAGE: - operand = __fetch_byte (stx, context_obj); - break; - case HALT: - goto exit_run_context; - } - } - -exit_run_context: - return 0; -} diff --git a/qse/stx/context.h b/qse/stx/context.h deleted file mode 100644 index 73589218..00000000 --- a/qse/stx/context.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * $Id: context.h 118 2008-03-03 11:21:33Z baconevi $ - */ - -#ifndef _ASE_STX_CONTEXT_H_ -#define _ASE_STX_CONTEXT_H_ - -#include - -#define PUSH_OBJECT 0xA0 -#define SEND_UNARY_MESSAGE 0xB0 -#define HALT 0xFF - -#define ASE_STX_CONTEXT_SIZE 4 -#define ASE_STX_CONTEXT_IP 0 -#define ASE_STX_CONTEXT_METHOD 1 -#define ASE_STX_CONTEXT_ARGUMENTS 2 -#define ASE_STX_CONTEXT_TEMPORARIES 3 - -struct ase_stx_context_t -{ - ase_stx_objhdr_t header; - ase_word_t ip; - ase_word_t method; - ase_word_t arguments; - ase_word_t temporaries; -}; - -typedef struct ase_stx_context_t ase_stx_context_t; - -#ifdef __cplusplus -extern "C" { -#endif - -ase_word_t ase_stx_new_context (ase_stx_t* stx, - ase_word_t method, ase_word_t args, ase_word_t temp); -int ase_stx_run_context (ase_stx_t* stx, ase_word_t context); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/qse/stx/dict.c b/qse/stx/dict.c deleted file mode 100644 index 4f52a091..00000000 --- a/qse/stx/dict.c +++ /dev/null @@ -1,190 +0,0 @@ -/* - * $Id: dict.c 118 2008-03-03 11:21:33Z baconevi $ - */ - -#include -#include -#include - -/* NOTE: - * The code here implements SystemDictionary whose key is always a symbol. - * Dictionary, on the contrary, can accept any object as a key. - */ - -ase_word_t __new_association ( - ase_stx_t* stx, ase_word_t key, ase_word_t value) -{ - ase_word_t x; -#ifdef __GNUC__ - ase_word_t data[2] = { key, value }; -#else - ase_word_t data[2]; - data[0] = key; - data[1] = value; -#endif - x = ase_stx_alloc_word_object ( - stx, data, ASE_STX_ASSOCIATION_SIZE, ASE_NULL, 0); - ASE_STX_CLASS(stx,x) = stx->class_association; - return x; -} - -static ase_word_t __dict_find_slot ( - ase_stx_t* stx, ase_word_t dict, ase_word_t key) -{ - ase_word_t size, hash, index, assoc, symbol; - ase_stx_word_object_t* dict_obj; - - ase_assert (!ASE_STX_IS_SMALLINT(dict) && - ASE_STX_IS_WORD_OBJECT(stx, dict)); - ase_assert (dict == stx->smalltalk || - ase_stx_classof(stx,dict) == stx->class_system_dictionary); - ase_assert (ase_stx_classof(stx,key) == stx->class_symbol); - - size = ASE_STX_SIZE(stx,dict); - hash = ase_stx_hash_object(stx, key); - - /* consider tally, the only instance variable of a system dictionary */ - index = hash % (size - 1) + 1; - - dict_obj = ASE_STX_WORD_OBJECT(stx,dict); - - while (1) { - assoc = dict_obj->data[index]; - if (assoc == stx->nil) break; - - symbol = ASE_STX_WORD_AT(stx,assoc,ASE_STX_ASSOCIATION_KEY); - ase_assert (ase_stx_classof(stx,symbol) == stx->class_symbol); - - /* NOTE: - * shallow comparison is enough for identity check - * because a symbol can just be a key of a system dictionary - */ - if (ase_strxncmp( - ASE_STX_DATA(stx,key), ASE_STX_SIZE(stx,key), - ASE_STX_DATA(stx,symbol), ASE_STX_SIZE(stx,symbol)) == 0) break; - - /* consider tally here too */ - index = index % (size - 1) + 1; - } - - return index; -} - -static void __grow_dict (ase_stx_t* stx, ase_word_t dict) -{ - ase_word_t new, size, index, assoc; - - /* WARNING: - * if this assertion fails, adjust the initial size of the - * system dictionary. i don't want this function to be called - * during the bootstrapping. - */ - ase_assert (stx->class_system_dictionary != stx->nil); - ase_assert (ase_stx_classof(stx,dict) == stx->class_system_dictionary); - - size = ASE_STX_SIZE(stx,dict); - new = ase_stx_instantiate (stx, - ASE_STX_CLASS(stx,dict), ASE_NULL, ASE_NULL, (size - 1) * 2); - ASE_STX_WORD_AT(stx,new,0) = ASE_STX_TO_SMALLINT(0); - - for (index = 1; index < size; index++) { - assoc = ASE_STX_WORD_AT(stx,dict,index); - if (assoc == stx->nil) continue; - - ase_stx_dict_put (stx, new, - ASE_STX_WORD_AT(stx,assoc,ASE_STX_ASSOCIATION_KEY), - ASE_STX_WORD_AT(stx,assoc,ASE_STX_ASSOCIATION_VALUE)); - } - - /* TODO: explore if dict can be immediately destroyed. */ - - ase_assert (ase_sizeof(ase_stx_object_t*) == ase_sizeof(ase_uint_t)); - ASE_SWAP (ASE_STX_OBJECT(stx,dict), - ASE_STX_OBJECT(stx,new), - ase_stx_object_t*, ase_uint_t); -} - -ase_word_t ase_stx_dict_lookup ( - ase_stx_t* stx, ase_word_t dict, const ase_char_t* key) -{ - ase_word_t size, hash, index, assoc, symbol; - ase_stx_word_object_t* dict_obj; - - ase_assert (!ASE_STX_IS_SMALLINT(dict) && - ASE_STX_IS_WORD_OBJECT(stx, dict)); - ase_assert (dict == stx->smalltalk || - ase_stx_classof(stx,dict) == stx->class_system_dictionary); - - size = ASE_STX_SIZE(stx,dict); - hash = ase_stx_hash(key, ase_strlen(key) * ase_sizeof(ase_char_t)); - - /* consider tally, the only instance variable of a system dictionary */ - index = hash % (size - 1) + 1; - - dict_obj = ASE_STX_WORD_OBJECT(stx,dict); - - while (1) { - assoc = dict_obj->data[index]; - if (assoc == stx->nil) break; - - symbol = ASE_STX_WORD_AT(stx,assoc,ASE_STX_ASSOCIATION_KEY); - ase_assert (ase_stx_classof(stx,symbol) == stx->class_symbol); - - if (ase_strxcmp (ASE_STX_DATA(stx,symbol), - ASE_STX_SIZE(stx,symbol), key) == 0) break; - - /* consider tally here too */ - index = index % (size - 1) + 1; - } - - return ASE_STX_WORD_AT(stx,dict,index); -} - -ase_word_t ase_stx_dict_get (ase_stx_t* stx, ase_word_t dict, ase_word_t key) -{ - return ASE_STX_WORD_AT(stx,dict,__dict_find_slot(stx, dict, key)); -} - -ase_word_t ase_stx_dict_put ( - ase_stx_t* stx, ase_word_t dict, ase_word_t key, ase_word_t value) -{ - ase_word_t slot, capa, tally, assoc; - - /* the dictionary must have at least one slot excluding tally */ - ase_assert (ASE_STX_SIZE(stx,dict) > 1); - - capa = ASE_STX_SIZE(stx,dict) - 1; - tally = ASE_STX_FROM_SMALLINT(ASE_STX_WORD_AT(stx,dict,0)); - if (capa <= tally + 1) { - __grow_dict (stx, dict); - /* refresh tally */ - tally = ASE_STX_FROM_SMALLINT(ASE_STX_WORD_AT(stx,dict,0)); - } - - slot = __dict_find_slot (stx, dict, key); - - assoc = ASE_STX_WORD_AT(stx,dict,slot); - if (assoc == stx->nil) { - ASE_STX_WORD_AT(stx,dict,slot) = - __new_association (stx, key, value); - ASE_STX_WORD_AT(stx,dict,0) = ASE_STX_TO_SMALLINT(tally + 1); - } - else ASE_STX_WORD_AT(stx,assoc,ASE_STX_ASSOCIATION_VALUE) = value; - - return ASE_STX_WORD_AT(stx,dict,slot); -} - -void ase_stx_dict_traverse ( - ase_stx_t* stx, ase_word_t dict, - void (*func) (ase_stx_t*,ase_word_t,void*), void* data) -{ - ase_word_t index, assoc; - ase_word_t size = ASE_STX_SIZE(stx,dict); - - for (index = 1; index < size; index++) { - assoc = ASE_STX_WORD_AT(stx,dict,index); - if (assoc == stx->nil) continue; - func (stx, assoc, data); - } -} - diff --git a/qse/stx/dict.h b/qse/stx/dict.h deleted file mode 100644 index c30b708d..00000000 --- a/qse/stx/dict.h +++ /dev/null @@ -1,42 +0,0 @@ -/* - * $Id: dict.h 118 2008-03-03 11:21:33Z baconevi $ - */ - -#ifndef _ASE_STX_DICT_H_ -#define _ASE_STX_DICT_H_ - -#include - -#define ASE_STX_ASSOCIATION_SIZE 2 -#define ASE_STX_ASSOCIATION_KEY 0 -#define ASE_STX_ASSOCIATION_VALUE 1 - -struct ase_stx_association_t -{ - ase_stx_objhdr_t header; - ase_word_t key; - ase_word_t value; -}; - -typedef struct ase_stx_association_t ase_stx_association_t; - -#ifdef __cplusplus -extern "C" -#endif - -ase_word_t ase_stx_dict_lookup ( - ase_stx_t* stx, ase_word_t dict, const ase_char_t* key); -ase_word_t ase_stx_dict_get ( - ase_stx_t* stx, ase_word_t dict, ase_word_t key); -ase_word_t ase_stx_dict_put ( - ase_stx_t* stx, ase_word_t dict, ase_word_t key, ase_word_t value); -void ase_stx_dict_traverse ( - ase_stx_t* stx, ase_word_t dict, - void (*func) (ase_stx_t*,ase_word_t,void*), void* data); - - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/qse/stx/makefile.bcc b/qse/stx/makefile.bcc deleted file mode 100644 index a23bf9cf..00000000 --- a/qse/stx/makefile.bcc +++ /dev/null @@ -1,21 +0,0 @@ -SRCS = stx.c memory.c object.c symbol.c class.c dict.c misc.c array.c \ - name.c token.c parser.c bootstrp.c bytecode.c interp.c -OBJS = $(SRCS:.c=.obj) -OUT = xpstx.lib - -CC = bcc32 -CFLAGS = -O2 -WM -w -w-inl -w-sig -w-spa -w-hid -RT- -I../.. - -all: $(OBJS) - tlib $(OUT) @&&! -+-$(**: = &^ -+-) -! - -clean: - del $(OBJS) $(OUT) *.obj - -.SUFFIXES: .c .obj -.c.obj: - $(CC) $(CFLAGS) -c $< - diff --git a/qse/stx/makefile.cl b/qse/stx/makefile.cl deleted file mode 100644 index 0ee1f8fd..00000000 --- a/qse/stx/makefile.cl +++ /dev/null @@ -1,23 +0,0 @@ -SRCS = \ - stx.c memory.c object.c symbol.c class.c array.c \ - dict.c misc.c name.c token.c parser.c bootstrp.c \ - bytecode.c interp.c -OBJS = $(SRCS:.c=.obj) -OUT = xpstx.lib - -CC = cl -CFLAGS = /nologo /MT /GX /W3 /GR- -I../.. - -all: $(OBJS) - link -lib @<< -/nologo /out:$(OUT) $(OBJS) -<< - - -clean: - del $(OBJS) $(OUT) *.obj - -.SUFFIXES: .c .obj -.c.obj: - $(CC) $(CFLAGS) /c $< - diff --git a/qse/stx/memory.c b/qse/stx/memory.c deleted file mode 100644 index 568711c7..00000000 --- a/qse/stx/memory.c +++ /dev/null @@ -1,98 +0,0 @@ -/* - * $Id: memory.c 118 2008-03-03 11:21:33Z baconevi $ - */ - -#include -#include - -ase_stx_memory_t* ase_stx_memory_open ( - ase_stx_memory_t* mem, ase_word_t capacity) -{ - ase_stx_object_t** slots; - ase_word_t n; - - ase_assert (capacity > 0); - if (mem == ASE_NULL) { - mem = (ase_stx_memory_t*)ase_malloc(ase_sizeof(ase_stx_memory_t)); - if (mem == ASE_NULL) return ASE_NULL; - mem->__dynamic = ase_true; - } - else mem->__dynamic = ase_false; - - slots = (ase_stx_object_t**)ase_malloc ( - capacity * ase_sizeof(ase_stx_object_t*)); - if (slots == ASE_NULL) { - if (mem->__dynamic) ase_free (mem); - mem = ASE_NULL; - } - - mem->capacity = capacity; - mem->slots = slots; - - /* weave the free slot list */ - mem->free = &slots[0]; - for (n = 0; n < capacity - 1; n++) { - mem->slots[n] = (ase_stx_object_t*)&mem->slots[n + 1]; - } - mem->slots[n] = ASE_NULL; - - return mem; -} - -void ase_stx_memory_close (ase_stx_memory_t* mem) -{ - /* TODO: free all linked objects... */ - - ase_free (mem->slots); - mem->capacity = 0; - mem->slots = ASE_NULL; - mem->free = ASE_NULL; - if (mem->__dynamic) ase_free (mem); -} - -void ase_stx_memory_gc (ase_stx_memory_t* mem) -{ - /* TODO: implement this function */ -} - -ase_word_t ase_stx_memory_alloc (ase_stx_memory_t* mem, ase_word_t nbytes) -{ - ase_stx_object_t** slot; - ase_stx_object_t* object; - - /* find the free object slot */ - if (mem->free == ASE_NULL) { - ase_stx_memory_gc (mem); - if (mem->free == ASE_NULL) return mem->capacity;; - } - - object = (ase_stx_object_t*)ase_malloc (nbytes); - if (object == ASE_NULL) { - ase_stx_memory_gc (mem); - object = (ase_stx_object_t*)ase_malloc (nbytes); - /*if (object == ASE_NULL) return mem->capacity;*/ -if (object == ASE_NULL) { -ase_assert (ASE_T("MEMORY ALLOCATION ERROR\n") == ASE_NULL); -exit (1); -} - } - - slot = mem->free; - mem->free = (ase_stx_object_t**)*slot; - *slot = object; - - return (ase_word_t)(slot - mem->slots); -} - -void ase_stx_memory_dealloc (ase_stx_memory_t* mem, ase_word_t object_index) -{ - /* - * THIS IS PRIMITIVE LOW-LEVEL DEALLOC. THIS WILL NOT - * DEALLOCATE MEMORY ALLOCATED FOR ITS INSTANCE VARIABLES. - */ - - ase_free (mem->slots[object_index]); - mem->slots[object_index] = (ase_stx_object_t*)mem->free; - mem->free = &mem->slots[object_index]; -} - diff --git a/qse/stx/memory.h b/qse/stx/memory.h deleted file mode 100644 index b6d25612..00000000 --- a/qse/stx/memory.h +++ /dev/null @@ -1,26 +0,0 @@ -/* - * $Id: memory.h 118 2008-03-03 11:21:33Z baconevi $ - */ - -#ifndef _ASE_STX_MEMORY_H_ -#define _ASE_STX_MEMORY_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -ase_stx_memory_t* ase_stx_memory_open ( - ase_stx_memory_t* mem, ase_word_t capacity); -void ase_stx_memory_close (ase_stx_memory_t* mem); - -void ase_stx_memory_gc (ase_stx_memory_t* mem); -ase_word_t ase_stx_memory_alloc (ase_stx_memory_t* mem, ase_word_t size); -void ase_stx_memory_dealloc (ase_stx_memory_t* mem, ase_word_t object_index); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/qse/stx/misc.c b/qse/stx/misc.c deleted file mode 100644 index ab8cda3c..00000000 --- a/qse/stx/misc.c +++ /dev/null @@ -1,70 +0,0 @@ -/* - * $Id: misc.c 118 2008-03-03 11:21:33Z baconevi $ - */ - -#include - -ase_word_t ase_stx_hash (const void* data, ase_word_t len) -{ - ase_word_t h = 0; - ase_byte_t* bp, * be; - - bp = (ase_byte_t*)data; be = bp + len; - while (bp < be) h = h * 31 + *bp++; - - return h; -} - -ase_word_t ase_stx_strhash (const ase_char_t* str) -{ - ase_word_t h = 0; - ase_byte_t* bp, * be; - const ase_char_t* p = str; - - while (*p != ASE_T('\0')) { - bp = (ase_byte_t*)p; - be = bp + ase_sizeof(ase_char_t); - while (bp < be) h = h * 31 + *bp++; - p++; - } - - return h; -} - -ase_word_t ase_stx_strxhash (const ase_char_t* str, ase_word_t len) -{ - ase_word_t h = 0; - ase_byte_t* bp, * be; - const ase_char_t* p = str, * end = str + len; - - while (p < end) { - bp = (ase_byte_t*)p; - be = bp + ase_sizeof(ase_char_t); - while (bp < be) h = h * 31 + *bp++; - p++; - } - - return h; -} - -ase_char_t* ase_stx_strword ( - const ase_char_t* str, const ase_char_t* word, ase_word_t* word_index) -{ - ase_char_t* p = (ase_char_t*)str; - ase_char_t* tok; - ase_size_t len; - ase_word_t index = 0; - - while (p != ASE_NULL) { - p = ase_strtok (p, ASE_T(""), &tok, &len); - if (ase_strxcmp (tok, len, word) == 0) { - *word_index = index; - return tok; - } - - index++; - } - - *word_index = index; - return ASE_NULL; -} diff --git a/qse/stx/misc.h b/qse/stx/misc.h deleted file mode 100644 index 412f647f..00000000 --- a/qse/stx/misc.h +++ /dev/null @@ -1,63 +0,0 @@ -/* - * $Id: misc.h 118 2008-03-03 11:21:33Z baconevi $ - */ - -#ifndef _ASE_STX_MISC_H_ -#define _ASE_STX_MISC_H_ - -#include - -/* TODO: remove this header later */ -#include - -#ifdef _DOS - #include - #include - #include - #include - #include - #include - - #define ase_assert assert - #define ase_malloc malloc - #define ase_realloc realloc - #define ase_free free - #define ase_va_list va_list - #define ase_va_start va_start - #define ase_va_end va_end - #define ase_va_arg va_arg - #define ase_isspace isspace - #define ase_isdigit isdigit - #define ase_isalpha isalpha - #define ase_isalnum isalnum -#else - #include - #include - #include - #include - #include - #include -#endif - -#if defined(__BORLANDC__) || defined(_MSC_VER) - #define INLINE -#else - #define INLINE inline -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -ase_word_t ase_stx_hash (const void* data, ase_word_t len); -ase_word_t ase_stx_strhash (const ase_char_t* str); -ase_word_t ase_stx_strxhash (const ase_char_t* str, ase_word_t len); - -ase_char_t* ase_stx_strword ( - const ase_char_t* str, const ase_char_t* word, ase_word_t* word_index); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/qse/stx/name.c b/qse/stx/name.c deleted file mode 100644 index 50879f2e..00000000 --- a/qse/stx/name.c +++ /dev/null @@ -1,146 +0,0 @@ -/* - * $Id: name.c 118 2008-03-03 11:21:33Z baconevi $ - */ - -#include -#include - -ase_stx_name_t* ase_stx_name_open ( - ase_stx_name_t* name, ase_word_t capacity) -{ - if (capacity == 0) - capacity = ase_countof(name->static_buffer) - 1; - - if (name == ASE_NULL) { - name = (ase_stx_name_t*) - ase_malloc (ase_sizeof(ase_stx_name_t)); - if (name == ASE_NULL) return ASE_NULL; - name->__dynamic = ase_true; - } - else name->__dynamic = ase_false; - - if (capacity < ase_countof(name->static_buffer)) { - name->buffer = name->static_buffer; - } - else { - name->buffer = (ase_char_t*) - ase_malloc ((capacity + 1) * ase_sizeof(ase_char_t)); - if (name->buffer == ASE_NULL) { - if (name->__dynamic) ase_free (name); - return ASE_NULL; - } - } - - name->size = 0; - name->capacity = capacity; - name->buffer[0] = ASE_T('\0'); - - return name; -} - -void ase_stx_name_close (ase_stx_name_t* name) -{ - if (name->capacity >= ase_countof(name->static_buffer)) { - ase_assert (name->buffer != name->static_buffer); - ase_free (name->buffer); - } - if (name->__dynamic) ase_free (name); -} - -int ase_stx_name_addc (ase_stx_name_t* name, ase_cint_t c) -{ - if (name->size >= name->capacity) { - /* double the capacity. */ - ase_size_t new_capacity = name->capacity * 2; - - if (new_capacity >= ase_countof(name->static_buffer)) { - ase_char_t* space; - - if (name->capacity < ase_countof(name->static_buffer)) { - space = (ase_char_t*)ase_malloc ( - (new_capacity + 1) * ase_sizeof(ase_char_t)); - if (space == ASE_NULL) return -1; - - /* don't need to copy up to the terminating null */ - ase_memcpy (space, name->buffer, - name->capacity * ase_sizeof(ase_char_t)); - } - else { - space = (ase_char_t*)ase_realloc (name->buffer, - (new_capacity + 1) * ase_sizeof(ase_char_t)); - if (space == ASE_NULL) return -1; - } - - name->buffer = space; - } - - name->capacity = new_capacity; - } - - name->buffer[name->size++] = c; - name->buffer[name->size] = ASE_T('\0'); - return 0; -} - -int ase_stx_name_adds (ase_stx_name_t* name, const ase_char_t* s) -{ - while (*s != ASE_T('\0')) { - if (ase_stx_name_addc(name, *s) == -1) return -1; - s++; - } - - return 0; -} - -void ase_stx_name_clear (ase_stx_name_t* name) -{ - name->size = 0; - name->buffer[0] = ASE_T('\0'); -} - -ase_char_t* ase_stx_name_yield (ase_stx_name_t* name, ase_word_t capacity) -{ - ase_char_t* old_buffer, * new_buffer; - - if (capacity == 0) - capacity = ase_countof(name->static_buffer) - 1; - - if (name->capacity < ase_countof(name->static_buffer)) { - old_buffer = (ase_char_t*) - ase_malloc((name->capacity + 1) * ase_sizeof(ase_char_t)); - if (old_buffer == ASE_NULL) return ASE_NULL; - ase_memcpy (old_buffer, name->buffer, - (name->capacity + 1) * ase_sizeof(ase_char_t)); - } - else old_buffer = name->buffer; - - if (capacity < ase_countof(name->static_buffer)) { - new_buffer = name->static_buffer; - } - else { - new_buffer = (ase_char_t*) - ase_malloc((capacity + 1) * ase_sizeof(ase_char_t)); - if (new_buffer == ASE_NULL) return ASE_NULL; - } - - name->buffer = new_buffer; - name->size = 0; - name->capacity = capacity; - name->buffer[0] = ASE_T('\0'); - - return old_buffer; -} - -int ase_stx_name_compare (ase_stx_name_t* name, const ase_char_t* str) -{ - ase_char_t* p = name->buffer; - ase_word_t index = 0; - - while (index < name->size) { - if (*p > *str) return 1; - if (*p < *str) return -1; - index++; p++; str++; - } - - return (*str == ASE_T('\0'))? 0: -1; -} diff --git a/qse/stx/name.h b/qse/stx/name.h deleted file mode 100644 index 8b1cc4d0..00000000 --- a/qse/stx/name.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - * $Id: name.h 118 2008-03-03 11:21:33Z baconevi $ - */ - -#ifndef _ASE_STX_NAME_H_ -#define _ASE_STX_NAME_H_ - -#include - -struct ase_stx_name_t -{ - ase_word_t capacity; - ase_word_t size; - ase_char_t* buffer; - ase_char_t static_buffer[128]; - ase_bool_t __dynamic; -}; - -typedef struct ase_stx_name_t ase_stx_name_t; - -#ifdef __cplusplus -extern "C" { -#endif - -ase_stx_name_t* ase_stx_name_open ( - ase_stx_name_t* name, ase_word_t capacity); -void ase_stx_name_close (ase_stx_name_t* name); - -int ase_stx_name_addc (ase_stx_name_t* name, ase_cint_t c); -int ase_stx_name_adds (ase_stx_name_t* name, const ase_char_t* s); -void ase_stx_name_clear (ase_stx_name_t* name); -ase_char_t* ase_stx_name_yield (ase_stx_name_t* name, ase_word_t capacity); -int ase_stx_name_compare (ase_stx_name_t* name, const ase_char_t* str); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/qse/stx/object.c b/qse/stx/object.c deleted file mode 100644 index 61b4359a..00000000 --- a/qse/stx/object.c +++ /dev/null @@ -1,246 +0,0 @@ -/* - * $Id: object.c 118 2008-03-03 11:21:33Z baconevi $ - */ - -#include -#include -#include -#include -#include - -/* n: number of instance variables */ -ase_word_t ase_stx_alloc_word_object ( - ase_stx_t* stx, const ase_word_t* data, ase_word_t nfields, - const ase_word_t* variable_data, ase_word_t variable_nfields) -{ - ase_word_t idx, n; - ase_stx_word_object_t* obj; - - ase_assert (stx->nil == ASE_STX_NIL); - - /* bytes to allocated = - * (number of instance variables + - * number of variable instance variables) * word_size - */ - n = nfields + variable_nfields; - idx = ase_stx_memory_alloc (&stx->memory, - n * ase_sizeof(ase_word_t) + ase_sizeof(ase_stx_object_t)); - if (idx >= stx->memory.capacity) return idx; /* failed TODO: return a difference value OINDEX_INVALID */ - - idx = ASE_STX_TO_OINDEX(idx); - obj = ASE_STX_WORD_OBJECT(stx,idx); - obj->header.class = stx->nil; - obj->header.access = (n << 2) | ASE_STX_WORD_INDEXED; - - if (variable_data == ASE_NULL) { - while (n > nfields) obj->data[--n] = stx->nil; - } - else { - while (n > nfields) { - n--; obj->data[n] = variable_data[n - nfields]; - } - } - - if (data == ASE_NULL) { - while (n > 0) obj->data[--n] = stx->nil; - } - else { - while (n > 0) { - n--; obj->data[n] = data[n]; - } - } - - return idx; -} - -/* n: number of bytes */ -ase_word_t ase_stx_alloc_byte_object ( - ase_stx_t* stx, const ase_byte_t* data, ase_word_t n) -{ - ase_word_t idx; - ase_stx_byte_object_t* obj; - - ase_assert (stx->nil == ASE_STX_NIL); - - idx = ase_stx_memory_alloc ( - &stx->memory, n + ase_sizeof(ase_stx_object_t)); - if (idx >= stx->memory.capacity) return idx; /* failed */ - - idx = ASE_STX_TO_OINDEX(idx); - obj = ASE_STX_BYTE_OBJECT(stx,idx); - obj->header.class = stx->nil; - obj->header.access = (n << 2) | ASE_STX_BYTE_INDEXED; - - if (data == ASE_NULL) { - while (n-- > 0) obj->data[n] = 0; - } - else { - while (n-- > 0) obj->data[n] = data[n]; - } - - return idx; -} - -ase_word_t ase_stx_alloc_char_object ( - ase_stx_t* stx, const ase_char_t* str) -{ - return (str == ASE_NULL)? - ase_stx_alloc_char_objectx (stx, ASE_NULL, 0): - ase_stx_alloc_char_objectx (stx, str, ase_strlen(str)); -} - -/* n: number of characters */ -ase_word_t ase_stx_alloc_char_objectx ( - ase_stx_t* stx, const ase_char_t* str, ase_word_t n) -{ - ase_word_t idx; - ase_stx_char_object_t* obj; - - ase_assert (stx->nil == ASE_STX_NIL); - - idx = ase_stx_memory_alloc (&stx->memory, - (n + 1) * ase_sizeof(ase_char_t) + ase_sizeof(ase_stx_object_t)); - if (idx >= stx->memory.capacity) return idx; /* failed */ - - idx = ASE_STX_TO_OINDEX(idx); - obj = ASE_STX_CHAR_OBJECT(stx,idx); - obj->header.class = stx->nil; - obj->header.access = (n << 2) | ASE_STX_CHAR_INDEXED; - obj->data[n] = ASE_T('\0'); - - if (str == ASE_NULL) { - while (n-- > 0) obj->data[n] = ASE_T('\0'); - } - else { - while (n-- > 0) obj->data[n] = str[n]; - } - - return idx; -} - -ase_word_t ase_stx_allocn_char_object (ase_stx_t* stx, ...) -{ - ase_word_t idx, n = 0; - const ase_char_t* p; - ase_va_list ap; - ase_stx_char_object_t* obj; - - ase_assert (stx->nil == ASE_STX_NIL); - - ase_va_start (ap, stx); - while ((p = ase_va_arg(ap, const ase_char_t*)) != ASE_NULL) { - n += ase_strlen(p); - } - ase_va_end (ap); - - idx = ase_stx_memory_alloc (&stx->memory, - (n + 1) * ase_sizeof(ase_char_t) + ase_sizeof(ase_stx_object_t)); - if (idx >= stx->memory.capacity) return idx; /* failed */ - - idx = ASE_STX_TO_OINDEX(idx); - obj = ASE_STX_CHAR_OBJECT(stx,idx); - obj->header.class = stx->nil; - obj->header.access = (n << 2) | ASE_STX_CHAR_INDEXED; - obj->data[n] = ASE_T('\0'); - - ase_va_start (ap, stx); - n = 0; - while ((p = ase_va_arg(ap, const ase_char_t*)) != ASE_NULL) { - while (*p != ASE_T('\0')) { - /*ASE_STX_CHAR_AT(stx,idx,n++) = *p++;*/ - obj->data[n++] = *p++; - } - } - ase_va_end (ap); - - return idx; -} - -ase_word_t ase_stx_hash_object (ase_stx_t* stx, ase_word_t object) -{ - ase_word_t hv; - - if (ASE_STX_IS_SMALLINT(object)) { - ase_word_t tmp = ASE_STX_FROM_SMALLINT(object); - hv = ase_stx_hash(&tmp, ase_sizeof(tmp)); - } - else if (ASE_STX_IS_CHAR_OBJECT(stx,object)) { - /* the additional null is not taken into account */ - hv = ase_stx_hash (ASE_STX_DATA(stx,object), - ASE_STX_SIZE(stx,object) * ase_sizeof(ase_char_t)); - } - else if (ASE_STX_IS_BYTE_OBJECT(stx,object)) { - hv = ase_stx_hash ( - ASE_STX_DATA(stx,object), ASE_STX_SIZE(stx,object)); - } - else { - ase_assert (ASE_STX_IS_WORD_OBJECT(stx,object)); - hv = ase_stx_hash (ASE_STX_DATA(stx,object), - ASE_STX_SIZE(stx,object) * ase_sizeof(ase_word_t)); - } - - return hv; -} - -ase_word_t ase_stx_instantiate ( - ase_stx_t* stx, ase_word_t class, const void* data, - const void* variable_data, ase_word_t variable_nfields) -{ - ase_stx_class_t* class_obj; - ase_word_t spec, nfields, new; - int indexable; - - ase_assert (class != stx->class_smallinteger); - class_obj = (ase_stx_class_t*)ASE_STX_OBJECT(stx, class); - - /* don't instantiate a metaclass whose instance must be - created in a different way */ - /* TODO: maybe delete the following line */ - ase_assert (class_obj->header.class != stx->class_metaclass); - ase_assert (ASE_STX_IS_SMALLINT(class_obj->spec)); - - spec = ASE_STX_FROM_SMALLINT(class_obj->spec); - nfields = (spec >> ASE_STX_SPEC_INDEXABLE_BITS); - indexable = spec & ASE_STX_SPEC_INDEXABLE_MASK; - - if (indexable == ASE_STX_SPEC_BYTE_INDEXABLE) { - ase_assert (nfields == 0 && data == ASE_NULL); - new = ase_stx_alloc_byte_object( - stx, variable_data, variable_nfields); - } - else if (indexable == ASE_STX_SPEC_CHAR_INDEXABLE) { - ase_assert (nfields == 0 && data == ASE_NULL); - new = ase_stx_alloc_char_objectx( - stx, variable_data, variable_nfields); - } - else if (indexable == ASE_STX_SPEC_WORD_INDEXABLE) { - new = ase_stx_alloc_word_object ( - stx, data, nfields, variable_data, variable_nfields); - } - else { - ase_assert (indexable == ASE_STX_SPEC_NOT_INDEXABLE); - ase_assert (variable_nfields == 0 && variable_data == ASE_NULL); - new = ase_stx_alloc_word_object ( - stx, data, nfields, ASE_NULL, 0); - } - - ASE_STX_CLASS(stx, new) = class; - return new; -} - -ase_word_t ase_stx_class (ase_stx_t* stx, ase_word_t obj) -{ - return ASE_STX_IS_SMALLINT(obj)? - stx->class_smallinteger: ASE_STX_CLASS(stx,obj); -} - -ase_word_t ase_stx_classof (ase_stx_t* stx, ase_word_t obj) -{ - return ASE_STX_IS_SMALLINT(obj)? - stx->class_smallinteger: ASE_STX_CLASS(stx,obj); -} - -ase_word_t ase_stx_sizeof (ase_stx_t* stx, ase_word_t obj) -{ - return ASE_STX_IS_SMALLINT(obj)? 1: ASE_STX_SIZE(stx,obj); -} diff --git a/qse/stx/object.h b/qse/stx/object.h deleted file mode 100644 index d8eafbfb..00000000 --- a/qse/stx/object.h +++ /dev/null @@ -1,40 +0,0 @@ -/* - * $Id: object.h 118 2008-03-03 11:21:33Z baconevi $ - */ - -#ifndef _ASE_STX_OBJECT_H_ -#define _ASE_STX_OBJECT_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -ase_word_t ase_stx_alloc_word_object ( - ase_stx_t* stx, const ase_word_t* data, ase_word_t nfields, - const ase_word_t* variable_data, ase_word_t variable_nfields); - -ase_word_t ase_stx_alloc_byte_object ( - ase_stx_t* stx, const ase_byte_t* data, ase_word_t n); - -ase_word_t ase_stx_alloc_char_object ( - ase_stx_t* stx, const ase_char_t* str); -ase_word_t ase_stx_alloc_char_objectx ( - ase_stx_t* stx, const ase_char_t* str, ase_word_t n); -ase_word_t ase_stx_allocn_char_object (ase_stx_t* stx, ...); - -ase_word_t ase_stx_hash_object (ase_stx_t* stx, ase_word_t object); - -ase_word_t ase_stx_instantiate ( - ase_stx_t* stx, ase_word_t class_index, const void* data, - const void* variable_data, ase_word_t variable_nfields); -ase_word_t ase_stx_classof (ase_stx_t* stx, ase_word_t obj); -ase_word_t ase_stx_sizeof (ase_stx_t* stx, ase_word_t obj); - - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/qse/stx/parser.c b/qse/stx/parser.c deleted file mode 100644 index ee8770a8..00000000 --- a/qse/stx/parser.c +++ /dev/null @@ -1,1608 +0,0 @@ -/* - * $Id: parser.c 118 2008-03-03 11:21:33Z baconevi $ - */ - -#include -#include -#include -#include -#include -#include -#include -#include - -static int __parse_method ( - ase_stx_parser_t* parser, - ase_word_t method_class, void* input); -static int __finish_method (ase_stx_parser_t* parser); - -static int __parse_message_pattern (ase_stx_parser_t* parser); -static int __parse_unary_pattern (ase_stx_parser_t* parser); -static int __parse_binary_pattern (ase_stx_parser_t* parser); -static int __parse_keyword_pattern (ase_stx_parser_t* parser); - -static int __parse_temporaries (ase_stx_parser_t* parser); -static int __parse_primitive (ase_stx_parser_t* parser); -static int __parse_statements (ase_stx_parser_t* parser); -static int __parse_block_statements (ase_stx_parser_t* parser); -static int __parse_statement (ase_stx_parser_t* parser); -static int __parse_expression (ase_stx_parser_t* parser); - -static int __parse_assignment ( - ase_stx_parser_t* parser, const ase_char_t* target); -static int __parse_basic_expression ( - ase_stx_parser_t* parser, const ase_char_t* ident); -static int __parse_primary ( - ase_stx_parser_t* parser, const ase_char_t* ident, ase_bool_t* is_super); -static int __parse_primary_ident ( - ase_stx_parser_t* parser, const ase_char_t* ident, ase_bool_t* is_super); - -static int __parse_block_constructor (ase_stx_parser_t* parser); -static int __parse_message_continuation ( - ase_stx_parser_t* parser, ase_bool_t is_super); -static int __parse_keyword_message ( - ase_stx_parser_t* parser, ase_bool_t is_super); -static int __parse_binary_message ( - ase_stx_parser_t* parser, ase_bool_t is_super); -static int __parse_unary_message ( - ase_stx_parser_t* parser, ase_bool_t is_super); - -static int __get_token (ase_stx_parser_t* parser); -static int __get_ident (ase_stx_parser_t* parser); -static int __get_numlit (ase_stx_parser_t* parser, ase_bool_t negated); -static int __get_charlit (ase_stx_parser_t* parser); -static int __get_strlit (ase_stx_parser_t* parser); -static int __get_binary (ase_stx_parser_t* parser); -static int __skip_spaces (ase_stx_parser_t* parser); -static int __skip_comment (ase_stx_parser_t* parser); -static int __get_char (ase_stx_parser_t* parser); -static int __unget_char (ase_stx_parser_t* parser, ase_cint_t c); -static int __open_input (ase_stx_parser_t* parser, void* input); -static int __close_input (ase_stx_parser_t* parser); - -ase_stx_parser_t* ase_stx_parser_open (ase_stx_parser_t* parser, ase_stx_t* stx) -{ - if (parser == ASE_NULL) { - parser = (ase_stx_parser_t*) - ase_malloc (ase_sizeof(ase_stx_parser_t)); - if (parser == ASE_NULL) return ASE_NULL; - parser->__dynamic = ase_true; - } - else parser->__dynamic = ase_false; - - if (ase_stx_name_open (&parser->method_name, 0) == ASE_NULL) { - if (parser->__dynamic) ase_free (parser); - return ASE_NULL; - } - - if (ase_stx_token_open (&parser->token, 0) == ASE_NULL) { - ase_stx_name_close (&parser->method_name); - if (parser->__dynamic) ase_free (parser); - return ASE_NULL; - } - - if (ase_arr_open ( - &parser->bytecode, 256, - ase_sizeof(ase_byte_t), ASE_NULL) == ASE_NULL) { - ase_stx_name_close (&parser->method_name); - ase_stx_token_close (&parser->token); - if (parser->__dynamic) ase_free (parser); - return ASE_NULL; - } - - parser->stx = stx; - parser->error_code = ASE_STX_PARSER_ERROR_NONE; - - parser->temporary_count = 0; - parser->argument_count = 0; - parser->literal_count = 0; - - parser->curc = ASE_T_EOF; - parser->ungotc_count = 0; - - parser->input_owner = ASE_NULL; - parser->input_func = ASE_NULL; - return parser; -} - -void ase_stx_parser_close (ase_stx_parser_t* parser) -{ - while (parser->temporary_count > 0) { - ase_free (parser->temporaries[--parser->temporary_count]); - } - parser->argument_count = 0; - - ase_arr_close (&parser->bytecode); - ase_stx_name_close (&parser->method_name); - ase_stx_token_close (&parser->token); - - if (parser->__dynamic) ase_free (parser); -} - -#define GET_CHAR(parser) \ - do { if (__get_char(parser) == -1) return -1; } while (0) -#define UNGET_CHAR(parser,c) \ - do { if (__unget_char(parser,c) == -1) return -1; } while (0) -#define GET_TOKEN(parser) \ - do { if (__get_token(parser) == -1) return -1; } while (0) -#define ADD_TOKEN_CHAR(parser,c) \ - do { \ - if (ase_stx_token_addc (&(parser)->token, c) == -1) { \ - (parser)->error_code = ASE_STX_PARSER_ERROR_MEMORY; \ - return -1; \ - } \ - } while (0) - -const ase_char_t* ase_stx_parser_error_string (ase_stx_parser_t* parser) -{ - static const ase_char_t* msg[] = - { - ASE_T("no error"), - - ASE_T("input fucntion not ready"), - ASE_T("input function error"), - ASE_T("out of memory"), - - ASE_T("invalid character"), - ASE_T("incomplete character literal"), - ASE_T("incomplete string literal"), - ASE_T("incomplete literal"), - - ASE_T("message selector"), - ASE_T("invalid argument name"), - ASE_T("too many arguments"), - - ASE_T("invalid primitive type"), - ASE_T("primitive number expected"), - ASE_T("primitive number out of range"), - ASE_T("primitive not closed"), - - ASE_T("temporary list not closed"), - ASE_T("too many temporaries"), - ASE_T("cannot redefine pseudo variable"), - ASE_T("invalid primary/expression-start"), - - ASE_T("no period at end of statement"), - ASE_T("no closing parenthesis"), - ASE_T("block argument name missing"), - ASE_T("block argument list not closed"), - ASE_T("block not closed"), - - ASE_T("undeclared name"), - ASE_T("too many literals") - }; - - if (parser->error_code >= 0 && - parser->error_code < ase_countof(msg)) return msg[parser->error_code]; - - return ASE_T("unknown error"); -} - -static INLINE ase_bool_t __is_pseudo_variable (const ase_stx_token_t* token) -{ - return token->type == ASE_STX_TOKEN_IDENT && - (ase_strcmp(token->name.buffer, ASE_T("self")) == 0 || - ase_strcmp(token->name.buffer, ASE_T("super")) == 0 || - ase_strcmp(token->name.buffer, ASE_T("nil")) == 0 || - ase_strcmp(token->name.buffer, ASE_T("true")) == 0 || - ase_strcmp(token->name.buffer, ASE_T("false")) == 0); -} - -static INLINE ase_bool_t __is_vbar_token (const ase_stx_token_t* token) -{ - return - token->type == ASE_STX_TOKEN_BINARY && - token->name.size == 1 && - token->name.buffer[0] == ASE_T('|'); -} - -static INLINE ase_bool_t __is_primitive_opener (const ase_stx_token_t* token) -{ - return - token->type == ASE_STX_TOKEN_BINARY && - token->name.size == 1 && - token->name.buffer[0] == ASE_T('<'); -} - -static INLINE ase_bool_t __is_primitive_closer (const ase_stx_token_t* token) -{ - return - token->type == ASE_STX_TOKEN_BINARY && - token->name.size == 1 && - token->name.buffer[0] == ASE_T('>'); -} - -static INLINE ase_bool_t __is_binary_char (ase_cint_t c) -{ - /* - * binaryCharacter ::= - * '!' | '%' | '&' | '*' | '+' | ',' | - * '/' | '<' | '=' | '>' | '?' | '@' | - * '\' | '~' | '|' | '-' - */ - - return - c == ASE_T('!') || c == ASE_T('%') || - c == ASE_T('&') || c == ASE_T('*') || - c == ASE_T('+') || c == ASE_T(',') || - c == ASE_T('/') || c == ASE_T('<') || - c == ASE_T('=') || c == ASE_T('>') || - c == ASE_T('?') || c == ASE_T('@') || - c == ASE_T('\\') || c == ASE_T('|') || - c == ASE_T('~') || c == ASE_T('-'); -} - -static INLINE ase_bool_t __is_closing_char (ase_cint_t c) -{ - return - c == ASE_T('.') || c == ASE_T(']') || - c == ASE_T(')') || c == ASE_T(';') || - c == ASE_T('\"') || c == ASE_T('\''); -} - -#define EMIT_CODE_TEST(parser,high,low) \ - do { if (__emit_code_test(parser,high,low) == -1) return -1; } while (0) - -#define EMIT_CODE(parser,code) \ - do { if (__emit_code(parser,code) == -1) return -1; } while(0) - -#define EMIT_PUSH_RECEIVER_VARIABLE(parser,pos) \ - do { \ - if (__emit_stack_positional ( \ - parser, PUSH_RECEIVER_VARIABLE, pos) == -1) return -1; \ - } while (0) - -#define EMIT_PUSH_TEMPORARY_LOCATION(parser,pos) \ - do { \ - if (__emit_stack_positional ( \ - parser, PUSH_TEMPORARY_LOCATION, pos) == -1) return -1; \ - } while (0) - -#define EMIT_PUSH_LITERAL_CONSTANT(parser,pos) \ - do { \ - if (__emit_stack_positional ( \ - parser, PUSH_LITERAL_CONSTANT, pos) == -1) return -1; \ - } while (0) - - -#define EMIT_PUSH_LITERAL_VARIABLE(parser,pos) \ - do { \ - if (__emit_stack_positional ( \ - parser, PUSH_LITERAL_VARIABLE, pos) == -1) return -1; \ - } while (0) - -#define EMIT_STORE_RECEIVER_VARIABLE(parser,pos) \ - do { \ - if (__emit_stack_positional ( \ - parser, STORE_RECEIVER_VARIABLE, pos) == -1) return -1; \ - } while (0) - -#define EMIT_STORE_TEMPORARY_LOCATION(parser,pos) \ - do { \ - if (__emit_stack_positional ( \ - parser, STORE_TEMPORARY_LOCATION, pos) == -1) return -1; \ - } while (0) - - -#define EMIT_POP_STACK_TOP(parser) EMIT_CODE(parser, POP_STACK_TOP) -#define EMIT_DUPLICATE_STACK_TOP(parser) EMIT_CODE(parser, DUPLICATE_STACK_TOP) -#define EMIT_PUSH_ACTIVE_CONTEXT(parser) EMIT_CODE(parser, PUSH_ACTIVE_CONTEXT) -#define EMIT_RETURN_FROM_MESSAGE(parser) EMIT_CODE(parser, RETURN_FROM_MESSAGE) -#define EMIT_RETURN_FROM_BLOCK(parser) EMIT_CODE(parser, RETURN_FROM_BLOCK) - -#define EMIT_SEND_TO_SELF(parser,nargs,selector) \ - do { \ - if (__emit_send_to_self(parser,nargs,selector) == -1) return -1; \ - } while (0) - -#define EMIT_SEND_TO_SUPER(parser,nargs,selector) \ - do { \ - if (__emit_send_to_super(parser,nargs,selector) == -1) return -1; \ - } while (0) - -#define EMIT_DO_PRIMITIVE(parser,no) \ - do { if (__emit_do_primitive(parser,no) == -1) return -1; } while(0) - -static INLINE int __emit_code_test ( - ase_stx_parser_t* parser, const ase_char_t* high, const ase_char_t* low) -{ - ase_printf (ASE_T("CODE: %s %s\n"), high, low); - return 0; -} - -static INLINE int __emit_code (ase_stx_parser_t* parser, ase_byte_t code) -{ - if (ase_arr_adddatum(&parser->bytecode, &code) == ASE_NULL) { - parser->error_code = ASE_STX_PARSER_ERROR_MEMORY; - return -1; - } - - return 0; -} - -static INLINE int __emit_stack_positional ( - ase_stx_parser_t* parser, int opcode, int pos) -{ - ase_assert (pos >= 0x0 && pos <= 0xFF); - - if (pos <= 0x0F) { - EMIT_CODE (parser, (opcode & 0xF0) | (pos & 0x0F)); - } - else { - EMIT_CODE (parser, (opcode >> 4) & 0x6F); - EMIT_CODE (parser, pos & 0xFF); - } - - return 0; -} - -static INLINE int __emit_send_to_self ( - ase_stx_parser_t* parser, int nargs, int selector) -{ - ase_assert (nargs >= 0x00 && nargs <= 0xFF); - ase_assert (selector >= 0x00 && selector <= 0xFF); - - if (nargs <= 0x08 && selector <= 0x1F) { - EMIT_CODE (parser, SEND_TO_SELF); - EMIT_CODE (parser, (nargs << 5) | selector); - } - else { - EMIT_CODE (parser, SEND_TO_SELF_EXTENDED); - EMIT_CODE (parser, nargs); - EMIT_CODE (parser, selector); - } - - return 0; -} - -static INLINE int __emit_send_to_super ( - ase_stx_parser_t* parser, int nargs, int selector) -{ - ase_assert (nargs >= 0x00 && nargs <= 0xFF); - ase_assert (selector >= 0x00 && selector <= 0xFF); - - if (nargs <= 0x08 && selector <= 0x1F) { - EMIT_CODE (parser, SEND_TO_SUPER); - EMIT_CODE (parser, (nargs << 5) | selector); - } - else { - EMIT_CODE (parser, SEND_TO_SUPER_EXTENDED); - EMIT_CODE (parser, nargs); - EMIT_CODE (parser, selector); - } - - return 0; -} - -static INLINE int __emit_do_primitive (ase_stx_parser_t* parser, int no) -{ - ase_assert (no >= 0x0 && no <= 0xFFF); - - EMIT_CODE (parser, DO_PRIMITIVE | ((no >> 8) & 0x0F)); - EMIT_CODE (parser, no & 0xFF); - - return 0; -} - -static int __add_literal (ase_stx_parser_t* parser, ase_word_t literal) -{ - ase_word_t i; - - for (i = 0; i < parser->literal_count; i++) { - /* - * it would remove redundancy of symbols and small integers. - * more complex redundacy check may be done somewhere else - * like in __add_string_literal. - */ - if (parser->literals[i] == literal) return i; - } - - if (parser->literal_count >= ase_countof(parser->literals)) { - parser->error_code = ASE_STX_PARSER_ERROR_TOO_MANY_LITERALS; - return -1; - } - - parser->literals[parser->literal_count++] = literal; - return parser->literal_count - 1; -} - -static int __add_character_literal (ase_stx_parser_t* parser, ase_char_t ch) -{ - ase_word_t i, c, literal; - ase_stx_t* stx = parser->stx; - - for (i = 0; i < parser->literal_count; i++) { - c = ASE_STX_IS_SMALLINT(parser->literals[i])? - stx->class_smallinteger: ASE_STX_CLASS (stx, parser->literals[i]); - if (c != stx->class_character) continue; - - if (ch == ASE_STX_CHAR_AT(stx,parser->literals[i],0)) return i; - } - - literal = ase_stx_instantiate ( - stx, stx->class_character, &ch, ASE_NULL, 0); - return __add_literal (parser, literal); -} - -static int __add_string_literal ( - ase_stx_parser_t* parser, const ase_char_t* str, ase_word_t size) -{ - ase_word_t i, c, literal; - ase_stx_t* stx = parser->stx; - - for (i = 0; i < parser->literal_count; i++) { - c = ASE_STX_IS_SMALLINT(parser->literals[i])? - stx->class_smallinteger: ASE_STX_CLASS (stx, parser->literals[i]); - if (c != stx->class_string) continue; - - if (ase_strxncmp (str, size, - ASE_STX_DATA(stx,parser->literals[i]), - ASE_STX_SIZE(stx,parser->literals[i])) == 0) return i; - } - - literal = ase_stx_instantiate ( - stx, stx->class_string, ASE_NULL, str, size); - return __add_literal (parser, literal); -} - -static int __add_symbol_literal ( - ase_stx_parser_t* parser, const ase_char_t* str, ase_word_t size) -{ - ase_stx_t* stx = parser->stx; - return __add_literal (parser, ase_stx_new_symbolx(stx, str, size)); -} - -int ase_stx_parser_parse_method ( - ase_stx_parser_t* parser, ase_word_t method_class, void* input) -{ - int n; - - if (parser->input_func == ASE_NULL) { - parser->error_code = ASE_STX_PARSER_ERROR_INPUT_FUNC; - return -1; - } - - parser->method_class = method_class; - if (__open_input(parser, input) == -1) return -1; - n = __parse_method (parser, method_class, input); - if (__close_input(parser) == -1) return -1; - - return n; -} - -static int __parse_method ( - ase_stx_parser_t* parser, ase_word_t method_class, void* input) -{ - /* - * ::= - * [] [] [] - */ - - GET_CHAR (parser); - GET_TOKEN (parser); - - ase_stx_name_clear (&parser->method_name); - ase_arr_clear (&parser->bytecode); - - while (parser->temporary_count > 0) { - ase_free (parser->temporaries[--parser->temporary_count]); - } - parser->argument_count = 0; - parser->literal_count = 0; - - if (__parse_message_pattern(parser) == -1) return -1; - if (__parse_temporaries(parser) == -1) return -1; - if (__parse_primitive(parser) == -1) return -1; - if (__parse_statements(parser) == -1) return -1; - if (__finish_method (parser) == -1) return -1; - - return 0; -} - -static int __finish_method (ase_stx_parser_t* parser) -{ - ase_stx_t* stx = parser->stx; - ase_stx_class_t* class_obj; - ase_stx_method_t* method_obj; - ase_word_t method, selector; - - ase_assert (parser->bytecode.size != 0); - - class_obj = (ase_stx_class_t*) - ASE_STX_OBJECT(stx, parser->method_class); - - if (class_obj->methods == stx->nil) { - /* TODO: reconfigure method dictionary size */ - class_obj->methods = ase_stx_instantiate ( - stx, stx->class_system_dictionary, - ASE_NULL, ASE_NULL, 64); - } - ase_assert (class_obj->methods != stx->nil); - - selector = ase_stx_new_symbolx ( - stx, parser->method_name.buffer, parser->method_name.size); - - method = ase_stx_instantiate(stx, stx->class_method, - ASE_NULL, parser->literals, parser->literal_count); - method_obj = (ase_stx_method_t*)ASE_STX_OBJECT(stx, method); - - /* TODO: text saving must be optional */ - /*method_obj->text = ase_stx_instantiate ( - stx, stx->class_string, ASE_NULL, - parser->text, ase_strlen(parser->text)); - */ - method_obj->selector = selector; - method_obj->bytecodes = ase_stx_instantiate ( - stx, stx->class_bytearray, ASE_NULL, - parser->bytecode.buf, parser->bytecode.size); - - /* TODO: better way to store argument count & temporary count */ - method_obj->tmpcount = - ASE_STX_TO_SMALLINT(parser->temporary_count - parser->argument_count); - method_obj->argcount = ASE_STX_TO_SMALLINT(parser->argument_count); - - ase_stx_dict_put (stx, class_obj->methods, selector, method); - return 0; -} - -static int __parse_message_pattern (ase_stx_parser_t* parser) -{ - /* - * ::= - * | | - * ::= unarySelector - * ::= binarySelector - * ::= (keyword )+ - */ - int n; - - if (parser->token.type == ASE_STX_TOKEN_IDENT) { - n = __parse_unary_pattern (parser); - } - else if (parser->token.type == ASE_STX_TOKEN_BINARY) { - n = __parse_binary_pattern (parser); - } - else if (parser->token.type == ASE_STX_TOKEN_KEYWORD) { - n = __parse_keyword_pattern (parser); - } - else { - parser->error_code = ASE_STX_PARSER_ERROR_MESSAGE_SELECTOR; - n = -1; - } - - parser->temporary_count = parser->argument_count; - return n; -} - -static int __parse_unary_pattern (ase_stx_parser_t* parser) -{ - /* TODO: check if the method name exists */ - - if (ase_stx_name_adds( - &parser->method_name, parser->token.name.buffer) == -1) { - parser->error_code = ASE_STX_PARSER_ERROR_MEMORY; - return -1; - } - - GET_TOKEN (parser); - return 0; -} - -static int __parse_binary_pattern (ase_stx_parser_t* parser) -{ - /* TODO: check if the method name exists */ - - if (ase_stx_name_adds( - &parser->method_name, parser->token.name.buffer) == -1) { - parser->error_code = ASE_STX_PARSER_ERROR_MEMORY; - return -1; - } - - GET_TOKEN (parser); - if (parser->token.type != ASE_STX_TOKEN_IDENT) { - parser->error_code = ASE_STX_PARSER_ERROR_ARGUMENT_NAME; - return -1; - } - - if (parser->argument_count >= ase_countof(parser->temporaries)) { - parser->error_code = ASE_STX_PARSER_ERROR_TOO_MANY_ARGUMENTS; - return -1; - } - - /* TODO: check for duplicate entries...in instvars */ - parser->temporaries[parser->argument_count] = - ase_stx_token_yield (&parser->token, 0); - if (parser->temporaries[parser->argument_count] == ASE_NULL) { - parser->error_code = ASE_STX_PARSER_ERROR_MEMORY; - return -1; - } - parser->argument_count++; - - GET_TOKEN (parser); - return 0; -} - -static int __parse_keyword_pattern (ase_stx_parser_t* parser) -{ - do { - if (ase_stx_name_adds( - &parser->method_name, parser->token.name.buffer) == -1) { - parser->error_code = ASE_STX_PARSER_ERROR_MEMORY; - return -1; - } - - GET_TOKEN (parser); - if (parser->token.type != ASE_STX_TOKEN_IDENT) { - parser->error_code = ASE_STX_PARSER_ERROR_ARGUMENT_NAME; - return -1; - } - - if (__is_pseudo_variable(&parser->token)) { - parser->error_code = ASE_STX_PARSER_ERROR_PSEUDO_VARIABLE; - return -1; - } - - if (parser->argument_count >= ase_countof(parser->temporaries)) { - parser->error_code = ASE_STX_PARSER_ERROR_TOO_MANY_ARGUMENTS; - return -1; - } - - parser->temporaries[parser->argument_count] = - ase_stx_token_yield (&parser->token, 0); - if (parser->temporaries[parser->argument_count] == ASE_NULL) { - parser->error_code = ASE_STX_PARSER_ERROR_MEMORY; - return -1; - } - -/* TODO: check for duplicate entries...in instvars/arguments */ - parser->argument_count++; - - GET_TOKEN (parser); - } while (parser->token.type == ASE_STX_TOKEN_KEYWORD); - - /* TODO: check if the method name exists */ - /* if it exists, collapse arguments */ -ase_printf (ASE_T("METHOD NAME ==> [%s]\n"), parser->method_name.buffer); - - return 0; -} - -static int __parse_temporaries (ase_stx_parser_t* parser) -{ - /* - * ::= '|' '|' - * ::= identifier* - */ - - if (!__is_vbar_token(&parser->token)) return 0; - - GET_TOKEN (parser); - while (parser->token.type == ASE_STX_TOKEN_IDENT) { - if (parser->temporary_count >= ase_countof(parser->temporaries)) { - parser->error_code = ASE_STX_PARSER_ERROR_TOO_MANY_TEMPORARIES; - return -1; - } - - if (__is_pseudo_variable(&parser->token)) { - parser->error_code = ASE_STX_PARSER_ERROR_PSEUDO_VARIABLE; - return -1; - } - - parser->temporaries[parser->temporary_count] = - ase_stx_token_yield (&parser->token, 0); - if (parser->temporaries[parser->temporary_count] == ASE_NULL) { - parser->error_code = ASE_STX_PARSER_ERROR_MEMORY; - return -1; - } - -/* TODO: check for duplicate entries...in instvars/arguments/temporaries */ - parser->temporary_count++; - - GET_TOKEN (parser); - } - if (!__is_vbar_token(&parser->token)) { - parser->error_code = ASE_STX_PARSER_ERROR_TEMPORARIES_NOT_CLOSED; - return -1; - } - - GET_TOKEN (parser); - return 0; -} - -static int __parse_primitive (ase_stx_parser_t* parser) -{ - /* - * ::= '<' 'primitive:' number '>' - */ - - int prim_no; - - if (!__is_primitive_opener(&parser->token)) return 0; - GET_TOKEN (parser); - - if (parser->token.type != ASE_STX_TOKEN_KEYWORD || - ase_strcmp (parser->token.name.buffer, ASE_T("primitive:")) != 0) { - parser->error_code = ASE_STX_PARSER_ERROR_PRIMITIVE_KEYWORD; - return -1; - } - - GET_TOKEN (parser); /* TODO: only integer */ - if (parser->token.type != ASE_STX_TOKEN_NUMLIT) { - parser->error_code = ASE_STX_PARSER_ERROR_PRIMITIVE_NUMBER; - return -1; - } - -/*TODO: more checks the validity of the primitive number */ - if (!ase_stristype(parser->token.name.buffer, ase_isdigit)) { - parser->error_code = ASE_STX_PARSER_ERROR_PRIMITIVE_NUMBER; - return -1; - } - - ASE_STRTOI (prim_no, parser->token.name.buffer, ASE_NULL, 10); - if (prim_no < 0 || prim_no > 0xFF) { - parser->error_code = ASE_STX_PARSER_ERROR_PRIMITIVE_NUMBER_RANGE; - return -1; - } - - EMIT_DO_PRIMITIVE (parser, prim_no); - - GET_TOKEN (parser); - if (!__is_primitive_closer(&parser->token)) { - parser->error_code = ASE_STX_PARSER_ERROR_PRIMITIVE_NOT_CLOSED; - return -1; - } - - GET_TOKEN (parser); - return 0; -} - -static int __parse_statements (ase_stx_parser_t* parser) -{ - /* - * ::= (ORIGINAL->maybe wrong) - * ( ['.'] ) | - * ( ['.' []]) - * ::= (REVISED->correct?) - * ['. []] - */ - - while (parser->token.type != ASE_STX_TOKEN_END) { - if (__parse_statement (parser) == -1) return -1; - - if (parser->token.type == ASE_STX_TOKEN_PERIOD) { - GET_TOKEN (parser); - continue; - } - - if (parser->token.type != ASE_STX_TOKEN_END) { - parser->error_code = ASE_STX_PARSER_ERROR_NO_PERIOD; - return -1; - } - } - - EMIT_CODE (parser, RETURN_RECEIVER); - return 0; -} - -static int __parse_block_statements (ase_stx_parser_t* parser) -{ - while (parser->token.type != ASE_STX_TOKEN_RBRACKET && - parser->token.type != ASE_STX_TOKEN_END) { - - if (__parse_statement(parser) == -1) return -1; - if (parser->token.type != ASE_STX_TOKEN_PERIOD) break; - GET_TOKEN (parser); - } - - return 0; -} - -static int __parse_statement (ase_stx_parser_t* parser) -{ - /* - * ::= | - * ::= returnOperator - * returnOperator ::= '^' - */ - - if (parser->token.type == ASE_STX_TOKEN_RETURN) { - GET_TOKEN (parser); - if (__parse_expression(parser) == -1) return -1; - EMIT_RETURN_FROM_MESSAGE (parser); - } - else { - if (__parse_expression(parser) == -1) return -1; - } - - return 0; -} - -static int __parse_expression (ase_stx_parser_t* parser) -{ - /* - * ::= | - * ::= assignmentOperator - * ::= [ ] - * ::= identifier - * assignmentOperator ::= ':=' - */ - ase_stx_t* stx = parser->stx; - - if (parser->token.type == ASE_STX_TOKEN_IDENT) { - ase_char_t* ident = ase_stx_token_yield (&parser->token, 0); - if (ident == ASE_NULL) { - parser->error_code = ASE_STX_PARSER_ERROR_MEMORY; - return -1; - } - - GET_TOKEN (parser); - if (parser->token.type == ASE_STX_TOKEN_ASSIGN) { - GET_TOKEN (parser); - if (__parse_assignment(parser, ident) == -1) { - ase_free (ident); - return -1; - } - } - else { - if (__parse_basic_expression(parser, ident) == -1) { - ase_free (ident); - return -1; - } - } - - ase_free (ident); - } - else { - if (__parse_basic_expression(parser, ASE_NULL) == -1) return -1; - } - - return 0; -} - -static int __parse_basic_expression ( - ase_stx_parser_t* parser, const ase_char_t* ident) -{ - /* - * ::= [ ] - */ - ase_bool_t is_super; - - if (__parse_primary(parser, ident, &is_super) == -1) return -1; - if (parser->token.type != ASE_STX_TOKEN_END && - parser->token.type != ASE_STX_TOKEN_PERIOD) { - if (__parse_message_continuation(parser, is_super) == -1) return -1; - } - return 0; -} - -static int __parse_assignment ( - ase_stx_parser_t* parser, const ase_char_t* target) -{ - /* - * ::= assignmentOperator - */ - - ase_word_t i; - ase_stx_t* stx = parser->stx; - - for (i = parser->argument_count; i < parser->temporary_count; i++) { - if (ase_strcmp (target, parser->temporaries[i]) == 0) { - if (__parse_expression(parser) == -1) return -1; - EMIT_STORE_TEMPORARY_LOCATION (parser, i); - return 0; - } - } - - if (ase_stx_get_instance_variable_index ( - stx, parser->method_class, target, &i) == 0) { - if (__parse_expression(parser) == -1) return -1; - EMIT_STORE_RECEIVER_VARIABLE (parser, i); - return 0; - } - - if (ase_stx_lookup_class_variable ( - stx, parser->method_class, target) != stx->nil) { - if (__parse_expression(parser) == -1) return -1; - - /* TODO */ - EMIT_CODE_TEST (parser, ASE_T("ASSIGN_CLASSVAR #"), target); - //EMIT_STORE_CLASS_VARIABLE (parser, target); - return 0; - } - - /* TODO: IMPLEMENT POOL DICTIONARIES */ - - /* TODO: IMPLEMENT GLOBLAS, but i don't like this idea */ - - parser->error_code = ASE_STX_PARSER_ERROR_UNDECLARED_NAME; - return -1; -} - -static int __parse_primary ( - ase_stx_parser_t* parser, const ase_char_t* ident, ase_bool_t* is_super) -{ - /* - * ::= - * identifier | | - * | ( '('')' ) - */ - - ase_stx_t* stx = parser->stx; - - if (ident == ASE_NULL) { - int pos; - ase_word_t literal; - - *is_super = ase_false; - - if (parser->token.type == ASE_STX_TOKEN_IDENT) { - if (__parse_primary_ident(parser, - parser->token.name.buffer, is_super) == -1) return -1; - GET_TOKEN (parser); - } - else if (parser->token.type == ASE_STX_TOKEN_CHARLIT) { - pos = __add_character_literal( - parser, parser->token.name.buffer[0]); - if (pos == -1) return -1; - EMIT_PUSH_LITERAL_CONSTANT (parser, pos); - GET_TOKEN (parser); - } - else if (parser->token.type == ASE_STX_TOKEN_STRLIT) { - pos = __add_string_literal (parser, - parser->token.name.buffer, parser->token.name.size); - if (pos == -1) return -1; - EMIT_PUSH_LITERAL_CONSTANT (parser, pos); - GET_TOKEN (parser); - } - else if (parser->token.type == ASE_STX_TOKEN_NUMLIT) { - /* TODO: other types of numbers, negative numbers, etc */ - ase_word_t tmp; - ASE_STRTOI (tmp, parser->token.name.buffer, ASE_NULL, 10); - literal = ASE_STX_TO_SMALLINT(tmp); - pos = __add_literal(parser, literal); - if (pos == -1) return -1; - EMIT_PUSH_LITERAL_CONSTANT (parser, pos); - GET_TOKEN (parser); - } - else if (parser->token.type == ASE_STX_TOKEN_SYMLIT) { - pos = __add_symbol_literal (parser, - parser->token.name.buffer, parser->token.name.size); - if (pos == -1) return -1; - EMIT_PUSH_LITERAL_CONSTANT (parser, pos); - GET_TOKEN (parser); - } - else if (parser->token.type == ASE_STX_TOKEN_LBRACKET) { - GET_TOKEN (parser); - if (__parse_block_constructor(parser) == -1) return -1; - } - else if (parser->token.type == ASE_STX_TOKEN_APAREN) { - /* TODO: array literal */ - } - else if (parser->token.type == ASE_STX_TOKEN_LPAREN) { - GET_TOKEN (parser); - if (__parse_expression(parser) == -1) return -1; - if (parser->token.type != ASE_STX_TOKEN_RPAREN) { - parser->error_code = ASE_STX_PARSER_ERROR_NO_RPAREN; - return -1; - } - GET_TOKEN (parser); - } - else { - parser->error_code = ASE_STX_PARSER_ERROR_PRIMARY; - return -1; - } - } - else { - /*if (__parse_primary_ident(parser, parser->token.name.buffer) == -1) return -1;*/ - if (__parse_primary_ident(parser, ident, is_super) == -1) return -1; - } - - return 0; -} - -static int __parse_primary_ident ( - ase_stx_parser_t* parser, const ase_char_t* ident, ase_bool_t* is_super) -{ - ase_word_t i; - ase_stx_t* stx = parser->stx; - - *is_super = ase_false; - - if (ase_strcmp(ident, ASE_T("self")) == 0) { - EMIT_CODE (parser, PUSH_RECEIVER); - return 0; - } - else if (ase_strcmp(ident, ASE_T("super")) == 0) { - *is_super = ase_true; - EMIT_CODE (parser, PUSH_RECEIVER); - return 0; - } - else if (ase_strcmp(ident, ASE_T("nil")) == 0) { - EMIT_CODE (parser, PUSH_NIL); - return 0; - } - else if (ase_strcmp(ident, ASE_T("true")) == 0) { - EMIT_CODE (parser, PUSH_TRUE); - return 0; - } - else if (ase_strcmp(ident, ASE_T("false")) == 0) { - EMIT_CODE (parser, PUSH_FALSE); - return 0; - } - - /* Refer to __parse_assignment for identifier lookup */ - - for (i = 0; i < parser->temporary_count; i++) { - if (ase_strcmp(ident, parser->temporaries[i]) == 0) { - EMIT_PUSH_TEMPORARY_LOCATION (parser, i); - return 0; - } - } - - if (ase_stx_get_instance_variable_index ( - stx, parser->method_class, ident, &i) == 0) { - EMIT_PUSH_RECEIVER_VARIABLE (parser, i); - return 0; - } - - /* TODO: what is the best way to look up a class variable? */ - /* 1. Use the class containing it and using its position */ - /* 2. Use a primitive method after pushing the name as a symbol */ - /* 3. Implement a vm instruction to do it */ -/* - if (ase_stx_lookup_class_variable ( - stx, parser->method_class, ident) != stx->nil) { - //EMIT_LOOKUP_CLASS_VARIABLE (parser, ident); - return 0; - } -*/ - - /* TODO: IMPLEMENT POOL DICTIONARIES */ - - /* TODO: IMPLEMENT GLOBLAS, but i don't like this idea */ - - parser->error_code = ASE_STX_PARSER_ERROR_UNDECLARED_NAME; - return -1; -} - -static int __parse_block_constructor (ase_stx_parser_t* parser) -{ - /* - * ::= '[' ']' - * ::= [* '|'] - * [] [] - * ::= ':' identifier - */ - - if (parser->token.type == ASE_STX_TOKEN_COLON) { - do { - GET_TOKEN (parser); - - if (parser->token.type != ASE_STX_TOKEN_IDENT) { - parser->error_code = ASE_STX_PARSER_ERROR_BLOCK_ARGUMENT_NAME; - return -1; - } - - /* TODO : store block arguments */ - GET_TOKEN (parser); - } while (parser->token.type == ASE_STX_TOKEN_COLON); - - if (!__is_vbar_token(&parser->token)) { - parser->error_code = ASE_STX_PARSER_ERROR_BLOCK_ARGUMENT_LIST; - return -1; - } - - GET_TOKEN (parser); - } - - /* TODO: create a block closure */ - if (__parse_temporaries(parser) == -1) return -1; - if (__parse_block_statements(parser) == -1) return -1; - - if (parser->token.type != ASE_STX_TOKEN_RBRACKET) { - parser->error_code = ASE_STX_PARSER_ERROR_BLOCK_NOT_CLOSED; - return -1; - } - - GET_TOKEN (parser); - - /* TODO: do special treatment for block closures */ - - return 0; -} - -static int __parse_message_continuation ( - ase_stx_parser_t* parser, ase_bool_t is_super) -{ - /* - * ::= - * (+ * [] ) | - * (+ [] ) | - * - * ::= (';' )* - */ - if (__parse_keyword_message(parser, is_super) == -1) return -1; - - while (parser->token.type == ASE_STX_TOKEN_SEMICOLON) { - EMIT_CODE_TEST (parser, ASE_T("DoSpecial(DUP_RECEIVER(CASCADE))"), ASE_T("")); - GET_TOKEN (parser); - - if (__parse_keyword_message(parser, ase_false) == -1) return -1; - EMIT_CODE_TEST (parser, ASE_T("DoSpecial(POP_TOP)"), ASE_T("")); - } - - return 0; -} - -static int __parse_keyword_message (ase_stx_parser_t* parser, ase_bool_t is_super) -{ - /* - * ::= (keyword )+ - * ::= * * - */ - - ase_stx_name_t name; - ase_word_t pos; - ase_bool_t is_super2; - int nargs = 0, n; - - if (__parse_binary_message (parser, is_super) == -1) return -1; - if (parser->token.type != ASE_STX_TOKEN_KEYWORD) return 0; - - if (ase_stx_name_open(&name, 0) == ASE_NULL) { - parser->error_code = ASE_STX_PARSER_ERROR_MEMORY; - return -1; - } - - do { - if (ase_stx_name_adds(&name, parser->token.name.buffer) == -1) { - parser->error_code = ASE_STX_PARSER_ERROR_MEMORY; - ase_stx_name_close (&name); - return -1; - } - - GET_TOKEN (parser); - if (__parse_primary(parser, ASE_NULL, &is_super2) == -1) { - ase_stx_name_close (&name); - return -1; - } - - if (__parse_binary_message(parser, is_super2) == -1) { - ase_stx_name_close (&name); - return -1; - } - - nargs++; - /* TODO: check if it has too many arguments.. */ - } while (parser->token.type == ASE_STX_TOKEN_KEYWORD); - - pos = __add_symbol_literal (parser, name.buffer, name.size); - if (pos == -1) { - ase_stx_name_close (&name); - return -1; - } - - n = (is_super)? - __emit_send_to_super(parser,nargs,pos): - __emit_send_to_self(parser,nargs,pos); - if (n == -1) { - ase_stx_name_close (&name); - return -1; - } - - ase_stx_name_close (&name); - return 0; -} - -static int __parse_binary_message (ase_stx_parser_t* parser, ase_bool_t is_super) -{ - /* - * ::= binarySelector - * ::= * - */ - ase_word_t pos; - ase_bool_t is_super2; - int n; - - if (__parse_unary_message (parser, is_super) == -1) return -1; - - while (parser->token.type == ASE_STX_TOKEN_BINARY) { - ase_char_t* op = ase_stx_token_yield (&parser->token, 0); - if (op == ASE_NULL) { - parser->error_code = ASE_STX_PARSER_ERROR_MEMORY; - return -1; - } - - GET_TOKEN (parser); - if (__parse_primary(parser, ASE_NULL, &is_super2) == -1) { - ase_free (op); - return -1; - } - - if (__parse_unary_message(parser, is_super2) == -1) { - ase_free (op); - return -1; - } - - pos = __add_symbol_literal (parser, op, ase_strlen(op)); - if (pos == -1) { - ase_free (op); - return -1; - } - - n = (is_super)? - __emit_send_to_super(parser,2,pos): - __emit_send_to_self(parser,2,pos); - if (n == -1) { - ase_free (op); - return -1; - } - - ase_free (op); - } - - return 0; -} - -static int __parse_unary_message (ase_stx_parser_t* parser, ase_bool_t is_super) -{ - /* ::= unarySelector */ - - ase_word_t pos; - int n; - - while (parser->token.type == ASE_STX_TOKEN_IDENT) { - pos = __add_symbol_literal (parser, - parser->token.name.buffer, parser->token.name.size); - if (pos == -1) return -1; - - n = (is_super)? - __emit_send_to_super(parser,0,pos): - __emit_send_to_self(parser,0,pos); - if (n == -1) return -1; - - GET_TOKEN (parser); - } - - return 0; -} - -static int __get_token (ase_stx_parser_t* parser) -{ - ase_cint_t c; - - do { - if (__skip_spaces(parser) == -1) return -1; - if (parser->curc == ASE_T('"')) { - GET_CHAR (parser); - if (__skip_comment(parser) == -1) return -1; - } - else break; - } while (1); - - c = parser->curc; - ase_stx_token_clear (&parser->token); - - if (c == ASE_T_EOF) { - parser->token.type = ASE_STX_TOKEN_END; - } - else if (ase_isalpha(c)) { - if (__get_ident(parser) == -1) return -1; - } - else if (ase_isdigit(c)) { - if (__get_numlit(parser, ase_false) == -1) return -1; - } - else if (c == ASE_T('$')) { - GET_CHAR (parser); - if (__get_charlit(parser) == -1) return -1; - } - else if (c == ASE_T('\'')) { - GET_CHAR (parser); - if (__get_strlit(parser) == -1) return -1; - } - else if (c == ASE_T(':')) { - parser->token.type = ASE_STX_TOKEN_COLON; - ADD_TOKEN_CHAR(parser, c); - GET_CHAR (parser); - - c = parser->curc; - if (c == ASE_T('=')) { - parser->token.type = ASE_STX_TOKEN_ASSIGN; - ADD_TOKEN_CHAR(parser, c); - GET_CHAR (parser); - } - } - else if (c == ASE_T('^')) { - parser->token.type = ASE_STX_TOKEN_RETURN; - ADD_TOKEN_CHAR(parser, c); - GET_CHAR (parser); - } - else if (c == ASE_T('[')) { - parser->token.type = ASE_STX_TOKEN_LBRACKET; - ADD_TOKEN_CHAR(parser, c); - GET_CHAR (parser); - } - else if (c == ASE_T(']')) { - parser->token.type = ASE_STX_TOKEN_RBRACKET; - ADD_TOKEN_CHAR(parser, c); - GET_CHAR (parser); - } - else if (c == ASE_T('(')) { - parser->token.type = ASE_STX_TOKEN_LPAREN; - ADD_TOKEN_CHAR(parser, c); - GET_CHAR (parser); - } - else if (c == ASE_T(')')) { - parser->token.type = ASE_STX_TOKEN_RPAREN; - ADD_TOKEN_CHAR(parser, c); - GET_CHAR (parser); - } - else if (c == ASE_T('#')) { - /*ADD_TOKEN_CHAR(parser, c);*/ - GET_CHAR (parser); - - c = parser->curc; - if (c == ASE_T_EOF) { - parser->error_code = ASE_STX_PARSER_ERROR_LITERAL; - return -1; - } - else if (c == ASE_T('(')) { - ADD_TOKEN_CHAR(parser, c); - parser->token.type = ASE_STX_TOKEN_APAREN; - GET_CHAR (parser); - } - else if (c == ASE_T('\'')) { - GET_CHAR (parser); - if (__get_strlit(parser) == -1) return -1; - parser->token.type = ASE_STX_TOKEN_SYMLIT; - } - else if (!__is_closing_char(c) && !ase_isspace(c)) { - do { - ADD_TOKEN_CHAR(parser, c); - GET_CHAR (parser); - c = parser->curc; - } while (!__is_closing_char(c) && !ase_isspace(c)); - - parser->token.type = ASE_STX_TOKEN_SYMLIT; - } - else { - parser->error_code = ASE_STX_PARSER_ERROR_LITERAL; - return -1; - } - } - else if (c == ASE_T('.')) { - parser->token.type = ASE_STX_TOKEN_PERIOD; - ADD_TOKEN_CHAR(parser, c); - GET_CHAR (parser); - } - else if (c == ASE_T(';')) { - parser->token.type = ASE_STX_TOKEN_SEMICOLON; - ADD_TOKEN_CHAR(parser, c); - GET_CHAR (parser); - } - else if (__is_binary_char(c)) { - if (__get_binary(parser) == -1) return -1; - } - else { - parser->error_code = ASE_STX_PARSER_ERROR_CHAR; - return -1; - } - -//ase_printf (ASE_T("TOKEN: %s\n"), parser->token.name.buffer); - return 0; -} - -static int __get_ident (ase_stx_parser_t* parser) -{ - /* - * identifier ::= letter (letter | digit)* - * keyword ::= identifier ':' - */ - - ase_cint_t c = parser->curc; - parser->token.type = ASE_STX_TOKEN_IDENT; - - do { - ADD_TOKEN_CHAR(parser, c); - GET_CHAR (parser); - c = parser->curc; - } while (ase_isalnum(c)); - - if (c == ASE_T(':')) { - ADD_TOKEN_CHAR (parser, c); - parser->token.type = ASE_STX_TOKEN_KEYWORD; - GET_CHAR (parser); - } - - return 0; -} - -static int __get_numlit (ase_stx_parser_t* parser, ase_bool_t negated) -{ - /* - * ::= ['-'] - * ::= integer | float | scaledDecimal - * integer ::= decimalInteger | radixInteger - * decimalInteger ::= digits - * digits ::= digit+ - * radixInteger ::= radixSpecifier 'r' radixDigits - * radixSpecifier := digits - * radixDigits ::= (digit | uppercaseAlphabetic)+ - * float ::= mantissa [exponentLetter exponent] - * mantissa ::= digits'.' digits - * exponent ::= ['-']decimalInteger - * exponentLetter ::= 'e' | 'd' | 'q' - * scaledDecimal ::= scaledMantissa 's' [fractionalDigits] - * scaledMantissa ::= decimalInteger | mantissa - * fractionalDigits ::= decimalInteger - */ - - ase_cint_t c = parser->curc; - parser->token.type = ASE_STX_TOKEN_NUMLIT; - - do { - ADD_TOKEN_CHAR(parser, c); - GET_CHAR (parser); - c = parser->curc; - } while (ase_isalnum(c)); - - /* TODO; more */ - return 0; -} - -static int __get_charlit (ase_stx_parser_t* parser) -{ - /* - * character_literal ::= '$' character - * character ::= "Any character in the implementation-defined character set" - */ - - ase_cint_t c = parser->curc; /* even a new-line or white space would be taken */ - if (c == ASE_T_EOF) { - parser->error_code = ASE_STX_PARSER_ERROR_CHARLIT; - return -1; - } - - parser->token.type = ASE_STX_TOKEN_CHARLIT; - ADD_TOKEN_CHAR(parser, c); - GET_CHAR (parser); - return 0; -} - -static int __get_strlit (ase_stx_parser_t* parser) -{ - /* - * string_literal ::= stringDelimiter stringBody stringDelimiter - * stringBody ::= (nonStringDelimiter | (stringDelimiter stringDelimiter)*) - * stringDelimiter ::= ''' "a single quote" - */ - - /* TODO: C-like string */ - - ase_cint_t c = parser->curc; - parser->token.type = ASE_STX_TOKEN_STRLIT; - - do { - do { - ADD_TOKEN_CHAR (parser, c); - GET_CHAR (parser); - c = parser->curc; - - if (c == ASE_T_EOF) { - parser->error_code = ASE_STX_PARSER_ERROR_STRLIT; - return -1; - } - } while (c != ASE_T('\'')); - - GET_CHAR (parser); - c = parser->curc; - } while (c == ASE_T('\'')); - - return 0; -} - -static int __get_binary (ase_stx_parser_t* parser) -{ - /* - * binarySelector ::= binaryCharacter+ - */ - - ase_cint_t c = parser->curc; - ADD_TOKEN_CHAR (parser, c); - - if (c == ASE_T('-')) { - GET_CHAR (parser); - c = parser->curc; - if (ase_isdigit(c)) return __get_numlit(parser,ase_true); - } - else { - GET_CHAR (parser); - c = parser->curc; - } - - /* up to 2 characters only */ - if (__is_binary_char(c)) { - ADD_TOKEN_CHAR (parser, c); - GET_CHAR (parser); - c = parser->curc; - } - - /* or up to any occurrences */ - /* - while (__is_binary_char(c)) { - ADD_TOKEN_CHAR (parser, c); - GET_CHAR (parser); - c = parser->curc; - } - */ - - parser->token.type = ASE_STX_TOKEN_BINARY; - return 0; -} - -static int __skip_spaces (ase_stx_parser_t* parser) -{ - while (ase_isspace(parser->curc)) GET_CHAR (parser); - return 0; -} - -static int __skip_comment (ase_stx_parser_t* parser) -{ - while (parser->curc != ASE_T('"')) GET_CHAR (parser); - GET_CHAR (parser); - return 0; -} - -static int __get_char (ase_stx_parser_t* parser) -{ - ase_cint_t c; - - if (parser->ungotc_count > 0) { - parser->curc = parser->ungotc[parser->ungotc_count--]; - } - else { - if (parser->input_func ( - ASE_STX_PARSER_INPUT_CONSUME, - parser->input_owner, (void*)&c) == -1) { - parser->error_code = ASE_STX_PARSER_ERROR_INPUT; - return -1; - } - parser->curc = c; - } - return 0; -} - -static int __unget_char (ase_stx_parser_t* parser, ase_cint_t c) -{ - if (parser->ungotc_count >= ase_countof(parser->ungotc)) return -1; - parser->ungotc[parser->ungotc_count++] = c; - return 0; -} - -static int __open_input (ase_stx_parser_t* parser, void* input) -{ - if (parser->input_func( - ASE_STX_PARSER_INPUT_OPEN, - (void*)&parser->input_owner, input) == -1) { - parser->error_code = ASE_STX_PARSER_ERROR_INPUT; - return -1; - } - - parser->error_code = ASE_STX_PARSER_ERROR_NONE; - parser->curc = ASE_T_EOF; - parser->ungotc_count = 0; - return 0; -} - -static int __close_input (ase_stx_parser_t* parser) -{ - if (parser->input_func( - ASE_STX_PARSER_INPUT_CLOSE, - parser->input_owner, ASE_NULL) == -1) { - parser->error_code = ASE_STX_PARSER_ERROR_INPUT; - return -1; - } - - return 0; -} - diff --git a/qse/stx/parser.h b/qse/stx/parser.h deleted file mode 100644 index 928bb1c1..00000000 --- a/qse/stx/parser.h +++ /dev/null @@ -1,107 +0,0 @@ -/* - * $Id: parser.h 118 2008-03-03 11:21:33Z baconevi $ - */ - -#ifndef _ASE_STX_PARSER_H_ -#define _ASE_STX_PARSER_H_ - -#include -#include -#include -#include - -enum -{ - ASE_STX_PARSER_ERROR_NONE, - - /* system errors */ - ASE_STX_PARSER_ERROR_INPUT_FUNC, - ASE_STX_PARSER_ERROR_INPUT, - ASE_STX_PARSER_ERROR_MEMORY, - - /* lexical errors */ - ASE_STX_PARSER_ERROR_CHAR, - ASE_STX_PARSER_ERROR_CHARLIT, - ASE_STX_PARSER_ERROR_STRLIT, - ASE_STX_PARSER_ERROR_LITERAL, - - /* syntatic error */ - ASE_STX_PARSER_ERROR_MESSAGE_SELECTOR, - ASE_STX_PARSER_ERROR_ARGUMENT_NAME, - ASE_STX_PARSER_ERROR_TOO_MANY_ARGUMENTS, - - ASE_STX_PARSER_ERROR_PRIMITIVE_KEYWORD, - ASE_STX_PARSER_ERROR_PRIMITIVE_NUMBER, - ASE_STX_PARSER_ERROR_PRIMITIVE_NUMBER_RANGE, - ASE_STX_PARSER_ERROR_PRIMITIVE_NOT_CLOSED, - - ASE_STX_PARSER_ERROR_TEMPORARIES_NOT_CLOSED, - ASE_STX_PARSER_ERROR_TOO_MANY_TEMPORARIES, - ASE_STX_PARSER_ERROR_PSEUDO_VARIABLE, - ASE_STX_PARSER_ERROR_PRIMARY, - - ASE_STX_PARSER_ERROR_NO_PERIOD, - ASE_STX_PARSER_ERROR_NO_RPAREN, - ASE_STX_PARSER_ERROR_BLOCK_ARGUMENT_NAME, - ASE_STX_PARSER_ERROR_BLOCK_ARGUMENT_LIST, - ASE_STX_PARSER_ERROR_BLOCK_NOT_CLOSED, - - ASE_STX_PARSER_ERROR_UNDECLARED_NAME, - ASE_STX_PARSER_ERROR_TOO_MANY_LITERALS -}; - -enum -{ - /* input_func cmd */ - ASE_STX_PARSER_INPUT_OPEN, - ASE_STX_PARSER_INPUT_CLOSE, - ASE_STX_PARSER_INPUT_CONSUME, - ASE_STX_PARSER_INPUT_REWIND -}; - -typedef struct ase_stx_parser_t ase_stx_parser_t; - -struct ase_stx_parser_t -{ - ase_stx_t* stx; - int error_code; - - ase_word_t method_class; - ase_stx_name_t method_name; - - ase_char_t* temporaries[256]; /* TODO: different size? or dynamic? */ - ase_word_t argument_count; - ase_word_t temporary_count; - - ase_word_t literals[256]; /* TODO: make it a dynamic array */ - ase_word_t literal_count; - - ase_arr_t bytecode; - - ase_stx_token_t token; - ase_cint_t curc; - ase_cint_t ungotc[5]; - ase_size_t ungotc_count; - - void* input_owner; - int (*input_func) (int cmd, void* owner, void* arg); - - ase_bool_t __dynamic; -}; - -#ifdef __cplusplus -extern "C" { -#endif - -ase_stx_parser_t* ase_stx_parser_open (ase_stx_parser_t* parser, ase_stx_t* stx); -void ase_stx_parser_close (ase_stx_parser_t* parser); - -const ase_char_t* ase_stx_parser_error_string (ase_stx_parser_t* parser); -int ase_stx_parser_parse_method ( - ase_stx_parser_t* parser, ase_word_t method_class, void* input); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/qse/stx/stx.c b/qse/stx/stx.c deleted file mode 100644 index c8412836..00000000 --- a/qse/stx/stx.c +++ /dev/null @@ -1,70 +0,0 @@ -/* - * $Id: stx.c 118 2008-03-03 11:21:33Z baconevi $ - */ - -#include -#include -#include - -ase_stx_t* ase_stx_open (ase_stx_t* stx, ase_word_t capacity) -{ - ase_word_t i; - - if (stx == ASE_NULL) { - stx = (ase_stx_t*)ase_malloc (ase_sizeof(stx)); - if (stx == ASE_NULL) return ASE_NULL; - stx->__dynamic = ase_true; - } - else stx->__dynamic = ase_false; - - if (ase_stx_memory_open (&stx->memory, capacity) == ASE_NULL) { - if (stx->__dynamic) ase_free (stx); - return ASE_NULL; - } - - stx->symtab.size = 0; - stx->symtab.capacity = 128; /* TODO: symbol table size */ - stx->symtab.datum = (ase_word_t*)ase_malloc ( - ase_sizeof(ase_word_t) * stx->symtab.capacity); - if (stx->symtab.datum == ASE_NULL) { - ase_stx_memory_close (&stx->memory); - if (stx->__dynamic) ase_free (stx); - return ASE_NULL; - } - - stx->nil = ASE_STX_NIL; - stx->true = ASE_STX_TRUE; - stx->false = ASE_STX_FALSE; - - stx->smalltalk = ASE_STX_NIL; - - stx->class_symbol = ASE_STX_NIL; - stx->class_metaclass = ASE_STX_NIL; - stx->class_association = ASE_STX_NIL; - - stx->class_object = ASE_STX_NIL; - stx->class_class = ASE_STX_NIL; - stx->class_array = ASE_STX_NIL; - stx->class_bytearray = ASE_STX_NIL; - stx->class_string = ASE_STX_NIL; - stx->class_character = ASE_STX_NIL; - stx->class_context = ASE_STX_NIL; - stx->class_system_dictionary = ASE_STX_NIL; - stx->class_method = ASE_STX_NIL; - stx->class_smallinteger = ASE_STX_NIL; - - for (i = 0; i < stx->symtab.capacity; i++) { - stx->symtab.datum[i] = stx->nil; - } - - stx->__wantabort = ase_false; - return stx; -} - -void ase_stx_close (ase_stx_t* stx) -{ - ase_free (stx->symtab.datum); - ase_stx_memory_close (&stx->memory); - if (stx->__dynamic) ase_free (stx); -} - diff --git a/qse/stx/stx.h b/qse/stx/stx.h deleted file mode 100644 index 4e64a869..00000000 --- a/qse/stx/stx.h +++ /dev/null @@ -1,163 +0,0 @@ -/* - * $Id: stx.h 118 2008-03-03 11:21:33Z baconevi $ - */ - -#ifndef _ASE_STX_STX_H_ -#define _ASE_STX_STX_H_ - -#include -#include - -typedef struct ase_stx_objhdr_t ase_stx_objhdr_t; -typedef struct ase_stx_object_t ase_stx_object_t; -typedef struct ase_stx_word_object_t ase_stx_word_object_t; -typedef struct ase_stx_byte_object_t ase_stx_byte_object_t; -typedef struct ase_stx_char_object_t ase_stx_char_object_t; -typedef struct ase_stx_memory_t ase_stx_memory_t; -typedef struct ase_stx_symtab_t ase_stx_symtab_t; -typedef struct ase_stx_t ase_stx_t; - -/* common object structure */ -struct ase_stx_objhdr_t -{ - /* access - type: 2; size: rest; - * type - word indexed: 00 byte indexed: 01 char indexed: 10 - */ - ase_word_t access; - ase_word_t class; -}; - -struct ase_stx_object_t -{ - ase_stx_objhdr_t header; -}; - -struct ase_stx_word_object_t -{ - ase_stx_objhdr_t header; - ase_word_t data[1]; -}; - -struct ase_stx_byte_object_t -{ - ase_stx_objhdr_t header; - ase_byte_t data[1]; -}; - -struct ase_stx_char_object_t -{ - ase_stx_objhdr_t header; - ase_char_t data[1]; -}; - - -struct ase_stx_memory_t -{ - ase_word_t capacity; - ase_stx_object_t** slots; - ase_stx_object_t** free; - ase_bool_t __dynamic; -}; - -struct ase_stx_symtab_t -{ - ase_word_t* datum; - ase_word_t size; - ase_word_t capacity; -}; - -struct ase_stx_t -{ - ase_stx_memory_t memory; - ase_stx_symtab_t symtab; - - ase_word_t nil; - ase_word_t true; - ase_word_t false; - - ase_word_t smalltalk; - - ase_word_t class_symbol; - ase_word_t class_metaclass; - ase_word_t class_association; - - ase_word_t class_object; - ase_word_t class_class; - ase_word_t class_array; - ase_word_t class_bytearray; - ase_word_t class_string; - ase_word_t class_character; - ase_word_t class_context; - ase_word_t class_system_dictionary; - ase_word_t class_method; - ase_word_t class_smallinteger; - - ase_bool_t __dynamic; - ase_bool_t __wantabort; /* TODO: make it a function pointer */ -}; - -#define ASE_STX_IS_SMALLINT(x) (((x) & 0x01) == 0x01) -#define ASE_STX_TO_SMALLINT(x) (((x) << 1) | 0x01) -#define ASE_STX_FROM_SMALLINT(x) ((x) >> 1) - -#define ASE_STX_IS_OINDEX(x) (((x) & 0x01) == 0x00) -#define ASE_STX_TO_OINDEX(x) (((x) << 1) | 0x00) -#define ASE_STX_FROM_OINDEX(x) ((x) >> 1) - -#define ASE_STX_NIL ASE_STX_TO_OINDEX(0) -#define ASE_STX_TRUE ASE_STX_TO_OINDEX(1) -#define ASE_STX_FALSE ASE_STX_TO_OINDEX(2) - -#define ASE_STX_OBJECT(stx,idx) (((stx)->memory).slots[ASE_STX_FROM_OINDEX(idx)]) -#define ASE_STX_CLASS(stx,idx) (ASE_STX_OBJECT(stx,(idx))->header.class) -#define ASE_STX_ACCESS(stx,idx) (ASE_STX_OBJECT(stx,(idx))->header.access) -#define ASE_STX_DATA(stx,idx) ((void*)(ASE_STX_OBJECT(stx,idx) + 1)) - -#define ASE_STX_TYPE(stx,idx) (ASE_STX_ACCESS(stx,idx) & 0x03) -#define ASE_STX_SIZE(stx,idx) (ASE_STX_ACCESS(stx,idx) >> 0x02) - -#define ASE_STX_WORD_INDEXED (0x00) -#define ASE_STX_BYTE_INDEXED (0x01) -#define ASE_STX_CHAR_INDEXED (0x02) - -#define ASE_STX_IS_WORD_OBJECT(stx,idx) \ - (ASE_STX_TYPE(stx,idx) == ASE_STX_WORD_INDEXED) -#define ASE_STX_IS_BYTE_OBJECT(stx,idx) \ - (ASE_STX_TYPE(stx,idx) == ASE_STX_BYTE_INDEXED) -#define ASE_STX_IS_CHAR_OBJECT(stx,idx) \ - (ASE_STX_TYPE(stx,idx) == ASE_STX_CHAR_INDEXED) - -#define ASE_STX_WORD_OBJECT(stx,idx) \ - ((ase_stx_word_object_t*)ASE_STX_OBJECT(stx,idx)) -#define ASE_STX_BYTE_OBJECT(stx,idx) \ - ((ase_stx_byte_object_t*)ASE_STX_OBJECT(stx,idx)) -#define ASE_STX_CHAR_OBJECT(stx,idx) \ - ((ase_stx_char_object_t*)ASE_STX_OBJECT(stx,idx)) - -/* -#define ASE_STX_WORD_AT(stx,idx,n) \ - (((ase_word_t*)(ASE_STX_OBJECT(stx,idx) + 1))[n]) -#define ASE_STX_BYTE_AT(stx,idx,n) \ - (((ase_byte_t*)(ASE_STX_OBJECT(stx,idx) + 1))[n]) -#define ASE_STX_CHAR_AT(stx,idx,n) \ - (((ase_char_t*)(ASE_STX_OBJECT(stx,idx) + 1))[n]) -*/ -#define ASE_STX_WORD_AT(stx,idx,n) \ - (ASE_STX_WORD_OBJECT(stx,idx)->data[n]) -#define ASE_STX_BYTE_AT(stx,idx,n) \ - (ASE_STX_BYTE_OBJECT(stx,idx)->data[n]) -#define ASE_STX_CHAR_AT(stx,idx,n) \ - (ASE_STX_CHAR_OBJECT(stx,idx)->data[n]) - -#ifdef __cplusplus -extern "C" { -#endif - -ase_stx_t* ase_stx_open (ase_stx_t* stx, ase_word_t capacity); -void ase_stx_close (ase_stx_t* stx); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/qse/stx/symbol.c b/qse/stx/symbol.c deleted file mode 100644 index 464530f0..00000000 --- a/qse/stx/symbol.c +++ /dev/null @@ -1,102 +0,0 @@ -/* - * $Id: symbol.c 118 2008-03-03 11:21:33Z baconevi $ - */ - -#include -#include -#include - -static void __grow_symtab (ase_stx_t* stx) -{ - ase_word_t capa, ncapa, i, j; - ase_word_t* nspace; - - capa = stx->symtab.capacity; - ncapa = capa << 1; - - nspace = (ase_word_t*)ase_malloc(ase_sizeof(ase_word_t) * ncapa); - if (nspace == ASE_NULL) - { - /* TODO: handle memory error */ - } - - for (i = 0; i < capa; i++) - { - ase_word_t x = stx->symtab.datum[i]; - if (x == stx->nil) continue; - - j = ase_stx_strxhash ( - ASE_STX_DATA(stx,x), ASE_STX_SIZE(stx,x)) % ncapa; - - while (1) - { - if (nspace[j] == stx->nil) - { - nspace[j] = x; - break; - } - j = (j % ncapa) + 1; - } - } - - stx->symtab.capacity = ncapa; - ase_free (stx->symtab.datum); - stx->symtab.datum = nspace; -} - -ase_word_t ase_stx_new_symbol (ase_stx_t* stx, const ase_char_t* name) -{ - return ase_stx_new_symbolx (stx, name, ase_strlen(name)); -} - -ase_word_t ase_stx_new_symbolx ( - ase_stx_t* stx, const ase_char_t* name, ase_word_t len) -{ - ase_word_t capa, hash, index, size, x; - - capa = stx->symtab.capacity; - size = stx->symtab.size; - - if (capa <= size + 1) - { - __grow_symtab (stx); - capa = stx->symtab.capacity; - } - - hash = ase_stx_strxhash(name,len); - index = hash % stx->symtab.capacity; - - while (1) - { - x = stx->symtab.datum[index]; - if (x == stx->nil) - { - /* insert a new item into an empty slot */ - x = ase_stx_alloc_char_objectx (stx, name, len); - ASE_STX_CLASS(stx,x) = stx->class_symbol; - stx->symtab.datum[index] = x; - stx->symtab.size++; - break; - } - - if (ase_strxncmp(name, len, - ASE_STX_DATA(stx,x), ASE_STX_SIZE(stx,x)) == 0) break; - - index = (index % stx->symtab.capacity) + 1; - } - - return x; -} - -void ase_stx_traverse_symbol_table ( - ase_stx_t* stx, void (*func) (ase_stx_t*,ase_word_t,void*), void* data) -{ - ase_word_t index, x; - - for (index = 0; index < stx->symtab.capacity; index++) - { - x = stx->symtab.datum[index]; - if (x != stx->nil) func (stx, x, data); - } -} - diff --git a/qse/stx/symbol.h b/qse/stx/symbol.h deleted file mode 100644 index 751979d9..00000000 --- a/qse/stx/symbol.h +++ /dev/null @@ -1,40 +0,0 @@ -/* - * $Id: symbol.h 118 2008-03-03 11:21:33Z baconevi $ - */ - -#ifndef _ASE_STX_SYMBOL_H_ -#define _ASE_STX_SYMBOL_H_ - -#include - -#define ASE_STX_SYMLINK_SIZE 2 -#define ASE_STX_SYMLINK_LINK 0 -#define ASE_STX_SYMLINK_SYMBOL 1 - -struct ase_stx_symlink_t -{ - ase_stx_objhdr_t header; - ase_word_t link; - ase_word_t symbol; -}; - -typedef struct ase_stx_symlink_t ase_stx_symlink_t; - -#ifdef __cplusplus -extern "C" { -#endif - -ase_word_t ase_stx_new_symbol_link (ase_stx_t* stx, ase_word_t sym); - -ase_word_t ase_stx_new_symbol ( - ase_stx_t* stx, const ase_char_t* name); -ase_word_t ase_stx_new_symbolx ( - ase_stx_t* stx, const ase_char_t* name, ase_word_t len); -void ase_stx_traverse_symbol_table ( - ase_stx_t* stx, void (*func) (ase_stx_t*,ase_word_t,void*), void* data); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/qse/stx/token.c b/qse/stx/token.c deleted file mode 100644 index 117e890b..00000000 --- a/qse/stx/token.c +++ /dev/null @@ -1,77 +0,0 @@ -/* - * $Id: token.c 118 2008-03-03 11:21:33Z baconevi $ - */ - -#include -#include - -ase_stx_token_t* ase_stx_token_open ( - ase_stx_token_t* token, ase_word_t capacity) -{ - if (token == ASE_NULL) { - token = (ase_stx_token_t*) - ase_malloc (ase_sizeof(ase_stx_token_t)); - if (token == ASE_NULL) return ASE_NULL; - token->__dynamic = ase_true; - } - else token->__dynamic = ase_false; - - if (ase_stx_name_open(&token->name, capacity) == ASE_NULL) { - if (token->__dynamic) ase_free (token); - return ASE_NULL; - } - - /* - token->ivalue = 0; - token->fvalue = .0; - */ - token->type = ASE_STX_TOKEN_END; - return token; -} - -void ase_stx_token_close (ase_stx_token_t* token) -{ - ase_stx_name_close (&token->name); - if (token->__dynamic) ase_free (token); -} - -int ase_stx_token_addc (ase_stx_token_t* token, ase_cint_t c) -{ - return ase_stx_name_addc (&token->name, c); -} - -int ase_stx_token_adds (ase_stx_token_t* token, const ase_char_t* s) -{ - return ase_stx_name_adds (&token->name, s); -} - -void ase_stx_token_clear (ase_stx_token_t* token) -{ - /* - token->ivalue = 0; - token->fvalue = .0; - */ - - token->type = ASE_STX_TOKEN_END; - ase_stx_name_clear (&token->name); -} - -ase_char_t* ase_stx_token_yield (ase_stx_token_t* token, ase_word_t capacity) -{ - ase_char_t* p; - - p = ase_stx_name_yield (&token->name, capacity); - if (p == ASE_NULL) return ASE_NULL; - - /* - token->ivalue = 0; - token->fvalue = .0; - */ - token->type = ASE_STX_TOKEN_END; - return p; -} - -int ase_stx_token_compare_name (ase_stx_token_t* token, const ase_char_t* str) -{ - return ase_stx_name_compare (&token->name, str); -} diff --git a/qse/stx/token.h b/qse/stx/token.h deleted file mode 100644 index de30c581..00000000 --- a/qse/stx/token.h +++ /dev/null @@ -1,66 +0,0 @@ -/* - * $Id: token.h 118 2008-03-03 11:21:33Z baconevi $ - */ - -#ifndef _ASE_STX_TOKEN_H_ -#define _ASE_STX_TOKEN_H_ - -#include -#include - -enum -{ - ASE_STX_TOKEN_END, - ASE_STX_TOKEN_CHARLIT, - ASE_STX_TOKEN_STRLIT, - ASE_STX_TOKEN_SYMLIT, - ASE_STX_TOKEN_NUMLIT, - ASE_STX_TOKEN_IDENT, - ASE_STX_TOKEN_BINARY, - ASE_STX_TOKEN_KEYWORD, - ASE_STX_TOKEN_PRIMITIVE, - ASE_STX_TOKEN_ASSIGN, - ASE_STX_TOKEN_COLON, - ASE_STX_TOKEN_RETURN, - ASE_STX_TOKEN_LBRACKET, - ASE_STX_TOKEN_RBRACKET, - ASE_STX_TOKEN_LPAREN, - ASE_STX_TOKEN_RPAREN, - ASE_STX_TOKEN_APAREN, - ASE_STX_TOKEN_PERIOD, - ASE_STX_TOKEN_SEMICOLON -}; - -struct ase_stx_token_t -{ - int type; - - /* - ase_stx_int_t ivalue; - ase_stx_real_t fvalue; - */ - ase_stx_name_t name; - ase_bool_t __dynamic; -}; - -typedef struct ase_stx_token_t ase_stx_token_t; - -#ifdef __cplusplus -extern "C" { -#endif - -ase_stx_token_t* ase_stx_token_open ( - ase_stx_token_t* token, ase_word_t capacity); -void ase_stx_token_close (ase_stx_token_t* token); - -int ase_stx_token_addc (ase_stx_token_t* token, ase_cint_t c); -int ase_stx_token_adds (ase_stx_token_t* token, const ase_char_t* s); -void ase_stx_token_clear (ase_stx_token_t* token); -ase_char_t* ase_stx_token_yield (ase_stx_token_t* token, ase_word_t capacity); -int ase_stx_token_compare_name (ase_stx_token_t* token, const ase_char_t* str); - -#ifdef __cplusplus -} -#endif - -#endif