Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=yaxmenu.git;a=commitdiff;h=d535cd7633658c8fdc1edf04bd5489613b8091d6
commit d535cd7633658c8fdc1edf04bd5489613b8091d6 Author: James Buren <r...@frugalware.org> Date: Tue Dec 1 21:14:50 2009 -0600 as.h * initial draft diff --git a/src/as.h b/src/as.h new file mode 100644 index 0000000..009e5a4 --- /dev/null +++ b/src/as.h @@ -0,0 +1,55 @@ +#ifndef _as_header_ +#define _as_header_ +#include "includes.h" +#include "utility.h" + +#define AS_INITIAL_LENGTH 64U + +typedef struct { + char *str; + size_t cl; + size_t ml; +} as_t; + +static inline void as_init(as_t *as) { + assert(as); + + as->str = xnew(char,as->ml = AS_INITIAL_LENGTH); + + as->cl = 0; +} + +static inline void as_putc(as_t *as,char ch) { + assert(as); + + if(as->cl == as->ml) + as->str = xrenew(as->str,char,as->ml *= 2); + + as->str[as->cl++] = ch; +} + +static inline void as_puts(as_t *as,const char *str) { + assert(as && str); + + while(*str) + as_putc(as,*str++); +} + +static inline void as_reset(as_t *as) { + assert(as); + + as->cl = 0; +} + +static inline void as_compact(as_t *as) { + assert(as); + + as->str = xrenew(as->str,char,as->ml = as->cl); +} + +static inline void as_free(as_t *as) { + assert(as); + + free(as->str); +} +#endif _______________________________________________ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git