OSDN Git Service

Full Width Japanese to Half width converter.
authorvisor <visor@users.sourceforge.jp>
Wed, 29 Sep 2010 15:31:10 +0000 (00:31 +0900)
committervisor <visor@users.sourceforge.jp>
Wed, 29 Sep 2010 15:31:10 +0000 (00:31 +0900)
15 files changed:
Makefile.conf
ext/Makefile
lib/cdbobj.h [new file with mode: 0644]
lib/form_utf8-jp.cc
lib/japanese-hankaku.c [new file with mode: 0644]
lib/japanese-hankaku.h [new file with mode: 0644]
lib/utf8-jp.cc
lib/utf8-jp.h
lib/utf8.cc
lib/utf8.h
ml/Makefile
modules/ml-formvar.cc
modules/ml-japanese.cc [new file with mode: 0644]
modules/ml-japanese.h [new file with mode: 0644]
modules/ml-string.cc

index e331d68..802481c 100644 (file)
@@ -2,6 +2,9 @@ UTF8JP = 1
 BSD = 1
 #Linux = 1
 
+.ifdef UTF8JP
+MSRCS += ml-japanese.cc
+.endif
 MSRCS += diff.cc
 MSRCS += ml-addon.cc
 MSRCS += ml-apache.cc
index cd8f303..27c08da 100644 (file)
@@ -1,3 +1,4 @@
 SUBDIR += sqlite
+SUBDIR += cdblib
 .include <bsd.subdir.mk>
 dist:
diff --git a/lib/cdbobj.h b/lib/cdbobj.h
new file mode 100644 (file)
index 0000000..3da418f
--- /dev/null
@@ -0,0 +1,38 @@
+#ifndef CDBOBJ_H
+#define CDBOBJ_H
+
+#include <string.h>
+#include <sys/types.h>
+extern "C" {
+#include "cdb.h"
+}
+
+class CDBMem {
+ public:
+    struct cdb  db;
+
+    CDBMem (unsigned char* data, uint32_t size) {
+       memset (&db, 0, sizeof (db));
+       cdb_init_mem (&db, data, size);
+    };
+    virtual  ~CDBMem () {
+       cdb_free_mem (&db);
+    };
+//    struct cdb*  operator () () {
+//     return &db;
+//    };
+    virtual int  find (const char* p, unsigned int len) {
+       return cdb_find (&db, (char*)p, len);
+    };
+    virtual uint32_t  datapos () {
+       return db.dpos;
+    };
+    virtual uint32_t  datalen () {
+       return db.dlen;
+    };
+    virtual int  read (char* bufp) {
+       return cdb_read (&db, bufp, datalen (), datapos ());
+    };
+};
+
+#endif /* CDBOBJ_H */
index 6c2240c..be0ae30 100644 (file)
@@ -4,9 +4,6 @@
 #include "utf8-jp.h"
 
 void  CGIFormUTF8JPMS::decode (ustring& key) {
-//    key = urldecode_nonul (key);
-//    fixUTF8 (key);
-//    key = fixFromMS (key);
     key = fixFromMS (fixUTF8 (urldecode_nonul (key)));
 }
 
