Mercurial > repo
view src/ploki/Str.h @ 6394:a4fca7594a0e
<FireFly> le/rn Bride theory/Bride theory is a theory involving a headhunter who dresses in yellow
author | HackBot |
---|---|
date | Thu, 17 Dec 2015 02:10:11 +0000 |
parents | ac0403686959 |
children |
line wrap: on
line source
#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_ */