Updated grapheme function names in attrsr.h and updated allocator function names in attrstr.c.

This commit is contained in:
Pietro Gagliardi 2018-03-04 10:46:00 -05:00
parent f025783632
commit 77c07075e3
3 changed files with 26 additions and 25 deletions

View File

@ -1,12 +1,4 @@
// for attrstr.c
struct graphemes {
size_t len;
size_t *pointsToGraphemes;
size_t *graphemesToPoints;
};
extern int graphemesTakesUTF16(void);
extern struct graphemes *graphemes(void *s, size_t len);
// TODO split these into a separate header file? // TODO split these into a separate header file?

View File

@ -18,24 +18,24 @@ struct uiAttributedString {
size_t *u16tou8; size_t *u16tou8;
// this is lazily created to keep things from getting *too* slow // this is lazily created to keep things from getting *too* slow
uiprivGraphemes *graphemes; struct graphemes *graphemes;
}; };
static void resize(uiAttributedString *s, size_t u8, size_t u16) static void resize(uiAttributedString *s, size_t u8, size_t u16)
{ {
s->len = u8; s->len = u8;
s->s = (char *) uiRealloc(s->s, (s->len + 1) * sizeof (char), "char[] (uiAttributedString)"); s->s = (char *) uiprivRealloc(s->s, (s->len + 1) * sizeof (char), "char[] (uiAttributedString)");
s->u8tou16 = (size_t *) uiRealloc(s->u8tou16, (s->len + 1) * sizeof (size_t), "size_t[] (uiAttributedString)"); s->u8tou16 = (size_t *) uiprivRealloc(s->u8tou16, (s->len + 1) * sizeof (size_t), "size_t[] (uiAttributedString)");
s->u16len = u16; s->u16len = u16;
s->u16 = (uint16_t *) uiRealloc(s->u16, (s->u16len + 1) * sizeof (uint16_t), "uint16_t[] (uiAttributedString)"); s->u16 = (uint16_t *) uiprivRealloc(s->u16, (s->u16len + 1) * sizeof (uint16_t), "uint16_t[] (uiAttributedString)");
s->u16tou8 = (size_t *) uiRealloc(s->u16tou8, (s->u16len + 1) * sizeof (size_t), "size_t[] (uiAttributedString)"); s->u16tou8 = (size_t *) uiprivRealloc(s->u16tou8, (s->u16len + 1) * sizeof (size_t), "size_t[] (uiAttributedString)");
} }
uiAttributedString *uiNewAttributedString(const char *initialString) uiAttributedString *uiNewAttributedString(const char *initialString)
{ {
uiAttributedString *s; uiAttributedString *s;
s = uiNew(uiAttributedString); s = uiprivNew(uiAttributedString);
s->attrs = uiprivNewAttrList(); s->attrs = uiprivNewAttrList();
uiAttributedStringAppendUnattributed(s, initialString); uiAttributedStringAppendUnattributed(s, initialString);
return s; return s;
@ -57,9 +57,9 @@ static void invalidateGraphemes(uiAttributedString *s)
{ {
if (s->graphemes == NULL) if (s->graphemes == NULL)
return; return;
uiFree(s->graphemes->pointsToGraphemes); uiprivFree(s->graphemes->pointsToGraphemes);
uiFree(s->graphemes->graphemesToPoints); uiprivFree(s->graphemes->graphemesToPoints);
uiFree(s->graphemes); uiprivFree(s->graphemes);
s->graphemes = NULL; s->graphemes = NULL;
} }
@ -67,11 +67,11 @@ void uiFreeAttributedString(uiAttributedString *s)
{ {
uiprivFreeAttrList(s->attrs); uiprivFreeAttrList(s->attrs);
invalidateGraphemes(s); invalidateGraphemes(s);
uiFree(s->u16tou8); uiprivFree(s->u16tou8);
uiFree(s->u8tou16); uiprivFree(s->u8tou16);
uiFree(s->u16); uiprivFree(s->u16);
uiFree(s->s); uiprivFree(s->s);
uiFree(s); uiprivFree(s);
} }
const char *uiAttributedStringString(const uiAttributedString *s) const char *uiAttributedStringString(const uiAttributedString *s)
@ -106,7 +106,7 @@ void uiAttributedStringAppendUnattributed(uiAttributedString *s, const char *str
uiAttributedStringInsertAtUnattributed(s, str, s->len); uiAttributedStringInsertAtUnattributed(s, str, s->len);
} }
// this works (and returns true, which is what we want) at s->len too because s->s[s->len] is always going to be 0 due to us allocating s->len + 1 bytes and because uiRealloc() always zero-fills allocated memory // this works (and returns true, which is what we want) at s->len too because s->s[s->len] is always going to be 0 due to us allocating s->len + 1 bytes and because uiprivRealloc() always zero-fills allocated memory
static int onCodepointBoundary(uiAttributedString *s, size_t at) static int onCodepointBoundary(uiAttributedString *s, size_t at)
{ {
uint8_t c; uint8_t c;
@ -339,7 +339,7 @@ size_t *uiprivAttributedStringCopyUTF8ToUTF16Table(uiAttributedString *s, size_t
nbytes = (s->len + 1) * sizeof (size_t); nbytes = (s->len + 1) * sizeof (size_t);
*n = s->len; *n = s->len;
out = (size_t *) uiAlloc(nbytes, "size_t[] (uiAttributedString)"); out = (size_t *) uiprivAlloc(nbytes, "size_t[] (uiAttributedString)");
memmove(out, s->u8tou16, nbytes); memmove(out, s->u8tou16, nbytes);
return out; return out;
} }
@ -351,7 +351,7 @@ size_t *uiprivAttributedStringCopyUTF16ToUTF8Table(uiAttributedString *s, size_t
nbytes = (s->u16len + 1) * sizeof (size_t); nbytes = (s->u16len + 1) * sizeof (size_t);
*n = s->u16len; *n = s->u16len;
out = (size_t *) uiAlloc(nbytes, "size_t[] (uiAttributedString)"); out = (size_t *) uiprivAlloc(nbytes, "size_t[] (uiAttributedString)");
memmove(out, s->u16tou8, nbytes); memmove(out, s->u16tou8, nbytes);
return out; return out;
} }

View File

@ -26,3 +26,12 @@ extern size_t uiprivAttributedStringUTF16Len(uiAttributedString *s);
extern size_t uiprivAttributedStringUTF8ToUTF16(uiAttributedString *s, size_t n); extern size_t uiprivAttributedStringUTF8ToUTF16(uiAttributedString *s, size_t n);
extern size_t *uiprivAttributedStringCopyUTF8ToUTF16Table(uiAttributedString *s, size_t *n); extern size_t *uiprivAttributedStringCopyUTF8ToUTF16Table(uiAttributedString *s, size_t *n);
extern size_t *uiprivAttributedStringCopyUTF16ToUTF8Table(uiAttributedString *s, size_t *n); extern size_t *uiprivAttributedStringCopyUTF16ToUTF8Table(uiAttributedString *s, size_t *n);
// per-OS graphemes.c/graphemes.cpp/graphemes.m/etc.
struct graphemes {
size_t len;
size_t *pointsToGraphemes;
size_t *graphemesToPoints;
};
extern int uiprivGraphemesTakesUTF16(void);
extern struct graphemes *uiprivNewGraphemes(void *s, size_t len);