mirror of
https://github.com/microsoft/GSL.git
synced 2024-11-25 01:01:58 -05:00
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
This commit is contained in:
parent
a9ffcf7f65
commit
dad3d80c25
56
README.md
56
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 | ☑ | an alias for a raw pointer for its better expressiveness
|
||||
owner | ☑ | an alias for a raw pointer
|
||||
not_null | ☑ | restricts a pointer / smart pointer to hold non-null values
|
||||
strict_not_null | ☑ | a stricter version of `not_null` with explicit constructors
|
||||
span | ☑ | spans a range starting from a pointer to pointer + size
|
||||
span | ☑ | a view over a contiguous sequence of memory. Based on the standardized verison of `std::span`, however `gsl::span` enforces bounds checking.
|
||||
span_p | ☐ | spans a range starting from a pointer to the first place for which the predicate is true
|
||||
multi_span | ☑ | spans a contiguous region of memory, which represents a multidimensional array
|
||||
strided_span | ☑ | **I HAVE NO IDEA WHAT IT DOES, ANYONE???!!!**
|
||||
basic_zstring | ☑ | a pointer to a C-string (zero-terminated array) with a templated char type
|
||||
zstring | ☑ | an alias to `basic_zstring` where the char type is char
|
||||
wzstring | ☑ | an alias to `basic_zstring` where the char type is wchar_t
|
||||
czstring | ☑ | like `zstring` but the char type is also const
|
||||
cwzstring | ☑ | like `wzstring` but the char type is also const
|
||||
u16zstring | ☑ | an alias to `basic_zstring` where the char type is char16_t
|
||||
cu16zstring | ☑ | like `u16zstring` but the char type is also const
|
||||
u32zstring | ☑ | an alias to `basic_zstring` where the char type is char32_t
|
||||
cu32zstring | ☑ | like `u32zstring` but the char type is also const
|
||||
basic_string_span | ☑ | like `span` but for strings with a templated string type
|
||||
string_span | ☑ | an alias to `basic_string_span` where the char type is char
|
||||
cstring_span | ☑ | like `string_span` but the char type is also const
|
||||
wstring_span | ☑ | an alias to `basic_string_span` where the char type is wchar_t
|
||||
cwstring_span | ☑ | like `wstring_span` but the char type is also const
|
||||
u16string_span | ☑ | an alias to `basic_string_span` where the char type is char16_t
|
||||
cu16string_span | ☑ | like `u16string_span` but the char type is also const
|
||||
u32string_span | ☑ | an alias to `basic_string_span` where the char type is char32_t
|
||||
cu32string_span | ☑ | like `u32string_span` but the char type is also const
|
||||
zstring | ☑ | an alias to `basic_zstring` with a char type of char
|
||||
czstring | ☑ | an alias to `basic_zstring` with a char type of const char
|
||||
wzstring | ☑ | an alias to `basic_zstring` with a char type of wchar_t
|
||||
cwzstring | ☑ | an alias to `basic_zstring` with a char type of const wchar_t
|
||||
u16zstring | ☑ | an alias to `basic_zstring` with a char type of char16_t
|
||||
cu16zstring | ☑ | an alias to `basic_zstring` with a char type of const char16_t
|
||||
u32zstring | ☑ | an alias to `basic_zstring` with a char type of char32_t
|
||||
cu32zstring | ☑ | an alias to `basic_zstring` with a char type of const char32_t
|
||||
basic_string_span | ☑ | like `span` but for strings with a templated char type
|
||||
string_span | ☑ | an alias to `basic_string_span` with a char type of char
|
||||
cstring_span | ☑ | an alias to `basic_string_span` with a char type of const char
|
||||
wstring_span | ☑ | an alias to `basic_string_span` with a char type of wchar_t
|
||||
cwstring_span | ☑ | an alias to `basic_string_span` with a char type of const wchar_t
|
||||
u16string_span | ☑ | an alias to `basic_string_span` with a char type of char16_t
|
||||
cu16string_span | ☑ | an alias to `basic_string_span` with a char type of const char16_t
|
||||
u32string_span | ☑ | an alias to `basic_string_span` with a char type of char32_t
|
||||
cu32string_span | ☑ | an alias to `basic_string_span` with a char type of const char32_t
|
||||
[**2. Owners**][cg-owners] | |
|
||||
unique_ptr | ☑ | an alias to `std::unique_ptr`
|
||||
shared_ptr | ☑ | an alias to `std::shared_ptr`
|
||||
stack_array | ☐ | a stack-allocated array
|
||||
dyn_array | ☐ | a heap-allocated array
|
||||
[**3. Assertions**][cg-assertions] | |
|
||||
Expects | ☑ | a precondition assertion; on failure it either terminates or throws `fail_fast`
|
||||
Ensures | ☑ | a postcondition assertion; on failure it either terminates or throws `fail_fast`
|
||||
Expects | ☑ | a precondition assertion; on failure it terminates
|
||||
Ensures | ☑ | a postcondition assertion; on failure it terminates
|
||||
[**4. Utitilies**][cg-utilities] | |
|
||||
move_owner | ☐ | a helper function that moves one `owner` to the other
|
||||
release_owner | ☐ | a helper function that releases ownership of the passed `owner` and returns a new `owner`
|
||||
byte | ☑ | either an alias to std::byte or a byte type
|
||||
fail_fast | ☑ | a custom exception type thrown by assertions
|
||||
final_action | ☑ | a RAII style class that invokes a functor on its destruction
|
||||
finally | ☑ | a helper function instantiating `final_action`
|
||||
GSL_SUPPRESS | ☑ | a macro that takes an argument and tries to turn it into `[[gsl::suppress(x)]]`
|
||||
GSL_SUPPRESS | ☑ | a macro that takes an argument and turns it into `[[gsl::suppress(x)]]` or `[[gsl::suppress("x")]]`
|
||||
[[implicit]] | ☐ | a "marker" to put on single-argument constructors to explicitly make them non-explicit
|
||||
index | ☑ | a type to use for all container and array indexing (currently an alias for std::ptrdiff_t)
|
||||
joining_thread | ☐ | a RAII style version of `std::thread` that joins
|
||||
@ -74,6 +70,12 @@ narrow_cast | ☑ | a narrowing cast for values an
|
||||
narrowing_error | ☑ | a custom exception type thrown by `narrow()`
|
||||
[**5. Concepts**][cg-concepts] | ☐ |
|
||||
|
||||
## The following features do not exist in C++ Core Guidelines:
|
||||
Feature | Supported? | Description
|
||||
-----------------------------------|:----------:|-------------
|
||||
multi_span | ☐ | Deprecated. Support for this type has been discontinued.
|
||||
strided_span | ☐ | 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
|
||||
|
Loading…
Reference in New Issue
Block a user