// retoor <retoor@molodetz.nl>
#ifndef R_STRING_H
#define R_STRING_H
#include "../r_error.h"
#include <stddef.h>
#include <stdbool.h>
typedef struct string_t *string_handle;
string_handle string_create(const char *str);
string_handle string_create_empty(void);
string_handle string_create_n(const char *str, size_t len);
string_handle string_format(const char *fmt, ...);
string_handle string_clone(const char *str);
string_handle string_clone_handle(string_handle s);
string_handle string_concat(const char *a, const char *b);
string_handle string_concat_handle(string_handle a, const char *b);
void string_append(string_handle s, const char *str);
void string_append_n(string_handle s, const char *str, size_t len);
void string_appendf(string_handle s, const char *fmt, ...);
void string_append_handle(string_handle dest, string_handle src);
size_t string_length(string_handle s);
size_t string_capacity(string_handle s);
const char *string_c_str(string_handle s);
char *string_release(string_handle s);
bool string_equals(string_handle a, string_handle b);
bool string_equals_c_str(string_handle s, const char *str);
bool string_is_empty(string_handle s);
void string_clear(string_handle s);
void string_destroy(string_handle s);
#endif