/* ustr.h:
*
****************************************************************
* Copyright (C) 2004 Tom Lord
*
* See the file "COPYING" for further information about
* the copyright and warranty status of this work.
*/
#ifndef INCLUDE__CHAR__USTR_H
#define INCLUDE__CHAR__USTR_H
#include "hackerlab/unicode/unicode.h"
struct ustr_codevalue_index
{
ssize_t cv;
};
typedef struct ustr_codevalue_index ustr_cv_index_t;
struct ustr_codepoint_index
{
ssize_t cp;
};
typedef struct ustr_codepoint_index ustr_cp_index_t;
enum ustr_length_type
{
ustr_null_terminated,
ustr_coding_value_length,
ustr_codepoint_length
};
enum ustr_set_type
{
ustr_over,
ustr_fit,
ustr_shift
};
/* automatically generated __STDC__ prototypes */
extern ustr_cv_index_t ustr_cv_index (ssize_t n);
extern ustr_cp_index_t ustr_cp_index (ssize_t n);
extern size_t ustr_cv_index_to_scanner_index (enum uni_encoding_scheme enc,
ustr_cv_index_t n);
extern ustr_cv_index_t ustr_scanner_index_to_cv_index (enum uni_encoding_scheme enc,
size_t n);
extern uni_string ustr_cv_offset (uni_string str,
enum uni_encoding_scheme enc,
ustr_cv_index_t n);
extern uni_string ustr_cv_offset_n (ustr_cv_index_t * new_length,
uni_string str,
enum uni_encoding_scheme enc,
ustr_cv_index_t len,
ustr_cv_index_t n);
extern t_unicode ustr_scan (uni_string * str_after,
uni_string str,
enum uni_encoding_scheme enc);
extern ustr_cv_index_t ustr_str_subtract (uni_string a,
uni_string b,
enum uni_encoding_scheme enc);
extern t_unicode ustr_scan_n (uni_string * str_after,
ustr_cv_index_t * len_after,
uni_string str,
enum uni_encoding_scheme enc,
ustr_cv_index_t length);
extern int ustr_put (uni_string * str_after,
uni_string str,
enum uni_encoding_scheme enc,
t_unicode c,
enum ustr_set_type set_type);
extern int ustr_put_n (uni_string * str_after,
ustr_cv_index_t * len_after,
uni_string str,
enum uni_encoding_scheme enc,
ustr_cv_index_t len,
t_unicode c,
enum ustr_set_type set_type);
extern t_unicode ustr_cv_ref (ustr_cv_index_t * index_after,
uni_string str,
enum uni_encoding_scheme enc,
ustr_cv_index_t index);
extern t_unicode ustr_cv_ref_n (ustr_cv_index_t * index_after,
uni_string str,
enum uni_encoding_scheme enc,
ustr_cv_index_t len,
ustr_cv_index_t index);
extern int ustr_cv_set (ustr_cv_index_t * index_after,
uni_string str,
enum uni_encoding_scheme enc,
ustr_cv_index_t index,
t_unicode c,
enum ustr_set_type set_type);
extern int ustr_cv_set_n (ustr_cv_index_t * index_after,
ustr_cv_index_t * len_after,
uni_string str,
enum uni_encoding_scheme enc,
ustr_cv_index_t len,
ustr_cv_index_t index,
t_unicode c,
enum ustr_set_type set_type);
extern uni_string ustr_cp_offset (uni_string str,
enum uni_encoding_scheme enc,
ustr_cp_index_t n);
extern uni_string ustr_cp_offset_n (uni_string str,
enum uni_encoding_scheme enc,
ustr_cv_index_t len,
ustr_cp_index_t n);
extern ustr_cv_index_t ustr_lengths (ustr_cp_index_t * cp_length,
enum uni_encoding_scheme * fw_enc,
uni_string str,
enum uni_encoding_scheme enc);
extern ustr_cv_index_t ustr_lengths_n (ustr_cp_index_t * cp_length,
enum uni_encoding_scheme * fw_enc,
uni_string str,
enum uni_encoding_scheme enc,
ustr_cv_index_t len);
extern ustr_cv_index_t ustr_cv_length (uni_string str,
enum uni_encoding_scheme enc);
extern ustr_cv_index_t ustr_cv_length_in_encoding (enum uni_encoding_scheme dest_enc,
uni_string str,
enum uni_encoding_scheme enc);
extern ustr_cv_index_t ustr_cv_length_in_encoding_n (enum uni_encoding_scheme dest_enc,
uni_string str,
enum uni_encoding_scheme enc,
ustr_cv_index_t len);
extern ustr_cp_index_t ustr_cp_length (enum uni_encoding_scheme * fw_enc,
uni_string str,
enum uni_encoding_scheme enc);
extern ustr_cp_index_t ustr_cp_length_n (enum uni_encoding_scheme * fw_enc,
uni_string str,
enum uni_encoding_scheme enc,
ustr_cv_index_t len);
extern uni_string ustr_copy (uni_string dest,
enum uni_encoding_scheme dest_enc,
uni_string str,
enum uni_encoding_scheme enc);
extern uni_string ustr_copy_n (uni_string dest,
enum uni_encoding_scheme dest_enc,
ustr_cv_index_t dest_len,
uni_string str,
enum uni_encoding_scheme enc,
ustr_cv_index_t len);
extern uni_string ustr_cat (uni_string dest,
enum uni_encoding_scheme dest_enc,
uni_string str,
enum uni_encoding_scheme enc);
extern uni_string ustr_cat_n (uni_string dest,
enum uni_encoding_scheme dest_enc,
ustr_cv_index_t dest_len,
uni_string str,
ustr_cv_index_t len,
enum uni_encoding_scheme enc);
extern uni_string ustr_save (alloc_limits limits,
enum uni_encoding_scheme dest_enc,
uni_string str,
enum uni_encoding_scheme enc);
extern uni_string ustr_save_n_case (ustr_cv_index_t * dest_len,
alloc_limits limits,
enum uni_encoding_scheme dest_enc,
uni_string str,
enum uni_encoding_scheme enc,
ustr_cv_index_t len);
extern uni_string ustr_save_n (ustr_cv_index_t * dest_len,
alloc_limits limits,
enum uni_encoding_scheme dest_enc,
uni_string str,
enum uni_encoding_scheme enc,
ustr_cv_index_t len);
#endif /* INCLUDE__CHAR__USTR_H */
/* tag: Tom Lord Thu Jan 1 13:54:58 2004 (ustr.h)
*/
syntax highlighted by Code2HTML, v. 0.9.1