From 9064185bd8e29fef8110b89be7795ee977470ba0 Mon Sep 17 00:00:00 2001 From: Jonas 'Sortie' Termansen Date: Sun, 8 Jan 2012 20:17:27 +0100 Subject: [PATCH] Added memcmp(3). --- libmaxsi/c/hsrc/string.h | 2 +- libmaxsi/hsrc/memory.h | 13 +++++++------ libmaxsi/memory.cpp | 11 +++++++++++ 3 files changed, 19 insertions(+), 7 deletions(-) diff --git a/libmaxsi/c/hsrc/string.h b/libmaxsi/c/hsrc/string.h index ca773d6f..a0b734c4 100644 --- a/libmaxsi/c/hsrc/string.h +++ b/libmaxsi/c/hsrc/string.h @@ -33,6 +33,7 @@ __BEGIN_DECLS @include(size_t.h) @include(locale_t.h) +int memcmp(const void*, const void*, size_t); void* memcpy(void* restrict, const void* restrict, size_t); void* memset(void*, int, size_t); char* strcat(char* restrict, const char* restrict); @@ -46,7 +47,6 @@ int strncmp(const char*, const char*, size_t); #ifndef SORTIX_UNIMPLEMENTED void* memccpy(void* restrict, const void* restrict, int, size_t); void* memchr(const void*, int, size_t); -int memcmp(const void*, const void*, size_t); void* memmove(void*, const void*, size_t); char* stpcpy(char* restrict, const char* restrict); char* stpncpy(char* restrict, const char* restrict, size_t); diff --git a/libmaxsi/hsrc/memory.h b/libmaxsi/hsrc/memory.h index e93c4aea..1e906fb7 100644 --- a/libmaxsi/hsrc/memory.h +++ b/libmaxsi/hsrc/memory.h @@ -30,12 +30,13 @@ namespace Maxsi { namespace Memory { - void Init(); - void* Allocate(size_t Size); - void Free(void* Addr); - size_t GetChunkOverhead(); - void* Copy(void* Dest, const void* Src, size_t Length); - void* Set(void* Dest, int Value, size_t Length); + void Init(); + void* Allocate(size_t Size); + void Free(void* Addr); + size_t GetChunkOverhead(); + void* Copy(void* Dest, const void* Src, size_t Length); + void* Set(void* Dest, int Value, size_t Length); + int Compare(const void* a, const void* b, size_t size); } } diff --git a/libmaxsi/memory.cpp b/libmaxsi/memory.cpp index 30288b59..99a219d8 100644 --- a/libmaxsi/memory.cpp +++ b/libmaxsi/memory.cpp @@ -77,5 +77,16 @@ namespace Maxsi return Dest; } + + DUAL_FUNCTION(int, memcmp, Compare, (const void* a, const void* b, size_t size)) + { + const byte* buf1 = (const byte*) a; + const byte* buf2 = (const byte*) b; + for ( size_t i = 0; i < size; i++ ) + { + if ( buf1[i] != buf2[i] ) { return (int)(buf1[i]) - (int)(buf2[i]); } + } + return 0; + } } }