 USTR_1.0 {
    global:

  ustr_xi__pow2;
  ustr_xi__embed_val_get;
  ustr_xi__ref_get;

  ustr_pool_clear;
  ustr_pool_free;
  ustr_pool_make_subpool;

  ustr_pool_make_pool;

  ustr_assert_valid;
  ustr_assert_valid_subustr;

  ustrp_assert_valid;
  ustrp_assert_valid_subustrp;

  ustr_cstr;
  ustr_len;
  ustr_wstr;

  ustrp_cstr;
  ustrp_len;
  ustrp_wstr;

  ustr_alloc;
  ustr_enomem;
  ustr_exact;
  ustr_fixed;
  ustr_limited;
  ustr_owner;
  ustr_ro;
  ustr_shared;
  ustr_size;
  ustr_size_alloc;
  ustr_size_overhead;
  ustr_sized;

  ustrp_alloc;
  ustrp_enomem;
  ustrp_exact;
  ustrp_fixed;
  ustrp_limited;
  ustrp_owner;
  ustrp_ro;
  ustrp_shared;
  ustrp_size;
  ustrp_size_alloc;
  ustrp_size_overhead;
  ustrp_sized;

  ustr_setf_enomem_err;
  ustr_setf_enomem_clr;
  ustr_setf_share;
  ustr_setf_owner;

  ustrp_setf_enomem_err;
  ustrp_setf_enomem_clr;
  ustrp_setf_share;
  ustrp_setf_owner;

  ustr_free;

  ustrp_free;

  ustr_init_size;
  ustr_init_alloc;
  ustr_init_fixed;

  ustrp_init_alloc;
  ustrp_init_fixed;

  ustr_realloc;

  ustrp_realloc;

  ustr_add;
  ustr_add_buf;
  ustr_add_cstr;
  ustr_add_rep_chr;
  ustr_add_subustr;
  ustr_add_undef;

  ustrp_add;
  ustrp_add_buf;
  ustrp_add_cstr;
  ustrp_add_rep_chr;
  ustrp_add_subustrp;
  ustrp_add_undef;

  ustr_dup;
  ustr_dup_buf;
  ustr_dup_cstr;
  ustr_dup_empty;
  ustr_dup_rep_chr;
  ustr_dup_subustr;
  ustr_dup_undef;

  ustrp_dup;
  ustrp_dup_buf;
  ustrp_dup_cstr;
  ustrp_dup_empty;
  ustrp_dup_rep_chr;
  ustrp_dup_subustrp;
  ustrp_dup_undef;

  ustr_dupx;
  ustr_dupx_buf;
  ustr_dupx_cstr;
  ustr_dupx_empty;
  ustr_dupx_rep_chr;
  ustr_dupx_subustr;
  ustr_dupx_undef;

  ustrp_dupx;
  ustrp_dupx_buf;
  ustrp_dupx_cstr;
  ustrp_dupx_empty;
  ustrp_dupx_rep_chr;
  ustrp_dupx_subustrp;
  ustrp_dupx_undef;

  ustr_set;
  ustr_set_buf;
  ustr_set_cstr;
  ustr_set_empty;
  ustr_set_rep_chr;
  ustr_set_subustr;
  ustr_set_undef;

  ustrp_set;
  ustrp_set_buf;
  ustrp_set_cstr;
  ustrp_set_empty;
  ustrp_set_rep_chr;
  ustrp_set_subustrp;
  ustrp_set_undef;

  ustr_del;
  ustr_del_subustr;

  ustrp_del;
  ustrp_del_subustrp;

  ustr_sc_del;
  ustr_sc_dupx;
  ustr_sc_dup;
  ustr_sc_ensure_owner;
  ustr_sc_free;
  ustr_sc_free2;
  ustr_sc_free_shared;
  ustr_sc_reverse;
  ustr_sc_tolower;
  ustr_sc_toupper;
  ustr_sc_utf8_reverse;
  ustr_sc_wstr;

  ustrp_sc_del;
  ustrp_sc_dupx;
  ustrp_sc_dup;
  ustrp_sc_ensure_owner;
  ustrp_sc_free;
  ustrp_sc_free2;
  ustrp_sc_free_shared;
  ustrp_sc_reverse;
  ustrp_sc_tolower;
  ustrp_sc_toupper;
  ustrp_sc_utf8_reverse;
  ustrp_sc_wstr;

  ustr_add_fmt;
  ustr_add_fmt_lim;
  ustr_add_vfmt;
  ustr_add_vfmt_lim;
  ustr_dup_fmt;
  ustr_dup_fmt_lim;
  ustr_dup_vfmt;
  ustr_dup_vfmt_lim;
  ustr_dupx_fmt;
  ustr_dupx_fmt_lim;
  ustr_dupx_vfmt;
  ustr_dupx_vfmt_lim;
  ustr_set_fmt;
  ustr_set_fmt_lim;
  ustr_set_vfmt;
  ustr_set_vfmt_lim;

  ustrp_add_fmt;
  ustrp_add_fmt_lim;
  ustrp_add_vfmt;
  ustrp_add_vfmt_lim;
  ustrp_dup_fmt;
  ustrp_dup_fmt_lim;
  ustrp_dup_vfmt;
  ustrp_dup_vfmt_lim;
  ustrp_dupx_fmt;
  ustrp_dupx_fmt_lim;
  ustrp_dupx_vfmt;
  ustrp_dupx_vfmt_lim;
  ustrp_set_fmt;
  ustrp_set_fmt_lim;
  ustrp_set_vfmt;
  ustrp_set_vfmt_lim;

  ustr_cmp;
  ustr_cmp_buf;
  ustr_cmp_buf_eq;
  ustr_cmp_case;
  ustr_cmp_case_buf;
  ustr_cmp_case_buf_eq;
  ustr_cmp_case_cstr;
  ustr_cmp_case_cstr_eq;
  ustr_cmp_case_eq;
  ustr_cmp_case_prefix_buf_eq;
  ustr_cmp_case_prefix_cstr_eq;
  ustr_cmp_case_prefix_eq;
  ustr_cmp_case_subustr;
  ustr_cmp_case_subustr_eq;
  ustr_cmp_case_suffix_buf_eq;
  ustr_cmp_case_suffix_cstr_eq;
  ustr_cmp_case_suffix_eq;
  ustr_cmp_cstr;
  ustr_cmp_cstr_eq;
  ustr_cmp_eq;
  ustr_cmp_fast;
  ustr_cmp_fast_buf;
  ustr_cmp_fast_cstr;
  ustr_cmp_fast_subustr;
  ustr_cmp_prefix_buf_eq;
  ustr_cmp_prefix_cstr_eq;
  ustr_cmp_prefix_eq;
  ustr_cmp_subustr;
  ustr_cmp_subustr_eq;
  ustr_cmp_suffix_buf_eq;
  ustr_cmp_suffix_cstr_eq;
  ustr_cmp_suffix_eq;

  ustrp_cmp;
  ustrp_cmp_buf;
  ustrp_cmp_buf_eq;
  ustrp_cmp_case;
  ustrp_cmp_case_buf;
  ustrp_cmp_case_buf_eq;
  ustrp_cmp_case_cstr;
  ustrp_cmp_case_cstr_eq;
  ustrp_cmp_case_eq;
  ustrp_cmp_case_prefix_buf_eq;
  ustrp_cmp_case_prefix_cstr_eq;
  ustrp_cmp_case_prefix_eq;
  ustrp_cmp_case_subustrp;
  ustrp_cmp_case_subustrp_eq;
  ustrp_cmp_case_suffix_buf_eq;
  ustrp_cmp_case_suffix_cstr_eq;
  ustrp_cmp_case_suffix_eq;
  ustrp_cmp_cstr;
  ustrp_cmp_cstr_eq;
  ustrp_cmp_eq;
  ustrp_cmp_fast;
  ustrp_cmp_fast_buf;
  ustrp_cmp_fast_cstr;
  ustrp_cmp_fast_subustrp;
  ustrp_cmp_prefix_buf_eq;
  ustrp_cmp_prefix_cstr_eq;
  ustrp_cmp_prefix_eq;
  ustrp_cmp_subustrp;
  ustrp_cmp_subustrp_eq;
  ustrp_cmp_suffix_buf_eq;
  ustrp_cmp_suffix_cstr_eq;
  ustrp_cmp_suffix_eq;

  ustr_srch_buf_fwd;
  ustr_srch_buf_rev;
  ustr_srch_chr_fwd;
  ustr_srch_chr_rev;
  ustr_srch_cstr_fwd;
  ustr_srch_cstr_rev;
  ustr_srch_fwd;
  ustr_srch_rev;
  ustr_srch_subustr_fwd;
  ustr_srch_subustr_rev;

  ustrp_srch_buf_fwd;
  ustrp_srch_buf_rev;
  ustrp_srch_chr_fwd;
  ustrp_srch_chr_rev;
  ustrp_srch_cstr_fwd;
  ustrp_srch_cstr_rev;
  ustrp_srch_fwd;
  ustrp_srch_rev;
  ustrp_srch_subustrp_fwd;
  ustrp_srch_subustrp_rev;

  ustr_spn_chr_fwd;
  ustr_spn_chr_rev;
  ustr_spn_chrs_fwd;
  ustr_spn_chrs_rev;
  ustr_spn_cstr_fwd;
  ustr_spn_cstr_rev;
  ustr_spn_fwd;
  ustr_spn_rev;

  ustrp_spn_chr_fwd;
  ustrp_spn_chr_rev;
  ustrp_spn_chrs_fwd;
  ustrp_spn_chrs_rev;
  ustrp_spn_cstr_fwd;
  ustrp_spn_cstr_rev;
  ustrp_spn_fwd;
  ustrp_spn_rev;

  ustr_cspn_chr_fwd;
  ustr_cspn_chr_rev;
  ustr_cspn_chrs_fwd;
  ustr_cspn_chrs_rev;
  ustr_cspn_cstr_fwd;
  ustr_cspn_cstr_rev;
  ustr_cspn_fwd;
  ustr_cspn_rev;

  ustrp_cspn_chr_fwd;
  ustrp_cspn_chr_rev;
  ustrp_cspn_chrs_fwd;
  ustrp_cspn_chrs_rev;
  ustrp_cspn_cstr_fwd;
  ustrp_cspn_cstr_rev;
  ustrp_cspn_fwd;
  ustrp_cspn_rev;

  ustr_add_b_uint16;
  ustr_add_b_uint32;
  ustr_add_b_uint64;

  ustrp_add_b_uint16;
  ustrp_add_b_uint32;
  ustrp_add_b_uint64;

  ustr_parse_b_uint16;
  ustr_parse_b_uint32;
  ustr_parse_b_uint64;

  ustrp_parse_b_uint16;
  ustrp_parse_b_uint32;
  ustrp_parse_b_uint64;

  ustr_io_get;
  ustr_io_getdelim;
  ustr_io_getfile;
  ustr_io_getfilename;
  ustr_io_getline;
  ustr_io_put;
  ustr_io_putfile;
  ustr_io_putfileline;
  ustr_io_putfilename;
  ustr_io_putline;

  ustrp_io_get;
  ustrp_io_getdelim;
  ustrp_io_getfile;
  ustrp_io_getfilename;
  ustrp_io_getline;
  ustrp_io_put;
  ustrp_io_putfile;
  ustrp_io_putfileline;
  ustrp_io_putfilename;
  ustrp_io_putline;

  ustr_utf8_bytes2chars;
  ustr_utf8_chars2bytes;
  ustr_utf8_len;
  ustr_utf8_valid;
  ustr_utf8_width;

  ustrp_utf8_bytes2chars;
  ustrp_utf8_chars2bytes;
  ustrp_utf8_len;
  ustrp_utf8_valid;
  ustrp_utf8_width;

  ustr_utf8_spn_chrs_fwd;
  ustr_utf8_spn_chrs_rev;
  ustr_utf8_spn_cstr_fwd;
  ustr_utf8_spn_cstr_rev;
  ustr_utf8_spn_fwd;
  ustr_utf8_spn_rev;

  ustrp_utf8_spn_chrs_fwd;
  ustrp_utf8_spn_chrs_rev;
  ustrp_utf8_spn_cstr_fwd;
  ustrp_utf8_spn_cstr_rev;
  ustrp_utf8_spn_fwd;
  ustrp_utf8_spn_rev;

  ustr_utf8_cspn_chrs_fwd;
  ustr_utf8_cspn_chrs_rev;
  ustr_utf8_cspn_cstr_fwd;
  ustr_utf8_cspn_cstr_rev;
  ustr_utf8_cspn_fwd;
  ustr_utf8_cspn_rev;

  ustrp_utf8_cspn_chrs_fwd;
  ustrp_utf8_cspn_chrs_rev;
  ustrp_utf8_cspn_cstr_fwd;
  ustrp_utf8_cspn_cstr_rev;
  ustrp_utf8_cspn_fwd;
  ustrp_utf8_cspn_rev;

  ustr_parse_int;
  ustr_parse_intmax;
  ustr_parse_long;
  ustr_parse_short;
  ustr_parse_uint;
  ustr_parse_uintmax;
  ustr_parse_uintmaxx;
  ustr_parse_ulong;
  ustr_parse_ulongx;
  ustr_parse_ushort;

  ustrp_parse_int;
  ustrp_parse_intmax;
  ustrp_parse_long;
  ustrp_parse_short;
  ustrp_parse_uint;
  ustrp_parse_uintmax;
  ustrp_parse_uintmaxx;
  ustrp_parse_ulong;
  ustrp_parse_ulongx;
  ustrp_parse_ushort;

  ustr_sub;
  ustr_sub_buf;
  ustr_sub_cstr;
  ustr_sub_fmt;
  ustr_sub_fmt_lim;
  ustr_sub_rep_chr;
  ustr_sub_subustr;
  ustr_sub_undef;
  ustr_sub_vfmt;
  ustr_sub_vfmt_lim;

  ustrp_sub;
  ustrp_sub_buf;
  ustrp_sub_cstr;
  ustrp_sub_fmt;
  ustrp_sub_fmt_lim;
  ustrp_sub_rep_chr;
  ustrp_sub_subustrp;
  ustrp_sub_undef;
  ustrp_sub_vfmt;
  ustrp_sub_vfmt_lim;

  ustr_replace;
  ustr_replace_buf;
  ustr_replace_cstr;

  ustrp_replace;
  ustrp_replace_buf;
  ustrp_replace_cstr;

  ustr_sc_sub;
  ustr_sc_sub_buf;
  ustr_sc_sub_cstr;
  ustr_sc_sub_fmt;
  ustr_sc_sub_fmt_lim;
  ustr_sc_sub_rep_chr;
  ustr_sc_sub_subustr;
  ustr_sc_sub_undef;
  ustr_sc_sub_vfmt;
  ustr_sc_sub_vfmt_lim;

  ustrp_sc_sub;
  ustrp_sc_sub_buf;
  ustrp_sc_sub_cstr;
  ustrp_sc_sub_fmt;
  ustrp_sc_sub_fmt_lim;
  ustrp_sc_sub_rep_chr;
  ustrp_sc_sub_subustrp;
  ustrp_sc_sub_undef;
  ustrp_sc_sub_vfmt;
  ustrp_sc_sub_vfmt_lim;

  ustr_split;
  ustr_split_buf;
  ustr_split_cstr;

  ustrp_split;
  ustrp_split_buf;
  ustrp_split_cstr;

    local:
  ustr__*;
  ustrp__*;
};

