aboutsummaryrefslogtreecommitdiff
path: root/utf.h
diff options
context:
space:
mode:
authorAlexander Gutkin <agutkin@google.com>2014-02-28 11:33:45 +0000
committerAlexander Gutkin <agutkin@google.com>2014-02-28 11:33:45 +0000
commit439f3d1f87279a8be383ee01ef98cb9a5ca68573 (patch)
treede42c34fb1e2a4f5997782c71730ffea07667d52 /utf.h
parent86456b0f43cde20930f39abe12c9255c3e185712 (diff)
downloadlibutf-439f3d1f87279a8be383ee01ef98cb9a5ca68573.tar.gz
Initial revision of libutf library.
Libutf is a port of Plan 9's support library for UTF-8 and Unicode. Downloaded from http://swtch.com/plan9port/unix/libutf.tgz. No modifications required to compile. Change-Id: I5646bc8709bafc14039d30e28a0c69a804e78548
Diffstat (limited to 'utf.h')
-rw-r--r--utf.h54
1 files changed, 54 insertions, 0 deletions
diff --git a/utf.h b/utf.h
new file mode 100644
index 0000000..44052f4
--- /dev/null
+++ b/utf.h
@@ -0,0 +1,54 @@
+#ifndef _UTF_H_
+#define _UTF_H_ 1
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+typedef unsigned int Rune; /* 32 bits */
+
+enum
+{
+ UTFmax = 4, /* maximum bytes per rune */
+ Runesync = 0x80, /* cannot represent part of a UTF sequence (<) */
+ Runeself = 0x80, /* rune and UTF sequences are the same (<) */
+ Runeerror = 0xFFFD, /* decoding error in UTF */
+ Runemax = 0x10FFFF /* maximum rune value */
+};
+
+/* Edit .+1,/^$/ | cfn $PLAN9/src/lib9/utf/?*.c | grep -v static |grep -v __ */
+int chartorune(Rune *rune, char *str);
+int fullrune(char *str, int n);
+int isalpharune(Rune c);
+int islowerrune(Rune c);
+int isspacerune(Rune c);
+int istitlerune(Rune c);
+int isupperrune(Rune c);
+int runelen(long c);
+int runenlen(Rune *r, int nrune);
+Rune* runestrcat(Rune *s1, Rune *s2);
+Rune* runestrchr(Rune *s, Rune c);
+int runestrcmp(Rune *s1, Rune *s2);
+Rune* runestrcpy(Rune *s1, Rune *s2);
+Rune* runestrdup(Rune *s) ;
+Rune* runestrecpy(Rune *s1, Rune *es1, Rune *s2);
+long runestrlen(Rune *s);
+Rune* runestrncat(Rune *s1, Rune *s2, long n);
+int runestrncmp(Rune *s1, Rune *s2, long n);
+Rune* runestrncpy(Rune *s1, Rune *s2, long n);
+Rune* runestrrchr(Rune *s, Rune c);
+Rune* runestrstr(Rune *s1, Rune *s2);
+int runetochar(char *str, Rune *rune);
+Rune tolowerrune(Rune c);
+Rune totitlerune(Rune c);
+Rune toupperrune(Rune c);
+char* utfecpy(char *to, char *e, char *from);
+int utflen(char *s);
+int utfnlen(char *s, long m);
+char* utfrrune(char *s, long c);
+char* utfrune(char *s, long c);
+char* utfutf(char *s1, char *s2);
+
+#if defined(__cplusplus)
+}
+#endif
+#endif