diff --git a/common/ui_attrstr.h b/common/ui_attrstr.h new file mode 100644 index 00000000..a333fb78 --- /dev/null +++ b/common/ui_attrstr.h @@ -0,0 +1,30 @@ +typedef struct uiAttributedString uiAttributedString; + +_UI_ENUM(uiAttribute) { + // TODO +}; + +// @role uiAttributedString constructor +// uiNewAttributedString() creates a new uiAttributedString from +// initialString. The string will be entirely unattributed. +_UI_EXTERN uiAttributedString *uiNewAttributedString(const char *initialString); + +// @role uiAttributedString destructor +// uiFreeAttributedString() destroys the uiAttributedString s. +_UI_EXTERN void uiFreeAttributedString(uiAttributedString *s); + +// uiAttributedStringString() returns the textual content of s as a +// '\0'-terminated UTF-8 string. The returned pointer is valid until +// the next change to the textual content of s. +_UI_EXTERN const char *uiAttributedStringString(uiAttributedString *s); + +// uiAttributedStringLength() returns the number of UTF-8 bytes in +// the textual content of s, excluding the terminating '\0'. +_UI_EXTERN size_t uiAttributedStringLen(uiAttributedString *s); + +_UI_EXTERN void uiAttributedStringAppendUnattributed(uiAttributedString *s, const char *str); +_UI_EXTERN void uiAttributedStringInsertAtUnattributed(uiAttributedString *s, const char *str, size_t at); +_UI_EXTERN void uiAttributedStringDelete(uiAttributedString *s, size_t start, size_t end); +_UI_EXTERN size_t uiAttributedStringNumGraphemes(uiAttributedString *s); +_UI_EXTERN size_t uiAttributedStringByteIndexToGrapheme(uiAttributedString *s, size_t pos); +_UI_EXTERN size_t uiAttributedStringGraphemeToByteIndex(uiAttributedString *s, size_t pos);