diff --git a/lib/japanese-hankaku.c b/lib/japanese-hankaku.c
new file mode 100644 (file)
index 0000000..1ca18ad
--- /dev/null
@@ -0,0 +1,300 @@
+int  JPHankakuTableSize = 4737;
+unsigned char*  JPHankakuTable = 
+       "\x81\x0c\x00\x00\x00\x00\x00\x00\x81\x0c\x00\x00\x00\x00\x00\x00"
+       "\x81\x0c\x00\x00\x00\x00\x00\x00\x81\x0c\x00\x00\x00\x00\x00\x00"
+       "\x81\x0c\x00\x00\x00\x00\x00\x00\x81\x0c\x00\x00\x00\x00\x00\x00"
+       "\x81\x0c\x00\x00\x00\x00\x00\x00\x81\x0c\x00\x00\x00\x00\x00\x00"
+       "\x81\x0c\x00\x00\x00\x00\x00\x00\x81\x0c\x00\x00\x00\x00\x00\x00"
+       "\x81\x0c\x00\x00\x00\x00\x00\x00\x81\x0c\x00\x00\x00\x00\x00\x00"
+       "\x81\x0c\x00\x00\x00\x00\x00\x00\x81\x0c\x00\x00\x00\x00\x00\x00"
+       "\x81\x0c\x00\x00\x00\x00\x00\x00\x81\x0c\x00\x00\x00\x00\x00\x00"
+       "\x81\x0c\x00\x00\x00\x00\x00\x00\x81\x0c\x00\x00\x00\x00\x00\x00"
+       "\x81\x0c\x00\x00\x00\x00\x00\x00\x81\x0c\x00\x00\x00\x00\x00\x00"
+       "\x81\x0c\x00\x00\x00\x00\x00\x00\x81\x0c\x00\x00\x00\x00\x00\x00"
+       "\x81\x0c\x00\x00\x00\x00\x00\x00\x81\x0c\x00\x00\x00\x00\x00\x00"
+       "\x81\x0c\x00\x00\x00\x00\x00\x00\x81\x0c\x00\x00\x00\x00\x00\x00"
+       "\x81\x0c\x00\x00\x02\x00\x00\x00\x91\x0c\x00\x00\x00\x00\x00\x00"
+       "\x91\x0c\x00\x00\x00\x00\x00\x00\x91\x0c\x00\x00\x02\x00\x00\x00"
+       "\xa1\x0c\x00\x00\x02\x00\x00\x00\xb1\x0c\x00\x00\x02\x00\x00\x00"
+       "\xc1\x0c\x00\x00\x00\x00\x00\x00\xc1\x0c\x00\x00\x00\x00\x00\x00"
+       "\xc1\x0c\x00\x00\x00\x00\x00\x00\xc1\x0c\x00\x00\x00\x00\x00\x00"
+       "\xc1\x0c\x00\x00\x00\x00\x00\x00\xc1\x0c\x00\x00\x00\x00\x00\x00"
+       "\xc1\x0c\x00\x00\x00\x00\x00\x00\xc1\x0c\x00\x00\x00\x00\x00\x00"
+       "\xc1\x0c\x00\x00\x00\x00\x00\x00\xc1\x0c\x00\x00\x00\x00\x00\x00"
+       "\xc1\x0c\x00\x00\x00\x00\x00\x00\xc1\x0c\x00\x00\x00\x00\x00\x00"
+       "\xc1\x0c\x00\x00\x00\x00\x00\x00\xc1\x0c\x00\x00\x00\x00\x00\x00"
+       "\xc1\x0c\x00\x00\x00\x00\x00\x00\xc1\x0c\x00\x00\x00\x00\x00\x00"
+       "\xc1\x0c\x00\x00\x00\x00\x00\x00\xc1\x0c\x00\x00\x00\x00\x00\x00"
+       "\xc1\x0c\x00\x00\x00\x00\x00\x00\xc1\x0c\x00\x00\x00\x00\x00\x00"
+       "\xc1\x0c\x00\x00\x00\x00\x00\x00\xc1\x0c\x00\x00\x00\x00\x00\x00"
+       "\xc1\x0c\x00\x00\x00\x00\x00\x00\xc1\x0c\x00\x00\x00\x00\x00\x00"
+       "\xc1\x0c\x00\x00\x00\x00\x00\x00\xc1\x0c\x00\x00\x00\x00\x00\x00"
+       "\xc1\x0c\x00\x00\x00\x00\x00\x00\xc1\x0c\x00\x00\x00\x00\x00\x00"
+       "\xc1\x0c\x00\x00\x00\x00\x00\x00\xc1\x0c\x00\x00\x00\x00\x00\x00"
+       "\xc1\x0c\x00\x00\x00\x00\x00\x00\xc1\x0c\x00\x00\x00\x00\x00\x00"
+       "\xc1\x0c\x00\x00\x02\x00\x00\x00\xd1\x0c\x00\x00\x02\x00\x00\x00"
+       "\xe1\x0c\x00\x00\x02\x00\x00\x00\xf1\x0c\x00\x00\x02\x00\x00\x00"
+       "\x01\x0d\x00\x00\x02\x00\x00\x00\x11\x0d\x00\x00\x02\x00\x00\x00"
+       "\x21\x0d\x00\x00\x02\x00\x00\x00\x31\x0d\x00\x00\x02\x00\x00\x00"
+       "\x41\x0d\x00\x00\x02\x00\x00\x00\x51\x0d\x00\x00\x02\x00\x00\x00"
+       "\x61\x0d\x00\x00\x02\x00\x00\x00\x71\x0d\x00\x00\x02\x00\x00\x00"
+       "\x81\x0d\x00\x00\x02\x00\x00\x00\x91\x0d\x00\x00\x02\x00\x00\x00"
+       "\xa1\x0d\x00\x00\x02\x00\x00\x00\xb1\x0d\x00\x00\x02\x00\x00\x00"
+       "\xc1\x0d\x00\x00\x02\x00\x00\x00\xd1\x0d\x00\x00\x02\x00\x00\x00"
+       "\xe1\x0d\x00\x00\x02\x00\x00\x00\xf1\x0d\x00\x00\x02\x00\x00\x00"
+       "\x01\x0e\x00\x00\x02\x00\x00\x00\x11\x0e\x00\x00\x02\x00\x00\x00"
+       "\x21\x0e\x00\x00\x02\x00\x00\x00\x31\x0e\x00\x00\x02\x00\x00\x00"
+       "\x41\x0e\x00\x00\x02\x00\x00\x00\x51\x0e\x00\x00\x02\x00\x00\x00"
+       "\x61\x0e\x00\x00\x02\x00\x00\x00\x71\x0e\x00\x00\x02\x00\x00\x00"
+       "\x81\x0e\x00\x00\x02\x00\x00\x00\x91\x0e\x00\x00\x02\x00\x00\x00"
+       "\xa1\x0e\x00\x00\x02\x00\x00\x00\xb1\x0e\x00\x00\x02\x00\x00\x00"
+       "\xc1\x0e\x00\x00\x02\x00\x00\x00\xd1\x0e\x00\x00\x02\x00\x00\x00"
+       "\xe1\x0e\x00\x00\x02\x00\x00\x00\xf1\x0e\x00\x00\x02\x00\x00\x00"
+       "\x01\x0f\x00\x00\x02\x00\x00\x00\x11\x0f\x00\x00\x02\x00\x00\x00"
+       "\x21\x0f\x00\x00\x02\x00\x00\x00\x31\x0f\x00\x00\x02\x00\x00\x00"
+       "\x41\x0f\x00\x00\x02\x00\x00\x00\x51\x0f\x00\x00\x02\x00\x00\x00"
+       "\x61\x0f\x00\x00\x02\x00\x00\x00\x71\x0f\x00\x00\x02\x00\x00\x00"
+       "\x81\x0f\x00\x00\x02\x00\x00\x00\x91\x0f\x00\x00\x02\x00\x00\x00"
+       "\xa1\x0f\x00\x00\x02\x00\x00\x00\xb1\x0f\x00\x00\x02\x00\x00\x00"
+       "\xc1\x0f\x00\x00\x04\x00\x00\x00\xe1\x0f\x00\x00\x00\x00\x00\x00"
+       "\xe1\x0f\x00\x00\x02\x00\x00\x00\xf1\x0f\x00\x00\x02\x00\x00\x00"
+       "\x01\x10\x00\x00\x00\x00\x00\x00\x01\x10\x00\x00\x02\x00\x00\x00"
+       "\x11\x10\x00\x00\x02\x00\x00\x00\x21\x10\x00\x00\x02\x00\x00\x00"
+       "\x31\x10\x00\x00\x02\x00\x00\x00\x41\x10\x00\x00\x02\x00\x00\x00"
+       "\x51\x10\x00\x00\x02\x00\x00\x00\x61\x10\x00\x00\x00\x00\x00\x00"
+       "\x61\x10\x00\x00\x02\x00\x00\x00\x71\x10\x00\x00\x02\x00\x00\x00"
+       "\x81\x10\x00\x00\x02\x00\x00\x00\x91\x10\x00\x00\x02\x00\x00\x00"
+       "\xa1\x10\x00\x00\x02\x00\x00\x00\xb1\x10\x00\x00\x02\x00\x00\x00"
+       "\xc1\x10\x00\x00\x02\x00\x00\x00\xd1\x10\x00\x00\x02\x00\x00\x00"
+       "\xe1\x10\x00\x00\x02\x00\x00\x00\xf1\x10\x00\x00\x02\x00\x00\x00"
+       "\x01\x11\x00\x00\x02\x00\x00\x00\x11\x11\x00\x00\x02\x00\x00\x00"
+       "\x21\x11\x00\x00\x00\x00\x00\x00\x21\x11\x00\x00\x00\x00\x00\x00"
+       "\x21\x11\x00\x00\x02\x00\x00\x00\x31\x11\x00\x00\x02\x00\x00\x00"
+       "\x41\x11\x00\x00\x02\x00\x00\x00\x51\x11\x00\x00\x02\x00\x00\x00"
+       "\x61\x11\x00\x00\x02\x00\x00\x00\x71\x11\x00\x00\x02\x00\x00\x00"
+       "\x81\x11\x00\x00\x02\x00\x00\x00\x91\x11\x00\x00\x02\x00\x00\x00"
+       "\xa1\x11\x00\x00\x02\x00\x00\x00\xb1\x11\x00\x00\x02\x00\x00\x00"
+       "\xc1\x11\x00\x00\x02\x00\x00\x00\xd1\x11\x00\x00\x02\x00\x00\x00"
+       "\xe1\x11\x00\x00\x02\x00\x00\x00\xf1\x11\x00\x00\x00\x00\x00\x00"
+       "\xf1\x11\x00\x00\x02\x00\x00\x00\x01\x12\x00\x00\x02\x00\x00\x00"
+       "\x11\x12\x00\x00\x02\x00\x00\x00\x21\x12\x00\x00\x02\x00\x00\x00"
+       "\x31\x12\x00\x00\x02\x00\x00\x00\x41\x12\x00\x00\x02\x00\x00\x00"
+       "\x51\x12\x00\x00\x02\x00\x00\x00\x61\x12\x00\x00\x02\x00\x00\x00"
+       "\x71\x12\x00\x00\x00\x00\x00\x00\x71\x12\x00\x00\x00\x00\x00\x00"
+       "\x71\x12\x00\x00\x00\x00\x00\x00\x71\x12\x00\x00\x00\x00\x00\x00"
+       "\x71\x12\x00\x00\x00\x00\x00\x00\x71\x12\x00\x00\x00\x00\x00\x00"
+       "\x71\x12\x00\x00\x00\x00\x00\x00\x71\x12\x00\x00\x00\x00\x00\x00"
+       "\x71\x12\x00\x00\x00\x00\x00\x00\x71\x12\x00\x00\x00\x00\x00\x00"
+       "\x71\x12\x00\x00\x00\x00\x00\x00\x71\x12\x00\x00\x00\x00\x00\x00"
+       "\x71\x12\x00\x00\x00\x00\x00\x00\x71\x12\x00\x00\x00\x00\x00\x00"
+       "\x71\x12\x00\x00\x00\x00\x00\x00\x71\x12\x00\x00\x00\x00\x00\x00"
+       "\x71\x12\x00\x00\x00\x00\x00\x00\x71\x12\x00\x00\x00\x00\x00\x00"
+       "\x71\x12\x00\x00\x00\x00\x00\x00\x71\x12\x00\x00\x00\x00\x00\x00"
+       "\x71\x12\x00\x00\x00\x00\x00\x00\x71\x12\x00\x00\x00\x00\x00\x00"
+       "\x71\x12\x00\x00\x00\x00\x00\x00\x71\x12\x00\x00\x00\x00\x00\x00"
+       "\x71\x12\x00\x00\x00\x00\x00\x00\x71\x12\x00\x00\x00\x00\x00\x00"
+       "\x71\x12\x00\x00\x00\x00\x00\x00\x71\x12\x00\x00\x00\x00\x00\x00"
+       "\x71\x12\x00\x00\x00\x00\x00\x00\x71\x12\x00\x00\x00\x00\x00\x00"
+       "\x71\x12\x00\x00\x00\x00\x00\x00\x71\x12\x00\x00\x00\x00\x00\x00"
+       "\x71\x12\x00\x00\x00\x00\x00\x00\x71\x12\x00\x00\x00\x00\x00\x00"
+       "\x71\x12\x00\x00\x00\x00\x00\x00\x71\x12\x00\x00\x00\x00\x00\x00"
+       "\x71\x12\x00\x00\x00\x00\x00\x00\x71\x12\x00\x00\x00\x00\x00\x00"
+       "\x71\x12\x00\x00\x02\x00\x00\x00\x81\x12\x00\x00\x00\x00\x00\x00"
+       "\x81\x12\x00\x00\x00\x00\x00\x00\x81\x12\x00\x00\x00\x00\x00\x00"
+       "\x81\x12\x00\x00\x00\x00\x00\x00\x81\x12\x00\x00\x00\x00\x00\x00"
+       "\x81\x12\x00\x00\x00\x00\x00\x00\x81\x12\x00\x00\x00\x00\x00\x00"
+       "\x81\x12\x00\x00\x00\x00\x00\x00\x81\x12\x00\x00\x00\x00\x00\x00"
+       "\x81\x12\x00\x00\x00\x00\x00\x00\x81\x12\x00\x00\x00\x00\x00\x00"
+       "\x81\x12\x00\x00\x00\x00\x00\x00\x81\x12\x00\x00\x00\x00\x00\x00"
+       "\x81\x12\x00\x00\x00\x00\x00\x00\x81\x12\x00\x00\x00\x00\x00\x00"
+       "\x81\x12\x00\x00\x00\x00\x00\x00\x81\x12\x00\x00\x00\x00\x00\x00"
+       "\x81\x12\x00\x00\x00\x00\x00\x00\x81\x12\x00\x00\x00\x00\x00\x00"
+       "\x81\x12\x00\x00\x00\x00\x00\x00\x81\x12\x00\x00\x00\x00\x00\x00"
+       "\x81\x12\x00\x00\x00\x00\x00\x00\x81\x12\x00\x00\x00\x00\x00\x00"
+       "\x81\x12\x00\x00\x00\x00\x00\x00\x81\x12\x00\x00\x00\x00\x00\x00"
+       "\x81\x12\x00\x00\x00\x00\x00\x00\x81\x12\x00\x00\x00\x00\x00\x00"
+       "\x81\x12\x00\x00\x00\x00\x00\x00\x81\x12\x00\x00\x00\x00\x00\x00"
+       "\x81\x12\x00\x00\x00\x00\x00\x00\x81\x12\x00\x00\x00\x00\x00\x00"
+       "\x81\x12\x00\x00\x00\x00\x00\x00\x81\x12\x00\x00\x00\x00\x00\x00"
+       "\x81\x12\x00\x00\x00\x00\x00\x00\x81\x12\x00\x00\x00\x00\x00\x00"
+       "\x81\x12\x00\x00\x00\x00\x00\x00\x81\x12\x00\x00\x00\x00\x00\x00"
+       "\x81\x12\x00\x00\x00\x00\x00\x00\x81\x12\x00\x00\x00\x00\x00\x00"
+       "\x81\x12\x00\x00\x00\x00\x00\x00\x81\x12\x00\x00\x00\x00\x00\x00"
+       "\x81\x12\x00\x00\x00\x00\x00\x00\x81\x12\x00\x00\x00\x00\x00\x00"
+       "\x81\x12\x00\x00\x00\x00\x00\x00\x81\x12\x00\x00\x00\x00\x00\x00"
+       "\x81\x12\x00\x00\x00\x00\x00\x00\x81\x12\x00\x00\x00\x00\x00\x00"
+       "\x81\x12\x00\x00\x00\x00\x00\x00\x81\x12\x00\x00\x00\x00\x00\x00"
+       "\x81\x12\x00\x00\x00\x00\x00\x00\x81\x12\x00\x00\x00\x00\x00\x00"
+       "\x81\x12\x00\x00\x00\x00\x00\x00\x81\x12\x00\x00\x00\x00\x00\x00"
+       "\x81\x12\x00\x00\x00\x00\x00\x00\x81\x12\x00\x00\x00\x00\x00\x00"
+       "\x81\x12\x00\x00\x00\x00\x00\x00\x81\x12\x00\x00\x00\x00\x00\x00"
+       "\x03\x00\x00\x00\x01\x00\x00\x00\xe3\x80\x80\x20\x03\x00\x00\x00"
+       "\x01\x00\x00\x00\xef\xbc\x8c\x2c\x03\x00\x00\x00\x01\x00\x00\x00"
+       "\xef\xbc\x8e\x2e\x03\x00\x00\x00\x01\x00\x00\x00\xef\xbc\x9a\x3a"
+       "\x03\x00\x00\x00\x01\x00\x00\x00\xef\xbc\x9b\x3b\x03\x00\x00\x00"
+       "\x01\x00\x00\x00\xef\xbc\x9f\x3f\x03\x00\x00\x00\x01\x00\x00\x00"
+       "\xef\xbc\x81\x21\x03\x00\x00\x00\x01\x00\x00\x00\xef\xbc\xbe\x5e"
+       "\x03\x00\x00\x00\x01\x00\x00\x00\xef\xbf\xa3\x7e\x03\x00\x00\x00"
+       "\x01\x00\x00\x00\xef\xbc\xbf\x5f\x03\x00\x00\x00\x01\x00\x00\x00"
+       "\xef\xbc\x8f\x2f\x03\x00\x00\x00\x01\x00\x00\x00\xef\xbd\x9c\x7c"
+       "\x03\x00\x00\x00\x01\x00\x00\x00\xe2\x80\x98\x60\x03\x00\x00\x00"
+       "\x01\x00\x00\x00\xe2\x80\x99\x27\x03\x00\x00\x00\x01\x00\x00\x00"
+       "\xe2\x80\x9d\x22\x03\x00\x00\x00\x01\x00\x00\x00\xef\xbc\x88\x28"
+       "\x03\x00\x00\x00\x01\x00\x00\x00\xef\xbc\x89\x29\x03\x00\x00\x00"
+       "\x01\x00\x00\x00\xef\xbc\xbb\x5b\x03\x00\x00\x00\x01\x00\x00\x00"
+       "\xef\xbc\xbd\x5d\x03\x00\x00\x00\x01\x00\x00\x00\xef\xbd\x9b\x7b"
+       "\x03\x00\x00\x00\x01\x00\x00\x00\xef\xbd\x9d\x7d\x03\x00\x00\x00"
+       "\x01\x00\x00\x00\xef\xbc\x8b\x2b\x03\x00\x00\x00\x01\x00\x00\x00"
+       "\xe2\x88\x92\x2d\x03\x00\x00\x00\x01\x00\x00\x00\xef\xbc\x9d\x3d"
+       "\x03\x00\x00\x00\x01\x00\x00\x00\xef\xbc\x9c\x3c\x03\x00\x00\x00"
+       "\x01\x00\x00\x00\xef\xbc\x9e\x3e\x03\x00\x00\x00\x02\x00\x00\x00"
+       "\xef\xbf\xa5\xc2\xa5\x03\x00\x00\x00\x01\x00\x00\x00\xef\xbc\xbc"
+       "\x5c\x03\x00\x00\x00\x01\x00\x00\x00\xef\xbc\x84\x24\x03\x00\x00"
+       "\x00\x01\x00\x00\x00\xef\xbc\x85\x25\x03\x00\x00\x00\x01\x00\x00"
+       "\x00\xef\xbc\x83\x23\x03\x00\x00\x00\x01\x00\x00\x00\xef\xbc\x86"
+       "\x26\x03\x00\x00\x00\x01\x00\x00\x00\xef\xbc\x8a\x2a\x03\x00\x00"
+       "\x00\x01\x00\x00\x00\xef\xbc\xa0\x40\x03\x00\x00\x00\x01\x00\x00"
+       "\x00\xef\xbc\x90\x30\x03\x00\x00\x00\x01\x00\x00\x00\xef\xbc\x91"
+       "\x31\x03\x00\x00\x00\x01\x00\x00\x00\xef\xbc\x92\x32\x03\x00\x00"
+       "\x00\x01\x00\x00\x00\xef\xbc\x93\x33\x03\x00\x00\x00\x01\x00\x00"
+       "\x00\xef\xbc\x94\x34\x03\x00\x00\x00\x01\x00\x00\x00\xef\xbc\x95"
+       "\x35\x03\x00\x00\x00\x01\x00\x00\x00\xef\xbc\x96\x36\x03\x00\x00"
+       "\x00\x01\x00\x00\x00\xef\xbc\x97\x37\x03\x00\x00\x00\x01\x00\x00"
+       "\x00\xef\xbc\x98\x38\x03\x00\x00\x00\x01\x00\x00\x00\xef\xbc\x99"
+       "\x39\x03\x00\x00\x00\x01\x00\x00\x00\xef\xbc\xa1\x41\x03\x00\x00"
+       "\x00\x01\x00\x00\x00\xef\xbc\xa2\x42\x03\x00\x00\x00\x01\x00\x00"
+       "\x00\xef\xbc\xa3\x43\x03\x00\x00\x00\x01\x00\x00\x00\xef\xbc\xa4"
+       "\x44\x03\x00\x00\x00\x01\x00\x00\x00\xef\xbc\xa5\x45\x03\x00\x00"
+       "\x00\x01\x00\x00\x00\xef\xbc\xa6\x46\x03\x00\x00\x00\x01\x00\x00"
+       "\x00\xef\xbc\xa7\x47\x03\x00\x00\x00\x01\x00\x00\x00\xef\xbc\xa8"
+       "\x48\x03\x00\x00\x00\x01\x00\x00\x00\xef\xbc\xa9\x49\x03\x00\x00"
+       "\x00\x01\x00\x00\x00\xef\xbc\xaa\x4a\x03\x00\x00\x00\x01\x00\x00"
+       "\x00\xef\xbc\xab\x4b\x03\x00\x00\x00\x01\x00\x00\x00\xef\xbc\xac"
+       "\x4c\x03\x00\x00\x00\x01\x00\x00\x00\xef\xbc\xad\x4d\x03\x00\x00"
+       "\x00\x01\x00\x00\x00\xef\xbc\xae\x4e\x03\x00\x00\x00\x01\x00\x00"
+       "\x00\xef\xbc\xaf\x4f\x03\x00\x00\x00\x01\x00\x00\x00\xef\xbc\xb0"
+       "\x50\x03\x00\x00\x00\x01\x00\x00\x00\xef\xbc\xb1\x51\x03\x00\x00"
+       "\x00\x01\x00\x00\x00\xef\xbc\xb2\x52\x03\x00\x00\x00\x01\x00\x00"
+       "\x00\xef\xbc\xb3\x53\x03\x00\x00\x00\x01\x00\x00\x00\xef\xbc\xb4"
+       "\x54\x03\x00\x00\x00\x01\x00\x00\x00\xef\xbc\xb5\x55\x03\x00\x00"
+       "\x00\x01\x00\x00\x00\xef\xbc\xb6\x56\x03\x00\x00\x00\x01\x00\x00"
+       "\x00\xef\xbc\xb7\x57\x03\x00\x00\x00\x01\x00\x00\x00\xef\xbc\xb8"
+       "\x58\x03\x00\x00\x00\x01\x00\x00\x00\xef\xbc\xb9\x59\x03\x00\x00"
+       "\x00\x01\x00\x00\x00\xef\xbc\xba\x5a\x03\x00\x00\x00\x01\x00\x00"
+       "\x00\xef\xbd\x81\x61\x03\x00\x00\x00\x01\x00\x00\x00\xef\xbd\x82"
+       "\x62\x03\x00\x00\x00\x01\x00\x00\x00\xef\xbd\x83\x63\x03\x00\x00"
+       "\x00\x01\x00\x00\x00\xef\xbd\x84\x64\x03\x00\x00\x00\x01\x00\x00"
+       "\x00\xef\xbd\x85\x65\x03\x00\x00\x00\x01\x00\x00\x00\xef\xbd\x86"
+       "\x66\x03\x00\x00\x00\x01\x00\x00\x00\xef\xbd\x87\x67\x03\x00\x00"
+       "\x00\x01\x00\x00\x00\xef\xbd\x88\x68\x03\x00\x00\x00\x01\x00\x00"
+       "\x00\xef\xbd\x89\x69\x03\x00\x00\x00\x01\x00\x00\x00\xef\xbd\x8a"
+       "\x6a\x03\x00\x00\x00\x01\x00\x00\x00\xef\xbd\x8b\x6b\x03\x00\x00"
+       "\x00\x01\x00\x00\x00\xef\xbd\x8c\x6c\x03\x00\x00\x00\x01\x00\x00"
+       "\x00\xef\xbd\x8d\x6d\x03\x00\x00\x00\x01\x00\x00\x00\xef\xbd\x8e"
+       "\x6e\x03\x00\x00\x00\x01\x00\x00\x00\xef\xbd\x8f\x6f\x03\x00\x00"
+       "\x00\x01\x00\x00\x00\xef\xbd\x90\x70\x03\x00\x00\x00\x01\x00\x00"
+       "\x00\xef\xbd\x91\x71\x03\x00\x00\x00\x01\x00\x00\x00\xef\xbd\x92"
+       "\x72\x03\x00\x00\x00\x01\x00\x00\x00\xef\xbd\x93\x73\x03\x00\x00"
+       "\x00\x01\x00\x00\x00\xef\xbd\x94\x74\x03\x00\x00\x00\x01\x00\x00"
+       "\x00\xef\xbd\x95\x75\x03\x00\x00\x00\x01\x00\x00\x00\xef\xbd\x96"
+       "\x76\x03\x00\x00\x00\x01\x00\x00\x00\xef\xbd\x97\x77\x03\x00\x00"
+       "\x00\x01\x00\x00\x00\xef\xbd\x98\x78\x03\x00\x00\x00\x01\x00\x00"
+       "\x00\xef\xbd\x99\x79\x03\x00\x00\x00\x01\x00\x00\x00\xef\xbd\x9a"
+       "\x7a\x00\x00\x00\x00\x00\x00\x00\x00\x1a\x33\x85\x0b\xa8\x08\x00"
+       "\x00\x1d\x34\x85\x0b\x08\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00"
+       "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1e\x33\x85\x0b\x9c\x08\x00"
+       "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x33\x85\x0b\x90\x08\x00"
+       "\x00\x40\x24\x85\x0b\x0d\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00"
+       "\x00\x41\x24\x85\x0b\x19\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00"
+       "\x00\x42\x24\x85\x0b\xf5\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00"
+       "\x00\x43\x24\x85\x0b\x01\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00"
+       "\x00\x44\x24\x85\x0b\xdd\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00"
+       "\x00\x45\x24\x85\x0b\xe9\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00"
+       "\x00\x46\x24\x85\x0b\xc5\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00"
+       "\x00\x47\x24\x85\x0b\xd1\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00"
+       "\x00\x48\x24\x85\x0b\x54\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00"
+       "\x00\x49\x24\x85\x0b\x6c\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00"
+       "\x00\x4a\x24\x85\x0b\x45\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00"
+       "\x00\x4b\x24\x85\x0b\xd8\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00"
+       "\x00\x4c\x24\x85\x0b\x3d\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00"
+       "\x00\x4d\x24\x85\x0b\xcc\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00"
+       "\x00\x4e\x24\x85\x0b\x25\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00"
+       "\x00\x4f\x24\x85\x0b\x31\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00"
+       "\x00\x50\x24\x85\x0b\x4d\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00"
+       "\x00\x51\x24\x85\x0b\x59\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00"
+       "\x00\x52\x24\x85\x0b\x35\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00"
+       "\x00\x53\x24\x85\x0b\x41\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00"
+       "\x00\x54\x24\x85\x0b\x1d\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00"
+       "\x00\x55\x24\x85\x0b\x29\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00"
+       "\x00\x56\x24\x85\x0b\x8d\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00"
+       "\x00\x57\x24\x85\x0b\x11\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00"
+       "\x00\x58\x24\x85\x0b\xad\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00"
+       "\x00\x59\x24\x85\x0b\xb9\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00"
+       "\x00\x5a\x24\x85\x0b\x95\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00"
+       "\x00\x5b\x24\x85\x0b\xa1\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00"
+       "\x00\x5c\x24\x85\x0b\x7d\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00"
+       "\x00\x5d\x24\x85\x0b\x89\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00"
+       "\x00\x5e\x24\x85\x0b\x65\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00"
+       "\x00\x5f\x24\x85\x0b\x71\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00"
+       "\x00\x60\x24\x85\x0b\xe1\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00"
+       "\x00\x61\x24\x85\x0b\xed\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00"
+       "\x00\x62\x24\x85\x0b\xc9\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00"
+       "\x00\x63\x24\x85\x0b\xd5\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00"
+       "\x00\x64\x24\x85\x0b\xb1\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00"
+       "\x00\x65\x24\x85\x0b\xbd\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00"
+       "\x00\x66\x24\x85\x0b\x99\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00"
+       "\x00\x67\x24\x85\x0b\xa5\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00"
+       "\x00\x68\x24\x85\x0b\x2c\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00"
+       "\x00\x69\x24\x85\x0b\x3c\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00"
+       "\x00\x6a\x24\x85\x0b\x20\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00"
+       "\x00\x6b\x24\x85\x0b\x14\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00"
+       "\x00\x6c\x24\x85\x0b\x24\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00"
+       "\x00\x6d\x24\x85\x0b\x30\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00"
+       "\x00\x6e\x24\x85\x0b\xf9\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00"
+       "\x00\x6f\x24\x85\x0b\x05\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00"
+       "\x00\x70\x24\x85\x0b\x38\x09\x00\x00\x70\x24\x85\x0b\x75\x09\x00"
+       "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
+       "\x00\x72\x24\x85\x0b\x51\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00"
+       "\x00\x73\x24\x85\x0b\x5d\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00"
+       "\x00\x75\x24\x85\x0b\x69\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00"
+       "\x00\x76\x24\x85\x0b\x60\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00"
+       "\x00\x77\x24\x85\x0b\x48\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00"
+       "\x00\x78\x24\x85\x0b\x18\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00"
+       "\x00\x79\x24\x85\x0b\x78\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00"
+       "\x00\x7a\x24\x85\x0b\x0c\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00"
+       "\x00\x7c\x24\x85\x0b\x81\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00"
+       "\x00\x7d\x24\x85\x0b\xfc\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00"
+       "\x00\x7e\x24\x85\x0b\xb4\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00"
+       "\x00\x7f\x24\x85\x0b\xc0\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00"
+       "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x25\x85\x0b\x51\x0c\x00"
+       "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x81\x25\x85\x0b\x45\x0c\x00"
+       "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x82\x25\x85\x0b\x39\x0c\x00"
+       "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x83\x25\x85\x0b\x2d\x0c\x00"
+       "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\x25\x85\x0b\x21\x0c\x00"
+       "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x85\x25\x85\x0b\x15\x0c\x00"
+       "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x86\x25\x85\x0b\x09\x0c\x00"
+       "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x87\x25\x85\x0b\xfd\x0b\x00"
+       "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8a\x25\x85\x0b\xf0\x08\x00"
+       "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8b\x25\x85\x0b\x84\x08\x00"
+       "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8c\x25\x85\x0b\xe4\x08\x00"
+       "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8d\x25\x85\x0b\x75\x0c\x00"
+       "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8e\x25\x85\x0b\x69\x0c\x00"
+       "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8f\x25\x85\x0b\x5d\x0c\x00"
+       "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\x25\x85\x0b\x91\x0b\x00"
+       "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x91\x25\x85\x0b\x85\x0b\x00"
+       "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x92\x25\x85\x0b\x79\x0b\x00"
+       "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x93\x25\x85\x0b\x6d\x0b\x00"
+       "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x94\x25\x85\x0b\x61\x0b\x00"
+       "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x95\x25\x85\x0b\x55\x0b\x00"
+       "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x96\x25\x85\x0b\x49\x0b\x00"
+       "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x98\x25\x85\x0b\xf1\x0b\x00"
+       "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\x25\x85\x0b\xe5\x0b\x00"
+       "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9a\x25\x85\x0b\xd9\x0b\x00"
+       "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9b\x25\x85\x0b\xcd\x0b\x00"
+       "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9c\x25\x85\x0b\xc1\x0b\x00"
+       "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9d\x25\x85\x0b\xb5\x0b\x00"
+       "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9e\x25\x85\x0b\xa9\x0b\x00"
+       "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9f\x25\x85\x0b\x9d\x0b\x00"
+       "\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc6\x2f\x85\x0b\x00\x08\x00"
+       "\x00"
+;
diff --git a/lib/japanese-hankaku.h b/lib/japanese-hankaku.h
new file mode 100644 (file)
index 0000000..a60ffd1
--- /dev/null
@@ -0,0 +1,7 @@
+#ifndef JAPANESE_HANKAKU_H
+#define JAPANESE_HANKAKU_H
+
+extern int  JPHankakuTableSize;
+extern unsigned char*  JPHankakuTable;
+
+#endif /* JAPANESE_HANKAKU_H */
index 18026b1..4847403 100644 (file)
@@ -1,5 +1,8 @@
 #include "utf8-jp.h"
