move strtoq into new string files (bug #4740)
[asterisk/asterisk.git] / include / asterisk / strings.h
index eee85a5..b20a307 100755 (executable)
@@ -14,6 +14,7 @@
 
 #include <string.h>
 
+#include "asterisk/inline_api.h"
 #include "asterisk/compiler.h"
 
 static inline int ast_strlen_zero(const char *s)
@@ -26,30 +27,22 @@ static inline int ast_strlen_zero(const char *s)
   \param str the input string
   \return a pointer to the first non-whitespace character
  */
-char *ast_skip_blanks(char *str);
-#if !defined(LOW_MEMORY) && !defined(AST_API_MODULE)
-extern inline
-#endif
-#if !defined(LOW_MEMORY) || defined(AST_API_MODULE)
-char *ast_skip_blanks(char *str)
+AST_INLINE_API(
+char *ast_skip_blanks(char *str),
 {
        while (*str && *str < 33)
                str++;
        return str;
 }
-#endif
+)
 
 /*!
   \brief Trims trailing whitespace characters from a string.
   \param str the input string
   \return a pointer to the NULL following the string
  */
-char *ast_trim_blanks(char *str);
-#if !defined(LOW_MEMORY) && !defined(AST_API_MODULE)
-extern inline
-#endif
-#if !defined(LOW_MEMORY) || defined(AST_API_MODULE)
-char *ast_trim_blanks(char *str)
+AST_INLINE_API(
+char *ast_trim_blanks(char *str),
 {
        char *work = str;
 
@@ -66,25 +59,21 @@ char *ast_trim_blanks(char *str)
        }
        return str;
 }
-#endif
+)
 
 /*!
   \brief Gets a pointer to first whitespace character in a string.
   \param str the input string
   \return a pointer to the first whitespace character
  */
-char *ast_skip_nonblanks(char *str);
-#if !defined(LOW_MEMORY) && !defined(AST_API_MODULE)
-extern inline
-#endif
-#if !defined(LOW_MEMORY) || defined(AST_API_MODULE)
-char *ast_skip_nonblanks(char *str)
+AST_INLINE_API(
+char *ast_skip_nonblanks(char *str),
 {
        while (*str && *str > 32)
                str++;
        return str;
 }
-#endif
+)
   
 /*!
   \brief Strip leading/trailing whitespace from a string.
@@ -95,19 +84,15 @@ char *ast_skip_nonblanks(char *str)
   characters from the input string, and returns a pointer to
   the resulting string. The string is modified in place.
 */
-char *ast_strip(char *s);
-#if !defined(LOW_MEMORY) && !defined(AST_API_MODULE)
-extern inline
-#endif
-#if !defined(LOW_MEMORY) || defined(AST_API_MODULE)
-char *ast_strip(char *s)
+AST_INLINE_API(
+char *ast_strip(char *s),
 {
        s = ast_skip_blanks(s);
        if (s)
                ast_trim_blanks(s);
        return s;
 } 
-#endif
+)
 
 /*!
   \brief Strip leading/trailing whitespace and quotes from a string.
@@ -150,12 +135,8 @@ char *ast_strip_quoted(char *s, const char *beg_quotes, const char *end_quotes);
   reduced buffer size to this function (unlike \a strncpy), and the buffer does not need
   to be initialized to zeroes prior to calling this function.
 */
-void ast_copy_string(char *dst, const char *src, size_t size);
-#if !defined(LOW_MEMORY) && !defined(AST_API_MODULE)
-extern inline
-#endif
-#if !defined(LOW_MEMORY) || defined(AST_API_MODULE)
-void ast_copy_string(char *dst, const char *src, size_t size)
+AST_INLINE_API(
+void ast_copy_string(char *dst, const char *src, size_t size),
 {
        while (*src && size) {
                *dst++ = *src++;
@@ -165,7 +146,7 @@ void ast_copy_string(char *dst, const char *src, size_t size)
                dst--;
        *dst = '\0';
 }
-#endif
+)
 
 /*!
   \brief Build a string in a buffer, designed to be called repeatedly
@@ -216,11 +197,43 @@ struct ast_realloca {
                (ra)->ptr; \
        })
 
+#define HAVE_VASPRINTF
+#define HAVE_STRTOQ
+
 #ifdef __linux__
-#define ast_strcasestr strcasestr
-#else
-extern char *ast_strcasestr(const char *, const char *);
-#endif /* __linux__ */
+#define HAVE_STRCASESTR
+#define HAVE_STRNDUP
+#define HAVE_STRNLEN
+#endif
+
+#ifdef SOLARIS
+#undef HAVE_VASPRINTF
+#undef HAVE_STRTOQ
+#endif
+
+#ifdef __CYGWIN__
+#undef HAVE_STRTOQ
+typedef unsigned long long uint64_t;
+#endif
+
+#ifndef HAVE_STRCASESTR
+char *strcasestr(const char *, const char *);
+#endif
+
+#ifndef HAVE_STRNDUP
+char *strndup(const char *, size_t);
+#endif
+
+#ifndef HAVE_STRNLEN
+size_t strnlen(const char *, size_t);
+#endif
+
+#ifndef HAVE_VASPRINTF
+int vasprintf(char **strp, const char *fmt, va_list ap);
+#endif
+
+#ifndef HAVE_STRTOQ
+uint64_t strtoq(const char *nptr, char **endptr, int base);
+#endif
 
-#undef AST_API_MODULE
 #endif /* _ASTERISK_STRINGS_H */