/*
// Full copyright information is available in the file ../doc/CREDITS
*/
#ifndef cdc_string_h
#define cdc_string_h
#include "regexp.h"
cStr * string_new(Int len);
cStr * string_empty(Int size);
cStr * string_from_chars(char * s, Int len);
cStr * string_of_char(Int c, Int len);
cStr * string_dup(cStr * str);
void string_pack(cStr * str, FILE * fp);
cStr * string_unpack(FILE * fp);
Int string_packed_size(cStr * str);
Int string_cmp(cStr * str1, cStr * str2);
cStr * string_add(cStr * str1, cStr * str2);
cStr * string_add_chars(cStr * str, char * s, Int len);
cStr * string_addc(cStr * str, Int c);
cStr * string_add_padding(cStr * str,
char * filler,
Int len,
Int padding);
cStr * string_truncate(cStr * str, Int len);
cStr * string_substring(cStr * str, Int start, Int len);
cStr * string_uppercase(cStr * str);
cStr * string_lowercase(cStr * str);
regexp * string_regexp(cStr * str);
void string_discard(cStr * str);
cStr * string_parse(char * *sptr);
cStr * string_add_unparsed(cStr * str, char * s, Int len);
char * regerror(char * msg);
int string_index(cStr * str, cStr * sub, int origin);
cStr * string_prep(cStr *str, Int start, Int len);
#define string_length(__s) ((Int) __s->len)
#define string_chars(__s) ((char *) __s->s + __s->start)
#endif