aboutsummaryrefslogtreecommitdiff
path: root/unix/utf.h
diff options
context:
space:
mode:
authorrsc <devnull@localhost>2004-03-01 19:36:29 +0000
committerrsc <devnull@localhost>2004-03-01 19:36:29 +0000
commitaa738614530c1525b2337a3812d238b9776d51f0 (patch)
tree0e989d3bfe7b0682fb3437429086048bef8a4d9c /unix/utf.h
parent63dd44c8ca13354de84c4da659454526ec6750db (diff)
downloadplan9port-aa738614530c1525b2337a3812d238b9776d51f0.tar.gz
plan9port-aa738614530c1525b2337a3812d238b9776d51f0.tar.bz2
plan9port-aa738614530c1525b2337a3812d238b9776d51f0.zip
Build Unix-friendly versions directly from library.
Diffstat (limited to 'unix/utf.h')
-rw-r--r--unix/utf.h57
1 files changed, 57 insertions, 0 deletions
diff --git a/unix/utf.h b/unix/utf.h
new file mode 100644
index 00000000..833d9d25
--- /dev/null
+++ b/unix/utf.h
@@ -0,0 +1,57 @@
+#ifndef _UTFH_
+#define _UTFH_ 1
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef unsigned short Rune; /* 16 bits */
+
+enum
+{
+ UTFmax = 3, /* maximum bytes per rune */
+ Runesync = 0x80, /* cannot represent part of a UTF sequence (<) */
+ Runeself = 0x80, /* rune and UTF sequences are the same (<) */
+ Runeerror = 0x80, /* decoding error in UTF */
+};
+
+/*
+ * rune routines
+ */
+extern int runetochar(char*, Rune*);
+extern int chartorune(Rune*, char*);
+extern int runelen(long);
+extern int runenlen(Rune*, int);
+extern int fullrune(char*, int);
+extern int utflen(char*);
+extern int utfnlen(char*, long);
+extern char* utfrune(char*, long);
+extern char* utfrrune(char*, long);
+extern char* utfutf(char*, char*);
+extern char* utfecpy(char*, char*, char*);
+
+extern Rune* runestrcat(Rune*, Rune*);
+extern Rune* runestrchr(Rune*, Rune);
+extern int runestrcmp(Rune*, Rune*);
+extern Rune* runestrcpy(Rune*, Rune*);
+extern Rune* runestrncpy(Rune*, Rune*, long);
+extern Rune* runestrecpy(Rune*, Rune*, Rune*);
+extern Rune* runestrdup(Rune*);
+extern Rune* runestrncat(Rune*, Rune*, long);
+extern int runestrncmp(Rune*, Rune*, long);
+extern Rune* runestrrchr(Rune*, Rune);
+extern long runestrlen(Rune*);
+extern Rune* runestrstr(Rune*, Rune*);
+
+extern Rune tolowerrune(Rune);
+extern Rune totitlerune(Rune);
+extern Rune toupperrune(Rune);
+extern int isalpharune(Rune);
+extern int islowerrune(Rune);
+extern int isspacerune(Rune);
+extern int istitlerune(Rune);
+extern int isupperrune(Rune);
+
+#ifdef cplusplus
+}
+#endif
+#endif