Browse Source

Arrange all files following the order of:
typedef -> members -> functions
with the sub-ordering of:
public -> protected -> private

Sam Jaffe 5 years ago
parent
commit
9dd95fd795
2 changed files with 17 additions and 20 deletions
  1. 11 14
      trie.hpp
  2. 6 6
      trie_iterator.hpp

+ 11 - 14
trie.hpp

@@ -42,25 +42,17 @@ template <typename Trie, typename Iter> class trie_reverse_iterator;
  * because it doesn't translate well with non-binary trees.
  */
 template <typename K, typename V, typename Compare> class trie {
-private:
-  using impl_value_type = const_propogating_ptr<value_ptr<trie>>;
-  using backing_t = std::map<K, impl_value_type, Compare>;
-  template <typename KS>
-  using element_type = std::decay_t<decltype(*std::begin(std::declval<KS>()))>;
-  template <typename KS>
-  using is_collection_t =
-      std::enable_if_t<std::is_same<K, element_type<KS>>::value>;
-
 public:
   using key_type = K;
   using mapped_type = V;
   using key_compare = Compare;
+  using map_type = std::map<K, const_propogating_ptr<value_ptr<trie>>, Compare>;
 
-  using local_iterator = typename backing_t::iterator;
-  using local_const_iterator = typename backing_t::const_iterator;
-  using local_reverse_iterator = typename backing_t::reverse_iterator;
+  using local_iterator = typename map_type::iterator;
+  using local_const_iterator = typename map_type::const_iterator;
+  using local_reverse_iterator = typename map_type::reverse_iterator;
   using local_const_reverse_iterator =
-      typename backing_t::const_reverse_iterator;
+      typename map_type::const_reverse_iterator;
 
   using iterator = trie_iterator<trie, local_iterator>;
   using const_iterator = trie_iterator<trie const, local_const_iterator>;
@@ -72,13 +64,18 @@ public:
       trie_reverse_iterator<trie const, local_const_reverse_iterator>;
 
 private:
+  template <typename KS>
+  using element_type = std::decay_t<decltype(*std::begin(std::declval<KS>()))>;
+  template <typename KS>
+  using is_collection_t =
+      std::enable_if_t<std::is_same<K, element_type<KS>>::value>;
   using impl_iterator = detail::trie_iterator_base<trie, local_iterator>;
   using impl_const_iterator =
       detail::trie_iterator_base<trie const, local_const_iterator>;
 
 private:
   mapped_type value_{};
-  backing_t impl_{};
+  map_type impl_{};
 
 public:
   trie() {}

+ 6 - 6
trie_iterator.hpp

@@ -31,12 +31,6 @@ namespace detail {
   };
 
   template <typename Trie, typename Iter> class trie_iterator_base {
-  private:
-    std::stack<Trie *> parent_trie_;
-    std::vector<typename Trie::key_type> keys_;
-    std::stack<iterator::end_aware_iterator<Iter>> iterators_;
-    bool done_{false};
-
   public:
     using reference = decltype(std::declval<Trie>().value());
     using value_type = std::remove_reference_t<reference>;
@@ -44,6 +38,12 @@ namespace detail {
     using difference_type = std::ptrdiff_t;
     using iterator_category = std::forward_iterator_tag;
 
+  private:
+    std::stack<Trie *> parent_trie_;
+    std::vector<typename Trie::key_type> keys_;
+    std::stack<iterator::end_aware_iterator<Iter>> iterators_;
+    bool done_{false};
+
   public:
     trie_iterator_base() : done_{true} {}
     trie_iterator_base(Trie * tr) { parent_trie_.push(tr); }