haiku/headers/private/interface/moreUTF8.h
Stephan Aßmus 1db49f8a7a added a function to count the bytes in a string if the number of UTF8 chars is already known
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12661 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-05-13 17:30:59 +00:00

59 lines
781 B
C

#ifndef __MOREUTF8
#define __MOREUTF8
static inline bool
IsInsideGlyph(uchar ch)
{
return (ch & 0xC0) == 0x80;
}
static inline uint32
UTF8NextCharLen(const char *text)
{
const char *ptr = text;
if (ptr == NULL || *ptr == 0)
return 0;
do {
ptr++;
} while (IsInsideGlyph(*ptr));
return ptr - text;
}
static inline uint32
UTF8CountBytes(const char *text, uint32 numChars)
{
const char *ptr = text;
while (numChars) {
ptr += UTF8NextCharLen(ptr);
numChars--;
}
return ptr - text;
}
static inline uint32
UTF8PreviousCharLen(const char *text, const char *limit)
{
const char *ptr = text;
if (ptr == NULL || limit == NULL)
return 0;
do {
if (ptr == limit)
break;
ptr--;
} while (IsInsideGlyph(*ptr));
return text - ptr;
}
#endif