/* cmstring.c: Declarations for string handling. */

#ifndef STRING_H
#define STRING_H
#include "regexp.h"

typedef struct string String;

struct string {
    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 *string);
String *string_add(String *string, char *s, int len);
String *string_addc(String *string, int c);
String *string_parse(char **sptr);
String *string_add_unparsed(String *string, char *s, int len);
String *string_truncate(String *string, int len);
String *string_extend(String *string, int len);
void string_discard(String *string);

#endif