Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=yaxmenu.git;a=commitdiff;h=4245ece7d0c1741b1ca696d7a8484b8332f1e4df

commit 4245ece7d0c1741b1ca696d7a8484b8332f1e4df
Author: James Buren <r...@frugalware.org>
Date:   Thu Dec 3 18:42:07 2009 -0600

autostring.h
* delete autostring.c
* rewrite with simple static inline

diff --git a/src/autostring.c b/src/autostring.c
deleted file mode 100644
index 23fa08a..0000000
--- a/src/autostring.c
+++ /dev/null
@@ -1,85 +0,0 @@
-#include "utility.h"
-#include "autostring.h"
-
-#define AUTOSTRING_INITIAL_LENGTH 64U
-
-struct _as {
-  char *str;
-  size_t cl;
-  size_t ml;
-};
-
-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);
-
-  if(as->str[as->cl] == '\0')
-    --as->cl;
-
-  while(*str)
-    _as_putc(as,*str++);
-
-  _as_putc(as,'\0');
-}
-
-as_t *as_new(void) {
-  as_t *as;
-
-  as = xnew(as_t,1);
-
-  as->str = xnew(char,as->ml = AUTOSTRING_INITIAL_LENGTH);
-
-  _as_putc(as,as->cl = 0);
-
-  return as;
-}
-
-void as_puts(as_t *as,size_t num,...) {
-  va_list args;
-
-  assert(as && num);
-
-  va_start(args,num);
-
-  while(num-- > 0) {
-    const char *str = va_arg(args,const char *);
-    _as_puts(as,str);
-  }
-
-  va_end(args);
-}
-
-void as_reset(as_t *as) {
-  assert(as);
-
-  as->cl = 0;
-}
-
-void as_compact(as_t *as) {
-  assert(as);
-
-  as->str = xrenew(as->str,char,as->ml = as->cl);
-}
-
-char *as_gets(const as_t *as) {
-  assert(as);
-
-  return as->str;
-}
-
-void as_free(as_t *as,bool free_str) {
-  assert(as);
-
-  if(free_str)
-    free(as->str);
-
-  free(as);
-}
diff --git a/src/autostring.h b/src/autostring.h
index 58827c1..8a8bfec 100644
--- a/src/autostring.h
+++ b/src/autostring.h
@@ -1,13 +1,60 @@
#ifndef _autostring_header_
#define _autostring_header_
-#include "includes.h"
+#include "utility.h"

-typedef struct _as as_t;
+#define AUTOSTRING_INITIAL_LENGTH 64U

-as_t *as_new(void);
-void as_puts(as_t *,size_t,...);
-void as_reset(as_t *);
-void as_compact(as_t *);
-char *as_gets(const as_t *);
-void as_free(as_t *,bool);
+typedef struct {
+  char *s;  // String pointer array
+  size_t p; // Current position
+  size_t m; // Maximum position
+} as_t;
+
+static inline void as_init(as_t *as) {
+  assert(as);
+
+  as->s = xnew(char,as->m = AUTOSTRING_INITIAL_LENGTH);
+
+  as->p = 0;
+}
+
+static inline void as_putc(as_t *as,char c) {
+  assert(as);
+
+  if(as->p == as->m)
+    as->s = xrenew(as->s,char,as->m *= 2);
+
+  as->s[as->p++] = c;
+}
+
+static inline void as_puts(as_t *as,const char *s) {
+  assert(as && s);
+
+  while(*s)
+    as_putc(as,*s++);
+}
+
+static inline void as_reset(as_t *as) {
+  assert(as);
+
+  as->p = 0;
+}
+
+static inline void as_compact(as_t *as) {
+  assert(as && as->p);
+
+  as->s = xrenew(as->s,char,as->m = as->p);
+}
+
+static inline char *as_gets(const as_t *as) {
+  assert(as);
+
+  return as->s;
+}
+
+static inline void as_free(const as_t *as) {
+  assert(as);
+
+  free(as->s);
+}
#endif
_______________________________________________
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git

Reply via email to