+#include "utf8.h"
 #include "ustring.h"
+#include "japanese-hankaku.h"
+#include "cdbobj.h"
 
 typedef struct {
     const char*  c;
@@ -61,3 +64,9 @@ ustring  fixFromMS (const ustring& text) {
 ustring  fixToMS (const ustring& text) {
     return fix (text, re_js, t_ms);
 }
+
+ustring  fullWidthASCIItoASCII (const ustring& text) {
+    CDBMem  cdb (JPHankakuTable, JPHankakuTableSize);
+
+    return translateChar (text, &cdb);
+}
index c642215..a5fba34 100644 (file)
@@ -5,5 +5,6 @@
 
 ustring  fixFromMS (const ustring& text);
 ustring  fixToMS (const ustring& text);
+ustring  fullWidthASCIItoASCII (const ustring& text);
 
 #endif /* UTF8_JP_H */
index 423adba..12a0b6a 100644 (file)
@@ -1,8 +1,77 @@
 #include "utf8.h"
 #include "util_const.h"
 #include "ustring.h"
+#include "cdbobj.h"
 #include <iostream>
 
+ustring  translateChar (const ustring& str, CDBMem* cdb) {
+    ustring  ans;
+    uiterator  b, e;
+    u_char  c, c2, c3, c4;
+    char  cb[8];
+
+    ans.reserve (str.length () + 32);
+    b = str.begin ();
+    e = str.end ();
+    for (; b < e;) {
+       c = *b;
+       if (c == 0) {
+           b ++;
+       } else if (c <= 0x7f) {
+           if (cdb->find (&*b, 1) > 0) {
+               cdb->read (cb);
+               ans.append (cb, cdb->datalen ());
+           } else {
+               ans.append (&*b, 1);
+           }
+           b ++;
+       } else if (0xc2 <= c && c <= 0xdf) { // 2byte
+           if (b + 1 < e) {
+               if (cdb->find (&*b, 2) > 0) {
+                   cdb->read (cb);
+                   ans.append (cb, cdb->datalen ());
+               } else {
+                   ans.append (&*b, 2);
+               }
+               b += 2;
+           } else {
+               ans.append (uUScore);
+               b ++;
+           }
+       } else if (0xe0 <= c && c <= 0xef) { // 3byte
+           if (b + 2 < e) {
+               if (cdb->find (&*b, 3) > 0) {
+                   cdb->read (cb);
+                   ans.append (cb, cdb->datalen ());
+               } else {
+                   ans.append (&*b, 3);
+               }
+               b += 3;
+           }else {
+               ans.append (uUScore);
+               b ++;
+           }
+       } else if (0xf0 <= c && c <= 0xf4) { // 4byte
+           if (b + 3 < e) {
+               if (cdb->find (&*b, 4) > 0) {
+                   cdb->read (cb);
+                   ans.append (cb, cdb->datalen ());
+               } else {
+                   ans.append (&*b, 4);
+               }
+               b += 4;
+           }else {
+               ans.append (uUScore);
+               b ++;
+           }
+       } else {
+           ans.append (uUScore);
+           b ++;
+       }
+    }
+    return ans;
+}
+
 /*
   Clip char which is not a valid UTF-8 text.
 */
index e3477b9..828edd8 100644 (file)
@@ -10,7 +10,8 @@
 #define  UTF8_IDEOSPACE                "\xe3\x80\x80"
 #define  UTF8_ZWNBSPACE                "\xef\xbb\xbf"
 
-
+class  CDBMem;
+ustring  translateChar (const ustring& str, CDBMem* cdb);
 ustring  fixUTF8 (const ustring& str);
 void  nextChar (uiterator& it, const uiterator& end);
 void  nextChar (uiterator& it, const uiterator& end, ustring& target);
index 6ef9eb6..e948de5 100644 (file)
@@ -42,6 +42,7 @@ SRCS += form_utf8-jp.cc
 SRCS += iso2022jp.cc
 SRCS += motoroutput-jp.cc
 SRCS += utf8-jp.cc
+SRCS += japanese-hankaku.c
 .endif
 
 .PATH: ../ml ../lib ../modules ../wiki ../ext
@@ -87,6 +88,9 @@ LDADD += heapdebug.o
 .else
 LDADD += -lboost_regex
 .endif
+.ifdef UTF8JP
+LDADD += ../ext/libcdbl.a
+.endif
 LDADD += ${MLDADD}
 LDADD += -liconv
 LDADD += -lcrypt
index dcdc442..4b2b6f6 100644 (file)
@@ -475,7 +475,7 @@ MNode*  ml_formvar_input_file_a (MNode* cell, MlEnv* mlenv) {
     setParams (arg, 2, &params, NULL, NULL, NULL);
     name = eval_str (params[0], mlenv);
     prefix = eval_str (params[1], mlenv);
-    prefix.append (CharConst ("-"));
+    prefix.append (uDash);
 
     if (mlenv->env->storedir.empty ()) {
        newStoreSerial (mlenv);
diff --git a/modules/ml-japanese.cc b/modules/ml-japanese.cc
new file mode 100644 (file)
index 0000000..12c9119
--- /dev/null
@@ -0,0 +1,32 @@
+#include "ml-japanese.h"
+#include "ml.h"
+#include "mlenv.h"
+#include "motorenv.h"
+#include "motoroutput.h"
+#include "util_const.h"
+#include "util_string.h"
+#include "expr.h"
+#include "utf8-jp.h"
+#include "ustring.h"
+
+/*DOC:
+==日本語処理==
+
+*/
+/*DOC:
+===fullwidth-ascii-to-halfwidth===
+ (fullwidth-ascii-to-halfwidth STRING...) -> STRING
+*/
+//#AFUNC       fullwidth-ascii-to-halfwidth    ml_fullwidth_ascii_to_halfwidth
+//#WIKIFUNC    fullwidth-ascii-to-halfwidth
+MNode*  ml_fullwidth_ascii_to_halfwidth (MNode* cell, MlEnv* mlenv) {
+    MNode*  arg = cell->cdr ();
+    ustring  ans;
+
+    while (arg) {
+       ans.append (fullWidthASCIItoASCII (eval_str (arg->car (), mlenv)));
+       nextNode (arg);
+    }
+
+    return newMNode_str (new ustring (ans));
+}
diff --git a/modules/ml-japanese.h b/modules/ml-japanese.h
new file mode 100644 (file)
index 0000000..b63ad26
--- /dev/null
@@ -0,0 +1,9 @@
+#ifndef ML_JAPANESE_H
+#define ML_JAPANESE_H
+
+class  MNode;
+class  MlEnv;
+
+MNode*  ml_fullwidth_ascii_to_halfwidth (MNode* cell, MlEnv* mlenv);
+
+#endif /* ML_JAPANESE_H */
index 629bc07..b83e892 100644 (file)
@@ -492,7 +492,7 @@ MNode*  ml_substring (MNode* cell, MlEnv* mlenv) {
     
 /*DOC:
 ===length===
- (length STR) -> NUMBER
+ (length STRING) -> NUMBER
 
 */
 //#AFUNC       length  ml_length