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

Reply via email to