USTR_1.0.1 {
    global:

  ustr_cntl_opt;

  ustr_srch_rep_chr_fwd;
  ustr_srch_rep_chr_rev;

  ustrp_srch_rep_chr_fwd;
  ustrp_srch_rep_chr_rev;

  ustr_ins;
  ustr_ins_buf;
  ustr_ins_cstr;
  ustr_ins_fmt;
  ustr_ins_fmt_lim;
  ustr_ins_rep_chr;
  ustr_ins_subustr;
  ustr_ins_undef;
  ustr_ins_vfmt;
  ustr_ins_vfmt_lim;

  ustrp_ins;
  ustrp_ins_buf;
  ustrp_ins_cstr;
  ustrp_ins_fmt;
  ustrp_ins_fmt_lim;
  ustrp_ins_rep_chr;
  ustrp_ins_subustrp;
  ustrp_ins_undef;
  ustrp_ins_vfmt;
  ustrp_ins_vfmt_lim;

  ustr_replace_rep_chr;

  ustrp_replace_rep_chr;

  ustr_split_spn;
  ustr_split_spn_chrs;
  ustr_split_spn_cstr;

  ustrp_split_spn;
  ustrp_split_spn_chrs;
  ustrp_split_spn_cstr;
};

USTR_1.0.2 {
    global:

  ustr_pool_ll_make;
  ustr_pool_ll_cntl;

  ustr_conf;

  ustrp_conf;

  ustr_cmp_case_prefix_subustr_eq;
  ustr_cmp_case_suffix_subustr_eq;
  ustr_cmp_prefix_subustr_eq;
  ustr_cmp_suffix_subustr_eq;

  ustrp_cmp_case_prefix_subustrp_eq;
  ustrp_cmp_case_suffix_subustrp_eq;
  ustrp_cmp_prefix_subustrp_eq;
  ustrp_cmp_suffix_subustrp_eq;

  ustr_srch_case_buf_fwd;
  ustr_srch_case_buf_rev;
  ustr_srch_case_chr_fwd;
  ustr_srch_case_chr_rev;
  ustr_srch_case_cstr_fwd;
  ustr_srch_case_cstr_rev;
  ustr_srch_case_fwd;
  ustr_srch_case_rep_chr_fwd;
  ustr_srch_case_rep_chr_rev;
  ustr_srch_case_rev;
  ustr_srch_case_subustr_fwd;
  ustr_srch_case_subustr_rev;

  ustrp_srch_case_buf_fwd;
  ustrp_srch_case_buf_rev;
  ustrp_srch_case_chr_fwd;
  ustrp_srch_case_chr_rev;
  ustrp_srch_case_cstr_fwd;
  ustrp_srch_case_cstr_rev;
  ustrp_srch_case_fwd;
  ustrp_srch_case_rep_chr_fwd;
  ustrp_srch_case_rep_chr_rev;
  ustrp_srch_case_rev;
  ustrp_srch_case_subustrp_fwd;
  ustrp_srch_case_subustrp_rev;

  ustr_sc_export;
  ustr_sc_export_subustr;

  ustrp_sc_export;
  ustrp_sc_export_subustrp;
};

