Mercurial > repo
view src/ploki/Str.h @ 8916:0234daffd946
<oerjan> addquote <int-e> I couldn\'t help thinking that maybe if one considers the ramifications in full detail it will turn out that overthinking is often not helpful and therefore, not something to be proud of.
author | HackBot |
---|---|
date | Sun, 14 Aug 2016 02:31:47 +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_ */