Commit Graph

875 Commits

Author SHA1 Message Date
Tamir Bahar
05bf567dcb Use in-class init for final_action members (C.48) (#601)
* Use in-class init for final_action members (C.48)

Initialize `invoke_` in-class, according to http://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#c48-prefer-in-class-initializers-to-member-initializers-in-constructors-for-constant-initializers

* Empty commit to trigger build.
2018-02-13 17:28:21 -08:00
Jérémie Delaitre
30b1641ff4 Fix wrong check of the CMAKE_VERSION (#602)
`CMAKE_VERSION_MAJOR` is just the first component of the CMake version (e.g. 3 for 3.10.1) which compares less than `3.7.9` if it is less than 3. The proper variable to compare is `CMAKE_VERSION` which contains the full version number.
2018-02-13 17:26:44 -08:00
menete
ac91ac1408 add throw on nullptr CTOR test (#577) 2018-02-12 09:31:09 -08:00
Anna Gringauze
3a12c55cb6
Merge pull request #616 from neilmacintosh/tidy-comparison-ops
Tidy up span comparison ops
2018-02-11 22:36:32 -08:00
Anna Gringauze
b446ce9297
Merge pull request #615 from neilmacintosh/remove-move-ops
Remove move ops from span
2018-02-11 22:36:14 -08:00
Anna Gringauze
a03fde29b9
Merge pull request #614 from neilmacintosh/remove-nullptr-t-ctor
Remove from-nullptr_t constructor from span
2018-02-11 22:34:46 -08:00
Neil MacIntosh
533494335b Merge branch 'master' of https://github.com/neilmacintosh/GSL into remove-move-ops 2018-02-11 14:27:05 -08:00
Neil MacIntosh
314065b317 Fix span comparison ops to take arguments by-value rather than by-ref. 2018-02-11 14:22:08 -08:00
Neil MacIntosh
f63fe12ba7 Merge from upstream master. 2018-02-11 13:36:18 -08:00
beinhaerter
3ff6004bc3 added const (#605)
Resolves compiler code analysis warning ...\gsl\include\gsl\string_span(101): warning C26496: The variable 'str_span' is assigned only once, mark it as const (con.4: https://go.microsoft.com/fwlink/p/?LinkID=784969).
2018-02-11 12:19:10 -08:00
Beat Bolli
1a3eb2a6d4 Rename final_act in GSL.natvis (#593)
Commit 6e2e207c8d renamed final_act to final_action. Do this also in
GSL.natvis.
2018-02-11 12:18:00 -08:00
Casey Carter
95da2fd337 Don't use clang's __builtin_assume as an optimizer hint (#608)
Fixes #607.

Drive-by: use '?:' to contextually convert to bool in the fallback definition of `GSL_ASSUME`
2018-02-11 12:16:39 -08:00
Neil MacIntosh
c23d17a61a
Make iterator access functions on span constexpr (#612)
As per feedback on span received during the C++ standardization discussions.
2018-02-10 21:11:08 -08:00
Neil MacIntosh
87e22faa7e
Removed from-smart-ptr constructors. (#611)
As per feedback during standardization discussions.
2018-02-10 20:02:05 -08:00
Neil MacIntosh
5538021e76 Removed unnecessary move operations. 2018-02-10 20:00:44 -08:00
Neil MacIntosh
2bdbba7418 Removed span from-nullptr_t ctor. 2018-02-10 19:21:22 -08:00
Neil MacIntosh
72688ff009 Removed span.length() as synonym for span.size(). 2018-02-10 18:58:28 -08:00
Neil MacIntosh
9ed6ecc4e0 Made all span iterator access functions constexpr. 2018-02-10 18:25:07 -08:00
Neil MacIntosh
028925caba Removed from-smart-ptr constructors. 2018-02-10 18:05:17 -08:00
Neil MacIntosh
64a7dae4c6
Updated README with another build report. 2018-01-23 13:52:05 -08:00
paweldac
9d65e74400 added gsl_algorithm and gsl_byte headers to main gsl header (#594) 2017-12-04 09:18:40 -08:00
paweldac
210cc08a49 Visual Studio Debug Visualizers support (#575)
changes:
    - minimal cmake version updated to 3.7(first version with .natvis file handling)
    - updated cmake version in readme file
    - GSL.natvis file is added only to VS projects
2017-11-28 07:31:06 -08:00
Tiago
6e2e207c8d rename final_act to final_action (#579) 2017-11-28 07:20:32 -08:00
paweldac
436dbad8c6 Remove std::iterator inheritance from multi_span (#591)
In C++17 std::iterator is marked duplicated. Added handwritten usigs for traits.
2017-11-28 07:15:34 -08:00
Tiago
0d33bf6794 Applied iwyu --comment to the code base (#588) 2017-11-28 07:13:49 -08:00
Tiago
1c95f9436e Updates catch to version 2.0 (#580)
Catch 1 would capture exceptions by value and depending on your clang
config could lead to errors/warnings.
2017-11-14 08:44:56 -08:00
bjude
7e529a47c2 Remove #pragma once (#545) (#570)
Core Guidelines SF.8 recommends using portable include guards instead.
2017-11-14 08:38:16 -08:00
menete
2ad93a38dd Iosfwd (#586)
* Solves #567 with <iosfwd> approach

* adds a little testing to not_null ostream
2017-11-14 08:14:20 -08:00
Tiago
d10ebc6555 Drop "Dummy" from enable_if in templates (#572)
Looks like this was here because of MSVC 2013 compat which is not
supported anymore
2017-11-03 16:18:59 -07:00
Anna Gringauze
9a7897915e Minimize checking in subspan (#569)
* rewrite span subspan checks to help optimizations
* Removed checking pointer for null for subspans. We would never
  check pointer for null in between ptr and ptr+size in the
  original span, so there seems to be  no reason to do so for
  subspans, provided that the subspan's boundaries are ensured
  to be within the range of the original span's boundaries.

This change allows to simplify generated code, for example, to
remove 5 out of 9 branches in code generated from the following
by MSVC, and 4 out 8 branches in clang and gcc-generated code:

span<int> mysubspan(int* p, std::ptrdiff_t size, std::ptrdiff_t i)
{
  if (p != nullptr)
  {
    span<int> s = { p, size };
    return s.subspan(i);
  }

  return { nullptr };
}

Similar effects are achieved for dynamic subspans of static spans,
where in the following code we remove 2 out of 4 branchs in MSVC
and GCC-generated code:

int test_dynamic_subspan_of_static_span(std::ptrdiff_t i)
{
  int x[] = { 0,1,2,3,4,5 };
  span<int, 6> s = { x };
  auto subspan = s.subspan(i);
  return subspan.size();
}
2017-11-03 16:13:39 -07:00
Tiago
4862a270b9 Move GSL pointers to a separate header (#566) 2017-10-31 10:19:12 -07:00
menete
1d936eb90c additional span tests (pointer length constructor) (#568) 2017-10-31 10:11:45 -07:00
Tiago
bec7fa72c1 Clean up and update CI build scripts (#563)
* travis.yml clean up

- Remove trailling spaces
- Move notification setting from the bottom to the top
- Set Linux as default OS
- Simplify cache directory
- Add banners around different configurations

* Update CMake installation routine

- Make it depend on variable (easier to update)
- Simplify code a bit

* Re-organize build matrix and LLVM install

- make logic depend on a single COMPILER variable
- Update LLVM installation process

* Update compilers to latest stable version
2017-10-25 11:36:31 -07:00
Casey Carter
211e195d8f Revert inadvertent addition of tests/unittest-cpp submodule from #561 (#562) 2017-10-18 17:56:11 -07:00
Casey Carter
166ea80f66 Update std::byte detection in gsl_byte for MSVC (#561)
* Only check that `_HAS_STD_BYTE` is defined to a non-zero value
2017-10-18 16:35:11 -07:00
Galik
4c5fdb541f Made string_span details::string_length() generic (Fix issue #542) (#543)
* Made string_span details::string_length() generic

removed overloads & specialized classes

Creating string_spans using `char16_t` and `char32_t` was not possible
without creating new specializations and function overloads.

This patch makes details::string_length() generic removing the need to
extend the overloads and specializations.

* added type aliases for string_span types char16_t and char32_t

* Added char16_t & char32_t overloads for ensure_z

* added string_span tests for char16_T & char32_t

* added zstring type aliases for char16_t & char32_t

* Added tests for char16_t & char31_t zstring and string_span types

* applies clang format to <gsl/string_span>

* Clang format tests/string_span_tests.cpp

* Removed ensure_z() overloads as they don't add functionality.
2017-09-18 15:20:51 -07:00
Anna Gringauze
e7bcdf541b Enable vectorization of common loops using iterators with range checking enabled with GCC and Clang (#557) 2017-09-18 15:16:23 -07:00
bfierz
b01450878b Adds an option to disable test generation (#552)
When integrating the GSL as an external dependency, it is usually unnecessary to build and run the unit-tests.
2017-09-06 17:50:30 -07:00
Edward Betts
77e081e88b correct spelling mistake (#554) 2017-09-06 17:33:49 -07:00
Rian Quinn
842344e94b turning off warning (#548)
using the GSL with MSVC 2017 causes the following warning"
`'std::copy_n::_Unchecked_iterators::_Deprecate': Call to 'std::copy_n'`

This patch removes this since the point of this code is to deal with this issue.
2017-08-16 19:06:30 -07:00
Nicholas Guriev
e249f861e3 Allow to use system version of the catch test framework (#549) 2017-08-16 19:00:30 -07:00
Neil MacIntosh
80aa4b0c54 Updated README to include additional build report. 2017-08-16 18:40:49 -07:00
Tiago
25f913e200 Fix catch installation issue (#540)
Catch was being installed to the root of the cmake project. This
violated the source code tree itself and would not work at all if GSL
was being consumed with add_subdirectory.

CMake will now install catch to the build tree under /dependencies.
2017-08-16 18:38:47 -07:00
Casey Carter
2b8d20425e Allow users to override GSL_USE_STD_BYTE (#536) 2017-07-24 17:26:21 -07:00
Neil MacIntosh
be43c79742 Removed VS2013 workarounds. (#534) 2017-07-14 04:40:27 -07:00
Neil MacIntosh
a3792ca273 Updated README to remove VS2013 reference. 2017-07-14 01:32:35 +00:00
Neil MacIntosh
b2ee484334 Move from unittest-cpp to catch for unit testing. (#533)
Many thanks to @rianquinn. This should fix #495, #494 and #529.
2017-07-13 13:53:56 -07:00
Gary Furnish
1f87ef73f1 Fix cstddef include in wrong place. (#520) 2017-06-02 08:45:42 -07:00
Vincent Zalzal
010ab921bf Fix multi_span constructor taking a const std::array. (#523)
not called even by the unit test (it was calling the "container" ctor
instead). I mimicked the constructor taking a non-const std::array to fix
the issue.
2017-06-01 21:55:25 -07:00
Neil MacIntosh
1cfb241be7 Fix bug in comparison that selects std::byte. 2017-05-31 19:08:11 -07:00