-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcstring.h
More file actions
38 lines (33 loc) · 1.6 KB
/
Copy pathcstring.h
File metadata and controls
38 lines (33 loc) · 1.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#ifndef CSTRING_H
#define CSTRING_H
#include "stdlib.h"
typedef struct {
char * cstr;
size_t size;
size_t capacity;
} string_t;
#define STRING_LITERAL(_cstr) { \
.cstr = _cstr, \
.capacity = 0, \
.size = sizeof(_cstr) - 1, \
}
string_t *string_new();
string_t *string_new_from_cstr(const char *cstr);
void string_free(string_t *string);
int string_index_of_char_from_count(string_t *string, char ch, int start, int count);
int string_index_of_chars_from_count(string_t *string, const char * chs, size_t size, int start, int count);
int string_index_of_cstr_from_count(string_t *string, const char *cstr, int start, int count);
int string_index_of_from_count(string_t *string, const string_t *other, int start, int count);
void string_insert_chars(string_t *string, int index, const char *chars, size_t size);
void string_insert_char(string_t *string, int index, char ch);
void string_insert_cstr(string_t *string, int index, const char *cstr);
void string_insert(string_t *string, int index, string_t *other);
void string_clear(string_t *string);
void string_push_back_char(string_t *string, char ch);
void string_push_back_chars(string_t *string, const char *chs, size_t size);
void string_push_back(string_t *string, string_t *other);
void string_push_front_char(string_t *string, char ch);
void string_push_front_chars(string_t *string, const char *chs, size_t size);
void string_push_front(string_t *string, string_t *other);
int string_is_empty(string_t *string);
#endif //CSTRING_H