Browse Source

refactor: flatten header hierarchy

Sam Jaffe 2 năm trước cách đây
mục cha
commit
bf29fa5b34

include/stream/streams/detail/ifd_pointer.hpp → include/stream/detail/ifd_pointer.hpp


include/stream/streams/detail/self_iterating_container.hpp → include/stream/detail/self_iterating_container.hpp


include/stream/streams/filter.hpp → include/stream/filter.hpp


+ 1 - 1
include/stream/streams/fluent.hpp

@@ -7,7 +7,7 @@
 
 #pragma once
 
-#include "../streams.hpp"
+#include "streams.hpp"
 
 namespace stream { namespace traits {
   template <typename T, typename P>

include/stream/streams/forward.hpp → include/stream/forward.hpp


+ 41 - 0
include/stream/iterator.hpp

@@ -0,0 +1,41 @@
+//
+//  iterator.hpp
+//  stream
+//
+//  Created by Sam Jaffe on 3/28/23.
+//
+
+#include "detail/ifd_pointer.hpp"
+
+#include <iterator/facade.h>
+
+namespace stream {
+  template <typename T>
+  class iterator : public ::iterator::facade<iterator<T>> {
+  private:
+    T (*dereference_)(void *){nullptr};
+    bool (*equal_to_)(void *, void *){nullptr};
+    void (*increment_)(void *){nullptr};
+    char const * type_{nullptr};
+    detail::ifd_pointer impl_{};
+
+  public:
+    iterator() = default;
+
+    template <typename Iter>
+    iterator(Iter impl)
+        : dereference_([](void * p) -> T { return **((Iter *)p); }),
+          equal_to_(
+              [](void * l, void * r) { return *((Iter *)l) == *((Iter *)r); }),
+          increment_([](void * p) { ++(*(Iter *)(p)); }),
+          type_(typeid(Iter).name()), impl_(std::forward<Iter>(impl)) {}
+
+    T dereference() const { return dereference_(impl_.get()); }
+    void increment() { increment_(impl_.get()); }
+    bool equal_to(iterator other) const {
+      return equal_to_(impl_.get(), other.impl_.get());
+    }
+  };
+}
+
+MAKE_ITERATOR_FACADE_TYPEDEFS_T(::stream::iterator);

include/stream/streams/join.hpp → include/stream/join.hpp


include/stream/streams/make_stream.hpp → include/stream/make_stream.hpp


include/stream/streams/map.hpp → include/stream/map.hpp


include/stream/streams/source.hpp → include/stream/source.hpp


+ 1 - 33
include/stream/streams/streams.hpp

@@ -6,39 +6,7 @@
 #include <optional>
 #include <vector>
 
-#include "detail/ifd_pointer.hpp"
-#include <iterator/facade.h>
-
-namespace stream {
-  template <typename T>
-  class iterator : public ::iterator::facade<iterator<T>> {
-  private:
-    T (*dereference_)(void *){nullptr};
-    bool (*equal_to_)(void *, void *){nullptr};
-    void (*increment_)(void *){nullptr};
-    char const * type_{nullptr};
-    detail::ifd_pointer impl_{};
-
-  public:
-    iterator() = default;
-
-    template <typename Iter>
-    iterator(Iter impl)
-        : dereference_([](void * p) -> T { return **((Iter *)p); }),
-          equal_to_(
-              [](void * l, void * r) { return *((Iter *)l) == *((Iter *)r); }),
-          increment_([](void * p) { ++(*(Iter *)(p)); }),
-          type_(typeid(Iter).name()), impl_(std::forward<Iter>(impl)) {}
-
-    T dereference() const { return dereference_(impl_.get()); }
-    void increment() { increment_(impl_.get()); }
-    bool equal_to(iterator other) const {
-      return equal_to_(impl_.get(), other.impl_.get());
-    }
-  };
-}
-
-MAKE_ITERATOR_FACADE_TYPEDEFS_T(::stream::iterator);
+#include "iterator.hpp"
 
 namespace stream::detail {
   template <typename T, typename = void> class stream_base_pointer_impl {};

+ 7 - 7
include/stream/streams.hpp

@@ -1,12 +1,12 @@
 #pragma once
 
-#include "streams/forward.hpp"
+#include <stream/forward.hpp>
 
-#include "streams/make_stream.hpp"
-#include "streams/streams.hpp"
+#include <stream/make_stream.hpp>
+#include <stream/stream_base.hpp>
 
-#include "streams/source.hpp"
+#include <stream/source.hpp>
 
-#include "streams/filter.hpp"
-#include "streams/join.hpp"
-#include "streams/map.hpp"
+#include <stream/filter.hpp>
+#include <stream/join.hpp>
+#include <stream/map.hpp>

include/stream/streams/traits.hpp → include/stream/traits.hpp


+ 7 - 13
stream.xcodeproj/project.pbxproj

@@ -70,7 +70,7 @@
 		CD5281EC29D3B173001A84DE /* traits.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = traits.hpp; sourceTree = "<group>"; };
 		CD5281ED29D3B173001A84DE /* map.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = map.hpp; sourceTree = "<group>"; };
 		CD5281EE29D3B173001A84DE /* fluent.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = fluent.hpp; sourceTree = "<group>"; };
-		CD5281EF29D3B173001A84DE /* streams.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = streams.hpp; sourceTree = "<group>"; };
+		CD5281EF29D3B173001A84DE /* stream_base.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = stream_base.hpp; sourceTree = "<group>"; };
 		CD5281F029D3B173001A84DE /* forward.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = forward.hpp; sourceTree = "<group>"; };
 		CD5281F129D3B173001A84DE /* make_stream.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = make_stream.hpp; sourceTree = "<group>"; };
 		CD5281F329D3B173001A84DE /* ifd_pointer.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = ifd_pointer.hpp; sourceTree = "<group>"; };
@@ -80,6 +80,7 @@
 		CD5281F729D3B173001A84DE /* streams.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = streams.hpp; sourceTree = "<group>"; };
 		CD52820029D3B193001A84DE /* libstream.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libstream.a; sourceTree = BUILT_PRODUCTS_DIR; };
 		CD52820B29D3B705001A84DE /* iterator.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = iterator.xcodeproj; path = external/iterator/iterator.xcodeproj; sourceTree = "<group>"; };
+		CD52822729D3BCE4001A84DE /* iterator.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = iterator.hpp; sourceTree = "<group>"; };
 		CD64CCB926232D6900770A30 /* xcode_gtest_helper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = xcode_gtest_helper.h; sourceTree = "<group>"; };
 		CD9337281E3CD78B00699FF5 /* stream_test.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = stream_test.cxx; sourceTree = "<group>"; };
 		CDAA170121A3A738007BBA11 /* stream */ = {isa = PBXFileReference; lastKnownFileType = folder; name = stream; path = include/stream; sourceTree = "<group>"; };
@@ -135,27 +136,20 @@
 		CD5281E929D3B173001A84DE /* stream */ = {
 			isa = PBXGroup;
 			children = (
-				CD5281EA29D3B173001A84DE /* streams */,
-				CD5281F729D3B173001A84DE /* streams.hpp */,
-			);
-			path = stream;
-			sourceTree = "<group>";
-		};
-		CD5281EA29D3B173001A84DE /* streams */ = {
-			isa = PBXGroup;
-			children = (
+				CD5281F229D3B173001A84DE /* detail */,
 				CD5281EB29D3B173001A84DE /* join.hpp */,
 				CD5281EC29D3B173001A84DE /* traits.hpp */,
 				CD5281ED29D3B173001A84DE /* map.hpp */,
 				CD5281EE29D3B173001A84DE /* fluent.hpp */,
-				CD5281EF29D3B173001A84DE /* streams.hpp */,
+				CD5281EF29D3B173001A84DE /* stream_base.hpp */,
+				CD52822729D3BCE4001A84DE /* iterator.hpp */,
 				CD5281F029D3B173001A84DE /* forward.hpp */,
 				CD5281F129D3B173001A84DE /* make_stream.hpp */,
-				CD5281F229D3B173001A84DE /* detail */,
 				CD5281F529D3B173001A84DE /* filter.hpp */,
 				CD5281F629D3B173001A84DE /* source.hpp */,
+				CD5281F729D3B173001A84DE /* streams.hpp */,
 			);
-			path = streams;
+			path = stream;
 			sourceTree = "<group>";
 		};
 		CD5281F229D3B173001A84DE /* detail */ = {

+ 1 - 2
test/stream_fluent_test.cxx

@@ -9,8 +9,7 @@
 
 #include <vector>
 
-#include "stream/streams.hpp"
-#include "stream/streams/fluent.hpp"
+#include "stream/fluent.hpp"
 
 using ::testing::ElementsAreArray;
 using ::testing::Eq;