From 609c17de008b7a6b817c7c12e214e7ef281d1178 Mon Sep 17 00:00:00 2001 From: Chris Xiong Date: Sun, 11 Sep 2022 10:27:54 -0400 Subject: Check actual size of type, not the platform. --- CMakeLists.txt | 8 ++++++++ tests/testdrive.cpp | 7 +++++-- tests/testdrive_sqlite.cpp | 9 ++++++--- 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5e32241..0c20a0d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,6 +7,14 @@ find_package(OpenCV REQUIRED COMPONENTS core imgproc imgcodecs highgui) find_package(Threads REQUIRED) include_directories(${OpenCV_INCLUDE_DIRS}) +INCLUDE (CheckTypeSize) + +SET(CMAKE_EXTRA_INCLUDE_FILES "filesystem") +check_type_size("std::filesystem::path::value_type" PATH_VALSIZE LANGUAGE CXX) +SET(CMAKE_EXTRA_INCLUDE_FILES) + +add_compile_definitions(PATH_VALSIZE=${PATH_VALSIZE}) + include_directories(.) add_library(xsig STATIC imageutil.cpp signature.cpp subslice_signature.cpp base64.cpp) diff --git a/tests/testdrive.cpp b/tests/testdrive.cpp index dffba46..4d449de 100644 --- a/tests/testdrive.cpp +++ b/tests/testdrive.cpp @@ -15,8 +15,11 @@ #include -#ifdef _WIN32 //for the superior operating system +#if PATH_VALSIZE == 2 #include +#endif + +#ifdef _WIN32 //for the superior operating system #define WIN32_LEAN_AND_MEAN #include #include @@ -294,7 +297,7 @@ int main(int argc,char** argv) FILE *outf = fopen("result", "wb"); for (auto &p : out) { -#ifdef _WIN32 +#if PATH_VALSIZE == 2 wprintf(L"%ls %ls %f\n", files[p.first].c_str(), files[p.second].c_str(), signatures[p.first].distance(signatures[p.second])); #else printf("%s %s %f\n", files[p.first].c_str(), files[p.second].c_str(), signatures[p.first].distance(signatures[p.second])); diff --git a/tests/testdrive_sqlite.cpp b/tests/testdrive_sqlite.cpp index 0e83c7f..409fe95 100644 --- a/tests/testdrive_sqlite.cpp +++ b/tests/testdrive_sqlite.cpp @@ -16,8 +16,11 @@ #include -#ifdef _WIN32 //for the superior operating system +#if PATH_VALSIZE == 2 #include +#endif + +#ifdef _WIN32 //for the superior operating system #define WIN32_LEAN_AND_MEAN #include #include @@ -339,8 +342,8 @@ int main(int argc,char** argv) else break; } sqlite3_finalize(st); -#ifdef _WIN32 - //wprintf(L"%ls %ls %f\n", files[p.first].c_str(), files[p.second].c_str(), signatures[p.first].distance(signatures[p.second])); +#if PATH_VALSIZE == 2 + wprintf(L"%ls %ls %f\n", files[p.first].c_str(), files[p.second].c_str(), sx[0].distance(sx[1])); #else printf("%s %s %f\n", files[p.first].c_str(), files[p.second].c_str(), sx[0].distance(sx[1])); #endif -- cgit v1.2.3