diff options
author | kpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b> | 2005-06-23 23:07:55 +0000 |
---|---|---|
committer | kpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b> | 2005-06-23 23:07:55 +0000 |
commit | 53c06ed2e84df9fa7d95038b341364de90a49524 (patch) | |
tree | 5addf8bd3b48b6a76a8a34d414b817c568d535ee | |
parent | a6f4e0fac75333eb32e4b471dabd388de02c33ad (diff) |
make inlinable functions only need the function body in one file, and respond properly to LOW_MEMORY being defined
make ast_copy_string inlinable, and ast_tvdiff_ms LOW_MEMORY aware
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@5992 f38db490-d61c-443f-a65b-d21fe96a405b
-rwxr-xr-x | include/asterisk/utils.h | 54 | ||||
-rwxr-xr-x | utils.c | 57 |
2 files changed, 48 insertions, 63 deletions
diff --git a/include/asterisk/utils.h b/include/asterisk/utils.h index 13ced53d2..854e73379 100755 --- a/include/asterisk/utils.h +++ b/include/asterisk/utils.h @@ -136,10 +136,13 @@ struct ast_hostent { \param str the input string \return a pointer to the first non-whitespace character */ -#ifdef LOW_MEMORY +#if defined(LOW_MEMORY) char *ast_skip_blanks(char *str); #else -static inline char *ast_skip_blanks(char *str) +static inline +#endif +#if !defined(LOW_MEMORY) || defined(AST_API_MODULE) +char *ast_skip_blanks(char *str) { while (*str && *str < 33) str++; @@ -152,10 +155,13 @@ static inline char *ast_skip_blanks(char *str) \param str the input string \return a pointer to the NULL following the string */ -#ifdef LOW_MEMORY +#if defined(LOW_MEMORY) char *ast_trim_blanks(char *str); #else -static inline char *ast_trim_blanks(char *str) +static inline +#endif +#if !defined(LOW_MEMORY) || defined(AST_API_MODULE) +char *ast_trim_blanks(char *str) { char *work = str; @@ -179,10 +185,13 @@ static inline char *ast_trim_blanks(char *str) \param str the input string \return a pointer to the first whitespace character */ -#ifdef LOW_MEMORY +#if defined(LOW_MEMORY) char *ast_skip_nonblanks(char *str); #else -static inline char *ast_skip_nonblanks(char *str) +static inline +#endif +#if !defined(LOW_MEMORY) || defined(AST_API_MODULE) +char *ast_skip_nonblanks(char *str) { while (*str && *str > 32) str++; @@ -199,10 +208,13 @@ static inline 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. */ -#ifdef LOW_MEMORY +#if defined(LOW_MEMORY) char *ast_strip(char *s); #else -static inline char *ast_strip(char *s) +static inline +#endif +#if !defined(LOW_MEMORY) || defined(AST_API_MODULE) +char *ast_strip(char *s) { s = ast_skip_blanks(s); if (s) @@ -301,7 +313,23 @@ extern char *ast_strcasestr(const char *, const char *); 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. */ +#if defined(LOW_MEMORY) void ast_copy_string(char *dst, const char *src, size_t size); +#else +static inline +#endif +#if !defined(LOW_MEMORY) || defined(AST_API_MODULE) +void ast_copy_string(char *dst, const char *src, size_t size) +{ + while (*src && size) { + *dst++ = *src++; + size--; + } + if (__builtin_expect(!size, 0)) + dst--; + *dst = '\0'; +} +#endif /*! \brief Build a string in a buffer, designed to be called repeatedly @@ -324,9 +352,17 @@ int ast_build_string(char **buffer, size_t *space, const char *fmt, ...) __attri * \param end the end of the time period * \return the difference in milliseconds */ -static inline int ast_tvdiff_ms(struct timeval *start, struct timeval *end) +#if defined(LOW_MEMORY) +int ast_tvdiff_ms(const struct timeval *start, const struct timeval *end); +#else +static inline +#endif +#if !defined(LOW_MEMORY) || defined(AST_API_MODULE) +int ast_tvdiff_ms(const struct timeval *start, const struct timeval *end) { return ((end->tv_sec - start->tv_sec) * 1000) + ((end->tv_usec - start->tv_usec) / 1000); } +#endif +#undef AST_API_MODULE #endif /* _ASTERISK_UTILS_H */ @@ -29,56 +29,16 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$") #include "asterisk/lock.h" -#include "asterisk/utils.h" #include "asterisk/io.h" #include "asterisk/logger.h" #include "asterisk/md5.h" +#define AST_API_MODULE /* ensure that inlinable API functions will be built in this module if required */ +#include "asterisk/utils.h" + static char base64[64]; static char b2a[256]; -#ifdef LOW_MEMORY -char *ast_skip_blanks(char *str) -{ - while (*str && *str < 33) - str++; - return str; -} - -char *ast_trim_blanks(char *str) -{ - char *work = str; - - if (work) { - work += strlen(work) - 1; - /* It's tempting to only want to erase after we exit this loop, - but since ast_trim_blanks *could* receive a constant string - (which we presumably wouldn't have to touch), we shouldn't - actually set anything unless we must, and it's easier just - to set each position to \0 than to keep track of a variable - for it */ - while ((work >= str) && *work < 33) - *(work--) = '\0'; - } - return str; -} - -char *ast_skip_nonblanks(char *str) -{ - while (*str && *str > 32) - str++; - return str; -} - -char *ast_strip(char *s) -{ - s = ast_skip_blanks(s); - if (s) - ast_trim_blanks(s); - return s; -} -#endif - char *ast_strip_quoted(char *s, const char *beg_quotes, const char *end_quotes) { char *e; @@ -473,17 +433,6 @@ int ast_wait_for_input(int fd, int ms) return poll(pfd, 1, ms); } -void ast_copy_string(char *dst, const char *src, size_t size) -{ - while (*src && size) { - *dst++ = *src++; - size--; - } - if (__builtin_expect(!size, 0)) - dst--; - *dst = '\0'; -} - int ast_build_string(char **buffer, size_t *space, const char *fmt, ...) { va_list ap; |