OSDN Git Service

-- utakata::utf8_string::is_ascii_charを追加。
authorderui <derutakayu@user.sourceforge.jp>
Fri, 5 Jun 2009 16:57:24 +0000 (01:57 +0900)
committerderui <derutakayu@user.sourceforge.jp>
Fri, 5 Jun 2009 16:57:24 +0000 (01:57 +0900)
-- lexer::parse関数をlexer::lexにリネーム

21 files changed:
.gitignore
GPATH
GRTAGS
GSYMS
GTAGS
common/GRTAGS
common/GSYMS
config.h.in [new file with mode: 0644]
config.log [new file with mode: 0644]
config.status [new file with mode: 0755]
lexeme.h [new file with mode: 0644]
lexer.h
mkinstalldirs [new file with mode: 0755]
test/GPATH
test/GRTAGS
test/GSYMS
test/GTAGS
test/utf8_string_test
test/utf8_string_test.cpp
utf8_string.h
utf8_string_test.cpp [new file with mode: 0644]

index c26af84..1ddeba5 100644 (file)
 /autom4te.cache/traces.1
 /autom4te.cache/traces.2
 /autoscan-2.63.log
-/config.h
-/config.h.in
 /config.h.in~
-/config.log
-/config.status
 /cpu.o
 /depcomp
 /gpath
@@ -26,7 +22,6 @@
 /main.cpp.bak
 /main.o
 /missing
-/mkinstalldirs
 /operand.o
 /stamp-h1
 /utakata
@@ -51,3 +46,4 @@
 /test/utf8_test.o
 /utf8_string.o
 /.deps/TextArrayFormat.Po
