Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
New functions:
authormquinson <mquinson@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Wed, 1 Oct 2008 14:53:05 +0000 (14:53 +0000)
committermquinson <mquinson@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Wed, 1 Oct 2008 14:53:05 +0000 (14:53 +0000)
 - xbt_strbuff_from() to build a buffer with provided content
 - xbt_strbuff_free_container() to destroy only the container without
   messing with the contained data

git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@5951 48e7efb5-ca39-0410-a469-dd3cf9ba447f

include/xbt/strbuff.h
src/xbt/xbt_strbuff.c

index 388bbe1..63be41d 100644 (file)
@@ -28,7 +28,9 @@ typedef struct {
 
 XBT_PUBLIC(void)          xbt_strbuff_empty(xbt_strbuff_t b);
 XBT_PUBLIC(xbt_strbuff_t) xbt_strbuff_new(void);
 
 XBT_PUBLIC(void)          xbt_strbuff_empty(xbt_strbuff_t b);
 XBT_PUBLIC(xbt_strbuff_t) xbt_strbuff_new(void);
+XBT_PUBLIC(xbt_strbuff_t) xbt_strbuff_new_from(void);
 XBT_PUBLIC(void)          xbt_strbuff_free(xbt_strbuff_t b);
 XBT_PUBLIC(void)          xbt_strbuff_free(xbt_strbuff_t b);
+XBT_PUBLIC(void)          xbt_strbuff_free_container(xbt_strbuff_t b);
 XBT_PUBLIC(void)          xbt_strbuff_append(xbt_strbuff_t b, const char *toadd);
 XBT_PUBLIC(void)          xbt_strbuff_chomp(xbt_strbuff_t b);
 XBT_PUBLIC(void)          xbt_strbuff_trim(xbt_strbuff_t b);
 XBT_PUBLIC(void)          xbt_strbuff_append(xbt_strbuff_t b, const char *toadd);
 XBT_PUBLIC(void)          xbt_strbuff_chomp(xbt_strbuff_t b);
 XBT_PUBLIC(void)          xbt_strbuff_trim(xbt_strbuff_t b);
index 4fc131e..e12022a 100644 (file)
@@ -35,6 +35,21 @@ xbt_strbuff_t xbt_strbuff_new(void) {
   xbt_strbuff_empty(res);
   return res;
 }
   xbt_strbuff_empty(res);
   return res;
 }
+/** @brief creates a new string buffer containing the provided string
+ *
+ * Beware, we store the ctn directly, not a copy of it
+ */
+xbt_strbuff_t xbt_strbuff_from(char *ctn) {
+  xbt_strbuff_t res=malloc(sizeof(s_xbt_strbuff_t));
+  res->data=ctn;
+  res->used=res->size=strlen(ctn);
+  return res;
+}
+/** @brief frees only the container without touching to the contained string */
+void xbt_strbuff_free_container(xbt_strbuff_t b) {
+  free(b);
+}
+/** @brief frees the buffer and its content */
 void xbt_strbuff_free(xbt_strbuff_t b) {
   if (b) {
     if (b->data)
 void xbt_strbuff_free(xbt_strbuff_t b) {
   if (b) {
     if (b->data)