#pragma once typedef uint32 rune; /* * we have to use the preprocessor to ensure we have unsigned constants. */ #define UTFmax 4 #define RuneSync 0x80u #define RuneSelf 0x80u #define RuneErr 0xFFFDu #define RuneMax 0x10FFFFu #define RuneMask 0x1FFFFFu /* * UTF-8 functions. */ int utf8·len(char *s); // returns number of runes int utf8·runelen(rune r); // returns number of bytes for rune int utf8·decode(char *, rune *); // decode 1 rune from char stream, store into rune, return number of bytes int utf8·encode(rune *, char *); // encode 1 rune from rune stream, store into char, return number of bytes char *utf8·find(char *s, rune); // find rune in char stream char *utf8·findlast(char* s, rune); // find last rune in char stream int utf8·canfit(char *, int); // XXX: odd function... int utf8·isletter(rune r); int utf8·isdigit(rune r); int utf8·isspace(rune r); int utf8·istitle(rune r); rune utf8·toupper(rune r); rune utf8·tolower(rune r); rune utf8·totitle(rune r);