aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJordan Maples [MSFT] <49793787+JordanMaples@users.noreply.github.com>2020-08-13 09:34:31 -0700
committerGitHub <noreply@github.com>2020-08-13 09:34:31 -0700
commit83ce710d6c0719c4692ea6f79fe566db68ce497b (patch)
treec30e9b879145f1fc580102d4ece80e4d98ad5129
parentec471abe44ec5e7d75dbc60b63970e42e91ccee3 (diff)
parentdad3d80c2582acc1ff26401f81c4093656eaadeb (diff)
downloadplatform_external_Microsoft-GSL-83ce710d6c0719c4692ea6f79fe566db68ce497b.tar.gz
platform_external_Microsoft-GSL-83ce710d6c0719c4692ea6f79fe566db68ce497b.tar.bz2
platform_external_Microsoft-GSL-83ce710d6c0719c4692ea6f79fe566db68ce497b.zip
Merge pull request #807 from kuzkry/implemented_features
Add a table of features
-rw-r--r--README.md67
1 files changed, 65 insertions, 2 deletions
diff --git a/README.md b/README.md
index 99a0d34..54b3fb5 100644
--- a/README.md
+++ b/README.md
@@ -5,8 +5,6 @@ The Guidelines Support Library (GSL) contains functions and types that are sugge
[C++ Core Guidelines](https://github.com/isocpp/CppCoreGuidelines) maintained by the [Standard C++ Foundation](https://isocpp.org).
This repo contains Microsoft's implementation of GSL.
-The library includes types like `span<T>`, `string_span`, `owner<>` and others.
-
The entire implementation is provided inline in the headers under the [gsl](./include/gsl) directory. The implementation generally assumes a platform that implements C++14 support.
While some types have been broken out into their own headers (e.g. [gsl/span](./include/gsl/span)),
@@ -21,6 +19,71 @@ This project has adopted the [Microsoft Open Source Code of Conduct](https://ope
# Usage of Third Party Libraries
This project makes use of the [Google Test](https://github.com/google/googletest) testing library. Please see the [ThirdPartyNotices.txt](./ThirdPartyNotices.txt) file for details regarding the licensing of Google Test.
+# Supported features
+## Microsoft GSL implements the following from the C++ Core Guidelines:
+
+Feature | Supported? | Description
+-----------------------------------|:----------:|-------------
+[**1. Views**][cg-views] | |
+owner | &#x2611; | an alias for a raw pointer
+not_null | &#x2611; | restricts a pointer / smart pointer to hold non-null values
+strict_not_null | &#x2611; | a stricter version of `not_null` with explicit constructors
+span | &#x2611; | a view over a contiguous sequence of memory. Based on the standardized verison of `std::span`, however `gsl::span` enforces bounds checking.
+span_p | &#x2610; | spans a range starting from a pointer to the first place for which the predicate is true
+basic_zstring | &#x2611; | a pointer to a C-string (zero-terminated array) with a templated char type
+zstring | &#x2611; | an alias to `basic_zstring` with a char type of char
+czstring | &#x2611; | an alias to `basic_zstring` with a char type of const char
+wzstring | &#x2611; | an alias to `basic_zstring` with a char type of wchar_t
+cwzstring | &#x2611; | an alias to `basic_zstring` with a char type of const wchar_t
+u16zstring | &#x2611; | an alias to `basic_zstring` with a char type of char16_t
+cu16zstring | &#x2611; | an alias to `basic_zstring` with a char type of const char16_t
+u32zstring | &#x2611; | an alias to `basic_zstring` with a char type of char32_t
+cu32zstring | &#x2611; | an alias to `basic_zstring` with a char type of const char32_t
+basic_string_span | &#x2611; | like `span` but for strings with a templated char type
+string_span | &#x2611; | an alias to `basic_string_span` with a char type of char
+cstring_span | &#x2611; | an alias to `basic_string_span` with a char type of const char
+wstring_span | &#x2611; | an alias to `basic_string_span` with a char type of wchar_t
+cwstring_span | &#x2611; | an alias to `basic_string_span` with a char type of const wchar_t
+u16string_span | &#x2611; | an alias to `basic_string_span` with a char type of char16_t
+cu16string_span | &#x2611; | an alias to `basic_string_span` with a char type of const char16_t
+u32string_span | &#x2611; | an alias to `basic_string_span` with a char type of char32_t
+cu32string_span | &#x2611; | an alias to `basic_string_span` with a char type of const char32_t
+[**2. Owners**][cg-owners] | |
+unique_ptr | &#x2611; | an alias to `std::unique_ptr`
+shared_ptr | &#x2611; | an alias to `std::shared_ptr`
+stack_array | &#x2610; | a stack-allocated array
+dyn_array | &#x2610; | a heap-allocated array
+[**3. Assertions**][cg-assertions] | |
+Expects | &#x2611; | a precondition assertion; on failure it terminates
+Ensures | &#x2611; | a postcondition assertion; on failure it terminates
+[**4. Utitilies**][cg-utilities] | |
+move_owner | &#x2610; | a helper function that moves one `owner` to the other
+byte | &#x2611; | either an alias to std::byte or a byte type
+final_action | &#x2611; | a RAII style class that invokes a functor on its destruction
+finally | &#x2611; | a helper function instantiating `final_action`
+GSL_SUPPRESS | &#x2611; | a macro that takes an argument and turns it into `[[gsl::suppress(x)]]` or `[[gsl::suppress("x")]]`
+[[implicit]] | &#x2610; | a "marker" to put on single-argument constructors to explicitly make them non-explicit
+index | &#x2611; | a type to use for all container and array indexing (currently an alias for std::ptrdiff_t)
+joining_thread | &#x2610; | a RAII style version of `std::thread` that joins
+narrow | &#x2611; | a checked version of narrow_cast; it can throw `narrowing_error`
+narrow_cast | &#x2611; | a narrowing cast for values and a synonym for static_cast
+narrowing_error | &#x2611; | a custom exception type thrown by `narrow()`
+[**5. Concepts**][cg-concepts] | &#x2610; |
+
+## The following features do not exist in C++ Core Guidelines:
+Feature | Supported? | Description
+-----------------------------------|:----------:|-------------
+multi_span | &#x2610; | Deprecated. Support for this type has been discontinued.
+strided_span | &#x2610; | Deprecated. Support for this type has been discontinued.
+
+This is based on [CppCoreGuidelines semi-specification](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#gsl-guidelines-support-library).
+
+[cg-views]: https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#gslview-views
+[cg-owners]: https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#gslowner-ownership-pointers
+[cg-assertions]: https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#gslassert-assertions
+[cg-utilities]: https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#gslutil-utilities
+[cg-concepts]: https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#gslconcept-concepts
+
# Quick Start
## Supported Compilers
The GSL officially supports the current and previous major release of MSVC, GCC, Clang, and XCode's Apple-Clang.