60 lines
1.6 KiB
C
60 lines
1.6 KiB
C
#ifndef _UTF_H_
|
|
#define _UTF_H_ 1
|
|
#pragma lib "/$M/lib/ape/libutf.a"
|
|
#pragma src "/sys/src/ape/lib/utf"
|
|
|
|
#if defined(__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);
|
|
|
|
#if defined(__cplusplus)
|
|
}
|
|
#endif
|
|
#endif
|