#ifndef CS_COMMON_MG_STR_H_
#define CS_COMMON_MG_STR_H_
#include <stddef.h>
#ifdef __cplusplus
extern "C" {
#endif
struct mg_str {
const char *p;
size_t len;
};
struct mg_str mg_mk_str(const char *s);
struct mg_str mg_mk_str_n(const char *s, size_t len);
#define MG_MK_STR(str_literal) \
{ str_literal, sizeof(str_literal) - 1 }
#define MG_MK_STR_N(str_literal, len) \
{ str_literal, len }
#define MG_NULL_STR \
{ NULL, 0 }
int mg_vcmp(const struct mg_str *str2, const char *str1);
int mg_vcasecmp(const struct mg_str *str2, const char *str1);
struct mg_str mg_strdup(const struct mg_str s);
struct mg_str mg_strdup_nul(const struct mg_str s);
const char *mg_strchr(const struct mg_str s, int c);
int mg_strcmp(const struct mg_str str1, const struct mg_str str2);
int mg_strncmp(const struct mg_str str1, const struct mg_str str2, size_t n);
int mg_strcasecmp(const struct mg_str str1, const struct mg_str str2);
void mg_strfree(struct mg_str *s);
const char *mg_strstr(const struct mg_str haystack, const struct mg_str needle);
struct mg_str mg_strstrip(struct mg_str s);
int mg_str_starts_with(struct mg_str s, struct mg_str prefix);
#ifdef __cplusplus
}
#endif
#endif