151 lines
6.0 KiB
C
151 lines
6.0 KiB
C
|
#ifndef __al_included_allegro5_utf8_h
|
||
|
#define __al_included_allegro5_utf8_h
|
||
|
|
||
|
#include "allegro5/base.h"
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
extern "C" {
|
||
|
#endif
|
||
|
|
||
|
/* Type: ALLEGRO_USTR
|
||
|
*/
|
||
|
typedef struct _al_tagbstring ALLEGRO_USTR;
|
||
|
|
||
|
/* Type: ALLEGRO_USTR_INFO
|
||
|
*/
|
||
|
typedef struct _al_tagbstring ALLEGRO_USTR_INFO;
|
||
|
|
||
|
#ifndef __al_tagbstring_defined
|
||
|
#define __al_tagbstring_defined
|
||
|
struct _al_tagbstring {
|
||
|
int mlen;
|
||
|
int slen;
|
||
|
unsigned char * data;
|
||
|
};
|
||
|
#endif
|
||
|
|
||
|
/* Creating strings */
|
||
|
AL_FUNC(ALLEGRO_USTR *, al_ustr_new, (const char *s));
|
||
|
AL_FUNC(ALLEGRO_USTR *, al_ustr_new_from_buffer, (const char *s, size_t size));
|
||
|
AL_PRINTFUNC(ALLEGRO_USTR *, al_ustr_newf, (const char *fmt, ...), 1, 2);
|
||
|
AL_FUNC(void, al_ustr_free, (ALLEGRO_USTR *us));
|
||
|
AL_FUNC(const char *, al_cstr, (const ALLEGRO_USTR *us));
|
||
|
AL_FUNC(void, al_ustr_to_buffer, (const ALLEGRO_USTR *us, char *buffer, int size));
|
||
|
AL_FUNC(char *, al_cstr_dup, (const ALLEGRO_USTR *us));
|
||
|
AL_FUNC(ALLEGRO_USTR *, al_ustr_dup, (const ALLEGRO_USTR *us));
|
||
|
AL_FUNC(ALLEGRO_USTR *, al_ustr_dup_substr, (const ALLEGRO_USTR *us,
|
||
|
int start_pos, int end_pos));
|
||
|
|
||
|
/* Predefined string */
|
||
|
AL_FUNC(const ALLEGRO_USTR *, al_ustr_empty_string, (void));
|
||
|
|
||
|
/* Reference strings */
|
||
|
AL_FUNC(const ALLEGRO_USTR *, al_ref_cstr, (ALLEGRO_USTR_INFO *info, const char *s));
|
||
|
AL_FUNC(const ALLEGRO_USTR *, al_ref_buffer, (ALLEGRO_USTR_INFO *info, const char *s,
|
||
|
size_t size));
|
||
|
AL_FUNC(const ALLEGRO_USTR *, al_ref_ustr, (ALLEGRO_USTR_INFO *info,
|
||
|
const ALLEGRO_USTR *us, int start_pos, int end_pos));
|
||
|
|
||
|
/* Sizes and offsets */
|
||
|
AL_FUNC(size_t, al_ustr_size, (const ALLEGRO_USTR *us));
|
||
|
AL_FUNC(size_t, al_ustr_length, (const ALLEGRO_USTR *us));
|
||
|
AL_FUNC(int, al_ustr_offset, (const ALLEGRO_USTR *us, int index));
|
||
|
AL_FUNC(bool, al_ustr_next, (const ALLEGRO_USTR *us, int *pos));
|
||
|
AL_FUNC(bool, al_ustr_prev, (const ALLEGRO_USTR *us, int *pos));
|
||
|
|
||
|
/* Get codepoints */
|
||
|
AL_FUNC(int32_t, al_ustr_get, (const ALLEGRO_USTR *us, int pos));
|
||
|
AL_FUNC(int32_t, al_ustr_get_next, (const ALLEGRO_USTR *us, int *pos));
|
||
|
AL_FUNC(int32_t, al_ustr_prev_get, (const ALLEGRO_USTR *us, int *pos));
|
||
|
|
||
|
/* Insert */
|
||
|
AL_FUNC(bool, al_ustr_insert, (ALLEGRO_USTR *us1, int pos,
|
||
|
const ALLEGRO_USTR *us2));
|
||
|
AL_FUNC(bool, al_ustr_insert_cstr, (ALLEGRO_USTR *us, int pos,
|
||
|
const char *us2));
|
||
|
AL_FUNC(size_t, al_ustr_insert_chr, (ALLEGRO_USTR *us, int pos, int32_t c));
|
||
|
|
||
|
/* Append */
|
||
|
AL_FUNC(bool, al_ustr_append, (ALLEGRO_USTR *us1, const ALLEGRO_USTR *us2));
|
||
|
AL_FUNC(bool, al_ustr_append_cstr, (ALLEGRO_USTR *us, const char *s));
|
||
|
AL_FUNC(size_t, al_ustr_append_chr, (ALLEGRO_USTR *us, int32_t c));
|
||
|
AL_PRINTFUNC(bool, al_ustr_appendf, (ALLEGRO_USTR *us, const char *fmt, ...),
|
||
|
2, 3);
|
||
|
AL_FUNC(bool, al_ustr_vappendf, (ALLEGRO_USTR *us, const char *fmt,
|
||
|
va_list ap));
|
||
|
|
||
|
/* Remove */
|
||
|
AL_FUNC(bool, al_ustr_remove_chr, (ALLEGRO_USTR *us, int pos));
|
||
|
AL_FUNC(bool, al_ustr_remove_range, (ALLEGRO_USTR *us, int start_pos,
|
||
|
int end_pos));
|
||
|
AL_FUNC(bool, al_ustr_truncate, (ALLEGRO_USTR *us, int start_pos));
|
||
|
AL_FUNC(bool, al_ustr_ltrim_ws, (ALLEGRO_USTR *us));
|
||
|
AL_FUNC(bool, al_ustr_rtrim_ws, (ALLEGRO_USTR *us));
|
||
|
AL_FUNC(bool, al_ustr_trim_ws, (ALLEGRO_USTR *us));
|
||
|
|
||
|
/* Assign */
|
||
|
AL_FUNC(bool, al_ustr_assign, (ALLEGRO_USTR *us1, const ALLEGRO_USTR *us2));
|
||
|
AL_FUNC(bool, al_ustr_assign_substr, (ALLEGRO_USTR *us1, const ALLEGRO_USTR *us2,
|
||
|
int start_pos, int end_pos));
|
||
|
AL_FUNC(bool, al_ustr_assign_cstr, (ALLEGRO_USTR *us1, const char *s));
|
||
|
|
||
|
/* Replace */
|
||
|
AL_FUNC(size_t, al_ustr_set_chr, (ALLEGRO_USTR *us, int pos, int32_t c));
|
||
|
AL_FUNC(bool, al_ustr_replace_range, (ALLEGRO_USTR *us1, int start_pos1,
|
||
|
int end_pos1, const ALLEGRO_USTR *us2));
|
||
|
|
||
|
/* Searching */
|
||
|
AL_FUNC(int, al_ustr_find_chr, (const ALLEGRO_USTR *us, int start_pos,
|
||
|
int32_t c));
|
||
|
AL_FUNC(int, al_ustr_rfind_chr, (const ALLEGRO_USTR *us, int start_pos,
|
||
|
int32_t c));
|
||
|
AL_FUNC(int, al_ustr_find_set, (const ALLEGRO_USTR *us, int start_pos,
|
||
|
const ALLEGRO_USTR *accept));
|
||
|
AL_FUNC(int, al_ustr_find_set_cstr, (const ALLEGRO_USTR *us, int start_pos,
|
||
|
const char *accept));
|
||
|
AL_FUNC(int, al_ustr_find_cset, (const ALLEGRO_USTR *us, int start_pos,
|
||
|
const ALLEGRO_USTR *reject));
|
||
|
AL_FUNC(int, al_ustr_find_cset_cstr, (const ALLEGRO_USTR *us, int start_pos,
|
||
|
const char *reject));
|
||
|
AL_FUNC(int, al_ustr_find_str, (const ALLEGRO_USTR *haystack, int start_pos,
|
||
|
const ALLEGRO_USTR *needle));
|
||
|
AL_FUNC(int, al_ustr_find_cstr, (const ALLEGRO_USTR *haystack, int start_pos,
|
||
|
const char *needle));
|
||
|
AL_FUNC(int, al_ustr_rfind_str, (const ALLEGRO_USTR *haystack, int start_pos,
|
||
|
const ALLEGRO_USTR *needle));
|
||
|
AL_FUNC(int, al_ustr_rfind_cstr, (const ALLEGRO_USTR *haystack, int start_pos,
|
||
|
const char *needle));
|
||
|
AL_FUNC(bool, al_ustr_find_replace, (ALLEGRO_USTR *us, int start_pos,
|
||
|
const ALLEGRO_USTR *find, const ALLEGRO_USTR *replace));
|
||
|
AL_FUNC(bool, al_ustr_find_replace_cstr, (ALLEGRO_USTR *us, int start_pos,
|
||
|
const char *find, const char *replace));
|
||
|
|
||
|
/* Compare */
|
||
|
AL_FUNC(bool, al_ustr_equal, (const ALLEGRO_USTR *us1, const ALLEGRO_USTR *us2));
|
||
|
AL_FUNC(int, al_ustr_compare, (const ALLEGRO_USTR *u, const ALLEGRO_USTR *v));
|
||
|
AL_FUNC(int, al_ustr_ncompare, (const ALLEGRO_USTR *us1, const ALLEGRO_USTR *us2,
|
||
|
int n));
|
||
|
AL_FUNC(bool, al_ustr_has_prefix,(const ALLEGRO_USTR *u, const ALLEGRO_USTR *v));
|
||
|
AL_FUNC(bool, al_ustr_has_prefix_cstr, (const ALLEGRO_USTR *u, const char *s));
|
||
|
AL_FUNC(bool, al_ustr_has_suffix,(const ALLEGRO_USTR *u, const ALLEGRO_USTR *v));
|
||
|
AL_FUNC(bool, al_ustr_has_suffix_cstr,(const ALLEGRO_USTR *us1, const char *s));
|
||
|
|
||
|
/* Low level UTF-8 functions */
|
||
|
AL_FUNC(size_t, al_utf8_width, (int32_t c));
|
||
|
AL_FUNC(size_t, al_utf8_encode, (char s[], int32_t c));
|
||
|
|
||
|
/* UTF-16 */
|
||
|
AL_FUNC(ALLEGRO_USTR *, al_ustr_new_from_utf16, (uint16_t const *s));
|
||
|
AL_FUNC(size_t, al_ustr_size_utf16, (const ALLEGRO_USTR *us));
|
||
|
AL_FUNC(size_t, al_ustr_encode_utf16, (const ALLEGRO_USTR *us, uint16_t *s, size_t n));
|
||
|
AL_FUNC(size_t, al_utf16_width, (int c));
|
||
|
AL_FUNC(size_t, al_utf16_encode, (uint16_t s[], int32_t c));
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
}
|
||
|
#endif
|
||
|
|
||
|
#endif
|
||
|
|
||
|
/* vim: set sts=3 sw=3 et: */
|