+/config.h
diff --git a/GPATH b/GPATH
index 0caddac..dcc4a56 100644 (file)
Binary files a/GPATH and b/GPATH differ
diff --git a/GRTAGS b/GRTAGS
index adcb410..ccb0cef 100644 (file)
Binary files a/GRTAGS and b/GRTAGS differ
diff --git a/GSYMS b/GSYMS
index 05b325f..1b37d12 100644 (file)
Binary files a/GSYMS and b/GSYMS differ
diff --git a/GTAGS b/GTAGS
index 2a77e9a..e29228a 100644 (file)
Binary files a/GTAGS and b/GTAGS differ
index 82f00a2..349fa6d 100644 (file)
Binary files a/common/GRTAGS and b/common/GRTAGS differ
index cdd0a51..9e734fe 100644 (file)
Binary files a/common/GSYMS and b/common/GSYMS differ
diff --git a/config.h.in b/config.h.in
new file mode 100644 (file)
index 0000000..ac1816c
--- /dev/null
@@ -0,0 +1,61 @@
+/* config.h.in.  Generated from configure.in by autoheader.  */
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#undef HAVE_INTTYPES_H
+
+/* Define to 1 if you have the <memory.h> header file. */
+#undef HAVE_MEMORY_H
+
+/* Define to 1 if stdbool.h conforms to C99. */
+#undef HAVE_STDBOOL_H
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#undef HAVE_STDINT_H
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#undef HAVE_STDLIB_H
+
+/* Define to 1 if you have the <strings.h> header file. */
+#undef HAVE_STRINGS_H
+
+/* Define to 1 if you have the <string.h> header file. */
+#undef HAVE_STRING_H
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#undef HAVE_SYS_STAT_H
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#undef HAVE_SYS_TYPES_H
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#undef HAVE_UNISTD_H
+
+/* Define to 1 if the system has the type `_Bool'. */
+#undef HAVE__BOOL
+
+/* Define to the address where bug reports for this package should be sent. */
+#undef PACKAGE_BUGREPORT
+
+/* Define to the full name of this package. */
+#undef PACKAGE_NAME
+
+/* Define to the full name and version of this package. */
+#undef PACKAGE_STRING
+
+/* Define to the one symbol short name of this package. */
+#undef PACKAGE_TARNAME
+
+/* Define to the version of this package. */
+#undef PACKAGE_VERSION
+
+/* Define to 1 if you have the ANSI C header files. */
+#undef STDC_HEADERS
+
+/* Define to `__inline__' or `__inline' if that's what the C compiler
+   calls it, or to nothing if 'inline' is not supported under any name.  */
+#ifndef __cplusplus
+#undef inline
+#endif
+
+/* Define to `unsigned int' if <sys/types.h> does not define. */
+#undef size_t
diff --git a/config.log b/config.log
new file mode 100644 (file)
index 0000000..c05673d
--- /dev/null
@@ -0,0 +1,633 @@
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by utakata configure 0.0.1, which was
+generated by GNU Autoconf 2.63.  Invocation command line was
+
+  $ ./configure 
+
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = localhost
+uname -m = i686
+uname -r = 2.6.28-gentoo-r5
+uname -s = Linux
+uname -v = #2 SMP Sun May 24 20:35:46 JST 2009
+
+/usr/bin/uname -p = Intel(R) Core(TM)2 Quad CPU Q6600 @ 2.40GHz
+/bin/uname -X     = unknown
+
+/bin/arch              = unknown
+/usr/bin/arch -k       = unknown
+/usr/convex/getsysinfo = unknown
+/usr/bin/hostinfo      = unknown
+/bin/machine           = unknown
+/usr/bin/oslevel       = unknown
+/bin/universe          = unknown
+
+PATH: /usr/local/bin
+PATH: /usr/local/sbin
+PATH: /usr/sbin
+PATH: /sbin
+PATH: /bin
+PATH: /usr/local/bin
+PATH: /usr/bin
+PATH: /usr/local/X11R6/bin
+PATH: /usr/X11R6/bin
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+configure:1883: checking for a BSD-compatible install
+configure:1951: result: /usr/bin/install -c
+configure:1962: checking whether build environment is sane
+configure:2005: result: yes
+configure:2030: checking for a thread-safe mkdir -p
+configure:2069: result: /bin/mkdir -p
+configure:2082: checking for gawk
+configure:2098: found /bin/gawk
+configure:2109: result: gawk
+configure:2120: checking whether make sets $(MAKE)
+configure:2142: result: yes
+configure:2377: checking for g++
+configure:2393: found /usr/bin/g++
+configure:2404: result: g++
+configure:2431: checking for C++ compiler version
+configure:2439: g++ --version >&5
+g++ (GCC) 4.1.2 (Gentoo 4.1.2 p1.0.2)
+Copyright (C) 2006 Free Software Foundation, Inc.
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+configure:2443: $? = 0
+configure:2450: g++ -v >&5
+Using built-in specs.
+Target: i686-pc-linux-gnu
+Configured with: /var/tmp/portage/sys-devel/gcc-4.1.2/work/gcc-4.1.2/configure --prefix=/usr --bindir=/usr/i686-pc-linux-gnu/gcc-bin/4.1.2 --includedir=/usr/lib/gcc/i686-pc-linux-gnu/4.1.2/include --datadir=/usr/share/gcc-data/i686-pc-linux-gnu/4.1.2 --mandir=/usr/share/gcc-data/i686-pc-linux-gnu/4.1.2/man --infodir=/usr/share/gcc-data/i686-pc-linux-gnu/4.1.2/info --with-gxx-include-dir=/usr/lib/gcc/i686-pc-linux-gnu/4.1.2/include/g++-v4 --host=i686-pc-linux-gnu --build=i686-pc-linux-gnu --disable-altivec --enable-nls --without-included-gettext --with-system-zlib --disable-checking --disable-werror --enable-secureplt --disable-libunwind-exceptions --disable-multilib --enable-libmudflap --disable-libssp --disable-libgcj --with-arch=i686 --enable-languages=c,c++,treelang,fortran --enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu
+Thread model: posix
+gcc version 4.1.2 (Gentoo 4.1.2 p1.0.2)
+configure:2454: $? = 0
+configure:2461: g++ -V >&5
+g++: '-V' option must have argument
+configure:2465: $? = 1
+configure:2488: checking for C++ compiler default output file name
+configure:2510: g++    conftest.cpp  >&5
+configure:2514: $? = 0
+configure:2552: result: a.out
+configure:2571: checking whether the C++ compiler works
+configure:2581: ./a.out
+configure:2585: $? = 0
+configure:2604: result: yes
+configure:2611: checking whether we are cross compiling
+configure:2613: result: no
+configure:2616: checking for suffix of executables
+configure:2623: g++ -o conftest    conftest.cpp  >&5
+configure:2627: $? = 0
+configure:2653: result: 
+configure:2659: checking for suffix of object files
+configure:2685: g++ -c   conftest.cpp >&5
+configure:2689: $? = 0
+configure:2714: result: o
+configure:2718: checking whether we are using the GNU C++ compiler
+configure:2747: g++ -c   conftest.cpp >&5
+configure:2754: $? = 0
+configure:2771: result: yes
+configure:2780: checking whether g++ accepts -g
+configure:2810: g++ -c -g  conftest.cpp >&5
+configure:2817: $? = 0
+configure:2918: result: yes
+configure:2952: checking for style of include used by make
+configure:2980: result: GNU
+configure:3005: checking dependency style of g++
+configure:3096: result: gcc3
+configure:3159: checking for gcc
+configure:3175: found /usr/bin/gcc
+configure:3186: result: gcc
+configure:3418: checking for C compiler version
+configure:3426: gcc --version >&5
+gcc (GCC) 4.1.2 (Gentoo 4.1.2 p1.0.2)
+Copyright (C) 2006 Free Software Foundation, Inc.
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+configure:3430: $? = 0
+configure:3437: gcc -v >&5
+Using built-in specs.
+Target: i686-pc-linux-gnu
+Configured with: /var/tmp/portage/sys-devel/gcc-4.1.2/work/gcc-4.1.2/configure --prefix=/usr --bindir=/usr/i686-pc-linux-gnu/gcc-bin/4.1.2 --includedir=/usr/lib/gcc/i686-pc-linux-gnu/4.1.2/include --datadir=/usr/share/gcc-data/i686-pc-linux-gnu/4.1.2 --mandir=/usr/share/gcc-data/i686-pc-linux-gnu/4.1.2/man --infodir=/usr/share/gcc-data/i686-pc-linux-gnu/4.1.2/info --with-gxx-include-dir=/usr/lib/gcc/i686-pc-linux-gnu/4.1.2/include/g++-v4 --host=i686-pc-linux-gnu --build=i686-pc-linux-gnu --disable-altivec --enable-nls --without-included-gettext --with-system-zlib --disable-checking --disable-werror --enable-secureplt --disable-libunwind-exceptions --disable-multilib --enable-libmudflap --disable-libssp --disable-libgcj --with-arch=i686 --enable-languages=c,c++,treelang,fortran --enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu
+Thread model: posix
+gcc version 4.1.2 (Gentoo 4.1.2 p1.0.2)
+configure:3441: $? = 0
+configure:3448: gcc -V >&5
+gcc: '-V' option must have argument
+configure:3452: $? = 1
+configure:3455: checking whether we are using the GNU C compiler
+configure:3484: gcc -c   conftest.c >&5
+configure:3491: $? = 0
+configure:3508: result: yes
+configure:3517: checking whether gcc accepts -g
+configure:3547: gcc -c -g  conftest.c >&5
+configure:3554: $? = 0
+configure:3655: result: yes
+configure:3672: checking for gcc option to accept ISO C89
+configure:3746: gcc  -c -g -O2  conftest.c >&5
+configure:3753: $? = 0
+configure:3776: result: none needed
+configure:3796: checking dependency style of gcc
+configure:3887: result: gcc3
+configure:3914: checking how to run the C preprocessor
+configure:3954: gcc -E  conftest.c
+configure:3961: $? = 0
+configure:3992: gcc -E  conftest.c
+conftest.c:8:28: error: ac_nonexistent.h: No such file or directory
+configure:3999: $? = 1
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "utakata"
+| #define PACKAGE_TARNAME "utakata"
+| #define PACKAGE_VERSION "0.0.1"
+| #define PACKAGE_STRING "utakata 0.0.1"
+| #define PACKAGE_BUGREPORT "BUG-REPORT-ADDRESS"
+| /* end confdefs.h.  */
+| #include <ac_nonexistent.h>
+configure:4032: result: gcc -E
+configure:4061: gcc -E  conftest.c
+configure:4068: $? = 0
+configure:4099: gcc -E  conftest.c
+conftest.c:8:28: error: ac_nonexistent.h: No such file or directory
+configure:4106: $? = 1
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "utakata"
+| #define PACKAGE_TARNAME "utakata"
+| #define PACKAGE_VERSION "0.0.1"
+| #define PACKAGE_STRING "utakata 0.0.1"
+| #define PACKAGE_BUGREPORT "BUG-REPORT-ADDRESS"
+| /* end confdefs.h.  */
+| #include <ac_nonexistent.h>
+configure:4146: checking for grep that handles long lines and -e
+configure:4206: result: /bin/grep
+configure:4211: checking for egrep
+configure:4275: result: /bin/grep -E
+configure:4280: checking for ANSI C header files
+configure:4310: gcc -c -g -O2  conftest.c >&5
+configure:4317: $? = 0
+configure:4416: gcc -o conftest -g -O2   conftest.c  >&5
+configure:4420: $? = 0
+configure:4426: ./conftest
+configure:4430: $? = 0
+configure:4448: result: yes
+configure:4472: checking for sys/types.h
+configure:4493: gcc -c -g -O2  conftest.c >&5
+configure:4500: $? = 0
+configure:4517: result: yes
+configure:4472: checking for sys/stat.h
+configure:4493: gcc -c -g -O2  conftest.c >&5
+configure:4500: $? = 0
+configure:4517: result: yes
+configure:4472: checking for stdlib.h
+configure:4493: gcc -c -g -O2  conftest.c >&5
+configure:4500: $? = 0
+configure:4517: result: yes
+configure:4472: checking for string.h
+configure:4493: gcc -c -g -O2  conftest.c >&5
+configure:4500: $? = 0
+configure:4517: result: yes
+configure:4472: checking for memory.h
+configure:4493: gcc -c -g -O2  conftest.c >&5
+configure:4500: $? = 0
+configure:4517: result: yes
+configure:4472: checking for strings.h
+configure:4493: gcc -c -g -O2  conftest.c >&5
+configure:4500: $? = 0
+configure:4517: result: yes
+configure:4472: checking for inttypes.h
+configure:4493: gcc -c -g -O2  conftest.c >&5
+configure:4500: $? = 0
+configure:4517: result: yes
+configure:4472: checking for stdint.h
+configure:4493: gcc -c -g -O2  conftest.c >&5
+configure:4500: $? = 0
+configure:4517: result: yes
+configure:4472: checking for unistd.h
+configure:4493: gcc -c -g -O2  conftest.c >&5
+configure:4500: $? = 0
+configure:4517: result: yes
+configure:4531: checking for stdbool.h that conforms to C99
+configure:4626: gcc -c -g -O2  conftest.c >&5
+configure:4633: $? = 0
+configure:4648: result: yes
+configure:4650: checking for _Bool
+configure:4678: gcc -c -g -O2  conftest.c >&5
+configure:4685: $? = 0
+configure:4712: gcc -c -g -O2  conftest.c >&5
+conftest.c: In function 'main':
+conftest.c:54: error: expected expression before ')' token
+configure:4719: $? = 1
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "utakata"
+| #define PACKAGE_TARNAME "utakata"
+| #define PACKAGE_VERSION "0.0.1"
+| #define PACKAGE_STRING "utakata 0.0.1"
+| #define PACKAGE_BUGREPORT "BUG-REPORT-ADDRESS"
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_STRINGS_H 1
+| #define HAVE_INTTYPES_H 1
+| #define HAVE_STDINT_H 1
+| #define HAVE_UNISTD_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| int
+| main ()
+| {
+| if (sizeof ((_Bool)))
+|        return 0;
+|   ;
+|   return 0;
+| }
+configure:4742: result: yes
+configure:4761: checking for inline
+configure:4787: gcc -c -g -O2  conftest.c >&5
+configure:4794: $? = 0
+configure:4812: result: inline
+configure:4831: checking for size_t
+configure:4859: gcc -c -g -O2  conftest.c >&5
+configure:4866: $? = 0
+configure:4893: gcc -c -g -O2  conftest.c >&5
+conftest.c: In function 'main':
+conftest.c:56: error: expected expression before ')' token
+configure:4900: $? = 1
+configure: failed program was:
+| /* confdefs.h.  */
+| #define PACKAGE_NAME "utakata"
+| #define PACKAGE_TARNAME "utakata"
+| #define PACKAGE_VERSION "0.0.1"
+| #define PACKAGE_STRING "utakata 0.0.1"
+| #define PACKAGE_BUGREPORT "BUG-REPORT-ADDRESS"
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_STRINGS_H 1
+| #define HAVE_INTTYPES_H 1
+| #define HAVE_STDINT_H 1
+| #define HAVE_UNISTD_H 1
+| #define HAVE__BOOL 1
+| #define HAVE_STDBOOL_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| int
+| main ()
+| {
+| if (sizeof ((size_t)))
+|        return 0;
+|   ;
+|   return 0;
+| }
+configure:4923: result: yes
+configure:5063: creating ./config.status
+
+## ---------------------- ##
+## Running config.status. ##
+## ---------------------- ##
+
+This file was extended by utakata config.status 0.0.1, which was
+generated by GNU Autoconf 2.63.  Invocation command line was
+
+  CONFIG_FILES    = 
+  CONFIG_HEADERS  = 
+  CONFIG_LINKS    = 
+  CONFIG_COMMANDS = 
+  $ ./config.status 
+
+on localhost
+
+config.status:776: creating Makefile
+config.status:776: creating test/Makefile
+config.status:776: creating config.h
+config.status:998: config.h is unchanged
+config.status:1050: executing depfiles commands
+
+## ---------------- ##
+## Cache variables. ##
+## ---------------- ##
+
+ac_cv_c_compiler_gnu=yes
+ac_cv_c_inline=inline
+ac_cv_cxx_compiler_gnu=yes
+ac_cv_env_CCC_set=
+ac_cv_env_CCC_value=
+ac_cv_env_CC_set=
+ac_cv_env_CC_value=
+ac_cv_env_CFLAGS_set=
+ac_cv_env_CFLAGS_value=
+ac_cv_env_CPPFLAGS_set=
+ac_cv_env_CPPFLAGS_value=
+ac_cv_env_CPP_set=
+ac_cv_env_CPP_value=
+ac_cv_env_CXXFLAGS_set=
+ac_cv_env_CXXFLAGS_value=
+ac_cv_env_CXX_set=
+ac_cv_env_CXX_value=
+ac_cv_env_LDFLAGS_set=
+ac_cv_env_LDFLAGS_value=
+ac_cv_env_LIBS_set=
+ac_cv_env_LIBS_value=
+ac_cv_env_build_alias_set=
+ac_cv_env_build_alias_value=
+ac_cv_env_host_alias_set=
+ac_cv_env_host_alias_value=
+ac_cv_env_target_alias_set=
+ac_cv_env_target_alias_value=
+ac_cv_header_inttypes_h=yes
+ac_cv_header_memory_h=yes
+ac_cv_header_stdbool_h=yes
+ac_cv_header_stdc=yes
+ac_cv_header_stdint_h=yes
+ac_cv_header_stdlib_h=yes
+ac_cv_header_string_h=yes
+ac_cv_header_strings_h=yes
+ac_cv_header_sys_stat_h=yes
+ac_cv_header_sys_types_h=yes
+ac_cv_header_unistd_h=yes
+ac_cv_objext=o
+ac_cv_path_EGREP='/bin/grep -E'
+ac_cv_path_GREP=/bin/grep
+ac_cv_path_install='/usr/bin/install -c'
+ac_cv_path_mkdir=/bin/mkdir
+ac_cv_prog_AWK=gawk
+ac_cv_prog_CPP='gcc -E'
+ac_cv_prog_ac_ct_CC=gcc
+ac_cv_prog_ac_ct_CXX=g++
+ac_cv_prog_cc_c89=
+ac_cv_prog_cc_g=yes
+ac_cv_prog_cxx_g=yes
+ac_cv_prog_make_make_set=yes
+ac_cv_type__Bool=yes
+ac_cv_type_size_t=yes
+am_cv_CC_dependencies_compiler_type=gcc3
+am_cv_CXX_dependencies_compiler_type=gcc3
+
+## ----------------- ##
+## Output variables. ##
+## ----------------- ##
+
+ACLOCAL='${SHELL} /home/derui/develop/sdl/missing --run aclocal-1.10'
+AMDEPBACKSLASH='\'
+AMDEP_FALSE='#'
+AMDEP_TRUE=''
+AMTAR='${SHELL} /home/derui/develop/sdl/missing --run tar'
+AUTOCONF='${SHELL} /home/derui/develop/sdl/missing --run autoconf'
+AUTOHEADER='${SHELL} /home/derui/develop/sdl/missing --run autoheader'
+AUTOMAKE='${SHELL} /home/derui/develop/sdl/missing --run automake-1.10'
+AWK='gawk'
+CC='gcc'
+CCDEPMODE='depmode=gcc3'
+CFLAGS='-g -O2'
+CPP='gcc -E'
+CPPFLAGS=''
+CXX='g++'
+CXXDEPMODE='depmode=gcc3'
+CXXFLAGS='-g -O2'
+CYGPATH_W='echo'
+DEFS='-DHAVE_CONFIG_H'
+DEPDIR='.deps'
+ECHO_C=''
+ECHO_N='-n'
+ECHO_T=''
+EGREP='/bin/grep -E'
+EXEEXT=''
+GREP='/bin/grep'
+INSTALL_DATA='${INSTALL} -m 644'
+INSTALL_PROGRAM='${INSTALL}'
+INSTALL_SCRIPT='${INSTALL}'
+INSTALL_STRIP_PROGRAM='$(install_sh) -c -s'
+LDFLAGS=''
+LIBOBJS=''
+LIBS=''
+LTLIBOBJS=''
+MAKEINFO='${SHELL} /home/derui/develop/sdl/missing --run makeinfo'
+MKDIR_P='/bin/mkdir -p'
+OBJEXT='o'
+PACKAGE='utakata'
+PACKAGE_BUGREPORT='BUG-REPORT-ADDRESS'
+PACKAGE_NAME='utakata'
+PACKAGE_STRING='utakata 0.0.1'
+PACKAGE_TARNAME='utakata'
+PACKAGE_VERSION='0.0.1'
+PATH_SEPARATOR=':'
+SET_MAKE=''
+SHELL='/bin/sh'
+STRIP=''
+VERSION='0.0.1'
+ac_ct_CC='gcc'
+ac_ct_CXX='g++'
+am__fastdepCC_FALSE='#'
+am__fastdepCC_TRUE=''
+am__fastdepCXX_FALSE='#'
+am__fastdepCXX_TRUE=''
+am__include='include'
+am__isrc=''
+am__leading_dot='.'
+am__quote=''
+am__tar='${AMTAR} chof - "$$tardir"'
+am__untar='${AMTAR} xf -'
+bindir='${exec_prefix}/bin'
+build_alias=''
+datadir='${datarootdir}'
+datarootdir='${prefix}/share'
+docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
+dvidir='${docdir}'
+exec_prefix='${prefix}'
+host_alias=''
+htmldir='${docdir}'
+includedir='${prefix}/include'
+infodir='${datarootdir}/info'
+install_sh='$(SHELL) /home/derui/develop/sdl/install-sh'
+libdir='${exec_prefix}/lib'
+libexecdir='${exec_prefix}/libexec'
+localedir='${datarootdir}/locale'
+localstatedir='${prefix}/var'
+mandir='${datarootdir}/man'
+mkdir_p='/bin/mkdir -p'
+oldincludedir='/usr/include'
+pdfdir='${docdir}'
+prefix='/usr/local'
+program_transform_name='s,x,x,'
+psdir='${docdir}'
+sbindir='${exec_prefix}/sbin'
+sharedstatedir='${prefix}/com'
+sysconfdir='${prefix}/etc'
+target_alias=''
+
+## ----------- ##
+## confdefs.h. ##
+## ----------- ##
+
+#define PACKAGE_NAME "utakata"
+#define PACKAGE_TARNAME "utakata"
+#define PACKAGE_VERSION "0.0.1"
+#define PACKAGE_STRING "utakata 0.0.1"
+#define PACKAGE_BUGREPORT "BUG-REPORT-ADDRESS"
+#define STDC_HEADERS 1
+#define HAVE_SYS_TYPES_H 1
+#define HAVE_SYS_STAT_H 1
+#define HAVE_STDLIB_H 1
+#define HAVE_STRING_H 1
+#define HAVE_MEMORY_H 1
+#define HAVE_STRINGS_H 1
+#define HAVE_INTTYPES_H 1
+#define HAVE_STDINT_H 1
+#define HAVE_UNISTD_H 1
+#define HAVE__BOOL 1
+#define HAVE_STDBOOL_H 1
+
+configure: exit 0
+
+## ---------------------- ##
+## Running config.status. ##
+## ---------------------- ##
+
+This file was extended by utakata config.status 0.0.1, which was
+generated by GNU Autoconf 2.63.  Invocation command line was
+
+  CONFIG_FILES    = 
+  CONFIG_HEADERS  = 
+  CONFIG_LINKS    = 
+  CONFIG_COMMANDS = 
+  $ ./config.status test/Makefile depfiles
+
+on localhost
+
+config.status:776: creating test/Makefile
+config.status:1050: executing depfiles commands
+
+## ---------------------- ##
+## Running config.status. ##
+## ---------------------- ##
+
+This file was extended by utakata config.status 0.0.1, which was
+generated by GNU Autoconf 2.63.  Invocation command line was
+
+  CONFIG_FILES    = 
+  CONFIG_HEADERS  = 
+  CONFIG_LINKS    = 
+  CONFIG_COMMANDS = 
+  $ ./config.status test/Makefile depfiles
+
+on localhost
+
+config.status:776: creating test/Makefile
+config.status:1050: executing depfiles commands
+
+## ---------------------- ##
+## Running config.status. ##
+## ---------------------- ##
+
+This file was extended by utakata config.status 0.0.1, which was
+generated by GNU Autoconf 2.63.  Invocation command line was
+
+  CONFIG_FILES    = 
+  CONFIG_HEADERS  = 
+  CONFIG_LINKS    = 
+  CONFIG_COMMANDS = 
+  $ ./config.status test/Makefile depfiles
+
+on localhost
+
+config.status:776: creating test/Makefile
+config.status:1050: executing depfiles commands
+
+## ---------------------- ##
+## Running config.status. ##
+## ---------------------- ##
+
+This file was extended by utakata config.status 0.0.1, which was
+generated by GNU Autoconf 2.63.  Invocation command line was
+
+  CONFIG_FILES    = 
+  CONFIG_HEADERS  = 
+  CONFIG_LINKS    = 
+  CONFIG_COMMANDS = 
+  $ ./config.status Makefile depfiles
+
+on localhost
+
+config.status:776: creating Makefile
+config.status:1050: executing depfiles commands
diff --git a/config.status b/config.status
new file mode 100755 (executable)
index 0000000..9e6c64c
--- /dev/null
@@ -0,0 +1,1195 @@
+#! /bin/sh
+# Generated by configure.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+ac_cs_recheck=false
+ac_cs_silent=false
+SHELL=${CONFIG_SHELL-/bin/sh}
+## --------------------- ##
+## M4sh Initialization.  ##
+## --------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in
+  *posix*) set -o posix ;;
+esac
+
+fi
+
+
+
+
+# PATH needs CR
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='printf %s\n'
+  as_echo_n='printf %s'
+else
+  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+    as_echo_n='/usr/ucb/echo -n'
+  else
+    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+    as_echo_n_body='eval
+      arg=$1;
+      case $arg in
+      *"$as_nl"*)
+       expr "X$arg" : "X\\(.*\\)$as_nl";
+       arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+      esac;
+      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+    '
+    export as_echo_n_body
+    as_echo_n='sh -c $as_echo_n_body as_echo'
+  fi
+  export as_echo_body
+  as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+      PATH_SEPARATOR=';'
+  }
+fi
+
+# Support unset when possible.
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+  as_unset=unset
+else
+  as_unset=false
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" ""       $as_nl"
+
+# Find who we are.  Look in the path if we contain no directory separator.
+case $0 in
+  *[\\/]* ) as_myself=$0 ;;
+  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+done
+IFS=$as_save_IFS
+
+     ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+  as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  { (exit 1); exit 1; }
+fi
+
+# Work around bugs in pre-3.0 UWIN ksh.
+for as_var in ENV MAIL MAILPATH
+do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# Required to use basename.
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+
+# Name of the executable.
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+        X"$0" : 'X\(//\)$' \| \
+        X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+           s//\1/
+           q
+         }
+         /^X\/\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\/\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+
+# CDPATH.
+$as_unset CDPATH
+
+
+
+  as_lineno_1=$LINENO
+  as_lineno_2=$LINENO
+  test "x$as_lineno_1" != "x$as_lineno_2" &&
+  test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {
+
+  # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+  # uniformly replaced by the line number.  The first 'sed' inserts a
+  # line-number line after each line using $LINENO; the second 'sed'
+  # does the real work.  The second script uses 'N' to pair each
+  # line-number line with the line containing $LINENO, and appends
+  # trailing '-' during substitution so that $LINENO is not a special
+  # case at line end.
+  # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+  # scripts with optimization help from Paolo Bonzini.  Blame Lee
+  # E. McMahon (1931-1989) for sed's syntax.  :-)
+  sed -n '
+    p
+    /[$]LINENO/=
+  ' <$as_myself |
+    sed '
+      s/[$]LINENO.*/&-/
+      t lineno
+      b
+      :lineno
+      N
+      :loop
+      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+      t loop
+      s/-\n.*//
+    ' >$as_me.lineno &&
+  chmod +x "$as_me.lineno" ||
+    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
+   { (exit 1); exit 1; }; }
+
+  # Don't try to exec as it changes $[0], causing all sort of problems
+  # (the dirname of $[0] is not the place where we might find the
+  # original and so on.  Autoconf is especially sensitive to this).
+  . "./$as_me.lineno"
+  # Exit status is that of the last command.
+  exit
+}
+
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in
+-n*)
+  case `echo 'x\c'` in
+  *c*) ECHO_T='        ';;     # ECHO_T is single tab character.
+  *)   ECHO_C='\c';;
+  esac;;
+*)
+  ECHO_N='-n';;
+esac
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+  rm -f conf$$.dir/conf$$.file
+else
+  rm -f conf$$.dir
+  mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+  if ln -s conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s='ln -s'
+    # ... but there are two gotchas:
+    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+    # In both cases, we have to default to `cp -p'.
+    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+      as_ln_s='cp -p'
+  elif ln conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s=ln
+  else
+    as_ln_s='cp -p'
+  fi
+else
+  as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p=:
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+if test -x / >/dev/null 2>&1; then
+  as_test_x='test -x'
+else
+  if ls -dL / >/dev/null 2>&1; then
+    as_ls_L_option=L
+  else
+    as_ls_L_option=
+  fi
+  as_test_x='
+    eval sh -c '\''
+      if test -d "$1"; then
+       test -d "$1/.";
+      else
+       case $1 in
+       -*)set "./$1";;
+       esac;
+       case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
+       ???[sx]*):;;*)false;;esac;fi
+    '\'' sh
+  '
+fi
+as_executable_p=$as_test_x
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+exec 6>&1
+
+# Save the log message, to keep $[0] and so on meaningful, and to
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling.
+ac_log="
+This file was extended by utakata $as_me 0.0.1, which was
+generated by GNU Autoconf 2.63.  Invocation command line was
+
+  CONFIG_FILES    = $CONFIG_FILES
+  CONFIG_HEADERS  = $CONFIG_HEADERS
+  CONFIG_LINKS    = $CONFIG_LINKS
+  CONFIG_COMMANDS = $CONFIG_COMMANDS
+  $ $0 $@
+
+on `(hostname || uname -n) 2>/dev/null | sed 1q`
+"
+
+# Files that config.status was made for.
+config_files=" Makefile test/Makefile"
+config_headers=" config.h"
+config_commands=" depfiles"
+
+ac_cs_usage="\
+\`$as_me' instantiates files from templates according to the
+current configuration.
+
+Usage: $0 [OPTION]... [FILE]...
+
+  -h, --help       print this help, then exit
+  -V, --version    print version number and configuration settings, then exit
+  -q, --quiet, --silent
+                   do not print progress messages
+  -d, --debug      don't remove temporary files
+      --recheck    update $as_me by reconfiguring in the same conditions
+      --file=FILE[:TEMPLATE]
+                   instantiate the configuration file FILE
+      --header=FILE[:TEMPLATE]
+                   instantiate the configuration header FILE
+
+Configuration files:
+$config_files
+
+Configuration headers:
+$config_headers
+
+Configuration commands:
+$config_commands
+
+Report bugs to <bug-autoconf@gnu.org>."
+
+ac_cs_version="\
+utakata config.status 0.0.1
+configured by ./configure, generated by GNU Autoconf 2.63,
+  with options \"\"
+
+Copyright (C) 2008 Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+
+ac_pwd='/home/derui/develop/sdl'
+srcdir='.'
+INSTALL='/usr/bin/install -c'
+MKDIR_P='/bin/mkdir -p'
+AWK='gawk'
+test -n "$AWK" || AWK=awk
+# The default lists apply if the user does not specify any file.
+ac_need_defaults=:
+while test $# != 0
+do
+  case $1 in
+  --*=*)
+    ac_option=`expr "X$1" : 'X\([^=]*\)='`
+    ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
+    ac_shift=:
+    ;;
+  *)
+    ac_option=$1
+    ac_optarg=$2
+    ac_shift=shift
+    ;;
+  esac
+
+  case $ac_option in
+  # Handling of the options.
+  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+    ac_cs_recheck=: ;;
+  --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
+    $as_echo "$ac_cs_version"; exit ;;
+  --debug | --debu | --deb | --de | --d | -d )
+    debug=: ;;
+  --file | --fil | --fi | --f )
+    $ac_shift
+    case $ac_optarg in
+    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    esac
+    CONFIG_FILES="$CONFIG_FILES '$ac_optarg'"
+    ac_need_defaults=false;;
+  --header | --heade | --head | --hea )
+    $ac_shift
+    case $ac_optarg in
+    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    esac
+    CONFIG_HEADERS="$CONFIG_HEADERS '$ac_optarg'"
+    ac_need_defaults=false;;
+  --he | --h)
+    # Conflict between --help and --header
+    { $as_echo "$as_me: error: ambiguous option: $1
+Try \`$0 --help' for more information." >&2
+   { (exit 1); exit 1; }; };;
+  --help | --hel | -h )
+    $as_echo "$ac_cs_usage"; exit ;;
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil | --si | --s)
+    ac_cs_silent=: ;;
+
+  # This is an error.
+  -*) { $as_echo "$as_me: error: unrecognized option: $1
+Try \`$0 --help' for more information." >&2
+   { (exit 1); exit 1; }; } ;;
+
+  *) ac_config_targets="$ac_config_targets $1"
+     ac_need_defaults=false ;;
+
+  esac
+  shift
+done
+
+ac_configure_extra_args=
+
+if $ac_cs_silent; then
+  exec 6>/dev/null
+  ac_configure_extra_args="$ac_configure_extra_args --silent"
+fi
+
+if $ac_cs_recheck; then
+  set X '/bin/sh' './configure'  $ac_configure_extra_args --no-create --no-recursion
+  shift
+  $as_echo "running CONFIG_SHELL=/bin/sh $*" >&6
+  CONFIG_SHELL='/bin/sh'
+  export CONFIG_SHELL
+  exec "$@"
+fi
+
+exec 5>>config.log
+{
+  echo
+  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+  $as_echo "$ac_log"
+} >&5
+
+#
+# INIT-COMMANDS
+#
+AMDEP_TRUE="" ac_aux_dir="."
+
+
+# Handling of arguments.
+for ac_config_target in $ac_config_targets
+do
+  case $ac_config_target in
+    "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
+    "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
+    "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+    "test/Makefile") CONFIG_FILES="$CONFIG_FILES test/Makefile" ;;
+
+  *) { { $as_echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
+$as_echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
+   { (exit 1); exit 1; }; };;
+  esac
+done
+
+
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used.  Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+  test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
+  test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
+fi
+
+# Have a temporary directory for convenience.  Make it in the build tree
+# simply because there is no reason against having it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Hook for its removal unless debugging.
+# Note that there is a small window in which the directory will not be cleaned:
+# after its creation but before its name has been assigned to `$tmp'.
+$debug ||
+{
+  tmp=
+  trap 'exit_status=$?
+  { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status
+' 0
+  trap '{ (exit 1); exit 1; }' 1 2 13 15
+}
+# Create a (secure) tmp directory for tmp files.
+
+{
+  tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
+  test -n "$tmp" && test -d "$tmp"
+}  ||
+{
+  tmp=./conf$$-$RANDOM
+  (umask 077 && mkdir "$tmp")
+} ||
+{
+   $as_echo "$as_me: cannot create a temporary directory in ." >&2
+   { (exit 1); exit 1; }
+}
+
+# Set up the scripts for CONFIG_FILES section.
+# No need to generate them if there are no CONFIG_FILES.
+# This happens for instance with `./config.status config.h'.
+if test -n "$CONFIG_FILES"; then
+
+
+ac_cr='\r'
+ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
+if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
+  ac_cs_awk_cr='\\r'
+else
+  ac_cs_awk_cr=$ac_cr
+fi
+
+echo 'BEGIN {' >"$tmp/subs1.awk" &&
+cat >>"$tmp/subs1.awk" <<\_ACAWK &&
+S["LTLIBOBJS"]=""
+S["LIBOBJS"]=""
+S["EGREP"]="/bin/grep -E"
+S["GREP"]="/bin/grep"
+S["CPP"]="gcc -E"
+S["am__fastdepCC_FALSE"]="#"
+S["am__fastdepCC_TRUE"]=""
+S["CCDEPMODE"]="depmode=gcc3"
+S["ac_ct_CC"]="gcc"
+S["CFLAGS"]="-g -O2"
+S["CC"]="gcc"
+S["am__fastdepCXX_FALSE"]="#"
+S["am__fastdepCXX_TRUE"]=""
+S["CXXDEPMODE"]="depmode=gcc3"
+S["AMDEPBACKSLASH"]="\\"
+S["AMDEP_FALSE"]="#"
+S["AMDEP_TRUE"]=""
+S["am__quote"]=""
+S["am__include"]="include"
+S["DEPDIR"]=".deps"
+S["OBJEXT"]="o"
+S["EXEEXT"]=""
+S["ac_ct_CXX"]="g++"
+S["CPPFLAGS"]=""
+S["LDFLAGS"]=""
+S["CXXFLAGS"]="-g -O2"
+S["CXX"]="g++"
+S["am__untar"]="${AMTAR} xf -"
+S["am__tar"]="${AMTAR} chof - \"$$tardir\""
+S["AMTAR"]="${SHELL} /home/derui/develop/sdl/missing --run tar"
+S["am__leading_dot"]="."
+S["SET_MAKE"]=""
+S["AWK"]="gawk"
+S["mkdir_p"]="/bin/mkdir -p"
+S["MKDIR_P"]="/bin/mkdir -p"
+S["INSTALL_STRIP_PROGRAM"]="$(install_sh) -c -s"
+S["STRIP"]=""
+S["install_sh"]="$(SHELL) /home/derui/develop/sdl/install-sh"
+S["MAKEINFO"]="${SHELL} /home/derui/develop/sdl/missing --run makeinfo"
+S["AUTOHEADER"]="${SHELL} /home/derui/develop/sdl/missing --run autoheader"
+S["AUTOMAKE"]="${SHELL} /home/derui/develop/sdl/missing --run automake-1.10"
+S["AUTOCONF"]="${SHELL} /home/derui/develop/sdl/missing --run autoconf"
+S["ACLOCAL"]="${SHELL} /home/derui/develop/sdl/missing --run aclocal-1.10"
+S["VERSION"]="0.0.1"
+S["PACKAGE"]="utakata"
+S["CYGPATH_W"]="echo"
+S["am__isrc"]=""
+S["INSTALL_DATA"]="${INSTALL} -m 644"
+S["INSTALL_SCRIPT"]="${INSTALL}"
+S["INSTALL_PROGRAM"]="${INSTALL}"
+S["target_alias"]=""
+S["host_alias"]=""
+S["build_alias"]=""
+S["LIBS"]=""
+S["ECHO_T"]=""
+S["ECHO_N"]="-n"
+S["ECHO_C"]=""
+S["DEFS"]="-DHAVE_CONFIG_H"
+S["mandir"]="${datarootdir}/man"
+S["localedir"]="${datarootdir}/locale"
+S["libdir"]="${exec_prefix}/lib"
+S["psdir"]="${docdir}"
+S["pdfdir"]="${docdir}"
+S["dvidir"]="${docdir}"
+S["htmldir"]="${docdir}"
+S["infodir"]="${datarootdir}/info"
+S["docdir"]="${datarootdir}/doc/${PACKAGE_TARNAME}"
+S["oldincludedir"]="/usr/include"
+S["includedir"]="${prefix}/include"
+S["localstatedir"]="${prefix}/var"
+S["sharedstatedir"]="${prefix}/com"
+S["sysconfdir"]="${prefix}/etc"
+S["datadir"]="${datarootdir}"
+S["datarootdir"]="${prefix}/share"
+S["libexecdir"]="${exec_prefix}/libexec"
+S["sbindir"]="${exec_prefix}/sbin"
+S["bindir"]="${exec_prefix}/bin"
+S["program_transform_name"]="s,x,x,"
+S["prefix"]="/usr/local"
+S["exec_prefix"]="${prefix}"
+S["PACKAGE_BUGREPORT"]="BUG-REPORT-ADDRESS"
+S["PACKAGE_STRING"]="utakata 0.0.1"
+S["PACKAGE_VERSION"]="0.0.1"
+S["PACKAGE_TARNAME"]="utakata"
+S["PACKAGE_NAME"]="utakata"
+S["PATH_SEPARATOR"]=":"
+S["SHELL"]="/bin/sh"
+_ACAWK
+cat >>"$tmp/subs1.awk" <<_ACAWK &&
+  for (key in S) S_is_set[key] = 1
+  FS = "\a"
+
+}
+{
+  line = $ 0
+  nfields = split(line, field, "@")
+  substed = 0
+  len = length(field[1])
+  for (i = 2; i < nfields; i++) {
+    key = field[i]
+    keylen = length(key)
+    if (S_is_set[key]) {
+      value = S[key]
+      line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
+      len += length(value) + length(field[++i])
+      substed = 1
+    } else
+      len += 1 + keylen
+  }
+
+  print line
+}
+
+_ACAWK
+if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
+  sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
+else
+  cat
+fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \
+  || { { $as_echo "$as_me:$LINENO: error: could not setup config files machinery" >&5
+$as_echo "$as_me: error: could not setup config files machinery" >&2;}
+   { (exit 1); exit 1; }; }
+fi # test -n "$CONFIG_FILES"
+
+# Set up the scripts for CONFIG_HEADERS section.
+# No need to generate them if there are no CONFIG_HEADERS.
+# This happens for instance with `./config.status Makefile'.
+if test -n "$CONFIG_HEADERS"; then
+cat >"$tmp/defines.awk" <<\_ACAWK ||
+BEGIN {
+D["PACKAGE_NAME"]=" \"utakata\""
+D["PACKAGE_TARNAME"]=" \"utakata\""
+D["PACKAGE_VERSION"]=" \"0.0.1\""
+D["PACKAGE_STRING"]=" \"utakata 0.0.1\""
+D["PACKAGE_BUGREPORT"]=" \"BUG-REPORT-ADDRESS\""
+D["STDC_HEADERS"]=" 1"
+D["HAVE_SYS_TYPES_H"]=" 1"
+D["HAVE_SYS_STAT_H"]=" 1"
+D["HAVE_STDLIB_H"]=" 1"
+D["HAVE_STRING_H"]=" 1"
+D["HAVE_MEMORY_H"]=" 1"
+D["HAVE_STRINGS_H"]=" 1"
+D["HAVE_INTTYPES_H"]=" 1"
+D["HAVE_STDINT_H"]=" 1"
+D["HAVE_UNISTD_H"]=" 1"
+D["HAVE__BOOL"]=" 1"
+D["HAVE_STDBOOL_H"]=" 1"
+  for (key in D) D_is_set[key] = 1
+  FS = "\a"
+}
+/^[\t ]*#[\t ]*(define|undef)[\t ]+[_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ][_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789]*([\t (]|$)/ {
+  line = $ 0
+  split(line, arg, " ")
+  if (arg[1] == "#") {
+    defundef = arg[2]
+    mac1 = arg[3]
+  } else {
+    defundef = substr(arg[1], 2)
+    mac1 = arg[2]
+  }
+  split(mac1, mac2, "(") #)
+  macro = mac2[1]
+  prefix = substr(line, 1, index(line, defundef) - 1)
+  if (D_is_set[macro]) {
+    # Preserve the white space surrounding the "#".
+    print prefix "define", macro P[macro] D[macro]
+    next
+  } else {
+    # Replace #undef with comments.  This is necessary, for example,
+    # in the case of _POSIX_SOURCE, which is predefined and required
+    # on some systems where configure will not decide to define it.
+    if (defundef == "undef") {
+      print "/*", prefix defundef, macro, "*/"
+      next
+    }
+  }
+}
+{ print }
+_ACAWK
+  { { $as_echo "$as_me:$LINENO: error: could not setup config headers machinery" >&5
+$as_echo "$as_me: error: could not setup config headers machinery" >&2;}
+   { (exit 1); exit 1; }; }
+fi # test -n "$CONFIG_HEADERS"
+
+
+eval set X "  :F $CONFIG_FILES  :H $CONFIG_HEADERS    :C $CONFIG_COMMANDS"
+shift
+for ac_tag
+do
+  case $ac_tag in
+  :[FHLC]) ac_mode=$ac_tag; continue;;
+  esac
+  case $ac_mode$ac_tag in
+  :[FHL]*:*);;
+  :L* | :C*:*) { { $as_echo "$as_me:$LINENO: error: invalid tag $ac_tag" >&5
+$as_echo "$as_me: error: invalid tag $ac_tag" >&2;}
+   { (exit 1); exit 1; }; };;
+  :[FH]-) ac_tag=-:-;;
+  :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
+  esac
+  ac_save_IFS=$IFS
+  IFS=:
+  set x $ac_tag
+  IFS=$ac_save_IFS
+  shift
+  ac_file=$1
+  shift
+
+  case $ac_mode in
+  :L) ac_source=$1;;
+  :[FH])
+    ac_file_inputs=
+    for ac_f
+    do
+      case $ac_f in
+      -) ac_f="$tmp/stdin";;
+      *) # Look for the file first in the build tree, then in the source tree
+        # (if the path is not absolute).  The absolute path cannot be DOS-style,
+        # because $ac_f cannot contain `:'.
+        test -f "$ac_f" ||
+          case $ac_f in
+          [\\/$]*) false;;
+          *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
+          esac ||
+          { { $as_echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5
+$as_echo "$as_me: error: cannot find input file: $ac_f" >&2;}
+   { (exit 1); exit 1; }; };;
+      esac
+      case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
+      ac_file_inputs="$ac_file_inputs '$ac_f'"
+    done
+
+    # Let's still pretend it is `configure' which instantiates (i.e., don't
+    # use $as_me), people would be surprised to read:
+    #    /* config.h.  Generated by config.status.  */
+    configure_input='Generated from '`
+         $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
+       `' by configure.'
+    if test x"$ac_file" != x-; then
+      configure_input="$ac_file.  $configure_input"
+      { $as_echo "$as_me:$LINENO: creating $ac_file" >&5
+$as_echo "$as_me: creating $ac_file" >&6;}
+    fi
+    # Neutralize special characters interpreted by sed in replacement strings.
+    case $configure_input in #(
+    *\&* | *\|* | *\\* )
+       ac_sed_conf_input=`$as_echo "$configure_input" |
+       sed 's/[\\\\&|]/\\\\&/g'`;; #(
+    *) ac_sed_conf_input=$configure_input;;
+    esac
+
+    case $ac_tag in
+    *:-:* | *:-) cat >"$tmp/stdin" \
+      || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5
+$as_echo "$as_me: error: could not create $ac_file" >&2;}
+   { (exit 1); exit 1; }; } ;;
+    esac
+    ;;
+  esac
+
+  ac_dir=`$as_dirname -- "$ac_file" ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$ac_file" : 'X\(//\)[^/]' \| \
+        X"$ac_file" : 'X\(//\)$' \| \
+        X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$ac_file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)[^/].*/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+  { as_dir="$ac_dir"
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$as_dir" : 'X\(//\)[^/]' \| \
+        X"$as_dir" : 'X\(//\)$' \| \
+        X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)[^/].*/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || { { $as_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
+$as_echo "$as_me: error: cannot create directory $as_dir" >&2;}
+   { (exit 1); exit 1; }; }; }
+  ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+  # A ".." for each directory in $ac_dir_suffix.
+  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+  case $ac_top_builddir_sub in
+  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+  esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+  .)  # We are building in place.
+    ac_srcdir=.
+    ac_top_srcdir=$ac_top_builddir_sub
+    ac_abs_top_srcdir=$ac_pwd ;;
+  [\\/]* | ?:[\\/]* )  # Absolute name.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir
+    ac_abs_top_srcdir=$srcdir ;;
+  *) # Relative name.
+    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_build_prefix$srcdir
+    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+
+  case $ac_mode in
+  :F)
+  #
+  # CONFIG_FILE
+  #
+
+  case $INSTALL in
+  [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+  *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
+  esac
+  ac_MKDIR_P=$MKDIR_P
+  case $MKDIR_P in
+  [\\/$]* | ?:[\\/]* ) ;;
+  */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;;
+  esac
+# If the template does not know about datarootdir, expand it.
+# FIXME: This hack should be removed a few years after 2.60.
+ac_datarootdir_hack=; ac_datarootdir_seen=
+
+ac_sed_dataroot='
+/datarootdir/ {
+  p
+  q
+}
+/@datadir@/p
+/@docdir@/p
+/@infodir@/p
+/@localedir@/p
+/@mandir@/p
+'
+case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
+*datarootdir*) ac_datarootdir_seen=yes;;
+*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
+  { $as_echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+  ac_datarootdir_hack='
+  s&@datadir@&${datarootdir}&g
+  s&@docdir@&${datarootdir}/doc/${PACKAGE_TARNAME}&g
+  s&@infodir@&${datarootdir}/info&g
+  s&@localedir@&${datarootdir}/locale&g
+  s&@mandir@&${datarootdir}/man&g
+    s&\${datarootdir}&${prefix}/share&g' ;;
+esac
+ac_sed_extra="/^[       ]*VPATH[        ]*=/{
+s/:*\$(srcdir):*/:/
+s/:*\${srcdir}:*/:/
+s/:*@srcdir@:*/:/
+s/^\([^=]*=[    ]*\):*/\1/
+s/:*$//
+s/^[^=]*=[      ]*$//
+}
+
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s|@configure_input@|$ac_sed_conf_input|;t t
+s&@top_builddir@&$ac_top_builddir_sub&;t t
+s&@top_build_prefix@&$ac_top_build_prefix&;t t
+s&@srcdir@&$ac_srcdir&;t t
+s&@abs_srcdir@&$ac_abs_srcdir&;t t
+s&@top_srcdir@&$ac_top_srcdir&;t t
+s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
+s&@builddir@&$ac_builddir&;t t
+s&@abs_builddir@&$ac_abs_builddir&;t t
+s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
+s&@INSTALL@&$ac_INSTALL&;t t
+s&@MKDIR_P@&$ac_MKDIR_P&;t t
+$ac_datarootdir_hack
+"
+eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \
+  || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5
+$as_echo "$as_me: error: could not create $ac_file" >&2;}
+   { (exit 1); exit 1; }; }
+
+test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
+  { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } &&
+  { ac_out=`sed -n '/^[         ]*datarootdir[  ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } &&
+  { $as_echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined.  Please make sure it is defined." >&5
+$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined.  Please make sure it is defined." >&2;}
+
+  rm -f "$tmp/stdin"
+  case $ac_file in
+  -) cat "$tmp/out" && rm -f "$tmp/out";;
+  *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";;
+  esac \
+  || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5
+$as_echo "$as_me: error: could not create $ac_file" >&2;}
+   { (exit 1); exit 1; }; }
+ ;;
+  :H)
+  #
+  # CONFIG_HEADER
+  #
+  if test x"$ac_file" != x-; then
+    {
+      $as_echo "/* $configure_input  */" \
+      && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs"
+    } >"$tmp/config.h" \
+      || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5
+$as_echo "$as_me: error: could not create $ac_file" >&2;}
+   { (exit 1); exit 1; }; }
+    if diff "$ac_file" "$tmp/config.h" >/dev/null 2>&1; then
+      { $as_echo "$as_me:$LINENO: $ac_file is unchanged" >&5
+$as_echo "$as_me: $ac_file is unchanged" >&6;}
+    else
+      rm -f "$ac_file"
+      mv "$tmp/config.h" "$ac_file" \
+       || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5
+$as_echo "$as_me: error: could not create $ac_file" >&2;}
+   { (exit 1); exit 1; }; }
+    fi
+  else
+    $as_echo "/* $configure_input  */" \
+      && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \
+      || { { $as_echo "$as_me:$LINENO: error: could not create -" >&5
+$as_echo "$as_me: error: could not create -" >&2;}
+   { (exit 1); exit 1; }; }
+  fi
+# Compute "$ac_file"'s index in $config_headers.
+_am_arg="$ac_file"
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+  case $_am_header in
+    $_am_arg | $_am_arg:* )
+      break ;;
+    * )
+      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+  esac
+done
+echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" ||
+$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$_am_arg" : 'X\(//\)[^/]' \| \
+        X"$_am_arg" : 'X\(//\)$' \| \
+        X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$_am_arg" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)[^/].*/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`/stamp-h$_am_stamp_count
+ ;;
+
+  :C)  { $as_echo "$as_me:$LINENO: executing $ac_file commands" >&5
+$as_echo "$as_me: executing $ac_file commands" >&6;}
+ ;;
+  esac
+
+
+  case $ac_file$ac_mode in
+    "depfiles":C) test x"$AMDEP_TRUE" != x"" || # Autoconf 2.62 quotes --file arguments for eval, but not when files
+# are listed without --file.  Let's play safe and only enable the eval
+# if we detect the quoting.
+case $CONFIG_FILES in
+*\'*) eval set x "$CONFIG_FILES" ;;
+*)   set x $CONFIG_FILES ;;
+esac
+shift
+for mf
+do
+  # Strip MF so we end up with the name of the file.
+  mf=`echo "$mf" | sed -e 's/:.*$//'`
+  # Check whether this is an Automake generated Makefile or not.
+  # We used to match only the files named `Makefile.in', but
+  # some people rename them; so instead we look at the file content.
+  # Grep'ing the first line is not enough: some people post-process
+  # each Makefile.in and add a new line on top of each file to say so.
+  # Grep'ing the whole file is not good either: AIX grep has a line
+  # limit of 2048, but all sed's we know have understand at least 4000.
+  if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
+    dirpart=`$as_dirname -- "$mf" ||
+$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$mf" : 'X\(//\)[^/]' \| \
+        X"$mf" : 'X\(//\)$' \| \
+        X"$mf" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$mf" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)[^/].*/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+  else
+    continue
+  fi
+  # Extract the definition of DEPDIR, am__include, and am__quote
+  # from the Makefile without running `make'.
+  DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+  test -z "$DEPDIR" && continue
+  am__include=`sed -n 's/^am__include = //p' < "$mf"`
+  test -z "am__include" && continue
+  am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+  # When using ansi2knr, U may be empty or an underscore; expand it
+  U=`sed -n 's/^U = //p' < "$mf"`
+  # Find all dependency output files, they are included files with
+  # $(DEPDIR) in their names.  We invoke sed twice because it is the
+  # simplest approach to changing $(DEPDIR) to its actual value in the
+  # expansion.
+  for file in `sed -n "
+    s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+       sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+    # Make sure the directory exists.
+    test -f "$dirpart/$file" && continue
+    fdir=`$as_dirname -- "$file" ||
+$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$file" : 'X\(//\)[^/]' \| \
+        X"$file" : 'X\(//\)$' \| \
+        X"$file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)[^/].*/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+    { as_dir=$dirpart/$fdir
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$as_dir" : 'X\(//\)[^/]' \| \
+        X"$as_dir" : 'X\(//\)$' \| \
+        X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)[^/].*/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || { { $as_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
+$as_echo "$as_me: error: cannot create directory $as_dir" >&2;}
+   { (exit 1); exit 1; }; }; }
+    # echo "creating $dirpart/$file"
+    echo '# dummy' > "$dirpart/$file"
+  done
+done
+ ;;
+
+  esac
+done # for ac_tag
+
+
+{ (exit 0); exit 0; }
diff --git a/lexeme.h b/lexeme.h
new file mode 100644 (file)
index 0000000..c8dbab9
--- /dev/null
+++ b/lexeme.h
@@ -0,0 +1,449 @@
+#ifndef _LEXEME_H_
+#define _LEXEME_H_
+
+#include "smart_ptr.h"
+
+namespace utakata {
+
+    namespace lexeme {
+
+        class utakata::utf8_string::CUTF8InputStream;
+        class utakata::utf8_string::CUTF8String;
+        class CLexeme;
+
+        // lexer名前空間で使用されるそれぞれの終端記号と
+        // それらを解析するための関数オブジェクトを定義する。
+
+        struct CIdentityLexer
+        {
+            /*
+              <identifier>を解釈するためのfunctor。
+              <identifier>は次のBNF構文で定義される。
+              
+              <identifier> - <initial> <subsequent>*
+                           | <peculiar identifier>
+             */
+            smart_ptr<CLexeme> operator()(smart_ptr<utakata::utf8_string::CUTF8InputStream>& stream);
+        };
+
+        struct CInitialLexer
+        {
+            /*
+              <initial>を解釈するためのfunctor。
+              <initial>は次のBNF構文で定義される。
+              
+              <initial> - <constituent> | <special initial>
+                        | <inline hex escape>
+            */
+            smart_ptr<CLexeme> operator()(smart_ptr<utakata::utf8_string::CUTF8InputStream>& stream);
+        };
+
+        struct CConstituentLexer
+        {
+            /*
+              <constituent>を解釈するためのfunctor。
+              <constituent>は次のBNF構文で定義される。
+
+              <constituent> - <letter>
+              | 〈any character whose Unicode scalar value is greater than
+                  127, and whose category is Lu, Ll, Lt, Lm, Lo, Mn,
+                  Nl, No, Pd, Pc, Po, Sc, Sm, Sk, So, or Co〉
+            */
+            smart_ptr<CLexeme> operator()(smart_ptr<utakata::utf8_string::CUTF8InputStream>& stream);
+        };
+
+        struct CLetterlexer
+        {
+            /*
+              <letter>を解釈するためのfunctor。
+              <letter>は次のBNF構文で定義される。
+
+              <letter> - a | b | c | ... | z
+                       | A | B | C | ... | Z
+            */
+            smart_ptr<CLexeme> operator()(smart_ptr<utakata::utf8_string::CUTF8InputStream>& stream);
+        };
+
+        struct CSpecialInitialLexer
+        {
+            /*
+              <special initial>を解釈するためのfunctor。
+              <special initial>は次のBNF構文で定義される。
+              <special initial> - ! | $ | % | & | * | / | : | < | =
+                                | > | ? | ^ | _ | ~
+
+            */
+            smart_ptr<CLexeme> operator()(smart_ptr<utakata::utf8_string::CUTF8InputStream>& stream);
+        };
+
+        struct CDigitlexer
+        {
+            /*
+              <digit>を解釈するためのfunctor。
+              <digit>は次のBNF構文で定義される。
+              <digit> - 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
+            */
+            smart_ptr<CLexeme> operator()(smart_ptr<utakata::utf8_string::CUTF8InputStream>& stream);
+        };
+
+        struct CHexDigitLexer
+        {
+            /*
+              <hex digit>を解釈するためのfunctor。
+              <hex digit>は次のBNF構文で定義される。
+              <hex digit> - <digit>
+                          | a | A | b | B | c | C | d | D | e | E | f
+                          | F
+            */
+            smart_ptr<CLexeme> operator()(smart_ptr<utakata::utf8_string::CUTF8InputStream>& stream);
+        };
+
+        struct CSpecialSubsequentLexer
+        {
+            /*
+              <special subsequent>を解釈するためのfunctor。
+              <special subsequent>は次のBNF構文で定義される。
+              <special subsequent> → + | - | . | @
+            */
+            smart_ptr<CLexeme> operator()(smart_ptr<utakata::utf8_string::CUTF8InputStream>& stream);
+        };
+
+        struct CInlineHexEscapeLexer
+        {
+            /*
+              <inline hex escape>を解釈するためのfunctor
+              <inline hex escape>は次のBNF構文で定義される。
+              <inline hex escape> - \x<hex scalar value>;
+            */
+            smart_ptr<CLexeme> operator()(smart_ptr<utakata::utf8_string::CUTF8InputStream>& stream);
+        };
+
+        struct CHexScalarValueLexer
+        {
+            //<hex scalar value>を解釈するためのfunctor。
+            //<hex scalar value>は次のBNF構文で定義される。
+            //<hex scalar value> - <hex digit>+
+            smart_ptr<CLexeme> operator()(smart_ptr<utakata::utf8_string::CUTF8InputStream>& stream);
+        };
+
+        struct CBooleanLexer
+        {
+            // <boolean>を解釈するためのfunctor。
+            // <boolean>は次のBNF構文で定義される。
+            // <boolean> - #t | #T | #f | #F
+            smart_ptr<CLexeme> operator()(smart_ptr<utakata::utf8_string::CUTF8InputStream>& stream);
+        };
+
+        struct CCharactorLexer
+        {
+            // <charactor>を解釈するためのfunctor。
+            // <charactor>は次のBNF構文で定義される。
+            // <character> - #\<any character>
+            //                 | #\<character name>
+            //                 | #\x<hex scalar value>
+            smart_ptr<CLexeme> operator()(smart_ptr<utakata::utf8_string::CUTF8InputStream>& stream);
+        };
+
+        struct CCharactorNameLexer
+        {
+//             <character name>を解釈するためのfunctor。
+//             <charactor name>は次のBNF構文で定義される。
+//             <character name> - nul | alarm | backspace | tab
+//             | linefeed | newline | vtab | page | return
+//             | esc | space | delete
+
+            smart_ptr<CLexeme> operator()(smart_ptr<utakata::utf8_string::CUTF8InputStream>& stream);
+        };
+
+        struct CStringlexer
+        {
+//             <string>を解釈するためのfunctor。
+//             <string>は次のBNF構文で定義される。
+//             <string> - " <string element>* "
+            smart_ptr<CLexeme> operator()(smart_ptr<utakata::utf8_string::CUTF8InputStream>& stream);
+        };
+
+        struct CStringElementLexer
+        {
+//             <string element>を解釈するためのfunctor。
+//             <string element>は次のBNF構文で定義される。
+//             <string element> - <any character other than " or \>
+//          | \a | \b | \t | \n | \v | \f | \r
+//          | \" | \\
+//          | \<intraline whitespace>*<line ending>
+//             <intraline whitespace>*
+//          | <inline hex escape>
+            smart_ptr<CLexeme> operator()(smart_ptr<utakata::utf8_string::CUTF8InputStream>& stream);
+        };
+
+        struct CIntralineWhitespaceLexer
+        {
+//             <intraline whitespace>を解釈するためのfunctor。
+//             <intraline whitespace>は次のBNF構文で定義される。
+//             <intraline whitespace> - <character tabulation>
+//             | <any character whose category is Zs>
+            smart_ptr<CLexeme> operator()(smart_ptr<utakata::utf8_string::CUTF8InputStream>& stream);
+        };
+
+        struct CDelimiterlexer
+        {
+//             <delimiter>を解釈するためのfunctor。
+//             <delimiter>は次のBNF構文で定義される。
+//             <delimiter> - ( | ) | [ | ] | " | ; | #
+//          | <whitespace>
+            smart_ptr<CLexeme> operator()(smart_ptr<utakata::utf8_string::CUTF8InputStream>& stream);
+        };
+
+        struct CWhitespaceLexer
+        {
+//             <whitespace>を解釈するためのfunctor。
+//             <whitespace>は次のBNF構文で定義される。
+//             <whitespace> - <character tabulation>
+//             | <linefeed> | <line tabulation> | <form feed>
+//             | <carriage return> | <next line>
+//             | <any character whose category is Zs, Zl, or Zp>
+            smart_ptr<CLexeme> operator()(smart_ptr<utakata::utf8_string::CUTF8InputStream>& stream);
+        };
+
+        struct CLineEndingLexer
+        {
+//             <line ending>を解釈するためのfunctor。
+//             <line ending>は次のBNF構文で定義される。
+//             <line ending> - <linefeed> | <carriage return>
+//             | <carriage return> <linefeed> | <next line>
+//             | <carriage return> <next line> | <line separator>
+            smart_ptr<CLexeme> operator()(smart_ptr<utakata::utf8_string::CUTF8InputStream>& stream);
+        };
+
+        struct CCommentLexer
+        {
+//             <comment>を解釈するためのfunctor。
+//             <comment>は次のBNF構文で定義される。
+//             <comment> - ; 〈all subsequent characters up to a
+//             <line ending> or <paragraph separator>〉
+//             | <nested comment>
+//             | #; <interlexeme space> <datum>
+//             | #!r6rs
+            smart_ptr<CLexeme> operator()(smart_ptr<utakata::utf8_string::CUTF8InputStream>& stream);
+        };
+
+        struct CNestedCommentLexer
+        {
+//             <nested comment>を解釈するためのfunctor。
+//             <nested comment>は次のBNF構文で定義される。
+//             <nested comment> - #| <comment text>
+//             <comment cont>* |#
+            smart_ptr<CLexeme> operator()(smart_ptr<utakata::utf8_string::CUTF8InputStream>& stream);
+        };
+
+        struct CCommentTextLexer
+        {
+//             <comment text>を解釈するためのfunctor。
+//             <comment text>は次のBNF構文で定義される。
+//             <comment text> - 〈character sequence not containing
+//             #| or |#〉
+            smart_ptr<CLexeme> operator()(smart_ptr<utakata::utf8_string::CUTF8InputStream>& stream);
+        };
+
+        struct CCommentContLexer
+        {
+//             <comment cont>を解釈するためのfunctor。
+//             <comment cont>は次のBNF構文で定義される。
+//             <comment cont> - <nested comment> <comment text>
+            smart_ptr<CLexeme> operator()(smart_ptr<utakata::utf8_string::CUTF8InputStream>& stream);
+        };
+
+
+        struct CNumberLexer
+        {
+//             <number>を解釈するためのfunctor。
+//             <number>は次のBNF構文で定義される。
+//             <number> - <num 2> | <num 8>
+//             | <num 10> | <num 16>
+            smart_ptr<CLexeme> operator()(smart_ptr<utakata::utf8_string::CUTF8InputStream>& stream);
+        };
+
+        struct CNum2Lexer
+        {
+//             <num 2>を解釈するためのfunctor。
+//             <num 2>は次のBNF構文で定義される。
+//             <num R> - <prefix R> <complex R>
+//             <complex 2> - <real 2> | <real 2> @ <real 2>
+//             | <real 2> + <ureal 2> i | <real 2> - <ureal 2> i
+//             | <real 2> + <naninf> i | <real 2> - <naninf> i
+//             | <real 2> + i | <real 2> - i
+//             | + <ureal 2> i | - <ureal 2> i
+//             | + <naninf> i | - <naninf> i
+//             | + i | - i
+//             <real 2> - <sign> <ureal 2>
+//             | + <naninf> | - <naninf>
+//             <naninf> - nan.0 | inf.0
+//             <ureal 2> - <uinteger 2>
+//             | <uinteger 2> / <uinteger 2>
+//             | <decimal 2> <mantissa width>
+//             <decimal 10> - <uinteger 10> <suffix>
+//             | . <digit 10>+ <suffix>
+//             | <digit 10>+ . <digit 10>* <suffix>
+//             <uinteger 2> - <digit 2>+
+//             <prefix 2> - <radix 2> <exactness>
+//             | <exactness> <radix 2>
+
+//             <suffix> - <empty>
+//             | <exponent marker> <sign> <digit 10>+
+//             <exponent marker> - e | E | s | S | f | F
+//             | d | D | l | L
+//             <mantissa width> - <empty>
+//             | | <digit 10>+
+//             <sign> - <empty> | + | -
+//             <exactness> - <empty>
+//             | #i| #I | #e| #E
+//             <radix 2> - #b| #B
+//             <digit 2> - 0 | 1
+            smart_ptr<CLexeme> operator()(smart_ptr<utakata::utf8_string::CUTF8InputStream>& stream);
+        };
+
+        struct CNum8Lexer
+        {
+//             <num 8>を解釈するためのfunctor。
+//             <num 8>は次のBNF構文で定義される。
+//             <num R> - <prefix R> <complex R>
+//             <complex 8> - <real 8> | <real 8> @ <real 8>
+//             | <real 8> + <ureal 8> i | <real 8> - <ureal 8> i
+//             | <real 8> + <naninf> i | <real 8> - <naninf> i
+//             | <real 8> + i | <real 8> - i
+//             | + <ureal 8> i | - <ureal 8> i
+//             | + <naninf> i | - <naninf> i
+//             | + i | - i
+//             <real 8> - <sign> <ureal 8>
+//             | + <naninf> | - <naninf>
+//             <naninf> - nan.0 | inf.0
+//             <ureal 8> - <uinteger 8>
+//             | <uinteger 8> / <uinteger 8>
+//             | <decimal 8> <mantissa width>
+//             <decimal 10> - <uinteger 10> <suffix>
+//             | . <digit 10>+ <suffix>
+//             | <digit 10>+ . <digit 10>* <suffix>
+//             <uinteger 8> - <digit 8>+
+//             <prefix 8> - <radix 8> <exactness>
+//             | <exactness> <radix 8>
+
+//             <suffix> - <empty>
+//             | <exponent marker> <sign> <digit 10>+
+//             <exponent marker> - e | E | s | S | f | F
+//             | d | D | l | L
+//             <mantissa width> - <empty>
+//             | | <digit 10>+
+//             <sign> - <empty> | + | -
+//             <exactness> - <empty>
+//             | #i| #I | #e| #E
+//             <radix 8> - #b| #B
+//             <digit 8> - 0 | 1
+            smart_ptr<CLexeme> operator()(smart_ptr<utakata::utf8_string::CUTF8InputStream>& stream);
+        };
+
+        struct CNum10Lexer
+        {
+//             <num 10>を解釈するためのfunctor。
+//             <num 10>は次のBNF構文で定義される。
+//             <num R> - <prefix R> <complex R>
+//             <complex 10> - <real 10> | <real 10> @ <real 10>
+//             | <real 10> + <ureal 10> i | <real 10> - <ureal 10> i
+//             | <real 10> + <naninf> i | <real 10> - <naninf> i
+//             | <real 10> + i | <real 10> - i
+//             | + <ureal 10> i | - <ureal 10> i
+//             | + <naninf> i | - <naninf> i
+//             | + i | - i
+//             <real 10> - <sign> <ureal 10>
+//             | + <naninf> | - <naninf>
+//             <naninf> - nan.0 | inf.0
+//             <ureal 10> - <uinteger 10>
+//             | <uinteger 10> / <uinteger 10>
+//             | <decimal 10> <mantissa width>
+//             <decimal 10> - <uinteger 10> <suffix>
+//             | . <digit 10>+ <suffix>
+//             | <digit 10>+ . <digit 10>* <suffix>
+//             <uinteger 10> - <digit 10>+
+//             <prefix 10> - <radix 10> <exactness>
+//             | <exactness> <radix 10>
+
+//             <suffix> - <empty>
+//             | <exponent marker> <sign> <digit 10>+
+//             <exponent marker> - e | E | s | S | f | F
+//             | d | D | l | L
+//             <mantissa width> - <empty>
+//             | | <digit 10>+
+//             <sign> - <empty> | + | -
+//             <exactness> - <empty>
+//             | #i| #I | #e| #E
+//             <radix 10> - #b| #B
+//             <digit 10> - 0 | 1
+            smart_ptr<CLexeme> operator()(smart_ptr<utakata::utf8_string::CUTF8InputStream>& stream);
+        };
+
+        struct CNum16Lexer
+        {
+//             <num 16>を解釈するためのfunctor。
+//             <num 16>は次のBNF構文で定義される。
+//             <num R> - <prefix R> <complex R>
+//             <complex 16> - <real 16> | <real 16> @ <real 16>
+//             | <real 16> + <ureal 16> i | <real 16> - <ureal 16> i
+//             | <real 16> + <naninf> i | <real 16> - <naninf> i
+//             | <real 16> + i | <real 16> - i
+//             | + <ureal 16> i | - <ureal 16> i
+//             | + <naninf> i | - <naninf> i
+//             | + i | - i
+//             <real 16> - <sign> <ureal 16>
+//             | + <naninf> | - <naninf>
+//             <naninf> - nan.0 | inf.0
+//             <ureal 16> - <uinteger 16>
+//             | <uinteger 16> / <uinteger 16>
+//             | <decimal 16> <mantissa width>
+//             <decimal 10> - <uinteger 10> <suffix>
+//             | . <digit 10>+ <suffix>
+//             | <digit 10>+ . <digit 10>* <suffix>
+//             <uinteger 16> - <digit 16>+
+//             <prefix 16> - <radix 16> <exactness>
+//             | <exactness> <radix 16>
+
+//             <suffix> - <empty>
+//             | <exponent marker> <sign> <digit 10>+
+//             <exponent marker> - e | E | s | S | f | F
+//             | d | D | l | L
+//             <mantissa width> - <empty>
+//             | | <digit 10>+
+//             <sign> - <empty> | + | -
+//             <exactness> - <empty>
+//             | #i| #I | #e| #E
+//             <radix 16> - #b| #B
+//             <digit 16> - 0 | 1
+            smart_ptr<CLexeme> operator()(smart_ptr<utakata::utf8_string::CUTF8InputStream>& stream);            
+        };
+
+        //======================================================================
+
+        class CLexeme
+        {
+            // 非終端記号、及び終端記号を表す。
+            // とりあえず最もシンプルな形を取るよ。
+        public:
+            ILexeme(const utakata::utf8_string::CUTF8String& str, int id);
+            virtual ~ILexeme(){}
+
+            // 終端記号、非終端記号のIDを取得する。
+            int getID() const;
+
+            // そのものを表す文字列を返す。
+            const utakata::utf8_string::CUTF8String& getString() const;
+
+        private:
+
+            // pimplイディオムを使用する。
+            struct Impl;
+            smart_ptr<Impl> pimpl_;
+        };
+
+    };
+
+};
+
+#endif /* _LEXEME_H_ */
diff --git a/lexer.h b/lexer.h
index adb5a9e..1135618 100755 (executable)
--- a/lexer.h
+++ b/lexer.h
@@ -5,52 +5,50 @@
 
 namespace utakata {
 
-    class CLexer
-    {
-        /**
-           scheme構文の字句解析器。
-           単純な字句解析器として働く。ストリームから文字列を読みだし、
-           BNF構文に基づいたそれぞれのオブジェクトに変換される。
-           Schemeの構文解析処理は、どちらかというとこの字句解析が大半を占める。
-           それぞれの字句解析は、該当するオブジェクトに変換される。
-           処理としてはそれほど難しくはない、と思いたい。
-         */
-    public:
-        CLexer();
-        virtual ~CLexer();
-
-        /**
-           渡されたUTF8を解釈するstreamから、データを解釈して、結果を返す。
-           結果は、smart_ptr<CLexeme>で返される。
-         */
-        smart_ptr<CLexeme> parse(smart_ptr<CUTF8InputStream>& stream);
-
-    private:
-
-        // CLexerは、それぞれの非終端記号に該当するfunctorによって解釈される。
-        // 一つのfunctorは、それぞれの非終端記号、もしくは終端記号を解釈することで、
-        // 実際の解釈が行われる。
-
+    namespace lexer {
+    
+        class CLexer
+        {
+            /**
+               scheme構文の字句解析器。
+               単純な字句解析器として働く。ストリームから文字列を読みだし、
+               BNF構文に基づいたそれぞれのオブジェクトに変換される。
+               Schemeの構文解析処理は、どちらかというとこの字句解析が大半を占める。
+               それぞれの字句解析は、該当するオブジェクトに変換される。
+               処理としてはそれほど難しくはない、と思いたい。
+
+               基本方針としては、シンプル->リファクタリングを繰り返すことを基本とする。
+               なので、最初はlex関数一つしか無いが、状況に応じて随時メンバ関数を増やしたりfunctor
+               として分離させたりする。
+               でも基本的にこれひとつで済むようにした方が楽かもしんない。
+            */
+        public:
+            CLexer();
+            virtual ~CLexer();
+
+            /**
+               渡されたUTF8を解釈するstreamから、データを解釈して、結果を返す。
+               結果は、smart_ptr<CLexeme>で返される。
+            */
+            smart_ptr<CLexeme> lex(smart_ptr<CUTF8InputStream>& stream);
+
+        private:
         
-    };
+        };
+
+        class ILexeme
+        {
+            // 非終端記号、及び終端記号を表すベースクラス。
+        public:
+            ILexeme();
+            virtual ~ILexeme(){}
+
+            // 終端記号、非終端記号のIDを取得する。
+            virtual int getID() const = 0;
 
-    struct CLexemeLexer
-    {
-        /**
-           <lexeme>を解釈するfunctor。
-           <lexeme>は以下のBNF構文で構成される。
-           以下の内、さらに別の非終端記号で表現されている構文は、さらに別のfunctorが
-           内部から呼びだされる。
-           多重再帰になってしまうが、基本的にループするような構文ではないため、
-           LALRでなくとも特に問題ない。
-           <lexeme> - <identifier> | <boolean> | <number>
-                    | <character> | <string>
-                    | ( | ) | [ | ] | #( | #vu8( | ’ | ‘ | , | ,@ | .
-                    | #’ | #‘ | #, | #,@
-
-         */
-
-        smart_ptr<CLexeme> operator()(smart_ptr<CUTF8InputStream>& stream);
+            // そのものを表す文字列を返す。
+            virtual const CUTF8String getString() const = 0;
+        };
 
     };
 
diff --git a/mkinstalldirs b/mkinstalldirs
new file mode 100755 (executable)
index 0000000..ef7e16f
--- /dev/null
@@ -0,0 +1,161 @@
+#! /bin/sh
+# mkinstalldirs --- make directory hierarchy
+
+scriptversion=2006-05-11.19
+
+# Original author: Noah Friedman <friedman@prep.ai.mit.edu>
+# Created: 1993-05-16
+# Public domain.
+#
+# This file is maintained in Automake, please report
+# bugs to <bug-automake@gnu.org> or send patches to
+# <automake-patches@gnu.org>.
+
+nl='
+'
+IFS=" ""       $nl"
+errstatus=0
+dirmode=
+
+usage="\
+Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ...
+
+Create each directory DIR (with mode MODE, if specified), including all
+leading file name components.
+
+Report bugs to <bug-automake@gnu.org>."
+
+# process command line arguments
+while test $# -gt 0 ; do
+  case $1 in
+    -h | --help | --h*)         # -h for help
+      echo "$usage"
+      exit $?
+      ;;
+    -m)                         # -m PERM arg
+      shift
+      test $# -eq 0 && { echo "$usage" 1>&2; exit 1; }
+      dirmode=$1
+      shift
+      ;;
+    --version)
+      echo "$0 $scriptversion"
+      exit $?
+      ;;
+    --)                         # stop option processing
+      shift
+      break
+      ;;
+    -*)                         # unknown option
+      echo "$usage" 1>&2
+      exit 1
+      ;;
+    *)                          # first non-opt arg
+      break
+      ;;
+  esac
+done
+
+for file
+do
+  if test -d "$file"; then
+    shift
+  else
+    break
+  fi
+done
+
+case $# in
+  0) exit 0 ;;
+esac
+
+# Solaris 8's mkdir -p isn't thread-safe.  If you mkdir -p a/b and
+# mkdir -p a/c at the same time, both will detect that a is missing,
+# one will create a, then the other will try to create a and die with
+# a "File exists" error.  This is a problem when calling mkinstalldirs
+# from a parallel make.  We use --version in the probe to restrict
+# ourselves to GNU mkdir, which is thread-safe.
+case $dirmode in
+  '')
+    if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
+      echo "mkdir -p -- $*"
+      exec mkdir -p -- "$@"
+    else
+      # On NextStep and OpenStep, the `mkdir' command does not
+      # recognize any option.  It will interpret all options as
+      # directories to create, and then abort because `.' already
+      # exists.
+      test -d ./-p && rmdir ./-p
+      test -d ./--version && rmdir ./--version
+    fi
+    ;;
+  *)
+    if mkdir -m "$dirmode" -p --version . >/dev/null 2>&1 &&
+       test ! -d ./--version; then
+      echo "mkdir -m $dirmode -p -- $*"
+      exec mkdir -m "$dirmode" -p -- "$@"
+    else
+      # Clean up after NextStep and OpenStep mkdir.
+      for d in ./-m ./-p ./--version "./$dirmode";
+      do
+        test -d $d && rmdir $d
+      done
+    fi
+    ;;
+esac
+
+for file
+do
+  case $file in
+    /*) pathcomp=/ ;;
+    *)  pathcomp= ;;
+  esac
+  oIFS=$IFS
+  IFS=/
+  set fnord $file
+  shift
+  IFS=$oIFS
+
+  for d
+  do
+    test "x$d" = x && continue
+
+    pathcomp=$pathcomp$d
+    case $pathcomp in
+      -*) pathcomp=./$pathcomp ;;
+    esac
+
+    if test ! -d "$pathcomp"; then
+      echo "mkdir $pathcomp"
+
+      mkdir "$pathcomp" || lasterr=$?
+
+      if test ! -d "$pathcomp"; then
+       errstatus=$lasterr
+      else
+       if test ! -z "$dirmode"; then
+         echo "chmod $dirmode $pathcomp"
+         lasterr=
+         chmod "$dirmode" "$pathcomp" || lasterr=$?
+
+         if test ! -z "$lasterr"; then
+           errstatus=$lasterr
+         fi
+       fi
+      fi
+    fi
+
+    pathcomp=$pathcomp/
+  done
+done
+
+exit $errstatus
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-end: "$"
+# End:
index 4b8dbcd..3786bbc 100644 (file)
Binary files a/test/GPATH and b/test/GPATH differ
index cac14c4..855dc45 100644 (file)
Binary files a/test/GRTAGS and b/test/GRTAGS differ
index 5c6aa5f..f2225c6 100644 (file)
Binary files a/test/GSYMS and b/test/GSYMS differ
index 5064b07..f3711c1 100644 (file)
Binary files a/test/GTAGS and b/test/GTAGS differ
index 4e983ff..6917983 100755 (executable)
Binary files a/test/utf8_string_test and b/test/utf8_string_test differ
index 06af97a..c6f0c48 100644 (file)
@@ -87,11 +87,18 @@ bool utf8_string_util_test(smart_ptr<simpletest::CSimpleTestAsserter> asserter)
 
     utakata::utf8_string::CUTF8String str(stream.read(5));
     utakata::utf8_string::CUTF8String str2(stream.read(3));
+    utakata::utf8_string::CUTF8String str3 = str;
 
     // 挿入してみる。
     str.insert(str.begin(), str2.begin(), str2.end());
     asserter->check(str.toStr(), "ssおあいうえs");
 
+    str3.insert(str3.begin() + 1, str2.begin(), str2.begin() + 1);
+    asserter->check(str3.toStr(), "あsいうえs");
+
+    str3.insert(str3.end(), str2.begin(), str2.end());
+    asserter->check(str3.toStr(), "あsいうえsssお");
+
     return asserter->isOk();
 }
 
index 9d56335..63d51ef 100644 (file)
@@ -89,6 +89,10 @@ namespace utakata {
             long utf16_code_;
         };
 
+        // 渡されたCUTF8Charがasciiコードの範囲内に収まっているかどうかを返す。
+        bool is_ascii_char(const CUTF8Char& ch);
+
+        //================================================================================
 
         class CUTF8String
         {
@@ -122,6 +126,7 @@ namespace utakata {
             const_utf8iterator begin() const {return chars_.begin();}
             utf8iterator begin() {return chars_.begin();}
 
+            // 末尾のイテレータを取得する。
             const_utf8iterator end() const {return chars_.end();}
             utf8iterator end() {return chars_.end();}
 
diff --git a/utf8_string_test.cpp b/utf8_string_test.cpp
new file mode 100644 (file)
index 0000000..518241a
--- /dev/null
@@ -0,0 +1,118 @@
+#include <iostream>
+#include <sstream>
+#include <string>
+#include <functional>
+
+
+#include "../simpletest.h"
+
+#include "../utf8.h"
+
+#include "../utf8_string.h"
+#include "../TextArrayFormat.h"
+
+bool utf8_multichar_test(smart_ptr<simpletest::CSimpleTestAsserter> asserter)
+{
+
+    std::string tmp("あいuえお");
+    // マルチバイト文字列を正しく読みだせるかどうかのチェックを
+    // 含めたテスト
+    smart_ptr<std::istream> ss(new std::stringstream(tmp));
+
+    utakata::utf8::CUTF8InputStream stream(ss);
+
+    // 単独のreadを試す。
+    utakata::utf8_string::CUTF8Char ch(stream.read());
+    asserter->check(ch.toUTF16Code(), utakata::utf8::generateUTF8Code("あ"));
+    // peekが問題なく働いていることのテスト
+    utakata::utf8_string::CUTF8Char ch2(stream.peek());
+    asserter->check(ch2.toUTF16Code(), utakata::utf8::generateUTF8Code("い"));
+    utakata::utf8_string::CUTF8Char ch3(stream.read());
+    asserter->check(ch3.toUTF16Code(), utakata::utf8::generateUTF8Code("い"));
+
+    // asciiだとしても問題無く読みだせるはず。
+    utakata::utf8_string::CUTF8Char ch4(stream.peek());
+    asserter->check(ch4.toUTF16Code(), 'u');
+
+    // ascii文字の範囲であるかどうかを判定する関数のテスト。
+    asserter->check(utakata::utf8_string::is_ascii_char(ch4), true);
+    asserter->check(utakata::utf8_string::is_ascii_char(ch), false);
+
+    // 同一コードなので比較して同じになるはず。
+    asserter->check(ch == ch2, false, "chとch2が異なる");
+    asserter->check(ch < ch2, true , "chよりch2が大きいはず");
+
+    // 文字として直接返せる。ただし比較はstd::stringでしか行えない。
+    asserter->check(ch2.toStr(), "い");
+
+    return asserter->isOk();
+}
+
+bool utf8_string_test(smart_ptr<simpletest::CSimpleTestAsserter> asserter)
+{
+    // マルチバイトとascii文字の混在文字も正しく扱うことのできる
+    // CUTF8Stringのテスト
+    
+    std::string tmp("あいうえsssお");
+
+    smart_ptr<std::istream> ss(new std::stringstream(tmp));
+    utakata::utf8::CUTF8InputStream stream(ss);
+
+    utakata::utf8_string::CUTF8String str(stream.read(5));
+    asserter->check(str.begin()->toStr(), "あ");
+    asserter->check(str.size(), 5);
+
+    // 自分自身との加算でも問題ないことを確認する。
+    str += str;
+    asserter->check(str[5].toStr(), "あ");
+
+    // 本当に基本的なもの以外は、同一の名前空間内に関数が用意されている。
+    // utf8_stringから返されるのは、UTF8のバイト列を設定した文字列であると
+    // する。
+    asserter->check(utakata::utf8_string::substring(str,0,2), "あい");
+    asserter->check(utakata::utf8_string::substring(str,1,2), "いう");
+    asserter->check(utakata::utf8_string::substring(str, 2), "うえsあいうえs");
+
+    // 文字列とするのは自身の関数だけで可能。
+    asserter->check(str.toStr(), "あいうえsあいうえs");
+
+    return asserter->isOk();
+}
+
+bool utf8_string_util_test(smart_ptr<simpletest::CSimpleTestAsserter> asserter)
+{
+    // CUTF8Stringと共に利用するためのユーティリティ関数の操作を
+    // 行う。
+    
+    std::string tmp("あいうえsssお");
+
+    smart_ptr<std::istream> ss(new std::stringstream(tmp));
+    utakata::utf8::CUTF8InputStream stream(ss);
+
+    utakata::utf8_string::CUTF8String str(stream.read(5));
+    utakata::utf8_string::CUTF8String str2(stream.read(3));
+    utakata::utf8_string::CUTF8String str3 = str;
+
+    // 挿入してみる。
+    str.insert(str.begin(), str2.begin(), str2.end());
+    asserter->check(str.toStr(), "ssおあいうえs");
+
+    str3.insert(str3.begin() + 1, str2.begin(), str2.begin() + 1);
+    asserter->check(str3.toStr(), "あsいうえs");
+
+    str3.insert(str3.end(), str2.begin(), str2.end());
+    asserter->check(str3.toStr(), "あsいうえsssお");
+
+    return asserter->isOk();
+}
+
+
+int main(int argc, char *argv[])
+{
+    simpletest::CSimpleTestSuite suite("UTF-8 文字列テスト");
+    suite.addTester(sfcr::screate(utf8_multichar_test, suite.getAsserter()));
+    suite.addTester(sfcr::screate(utf8_string_test, suite.getAsserter()));
+    suite.addTester(sfcr::screate(utf8_string_util_test, suite.getAsserter()));
+    suite.run();
+    return 0;
+}