From b1d1ea87ff6111243bf4ef569d034682efd23894 Mon Sep 17 00:00:00 2001 From: Pablo Rincon Date: Sat, 24 Apr 2010 03:19:40 +0200 Subject: [PATCH] Moving inline functions to the .h files, so gcc can inline them correctly --- src/util-byte.c | 52 ++++++++++------------------------------------ src/util-byte.h | 55 ++++++++++++++++++++++++++++++++++++++----------- 2 files changed, 54 insertions(+), 53 deletions(-) diff --git a/src/util-byte.c b/src/util-byte.c index 121d822f87..fa81090d86 100644 --- a/src/util-byte.c +++ b/src/util-byte.c @@ -5,37 +5,7 @@ /** \todo: Remove the fprintf errors in favor of logging */ -int ByteExtract(uint64_t *res, int e, uint16_t len, const uint8_t *bytes) -{ - uint64_t b = 0; - int i; - - if ((e != BYTE_BIG_ENDIAN) && (e != BYTE_LITTLE_ENDIAN)) { - /** \todo Need standard return values */ - return -1; - } - - *res = 0; - - /* Go through each byte and merge it into the result in the correct order */ - /** \todo Probably a more efficient way to do this. */ - for (i = 0; i < len; i++) { - - if (e == BYTE_LITTLE_ENDIAN) { - b = bytes[i]; - } - else { - b = bytes[len - i - 1]; - } - - *res |= (b << ((i & 7) << 3)); - - } - - return len; -} - -inline int ByteExtractUint64(uint64_t *res, int e, uint16_t len, const uint8_t *bytes) +int ByteExtractUint64(uint64_t *res, int e, uint16_t len, const uint8_t *bytes) { uint64_t i64; int ret; @@ -56,7 +26,7 @@ inline int ByteExtractUint64(uint64_t *res, int e, uint16_t len, const uint8_t * return ret; } -inline int ByteExtractUint32(uint32_t *res, int e, uint16_t len, const uint8_t *bytes) +int ByteExtractUint32(uint32_t *res, int e, uint16_t len, const uint8_t *bytes) { uint64_t i64; int ret; @@ -77,7 +47,7 @@ inline int ByteExtractUint32(uint32_t *res, int e, uint16_t len, const uint8_t * return ret; } -inline int ByteExtractUint16(uint16_t *res, int e, uint16_t len, const uint8_t *bytes) +int ByteExtractUint16(uint16_t *res, int e, uint16_t len, const uint8_t *bytes) { uint64_t i64; int ret; @@ -152,12 +122,12 @@ int ByteExtractString(uint64_t *res, int base, uint16_t len, const char *str) return (endptr - ptr); } -inline int ByteExtractStringUint64(uint64_t *res, int base, uint16_t len, const char *str) +int ByteExtractStringUint64(uint64_t *res, int base, uint16_t len, const char *str) { return ByteExtractString(res, base, len, str); } -inline int ByteExtractStringUint32(uint32_t *res, int base, uint16_t len, const char *str) +int ByteExtractStringUint32(uint32_t *res, int base, uint16_t len, const char *str) { uint64_t i64; int ret; @@ -178,7 +148,7 @@ inline int ByteExtractStringUint32(uint32_t *res, int base, uint16_t len, const return ret; } -inline int ByteExtractStringUint16(uint16_t *res, int base, uint16_t len, const char *str) +int ByteExtractStringUint16(uint16_t *res, int base, uint16_t len, const char *str) { uint64_t i64; int ret; @@ -199,7 +169,7 @@ inline int ByteExtractStringUint16(uint16_t *res, int base, uint16_t len, const return ret; } -inline int ByteExtractStringUint8(uint8_t *res, int base, uint16_t len, const char *str) +int ByteExtractStringUint8(uint8_t *res, int base, uint16_t len, const char *str) { uint64_t i64; int ret; @@ -271,12 +241,12 @@ int ByteExtractStringSigned(int64_t *res, int base, uint16_t len, const char *st return (endptr - ptr); } -inline int ByteExtractStringInt64(int64_t *res, int base, uint16_t len, const char *str) +int ByteExtractStringInt64(int64_t *res, int base, uint16_t len, const char *str) { return ByteExtractStringSigned(res, base, len, str); } -inline int ByteExtractStringInt32(int32_t *res, int base, uint16_t len, const char *str) +int ByteExtractStringInt32(int32_t *res, int base, uint16_t len, const char *str) { int64_t i64; int ret; @@ -297,7 +267,7 @@ inline int ByteExtractStringInt32(int32_t *res, int base, uint16_t len, const ch return ret; } -inline int ByteExtractStringInt16(int16_t *res, int base, uint16_t len, const char *str) +int ByteExtractStringInt16(int16_t *res, int base, uint16_t len, const char *str) { int64_t i64; int ret; @@ -318,7 +288,7 @@ inline int ByteExtractStringInt16(int16_t *res, int base, uint16_t len, const ch return ret; } -inline int ByteExtractStringInt8(int8_t *res, int base, uint16_t len, const char *str) +int ByteExtractStringInt8(int8_t *res, int base, uint16_t len, const char *str) { int64_t i64; int ret; diff --git a/src/util-byte.h b/src/util-byte.h index ee54ffb1ec..b07f23e6d9 100644 --- a/src/util-byte.h +++ b/src/util-byte.h @@ -72,7 +72,7 @@ int ByteExtractUint64(uint64_t *res, int e, uint16_t len, const uint8_t *bytes); * \return n Number of bytes extracted on success * \return -1 On error */ -inline int ByteExtractUint32(uint32_t *res, int e, uint16_t len, const uint8_t *bytes); +int ByteExtractUint32(uint32_t *res, int e, uint16_t len, const uint8_t *bytes); /** * Extract bytes from a byte string and convert to a unint16_t. @@ -85,7 +85,7 @@ inline int ByteExtractUint32(uint32_t *res, int e, uint16_t len, const uint8_t * * \return n Number of bytes extracted on success * \return -1 On error */ -inline int ByteExtractUint16(uint16_t *res, int e, uint16_t len, const uint8_t *bytes); +int ByteExtractUint16(uint16_t *res, int e, uint16_t len, const uint8_t *bytes); /** * Extract unsigned integer value from a string. @@ -98,7 +98,7 @@ inline int ByteExtractUint16(uint16_t *res, int e, uint16_t len, const uint8_t * * \return n Number of bytes extracted on success * \return -1 On error */ -inline int ByteExtractString(uint64_t *res, int base, uint16_t len, const char *str); +int ByteExtractString(uint64_t *res, int base, uint16_t len, const char *str); /** * Extract unsigned integer value from a string as uint64_t. @@ -112,7 +112,7 @@ inline int ByteExtractString(uint64_t *res, int base, uint16_t len, const char * * \return n Number of bytes extracted on success * \return -1 On error */ -inline int ByteExtractStringUint64(uint64_t *res, int base, uint16_t len, const char *str); +int ByteExtractStringUint64(uint64_t *res, int base, uint16_t len, const char *str); /** * Extract unsigned integer value from a string as uint32_t. @@ -125,7 +125,7 @@ inline int ByteExtractStringUint64(uint64_t *res, int base, uint16_t len, const * \return n Number of bytes extracted on success * \return -1 On error */ -inline int ByteExtractStringUint32(uint32_t *res, int base, uint16_t len, const char *str); +int ByteExtractStringUint32(uint32_t *res, int base, uint16_t len, const char *str); /** * Extract unsigned integer value from a string as uint16_t. @@ -138,7 +138,7 @@ inline int ByteExtractStringUint32(uint32_t *res, int base, uint16_t len, const * \return n Number of bytes extracted on success * \return -1 On error */ -inline int ByteExtractStringUint16(uint16_t *res, int base, uint16_t len, const char *str); +int ByteExtractStringUint16(uint16_t *res, int base, uint16_t len, const char *str); /** * Extract unsigned integer value from a string as uint8_t. @@ -151,7 +151,7 @@ inline int ByteExtractStringUint16(uint16_t *res, int base, uint16_t len, const * \return n Number of bytes extracted on success * \return -1 On error */ -inline int ByteExtractStringUint8(uint8_t *res, int base, uint16_t len, const char *str); +int ByteExtractStringUint8(uint8_t *res, int base, uint16_t len, const char *str); /** * Extract signed integer value from a string. @@ -164,7 +164,7 @@ inline int ByteExtractStringUint8(uint8_t *res, int base, uint16_t len, const ch * \return n Number of bytes extracted on success * \return -1 On error */ -inline int ByteExtractStringSigned(int64_t *res, int base, uint16_t len, const char *str); +int ByteExtractStringSigned(int64_t *res, int base, uint16_t len, const char *str); /** * Extract signed integer value from a string as uint64_t. @@ -177,7 +177,7 @@ inline int ByteExtractStringSigned(int64_t *res, int base, uint16_t len, const c * \return n Number of bytes extracted on success * \return -1 On error */ -inline int ByteExtractStringInt64(int64_t *res, int base, uint16_t len, const char *str); +int ByteExtractStringInt64(int64_t *res, int base, uint16_t len, const char *str); /** * Extract signed integer value from a string as uint32_t. @@ -190,7 +190,7 @@ inline int ByteExtractStringInt64(int64_t *res, int base, uint16_t len, const ch * \return n Number of bytes extracted on success * \return -1 On error */ -inline int ByteExtractStringInt32(int32_t *res, int base, uint16_t len, const char *str); +int ByteExtractStringInt32(int32_t *res, int base, uint16_t len, const char *str); /** * Extract signed integer value from a string as uint16_t. @@ -203,7 +203,7 @@ inline int ByteExtractStringInt32(int32_t *res, int base, uint16_t len, const ch * \return n Number of bytes extracted on success * \return -1 On error */ -inline int ByteExtractStringInt16(int16_t *res, int base, uint16_t len, const char *str); +int ByteExtractStringInt16(int16_t *res, int base, uint16_t len, const char *str); /** * Extract signed integer value from a string as uint8_t. @@ -216,12 +216,43 @@ inline int ByteExtractStringInt16(int16_t *res, int base, uint16_t len, const ch * \return n Number of bytes extracted on success * \return -1 On error */ -inline int ByteExtractStringInt8(int8_t *res, int base, uint16_t len, const char *str); +int ByteExtractStringInt8(int8_t *res, int base, uint16_t len, const char *str); #ifdef UNITTESTS void ByteRegisterTests(void); #endif /* UNITTESTS */ +/** ------ Inline functions ----- */ +static inline int ByteExtract(uint64_t *res, int e, uint16_t len, const uint8_t *bytes) +{ + uint64_t b = 0; + int i; + + if ((e != BYTE_BIG_ENDIAN) && (e != BYTE_LITTLE_ENDIAN)) { + /** \todo Need standard return values */ + return -1; + } + + *res = 0; + + /* Go through each byte and merge it into the result in the correct order */ + /** \todo Probably a more efficient way to do this. */ + for (i = 0; i < len; i++) { + + if (e == BYTE_LITTLE_ENDIAN) { + b = bytes[i]; + } + else { + b = bytes[len - i - 1]; + } + + *res |= (b << ((i & 7) << 3)); + + } + + return len; +} + #endif /* __UTIL_BYTE_H__ */