| #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 |