Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
document xbt_str
authormquinson <mquinson@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Mon, 4 Jun 2007 13:53:03 +0000 (13:53 +0000)
committermquinson <mquinson@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Mon, 4 Jun 2007 13:53:03 +0000 (13:53 +0000)
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@3553 48e7efb5-ca39-0410-a469-dd3cf9ba447f

doc/module-xbt.doc
include/xbt/str.h
src/xbt/xbt_str.c

index 61ffc47..6717156 100644 (file)
@@ -3,6 +3,7 @@
    The XBT functionalities fall into several categories:
     - Portability support
       - \ref XBT_syscall
+      - \ref XBT_str
     - Grounding features
       - \ref XBT_ex
       - \ref XBT_log
@@ -37,6 +38,7 @@
   @{ */
 
      /** @defgroup XBT_syscall Malloc and friends */
+     /** @defgroup XBT_str     String related functions */
      /** @defgroup XBT_ex     Exception support */
      /** @defgroup XBT_log    Logging support */
      /** @defgroup XBT_error  Assert macro familly */
index dbb5f80..0b4cb72 100644 (file)
@@ -11,8 +11,6 @@
 #include "xbt/misc.h"
 #include "xbt/dynar.h"
 
-
-
 #ifndef XBT_STR_H
 #define XBT_STR_H
 
 
 SG_BEGIN_DECL()
 
+/** @addtogroup XBT_str
+ *  @brief String manipulation functions
+ * 
+ * This module defines several string related functions. We redefine some quite classical 
+ * functions on the platforms were they are not nativaly defined (such as getline() or 
+ * asprintf()), while some other are a bit more exotic. 
+ * @{
+ */
+  
 /* snprintf related functions */
+/** @brief print to allocated string (reimplemented when not provided by the system)
+ * 
+ * The functions asprintf() and vasprintf() are analogues of
+ * sprintf() and vsprintf(), except that they allocate a string large
+ * enough to hold the output including the terminating null byte, and
+ * return a pointer to it via the first parameter.  This pointer
+ * should be passed to free(3) to release the allocated storage when
+ * it is no longer needed.
+ */
 XBT_PUBLIC(int) asprintf  (char **ptr, const char *fmt, /*args*/ ...) _XBT_GNUC_PRINTF(2,3);
+/** @brief print to allocated string (reimplemented when not provided by the system)
+ * 
+ * See asprintf()
+ */
 XBT_PUBLIC(int) vasprintf (char **ptr, const char *fmt, va_list ap);
+/** @brief print to allocated string
+ * 
+ * Works just like asprintf(), but returns a pointer to the newly created string
+ */
 XBT_PUBLIC(char*) bprintf   (const char*fmt, ...) _XBT_GNUC_PRINTF(1,2);
 
 /* the gettext function. It gets redefined here only if not yet available */
-#if defined(_WIN32) || !defined(__GNUC__)
+#if defined(_WIN32) || !defined(__GNUC__) || defined(DOXYGEN)
 XBT_PUBLIC(long) getline(char **lineptr, size_t *n, FILE *stream);
 #endif
 
@@ -44,6 +68,8 @@ XBT_PUBLIC(char *) xbt_str_join(xbt_dynar_t dynar, const char *sep);
 XBT_PUBLIC(void) xbt_str_strip_spaces(char *);
 XBT_PUBLIC(char *) xbt_str_diff(char *a, char *b);
 
+/**@}*/
+
 SG_END_DECL()
 
 #endif /* XBT_STR_H */
index a949895..811f1d9 100644 (file)
@@ -7,12 +7,6 @@
 /* This program is free software; you can redistribute it and/or modify it
  * under the terms of the license (GNU LGPL) which comes with this package. 
  */
-
-/* Returns the string without leading whitespaces (xbt_str_ltrim), 
- * trailing whitespaces (xbt_str_rtrim),
- * or both leading and trailing whitespaces (xbt_str_trim). 
- * (in-place modification of the string)
- */
   
 #include "xbt/misc.h"
 #include "xbt/sysdep.h"
@@ -260,7 +254,22 @@ char *xbt_str_join(xbt_dynar_t dyn, const char*sep) {
   return res;
 }
    
-#ifndef HAVE_GETLINE
+#if !defined(HAVE_GETLINE) || defined(DOXYGEN)
+/** @brief Get a single line from the stream (reimplementation of the GNU getline)
+ * 
+ * This is a redefinition of the GNU getline function, used on platforms where it does not exists.
+ * 
+ * getline() reads an entire line from stream, storing the address of the buffer 
+ * containing the text into *buf.  The buffer is null-terminated and includes 
+ * the newline character, if one was found.
+ * 
+ * If *buf is NULL, then getline() will allocate a buffer for storing the line, 
+ * which should be freed by the user program.  Alternatively, before calling getline(), 
+ * *buf can contain a pointer to a malloc()-allocated buffer *n bytes in size.  If the buffer 
+ * is not large enough to hold the line, getline() resizes it with realloc(), updating *buf and *n 
+ * as necessary.  In either case, on a successful call, *buf and *n will be updated to 
+ * reflect the buffer address and allocated size respectively.
+ */
 long getline(char **buf, size_t *n, FILE *stream) {
    
    int i, ch;