#ifndef ASTR_H_INCLUDED
#define ASTR_H_INCLUDED
#include <stdarg.h>
#include <stdbool.h>
#include <stdlib.h>
#include <string.h>
char *
astr_alloc_formatted(char const *format, ...);
char *
astr_alloc_formatted_from_va_list(char const *format, va_list arguments);
size_t
astr_formatted_length(char const *format, ...);
size_t
astr_formatted_length_from_va_list(char const *format, va_list arguments);
int
astr_realloc_append_formatted(char **s, char const *format, ...);
int
astr_realloc_append_formatted_from_va_list(char **s,
char const *format,
va_list arguments);
inline char *
astr_alloc_empty(void)
{
return calloc(1, sizeof(char));
}
inline int
astr_cmp(char const *s1, char const *s2)
{
if (s1 == s2) return 0;
if (!s1) return -1;
if (!s2) return 1;
return strcmp(s1, s2);
}
inline bool
astr_empty(char const *s)
{
return !s || !s[0];
}
inline bool
astr_eq(char const *s1, char const *s2)
{
return 0 == astr_cmp(s1, s2);
}
#endif