aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJordan Maples <jomaples@microsoft.com>2020-08-12 16:22:03 -0700
committerKrystian Kuzniarek <krystian.kuzniarek@gmail.com>2020-08-13 15:35:46 +0200
commitdad3d80c2582acc1ff26401f81c4093656eaadeb (patch)
treed543f01abcb424809db7f4b305e67970f16b0776
parenta9ffcf7f6539368a44f121f404f0bcb0bb8b064c (diff)
downloadplatform_external_Microsoft-GSL-dad3d80c2582acc1ff26401f81c4093656eaadeb.tar.gz
platform_external_Microsoft-GSL-dad3d80c2582acc1ff26401f81c4093656eaadeb.tar.bz2
platform_external_Microsoft-GSL-dad3d80c2582acc1ff26401f81c4093656eaadeb.zip
Update README.md
Rearranged and updated the table. Added a second table of concepts that exist in the Microsoft GSL that do not exist in the C++ Core Guidelines
-rw-r--r--README.md56
1 files changed, 29 insertions, 27 deletions
diff --git a/README.md b/README.md
index 2e3c055..54b3fb5 100644
--- a/README.md
+++ b/README.md
@@ -20,52 +20,48 @@ This project has adopted the [Microsoft Open Source Code of Conduct](https://ope
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
-GSL implements the following utilities:
+## 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 for its better expressiveness
+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; | spans a range starting from a pointer to pointer + size
+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
-multi_span | &#x2611; | spans a contiguous region of memory, which represents a multidimensional array
-strided_span | &#x2611; | **I HAVE NO IDEA WHAT IT DOES, ANYONE???!!!**
basic_zstring | &#x2611; | a pointer to a C-string (zero-terminated array) with a templated char type
-zstring | &#x2611; | an alias to `basic_zstring` where the char type is char
-wzstring | &#x2611; | an alias to `basic_zstring` where the char type is wchar_t
-czstring | &#x2611; | like `zstring` but the char type is also const
-cwzstring | &#x2611; | like `wzstring` but the char type is also const
-u16zstring | &#x2611; | an alias to `basic_zstring` where the char type is char16_t
-cu16zstring | &#x2611; | like `u16zstring` but the char type is also const
-u32zstring | &#x2611; | an alias to `basic_zstring` where the char type is char32_t
-cu32zstring | &#x2611; | like `u32zstring` but the char type is also const
-basic_string_span | &#x2611; | like `span` but for strings with a templated string type
-string_span | &#x2611; | an alias to `basic_string_span` where the char type is char
-cstring_span | &#x2611; | like `string_span` but the char type is also const
-wstring_span | &#x2611; | an alias to `basic_string_span` where the char type is wchar_t
-cwstring_span | &#x2611; | like `wstring_span` but the char type is also const
-u16string_span | &#x2611; | an alias to `basic_string_span` where the char type is char16_t
-cu16string_span | &#x2611; | like `u16string_span` but the char type is also const
-u32string_span | &#x2611; | an alias to `basic_string_span` where the char type is char32_t
-cu32string_span | &#x2611; | like `u32string_span` but the char type is also const
+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 either terminates or throws `fail_fast`
-Ensures | &#x2611; | a postcondition assertion; on failure it either terminates or throws `fail_fast`
+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
-release_owner | &#x2610; | a helper function that releases ownership of the passed `owner` and returns a new `owner`
byte | &#x2611; | either an alias to std::byte or a byte type
-fail_fast | &#x2611; | a custom exception type thrown by assertions
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 tries to turn it into `[[gsl::suppress(x)]]`
+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
@@ -74,6 +70,12 @@ narrow_cast | &#x2611; | a narrowing cast for values an
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