str.h revision 0e3f8c6edad565112d91f0a53568c0313d657e48
45312f52ff3a3d4c137447be4c7556500c2f8bf2Timo Sirainen#ifndef STR_H
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen#define STR_H
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainenstring_t *str_new(pool_t pool, size_t initial_size);
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainenstring_t *t_str_new(size_t initial_size);
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen/* Allocate a constant string using the given str as the input data.
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen str pointer is saved directly, so it must not be freed until the returned
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen string is no longer used. len must contain strlen(str). */
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainenstring_t *str_new_const(pool_t pool, const char *str, size_t len);
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainenstring_t *t_str_new_const(const char *str, size_t len);
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainenvoid str_free(string_t **str);
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainenchar *str_free_without_data(string_t **str);
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainenconst char *str_c(string_t *str);
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainenconst unsigned char *str_data(const string_t *str) ATTR_PURE;
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainenchar *str_c_modifiable(string_t *str);
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainensize_t str_len(const string_t *str) ATTR_PURE;
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainenbool str_equals(const string_t *str1, const string_t *str2) ATTR_PURE;
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen/* Append string/character */
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainenvoid str_append(string_t *str, const char *cstr);
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainenvoid str_append_n(string_t *str, const void *cstr, size_t max_len);
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainenvoid str_append_c(string_t *str, unsigned char chr);
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainenvoid str_append_str(string_t *dest, const string_t *src);
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen/* Append printf()-like data */
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainenvoid str_printfa(string_t *str, const char *fmt, ...)
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen ATTR_FORMAT(2, 3);
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainenvoid str_vprintfa(string_t *str, const char *fmt, va_list args)
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen ATTR_FORMAT(2, 0);
7230352f1177a8ed2b924c6992e751fd2ab9bc27Timo Sirainen
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainenvoid str_insert(string_t *str, size_t pos, const char *cstr);
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainenvoid str_delete(string_t *str, size_t pos, size_t len);
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainenvoid str_truncate(string_t *str, size_t len);
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen
c6a57378d3c54988f525f81e19c0c5d132a0770dTimo Sirainen#endif
96f2533c48ce5def0004931606a2fdf275578880Timo Sirainen