You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

44 lines
1.3 KiB

/* Simple extendable string.
* I think this doesn't leak?
*/
#ifndef _EXSTRING_H
#define _EXSTRING_H
#include <stddef.h>
typedef struct {
size_t currentSize;
char cstr[];
} exStringOpt;
typedef char* exString;
#define EXS(s) (* (char**)(s))
typedef char (*exsp_select)(void* state, char mapchar);
typedef int (*exsp_where)(void* state, char mapchar);
exString* exs_new(const char* from);
exString* exs_clone(exString* from);
void exs_free(exString* str);
void exs_nappend(exString* str, const char* from, size_t length);
void exs_append(exString* str, const char* from);
void exs_appendf(exString* str, const char* fmt, ...);
size_t exs_realsize(exString* str);
void exs_reduce(exString* str, size_t by);
void exs_nappendc(exString* str, char c, int times);
void exs_appendc(exString* str, char c);
void exs_recalc(exString* str);
void exs_reset(exString * str);
exString* exs_where(exString* str, exsp_where func, void* state);
exString* exs_select(exString *str, exsp_select func, void* state);
void exs_whereip(exString* str, exsp_where, void* state);
void exs_selectip(exString* str, exsp_select, void* state);
char exspf_upper(void* state, char c);
char exspf_lower(void* state, char c);
int exspf_only(void* state, char c);
int exspf_only_not(void* state, char c);
#endif /* _EXSTRING_H */