diff options
Diffstat (limited to 'third_party/immer/example/vector')
-rw-r--r-- | third_party/immer/example/vector/fizzbuzz.cpp | 34 | ||||
-rw-r--r-- | third_party/immer/example/vector/gc.cpp | 37 | ||||
-rw-r--r-- | third_party/immer/example/vector/intro.cpp | 22 | ||||
-rw-r--r-- | third_party/immer/example/vector/iota-move.cpp | 25 | ||||
-rw-r--r-- | third_party/immer/example/vector/iota-slow.cpp | 25 | ||||
-rw-r--r-- | third_party/immer/example/vector/iota-transient-std.cpp | 29 | ||||
-rw-r--r-- | third_party/immer/example/vector/iota-transient.cpp | 27 | ||||
-rw-r--r-- | third_party/immer/example/vector/move.cpp | 35 | ||||
-rw-r--r-- | third_party/immer/example/vector/vector.cpp | 53 |
9 files changed, 0 insertions, 287 deletions
diff --git a/third_party/immer/example/vector/fizzbuzz.cpp b/third_party/immer/example/vector/fizzbuzz.cpp deleted file mode 100644 index c7765a6200a0..000000000000 --- a/third_party/immer/example/vector/fizzbuzz.cpp +++ /dev/null @@ -1,34 +0,0 @@ -// -// immer: immutable data structures for C++ -// Copyright (C) 2016, 2017, 2018 Juan Pedro Bolivar Puente -// -// This software is distributed under the Boost Software License, Version 1.0. -// See accompanying file LICENSE or copy at http://boost.org/LICENSE_1_0.txt -// - -#include <immer/vector.hpp> - -#include <iostream> -#include <string> - -// include:fizzbuzz/start -immer::vector<std::string> -fizzbuzz(immer::vector<std::string> v, int first, int last) -{ - for (auto i = first; i < last; ++i) - v = std::move(v).push_back( - i % 15 == 0 ? "FizzBuzz" - : i % 5 == 0 ? "Bizz" - : i % 3 == 0 ? "Fizz" : - /* else */ std::to_string(i)); - return v; -} -// include:fizzbuzz/end - -int main() -{ - auto v = fizzbuzz({}, 0, 100); - std::copy(v.begin(), - v.end(), - std::ostream_iterator<std::string>{std::cout, "\n"}); -} diff --git a/third_party/immer/example/vector/gc.cpp b/third_party/immer/example/vector/gc.cpp deleted file mode 100644 index 2bc4d5116f42..000000000000 --- a/third_party/immer/example/vector/gc.cpp +++ /dev/null @@ -1,37 +0,0 @@ -// -// immer: immutable data structures for C++ -// Copyright (C) 2016, 2017, 2018 Juan Pedro Bolivar Puente -// -// This software is distributed under the Boost Software License, Version 1.0. -// See accompanying file LICENSE or copy at http://boost.org/LICENSE_1_0.txt -// - -// include:example/start -#include <immer/heap/gc_heap.hpp> -#include <immer/heap/heap_policy.hpp> -#include <immer/memory_policy.hpp> -#include <immer/refcount/no_refcount_policy.hpp> -#include <immer/vector.hpp> - -#include <iostream> - -// declare a memory policy for using a tracing garbage collector -using gc_policy = immer::memory_policy<immer::heap_policy<immer::gc_heap>, - immer::no_refcount_policy, - immer::gc_transience_policy, - false>; - -// alias the vector type so we are not concerned about memory policies -// in the places where we actually use it -template <typename T> -using my_vector = immer::vector<T, gc_policy>; - -int main() -{ - auto v = - my_vector<const char*>().push_back("hello, ").push_back("world!\n"); - - for (auto s : v) - std::cout << s; -} -// include:example/end diff --git a/third_party/immer/example/vector/intro.cpp b/third_party/immer/example/vector/intro.cpp deleted file mode 100644 index ca832e606552..000000000000 --- a/third_party/immer/example/vector/intro.cpp +++ /dev/null @@ -1,22 +0,0 @@ -// -// immer: immutable data structures for C++ -// Copyright (C) 2016, 2017, 2018 Juan Pedro Bolivar Puente -// -// This software is distributed under the Boost Software License, Version 1.0. -// See accompanying file LICENSE or copy at http://boost.org/LICENSE_1_0.txt -// - -// include:intro/start -#include <immer/vector.hpp> -int main() -{ - const auto v0 = immer::vector<int>{}; - const auto v1 = v0.push_back(13); - assert((v0 == immer::vector<int>{})); - assert((v1 == immer::vector<int>{13})); - - const auto v2 = v1.set(0, 42); - assert(v1[0] == 13); - assert(v2[0] == 42); -} -// include:intro/end diff --git a/third_party/immer/example/vector/iota-move.cpp b/third_party/immer/example/vector/iota-move.cpp deleted file mode 100644 index 3d03ba5307f5..000000000000 --- a/third_party/immer/example/vector/iota-move.cpp +++ /dev/null @@ -1,25 +0,0 @@ -// -// immer: immutable data structures for C++ -// Copyright (C) 2016, 2017, 2018 Juan Pedro Bolivar Puente -// -// This software is distributed under the Boost Software License, Version 1.0. -// See accompanying file LICENSE or copy at http://boost.org/LICENSE_1_0.txt -// - -#include <immer/vector.hpp> -#include <iostream> - -// include:myiota/start -immer::vector<int> myiota(immer::vector<int> v, int first, int last) -{ - for (auto i = first; i < last; ++i) - v = std::move(v).push_back(i); - return v; -} -// include:myiota/end - -int main() -{ - auto v = myiota({}, 0, 100); - std::copy(v.begin(), v.end(), std::ostream_iterator<int>{std::cout, "\n"}); -} diff --git a/third_party/immer/example/vector/iota-slow.cpp b/third_party/immer/example/vector/iota-slow.cpp deleted file mode 100644 index a311b7a7ff08..000000000000 --- a/third_party/immer/example/vector/iota-slow.cpp +++ /dev/null @@ -1,25 +0,0 @@ -// -// immer: immutable data structures for C++ -// Copyright (C) 2016, 2017, 2018 Juan Pedro Bolivar Puente -// -// This software is distributed under the Boost Software License, Version 1.0. -// See accompanying file LICENSE or copy at http://boost.org/LICENSE_1_0.txt -// - -#include <immer/vector.hpp> -#include <iostream> - -// include:myiota/start -immer::vector<int> myiota(immer::vector<int> v, int first, int last) -{ - for (auto i = first; i < last; ++i) - v = v.push_back(i); - return v; -} -// include:myiota/end - -int main() -{ - auto v = myiota({}, 0, 100); - std::copy(v.begin(), v.end(), std::ostream_iterator<int>{std::cout, "\n"}); -} diff --git a/third_party/immer/example/vector/iota-transient-std.cpp b/third_party/immer/example/vector/iota-transient-std.cpp deleted file mode 100644 index 451f44a10306..000000000000 --- a/third_party/immer/example/vector/iota-transient-std.cpp +++ /dev/null @@ -1,29 +0,0 @@ -// -// immer: immutable data structures for C++ -// Copyright (C) 2016, 2017, 2018 Juan Pedro Bolivar Puente -// -// This software is distributed under the Boost Software License, Version 1.0. -// See accompanying file LICENSE or copy at http://boost.org/LICENSE_1_0.txt -// - -#include <immer/vector.hpp> -#include <immer/vector_transient.hpp> - -#include <algorithm> -#include <iostream> - -// include:myiota/start -immer::vector<int> myiota(immer::vector<int> v, int first, int last) -{ - auto t = v.transient(); - std::generate_n( - std::back_inserter(t), last - first, [&] { return first++; }); - return t.persistent(); -} -// include:myiota/end - -int main() -{ - auto v = myiota({}, 0, 100); - std::copy(v.begin(), v.end(), std::ostream_iterator<int>{std::cout, "\n"}); -} diff --git a/third_party/immer/example/vector/iota-transient.cpp b/third_party/immer/example/vector/iota-transient.cpp deleted file mode 100644 index d49b14e5798d..000000000000 --- a/third_party/immer/example/vector/iota-transient.cpp +++ /dev/null @@ -1,27 +0,0 @@ -// -// immer: immutable data structures for C++ -// Copyright (C) 2016, 2017, 2018 Juan Pedro Bolivar Puente -// -// This software is distributed under the Boost Software License, Version 1.0. -// See accompanying file LICENSE or copy at http://boost.org/LICENSE_1_0.txt -// - -#include <immer/vector.hpp> -#include <immer/vector_transient.hpp> -#include <iostream> - -// include:myiota/start -immer::vector<int> myiota(immer::vector<int> v, int first, int last) -{ - auto t = v.transient(); - for (auto i = first; i < last; ++i) - t.push_back(i); - return t.persistent(); -} -// include:myiota/end - -int main() -{ - auto v = myiota({}, 0, 100); - std::copy(v.begin(), v.end(), std::ostream_iterator<int>{std::cout, "\n"}); -} diff --git a/third_party/immer/example/vector/move.cpp b/third_party/immer/example/vector/move.cpp deleted file mode 100644 index 7eb815b62a6e..000000000000 --- a/third_party/immer/example/vector/move.cpp +++ /dev/null @@ -1,35 +0,0 @@ -// -// immer: immutable data structures for C++ -// Copyright (C) 2016, 2017, 2018 Juan Pedro Bolivar Puente -// -// This software is distributed under the Boost Software License, Version 1.0. -// See accompanying file LICENSE or copy at http://boost.org/LICENSE_1_0.txt -// - -#include <cassert> -#include <immer/vector.hpp> - -// include:move-bad/start -immer::vector<int> do_stuff(const immer::vector<int> v) -{ - return std::move(v).push_back(42); -} -// include:move-bad/end - -// include:move-good/start -immer::vector<int> do_stuff_better(immer::vector<int> v) -{ - return std::move(v).push_back(42); -} -// include:move-good/end - -int main() -{ - auto v = immer::vector<int>{}; - auto v1 = do_stuff(v); - auto v2 = do_stuff_better(v); - assert(v1.size() == 1); - assert(v2.size() == 1); - assert(v1[0] == 42); - assert(v2[0] == 42); -} diff --git a/third_party/immer/example/vector/vector.cpp b/third_party/immer/example/vector/vector.cpp deleted file mode 100644 index c59c2d1d170b..000000000000 --- a/third_party/immer/example/vector/vector.cpp +++ /dev/null @@ -1,53 +0,0 @@ -// -// immer: immutable data structures for C++ -// Copyright (C) 2016, 2017, 2018 Juan Pedro Bolivar Puente -// -// This software is distributed under the Boost Software License, Version 1.0. -// See accompanying file LICENSE or copy at http://boost.org/LICENSE_1_0.txt -// - -#include <cassert> -#include <immer/vector.hpp> - -int main() -{ - { - // include:push-back/start - auto v1 = immer::vector<int>{1}; - auto v2 = v1.push_back(8); - - assert((v1 == immer::vector<int>{1})); - assert((v2 == immer::vector<int>{1, 8})); - // include:push-back/end - } - - { - // include:set/start - auto v1 = immer::vector<int>{1, 2, 3}; - auto v2 = v1.set(0, 5); - - assert((v1 == immer::vector<int>{1, 2, 3})); - assert((v2 == immer::vector<int>{5, 2, 3})); - // include:set/end - } - - { - // include:update/start - auto v1 = immer::vector<int>{1, 2, 3, 4}; - auto v2 = v1.update(2, [&](auto l) { return ++l; }); - - assert((v1 == immer::vector<int>{1, 2, 3, 4})); - assert((v2 == immer::vector<int>{1, 2, 4, 4})); - // include:update/end - } - - { - // include:take/start - auto v1 = immer::vector<int>{1, 2, 3, 4, 5, 6}; - auto v2 = v1.take(3); - - assert((v1 == immer::vector<int>{1, 2, 3, 4, 5, 6})); - assert((v2 == immer::vector<int>{1, 2, 3})); - // include:take/end - } -} |