Add ox_memcmp.

This commit is contained in:
2017-04-06 04:59:53 -05:00
parent 895e79d345
commit 4aa233d664
5 changed files with 68 additions and 0 deletions
+4
View File
@@ -15,3 +15,7 @@ install(
DESTINATION
include/ox/std
)
if(OX_BUILD_EXEC STREQUAL "ON")
add_subdirectory(test)
endif()
+16
View File
@@ -7,6 +7,22 @@
*/
#include "memops.hpp"
int ox_memcmp(const void *ptr1, const void *ptr2, size_t size) {
int retval = 0;
auto block1 = ((uint8_t*) ptr1);
auto block2 = ((uint8_t*) ptr2);
for (size_t i = 0; i < size; i++) {
if (block1[i] < block2[i]) {
retval = -1;
break;
} else if (block1[i] > block2[i]) {
retval = 1;
break;
}
}
return retval;
}
void *ox_memcpy(void *dest, const void *src, int64_t size) {
char *srcBuf = (char*) src;
char *dstBuf = (char*) dest;
+2
View File
@@ -9,6 +9,8 @@
#include "types.hpp"
int ox_memcmp(const void *ptr1, const void *ptr2, size_t size);
void *ox_memcpy(void *src, const void *dest, int64_t size);
void *ox_memset(void *ptr, int val, int64_t size);
+10
View File
@@ -0,0 +1,10 @@
cmake_minimum_required(VERSION 2.8)
add_executable(
StdTest
tests.cpp
)
target_link_libraries(StdTest OxStd)
add_test("Test\\ ox_memcmp" StdTest "ox_memcmp")
+36
View File
@@ -0,0 +1,36 @@
/*
* Copyright 2015 - 2016 gtalent2@gmail.com
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
#include <iostream>
#include <map>
#include <functional>
#include <ox/std/std.hpp>
::std::map<std::string, std::function<int()>> tests = {
{
"ox_memcmp",
[]() {
int success = 1;
const char *data1 = "ABCDEFG";
const char *data2 = "HIJKLMN";
success &= ox_memcmp(data1, data2, 7) < 0;
success &= ox_memcmp(data2, data1, 7) > 0;
success &= ox_memcmp(data1, data1, 7) == 0;
return !success;
}
}
};
int main(int argc, const char **args) {
if (argc > 1) {
auto testName = args[1];
if (tests.find(testName) != tests.end()) {
return tests[testName]();
}
}
return -1;
}