/* cmstring.c: Declarations for string handling. */ #ifndef STRING_H #define STRING_H typedef struct string String; #include <stdio.h> #include "regexp.h" struct string { int start; int len; int size; int refs; regexp *reg; char s[1]; }; /* string.c */ String *string_new(int len); String *string_empty(int size); String *string_from_chars(char *s, int len); String *string_of_char(int c, int len); String *string_dup(String *str); int string_length(String *str); char *string_chars(String *str); void string_pack(String *str, FILE *fp); String *string_unpack(FILE *fp); int string_packed_size(String *str); int string_cmp(String *str1, String *str2); String *string_add(String *str1, String *str2); String *string_add_chars(String *str, char *s, int len); String *string_addc(String *str, int c); String *string_add_padding(String *str, char *filler, int len, int padding); String *string_truncate(String *str, int len); String *string_substring(String *str, int start, int len); String *string_uppercase(String *str); String *string_lowercase(String *str); regexp *string_regexp(String *str); void string_discard(String *str); String *string_parse(char **sptr); String *string_add_unparsed(String *str, char *s, int len); char *regerror(char *msg); #endif