diff --git a/CMakeLists.txt b/CMakeLists.txt index 7397fe2..cb5911c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,10 +3,10 @@ cmake_minimum_required(VERSION 2.8.7) project(GSL CXX) set(GSL_HEADERS - "include/gsl.h" - "include/gsl_assert.h" - "include/span.h" - "include/string_span.h" + "gsl/gsl" + "gsl/gsl_assert" + "gsl/span" + "gsl/string_span" ) include_directories( diff --git a/README.md b/README.md index 3c440c2..58bb46c 100644 --- a/README.md +++ b/README.md @@ -6,10 +6,10 @@ This repo contains Microsoft's implementation of GSL. The library includes types like `span`, `string_span`, `owner<>` and others. -The entire implementation is provided inline in the headers under the [include](./include) directory. The implementation generally assumes a platform that implements C++14 support. There are specific workarounds to support MSVC 2013 and 2015. +The entire implementation is provided inline in the headers under the [gsl](./gsl) directory. The implementation generally assumes a platform that implements C++14 support. There are specific workarounds to support MSVC 2013 and 2015. -While some types have been broken out into their own headers (e.g. [include/span.h](./include/span.h)), -it is simplest to just include [gsl.h](./include/gsl.h) and gain access to the entire library. +While some types have been broken out into their own headers (e.g. [gsl/span](./gsl/span)), +it is simplest to just include [gsl/gsl](./gsl/gsl) and gain access to the entire library. > NOTE: We encourage contributions that improve or refine any of the types in this library as well as ports to other platforms. Please see [CONTRIBUTING.md](./CONTRIBUTING.md) for more information about contributing. @@ -66,5 +66,19 @@ All tests should pass - indicating your platform is fully supported and you are ## Using the libraries As the types are entirely implemented inline in headers, there are no linking requirements. -Just place the contents of the [include](./include) directory within your source tree so it is available -to your compiler, then include the appropriate headers in your program, and away you go! +You can copy the [gsl](./gsl) directory into your source tree so it is available +to your compiler, then include the appropriate headers in your program. + +Alternatively set your compiler's *include path* flag to point to the GSL development folder (`c:\GSL` in the example above) or installation folder (after running the install). Eg. + +MSVC++ + + /I c:\GSL + +GCC/clang + + -I$HOME/dev/GSL + +Include the library using: + + #include diff --git a/include/gsl.h b/gsl/gsl similarity index 94% rename from include/gsl.h rename to gsl/gsl index 8e00a44..656ebe0 100644 --- a/include/gsl.h +++ b/gsl/gsl @@ -19,11 +19,11 @@ #ifndef GSL_GSL_H #define GSL_GSL_H -#include "gsl_assert.h" // Ensures/Expects -#include "gsl_util.h" // finally()/narrow()/narrow_cast()... -#include "multi_span.h" // multi_span, strided_span... -#include "span.h" // span -#include "string_span.h" // zstring, string_span, zstring_builder... +#include "gsl_assert" // Ensures/Expects +#include "gsl_util" // finally()/narrow()/narrow_cast()... +#include "multi_span" // multi_span, strided_span... +#include "span" // span +#include "string_span" // zstring, string_span, zstring_builder... #include #ifdef _MSC_VER diff --git a/include/gsl_assert.h b/gsl/gsl_assert similarity index 100% rename from include/gsl_assert.h rename to gsl/gsl_assert diff --git a/include/gsl_byte.h b/gsl/gsl_byte similarity index 100% rename from include/gsl_byte.h rename to gsl/gsl_byte diff --git a/include/gsl_util.h b/gsl/gsl_util similarity index 98% rename from include/gsl_util.h rename to gsl/gsl_util index 92a795b..4a0dabe 100644 --- a/include/gsl_util.h +++ b/gsl/gsl_util @@ -19,7 +19,7 @@ #ifndef GSL_UTIL_H #define GSL_UTIL_H -#include "gsl_assert.h" // Ensures/Expects +#include "gsl_assert" // Ensures/Expects #include #include #include diff --git a/include/multi_span.h b/gsl/multi_span similarity index 99% rename from include/multi_span.h rename to gsl/multi_span index b31909d..5ddf6fa 100644 --- a/include/multi_span.h +++ b/gsl/multi_span @@ -19,9 +19,9 @@ #ifndef GSL_MULTI_SPAN_H #define GSL_MULTI_SPAN_H -#include "gsl_assert.h" -#include "gsl_byte.h" -#include "gsl_util.h" +#include "gsl_assert" +#include "gsl_byte" +#include "gsl_util" #include #include #include diff --git a/include/span.h b/gsl/span similarity index 99% rename from include/span.h rename to gsl/span index 5b2e427..3b8318d 100644 --- a/include/span.h +++ b/gsl/span @@ -20,9 +20,9 @@ #ifndef GSL_SPAN_H #define GSL_SPAN_H -#include "gsl_assert.h" -#include "gsl_byte.h" -#include "gsl_util.h" +#include "gsl_assert" +#include "gsl_byte" +#include "gsl_util" #include #include #include @@ -681,10 +681,13 @@ as_writeable_bytes(span s) noexcept #undef noexcept #ifdef _MSC_VER -#pragma warning(pop) #pragma pop_macro("noexcept") #endif #endif // GSL_THROW_ON_CONTRACT_VIOLATION +#ifdef _MSC_VER +#pragma warning(pop) +#endif + #endif // GSL_SPAN_H diff --git a/include/string_span.h b/gsl/string_span similarity index 99% rename from include/string_span.h rename to gsl/string_span index e18e07a..fa3d2ff 100644 --- a/include/string_span.h +++ b/gsl/string_span @@ -19,9 +19,9 @@ #ifndef GSL_STRING_SPAN_H #define GSL_STRING_SPAN_H -#include "gsl_assert.h" -#include "gsl_util.h" -#include "span.h" +#include "gsl_assert" +#include "gsl_util" +#include "span" #include #include #include diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 79931f7..3c3125e 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -9,7 +9,7 @@ endif() add_subdirectory(unittest-cpp) include_directories( - ../include + .. ./unittest-cpp ) @@ -33,7 +33,7 @@ else() endif() function(add_gsl_test name) - add_executable(${name} ${name}.cpp ../include/gsl.h ../include/gsl_assert.h ../include/gsl_util.h ../include/multi_span.h ../include/span.h ../include/string_span.h) + add_executable(${name} ${name}.cpp ../gsl/gsl ../gsl/gsl_assert ../gsl/gsl_util ../gsl/multi_span ../gsl/span ../gsl/string_span) target_link_libraries(${name} UnitTest++) install(TARGETS ${name} RUNTIME DESTINATION bin diff --git a/tests/assertion_tests.cpp b/tests/assertion_tests.cpp index acd381a..a251200 100644 --- a/tests/assertion_tests.cpp +++ b/tests/assertion_tests.cpp @@ -15,7 +15,7 @@ /////////////////////////////////////////////////////////////////////////////// #include -#include +#include using namespace gsl; diff --git a/tests/at_tests.cpp b/tests/at_tests.cpp index 1a9f814..008fddf 100644 --- a/tests/at_tests.cpp +++ b/tests/at_tests.cpp @@ -15,7 +15,7 @@ /////////////////////////////////////////////////////////////////////////////// #include -#include +#include #include #include diff --git a/tests/bounds_tests.cpp b/tests/bounds_tests.cpp index 736a85c..d10bf6d 100644 --- a/tests/bounds_tests.cpp +++ b/tests/bounds_tests.cpp @@ -15,7 +15,7 @@ /////////////////////////////////////////////////////////////////////////////// #include -#include +#include #include using namespace std; diff --git a/tests/byte_tests.cpp b/tests/byte_tests.cpp index 5d4e7f6..f2f8026 100644 --- a/tests/byte_tests.cpp +++ b/tests/byte_tests.cpp @@ -15,7 +15,7 @@ /////////////////////////////////////////////////////////////////////////////// #include -#include +#include #include #include diff --git a/tests/multi_span_tests.cpp b/tests/multi_span_tests.cpp index 003d236..f04ba84 100644 --- a/tests/multi_span_tests.cpp +++ b/tests/multi_span_tests.cpp @@ -15,7 +15,7 @@ /////////////////////////////////////////////////////////////////////////////// #include -#include +#include #include #include diff --git a/tests/notnull_tests.cpp b/tests/notnull_tests.cpp index 67b478a..526b074 100644 --- a/tests/notnull_tests.cpp +++ b/tests/notnull_tests.cpp @@ -15,7 +15,7 @@ /////////////////////////////////////////////////////////////////////////////// #include -#include +#include #include using namespace gsl; diff --git a/tests/owner_tests.cpp b/tests/owner_tests.cpp index 47c223a..6680981 100644 --- a/tests/owner_tests.cpp +++ b/tests/owner_tests.cpp @@ -15,7 +15,7 @@ /////////////////////////////////////////////////////////////////////////////// #include -#include +#include #include using namespace gsl; diff --git a/tests/span_tests.cpp b/tests/span_tests.cpp index 5e71410..05386b2 100644 --- a/tests/span_tests.cpp +++ b/tests/span_tests.cpp @@ -15,7 +15,7 @@ /////////////////////////////////////////////////////////////////////////////// #include -#include +#include #include #include diff --git a/tests/strided_span_tests.cpp b/tests/strided_span_tests.cpp index b81a5e7..86666d1 100644 --- a/tests/strided_span_tests.cpp +++ b/tests/strided_span_tests.cpp @@ -15,7 +15,7 @@ /////////////////////////////////////////////////////////////////////////////// #include -#include +#include #include #include diff --git a/tests/string_span_tests.cpp b/tests/string_span_tests.cpp index 876886a..7e623f3 100644 --- a/tests/string_span_tests.cpp +++ b/tests/string_span_tests.cpp @@ -16,8 +16,9 @@ #include #include -#include +#include #include +#include using namespace std; using namespace gsl; @@ -942,7 +943,13 @@ SUITE(string_span_tests) CHECK(*(str + 3) == L'\0'); } } + } + TEST(Issue305) + { + std::map, int> foo = { { "foo", 0 },{ "bar", 1 } }; + CHECK(foo["foo"] == 0); + CHECK(foo["bar"] == 1); } } diff --git a/tests/utils_tests.cpp b/tests/utils_tests.cpp index 11582de..9f4ba02 100644 --- a/tests/utils_tests.cpp +++ b/tests/utils_tests.cpp @@ -15,7 +15,7 @@ /////////////////////////////////////////////////////////////////////////////// #include -#include +#include #include using namespace gsl;