From e4c7e04230baf56def5826fa5d8d88547d8c68af Mon Sep 17 00:00:00 2001 From: =?utf8?q?=EB=B0=95=EC=A2=85=ED=98=84/=EB=8F=99=EC=9E=91=EC=A0=9C?= =?utf8?q?=EC=96=B4Lab=28SR=29/Staff=20Engineer/=EC=82=BC=EC=84=B1?= =?utf8?q?=EC=A0=84=EC=9E=90?= Date: Mon, 9 Jul 2018 13:43:48 +0900 Subject: [PATCH] Add 'stdex' project (#562) This commit introduces 'stdex' project which provides an extension over standard C++ libraries. The current version includes diff operator overloading over two sets. Signed-off-by: Jonghyun Park * Use set instead of Set.h --- contrib/stdex/.FORMATCHECKED | 0 contrib/stdex/CMakeLists.txt | 15 +++++++++++++++ contrib/stdex/include/stdex/set | 21 +++++++++++++++++++++ contrib/stdex/src/Set.test.cpp | 15 +++++++++++++++ 4 files changed, 51 insertions(+) create mode 100644 contrib/stdex/.FORMATCHECKED create mode 100644 contrib/stdex/CMakeLists.txt create mode 100644 contrib/stdex/include/stdex/set create mode 100644 contrib/stdex/src/Set.test.cpp diff --git a/contrib/stdex/.FORMATCHECKED b/contrib/stdex/.FORMATCHECKED new file mode 100644 index 0000000..e69de29 diff --git a/contrib/stdex/CMakeLists.txt b/contrib/stdex/CMakeLists.txt new file mode 100644 index 0000000..9e9a787 --- /dev/null +++ b/contrib/stdex/CMakeLists.txt @@ -0,0 +1,15 @@ +file(GLOB_RECURSE TESTS "src/*.test.cpp") + +add_library(stdex INTERFACE) +target_include_directories(stdex INTERFACE include) + +nncc_find_package(GTest QUIET) + +if(NOT GTest_FOUND) + return() +endif(NOT GTest_FOUND) + +add_executable(stdex_test ${TESTS}) +target_link_libraries(stdex_test stdex) +target_link_libraries(stdex_test gtest_main) +add_test(stdex_test stdex_test) diff --git a/contrib/stdex/include/stdex/set b/contrib/stdex/include/stdex/set new file mode 100644 index 0000000..0273935 --- /dev/null +++ b/contrib/stdex/include/stdex/set @@ -0,0 +1,21 @@ +#ifndef __STDEX_SET_H__ +#define __STDEX_SET_H__ + +#include + +template std::set operator-(const std::set &lhs, const std::set &rhs) +{ + std::set res; + + for (const auto &element : lhs) + { + if (rhs.find(element) == rhs.end()) + { + res.insert(element); + } + } + + return res; +} + +#endif // __STDEX_SET_H__ diff --git a/contrib/stdex/src/Set.test.cpp b/contrib/stdex/src/Set.test.cpp new file mode 100644 index 0000000..689a261 --- /dev/null +++ b/contrib/stdex/src/Set.test.cpp @@ -0,0 +1,15 @@ +#include "stdex/set" + +#include + +TEST(SET, operator_diff) +{ + const std::set lhs{1, 2, 3}; + const std::set rhs{2, 4}; + + auto res = lhs - rhs; + + ASSERT_EQ(res.size(), 2); + ASSERT_NE(res.find(1), res.end()); + ASSERT_NE(res.find(3), res.end()); +} -- 2.7.4