From 063962cae0dead938889d79ef51c693b6c9c306a Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Tue, 11 Dec 2012 20:12:25 -0600 Subject: [PATCH] add switch_toupper_max to uppercase a string 4 bytes at a time with new switch_toupper function --- src/include/switch_utils.h | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/src/include/switch_utils.h b/src/include/switch_utils.h index 92618a81d5..b23ebf5445 100644 --- a/src/include/switch_utils.h +++ b/src/include/switch_utils.h @@ -51,6 +51,37 @@ static inline uint32_t switch_toupper(uint32_t eax) return eax - ebx; } + +static inline void switch_toupper_max(char *s) +{ + uint32_t *b,*p; + char *c; + size_t l; + int div = 0, rem = 0; + int i; + + l = strlen(s); + div = l / 4; + rem = l % 4; + + p = (uint32_t *) s; + + for (i = 0; i < div; i++) { + b = p; + *b = (uint32_t) switch_toupper(*b); + b++; + p++; + } + + c = (char *)p; + + for (i = 0; i < rem; i++) { + *c = (char) switch_toupper(*c); + c++; + } +} + + SWITCH_DECLARE(int) old_switch_toupper(int c); SWITCH_DECLARE(int) switch_tolower(int c); SWITCH_DECLARE(int) switch_isalnum(int c);