fgerlits commented on code in PR #1584:
URL: https://github.com/apache/nifi-minifi-cpp/pull/1584#discussion_r1221440952


##########
libminifi/src/utils/LineByLineInputOutputStreamCallback.cpp:
##########
@@ -67,7 +67,7 @@ void LineByLineInputOutputStreamCallback::readLine() {
   if (end_of_line != input_.end()) { ++end_of_line; }
 
   current_line_ = next_line_;
-  next_line_ = utils::span_to<std::string>(gsl::make_span(&*current_pos_, 
&*end_of_line).as_span<char>());
+  next_line_ = 
utils::span_to<std::string>(utils::as_span<char>(std::span(&*current_pos_, 
&*end_of_line)));

Review Comment:
   I think we could remove the `&*`s:
   ```suggestion
     next_line_ = 
utils::span_to<std::string>(utils::as_span<char>(std::span(current_pos_, 
end_of_line)));
   ```
   as there is a `span` constructor which takes a pair of iterators



##########
libminifi/include/utils/gsl.h:
##########
@@ -32,18 +33,23 @@ using remove_cvref_t = typename std::remove_cv<typename 
std::remove_reference<T>
 }  // namespace detail
 
 template<typename Container, typename T>
-Container span_to(gsl::span<T> span) {
+Container span_to(std::span<T> span) {
   static_assert(std::is_constructible<Container, typename 
gsl::span<T>::iterator, typename gsl::span<T>::iterator>::value,
       "The destination container must have an iterator (pointer) range 
constructor");
   return Container(std::begin(span), std::end(span));
 }
 template<template<typename...> class Container, typename T>
-Container<detail::remove_cvref_t<T>> span_to(gsl::span<T> span) {
+Container<detail::remove_cvref_t<T>> span_to(std::span<T> span) {
   static_assert(std::is_constructible<Container<detail::remove_cvref_t<T>>, 
typename gsl::span<T>::iterator, typename gsl::span<T>::iterator>::value,
       "The destination container must have an iterator (pointer) range 
constructor");
   return span_to<Container<detail::remove_cvref_t<T>>>(span);
 }
 
+template<typename T, typename U>
+std::span<T> as_span(std::span<U> value) {
+  return std::span{reinterpret_cast<T*>(value.data()), value.size_bytes() / 
sizeof(T)};
+}

Review Comment:
   the `span_to` and `as_span` functions could be moved to a new file, eg. 
`utils/span.h`, as they don't belong in `gsl.h` any longer



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to