USTR_1.0.3 {
    global:

  ustr_sc_rtrim;
  ustr_sc_rtrim_chrs;
  ustr_sc_rtrim_cstr;
  ustr_sc_ltrim;
  ustr_sc_ltrim_chrs;
  ustr_sc_ltrim_cstr;
  ustr_sc_trim;
  ustr_sc_trim_chrs;
  ustr_sc_trim_cstr;

  ustrp_sc_rtrim;
  ustrp_sc_rtrim_chrs;
  ustrp_sc_rtrim_cstr;
  ustrp_sc_ltrim;
  ustrp_sc_ltrim_chrs;
  ustrp_sc_ltrim_cstr;
  ustrp_sc_trim;
  ustrp_sc_trim_chrs;
  ustrp_sc_trim_cstr;

};

USTR_1.0.4 {
    global:

  ustr_sc_join;
  ustr_sc_vjoin;
  ustr_sc_joinx;
  ustr_sc_vjoinx;

  ustr_sc_concat;
  ustr_sc_vconcat;
  ustr_sc_concatx;
  ustr_sc_vconcatx;

  ustrp_sc_join;
  ustrp_sc_vjoin;
  ustrp_sc_joinx;
  ustrp_sc_vjoinx;

  ustrp_sc_concat;
  ustrp_sc_vconcat;
  ustrp_sc_concatx;
  ustrp_sc_vconcatx;
};
