Commit Graph

49 Commits

Author SHA1 Message Date
Eric Niebler
9d13cb14c3 Fixes to typedef's for span::const_iterator.
* Don't const-qualify span::const_iterator's value_type
Fixes Microsoft/GSL#434
2016-12-09 20:19:50 -08:00
Gary Furnish
1a94e77910 Fix preprocessor error. 2016-12-06 16:40:09 -08:00
MikeGitb
d2dafe2ddf Add a copy() function for span. 2016-11-17 10:45:06 -08:00
Rian Quinn
2df9f85385 Add make_span()
This patch provides a make_span function to simplify the
creation of spans until C++17 is available. In addition
this patch updates the unit tests to includes tests that
verify this new functionality.
2016-11-16 10:17:04 -08:00
Neil MacIntosh
9523c1842e Fix template pack expansion bug in multi_span.
* Fix issue #333 by moving a parenthesis.
* Added test to prove fix is good.
2016-11-16 10:15:04 -08:00
Rian Quinn
2b51b8767a Add span construction from unique_ptr and shared_ptr
This patch adds support for std::unique_ptr and
std::shared_ptr to the gsl::span
class instead of having to manually grab the pointer via
get().

For reference, this is part of the following issue:
https://github.com/Microsoft/GSL/issues/402
2016-11-03 18:55:41 -07:00
Rian Quinn
d641796b21 Cleanup additional GCC warnings
When turning on the following flags, several additional warnings
were generated, which have been cleaned up in this patch. The
flags included:

-Wextra
-Wpedantic
-Wconversion
-Wsign-conversion
-Wctor-dtor-privacy
-Wshadow
-Wnon-virtual-dtor
-Wold-style-cast
-Wcast-align
-Woverloaded-virtual
2016-11-03 18:38:32 -07:00
Vladislav Yaroslavlev
38f453d608 remove overly optimistic noexcept from some functions 2016-11-03 13:15:33 -07:00
Rian Quinn
fb1a89fb14 Fix gsl::at()'s use of size_t
gsl::at should use std::ptrdiff_t instead of size_t. This patch
fixes that, and adds missing unit tests
2016-10-28 11:46:14 -07:00
Rian Quinn
f4486389b8 Fix overflow found by GCC in basic_zstring_span::as_string_span().
This patch fixes an overflow that was identified with
strict overflow warnings enabled, and optimizations
turned on

Signed-off-by: “Rian <“rianquinn@gmail.com”>
2016-10-27 23:45:54 -07:00
Rian Quinn
6cffe0d14c Adds gsl::span::at()
As per this discussion:
https://github.com/Microsoft/GSL/issues/402

This patch adds support for at() to gsl::span
2016-10-26 14:11:24 -07:00
Rian Quinn
b07383ead1 [gsl_util] Update narrow_cast to use std::forward
* Update narrow_cast to use std::forward

