Pārlūkot izejas kodu

Merge commit '4758b4be64cd4e07fe8559eb4d536cb2b92df1a5'

* commit '4758b4be64cd4e07fe8559eb4d536cb2b92df1a5':
  bugfix: missing includes
  bugfix: reversed range order
  feat: add empty stream
Sam Jaffe 3 gadi atpakaļ
vecāks
revīzija
398d3c80a9

+ 8 - 1
include/stream/streams/make_stream.hpp

@@ -1,5 +1,7 @@
 #pragma once
 
+#include <memory>
+
 #include "source.hpp"
 
 namespace stream {
@@ -13,6 +15,11 @@ namespace stream {
     return std::make_shared<detail::source_stream<C>>(std::forward<C>(cont));
   }
 
+  template <typename T>
+  detail::stream_base<T&> make_empty_stream() {
+    return std::make_shared<detail::range_stream<T*, T&>>(nullptr, nullptr);
+  }
+
   /**
    * Construct a single element stream containing the pointer given
    */
@@ -38,7 +45,7 @@ namespace stream {
   detail::stream_base<T &> make_range_stream(T start, T const & end) {
     std::vector<T> vec;
     vec.reserve(end - start);
-    while (end < start) {
+    while (start < end) {
       vec.emplace_back(start++);
     }
     return make_stream(std::move(vec));

+ 2 - 0
include/stream/streams/source.hpp

@@ -1,5 +1,7 @@
 #pragma once
 
+#include <iterator>
+
 namespace stream { namespace detail {
   template <typename Iter> class source_iterator {
   public:

+ 2 - 0
include/stream/streams/traits.hpp

@@ -7,6 +7,8 @@
 
 #pragma once
 
+#include <utility>
+
 namespace stream { namespace detail {
   template <typename T> struct ref_or_val {
     ref_or_val operator=(T && val) {