mirror of
https://github.com/microsoft/GSL.git
synced 2024-11-03 17:56:43 -05:00
Merge pull request #807 from kuzkry/implemented_features
Add a table of features
This commit is contained in:
commit
83ce710d6c
67
README.md
67
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).
|
[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.
|
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.
|
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)),
|
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
|
# 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.
|
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 | ☑ | 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 | ☑ | 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
|
||||||
|
basic_zstring | ☑ | a pointer to a C-string (zero-terminated array) with a templated char type
|
||||||
|
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 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
|
||||||
|
byte | ☑ | either an alias to std::byte or a byte type
|
||||||
|
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 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
|
||||||
|
narrow | ☑ | a checked version of narrow_cast; it can throw `narrowing_error`
|
||||||
|
narrow_cast | ☑ | a narrowing cast for values and a synonym for static_cast
|
||||||
|
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
|
||||||
|
[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
|
# Quick Start
|
||||||
## Supported Compilers
|
## Supported Compilers
|
||||||
The GSL officially supports the current and previous major release of MSVC, GCC, Clang, and XCode's Apple-Clang.
|
The GSL officially supports the current and previous major release of MSVC, GCC, Clang, and XCode's Apple-Clang.
|
||||||
|
Loading…
Reference in New Issue
Block a user