Based on [F19](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#f19-for-forward-parameters-pass-by-tp-and-only-stdforward-the-parameter), I believe `gsl::narrow_cast` should be implemented using forward semantics.

* Fix for VS 2013
2016-10-18 11:52:45 -07:00
Josaphat Valdivia
a14f27474f [#391] string_length: Remove use of strnlen and use consistent length type.
* Removes reference to strnlen as per #391

* Use ptrdiff for string_length interfaces for #391
2016-10-17 12:41:24 -07:00
Gary Furnish
22a286cefe Fix #388 Deprecated implicit copy assignment operator for span_iterator in C++17. 2016-10-09 18:01:46 -06:00
Gary Furnish
612747a5e1 For span, fix size_t to index_type conversion warning.
Use narrow per discussion instead of static_cast.
2016-10-04 21:13:18 -06:00
Neil MacIntosh
0edabdba0c Add branch prediction to Ensures / Expects 2016-09-29 12:58:55 -07:00
Neil MacIntosh
3e5af6dc40 Fix compilation issues with Cygwin 2016-09-29 12:51:37 -07:00
Rian Quinn
9e055be659 Fix compilation issues with Cygwin
Cygwin recently did an update that broken string_span again. The original update had to provide a custom strnlen function because Cygwin doesn't implement this (it's a non-std extension). We never added wchar_t support, and the Cygwin update now breaks on exactly this. This patch provides the missing wchar_t.
2016-09-28 10:00:47 -06:00
Rian Quinn
3161d6133f Fix issue with VS builds
The Visual Studio part of this patch was wrong, and left an empty if statement.
2016-09-28 09:53:33 -06:00
Rian Quinn
4b29878d70 Add branch prediction to Ensures / Expects
We should be using branch prediction on asserts as these conditions are known to be unlikely, therefore we should be optimizing the likely case. These macros are similar to what the Linux kernel uses. Not really sure what Visual Studio does so at the moment these are disabled for VS.
2016-09-28 09:43:13 -06:00
Casey Carter
67717ea6ae [multi_span] Fix UB hack in static_bounds::operator=
* Make BoundsRanges<dynamic_range, ...>::m_bound non-const and private

* Remove various defaulted copy constructor/assignment declarations from BoundsRanges specializations whose only effect is to needlessly suppress the generation of moves

* Remove the hackish static_bounds::operator=(const static_bounds&). The implicitly generated default is now sufficient
2016-09-27 21:12:51 -07:00
Neil MacIntosh
348a859547 Removed redundant static_cast<> and is_same<> test. 2016-09-22 10:22:07 -07:00
Michael Balszun
4e7997190c Turn off warning about function-styl casts in gsl_byte 2016-09-21 21:39:28 +02:00
Neil MacIntosh
fd5ad87bf2 Add tests for to_integer(), fix to_integer() 2016-09-20 08:47:49 -07:00
Krzysztof Wrzalik
6cb0e3082a Added a fix for not flagging negative indices to multi_span. 2016-09-18 17:56:18 +02:00
Martin Moene
6cf154e067 Fix to_integer() 2016-09-17 09:24:34 +02:00
Neil MacIntosh
831be5de39 Removed redundant static_cast<> and is_same<> test. 2016-09-14 22:01:02 -07:00
Neil MacIntosh
edceed8075 Adding inline to all byte-related functions for MSVC 2013. 2016-09-13 14:30:02 -07:00
Neil MacIntosh
6bc1e7e709 Fix for #313 Corrected SFINAE for conversion constructors on span 2016-09-13 12:19:19 -07:00
Neil MacIntosh
e40729a561 Added inline to byte member functions to fix MSVC 2013 warnings 2016-09-13 12:17:17 -07:00
Steve Brain
ad5275ca78 Added inline to fix compilation warnings on msvc 2013 2016-09-13 16:07:34 +10:00
Neil MacIntosh
bc70a93bba Removed unnecessary reinterpret_cast<> from span implementation. 2016-09-12 19:06:45 -07:00
Neil MacIntosh
3b2419532e Corrected SFINAE for conversion constructors on span. 2016-09-12 18:51:23 -07:00
Kris
d5847ceef0 Merge remote-tracking branch 'Microsoft/master' 2016-09-07 22:16:19 +01:00
Kris
7d083fd08c Issue #329, fixed build issues on clang
Fixed build issues that clang shows up the MS VS accepts.
2016-09-07 22:16:10 +01:00
Kris Cruickshank
55b232dde4 Issue: #329
This is my best attempt at fixing the issues raised by @gdr-at-ms while supporting VS2013, VS2015, providing shorter syntax than the static_cast and giving developer meaningful errors when they do the wrong thing.
2016-09-07 21:38:43 +01:00
Neil MacIntosh
9e0807f1b1 Fix typo in operator | for gsl::byte. 2016-09-06 18:45:53 -07:00
Gary Furnish
ec109d2374 Add to_basic_string 2016-09-04 00:29:10 -06:00
Kris
95bbaa1ec2 Added to_byte method for issue #329
I have added the to_byte method and updated the unit tests.

This gives slightly nicer syntax than static_cast, is better than the
c-style cast used in the unit test.

See: https://github.com/Microsoft/GSL/issues/329#issuecomment-240588515
2016-08-28 21:55:58 +01:00
Neil MacIntosh
f8ef4e2355 Fix #340: define constexpr as /*constexpr*/ when unavailable (also noexcept) 2016-08-27 10:51:00 -07:00
Neil MacIntosh
5e2618b034 Specialize gsl::at for span 2016-08-25 08:35:52 -07:00
Martin Moene
3aea9f7201 Define constexpr as /*constexpr*/ when unavailable (also noexcept) 2016-08-24 19:53:53 +02:00
ericLemanissier
134f2db5d9 Specialize gsl::at for span
span being a view and not a container, the generic version of gsl::at is not valid any more for span.
This commits adds a specialization of gsl::at for span
2016-08-23 12:18:36 +02:00
Rian Quinn
aadcce275e Fix issue: Provide platform support for strnlen
Not all platforms have support for strnlen (e.g. cygwin) as this is a non-standard function. This patch provides a custom implementation of strnlen for these platforms.
2016-08-18 20:32:08 -06:00
Vincent Isambart
36d56ebcb3 Add missing newline at end of file 2016-08-13 10:16:59 +09:00
Vincent Isambart
582ae8c87f Fix #323 - Badly positioned noexcept 2016-08-13 10:15:59 +09:00
Neil MacIntosh
6b4ae834a3 Merge branch 'master' into dev/neilmac/iterators 2016-08-10 19:00:43 -07:00
Galik
222c2d85fd Removed .h extension from header files. 2016-08-10 17:24:00 +01:00
galik
f6cc5798a1 Renamed include/ folder to gsl/ to make including the library consistent
whether using it from the development folder, from the installation
folder or from being copied into a project. 

    #include <gsl/gsl.h>

Updated headers/tests/instructions/cmake build accordingly

This PR should address https://github.com/Microsoft/GSL/issues/277 (less
the renaming of gsl itself)
2016-08-09 15:04:58 +01:00