Mercurial > repo
diff src/ploki/Str.h @ 4223:ac0403686959
<oerjan> rm -rf src/ploki; mv ploki src
author | HackBot |
---|---|
date | Fri, 20 Dec 2013 22:18:50 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/ploki/Str.h Fri Dec 20 22:18:50 2013 +0000 @@ -0,0 +1,144 @@ +#ifndef STR_H_ +#define STR_H_ + +#include "config.h" + +#include <stdio.h> + +typedef struct { + char *buf; + size_t length; + size_t size; + size_t offset; +} String; + +void St_init (String *); +void St_fake (String *, char *, size_t); +void St_clear (String *); +#if 0 +void St_zero (String *); +ATTR_PURE +char *St_ptr (const String *); +ATTR_PURE +size_t St_len (const String *); +void St_grow (String *, size_t); +#endif +void St_trunc (String *, size_t); +#if 0 +ATTR_PURE +int St_lastchar (const String *); +ATTR_PURE +int St_firstchar (const String *); +int St_chop (String *); +#endif +int St_shift (String *); +size_t St_shiftws (String *); +#if 0 +ATTR_PURE +int St_index (const String *, size_t); +#endif +ATTR_PURE +size_t St_chr (const String *, int); +#if 0 +size_t St_rchr (const String *, int); +#endif +ATTR_PURE +int St_cmp (const String *, const String *); +ATTR_PURE +int St_cmp_m (const String *, const void *, size_t); +#if 0 +ATTR_PURE +int St_cmp_s (const String *, const char *); +ATTR_PURE +int St_ncmp (const String *, const String *); +#endif +ATTR_PURE +int St_ncmp_m (const String *, const void *, size_t); +#if 0 +ATTR_PURE +int St_ncmp_s (const String *, const char *); +ATTR_PURE +int St_casecmp (const String *, const String *); +ATTR_PURE +int St_casecmp_m (const String *, const void *, size_t); +ATTR_PURE +int St_casecmp_s (const String *, const char *); +ATTR_PURE +int St_ncasecmp (const String *, const String *); +ATTR_PURE +int St_ncasecmp_m (const String *, const void *, size_t); +ATTR_PURE +int St_ncasecmp_s (const String *, const char *); +#endif +ATTR_PURE +size_t St_str (const String *, const String *); +ATTR_PURE +size_t St_str_m (const String *, const void *, size_t); +#if 0 +ATTR_PURE +size_t St_str_s (const String *, const char *); +ATTR_PURE +size_t St_rstr (const String *, const String *); +#endif +ATTR_PURE +size_t St_rstr_m (const String *, const void *, size_t); +ATTR_PURE +size_t St_rstr_s (const String *, const char *); +ATTR_PURE +size_t St_stro_m (const String *, size_t, const void *, size_t); +ATTR_PURE +size_t St_rstro_m (const String *, size_t, const void *, size_t); +void St_cpy (String *, const String *); +void St_cpy_m (String *, const void *, size_t); +void St_cpy_s (String *, const char *); +void St_cpy_c (String *, int); +void St_cat (String *, const String *); +void St_cat_m (String *, const void *, size_t); +void St_cat_s (String *, const char *); +void St_cat_c (String *, int); +#if 0 +void St_tac (String *, const String *); +#endif +void St_tac_m (String *, const void *, size_t); +void St_tac_s (String *, const char *); +void St_tac_c (String *, int); +void St_reverse (String *); +#if 0 +void St_map (String *, int (*)(int)); +#endif +void St_grep (String *, int (*)(int)); +void St_upper (String *); +void St_lower (String *); +void St_del (String *, size_t, size_t); +#if 0 +void St_ins (String *, size_t, const String *); +void St_ins_m (String *, size_t, const void *, size_t); +void St_ins_s (String *, size_t, const char *); +void St_ins_c (String *, size_t, int); +#endif +void St_substr (String *, String *, size_t, size_t, const String *); +#if HAVE_VSNPRINTF_P +ATTR_SPRINTF +size_t St_xprintf (String *, const char *, ...); +#endif +void St_num (String *, double); +#if 0 +size_t St_write (const String *, FILE *); +#endif +size_t St_read (String *, FILE *, size_t); +#if 0 +int St_getline (String *, FILE *, int); +void St_getfile (String *, FILE *); +#endif +ATTR_PURE +size_t St_hash (const String *, size_t); + +#define St_ptr(s) (0 + (s)->buf) +#define St_len(s) (0 + (s)->length) +#define St_zero(s) ((void)((s)->buf[(s)->length = 0] = '\0')) +#define ST_LASTCHAR(s) ((s)->length ? (int)(unsigned char)(s)->buf[(s)->length - 1] : EOF) +#define ST_FIRSTCHAR(s) ((s)->length ? (int)(unsigned char)(s)->buf[0] : EOF) +#define ST_INDEX(s, n) ((size_t)(n) < (s)->length ? (int)(unsigned char)(s)->buf[(size_t)(n)] : EOF) +#define ST_WRITE(s, fp) fwrite((s)->buf, 1, (s)->length, fp) + +#endif /* STR_H_ */