#ifndef STR_H
#define STR_H
#include <stdbool.h>
typedef struct _String
{
char *data;
unsigned int length;
unsigned int allocated_length;
} String;
extern String *string_create( const char *init );
extern String *string_create_by_size( unsigned int reserved_size);
extern void string_assign( String *string_, const char *val );
extern void string_append( String *string_, const char *val );
extern void string_append_char( String *string_, char c );
extern void string_insert( String *string_, int index, const char *val);
extern void string_insert_char( String *string_, int index, char val);
extern void string_free( String *string_ );
extern unsigned int string_hash( String *string_ );
extern bool string_equal( String *a, String *b );
#endif // STR_H