mirror of
https://github.com/microsoft/GSL.git
synced 2025-02-17 23:33:49 -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.
|
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
|
# Supported features
|
||||||
GSL implements the following utilities:
|
## Microsoft GSL implements the following from the C++ Core Guidelines:
|
||||||
|
|
||||||
Feature | Supported? | Description
|
Feature | Supported? | Description
|
||||||
-----------------------------------|:----------:|-------------
|
-----------------------------------|:----------:|-------------
|
||||||
[**1. Views**][cg-views] | |
|
[**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
|
not_null | ☑ | restricts a pointer / smart pointer to hold non-null values
|
||||||
strict_not_null | ☑ | a stricter version of `not_null` with explicit constructors
|
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
|
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
|
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
|
zstring | ☑ | an alias to `basic_zstring` with a char type of char
|
||||||
wzstring | ☑ | an alias to `basic_zstring` where the char type is wchar_t
|
czstring | ☑ | an alias to `basic_zstring` with a char type of const char
|
||||||
czstring | ☑ | like `zstring` but the char type is also const
|
wzstring | ☑ | an alias to `basic_zstring` with a char type of wchar_t
|
||||||
cwzstring | ☑ | like `wzstring` but the char type is also const
|
cwzstring | ☑ | an alias to `basic_zstring` with a char type of const wchar_t
|
||||||
u16zstring | ☑ | an alias to `basic_zstring` where the char type is char16_t
|
u16zstring | ☑ | an alias to `basic_zstring` with a char type of char16_t
|
||||||
cu16zstring | ☑ | like `u16zstring` but the char type is also const
|
cu16zstring | ☑ | an alias to `basic_zstring` with a char type of const char16_t
|
||||||
u32zstring | ☑ | an alias to `basic_zstring` where the char type is char32_t
|
u32zstring | ☑ | an alias to `basic_zstring` with a char type of char32_t
|
||||||
cu32zstring | ☑ | like `u32zstring` but the char type is also const
|
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 string type
|
basic_string_span | ☑ | like `span` but for strings with a templated char type
|
||||||
string_span | ☑ | an alias to `basic_string_span` where the char type is char
|
string_span | ☑ | an alias to `basic_string_span` with a char type of char
|
||||||
cstring_span | ☑ | like `string_span` but the char type is also const
|
cstring_span | ☑ | an alias to `basic_string_span` with a char type of const char
|
||||||
wstring_span | ☑ | an alias to `basic_string_span` where the char type is wchar_t
|
wstring_span | ☑ | an alias to `basic_string_span` with a char type of wchar_t
|
||||||
cwstring_span | ☑ | like `wstring_span` but the char type is also const
|
cwstring_span | ☑ | an alias to `basic_string_span` with a char type of const wchar_t
|
||||||
u16string_span | ☑ | an alias to `basic_string_span` where the char type is char16_t
|
u16string_span | ☑ | an alias to `basic_string_span` with a char type of char16_t
|
||||||
cu16string_span | ☑ | like `u16string_span` but the char type is also const
|
cu16string_span | ☑ | an alias to `basic_string_span` with a char type of const char16_t
|
||||||
u32string_span | ☑ | an alias to `basic_string_span` where the char type is char32_t
|
u32string_span | ☑ | an alias to `basic_string_span` with a char type of char32_t
|
||||||
cu32string_span | ☑ | like `u32string_span` but the char type is also const
|
cu32string_span | ☑ | an alias to `basic_string_span` with a char type of const char32_t
|
||||||
[**2. Owners**][cg-owners] | |
|
[**2. Owners**][cg-owners] | |
|
||||||
unique_ptr | ☑ | an alias to `std::unique_ptr`
|
unique_ptr | ☑ | an alias to `std::unique_ptr`
|
||||||
shared_ptr | ☑ | an alias to `std::shared_ptr`
|
shared_ptr | ☑ | an alias to `std::shared_ptr`
|
||||||
stack_array | ☐ | a stack-allocated array
|
stack_array | ☐ | a stack-allocated array
|
||||||
dyn_array | ☐ | a heap-allocated array
|
dyn_array | ☐ | a heap-allocated array
|
||||||
[**3. Assertions**][cg-assertions] | |
|
[**3. Assertions**][cg-assertions] | |
|
||||||
Expects | ☑ | a precondition 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 either terminates or throws `fail_fast`
|
Ensures | ☑ | a postcondition assertion; on failure it terminates
|
||||||
[**4. Utitilies**][cg-utilities] | |
|
[**4. Utitilies**][cg-utilities] | |
|
||||||
move_owner | ☐ | a helper function that moves one `owner` to the other
|
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
|
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
|
final_action | ☑ | a RAII style class that invokes a functor on its destruction
|
||||||
finally | ☑ | a helper function instantiating `final_action`
|
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
|
[[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)
|
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
|
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()`
|
narrowing_error | ☑ | a custom exception type thrown by `narrow()`
|
||||||
[**5. Concepts**][cg-concepts] | ☐ |
|
[**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).
|
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-views]: https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#gslview-views
|
||||||
|
Loading…
x
Reference in New Issue
Block a user