From 0bae01fd3f0a896bb052b15bc5d402d672d21599 Mon Sep 17 00:00:00 2001 From: King_DuckZ Date: Mon, 30 Jan 2017 18:40:05 +0000 Subject: [PATCH 01/45] Start writing the new coordinates classes. I'm not sure I'm going down the right path, so I'm committing what I have so far and putting this on hold. --- CMakeLists.txt | 1 + src/coordinates.hpp | 53 +++++++++++++++++++ src/singlecoordinate.cpp | 26 +++++++++ src/singlecoordinate.hpp | 110 +++++++++++++++++++++++++++++++++++++++ 4 files changed, 190 insertions(+) create mode 100644 src/coordinates.hpp create mode 100644 src/singlecoordinate.cpp create mode 100644 src/singlecoordinate.hpp diff --git a/CMakeLists.txt b/CMakeLists.txt index ddae753..cd07e60 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -70,6 +70,7 @@ add_executable(${PROJECT_NAME} src/worldsizenotifiable.cpp src/worlditems.cpp src/moveable.cpp + src/singlecoordinate.cpp ) target_include_directories(${PROJECT_NAME} SYSTEM diff --git a/src/coordinates.hpp b/src/coordinates.hpp new file mode 100644 index 0000000..d4d0b7a --- /dev/null +++ b/src/coordinates.hpp @@ -0,0 +1,53 @@ +/* + Copyright 2016, 2017 Michele "King_DuckZ" Santullo + + This file is part of MyCurry. + + MyCurry is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + MyCurry is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with MyCurry. If not, see . +*/ + +#pragma once + +#include "vector.hpp" +#include "singlecoordinate.hpp" + +namespace vwr { + template <> + struct VectorWrapperInfo> { + enum { dimensions = 2 }; + typedef ::curry::SingleCoordinate scalar_type; + typedef std::array vector_type; + static scalar_type& get_at (size_t parIndex, vector_type& parVector) { + return parVector[parIndex]; + } + }; +} //namespace vwr + +namespace curry { + using vec2c = vwr::Vec>; + + inline vec2i to_screen_coordinates (vec2c parVec, const vec2i& parWorldOffset, vec2us parTileSize) { + return vec2i( + parVec.x().screen_coordinate(parWorldOffset.x(), parTileSize.x()), + parVec.y().screen_coordinate(parWorldOffset.y(), parTileSize.y()) + ); + } + + inline vec2us to_tiles (vec2c parVec) { + return vec2us( + parVec.x().tile(), + parVec.y().tile() + ); + } +} //namespace curry diff --git a/src/singlecoordinate.cpp b/src/singlecoordinate.cpp new file mode 100644 index 0000000..781d3dc --- /dev/null +++ b/src/singlecoordinate.cpp @@ -0,0 +1,26 @@ +/* + Copyright 2016, 2017 Michele "King_DuckZ" Santullo + + This file is part of MyCurry. + + MyCurry is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + MyCurry is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with MyCurry. If not, see . +*/ + +#include "singlecoordinate.hpp" +#include "coordinates.hpp" + +namespace curry { + static_assert(implem::Log2<256>::result == 8, "Wrong logarithm result"); + static_assert(implem::Log2<255>::result == 7, "Wrong logarithm result"); +} //namespace curry diff --git a/src/singlecoordinate.hpp b/src/singlecoordinate.hpp new file mode 100644 index 0000000..2ca9460 --- /dev/null +++ b/src/singlecoordinate.hpp @@ -0,0 +1,110 @@ +/* + Copyright 2016, 2017 Michele "King_DuckZ" Santullo + + This file is part of MyCurry. + + MyCurry is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + MyCurry is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with MyCurry. If not, see . +*/ + +#pragma once + +#include "vector.hpp" +#include +#include +#include + +namespace curry { + namespace implem { + template 0)> + struct Log2; + + template + struct Log2 { + static constexpr const uint32_t b[5] = {0x2, 0xc, 0xf0, 0xff00, 0xffff0000}; + static constexpr const uint32_t S[5] = {1, 2, 4, 8, 16}; + enum { + result = Log2<(V & b[I - 1] ? V >> S[I - 1] : V), (V & b[I - 1] ? R | S[I - 1] : R), I - 1>::result + }; + }; + template + struct Log2 { + enum { + result = R + }; + }; + + template + struct NextPow2 { + static_assert(V > 0, "V must be greater than zero"); + enum { + result = (1U << Log2::result) + 1 + }; + }; + } //namespace implem + + class SingleCoordinate { + public: + SingleCoordinate() = default; + SingleCoordinate (const SingleCoordinate&) = default; + explicit SingleCoordinate (uint32_t parTile); + SingleCoordinate (uint32_t parTile, uint32_t parOffset); + ~SingleCoordinate() noexcept = default; + + int32_t screen_coordinate (int32_t parWorldOffset, uint32_t parTileSize) const; + uint32_t tile() const; + + private: + static constexpr const auto MaxTileSize = 128U; + static constexpr const auto OffsetBits = implem::Log2::result; + static constexpr const auto OffsetMask = implem::NextPow2::result - 1; + + uint32_t m_data; + }; + + inline int32_t SingleCoordinate::screen_coordinate (int32_t parWorldOffset, uint32_t parTileSize) const { + assert(parTileSize <= MaxTileSize); + return ((m_data - parWorldOffset) & OffsetMask) + + (static_cast(m_data - parWorldOffset) >> OffsetBits) * parTileSize; + } + + inline uint32_t SingleCoordinate::tile() const { + int beyond_tile; + const int offset = m_data & OffsetMask; + asm( + "xorl %%eax,%%eax\n\t" + "subl %1,%%eax\n\t" + "xorl %%eax,%%eax\n\t" + "adcl %%eax,0\n\t" + "movl %%eax,%0" + :"=r"(beyond_tile) + :"r"(offset) + :"%eax" + ); + assert(0 == beyond_tile or 1 == beyond_tile); + return (m_data >> OffsetBits) + beyond_tile; + } + + SingleCoordinate::SingleCoordinate (uint32_t parTile) : + m_data(parTile << OffsetBits) + { + assert(this->tile() == parTile); + } + + SingleCoordinate::SingleCoordinate (uint32_t parTile, uint32_t parOffset) : + m_data((parTile << OffsetBits) + (parOffset & OffsetMask)) + { + assert((not parOffset and this->tile() == parTile) or (this->tile() == parTile + 1)); + assert((m_data bitand OffsetMask) == parOffset); + } +} //namespace curry From 8e1c19df47d4a782fc1ffb21dbcefd9edae3fc50 Mon Sep 17 00:00:00 2001 From: King_DuckZ Date: Wed, 8 Feb 2017 16:30:48 +0000 Subject: [PATCH 02/45] Add an fsgn() function. fsgn() returns -1/0/1 depending on the parameter's sign. --- CMakeLists.txt | 1 + src/fsgn.cpp | 47 +++++++++++++++++++++++++++++++++++++++++++++++ src/fsgn.hpp | 24 ++++++++++++++++++++++++ 3 files changed, 72 insertions(+) create mode 100644 src/fsgn.cpp create mode 100644 src/fsgn.hpp diff --git a/CMakeLists.txt b/CMakeLists.txt index ddae753..b6cd827 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -70,6 +70,7 @@ add_executable(${PROJECT_NAME} src/worldsizenotifiable.cpp src/worlditems.cpp src/moveable.cpp + src/fsgn.cpp ) target_include_directories(${PROJECT_NAME} SYSTEM diff --git a/src/fsgn.cpp b/src/fsgn.cpp new file mode 100644 index 0000000..fb16340 --- /dev/null +++ b/src/fsgn.cpp @@ -0,0 +1,47 @@ +/* + Copyright 2016, 2017 Michele "King_DuckZ" Santullo + + This file is part of MyCurry. + + MyCurry is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + MyCurry is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with MyCurry. If not, see . +*/ + +#include "fsgn.hpp" +#include + +namespace curry { + //float fsgn (float parIn) { + // if (parIn < 0.0f) return -1.0f; + // if (parIn > 0.0f) return 1.0f; + // return 0.0f; + //} + + float fsgn (float parIn) { + static_assert(sizeof(uint32_t) == sizeof(float), "Unexpected float size"); + union { + uint32_t i; + float f; + } in, r; + + in.f = parIn; + if ((in.i & 0x7FFFFFFF) == 0) { + return 0.0f; + } + else { + r.f = 1.0f; + r.i |= in.i & 0x80000000; + return r.f; + } + } +} //namespace curry diff --git a/src/fsgn.hpp b/src/fsgn.hpp new file mode 100644 index 0000000..28f3f76 --- /dev/null +++ b/src/fsgn.hpp @@ -0,0 +1,24 @@ +/* + Copyright 2016, 2017 Michele "King_DuckZ" Santullo + + This file is part of MyCurry. + + MyCurry is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + MyCurry is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with MyCurry. If not, see . +*/ + +#pragma once + +namespace curry { + float fsgn (float parIn); +} //namespace curry From 5a8c3fcac0b5f5e09d2077a1cf6d9c1d891cfccf Mon Sep 17 00:00:00 2001 From: King_DuckZ Date: Wed, 8 Feb 2017 16:32:55 +0000 Subject: [PATCH 03/45] Add Catch for unit testing. --- .gitmodules | 3 +++ CMakeLists.txt | 7 +++++++ lib/Catch | 1 + test/unit/CMakeLists.txt | 28 ++++++++++++++++++++++++++++ test/unit/main.cpp | 21 +++++++++++++++++++++ 5 files changed, 60 insertions(+) create mode 160000 lib/Catch create mode 100644 test/unit/CMakeLists.txt create mode 100644 test/unit/main.cpp diff --git a/.gitmodules b/.gitmodules index 070d332..f6ea797 100644 --- a/.gitmodules +++ b/.gitmodules @@ -4,3 +4,6 @@ [submodule "lib/DeathHandler"] path = lib/DeathHandler url = https://github.com/vmarkovtsev/DeathHandler.git +[submodule "lib/Catch"] + path = lib/Catch + url = https://github.com/philsquared/Catch.git diff --git a/CMakeLists.txt b/CMakeLists.txt index b6cd827..afe2770 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,6 +5,7 @@ list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/include") include(TargetArch) include(FindPkgConfig) +include(CTest) set(common_gcc_flags "-Wall -Wextra -pedantic -Wconversion") set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${common_gcc_flags} -O0") @@ -119,3 +120,9 @@ target_compile_definitions(${PROJECT_NAME} ) configure_file(src/${PROJECT_NAME}Config.h.in ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.h) + +if (BUILD_TESTING) + set(CATCH_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/lib/Catch") + set(MYCURRY_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/src") + add_subdirectory(test/unit) +endif() diff --git a/lib/Catch b/lib/Catch new file mode 160000 index 0000000..4d0cd60 --- /dev/null +++ b/lib/Catch @@ -0,0 +1 @@ +Subproject commit 4d0cd602e37197f1502a419142d8f0167d4a063a diff --git a/test/unit/CMakeLists.txt b/test/unit/CMakeLists.txt new file mode 100644 index 0000000..548fe84 --- /dev/null +++ b/test/unit/CMakeLists.txt @@ -0,0 +1,28 @@ +project(mycurry_unit_test CXX) + +set(CMAKE_CXX_STANDARD 14) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +add_executable(${PROJECT_NAME} + main.cpp +) + +target_compile_definitions(${PROJECT_NAME} + PRIVATE VWR_WITH_IMPLICIT_CONVERSIONS=1 + PRIVATE VWR_EXTRA_ACCESSORS +) + +target_include_directories(${PROJECT_NAME} + PRIVATE ${CATCH_SOURCE_DIR}/single_include + PRIVATE ${MYCURRY_SOURCE_DIR} + PRIVATE ${CMAKE_SOURCE_DIR}/lib/vectorwrapper/include + PRIVATE ${CMAKE_SOURCE_DIR}/lib/tree-2.81/src +) + +add_test( + NAME CloonelJumpTest + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + COMMAND ${PROJECT_NAME} +) + + diff --git a/test/unit/main.cpp b/test/unit/main.cpp new file mode 100644 index 0000000..a35d71c --- /dev/null +++ b/test/unit/main.cpp @@ -0,0 +1,21 @@ +/* + Copyright 2016, 2017 Michele "King_DuckZ" Santullo + + This file is part of MyCurry. + + MyCurry is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + MyCurry is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with MyCurry. If not, see . +*/ + +#define CATCH_CONFIG_MAIN +#include "catch.hpp" From cb8654ac7e6013a362287c970ebb24ac9c897767 Mon Sep 17 00:00:00 2001 From: King_DuckZ Date: Wed, 8 Feb 2017 16:36:36 +0000 Subject: [PATCH 04/45] Add a TileProperty struct so one can store info about tiles. --- src/csvloader.cpp | 16 ++++++++++++++++ src/csvloader.hpp | 2 ++ src/ingamescene.cpp | 1 + src/tileproperty.hpp | 31 +++++++++++++++++++++++++++++++ src/worldgrid.cpp | 11 +++++++++++ src/worldgrid.hpp | 4 ++++ 6 files changed, 65 insertions(+) create mode 100644 src/tileproperty.hpp diff --git a/src/csvloader.cpp b/src/csvloader.cpp index ceb9a78..5f9f2d4 100644 --- a/src/csvloader.cpp +++ b/src/csvloader.cpp @@ -35,6 +35,7 @@ #include #include #include +#include namespace qi = boost::spirit::qi; @@ -47,6 +48,7 @@ namespace curry { //auto csv_parser = *((qi::int_ % ',') >> -qi::eol) >> qi::eoi; CSVJointData out_csv; std::size_t row_count = 0; + TileIndex largest_tile_idx = 0; for (auto& csv_path : parCsvPath) { std::ifstream f_map(csv_path); @@ -66,6 +68,9 @@ namespace curry { oss << "Error parsing csv \"" << csv_path << "\""; throw std::runtime_error(oss.str()); } + if (not curr_data.empty()) { + largest_tile_idx = std::max(*std::max_element(curr_data.begin(), curr_data.end()), largest_tile_idx); + } out_csv.tables.emplace_back(std::move(curr_data)); } @@ -76,6 +81,17 @@ namespace curry { else { out_csv.height = out_csv.width = 0; } + + out_csv.tile_properties.resize(static_cast(largest_tile_idx) + 1); + +#if !defined(NDEBUG) + for (const auto& table : out_csv.tables) { + for (const auto& val : table) { + const auto casted_val = static_cast(val); + assert(val < 0 or casted_val < out_csv.tile_properties.size()); + } + } +#endif return out_csv; } } //namespace curry diff --git a/src/csvloader.hpp b/src/csvloader.hpp index 587e9cb..ce3672d 100644 --- a/src/csvloader.hpp +++ b/src/csvloader.hpp @@ -20,6 +20,7 @@ #pragma once #include "tileindextype.hpp" +#include "tileproperty.hpp" #include #include #include @@ -31,6 +32,7 @@ namespace curry { CSVJointData (const CSVJointData&) = delete; std::vector> tables; + std::vector tile_properties; //not filled in with real values uint16_t width; uint16_t height; }; diff --git a/src/ingamescene.cpp b/src/ingamescene.cpp index d2a15cd..e08062e 100644 --- a/src/ingamescene.cpp +++ b/src/ingamescene.cpp @@ -85,6 +85,7 @@ namespace curry { vec2us world_size(tiles.width, tiles.height); m_local_data->world.set_layers(world_size, tiles.tables); + m_local_data->world.set_tile_properties(tiles.tile_properties); #if !defined(NDEBUG) std::cout << "World size set to " << world_size << '\n'; #endif diff --git a/src/tileproperty.hpp b/src/tileproperty.hpp new file mode 100644 index 0000000..35717fa --- /dev/null +++ b/src/tileproperty.hpp @@ -0,0 +1,31 @@ +/* + Copyright 2016, 2017 Michele "King_DuckZ" Santullo + + This file is part of MyCurry. + + MyCurry is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + MyCurry is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with MyCurry. If not, see . +*/ + +#pragma once + +namespace curry { + struct TileProperty { + TileProperty() : + walkable(true) + { + } + + bool walkable; + }; +} //namespace curry diff --git a/src/worldgrid.cpp b/src/worldgrid.cpp index 6e845c8..6195993 100644 --- a/src/worldgrid.cpp +++ b/src/worldgrid.cpp @@ -118,6 +118,17 @@ namespace curry { m_world_size_watchers.Remove(parTicket); } + void WorldGrid::set_tile_properties (const std::vector& parProperties) { + m_tile_properties.resize(parProperties.size()); + std::copy(parProperties.begin(), parProperties.end(), m_tile_properties.begin()); + } + + const TileProperty& WorldGrid::tile_property (const TileIndex* parIndex) { + assert(parIndex); + assert(static_cast(*parIndex) < m_tile_properties.size()); + return m_tile_properties[static_cast(*parIndex)]; + } + vec2i world_size_pixel (const WorldGrid& parWorld) { return parWorld.tile_size() * parWorld.world_size(); } diff --git a/src/worldgrid.hpp b/src/worldgrid.hpp index 1dd94af..dc67973 100644 --- a/src/worldgrid.hpp +++ b/src/worldgrid.hpp @@ -22,6 +22,7 @@ #include "vector.hpp" #include "tileindextype.hpp" #include "observersmanager.hpp" +#include "tileproperty.hpp" #include #include @@ -40,6 +41,8 @@ namespace curry { const TileIndex* tile (const vec2us& parIndex) const; void add_layer (vec2us parWorldSize, const std::vector& parLayer); void set_layers (vec2us parWorldSize, const std::vector>& parLayers); + void set_tile_properties (const std::vector& parProperties); + const TileProperty& tile_property (const TileIndex* parIndex); void unload_layers(); WorldSizeWatcherTicket register_observer (WorldSizeNotifiable* parWatcher); void unregister_observer (WorldSizeWatcherTicket parTicket); @@ -51,6 +54,7 @@ namespace curry { cloonel::ObserversManager m_world_size_watchers; std::vector m_layers; + std::vector m_tile_properties; vec2us m_tile_size; vec2us m_world_size; uint16_t m_layer_count; From 24d67c7cd6d91c6019650ce4ac29f7f98535ed9f Mon Sep 17 00:00:00 2001 From: King_DuckZ Date: Wed, 8 Feb 2017 16:37:12 +0000 Subject: [PATCH 05/45] Experimental code that turned out to be too slow and got scrapped. --- docs/assembly_references.txt | 26 +++++++++++ docs/old_code/asm/x86_64/fsgn.s | 48 +++++++++++++++++++ docs/old_code/fsgn_timing.cpp | 83 +++++++++++++++++++++++++++++++++ docs/old_code/fsgn_timing.hpp | 28 +++++++++++ 4 files changed, 185 insertions(+) create mode 100644 docs/assembly_references.txt create mode 100644 docs/old_code/asm/x86_64/fsgn.s create mode 100644 docs/old_code/fsgn_timing.cpp create mode 100644 docs/old_code/fsgn_timing.hpp diff --git a/docs/assembly_references.txt b/docs/assembly_references.txt new file mode 100644 index 0000000..5f06673 --- /dev/null +++ b/docs/assembly_references.txt @@ -0,0 +1,26 @@ +EFLAGS bit meaning +http://reverseengineering.stackexchange.com/a/9222 + +GCC inline assembly +http://ibiblio.org/gferg/ldp/GCC-Inline-Assembly-HOWTO.html + +Popping the FPU stack +http://stackoverflow.com/a/33575875/768582 + +Decoding a sample snippet of asm +http://stackoverflow.com/questions/9186150/decoding-and-understanding-assembly-code + +GNU assembler examples +http://cs.lmu.edu/~ray/notes/gasexamples/ + +GCC function attributes (see "naked") +https://gcc.gnu.org/onlinedocs/gcc-4.3.5/gcc/Function-Attributes.html + +Fast floating point sign +http://stackoverflow.com/a/2508911/768582 + +AMD assembly reference +http://developer.amd.com/wordpress/media/2012/10/26569_APM_v51.pdf + +Moving values between SSE and FPU +http://stackoverflow.com/questions/37567154/intel-x86-64-assembly-how-to-move-between-x87-and-sse2-calculating-arctangent#37573264 diff --git a/docs/old_code/asm/x86_64/fsgn.s b/docs/old_code/asm/x86_64/fsgn.s new file mode 100644 index 0000000..ba827a0 --- /dev/null +++ b/docs/old_code/asm/x86_64/fsgn.s @@ -0,0 +1,48 @@ +# +# Copyright 2016, 2017 Michele "King_DuckZ" Santullo + +# This file is part of MyCurry. + +# MyCurry is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +# MyCurry is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with MyCurry. If not, see . +# + +.data +minus1: .float -1.0 + +.global fsgn_asm + +.text +fsgn_asm: + subq $24,%rsp + movss %xmm0,(%rsp) + fldz + flds (%rsp) + fcomp + + fstsw %ax + sahf + + fld1 + fld minus1 + + fcmovnbe %st(1),%st + fcmove %st(2),%st + + fstps (%rsp) + fninit + movss (%rsp),%xmm0 + + #xorpd %xmm0,%xmm0 + addq $24,%rsp + ret diff --git a/docs/old_code/fsgn_timing.cpp b/docs/old_code/fsgn_timing.cpp new file mode 100644 index 0000000..1a1886f --- /dev/null +++ b/docs/old_code/fsgn_timing.cpp @@ -0,0 +1,83 @@ +/* + Copyright 2016, 2017 Michele "King_DuckZ" Santullo + + This file is part of MyCurry. + + MyCurry is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + MyCurry is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with MyCurry. If not, see . +*/ + +#include "fsgn_timing.hpp" +#include "fsgn.hpp" +#if defined(FSGN_WITH_TIMING) +# include +# include +# include +# include +# include +#endif + +namespace curry { +#if defined(FSGN_WITH_TIMING) + void do_fsgn_timing() { + constexpr const auto count = 1000000U; + std::minstd_rand rand; + std::vector inputs(count); + std::generate(inputs.begin(), inputs.end(), [&](){ + return static_cast(rand()) - static_cast(rand.max()) / 2.0f; + }); + + //fast_fsgn + { + float result = 0.0f; + + auto t_start = std::chrono::high_resolution_clock::now(); + for (auto z = 0U; z < count; ++z) { + result += fast_fsgn(inputs[z]); + } + auto t_end = std::chrono::high_resolution_clock::now(); + + std::cout << "fast_fsgn result: " << result << " in " << + std::chrono::duration(t_end - t_start).count() << '\n'; + } + + //fsgn_asm + { + float result = 0.0f; + + auto t_start = std::chrono::high_resolution_clock::now(); + for (auto z = 0U; z < count; ++z) { + result += fsgn_asm(inputs[z]); + } + auto t_end = std::chrono::high_resolution_clock::now(); + + std::cout << "fsgn_asm result: " << result << " in " << + std::chrono::duration(t_end - t_start).count() << '\n'; + } + + //fsgn + { + float result = 0.0f; + + auto t_start = std::chrono::high_resolution_clock::now(); + for (auto z = 0U; z < count; ++z) { + result += fsgn(inputs[z]); + } + auto t_end = std::chrono::high_resolution_clock::now(); + + std::cout << "fsgn result: " << result << " in " << + std::chrono::duration(t_end - t_start).count() << '\n'; + } + } +#endif +} //namespace curry diff --git a/docs/old_code/fsgn_timing.hpp b/docs/old_code/fsgn_timing.hpp new file mode 100644 index 0000000..7843658 --- /dev/null +++ b/docs/old_code/fsgn_timing.hpp @@ -0,0 +1,28 @@ +/* + Copyright 2016, 2017 Michele "King_DuckZ" Santullo + + This file is part of MyCurry. + + MyCurry is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + MyCurry is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with MyCurry. If not, see . +*/ + +#pragma once + +#define FSGN_WITH_TIMING + +namespace curry { +#if defined(FSGN_WITH_TIMING) + void do_fsgn_timing(); +#endif +} //namespace curry From f91ff6625fbc4d28b2fbe637c3ee8bc0995def9c Mon Sep 17 00:00:00 2001 From: King_DuckZ Date: Wed, 8 Feb 2017 16:37:59 +0000 Subject: [PATCH 06/45] No need for requiring int position here. --- src/worldgrid.cpp | 4 ++-- src/worldgrid.hpp | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/worldgrid.cpp b/src/worldgrid.cpp index 6195993..8f11da0 100644 --- a/src/worldgrid.cpp +++ b/src/worldgrid.cpp @@ -133,10 +133,10 @@ namespace curry { return parWorld.tile_size() * parWorld.world_size(); } - vec2us pixel_to_world_tile (const WorldGrid& parWorld, const vec2i& parPos) { + vec2us pixel_to_world_tile (const WorldGrid& parWorld, const vec2f& parPos) { assert(position_is_on_map(parWorld, parPos)); return vector_cast( - parPos / vector_cast(parWorld.tile_size()) + parPos / vector_cast(parWorld.tile_size()) ); } diff --git a/src/worldgrid.hpp b/src/worldgrid.hpp index dc67973..00e08c7 100644 --- a/src/worldgrid.hpp +++ b/src/worldgrid.hpp @@ -61,6 +61,6 @@ namespace curry { }; vec2i world_size_pixel (const WorldGrid& parWorld); - vec2us pixel_to_world_tile (const WorldGrid& parWorld, const vec2i& parPos); + vec2us pixel_to_world_tile (const WorldGrid& parWorld, const vec2f& parPos); bool position_is_on_map (const WorldGrid& parWorld, const vec2i& parPos); } //namespace curry From e2d307da522ef4d7ccaf762aa3c1e5465593c52e Mon Sep 17 00:00:00 2001 From: King_DuckZ Date: Wed, 8 Feb 2017 16:39:46 +0000 Subject: [PATCH 07/45] Initial WiP implementation of 2D grid raytracing. Not working. --- CMakeLists.txt | 3 +- lib/vectorwrapper | 2 +- src/character.cpp | 30 +++++++-- src/grid_raytrace.cpp | 124 ++++++++++++++++++++++++++++++++++++ src/grid_raytrace.hpp | 39 ++++++++++++ test/unit/CMakeLists.txt | 4 ++ test/unit/grid_raytrace.cpp | 76 ++++++++++++++++++++++ 7 files changed, 271 insertions(+), 7 deletions(-) create mode 100644 src/grid_raytrace.cpp create mode 100644 src/grid_raytrace.hpp create mode 100644 test/unit/grid_raytrace.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index afe2770..f98758e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,7 +7,7 @@ include(TargetArch) include(FindPkgConfig) include(CTest) -set(common_gcc_flags "-Wall -Wextra -pedantic -Wconversion") +set(common_gcc_flags "-Wall -Wextra -pedantic -Wconversion -ffast-math") set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${common_gcc_flags} -O0") set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${common_gcc_flags}") set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} ${common_gcc_flags} -O0") @@ -72,6 +72,7 @@ add_executable(${PROJECT_NAME} src/worlditems.cpp src/moveable.cpp src/fsgn.cpp + src/grid_raytrace.cpp ) target_include_directories(${PROJECT_NAME} SYSTEM diff --git a/lib/vectorwrapper b/lib/vectorwrapper index fc7b666..aaa8e75 160000 --- a/lib/vectorwrapper +++ b/lib/vectorwrapper @@ -1 +1 @@ -Subproject commit fc7b66642959e7de19aade010b6ebc1e59ba4b7a +Subproject commit aaa8e75dc125e4116bed76ed14cbfc028bf6e9c7 diff --git a/src/character.cpp b/src/character.cpp index 971e4f9..7af063c 100644 --- a/src/character.cpp +++ b/src/character.cpp @@ -21,13 +21,12 @@ #include "inputbag.hpp" #include "gameactions.hpp" #include "worldgrid.hpp" +#include "grid_raytrace.hpp" #include #include +#include namespace curry { - namespace { - } //unnamed namespace - Character::Character (cloonel::InputBag* parInputBag, const WorldSizeNotifiable::DeferredRegister& parDeferredRegister) : WorldSizeNotifiable(parDeferredRegister), m_position(vec2f(0.0f), vec2f(0.0f), vec2f(0.0f)), @@ -102,9 +101,30 @@ namespace curry { const auto old_pos = this->position(); const auto new_pos = old_pos + offset; - //if (m_world - this->set_position(new_pos); + if (position() == old_pos) + return; + + vec2us last_valid_pos(0xFFFF); + + auto is_walkable = [](const WorldTileProperty& wtp) { + return wtp.property->walkable; + }; + + for_each_voxel_under_segment(old_pos, this->position(), m_texture.width_height(), *m_world, is_walkable); + //for (auto tile_vec : crossed_tiles(old_pos, this->position(), m_world->tile_size())) { + // const TileIndex* const tile = m_world->tile(tile_vec); + // for (uint16_t z = 0; z < m_world->layer_count(); ++z) { + // const auto& tile_prop = m_world->tile_property(tile + z); + // if (not tile_prop.walkable) { + // assert(last_valid_pos != vec2us(0xFFFF)); + // this->set_position(vector_cast(last_valid_pos)); + // } + // else { + // last_valid_pos = tile_vec; + // } + // } + //} } void Character::set_speed (float parSpeed) { diff --git a/src/grid_raytrace.cpp b/src/grid_raytrace.cpp new file mode 100644 index 0000000..5fd8519 --- /dev/null +++ b/src/grid_raytrace.cpp @@ -0,0 +1,124 @@ +/* + Copyright 2016, 2017 Michele "King_DuckZ" Santullo + + This file is part of MyCurry. + + MyCurry is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + MyCurry is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with MyCurry. If not, see . +*/ + +#include "grid_raytrace.hpp" +#include "worldgrid.hpp" +#include "vectorwrapper/vectorops.hpp" +#include "fsgn.hpp" +#include "tileproperty.hpp" +#include +#include +#include +#include +#include +#include + +namespace curry { + namespace { + float inv_length (const vec2f& parVec) { + return 1.0f / std::sqrt(parVec.x() * parVec.x() + parVec.y() * parVec.y()); + } + + vec2f abs (const vec2f& parVec) { + return vec2f(std::abs(parVec.x()), std::abs(parVec.y())); + } + + float segment_intersection (const vec2f& parA, const vec2f& parDirA, const vec2f& parB, const vec2f& parDirB) { + const auto& p = parA; + const auto& r = parDirA; + const auto& q = parB; + const auto& s = parDirB; + + const auto r_cross_s = cross(r, s); + if (std::abs(r_cross_s) <= FLT_EPSILON) { + if (std::abs(cross(q - p, r)) <= FLT_EPSILON) { + assert(std::abs(dot(r, r)) > FLT_EPSILON); + auto t0 = dot(q - p, r) / dot(r, r); + auto t1 = dot(q - p + s, r) / dot(r, r); + if (dot(s, r) < 0.0f) + std::swap(t0, t1); + assert(t0 <= t1); + if (0.0f <= t0) + return t0; + else if (t1 <= 1.0f) + return t1; + else + return INFINITY; + } + else { + return INFINITY; + } + } + + assert(not (std::abs(r_cross_s) <= FLT_EPSILON)); + const auto inv_r_cross_s = 1.0f / r_cross_s; + const auto t = cross(q - p, s) * inv_r_cross_s; + const auto u = cross(q - p, r) * inv_r_cross_s; + + return t; + //if (0.0f <= t and t <= 1.0f and 0.0f <= u and u <= 1.0f) + //return t; + //else + //return INFINITY; + } + } //unnamed namespace + + //see: + //http://stackoverflow.com/questions/24679963/precise-subpixel-line-drawing-algorithm-rasterization-algorithm + void for_each_voxel_under_segment (const vec2f& parFrom, const vec2f& parTo, vec2us parObjSize, const WorldGrid& parWorld, std::function parFunc) { + const vec2f tile_size = vector_cast(parWorld.tile_size()); + //in this simplified case everything should be part of the world grid + assert(parFrom >= vec2f(0.0f)); + assert(parTo >= vec2f(0.0f)); + assert(parFrom / tile_size <= vector_cast(parWorld.world_size())); + assert(parTo / tile_size <= vector_cast(parWorld.world_size())); + + float t = 0.0f; + const vec2f& u = parFrom; + const vec2f v = parTo - parFrom; + + vec2us start = pixel_to_world_tile(parWorld, u); + vec2f step(fsgn(v.x()), fsgn(v.y())); + + const auto next_tile_boundary = (step + abs(step)) / 2.0f; + const auto intersection = vec2f( + segment_intersection( + u, + v, + vec2f(static_cast(start.x() + next_tile_boundary.x()), 0.0f), + vec2f(0.0f, static_cast(parWorld.world_size().y()) * tile_size.y()) + ), + segment_intersection( + u, + v, + vec2f(0.0f, static_cast(start.y()) + next_tile_boundary.y()), + vec2f(static_cast(parWorld.world_size().x()) * tile_size.x(), 0.0f) + ) + ); + + const auto delta = vec2f( + std::isinf(intersection.x()) ? 0.0f : tile_size.x() / dot(vec2f(1.0f, 0.0f), v * inv_length(v)), + 0.0f //std::isinf(intersection.y()) ? 0.0f : tile_size.y() / + ); + + //if (not std::isinf(intersection_vert)) { +//todo: continuare da qui + //} + } +} //namespace curry diff --git a/src/grid_raytrace.hpp b/src/grid_raytrace.hpp new file mode 100644 index 0000000..f3ab590 --- /dev/null +++ b/src/grid_raytrace.hpp @@ -0,0 +1,39 @@ +/* + Copyright 2016, 2017 Michele "King_DuckZ" Santullo + + This file is part of MyCurry. + + MyCurry is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + MyCurry is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with MyCurry. If not, see . +*/ + +#pragma once + +#include "vector.hpp" +#include + +namespace curry { + class WorldGrid; + class TileProperty; + + struct WorldTileProperty { + vec2us index; + const TileProperty* property; + + bool operator== (const WorldTileProperty& parOther) const { + return parOther.index == index && parOther.property == property; + } + }; + + void for_each_voxel_under_segment ( const vec2f& parFrom, const vec2f& parTo, vec2us parObjSize, const WorldGrid& parWorld, std::function parFunc ); +} //namespace curry diff --git a/test/unit/CMakeLists.txt b/test/unit/CMakeLists.txt index 548fe84..78f141b 100644 --- a/test/unit/CMakeLists.txt +++ b/test/unit/CMakeLists.txt @@ -5,6 +5,10 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON) add_executable(${PROJECT_NAME} main.cpp + ${MYCURRY_SOURCE_DIR}/grid_raytrace.cpp + grid_raytrace.cpp + ${MYCURRY_SOURCE_DIR}/worldgrid.cpp + ${MYCURRY_SOURCE_DIR}/fsgn.cpp ) target_compile_definitions(${PROJECT_NAME} diff --git a/test/unit/grid_raytrace.cpp b/test/unit/grid_raytrace.cpp new file mode 100644 index 0000000..43970f4 --- /dev/null +++ b/test/unit/grid_raytrace.cpp @@ -0,0 +1,76 @@ +/* + Copyright 2016, 2017 Michele "King_DuckZ" Santullo + + This file is part of MyCurry. + + MyCurry is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + MyCurry is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with MyCurry. If not, see . +*/ + +#include "catch.hpp" +#include "grid_raytrace.hpp" +#include "worldgrid.hpp" +#include "tileindextype.hpp" +#include "tileproperty.hpp" +#include + +TEST_CASE ("Check that 2D raytracing works", "[raytracing, geometry]") { + using curry::for_each_voxel_under_segment; + using curry::vec2us; + using curry::vec2f; + using curry::WorldTileProperty; + + curry::WorldGrid world(vec2us(64)); + world.set_layers(vec2us(10, 10), std::vector>( {{ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 + }})); + world.set_tile_properties(std::vector({ curry::TileProperty() })); + + REQUIRE(world.world_size() == vec2us(10)); + REQUIRE(world.layer_count() == 1); + + { + std::vector diagonal; + for_each_voxel_under_segment ( + vec2f(0.0f, 0.0f), //from + vec2f(640.0f, 640.0f), //to + vec2us(1, 1), //objsize + world, //world + [diagonal](const WorldTileProperty& wtp) mutable {diagonal.push_back(wtp); return true;} + ); + + const auto* tile_prop = &world.tile_property(world.tile(vec2us(0))); + std::vector expected { + WorldTileProperty{vec2us(0, 0), tile_prop}, + WorldTileProperty{vec2us(1, 1), tile_prop}, + WorldTileProperty{vec2us(2, 2), tile_prop}, + WorldTileProperty{vec2us(3, 3), tile_prop}, + WorldTileProperty{vec2us(4, 4), tile_prop}, + WorldTileProperty{vec2us(5, 5), tile_prop}, + WorldTileProperty{vec2us(6, 6), tile_prop}, + WorldTileProperty{vec2us(7, 7), tile_prop}, + WorldTileProperty{vec2us(8, 8), tile_prop}, + WorldTileProperty{vec2us(9, 9), tile_prop} + }; + CHECK(expected == diagonal); + } +} From 47aa9f29483f109808b3324174beb7bb09a0c693 Mon Sep 17 00:00:00 2001 From: King_DuckZ Date: Thu, 9 Feb 2017 18:11:09 +0000 Subject: [PATCH 08/45] Move everything into a shared lib so unit test can access stuff. --- CMakeLists.txt | 80 ++----------------- src/gamelib/CMakeLists.txt | 54 +++++++++++++ src/{ => gamelib}/character.cpp | 0 src/{ => gamelib}/character.hpp | 0 src/{ => gamelib}/compatibility.h | 0 src/{ => gamelib}/constrained_position.hpp | 0 src/{ => gamelib}/constrained_value.hpp | 0 src/{ => gamelib}/csvloader.cpp | 0 src/{ => gamelib}/csvloader.hpp | 0 src/{ => gamelib}/fsgn.cpp | 0 src/{ => gamelib}/fsgn.hpp | 0 src/{ => gamelib}/gameactions.hpp | 0 src/{ => gamelib}/gamescenebase.cpp | 0 src/{ => gamelib}/gamescenebase.hpp | 0 src/{ => gamelib}/grid_raytrace.cpp | 0 src/{ => gamelib}/grid_raytrace.hpp | 0 src/{ => gamelib}/ingamescene.cpp | 2 +- src/{ => gamelib}/ingamescene.hpp | 0 src/{ => gamelib}/inputbag.cpp | 0 src/{ => gamelib}/inputbag.hpp | 0 src/{ => gamelib}/inputdevicetype.hpp | 0 src/{ => gamelib}/key.hpp | 0 src/{ => gamelib}/moveable.cpp | 0 src/{ => gamelib}/moveable.hpp | 0 src/{ => gamelib}/movingobject.cpp | 0 src/{ => gamelib}/movingobject.hpp | 0 src/{ => gamelib}/observersmanager.hpp | 0 src/{ => gamelib}/rect.hpp | 0 src/{ => gamelib}/rect_to_sdl.cpp | 0 src/{ => gamelib}/rect_to_sdl.hpp | 0 src/{ => gamelib}/sdlmain.cpp | 0 src/{ => gamelib}/sdlmain.hpp | 0 src/{ => gamelib}/sizenotifiable.cpp | 0 src/{ => gamelib}/sizenotifiable.hpp | 0 src/{ => gamelib}/sizeratio.cpp | 0 src/{ => gamelib}/sizeratio.hpp | 0 src/{ => gamelib}/texture.cpp | 0 src/{ => gamelib}/texture.hpp | 0 src/{ => gamelib}/tileindextype.hpp | 0 src/{ => gamelib}/tileiterator.cpp | 0 src/{ => gamelib}/tileiterator.hpp | 0 src/{ => gamelib}/tileproperty.hpp | 0 src/{ => gamelib}/vector.hpp | 0 src/{ => gamelib}/worldgrid.cpp | 0 src/{ => gamelib}/worldgrid.hpp | 0 src/{ => gamelib}/worlditems.cpp | 0 src/{ => gamelib}/worlditems.hpp | 0 src/{ => gamelib}/worldsizenotifiable.cpp | 0 src/{ => gamelib}/worldsizenotifiable.hpp | 0 src/{ => gamelib}/worldviewport.cpp | 0 src/{ => gamelib}/worldviewport.hpp | 0 ...onfig.h.in => mycurry_toplevelConfig.h.in} | 0 src/standalone/CMakeLists.txt | 17 ++++ src/{ => standalone}/main.cpp | 0 test/unit/CMakeLists.txt | 14 ++-- 55 files changed, 86 insertions(+), 81 deletions(-) create mode 100644 src/gamelib/CMakeLists.txt rename src/{ => gamelib}/character.cpp (100%) rename src/{ => gamelib}/character.hpp (100%) rename src/{ => gamelib}/compatibility.h (100%) rename src/{ => gamelib}/constrained_position.hpp (100%) rename src/{ => gamelib}/constrained_value.hpp (100%) rename src/{ => gamelib}/csvloader.cpp (100%) rename src/{ => gamelib}/csvloader.hpp (100%) rename src/{ => gamelib}/fsgn.cpp (100%) rename src/{ => gamelib}/fsgn.hpp (100%) rename src/{ => gamelib}/gameactions.hpp (100%) rename src/{ => gamelib}/gamescenebase.cpp (100%) rename src/{ => gamelib}/gamescenebase.hpp (100%) rename src/{ => gamelib}/grid_raytrace.cpp (100%) rename src/{ => gamelib}/grid_raytrace.hpp (100%) rename src/{ => gamelib}/ingamescene.cpp (99%) rename src/{ => gamelib}/ingamescene.hpp (100%) rename src/{ => gamelib}/inputbag.cpp (100%) rename src/{ => gamelib}/inputbag.hpp (100%) rename src/{ => gamelib}/inputdevicetype.hpp (100%) rename src/{ => gamelib}/key.hpp (100%) rename src/{ => gamelib}/moveable.cpp (100%) rename src/{ => gamelib}/moveable.hpp (100%) rename src/{ => gamelib}/movingobject.cpp (100%) rename src/{ => gamelib}/movingobject.hpp (100%) rename src/{ => gamelib}/observersmanager.hpp (100%) rename src/{ => gamelib}/rect.hpp (100%) rename src/{ => gamelib}/rect_to_sdl.cpp (100%) rename src/{ => gamelib}/rect_to_sdl.hpp (100%) rename src/{ => gamelib}/sdlmain.cpp (100%) rename src/{ => gamelib}/sdlmain.hpp (100%) rename src/{ => gamelib}/sizenotifiable.cpp (100%) rename src/{ => gamelib}/sizenotifiable.hpp (100%) rename src/{ => gamelib}/sizeratio.cpp (100%) rename src/{ => gamelib}/sizeratio.hpp (100%) rename src/{ => gamelib}/texture.cpp (100%) rename src/{ => gamelib}/texture.hpp (100%) rename src/{ => gamelib}/tileindextype.hpp (100%) rename src/{ => gamelib}/tileiterator.cpp (100%) rename src/{ => gamelib}/tileiterator.hpp (100%) rename src/{ => gamelib}/tileproperty.hpp (100%) rename src/{ => gamelib}/vector.hpp (100%) rename src/{ => gamelib}/worldgrid.cpp (100%) rename src/{ => gamelib}/worldgrid.hpp (100%) rename src/{ => gamelib}/worlditems.cpp (100%) rename src/{ => gamelib}/worlditems.hpp (100%) rename src/{ => gamelib}/worldsizenotifiable.cpp (100%) rename src/{ => gamelib}/worldsizenotifiable.hpp (100%) rename src/{ => gamelib}/worldviewport.cpp (100%) rename src/{ => gamelib}/worldviewport.hpp (100%) rename src/{mycurryConfig.h.in => mycurry_toplevelConfig.h.in} (100%) create mode 100644 src/standalone/CMakeLists.txt rename src/{ => standalone}/main.cpp (100%) diff --git a/CMakeLists.txt b/CMakeLists.txt index f98758e..5939a5e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,5 @@ cmake_minimum_required(VERSION 3.2) -project(mycurry CXX) +project(mycurry_toplevel CXX) list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/include") @@ -7,12 +7,6 @@ include(TargetArch) include(FindPkgConfig) include(CTest) -set(common_gcc_flags "-Wall -Wextra -pedantic -Wconversion -ffast-math") -set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${common_gcc_flags} -O0") -set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${common_gcc_flags}") -set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} ${common_gcc_flags} -O0") -set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} ${common_gcc_flags}") - option(CURRY_FORCE_OPENGLES "Try to chose the openGL ES renderer if available. Enable this on Raspberry Pi" OFF) option(CURRY_RASPBERRY_PI "Compile for Raspberry Pi" OFF) @@ -35,9 +29,6 @@ if (CURRY_FORCE_OPENGLES OR CURRY_RASPBERRY_PI) endif(CURRY_RASPBERRY_PI) endif (CURRY_FORCE_OPENGLES OR CURRY_RASPBERRY_PI) -PKG_SEARCH_MODULE(SDL2 REQUIRED sdl2) -PKG_SEARCH_MODULE(SDL2IMAGE REQUIRED SDL2_image>=2.0.0) -find_package(PNG REQUIRED) find_package(Boost 1.55.0 REQUIRED) if (CURRY_RASPBERRY_PI) @@ -52,78 +43,23 @@ if (CURRY_RASPBERRY_PI) ) endif (CURRY_RASPBERRY_PI) -add_executable(${PROJECT_NAME} - src/csvloader.cpp - src/main.cpp - src/sdlmain.cpp - src/ingamescene.cpp - src/sizenotifiable.cpp - src/sizeratio.cpp - src/gamescenebase.cpp - src/worldgrid.cpp - src/worldviewport.cpp - src/inputbag.cpp - src/tileiterator.cpp - src/texture.cpp - src/movingobject.cpp - src/character.cpp - src/rect_to_sdl.cpp - src/worldsizenotifiable.cpp - src/worlditems.cpp - src/moveable.cpp - src/fsgn.cpp - src/grid_raytrace.cpp -) - -target_include_directories(${PROJECT_NAME} SYSTEM - PRIVATE ${SDL2_INCLUDE_DIR} - PRIVATE ${SDL2IMAGE_INCLUDE_DIRS} - PRIVATE ${PNG_INCLUDE_DIRS} - PRIVATE ${Boost_INCLUDE_DIRS} - PRIVATE lib/tree-2.81/src -) -target_include_directories(${PROJECT_NAME} - PRIVATE src - PRIVATE lib/vectorwrapper/include - PRIVATE lib/DeathHandler - PRIVATE ${CMAKE_CURRENT_BINARY_DIR} -) - -target_link_libraries(${PROJECT_NAME} - PRIVATE ${SDL2_LIBRARIES} - PRIVATE ${SDL2IMAGE_LIBRARIES} - PRIVATE ${PNG_LIBRARIES} -) - if (CURRY_RASPBERRY_PI) target_link_libraries(${PROJECT_NAME} PRIVATE bcm_host ) endif(CURRY_RASPBERRY_PI) -target_compile_features(${PROJECT_NAME} - PRIVATE cxx_nullptr - PRIVATE cxx_range_for - PRIVATE cxx_lambdas - PRIVATE cxx_decltype_auto - PRIVATE cxx_defaulted_functions - PRIVATE cxx_deleted_functions - PRIVATE cxx_auto_type - PRIVATE cxx_defaulted_move_initializers - PRIVATE cxx_noexcept - PRIVATE cxx_rvalue_references -) +configure_file(src/${PROJECT_NAME}Config.h.in ${CMAKE_BINARY_DIR}/${PROJECT_NAME}Config.h) -target_compile_definitions(${PROJECT_NAME} - PRIVATE ${PNG_DEFINITIONS} - PRIVATE VWR_WITH_IMPLICIT_CONVERSIONS=1 - PRIVATE VWR_EXTRA_ACCESSORS -) +set(common_gcc_flags -Wall -Wextra -pedantic -Wconversion -ffast-math) -configure_file(src/${PROJECT_NAME}Config.h.in ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.h) +add_library(${PROJECT_NAME} INTERFACE) +target_compile_options(${PROJECT_NAME} INTERFACE ${common_gcc_flags}) + +add_subdirectory(src/gamelib) +add_subdirectory(src/standalone) if (BUILD_TESTING) set(CATCH_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/lib/Catch") - set(MYCURRY_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/src") add_subdirectory(test/unit) endif() diff --git a/src/gamelib/CMakeLists.txt b/src/gamelib/CMakeLists.txt new file mode 100644 index 0000000..ecd2670 --- /dev/null +++ b/src/gamelib/CMakeLists.txt @@ -0,0 +1,54 @@ +project(mycurry_gamelib CXX) + +PKG_SEARCH_MODULE(SDL2 REQUIRED sdl2) +PKG_SEARCH_MODULE(SDL2IMAGE REQUIRED SDL2_image>=2.0.0) +find_package(PNG REQUIRED) + +add_library(${PROJECT_NAME} + csvloader.cpp + sdlmain.cpp + ingamescene.cpp + sizenotifiable.cpp + sizeratio.cpp + gamescenebase.cpp + worldgrid.cpp + worldviewport.cpp + inputbag.cpp + tileiterator.cpp + texture.cpp + movingobject.cpp + character.cpp + rect_to_sdl.cpp + worldsizenotifiable.cpp + worlditems.cpp + moveable.cpp + fsgn.cpp + grid_raytrace.cpp +) +set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD 14) +set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD_REQUIRED ON) + +target_include_directories(${PROJECT_NAME} SYSTEM + PRIVATE ${SDL2_INCLUDE_DIR} + PRIVATE ${SDL2IMAGE_INCLUDE_DIRS} + PRIVATE ${PNG_INCLUDE_DIRS} + PRIVATE ${Boost_INCLUDE_DIRS} + PRIVATE ${CMAKE_SOURCE_DIR}/lib/tree-2.81/src +) +target_include_directories(${PROJECT_NAME} + PUBLIC ${CMAKE_SOURCE_DIR}/lib/vectorwrapper/include + PRIVATE ${CMAKE_BINARY_DIR} +) + +target_link_libraries(${PROJECT_NAME} + PRIVATE ${SDL2_LIBRARIES} + PRIVATE ${SDL2IMAGE_LIBRARIES} + PRIVATE ${PNG_LIBRARIES} + PUBLIC mycurry_toplevel +) + +target_compile_definitions(${PROJECT_NAME} + PRIVATE ${PNG_DEFINITIONS} + PUBLIC VWR_WITH_IMPLICIT_CONVERSIONS=1 + PUBLIC VWR_EXTRA_ACCESSORS +) diff --git a/src/character.cpp b/src/gamelib/character.cpp similarity index 100% rename from src/character.cpp rename to src/gamelib/character.cpp diff --git a/src/character.hpp b/src/gamelib/character.hpp similarity index 100% rename from src/character.hpp rename to src/gamelib/character.hpp diff --git a/src/compatibility.h b/src/gamelib/compatibility.h similarity index 100% rename from src/compatibility.h rename to src/gamelib/compatibility.h diff --git a/src/constrained_position.hpp b/src/gamelib/constrained_position.hpp similarity index 100% rename from src/constrained_position.hpp rename to src/gamelib/constrained_position.hpp diff --git a/src/constrained_value.hpp b/src/gamelib/constrained_value.hpp similarity index 100% rename from src/constrained_value.hpp rename to src/gamelib/constrained_value.hpp diff --git a/src/csvloader.cpp b/src/gamelib/csvloader.cpp similarity index 100% rename from src/csvloader.cpp rename to src/gamelib/csvloader.cpp diff --git a/src/csvloader.hpp b/src/gamelib/csvloader.hpp similarity index 100% rename from src/csvloader.hpp rename to src/gamelib/csvloader.hpp diff --git a/src/fsgn.cpp b/src/gamelib/fsgn.cpp similarity index 100% rename from src/fsgn.cpp rename to src/gamelib/fsgn.cpp diff --git a/src/fsgn.hpp b/src/gamelib/fsgn.hpp similarity index 100% rename from src/fsgn.hpp rename to src/gamelib/fsgn.hpp diff --git a/src/gameactions.hpp b/src/gamelib/gameactions.hpp similarity index 100% rename from src/gameactions.hpp rename to src/gamelib/gameactions.hpp diff --git a/src/gamescenebase.cpp b/src/gamelib/gamescenebase.cpp similarity index 100% rename from src/gamescenebase.cpp rename to src/gamelib/gamescenebase.cpp diff --git a/src/gamescenebase.hpp b/src/gamelib/gamescenebase.hpp similarity index 100% rename from src/gamescenebase.hpp rename to src/gamelib/gamescenebase.hpp diff --git a/src/grid_raytrace.cpp b/src/gamelib/grid_raytrace.cpp similarity index 100% rename from src/grid_raytrace.cpp rename to src/gamelib/grid_raytrace.cpp diff --git a/src/grid_raytrace.hpp b/src/gamelib/grid_raytrace.hpp similarity index 100% rename from src/grid_raytrace.hpp rename to src/gamelib/grid_raytrace.hpp diff --git a/src/ingamescene.cpp b/src/gamelib/ingamescene.cpp similarity index 99% rename from src/ingamescene.cpp rename to src/gamelib/ingamescene.cpp index e08062e..8af1069 100644 --- a/src/ingamescene.cpp +++ b/src/gamelib/ingamescene.cpp @@ -19,7 +19,7 @@ #include "ingamescene.hpp" #include "sdlmain.hpp" -#include "mycurryConfig.h" +#include "mycurry_toplevelConfig.h" #include "key.hpp" #include "inputbag.hpp" #include "movingobject.hpp" diff --git a/src/ingamescene.hpp b/src/gamelib/ingamescene.hpp similarity index 100% rename from src/ingamescene.hpp rename to src/gamelib/ingamescene.hpp diff --git a/src/inputbag.cpp b/src/gamelib/inputbag.cpp similarity index 100% rename from src/inputbag.cpp rename to src/gamelib/inputbag.cpp diff --git a/src/inputbag.hpp b/src/gamelib/inputbag.hpp similarity index 100% rename from src/inputbag.hpp rename to src/gamelib/inputbag.hpp diff --git a/src/inputdevicetype.hpp b/src/gamelib/inputdevicetype.hpp similarity index 100% rename from src/inputdevicetype.hpp rename to src/gamelib/inputdevicetype.hpp diff --git a/src/key.hpp b/src/gamelib/key.hpp similarity index 100% rename from src/key.hpp rename to src/gamelib/key.hpp diff --git a/src/moveable.cpp b/src/gamelib/moveable.cpp similarity index 100% rename from src/moveable.cpp rename to src/gamelib/moveable.cpp diff --git a/src/moveable.hpp b/src/gamelib/moveable.hpp similarity index 100% rename from src/moveable.hpp rename to src/gamelib/moveable.hpp diff --git a/src/movingobject.cpp b/src/gamelib/movingobject.cpp similarity index 100% rename from src/movingobject.cpp rename to src/gamelib/movingobject.cpp diff --git a/src/movingobject.hpp b/src/gamelib/movingobject.hpp similarity index 100% rename from src/movingobject.hpp rename to src/gamelib/movingobject.hpp diff --git a/src/observersmanager.hpp b/src/gamelib/observersmanager.hpp similarity index 100% rename from src/observersmanager.hpp rename to src/gamelib/observersmanager.hpp diff --git a/src/rect.hpp b/src/gamelib/rect.hpp similarity index 100% rename from src/rect.hpp rename to src/gamelib/rect.hpp diff --git a/src/rect_to_sdl.cpp b/src/gamelib/rect_to_sdl.cpp similarity index 100% rename from src/rect_to_sdl.cpp rename to src/gamelib/rect_to_sdl.cpp diff --git a/src/rect_to_sdl.hpp b/src/gamelib/rect_to_sdl.hpp similarity index 100% rename from src/rect_to_sdl.hpp rename to src/gamelib/rect_to_sdl.hpp diff --git a/src/sdlmain.cpp b/src/gamelib/sdlmain.cpp similarity index 100% rename from src/sdlmain.cpp rename to src/gamelib/sdlmain.cpp diff --git a/src/sdlmain.hpp b/src/gamelib/sdlmain.hpp similarity index 100% rename from src/sdlmain.hpp rename to src/gamelib/sdlmain.hpp diff --git a/src/sizenotifiable.cpp b/src/gamelib/sizenotifiable.cpp similarity index 100% rename from src/sizenotifiable.cpp rename to src/gamelib/sizenotifiable.cpp diff --git a/src/sizenotifiable.hpp b/src/gamelib/sizenotifiable.hpp similarity index 100% rename from src/sizenotifiable.hpp rename to src/gamelib/sizenotifiable.hpp diff --git a/src/sizeratio.cpp b/src/gamelib/sizeratio.cpp similarity index 100% rename from src/sizeratio.cpp rename to src/gamelib/sizeratio.cpp diff --git a/src/sizeratio.hpp b/src/gamelib/sizeratio.hpp similarity index 100% rename from src/sizeratio.hpp rename to src/gamelib/sizeratio.hpp diff --git a/src/texture.cpp b/src/gamelib/texture.cpp similarity index 100% rename from src/texture.cpp rename to src/gamelib/texture.cpp diff --git a/src/texture.hpp b/src/gamelib/texture.hpp similarity index 100% rename from src/texture.hpp rename to src/gamelib/texture.hpp diff --git a/src/tileindextype.hpp b/src/gamelib/tileindextype.hpp similarity index 100% rename from src/tileindextype.hpp rename to src/gamelib/tileindextype.hpp diff --git a/src/tileiterator.cpp b/src/gamelib/tileiterator.cpp similarity index 100% rename from src/tileiterator.cpp rename to src/gamelib/tileiterator.cpp diff --git a/src/tileiterator.hpp b/src/gamelib/tileiterator.hpp similarity index 100% rename from src/tileiterator.hpp rename to src/gamelib/tileiterator.hpp diff --git a/src/tileproperty.hpp b/src/gamelib/tileproperty.hpp similarity index 100% rename from src/tileproperty.hpp rename to src/gamelib/tileproperty.hpp diff --git a/src/vector.hpp b/src/gamelib/vector.hpp similarity index 100% rename from src/vector.hpp rename to src/gamelib/vector.hpp diff --git a/src/worldgrid.cpp b/src/gamelib/worldgrid.cpp similarity index 100% rename from src/worldgrid.cpp rename to src/gamelib/worldgrid.cpp diff --git a/src/worldgrid.hpp b/src/gamelib/worldgrid.hpp similarity index 100% rename from src/worldgrid.hpp rename to src/gamelib/worldgrid.hpp diff --git a/src/worlditems.cpp b/src/gamelib/worlditems.cpp similarity index 100% rename from src/worlditems.cpp rename to src/gamelib/worlditems.cpp diff --git a/src/worlditems.hpp b/src/gamelib/worlditems.hpp similarity index 100% rename from src/worlditems.hpp rename to src/gamelib/worlditems.hpp diff --git a/src/worldsizenotifiable.cpp b/src/gamelib/worldsizenotifiable.cpp similarity index 100% rename from src/worldsizenotifiable.cpp rename to src/gamelib/worldsizenotifiable.cpp diff --git a/src/worldsizenotifiable.hpp b/src/gamelib/worldsizenotifiable.hpp similarity index 100% rename from src/worldsizenotifiable.hpp rename to src/gamelib/worldsizenotifiable.hpp diff --git a/src/worldviewport.cpp b/src/gamelib/worldviewport.cpp similarity index 100% rename from src/worldviewport.cpp rename to src/gamelib/worldviewport.cpp diff --git a/src/worldviewport.hpp b/src/gamelib/worldviewport.hpp similarity index 100% rename from src/worldviewport.hpp rename to src/gamelib/worldviewport.hpp diff --git a/src/mycurryConfig.h.in b/src/mycurry_toplevelConfig.h.in similarity index 100% rename from src/mycurryConfig.h.in rename to src/mycurry_toplevelConfig.h.in diff --git a/src/standalone/CMakeLists.txt b/src/standalone/CMakeLists.txt new file mode 100644 index 0000000..a44913f --- /dev/null +++ b/src/standalone/CMakeLists.txt @@ -0,0 +1,17 @@ +project(mycurry CXX) + +add_executable(${PROJECT_NAME} + main.cpp +) +set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD 14) +set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD_REQUIRED ON) + +target_include_directories(${PROJECT_NAME} + PRIVATE "${CMAKE_SOURCE_DIR}/src/gamelib" + PRIVATE ${CMAKE_BINARY_DIR} + PRIVATE ${CMAKE_SOURCE_DIR}/lib/DeathHandler +) + +target_link_libraries(${PROJECT_NAME} + PRIVATE mycurry_gamelib +) diff --git a/src/main.cpp b/src/standalone/main.cpp similarity index 100% rename from src/main.cpp rename to src/standalone/main.cpp diff --git a/test/unit/CMakeLists.txt b/test/unit/CMakeLists.txt index 78f141b..4134d13 100644 --- a/test/unit/CMakeLists.txt +++ b/test/unit/CMakeLists.txt @@ -1,15 +1,11 @@ project(mycurry_unit_test CXX) -set(CMAKE_CXX_STANDARD 14) -set(CMAKE_CXX_STANDARD_REQUIRED ON) - add_executable(${PROJECT_NAME} main.cpp - ${MYCURRY_SOURCE_DIR}/grid_raytrace.cpp grid_raytrace.cpp - ${MYCURRY_SOURCE_DIR}/worldgrid.cpp - ${MYCURRY_SOURCE_DIR}/fsgn.cpp ) +set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD 14) +set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD_REQUIRED ON) target_compile_definitions(${PROJECT_NAME} PRIVATE VWR_WITH_IMPLICIT_CONVERSIONS=1 @@ -18,7 +14,7 @@ target_compile_definitions(${PROJECT_NAME} target_include_directories(${PROJECT_NAME} PRIVATE ${CATCH_SOURCE_DIR}/single_include - PRIVATE ${MYCURRY_SOURCE_DIR} + PRIVATE ${CMAKE_SOURCE_DIR}/src/gamelib PRIVATE ${CMAKE_SOURCE_DIR}/lib/vectorwrapper/include PRIVATE ${CMAKE_SOURCE_DIR}/lib/tree-2.81/src ) @@ -29,4 +25,6 @@ add_test( COMMAND ${PROJECT_NAME} ) - +target_link_libraries(${PROJECT_NAME} + PRIVATE mycurry_gamelib +) From 413ff4e558dabc7e1e79688e54ab3acaf1474bfc Mon Sep 17 00:00:00 2001 From: King_DuckZ Date: Thu, 9 Feb 2017 19:31:38 +0000 Subject: [PATCH 09/45] Expose private functions in grid_raytrace for unit testing. --- src/gamelib/grid_raytrace.cpp | 4 ++++ src/gamelib/grid_raytrace.hpp | 5 +++++ src/mycurry_toplevelConfig.h.in | 1 + test/unit/CMakeLists.txt | 1 + 4 files changed, 11 insertions(+) diff --git a/src/gamelib/grid_raytrace.cpp b/src/gamelib/grid_raytrace.cpp index 5fd8519..862e0db 100644 --- a/src/gamelib/grid_raytrace.cpp +++ b/src/gamelib/grid_raytrace.cpp @@ -30,7 +30,9 @@ #include namespace curry { +#if !defined(BUILD_TESTING) namespace { +#endif float inv_length (const vec2f& parVec) { return 1.0f / std::sqrt(parVec.x() * parVec.x() + parVec.y() * parVec.y()); } @@ -77,7 +79,9 @@ namespace curry { //else //return INFINITY; } +#if !defined(BUILD_TESTING) } //unnamed namespace +#endif //see: //http://stackoverflow.com/questions/24679963/precise-subpixel-line-drawing-algorithm-rasterization-algorithm diff --git a/src/gamelib/grid_raytrace.hpp b/src/gamelib/grid_raytrace.hpp index f3ab590..80b7123 100644 --- a/src/gamelib/grid_raytrace.hpp +++ b/src/gamelib/grid_raytrace.hpp @@ -20,12 +20,17 @@ #pragma once #include "vector.hpp" +#include "mycurry_toplevelConfig.h" #include namespace curry { class WorldGrid; class TileProperty; +#if defined(BUILD_TESTING) + float segment_intersection (const vec2f& parA, const vec2f& parDirA, const vec2f& parB, const vec2f& parDirB); +#endif + struct WorldTileProperty { vec2us index; const TileProperty* property; diff --git a/src/mycurry_toplevelConfig.h.in b/src/mycurry_toplevelConfig.h.in index 165dab5..ac6f3c4 100644 --- a/src/mycurry_toplevelConfig.h.in +++ b/src/mycurry_toplevelConfig.h.in @@ -20,3 +20,4 @@ #pragma once #define RESOURCES_PATH "@MYCURRY_RESOURCES_PATH@/" +#cmakedefine BUILD_TESTING diff --git a/test/unit/CMakeLists.txt b/test/unit/CMakeLists.txt index 4134d13..4e3d6bf 100644 --- a/test/unit/CMakeLists.txt +++ b/test/unit/CMakeLists.txt @@ -17,6 +17,7 @@ target_include_directories(${PROJECT_NAME} PRIVATE ${CMAKE_SOURCE_DIR}/src/gamelib PRIVATE ${CMAKE_SOURCE_DIR}/lib/vectorwrapper/include PRIVATE ${CMAKE_SOURCE_DIR}/lib/tree-2.81/src + PRIVATE ${CMAKE_BINARY_DIR} ) add_test( From 80d0e1c3367628a3048f68e1514db399ded9ae03 Mon Sep 17 00:00:00 2001 From: King_DuckZ Date: Fri, 10 Feb 2017 15:40:26 +0000 Subject: [PATCH 10/45] Add test for intersection and fix data in raytracer test. --- src/gamelib/grid_raytrace.cpp | 2 +- test/unit/grid_raytrace.cpp | 54 ++++++++++++++++++++++++++++------- 2 files changed, 44 insertions(+), 12 deletions(-) diff --git a/src/gamelib/grid_raytrace.cpp b/src/gamelib/grid_raytrace.cpp index 862e0db..3309bf7 100644 --- a/src/gamelib/grid_raytrace.cpp +++ b/src/gamelib/grid_raytrace.cpp @@ -71,7 +71,7 @@ namespace curry { assert(not (std::abs(r_cross_s) <= FLT_EPSILON)); const auto inv_r_cross_s = 1.0f / r_cross_s; const auto t = cross(q - p, s) * inv_r_cross_s; - const auto u = cross(q - p, r) * inv_r_cross_s; + //const auto u = cross(q - p, r) * inv_r_cross_s; return t; //if (0.0f <= t and t <= 1.0f and 0.0f <= u and u <= 1.0f) diff --git a/test/unit/grid_raytrace.cpp b/test/unit/grid_raytrace.cpp index 43970f4..5fbd6a9 100644 --- a/test/unit/grid_raytrace.cpp +++ b/test/unit/grid_raytrace.cpp @@ -24,7 +24,7 @@ #include "tileproperty.hpp" #include -TEST_CASE ("Check that 2D raytracing works", "[raytracing, geometry]") { +TEST_CASE ("Check that 2D raytracing works", "[raytracing][geometry]") { using curry::for_each_voxel_under_segment; using curry::vec2us; using curry::vec2f; @@ -32,16 +32,16 @@ TEST_CASE ("Check that 2D raytracing works", "[raytracing, geometry]") { curry::WorldGrid world(vec2us(64)); world.set_layers(vec2us(10, 10), std::vector>( {{ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }})); world.set_tile_properties(std::vector({ curry::TileProperty() })); @@ -74,3 +74,35 @@ TEST_CASE ("Check that 2D raytracing works", "[raytracing, geometry]") { CHECK(expected == diagonal); } } + +TEST_CASE ("Check that segment intersection code used by the raytracing code works", "[geometry][intersection]") { + using curry::vec2f; + using curry::segment_intersection; + + { + //Two segments crossing at <0, 0> + const vec2f a0(-1.0f, 0.0f); + const vec2f a1(2.0f, 0.0f); + const vec2f b0(0.0f, 1.0f); + const vec2f b1(0.0f, -2.0f); + + const float t1 = segment_intersection(a0, a1, b0, b1); + CHECK(0.5f == t1); + CHECK(vec2f(0.0f) == a0 + t1 * a1); + const float t2 = segment_intersection(b0, b1, a0, a1); + CHECK(0.5f == t2); + } + + { + //a diagonal segment starting off from a vertical segment + const vec2f a0(-1.0f, 0.0f); + const vec2f a1(3.0f, 2.0f); + const vec2f b0(-1.0f, 1.0f); + const vec2f b1(0.0f, -2.0f); + + const float t1 = segment_intersection(a0, a1, b0, b1); + CHECK(0.0f == t1); + const float t2 = segment_intersection(b0, b1, a0, a1); + CHECK(0.5f == t2); + } +} From ff91bbbc71b6241c13eeb2290b75ceba6f89cad9 Mon Sep 17 00:00:00 2001 From: King_DuckZ Date: Fri, 10 Feb 2017 19:24:44 +0000 Subject: [PATCH 11/45] Fix code so raytrace test now passes. --- src/gamelib/character.cpp | 4 +- src/gamelib/grid_raytrace.cpp | 75 +++++++++++++++++++++++------------ src/gamelib/grid_raytrace.hpp | 12 +----- test/unit/grid_raytrace.cpp | 29 +++++++------- 4 files changed, 66 insertions(+), 54 deletions(-) diff --git a/src/gamelib/character.cpp b/src/gamelib/character.cpp index 7af063c..c72b8fc 100644 --- a/src/gamelib/character.cpp +++ b/src/gamelib/character.cpp @@ -107,8 +107,8 @@ namespace curry { vec2us last_valid_pos(0xFFFF); - auto is_walkable = [](const WorldTileProperty& wtp) { - return wtp.property->walkable; + auto is_walkable = [](vec2us idx) { + return true; //wtp.property->walkable; }; for_each_voxel_under_segment(old_pos, this->position(), m_texture.width_height(), *m_world, is_walkable); diff --git a/src/gamelib/grid_raytrace.cpp b/src/gamelib/grid_raytrace.cpp index 3309bf7..cb2615f 100644 --- a/src/gamelib/grid_raytrace.cpp +++ b/src/gamelib/grid_raytrace.cpp @@ -79,13 +79,21 @@ namespace curry { //else //return INFINITY; } + + vec2f frac (vec2f parVal) { + return parVal - vec2f(std::floor(parVal.x()), std::floor(parVal.y())); + } + + template int sgn (T val) { + return (T(0) < val) - (val < T(0)); + } #if !defined(BUILD_TESTING) } //unnamed namespace #endif //see: //http://stackoverflow.com/questions/24679963/precise-subpixel-line-drawing-algorithm-rasterization-algorithm - void for_each_voxel_under_segment (const vec2f& parFrom, const vec2f& parTo, vec2us parObjSize, const WorldGrid& parWorld, std::function parFunc) { + void for_each_voxel_under_segment (const vec2f& parFrom, const vec2f& parTo, vec2us parObjSize, const WorldGrid& parWorld, std::function parFunc) { const vec2f tile_size = vector_cast(parWorld.tile_size()); //in this simplified case everything should be part of the world grid assert(parFrom >= vec2f(0.0f)); @@ -93,36 +101,51 @@ namespace curry { assert(parFrom / tile_size <= vector_cast(parWorld.world_size())); assert(parTo / tile_size <= vector_cast(parWorld.world_size())); - float t = 0.0f; + //float t = 0.0f; const vec2f& u = parFrom; const vec2f v = parTo - parFrom; - vec2us start = pixel_to_world_tile(parWorld, u); - vec2f step(fsgn(v.x()), fsgn(v.y())); + //vec2f step(fsgn(v.x()), fsgn(v.y())); - const auto next_tile_boundary = (step + abs(step)) / 2.0f; - const auto intersection = vec2f( - segment_intersection( - u, - v, - vec2f(static_cast(start.x() + next_tile_boundary.x()), 0.0f), - vec2f(0.0f, static_cast(parWorld.world_size().y()) * tile_size.y()) - ), - segment_intersection( - u, - v, - vec2f(0.0f, static_cast(start.y()) + next_tile_boundary.y()), - vec2f(static_cast(parWorld.world_size().x()) * tile_size.x(), 0.0f) - ) - ); + const auto delta = tile_size / v; + auto max = delta * (vec2f(1.0f) - frac(u / tile_size)); - const auto delta = vec2f( - std::isinf(intersection.x()) ? 0.0f : tile_size.x() / dot(vec2f(1.0f, 0.0f), v * inv_length(v)), - 0.0f //std::isinf(intersection.y()) ? 0.0f : tile_size.y() / - ); + //vec2us start = pixel_to_world_tile(parWorld, u); + //const auto next_tile_boundary = (step + abs(step)) / 2.0f; + //const auto max = vec2f( + // segment_intersection( + // u, + // v, + // vec2f(static_cast(start.x() + next_tile_boundary.x()), 0.0f), + // vec2f(0.0f, static_cast(parWorld.world_size().y()) * tile_size.y()) + // ), + // segment_intersection( + // u, + // v, + // vec2f(0.0f, static_cast(start.y()) + next_tile_boundary.y()), + // vec2f(static_cast(parWorld.world_size().x()) * tile_size.x(), 0.0f) + // ) + //); - //if (not std::isinf(intersection_vert)) { -//todo: continuare da qui - //} + //const auto delta = vec2f( + // std::isinf(max.x()) ? 0.0f : tile_size.x() / dot(vec2f(1.0f, 0.0f), v * inv_length(v)), + // 0.0f //std::isinf(max.y()) ? 0.0f : tile_size.y() / + //); + + //see: + //http://stackoverflow.com/questions/12367071/how-do-i-initialize-the-t-variables-in-a-fast-voxel-traversal-algorithm-for-ray#12370474 + vec2i step(sgn(v.x()), sgn(v.y())); + vec2us curr_tile = pixel_to_world_tile(parWorld, u); + const vec2us last_tile = pixel_to_world_tile(parWorld, parTo); + while (parFunc(curr_tile) and last_tile != curr_tile) { + if (max.x() < max.y()) { + max.x() += delta.x(); + curr_tile.x() = static_cast(curr_tile.x() + step.x()); + } + else { + max.y() += delta.y(); + curr_tile.y() = static_cast(curr_tile.y() + step.y()); + } + } } } //namespace curry diff --git a/src/gamelib/grid_raytrace.hpp b/src/gamelib/grid_raytrace.hpp index 80b7123..017e5a7 100644 --- a/src/gamelib/grid_raytrace.hpp +++ b/src/gamelib/grid_raytrace.hpp @@ -25,20 +25,10 @@ namespace curry { class WorldGrid; - class TileProperty; #if defined(BUILD_TESTING) float segment_intersection (const vec2f& parA, const vec2f& parDirA, const vec2f& parB, const vec2f& parDirB); #endif - struct WorldTileProperty { - vec2us index; - const TileProperty* property; - - bool operator== (const WorldTileProperty& parOther) const { - return parOther.index == index && parOther.property == property; - } - }; - - void for_each_voxel_under_segment ( const vec2f& parFrom, const vec2f& parTo, vec2us parObjSize, const WorldGrid& parWorld, std::function parFunc ); + void for_each_voxel_under_segment ( const vec2f& parFrom, const vec2f& parTo, vec2us parObjSize, const WorldGrid& parWorld, std::function parFunc ); } //namespace curry diff --git a/test/unit/grid_raytrace.cpp b/test/unit/grid_raytrace.cpp index 5fbd6a9..ac6032d 100644 --- a/test/unit/grid_raytrace.cpp +++ b/test/unit/grid_raytrace.cpp @@ -28,7 +28,6 @@ TEST_CASE ("Check that 2D raytracing works", "[raytracing][geometry]") { using curry::for_each_voxel_under_segment; using curry::vec2us; using curry::vec2f; - using curry::WorldTileProperty; curry::WorldGrid world(vec2us(64)); world.set_layers(vec2us(10, 10), std::vector>( {{ @@ -49,27 +48,27 @@ TEST_CASE ("Check that 2D raytracing works", "[raytracing][geometry]") { REQUIRE(world.layer_count() == 1); { - std::vector diagonal; + std::vector diagonal; for_each_voxel_under_segment ( vec2f(0.0f, 0.0f), //from - vec2f(640.0f, 640.0f), //to + vec2f(639.0f, 639.0f), //to vec2us(1, 1), //objsize world, //world - [diagonal](const WorldTileProperty& wtp) mutable {diagonal.push_back(wtp); return true;} + [&diagonal](vec2us wtp) mutable {diagonal.push_back(wtp); return true;} ); const auto* tile_prop = &world.tile_property(world.tile(vec2us(0))); - std::vector expected { - WorldTileProperty{vec2us(0, 0), tile_prop}, - WorldTileProperty{vec2us(1, 1), tile_prop}, - WorldTileProperty{vec2us(2, 2), tile_prop}, - WorldTileProperty{vec2us(3, 3), tile_prop}, - WorldTileProperty{vec2us(4, 4), tile_prop}, - WorldTileProperty{vec2us(5, 5), tile_prop}, - WorldTileProperty{vec2us(6, 6), tile_prop}, - WorldTileProperty{vec2us(7, 7), tile_prop}, - WorldTileProperty{vec2us(8, 8), tile_prop}, - WorldTileProperty{vec2us(9, 9), tile_prop} + std::vector expected { + vec2us(0, 0), vec2us(0, 1), + vec2us(1, 1), vec2us(1, 2), + vec2us(2, 2), vec2us(2, 3), + vec2us(3, 3), vec2us(3, 4), + vec2us(4, 4), vec2us(4, 5), + vec2us(5, 5), vec2us(5, 6), + vec2us(6, 6), vec2us(6, 7), + vec2us(7, 7), vec2us(7, 8), + vec2us(8, 8), vec2us(8, 9), + vec2us(9, 9) }; CHECK(expected == diagonal); } From c30fe3012c1d4c697cfec1d8eab1522d8abea226 Mon Sep 17 00:00:00 2001 From: King_DuckZ Date: Fri, 10 Feb 2017 19:26:46 +0000 Subject: [PATCH 12/45] Remove fsgn() which is now unnecessary. --- src/gamelib/CMakeLists.txt | 1 - src/gamelib/fsgn.cpp | 47 ----------------------------------- src/gamelib/fsgn.hpp | 24 ------------------ src/gamelib/grid_raytrace.cpp | 1 - 4 files changed, 73 deletions(-) delete mode 100644 src/gamelib/fsgn.cpp delete mode 100644 src/gamelib/fsgn.hpp diff --git a/src/gamelib/CMakeLists.txt b/src/gamelib/CMakeLists.txt index ecd2670..9163fea 100644 --- a/src/gamelib/CMakeLists.txt +++ b/src/gamelib/CMakeLists.txt @@ -22,7 +22,6 @@ add_library(${PROJECT_NAME} worldsizenotifiable.cpp worlditems.cpp moveable.cpp - fsgn.cpp grid_raytrace.cpp ) set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD 14) diff --git a/src/gamelib/fsgn.cpp b/src/gamelib/fsgn.cpp deleted file mode 100644 index fb16340..0000000 --- a/src/gamelib/fsgn.cpp +++ /dev/null @@ -1,47 +0,0 @@ -/* - Copyright 2016, 2017 Michele "King_DuckZ" Santullo - - This file is part of MyCurry. - - MyCurry is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - MyCurry is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with MyCurry. If not, see . -*/ - -#include "fsgn.hpp" -#include - -namespace curry { - //float fsgn (float parIn) { - // if (parIn < 0.0f) return -1.0f; - // if (parIn > 0.0f) return 1.0f; - // return 0.0f; - //} - - float fsgn (float parIn) { - static_assert(sizeof(uint32_t) == sizeof(float), "Unexpected float size"); - union { - uint32_t i; - float f; - } in, r; - - in.f = parIn; - if ((in.i & 0x7FFFFFFF) == 0) { - return 0.0f; - } - else { - r.f = 1.0f; - r.i |= in.i & 0x80000000; - return r.f; - } - } -} //namespace curry diff --git a/src/gamelib/fsgn.hpp b/src/gamelib/fsgn.hpp deleted file mode 100644 index 28f3f76..0000000 --- a/src/gamelib/fsgn.hpp +++ /dev/null @@ -1,24 +0,0 @@ -/* - Copyright 2016, 2017 Michele "King_DuckZ" Santullo - - This file is part of MyCurry. - - MyCurry is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - MyCurry is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with MyCurry. If not, see . -*/ - -#pragma once - -namespace curry { - float fsgn (float parIn); -} //namespace curry diff --git a/src/gamelib/grid_raytrace.cpp b/src/gamelib/grid_raytrace.cpp index cb2615f..8273fde 100644 --- a/src/gamelib/grid_raytrace.cpp +++ b/src/gamelib/grid_raytrace.cpp @@ -20,7 +20,6 @@ #include "grid_raytrace.hpp" #include "worldgrid.hpp" #include "vectorwrapper/vectorops.hpp" -#include "fsgn.hpp" #include "tileproperty.hpp" #include #include From 0560affdf94ab4f8a77222cd30b8abf38060d9af Mon Sep 17 00:00:00 2001 From: King_DuckZ Date: Sat, 11 Mar 2017 08:22:23 +0000 Subject: [PATCH 13/45] Import clooneljump as a subproject. Remove manually copy-pasted files taken from cloonelgraphics and use the up-to-date version from the submodule instead. --- .gitmodules | 3 + CMakeLists.txt | 1 + lib/clooneljump | 1 + lib/tree-2.81/ChangeLog | 391 ---- lib/tree-2.81/Makefile | 27 - lib/tree-2.81/doc/documentation.html | 220 -- lib/tree-2.81/doc/download.html | 175 -- lib/tree-2.81/doc/doxygen_tree.config | 270 --- lib/tree-2.81/doc/favicon.ico | Bin 2238 -> 0 bytes lib/tree-2.81/doc/favicon.png | Bin 782 -> 0 bytes lib/tree-2.81/doc/filler.png | Bin 881 -> 0 bytes lib/tree-2.81/doc/index.html | 205 -- lib/tree-2.81/doc/projects.html | 162 -- lib/tree-2.81/doc/structure.png | Bin 23977 -> 0 bytes lib/tree-2.81/doc/structure.svg | 417 ---- lib/tree-2.81/doc/tree.css | 171 -- lib/tree-2.81/doc/tree.jpg | Bin 25606 -> 0 bytes lib/tree-2.81/doc/tree.png | Bin 909824 -> 0 bytes lib/tree-2.81/doc/tree.tex | 388 ---- lib/tree-2.81/doc/tree2.png | Bin 144745 -> 0 bytes lib/tree-2.81/doc/treefig.eps | 190 -- lib/tree-2.81/doc/treefig.fig | 44 - lib/tree-2.81/doc/treefig.pdf | 71 - lib/tree-2.81/src/.gitignore | 3 - lib/tree-2.81/src/Makefile | 14 - lib/tree-2.81/src/simple tree.hpp | 1560 -------------- lib/tree-2.81/src/test1.cc | 18 - lib/tree-2.81/src/test1.req | 4 - lib/tree-2.81/src/test_tree.cc | 378 ---- lib/tree-2.81/src/test_tree.output | 311 --- lib/tree-2.81/src/tree.hh | 2786 ------------------------- lib/tree-2.81/src/tree_example.cc | 59 - lib/tree-2.81/src/tree_util.hh | 92 - lib/tree-2.81/src/xinlin.hh | 1579 -------------- src/gamelib/CMakeLists.txt | 6 +- src/gamelib/gamescenebase.cpp | 3 +- src/gamelib/ingamescene.cpp | 3 +- src/gamelib/inputbag.cpp | 150 -- src/gamelib/inputbag.hpp | 59 - src/gamelib/inputdevicetype.hpp | 29 - src/gamelib/key.hpp | 62 - src/gamelib/observersmanager.hpp | 180 -- src/gamelib/sdlmain.cpp | 236 --- src/gamelib/sdlmain.hpp | 60 - src/gamelib/sizenotifiable.cpp | 78 - src/gamelib/sizenotifiable.hpp | 128 -- src/gamelib/sizeratio.cpp | 66 - src/gamelib/sizeratio.hpp | 45 - src/gamelib/vector.hpp | 29 +- 49 files changed, 32 insertions(+), 10642 deletions(-) create mode 160000 lib/clooneljump delete mode 100644 lib/tree-2.81/ChangeLog delete mode 100644 lib/tree-2.81/Makefile delete mode 100644 lib/tree-2.81/doc/documentation.html delete mode 100644 lib/tree-2.81/doc/download.html delete mode 100644 lib/tree-2.81/doc/doxygen_tree.config delete mode 100644 lib/tree-2.81/doc/favicon.ico delete mode 100644 lib/tree-2.81/doc/favicon.png delete mode 100644 lib/tree-2.81/doc/filler.png delete mode 100644 lib/tree-2.81/doc/index.html delete mode 100644 lib/tree-2.81/doc/projects.html delete mode 100644 lib/tree-2.81/doc/structure.png delete mode 100644 lib/tree-2.81/doc/structure.svg delete mode 100644 lib/tree-2.81/doc/tree.css delete mode 100644 lib/tree-2.81/doc/tree.jpg delete mode 100644 lib/tree-2.81/doc/tree.png delete mode 100644 lib/tree-2.81/doc/tree.tex delete mode 100644 lib/tree-2.81/doc/tree2.png delete mode 100644 lib/tree-2.81/doc/treefig.eps delete mode 100644 lib/tree-2.81/doc/treefig.fig delete mode 100644 lib/tree-2.81/doc/treefig.pdf delete mode 100644 lib/tree-2.81/src/.gitignore delete mode 100644 lib/tree-2.81/src/Makefile delete mode 100644 lib/tree-2.81/src/simple tree.hpp delete mode 100644 lib/tree-2.81/src/test1.cc delete mode 100644 lib/tree-2.81/src/test1.req delete mode 100644 lib/tree-2.81/src/test_tree.cc delete mode 100644 lib/tree-2.81/src/test_tree.output delete mode 100644 lib/tree-2.81/src/tree.hh delete mode 100644 lib/tree-2.81/src/tree_example.cc delete mode 100644 lib/tree-2.81/src/tree_util.hh delete mode 100644 lib/tree-2.81/src/xinlin.hh delete mode 100644 src/gamelib/inputbag.cpp delete mode 100644 src/gamelib/inputbag.hpp delete mode 100644 src/gamelib/inputdevicetype.hpp delete mode 100644 src/gamelib/key.hpp delete mode 100644 src/gamelib/observersmanager.hpp delete mode 100644 src/gamelib/sdlmain.cpp delete mode 100644 src/gamelib/sdlmain.hpp delete mode 100644 src/gamelib/sizenotifiable.cpp delete mode 100644 src/gamelib/sizenotifiable.hpp delete mode 100644 src/gamelib/sizeratio.cpp delete mode 100644 src/gamelib/sizeratio.hpp diff --git a/.gitmodules b/.gitmodules index f6ea797..cfd1d7d 100644 --- a/.gitmodules +++ b/.gitmodules @@ -7,3 +7,6 @@ [submodule "lib/Catch"] path = lib/Catch url = https://github.com/philsquared/Catch.git +[submodule "lib/clooneljump"] + path = lib/clooneljump + url = https://bitbucket.org/King_DuckZ/clooneljump.git diff --git a/CMakeLists.txt b/CMakeLists.txt index 5939a5e..ca8e272 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -56,6 +56,7 @@ set(common_gcc_flags -Wall -Wextra -pedantic -Wconversion -ffast-math) add_library(${PROJECT_NAME} INTERFACE) target_compile_options(${PROJECT_NAME} INTERFACE ${common_gcc_flags}) +add_subdirectory(lib/clooneljump/src/cloonelgraphics) add_subdirectory(src/gamelib) add_subdirectory(src/standalone) diff --git a/lib/clooneljump b/lib/clooneljump new file mode 160000 index 0000000..6ce7b57 --- /dev/null +++ b/lib/clooneljump @@ -0,0 +1 @@ +Subproject commit 6ce7b57882d2b542ee2d255dd2441cc1c1370390 diff --git a/lib/tree-2.81/ChangeLog b/lib/tree-2.81/ChangeLog deleted file mode 100644 index 9b05100..0000000 --- a/lib/tree-2.81/ChangeLog +++ /dev/null @@ -1,391 +0,0 @@ -2011-08-23 Kasper Peeters - - * Brown paper bag release 2.81. - -2011-08-23 Kasper Peeters - - * Released 2.8 - - * License updated. - -2010-12-24 Kasper Peeters - - * Added a number of asserts to trip when passing invalid iterators - to append_child/prepend_child members. - -2010-03-24 Kasper Peeters - - * Released 2.70 - - * Fixed handling of std::allocator to make it more likely to work - on non-GNU platforms. - -2009-12-28 Kasper Peeters - - * Fixed the operator= return type and handled self-assignment - (thanks to Xinlin Cao for the fix). - -2009-05-05 Kasper Peeters - - * Released 2.65 - - * Added skip_children(bool), fixed post-increment/decrement - operators to not refer to 'n' anymore. - -2009-04-03 Kasper Peeters - - * Added a sibling member for quick access to the n-th sibling - (thanks to Adam Connell for sending the patch). - -2009-03-06 Kasper Peeters - - * Fixed an old bug in compare_nodes (pointed out to me in 2005 but - never fixed properly...) - -2008-08-28 Kasper Peeters - - * Released 2.62 - - * Changed the behaviour of max_depth() so that it returns -1 for - an empty tree, instead of bailing out with an error (strictly - speaking max_depth should be undefined...). - -2008-08-26 Kasper Peeters - - * Released 2.61 - - * Fixed a bug in max_depth() which would fail on trees with more - than one head node (thanks to Marc Noirot for pointing this out). - -2008-08-23 Kasper Peeters - - * Released 2.60 - - * Fixed several problems with fixed_depth iterators: iterating - beyond the top node now disabled and operator-- fixed. - -2008-07-25 Kasper Peeters - - * Made 'child()' static. - -2008-07-20 Kasper Peeters - - * Released 2.54 - - * Changed size() members to return size_t instead of unsigned int. - - * Changed behaviour of operator++ for leaf_iterator so that it can - be used in situations where new leaves get added during iteration. - -2008-06-30 Kasper Peeters - - * Released 2.52 - - * Made depth member function static so it can be used independent - of an actual tree, and added a version with two iterators to - measure depths relative to a different node. - -2008-02-28 Kasper Peeters - - * Released 2.51 - - * Added a top node to leaf_iterators, so that they can be - instructed to iterate only over the leaves of a given node. - -2007-10-19 Kasper Peeters - - * Released 2.4. - -2007-10-18 Kasper Peeters - - * Added max_depth() members. - - * Fixed a bug in begin_fixed() which would fail on - - A - / \ - B C - / \ - D E - / \ - F G - - when asked for the first node at depth 3 from 'A' (since it - failed to go back up the tree from 'D'). - -2007-08-21 Kasper Peeters - - * Released 2.31. - - * Added GPL version 3 licensing as an option. - -2007-01-19 Kasper Peeters - - * Fixed a bug in "replace" which appeared when trying to replace a - head node (it tried to access the parent). - -2006-11-29 Kasper Peeters - - * Release 2.3. - - Fixed a bug in number_of_siblings which only counted siblings in - one direction (thanks to Fanzhe Cui for pointing this out). - -2006-08-20 Kasper Peeters - - * Released 2.2. - - * Added operator== and operator!= for fixed_depth_iterator. - -2006-08-07 Kasper Peeters - - * Released 2.1. - - * Added leaf iterators, code contributed by Peter Wienemann. - - * Fixed a bug in is_valid (thanks to Antonio Morillas). 1.131. - -2006-07-19 Kasper Peeters - - * Fixed bugs in move_before and move_after which would show up - when the node was already in the right place. 1.130. - -2006-03-02 Kasper Peeters - - * Added the "wrap" member function. - -2006-03-01 Kasper Peeters - - * Added a simple queue-based breadth-first iterator. - -2006-01-31 Kasper Peeters - - * Fixed move_before to work when the target is a sibling_iterator - pointing to the end of a range of siblings. - -2005-11-20 Kasper Peeters - - * Added move_after, which for some mysterious reason was - missing. Thanks to Dennis Jones for pointing this out. - - * Fixed a bug in operator++ for post_order iterators - (skip_children could remain set if no next sibling present). - Thanks to Ohad for pointing out the bug. - -2005-10-12 Kasper Peeters - - * Fixed a bug in the 'sort' member which takes a Comparator - function object (thanks to Robin Taylor for the patch). - -2005-09-14 Kasper Peeters - - * Doxygen documentation added, plus a new web page. - -2004-11-05 Kasper Peeters - - * Fixed a bug which shows up when inserting nodes at the top of - the tree (thanks to Matthias Bernt for pointing me to this one). - -2004-07-21 Kasper Peeters - - * Fixed kp::destructor -> destructor. - - * Moved body of 'compare_nodes::operator()' into the class - declaration in order to satisfy buggy Borland compilers (and stop - regular email messages about this problem). - - * Fixed a completely buggy number_of_siblings() (thanks to Caleb - Epstein for the patch). - -2004-02-04 Kasper Peeters - - * Released 1.106 - - * Fixed a bug in insert(sibling_iterator, const T&) (thanks to - Maxim Yegorushkin for the patch). - -2003-11-21 Kasper Peeters - - * Put some things in a namespace to avoid clashes with other - libraries. - -2003-10-13 Kasper Peeters - - * Released 1.102. - - * Fixed return type of postincrement/decrement operators (thanks - to Yevhen Tymokhin for pointing this out). - -2003-09-18 Kasper Peeters - - * Fixes for standard compliance, as required to compile with - gcc 3.4 and later. - -2003-08-12 Kasper Peeters - - * Added 'empty' member (patch by Michael Vogt). - -2003-08-01 - - * Released 1.95 - - * Fixed two bugs in sort (which were corrupting the tree); thanks - to Michael Vogt for informing me about the problem. - -2003-07-17 - - * Added a hack to enable compilation with STLport. - -2003-07-11 - - * Released 1.90 - - * Added postfix increment and decrement operators; thanks to - Claudio Andreatta for sending the patch. - - * Fixed a bug in reparent(iter pos, iter from). Thanks to Claudio - Andreatta for fixing this. - -2003-06-25 Kasper Peeters - - * Many bug fixes for fixed depth iterators, thanks to Ruben - Niederhagen for pointing out several problems (a few still exist, - see the 'TODO' part of tree.hh). - -2003-04-17 Kasper Peeters - - * Released 1.85 - - * Corrected return type of operator++ and friends. - - * Added preliminary support for 'fixed_depth_iterator' to iterate - over children at a given level. Not quite finished yet, sorry. - -2003-03-24 Kasper Peeters - - * Released 1.83 - - * Changed return type of 'child' member function to be a sibling - iterator instead of a reference to the actual node (sorry for the - incompatibility with previous versions). Change also propagated to - tree_msvc.hh. - -2003-02-07 - - * Released 1.80 - - * Fixed another bug in sort (thanks to Tony Cook for fixing this - bug). - -2003-01-29 Kasper Peeters - - * Released 1.78. - - * Fixed a bug in sort, which resulted in a corrupt tree (thanks to - Michael Vogt for fixing this bug). - -2003-01-07 Kasper Peeters - - * Released 1.75 and msvc version 1.72 - - * Fixed a wrongly specialised 'insert' method for - sibling_iterators (thanks to Tony Cook for pointing this out). - -2002-11-15 Kasper Peeters - - * Released 1.72 - - * Fixed a bug in 'index' when called on nodes at the top level of - the tree (thanks to David Zajic for the bug report). Be warned - that the top level is a bit special at the moment; the end - sibling_iterator is ill-defined for siblings there (to be fixed in - a future version). - -2002-10-31 Kasper Peeters - - * Released 1.70. - - * Finished the merge algorithm, updated the documentation with - examples about its use, and added a test-case to the test_tree.cc - program. - - * Fixed a bug in pre_order_iterator::operator--. - -2002-10-20 Kasper Peeters - - * Released 1.66. - -2002-10-15 Kasper Peeters - - * Code for post_order_iterator implemented. - -2002-10-13 Kasper Peeters - - * Rewrote large parts of the code to allow for multiple iterator - types, such as pre_order_iterator (which was the previous iterator - type), post_order_iterator and so on. This required small changes - to the interface, the most visible one being - - - insert(iterator, iterator) for the insertion of a subtree - is now called insert_subtree(iterator, iterator). - - Apologies if this breaks your code. - -2002-10-11 Kasper Peeters - - * Removed '(void)' type declarations in favour of the C++ standard - empty brackets '()'. - -2002-10-10 Kasper Peeters - - * Added 'index' in response to a discussion on the Boost mailing - list. - -2002-10-03 Kasper Peeters - - * reparent(iterator,sibling_iterator,sibling_iterator) now accepts - an empty range, in which case it does nothing (request by Jos de - Laender). - - * Fixed a bug in the iterator(sibling_iterator) constructor - (thanks to Jos de Laender for pointing this out). - -2002-09-04 Kasper Peeters - - * Fixed a bug in insert_after (thanks to Carl Blanchette for the - patch). - -2002-08-29 Kasper Peeters - - * The problem in test_tree of the previous item was actually do to - tree::end(iterator) returning the end of the tree, not the end of - the current sibling list. Fixed now, released 1.55. - -2002-08-26 Kasper Peeters - - * Released 1.54. - - * Printing a single-node tree in test_tree would result in a - segfault; more robust now (thanks to Yutaka Sato for the bug - report). - -2002-05-07 Kasper Peeters - - * Fixed a bug in "sort" which would remove duplicate nodes altogether. - -2002-03-24 Kasper Peeters - - * Added "append_child" without child argument, to add empty child - node. - -2002-05-04 Kasper Peeters - - * Released 1.45. - - * Removed restriction of having only a single node at the top of - the tree (associated with this, the top nodes should now be inserted - with "insert", not with "append_child"). - - * Fixes for ISO compatibility (now works with gcc-3.1). Thanks to - Olivier Verdier. - diff --git a/lib/tree-2.81/Makefile b/lib/tree-2.81/Makefile deleted file mode 100644 index ee30472..0000000 --- a/lib/tree-2.81/Makefile +++ /dev/null @@ -1,27 +0,0 @@ - -RELEASE=2.8 -HTML=${HOME}/public_html/ - -.PHONY: doc tarball - -tarball: - git archive --format=tar --prefix=tree-${RELEASE}/ HEAD | gzip > ${HOME}/tmp/tree-${RELEASE}.tar.gz - -site: tarball doc - install -d ${HTML}/tree - install -d ${HTML}/tree/doxygen/html - install doc/index.html doc/tree.css doc/tree.jpg ChangeLog ${HTML}/tree - install src/test_tree.cc src/test_tree.output src/tree_example.cc src/tree.hh src/tree_util.hh ${HTML}/tree - install doxygen/html/* ${HTML}/tree/doxygen/html - install ${HOME}/tmp/tree-${RELEASE}.tar.gz ${HTML}/tree - install ${HOME}/tmp/kt_temp/kt_temp_tree/tree.pdf ${HTML}/tree - -upload: - rsync -avz ${HTML}/tree/ zmaya:tree - -doc: - (cd doc; kt -f tree.tex) - doxygen doc/doxygen_tree.config - -test_tree: test_tree.o - g++ -o test_tree test_tree.o diff --git a/lib/tree-2.81/doc/documentation.html b/lib/tree-2.81/doc/documentation.html deleted file mode 100644 index 59d3226..0000000 --- a/lib/tree-2.81/doc/documentation.html +++ /dev/null @@ -1,220 +0,0 @@ - - - - - - - -tree.hh: an STL-like C++ tree class, documentation - - - -
-
-
- -Bookmark and Share - -
-
- [background image] -
-
-

tree.hh: an STL-like C++ tree class

-

- Kasper Peeters, kasper.peeters (at) phi-sci.com -

-
-
- - - - - -
- - - -

Data structure overview

- -
The data structure of the tree class is depicted - below (see the documentation for more detailed information). - Each node contains a pointer to the first and last child element, - and each child contains pointers to its previous and next sibling: - [structure
-		  diagram] -
- -
- Iterators come in various types. The normal iterator iterates depth-first - over all nodes. The beginning and end of the tree can be obtained by using the - begin() and end() members. The other type of iterator - only iterates over the nodes at one given depth (ie. over all siblings). One - typically uses these iterators to iterate over all children of a node, in which - case the [begin,end) range can be obtained by calling begin(iterator) - and end(iterator).
- -
Iterators can be converted from one type to the other; this includes the `end' - iterators (all intervals are as usual closed at the beginning and open - at the end).
- -

Sample program

- -
- Here is a small sample program to illustrate - how tree.hh is used in practise. - -
-
#include <algorithm>
-#include <string>
-#include <iostream>
-#include "tree.hh"
-
-using namespace std;
-
-int main(int, char **)
-   {
-   tree<string> tr;
-   tree<string>::iterator top, one, two, loc, banana;
-   
-   top=tr.begin();
-   one=tr.insert(top, "one");
-   two=tr.append_child(one, "two");
-   tr.append_child(two, "apple");
-   banana=tr.append_child(two, "banana");
-   tr.append_child(banana,"cherry");
-   tr.append_child(two, "peach");
-   tr.append_child(one,"three");
-   
-   loc=find(tr.begin(), tr.end(), "two");
-   if(loc!=tr.end()) {
-   tree<string>::sibling_iterator sib=tr.begin(loc);
-   while(sib!=tr.end(loc)) {
-     cout << (*sib) << endl;
-     ++sib;
-     }
-   cout << endl;
-   tree<string>::iterator sib2=tr.begin(loc);
-   tree<string>::iterator end2=tr.end(loc);
-   while(sib2!=end2) {
-     for(int i=0; i<tr.depth(sib2)-2; ++i) 
-        cout << " ";
-     cout << (*sib2) << endl;
-     ++sib2;
-     }
-   }
-}
-
- The output of this program is -
-
apple
-banana
-peach
-
-apple
-banana
- cherry
-peach
-
- Note that this example only has one element at the - top of the tree (in this case that is the node containing "one") but - it is possible to have an arbitary number of such elements (then the - tree is more like a "bush"). Observe the way in which the two types of - iterators work. The first block of output, obtained using the - sibling_iterator, only displays the children directly below "two". The - second block iterates over all children at any depth below "two". In - the second output block, the depth member has been used - to determine the distance of a given node to the root of the - tree. -
- -

API documentation

- -
- Documentation is available in the form of - a pdf file. This file is also available - in the tarball as a LaTeX file. Further information can be - obtained by reading the test program (included in the - distribution). Also look at the simple - example below. -
- -
- The most complete documentation of the interface is always - available in the doxygen - generated documentation. -
-
- -
- -

- - Valid XHTML 1.0 Strict -

- - - - - - - - -
- - - diff --git a/lib/tree-2.81/doc/download.html b/lib/tree-2.81/doc/download.html deleted file mode 100644 index 4bb45a7..0000000 --- a/lib/tree-2.81/doc/download.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - - - -tree.hh: an STL-like C++ tree class, download - - - -
-
-
- -Bookmark and Share - -
-
- [background image] -
-
-

tree.hh: an STL-like C++ tree class

-

- Kasper Peeters, kasper.peeters (at) phi-sci.com -

-
-
- - - - - -
- - - -

Download

- -
Everything (the header file, examples, documentation - and all other things referred to on this page) is contained in the - tarball
- -
- Feel free to copy the header tree.hh - (which is all you need code-wise) into your own source - directory as long as you respect the license (see above). -
- -
- The list of changes can be found in the ChangeLog. -
- -
- There is a small utility - library tree_util.hh originally - written by Linda Buisman. This library contains a number of - functions to output a tree as text, to aid in debugging your - project. -
- -
The current version works with GNU gcc 3.x and - higher, Borland C++ builder and Microsoft Visual C++ 7.1 and - higher (I no longer support older versions of Visual C++). It is - compatible with STLport (though older versions may not work - correctly, best to upgrade to something fairly recent). -
- -
The library is available for free, but if it - helps you a lot, why not consider a small donation? - - Your contribution is greatly appreciated! -
- - -

Installation

- -
- No installation is required as the tree.hh library is - contained in the single header file tree.hh. Just copy it into - your source directory (and upgrade it from the master site - when a new version becomes available). -
- -
- -
- -

- - Valid XHTML 1.0 Strict -

- - - - - - - - -
- - - diff --git a/lib/tree-2.81/doc/doxygen_tree.config b/lib/tree-2.81/doc/doxygen_tree.config deleted file mode 100644 index 5095e07..0000000 --- a/lib/tree-2.81/doc/doxygen_tree.config +++ /dev/null @@ -1,270 +0,0 @@ -# Doxyfile 1.4.4 - -#--------------------------------------------------------------------------- -# Project related configuration options -#--------------------------------------------------------------------------- -PROJECT_NAME = tree -PROJECT_NUMBER = "release 2.0" -OUTPUT_DIRECTORY = doxygen -CREATE_SUBDIRS = NO -OUTPUT_LANGUAGE = English -USE_WINDOWS_ENCODING = NO -BRIEF_MEMBER_DESC = YES -REPEAT_BRIEF = YES -ABBREVIATE_BRIEF = "The $name class" \ - "The $name widget" \ - "The $name file" \ - is \ - provides \ - specifies \ - contains \ - represents \ - a \ - an \ - the -ALWAYS_DETAILED_SEC = NO -INLINE_INHERITED_MEMB = NO -FULL_PATH_NAMES = YES -STRIP_FROM_PATH = -STRIP_FROM_INC_PATH = -SHORT_NAMES = NO -JAVADOC_AUTOBRIEF = NO -MULTILINE_CPP_IS_BRIEF = NO -DETAILS_AT_TOP = NO -INHERIT_DOCS = YES -DISTRIBUTE_GROUP_DOC = NO -SEPARATE_MEMBER_PAGES = NO -TAB_SIZE = 8 -ALIASES = -OPTIMIZE_OUTPUT_FOR_C = NO -OPTIMIZE_OUTPUT_JAVA = NO -SUBGROUPING = YES -#--------------------------------------------------------------------------- -# Build related configuration options -#--------------------------------------------------------------------------- -EXTRACT_ALL = YES -EXTRACT_PRIVATE = YES -EXTRACT_STATIC = NO -EXTRACT_LOCAL_CLASSES = YES -EXTRACT_LOCAL_METHODS = NO -HIDE_UNDOC_MEMBERS = YES -HIDE_UNDOC_CLASSES = YES -HIDE_FRIEND_COMPOUNDS = NO -HIDE_IN_BODY_DOCS = NO -INTERNAL_DOCS = NO -CASE_SENSE_NAMES = YES -HIDE_SCOPE_NAMES = NO -SHOW_INCLUDE_FILES = YES -INLINE_INFO = YES -SORT_MEMBER_DOCS = YES -SORT_BRIEF_DOCS = NO -SORT_BY_SCOPE_NAME = NO -GENERATE_TODOLIST = YES -GENERATE_TESTLIST = YES -GENERATE_BUGLIST = YES -GENERATE_DEPRECATEDLIST= YES -ENABLED_SECTIONS = -MAX_INITIALIZER_LINES = 30 -SHOW_USED_FILES = YES -SHOW_DIRECTORIES = YES -FILE_VERSION_FILTER = -#--------------------------------------------------------------------------- -# configuration options related to warning and progress messages -#--------------------------------------------------------------------------- -QUIET = NO -WARNINGS = YES -WARN_IF_UNDOCUMENTED = YES -WARN_IF_DOC_ERROR = YES -WARN_NO_PARAMDOC = NO -WARN_FORMAT = "$file:$line: $text" -WARN_LOGFILE = -#--------------------------------------------------------------------------- -# configuration options related to the input files -#--------------------------------------------------------------------------- -INPUT = src/tree.hh -FILE_PATTERNS = *.c \ - *.cc \ - *.cxx \ - *.cpp \ - *.c++ \ - *.d \ - *.java \ - *.ii \ - *.ixx \ - *.ipp \ - *.i++ \ - *.inl \ - *.h \ - *.hh \ - *.hxx \ - *.hpp \ - *.h++ \ - *.idl \ - *.odl \ - *.cs \ - *.php \ - *.php3 \ - *.inc \ - *.m \ - *.mm \ - *.dox \ - *.C \ - *.CC \ - *.C++ \ - *.II \ - *.I++ \ - *.H \ - *.HH \ - *.H++ \ - *.CS \ - *.PHP \ - *.PHP3 \ - *.M \ - *.MM -RECURSIVE = NO -EXCLUDE = -EXCLUDE_SYMLINKS = NO -EXCLUDE_PATTERNS = -EXAMPLE_PATH = -EXAMPLE_PATTERNS = * -EXAMPLE_RECURSIVE = NO -IMAGE_PATH = -INPUT_FILTER = -FILTER_PATTERNS = -FILTER_SOURCE_FILES = NO -#--------------------------------------------------------------------------- -# configuration options related to source browsing -#--------------------------------------------------------------------------- -SOURCE_BROWSER = NO -INLINE_SOURCES = NO -STRIP_CODE_COMMENTS = YES -REFERENCED_BY_RELATION = NO -REFERENCES_RELATION = NO -USE_HTAGS = NO -VERBATIM_HEADERS = NO -#--------------------------------------------------------------------------- -# configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- -ALPHABETICAL_INDEX = NO -COLS_IN_ALPHA_INDEX = 5 -IGNORE_PREFIX = -#--------------------------------------------------------------------------- -# configuration options related to the HTML output -#--------------------------------------------------------------------------- -GENERATE_HTML = YES -HTML_OUTPUT = html -HTML_FILE_EXTENSION = .html -HTML_HEADER = -HTML_FOOTER = -HTML_STYLESHEET = -HTML_ALIGN_MEMBERS = YES -GENERATE_HTMLHELP = NO -CHM_FILE = -HHC_LOCATION = -GENERATE_CHI = NO -BINARY_TOC = NO -TOC_EXPAND = NO -DISABLE_INDEX = NO -ENUM_VALUES_PER_LINE = 4 -GENERATE_TREEVIEW = NO -TREEVIEW_WIDTH = 250 -#--------------------------------------------------------------------------- -# configuration options related to the LaTeX output -#--------------------------------------------------------------------------- -GENERATE_LATEX = YES -LATEX_OUTPUT = latex -LATEX_CMD_NAME = latex -MAKEINDEX_CMD_NAME = makeindex -COMPACT_LATEX = NO -PAPER_TYPE = a4wide -EXTRA_PACKAGES = -LATEX_HEADER = -PDF_HYPERLINKS = NO -USE_PDFLATEX = NO -LATEX_BATCHMODE = NO -LATEX_HIDE_INDICES = NO -#--------------------------------------------------------------------------- -# configuration options related to the RTF output -#--------------------------------------------------------------------------- -GENERATE_RTF = NO -RTF_OUTPUT = rtf -COMPACT_RTF = NO -RTF_HYPERLINKS = NO -RTF_STYLESHEET_FILE = -RTF_EXTENSIONS_FILE = -#--------------------------------------------------------------------------- -# configuration options related to the man page output -#--------------------------------------------------------------------------- -GENERATE_MAN = NO -MAN_OUTPUT = man -MAN_EXTENSION = .3 -MAN_LINKS = NO -#--------------------------------------------------------------------------- -# configuration options related to the XML output -#--------------------------------------------------------------------------- -GENERATE_XML = NO -XML_OUTPUT = xml -XML_SCHEMA = -XML_DTD = -XML_PROGRAMLISTING = YES -#--------------------------------------------------------------------------- -# configuration options for the AutoGen Definitions output -#--------------------------------------------------------------------------- -GENERATE_AUTOGEN_DEF = NO -#--------------------------------------------------------------------------- -# configuration options related to the Perl module output -#--------------------------------------------------------------------------- -GENERATE_PERLMOD = NO -PERLMOD_LATEX = NO -PERLMOD_PRETTY = YES -PERLMOD_MAKEVAR_PREFIX = -#--------------------------------------------------------------------------- -# Configuration options related to the preprocessor -#--------------------------------------------------------------------------- -ENABLE_PREPROCESSING = YES -MACRO_EXPANSION = NO -EXPAND_ONLY_PREDEF = NO -SEARCH_INCLUDES = YES -INCLUDE_PATH = -INCLUDE_FILE_PATTERNS = -PREDEFINED = -EXPAND_AS_DEFINED = -SKIP_FUNCTION_MACROS = YES -#--------------------------------------------------------------------------- -# Configuration::additions related to external references -#--------------------------------------------------------------------------- -TAGFILES = -GENERATE_TAGFILE = -ALLEXTERNALS = NO -EXTERNAL_GROUPS = YES -PERL_PATH = /usr/bin/perl -#--------------------------------------------------------------------------- -# Configuration options related to the dot tool -#--------------------------------------------------------------------------- -CLASS_DIAGRAMS = YES -HIDE_UNDOC_RELATIONS = YES -HAVE_DOT = NO -CLASS_GRAPH = YES -COLLABORATION_GRAPH = YES -GROUP_GRAPHS = YES -UML_LOOK = NO -TEMPLATE_RELATIONS = NO -INCLUDE_GRAPH = YES -INCLUDED_BY_GRAPH = YES -CALL_GRAPH = NO -GRAPHICAL_HIERARCHY = YES -DIRECTORY_GRAPH = YES -DOT_IMAGE_FORMAT = png -DOT_PATH = -DOTFILE_DIRS = -MAX_DOT_GRAPH_WIDTH = 1024 -MAX_DOT_GRAPH_HEIGHT = 1024 -MAX_DOT_GRAPH_DEPTH = 1000 -DOT_TRANSPARENT = NO -DOT_MULTI_TARGETS = NO -GENERATE_LEGEND = YES -DOT_CLEANUP = YES -#--------------------------------------------------------------------------- -# Configuration::additions related to the search engine -#--------------------------------------------------------------------------- -SEARCHENGINE = NO diff --git a/lib/tree-2.81/doc/favicon.ico b/lib/tree-2.81/doc/favicon.ico deleted file mode 100644 index 4eb6ffe57dc29241e93011c249ce71478e17d964..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2238 zcmZQzU}RuqP*4ET91JTs7#PGD7#K7d7#I{77#JKFAmR*o0V4wg12Y2y0~-Sa0|x^G z0~Z4Wg9rm7qY?u%^CAWomPHJ#tcw}g*cLOevoB`g;8?=I#kG`yn|mn(56@BtUfyL4 ze0<9o`1zMH2n(-Z5D{6yAS$|&K|*2`gS`A&21UiS49d#u7*tf&F{rDrXVB1C&tPo4 zg~7yR3xk>2Rt9tPtqiudI~W`sb~5<*>}Bxv-OJ$bzmFjxU>`$R*g=Nq=tB%KF^3uA zTBphK#N;=ArntF^OBjY$jLBT18nws+rb#><%8XGS#G&f&lXluL7Fm2imhS{@k zG0d5Bn_=$U+YIyO-Da3S{|>{#g?AX1EV;|DY}q}Aty`Zk?ArB|Vb7jt3r*{UEH!$jBfePERckZ3PZKOPH7ghdhiK85ya=p~=G|!Xf1X7c<~6g0mwd zoj5o+I5|`U5JEB>&InFq1P2EPw@Cy-#Gg+r48cPQO|UQn3p)dt0VUwUN+W)x6o&%T z=*Y;(U|kMg9|RY~GU7le@RH*YumcGqV}t^GQ4U#mWGM(6svz8$lS4faB7{nU6$Geo zaGN3p6tWT{4h{)v4sl0hF%-5T2M33uFNzQ<2R#^3Wg{a&6)d_KGM}J+M50C3MgbdS H<3M5nMDMUK diff --git a/lib/tree-2.81/doc/favicon.png b/lib/tree-2.81/doc/favicon.png deleted file mode 100644 index 69d16b316d05312dd59730c67a597eb25f5c7fd6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 782 zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4kiW$hCdQ-7c($0Fct^7J29*~C-ahlfq}EY zBeIx*fm;}a85w5Hkzin8U@!6Xb!ETF#VjDKIKg4j76t|e$r9Iy66gHf+|;}h2Ir#G z#FEq$h4Rdj3ccCm#sN!W}L5* z#GN-9a_z}(y}->9E6Ub!Yw2aC%X6cgKC-?+$Vf`tl7@ z<=?UtvrO0*Vo4@>Q`X$@N z>t8D?TQXbn`n!G{noEN0mQOxd5xtOO-CDtU;`{kFt>J#;z4X8*Bj-S#W9-VxM>lWQ zX3C1%f5moU%gskYFmua&yb}> zFTdIx_hhz{m;0CY@z3t1OPe1){9F>nQgAyVptNMp^2_mk{Yx1iuGM8Q@b^*Za+1)# zbxTO+^sTp<`{P>*^9uwR?B2fjX3#U5x#Ku9hiy!xVSm4HpRv_ktJS8`-EY5sZOz=J zmyp51Af%&h_{Q#nN%KeT_GW=kx+1soGH(X1-n@KyetLTAnmsdTKK%4kN;X_$$JVH} zMMa%1KkJsVPdw|(u))Wdv0>Zt<0e*7S|U!bU-z4t$z3*C8q}IuwSK?7bZ=P9k+o~t z+L<{#-@LoVD;Te%b?f%VpiC)g;WD{1XEV>F%{|M;Fzw_?b$9pjUAr#T{r~Q<#LBCj zo$ZQRu&eriL#>v+a0Ze3QX3}@#tEAw7r1GJr)vdpOkHJnb;Y72*GXDl`|1>@{(Bo( k$a{X;|JqsiBp#@Lh-+u4f4g=90|Nttr>mdKI;Vst0KAk+WdHyG diff --git a/lib/tree-2.81/doc/filler.png b/lib/tree-2.81/doc/filler.png deleted file mode 100644 index 548e1e4363899786b020ec18271a679997f3eeea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 881 zcmeAS@N?(olHy`uVBq!ia0y~yU|?ZjU|7Jx#K6F?L@w$g0|NtNage(c!@6@aFBupZ z*pj^6T^Rm@;DWu&Co?cGa29w(7Bet#3xhBt!>lxc1A_D3-?9mW$nzBT&q`smQ)kpIE{|KIrN)^`q~ zw=0-9UR-*!jbTcf(Ccjv7~GvRlJ~rGDh*mud)=#lRdkxNYlJl8%`(%%%TBk?g{^!x zg~jmb)P)Qao0Z)%8zUdezWnevI7?^CDxn1mb5i)kwmC5OxUFiAU|+g0`d3x2$5O{O@F&rGTVQfrkYY7_-Jc#*D24r6U<*EF27^<^FpNZQdjk) zOx?67ot1Ag&aa*@ck6DZ7fTkZHcghw%$&RRM~lZ5j)%MIEn@4E%yjQ=+y0nqMvnc0 zr&|RDZb=1esbrR$t;*45{{GnS`IYP3X)Xmz4gSx``#!C7Ik!cSmEgREr~X(^ulqLZ z$?8@g?i=eYzV8cfJoi3Yc}M9yHvI=P<4tdEd!v)Lmf!qb(^`w^S{t|*e;3(mWUs#5 z_KHEK^VU;)f^=h_T~A&m`soEv+04U-HosL{RU4A>QSYzy90t*23HB$Ro6AIO;Mpxy zkoasyo!G2Qjp=b#+cRR@&M)u3(o-uKpt6Ze(8}Rr-4TV_Lc^oWx9c%;M@;2hEyI1L z`1I90_RDr9Gu;z*Z&}Q38n8U%?Ip7*clA9ctIJvHPwbQ3aMp4AHuZB(vKnQ2_X{rl z{BFH>Lw3L5OTVv@vU5MTTdJIY)?l&!rSkE-rVC3~2cHs)oH>0~zVeg5`aUx+uR1O_ zx1R3;^TY>rjFD~2bjxmMo}Qd!{?GGW#xI-8znUa&l)b#L-8X{w5%an;&Xa}YLb|p1 zDxEZ}%JwUs+Tyh>=$Wxn>-10&9qYTxC-R;#EctzWVtkz1%*WOB{AVU7PO8=8yz^~( zpUzr?+gECLEttD&d%&wR-x$27TbH~3KJxwIwdLvYS2n%v(W`xEc{u3RbawyRsb?O) rb-T4N-+Nc-x_z;=-}Jdx{I$Orm&o`jCf138fq}u()z4*}Q$iB}6vvXi diff --git a/lib/tree-2.81/doc/index.html b/lib/tree-2.81/doc/index.html deleted file mode 100644 index f807fa2..0000000 --- a/lib/tree-2.81/doc/index.html +++ /dev/null @@ -1,205 +0,0 @@ - - - - - - - -tree.hh: an STL-like C++ tree class - - - -
-
-
- -Bookmark and Share - -
-
- - - - - -
-
- [background image] -
-
-

tree.hh: an STL-like C++ tree class

-

- Kasper Peeters, kasper.peeters (at) phi-sci.com -

-
-
- - - - - -
- - - -

Overview

- -
- The tree.hh library for C++ provides an STL-like container class - for n-ary trees, templated over the data stored at the nodes. Various - types of iterators are provided (post-order, pre-order, and - others). Where possible the access methods are compatible with the STL - or alternative algorithms are available. The library is available - under the terms of the GNU General Public License version 2 or - 3 (see below).
- -
Documentation is available in the form of - a pdf file. See - the documentation page for - more details and sample programs. -
- -
The tree.hh library is meant for generic n-ary - trees. For binary trees, AVL trees, quad trees and other data - structures, you may want to look elsewhere.
- -
The library is available for free, but if it - helps you a lot, why not consider a small donation? - - Your contribution is greatly appreciated! -
- -
- I have considered this class for inclusion in Boost. However, - there are many ways to implement a tree container, and there - is no good way to simultaneously satisfy everyone who would - use it. See the discussion on the Boost mailing list in - 2002 - and 2009. -
- -

License

- -
In principle, the tree.hh code is - available under the terms of the GNU General Public - License 2 - or 3. However, - if you would like to use tree.hh under different - conditions, contact me and we will work something out.
- -
- This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public - License along with this program. If not, - see http://www.gnu.org/licenses/. -
- -
If you use tree.hh, - please satisfy my curiosity and write me a small email with - a bit of explanation of your software and the role of my tree - class in it.
- -
- -
- -

- - Valid XHTML 1.0 Strict -

- - - - - - - - -
- - - diff --git a/lib/tree-2.81/doc/projects.html b/lib/tree-2.81/doc/projects.html deleted file mode 100644 index 03af4d5..0000000 --- a/lib/tree-2.81/doc/projects.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - -tree.hh: an STL-like C++ tree class, projects using tree.hh - - - -
-
-
- -Bookmark and Share - -
-
- [background image] -
-
-

tree.hh: an STL-like C++ tree class

-

- Kasper Peeters, kasper.peeters (at) phi-sci.com -

-
-
- - - - - -
- - - -

Projects using tree.hh

- -
The tree.hh library is used in various projects: -
-
Cadabra
-
A field-theory motivated approach to symbolic computer - algebra.
-
Gnash
-
Gnash is a GNU Flash movie player. Previously, it was only - possible to play flash movies with proprietary software. While there - are some other free flash players, none support anything beyond SWF - v4. Gnash is based on GameSWF, and supports many SWF v7 features.
-
htmlcxx
-
A simple non-validating css1 and html parser for C++.
-
Principles of Compiler Design
-
A course in compiler design at the Simon Fraser University, Canada.
-
liborigin
-
A library for reading OriginLab OPJ project files, which is used - by QtiPlot - and LabPlot, two - applications for data analysis and visualisation.
-
EChem++
-
A project realizing the idea of a Problem Solving Environment - (PSE) in the field of computational electrochemistry. Computer - controlled experimental measurements, numerical simulation and - analysis of electrochemical processes will be combined under a common - user interface.
-
LZCS
-
A semistructured document transformation tool. LZCS compresses - structured documents taking advantage of the redundant information - that can appear in the structure. The main idea is that frequently - repeated subtrees may exist and these can be replaced by a backward - reference to their first occurance. See the accompanying - paper for more details.
-
libOFX
-
A parser and an API designed to allow applications to very easily support OFX - command responses, usually provided by financial institutions for - statement downloads.
-
A genetic programming project
-
See this paper for - more information.
-
FreeLing
-
The FreeLing package consists of a library providing language analysis services (such as morfological analysis, date recognition, PoS tagging, etc.)
-
- Let me know about your project when you are using - tree.hh, so that I can add it to the list.
-
- -
- -

- - Valid XHTML 1.0 Strict -

- - - - - - - - -
- - - diff --git a/lib/tree-2.81/doc/structure.png b/lib/tree-2.81/doc/structure.png deleted file mode 100644 index fbad024b606f7a3608df108ca2d641ee369f5419..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23977 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�#|>8H##e(mPh-zJzy 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 - - - - - - - - - - - - - image/svg+xml - - - - - - - head 1 - - - - head 2 - - - - - node - - - - node - - - - node - - - next sibling - previous sibling - - - first child - - - - last child - - - - - - - head n - - - - - node - - - - node - - - - node - - - - - - - - depth - - - diff --git a/lib/tree-2.81/doc/tree.css b/lib/tree-2.81/doc/tree.css deleted file mode 100644 index 03b84c8..0000000 --- a/lib/tree-2.81/doc/tree.css +++ /dev/null @@ -1,171 +0,0 @@ - -body { - font: 10pt "Lucida Grande", "Lucida Sans Unicode", Arial, Verdana, sans-serif; -} -div#container { - min-width: 700px; - margin-left: 20px; - margin-right: 20px; - margin-top: 20px; - margin-bottom: 30px; - background: #f0f0f0; - -moz-border-radius: 5px; - -webkit-border-radius: 5px; - -moz-box-shadow: 1px 1px 9px #888; - padding: 5px 15px 5px 15px; -} -div#titletxt { - margin: -150px 0 30px 240px; - height: 70px; -} -div#filler { - width: 100%; - height: 160px; - background: url("filler.png"); - padding: 0; - margin: 0; - margin-top: 5px; - -moz-box-shadow: 1px 1px 5px #888; -} -img#treeimg { - margin-top: 0; -} - -/* Donations */ - -form#donate { - text-align: center; - margin-top: 1ex; - margin-bottom: 1ex; -} - -/* Layout containers */ - -div#linkbar { - margin-right: 135px; - display: inline; -} -div#main { - margin-right: 135px; - display: inline; -} -div#sidebar { - margin-top: 16px; - float: right; - display: inline; - width: 125px; - margin-left: 10px; -} -div#flush { - clear: both; -} - - -/* Title color/style */ - -#title h1 { - font-size: 30px; - color: #b00000; -} -#title h2 { - font-size: 11pt; - font-weight: normal; - color: black; - border-bottom: 0px; -} - -/* Menu */ - -ul#menubar { - margin-top: 0px; - margin-bottom: 35px; - margin-right: 2ex; - text-align: right; -} - -#menubar li { - display: inline; - background: #b00000; - color: white; - font-weight: bold; - padding: .5ex 1ex .5ex 1ex; - -moz-border-radius: 2px; - -webkit-border-radius: 2px; - -moz-box-shadow: 1px 1px 9px #888; -} -#menubar li:hover { - background: #009000; - -moz-border-radius: 2px; - -webkit-border-radius: 2px; - -moz-box-shadow: 1px 1px 6px #888; -} - -#menubar a { - text-decoration: none; - color: white; -} - -/* Main color/style */ - -div#share { - position: absolute; - right: 50px; - top: 36px; -} -div#plusone { - position: absolute; - left: 50px; - top: 36px; -} - -#main h2 { - margin-top: 2ex; - margin-right: 135px; - display: block; - background: #b00000; - color: white; - padding-left: 1ex; - -moz-border-radius: 2px; - -webkit-border-radius: 2px; - -moz-box-shadow: 1px 1px 9px #888; -} -div.text { - margin-left: 120px; - margin-bottom: 2ex; - margin-right: 145px; -} -div.license { - margin-left: 140px; - margin-bottom: 2ex; - margin-right: 155px; -} -div.filename { - margin-left: 200px; - margin-bottom: 1ex; -} -img.structure { - margin-top: 1ex; - margin-bottom: 1ex; - margin-left: 3ex; -} -dd { - margin-bottom: 2ex; -} - -img { - border-style: none; -} - -/* Code listing */ - -div.code { - margin: 1ex; - width: 90%; - border: dotted 1px black; - background: #f8f8f8; - font-size: 8pt; - padding: 1ex; -} -.code pre { - white-space: pre-wrap; -} diff --git a/lib/tree-2.81/doc/tree.jpg b/lib/tree-2.81/doc/tree.jpg deleted file mode 100644 index d6f58f78c607746cf078e977990f12f27b3b8ac1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25606 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
Dm;Guy46GB3f?jdw_Bi}+{l($)GfD8u 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

k07>Z){RGY0g}|E2maPRN7fZ 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¬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

    TqUy+~Vn6 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

    ;4860^#4Yw_DzA2gc_nF6pZ=6hbn*KY< z-<|d?_2KjdJ?4s{*QYt^Z2iNzb%_?!$!?h?8#8>4hx*t_t28-TuH)D}8zZ7vjG{XcU8xKh`7U02t4?$p_f*A$-1t=_o8VtwnTqW=?5X#R6q zB$m$B(`0k+!svA>TtpSS<_W3jk?T+Pp?)BEM^#nKACJoqR6{{Q9k<>lqdaVA0NuTcP5ID;}_ibgvN)5AR>Er#|^+ijgFb`un=qXMa|G{qv*b<{JNV@pEG4 z{$2n7_J1Qu-e=RpC*JnA`>D|ucDw2PJlosWH$V$D^6&4vYH~K;{?~^$Z*pv8EK9_v zr{CQr$=81GWcTIgtNEkDd++_fy8b&~URd+Pq>UZ1ySE$1t(k4T{r%R}tN;GJJNM?3 zf9dn>_s;QVSg|6yd?9D}ov_fae~x;_UXQ(=nI7{#c* zQN1(z`kb~`?kV@WH^0m&udMtTdR+Xon#+v0@9$TEYqwyEn_0oBaMU{lCET{QVY{RvFJ9-{ASSOv1UkG_qGab5@z<{IhD4PbL_wy8ilV ziqX1NSzEJ?J^uLidffc;&tI2*eioho|KI!nbrUue7nuC_G@gH+QBui#L(Z(U{B7oI z+AhEB`~I({ZtIRY^UtrJcKT`gzTfw%-|zkY;9zt7pGV^1;o)1Q-`>4Z-f+RQDyc!z zDZ%~&laq++nwwlgj!UEz1bvSkzL-%`#}^(hGqX1JSeaXvQ}@Q~S)#=Z9}Wl}y=vO$ z_Bj3gyqZ53*QZau_-;#D-&B4L0|}nC!w)k|b`*ZO_VVS+&yOFUKJA@4L07z6BH31A z&Gpw=5tb?bKdwoy*Pnh`f8UQqokGgoilOH$dknS0jF{N@Tm+oFuNG`F=3Tfpi(R4n zsM4{BP|=o-iS73my1Z=qZnus1>eUn@$M^AbVi^NW=WNM+EwNrts;{M^+0oU-l(+vI z+tm$LR#sJYMKZI#ZMFXX?%v+&nm>>J{E4ytG5vY?;)fMBv-@sLT&*Ye`SQ;{m-YAU z`2RsL)YO~fjPK^Sb<BWAO<#ObrRaCR{omakr7t${KDzs4 z>h*WN$Ew-Q^Z4DZH~&3+cy@V1%oM+g**t;QbzjG^9yRPL-ZYnc%87v6H!WIym0t?Z zl|8z7uakE5a<5}k_&A*&6>TqJ{;YLEN3iP9g70#I7efQz6tv#?{iL`$yvVKU;ER*# ztaqh;cetJn4XDDzoZ|TfG*ZuU>&_{u1 za;^7TsGPaAPNeyBPD{znm8bZWcJ8^C^I}FB!<6H*LPBJeXPI#A%(y#AK#A?0cgn?2 z-oK1YiVAnD-g0q|xcS1$_K8HN#|bI7DaY(0pY2*I?jaO-=Ii8+BYGj{f<2u@I$vtO z-?}KN@>+|?Lg%1k&MXB=XB?Cs33k^+urIpxVaYTt!MdF1Cj@TT^;Gsn{1uL@&SIf;%D}U#gjM z$K1lxRDV*cj@XsWjk{8OpPtLB*tC#a)r95N#nS!=pnv;M{_gP3}SQHxI=9T36#~QMhTMqfTe#smRTj**E5t z%#t|3S>R)qvhk6*xmy=^q(?J~0~Ax6R2Tz- zrcZ3hefDyL^xDlTW~UC_Q{>f(Ka;-ipMc*FBhBw&Cc@6Qj{Cmp(_rXZB7f^;((3CI zejgN#&YyDn*tCmtcq0Yd zFYjlS?L7M==fw7h1*eh?G@?Ds%nqNK?bjznj?7+z-cMkKOD&TL^TY2Q~wfP~7q*oi} z=OsPezev{Sc1BW(6bp}#WfRB5Slgsa8*hHQ{dProt4Ok<=Iq+p$q#gt1TKBQ>GAzl zN06??tUk+Se&@dl_uccnbS#Oha#ih8xq=fRYDPT5-xrE#mh!If_wfMe-;t=AkN zn+c1yl%udTtLFq|1?5-V6FzB}UX?1naD8&{9L5F>b-U*kHfLK!`pyUn%1qe2SW0

    VaWJz%o>D##KwZNmA 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

    N^RI&<=-0)nz@O!Sv#Ek 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ΠZL2`-FN z*v_8Iz3ANVLe^{B7B$_OPOGj3Xt?+pcPR<(HwvuLp&>b-kr*B-UIk!Q%IP>0(x4p;b-Rt$PQ@^)7H|xp#V<9J} zMybr{ef5^(uB%H#lH{7b6`zVH>2$rk_0;VYy9d+dIYO&5galZZn1#2$x*+{g<>0hU zg|aKW)J1%2Lzx%!9qwj1;B#T>VveRMB5T@jdbqPr%(@Wcs4ZhV-|MvZ!DVf%TFrT_ zW-`o?;C z4{~3jHZ|wbmfOFzS6$1}XH3>08-pmQw_jIgE^> z*KJ&qBcf-dRNdyfShO~3*)k^9H1-Sz#t5aIS^MowWfBd!6b;2!&b)cpu==CluIC!p z>ch`)J^B{A?)R7KueI)yYFz4f9&YM!mUg_;G24jYpw#!J)+}ppbzTuYy6VPNjkSfV zx)Zch%%x8}`fPrs`t#4NtXA^bH@RZ>YHcpy6w&HkxFl)v&Pma8A9MB3N`0Sm*+JuG zAh%~1`@&6!qTLcdH?PRl+;{uw#5*i;D~?8-oZYePi$3pJx8|CVK;Xo!@g^)r$7+TG{#LTup?-RUenDOA}cxgjkq{trKh#<@aUX zkjMHUzwdZ3-|r8{r^?7^WG+E$0Y=V&&BB* zW*pzfwQ^RivwqnBBSMxpp4``qtnX0WU88wGLw(+9A<6XMn4kdHV^+&GZ5|vw+w8F@ zNwzuZ>7j3LE7W)N@Nzr4cqN=nT>ISb^qH%1LVv`5AKkq&<8AllZyf@wFF0;ibeQ#U zk=~_%>ep{=OU0b0-`~tykT~V-wYx#rWrPbt%zb8GDEO24a_)`Omt{^TPnXy#>em~- zY4+_d|Kf<+%~SOal8)Fs6R|lpr$+wO-`lG;<^S%Mnl9ZH#=kUoZ;Z+B6-6rH`ux$q z4~eq&F$H(7IkV^GCp)jbQtq0wB7W|=@#;tM`MFb8*{{4?du9dO=^6i7R^FetXN~&o zph+S#Ep^vlxwv@V_LbkS^cHQB+Wu~`@S$By6Mp_Qi4taU&9-arc#^Q|)D=71rC!BZ zho8xLPjhe7`uym#f}ZQfY5)Dr{uo3kgcsUwaZ+-0VUL^4!F*h0+L0|qf2(XA)D6!G zPU4(@>~G`tyy|VLPb3~+uzvYR=fRv!<>yM>CJKCaY1WADATCC|lINAm49%rm#~ zduj0Y{=QnqPKmo&Tch}!vr5~=>ZGJ?ZDv`|Z|1i@KYuRt z>rwOjM}F4bIe(c??_As4XFiAHT5TsU(Ks-poy)4e zk&)IAkiLzhr=x43lrK*jlYn;8%{YdOD+F>y3M?GFPW>*FQ)d=BHp7@@ZZU&Iuv0== ztXJlC`Nns9zF)TK_V7CJMxLfBVXXRaA$Wh><*TB-k9XXEzy4hQvC67XJL>;FI(zr+!>RR;+Y_rR z7b+>XCf?v_{@(LkKA*4s?%lI*+s(t*$KS2}d-b&b{)*p6-{-aGIqWam;#9IINqEVg zr<$uGzG}~8ogu{F(s^#@y{}uJMzuuEZ1rGSqQtcOt~1BOSFcvRZ(H{|eqYVkM@Ltm z&HDXgNBy2^pF+Q4ClOtjDW%oEu7{x`o} z)wwgAmlExk6zP@v)fnyS(1{qEYC$+dP%(#@dTq*XtZ*iC55sA6W zrwDzQH9o62H$G->?QgR)i{G=Qee>fejF=xE7vp~A_}x9y{PFc)Z%&@g|NoKxzfX^f zrnbcG{q-sQ|Bufi&(}IHfBg4#{)0bzUf-F%|G!PoWsA4gPsH`(?(D7Po^)Xm;Ri4^vqr5N9%S@@KHOtZfW+* zS9u<-b<`efs;~ee>__bL+~#w}19A+ZQ%(<)39fUy~|o7?5Q5=6lDF-S_{5g*uxD zuz1Y1s%W=Z*f@EEtM6394oL}3FJ0wZAA>jU$&@>FAZfpjj9$j%h}9_@El*8vbh;}L z7H?p-kMsIkh0C4ye@ZO7=e1?ah5v$~8`#*MJ3Xv0Xb<@LwtwsV%G2RrEG(5SXManx zX#K&V5O&4LPv`7y*XX7Vx3Vu~i{IC}9xD7>=*H!Fz86BG9(!hAW(#3qDxc?cc>?pK z&t?8|ZV5PTNa?oxQuuF%Tx?6}^4@RrliasV->tv5PerBf?ynikG$p5b9h%K}rqeNm z`)Pk#b5+H`PM7JY-&Zk3L>yS}`my}dqWM`x-OG1qxr^TSHcw6yGT zc!G(s@2ssw4x;q%$*p$xfX@>J|99a?=^xSyi#rW;c zlX>JGI6m8n0{4Uc7E%v%lFv*1vf9hcqHaagq`||IWJSQz8ZdV3$&kj zT-3CG^3}%h?klcl*9b}~TyB2?(TA&yxs+N{!^l4Q? z2gkvWPuGU+Iv}}*PimUgsp^-zm?9Yje@r~8!o*tlW_9frnWN8a&s@t?*PK@C!mD#- zvem)|dAj_Jf~PodO;hE5YrlB11H*xhZ-0Kgn)OvznWy0UT>VRHT>Gy4I-4~`n_+kE zoxRUr%>EgZF{ydR>z!9FDN6a~N&cH9wjobW`|{!<*Xe<2a=&+NsOx;z#B^=inq^yN zo$|bzbn(TT1+jr!xtse#^i6LskbH8r;_&}3e^#>zKMnUyb?Wim+rp}v8@7b+6Yr*fIw^2B}`tzNv zcYbFYpU)Ew+;8>OXnT-W@nqlpe*bN%2TK*3p3Gmy_I#1$!%I>3^4iYbJekqIIzKt` zukQP1h18!%A4mRN{Pyc6C%d2jPcC=M{p3C|>zeY)l8N%qcUCee&U*GVt1hqbqW|<` zYj{uR&Q+Ckm^^>!1)I0>hTPjOu|MzH@~w5(=MOVWJ@=ZkwFuPMu3W{`<>AtMp7W)> zVa3v?=9aT+(;r9(&NQ7{k?5UZ9J^LNsdTa}o7x)w-il1bv&j)_?@=yhUo{U zP7ag(oa(%E*5j?-SKT`ruN%lOD-;S2WOS0@-_6XEEfHe6P(V;Y#m!aNQ!ygOb%V*A zTr1yIr_Q9^a{v3OTV2za>$U{b!kGB)E|(A6m0ELl%x(Rtkmh+g*ZtUE1*Jww2hkqO zf(3dT9_&0<)0QQ=rdn&!*8{gYZYcc|>S z?-v`R{m3u%o`2)-b=;R(9-9P;u6(9^Os+otj&>w}_Vh)oLwWZ`*KDD-GJOC3u{>J$I%aAcG$oLwDb4P^UAQ9of&h|*Ut-@bU1O(?%nTq@iF|aJ1SG_U6G;o zS;z2OT&_|jJFCkX#V05IISfu(^mSB}{xwmx+`l7W^ZWh(?R-D~{kvCf=JS~hCX!6q zmkz&EQ2T6C{D$L=fxqE}cLfrGs=l%QOV|V}=ds7GJ%7FJfb)&FWyef>Crci4untg) z`MP(~vL)?>{EMcGi=Uro8_9e3_4WMiw{^An{t6_&|E#TKXTSf>+p_Pw*J=fDtorcl zZTs1uS2w4JE4CEgs{8T5@x7c&j*M{Ob5SY5P7k5fXMgkNG`}g^z3;tZ%Y{+~H<5Sm zzwLf&;%l7bG1-yf{uGZz?RR;6JbQYs9p12i_wUo!%Vugv-qFC z_GLL>x%YqN|6lF%XO!6W?EY(}G(SHqJpJ`ofx54&xq7 z9j=!e&SaRWx&#+=tX-MOh|I}cb|k_YVp@Q9rR8-IDPS~n4&Gk2ehpg zYNq#@U*8<>-Me9n*}a`tBJZ?zcV!qJd?>Utrp2Ok;_@_H|B`<3~uE$pgr zDx3C&B^PV9Oj@u_Y|W0jj~TyAJh-+;N8|DDn?47w*r+O-+g=OUxFMr^&iA0Q-$&=K zORb4?w^xd~{VFYZSHbiR4~^}vJxVmbmUH|1ap#{=+jr)8Tvb;0*}Bq2cmE>cKGCiF zmPLOzZ!D*!Sb~nG3HNq{;j0W=oa?vHxEA;!srUVv)y}J|wLUwD9^+uy!%O zpP)p4di@O(KVPq+ZEj7v7JWK=j;t!Dm)*Lxv%H<{SX_*s54FS2b_cZ%QVgIUMBnrqm8Y3@5?Wcd1B_5}r{ zCtoyjzNUVdn75oKd&`f5n$ki#r!N%iEePV}%{D3d`Bpda&D)K4&J?bhWAtJ{`eB~z z)3yG_O4+xUFHOz~^Ie*05PnINd0w%m52J4*$4uwGyV~8{f|l3rINm;O^X}%KXkjOY zEmM~4(bM^?mo-b?`kAl%+9ex$tu-$noP4<>t3@E?b?sE`YZJ7e*G6AF?&v&!@tWC- z!#cj5(0)+p$i>iT#Wmx%gLttAuTbHu_;V#8Q&aEk&zB7Iov$mXH*M*ZsxM#W^+_!>2t6xf z8timrqvYGv;(7WLvMz1ie$X{!`tdv46jpscv1w_CoU7&Z`sJ%9U9?!9cAc@E)2TBm zYu4LMyB>$>E$z0yCNG!O-RORPPuNx+xtBSA1io#HpM60t`oq%=cdp#15RWPLc)E7| zs<&Dh>p$u~-LmA_pYuPYN;>Tm%C>lz^;kQ$cQ6H7S7{$EEG|f1s5^Q6SEJvzr?b!7 z7Q$rESTp}FgK|ITW|xrkq??Ru<@o29^P5K971j`ERoYsX5Y)1$CerA_Mv((wo5V^V zhg-~?9JN^C_y3FB*M56!7VbVZ2drI)nR z(>{h<%FW?e3H47Rjz#@!d7{cFm3rTUyfGv!m9r>3q7^ z`|0cRO~$J-q-}UCArrUi-H}D=>a!viT+P%&*m6z@ph<-Zh&+VkUx=o(5 zbHd-xWm~IlMNb;P-lP{MeY0^Y%gseM%^bEetVzE0p3gc!x~+7H!TI*~zlobddH$~1 zyozh7KoeJsK#8B{6&|NI9MudG#|?$bv=z2ku3Qy#q%`K`-<~a8f6KORTDbi5>Cjo6 zjb;4Rn}1GFV`y72>B9P1g?sW7ol*1K`xb5^h6InO-3b00VR$1R&O z!_&p-I77+)yLa!{bR4odxb>sSt-FWogkoAXIDL6fv?b1Xe$#OK8*R1I6`A!V)2zh~ zoN-#<%JAOaB_nHMr0ZV3aM857Z%=-np05A@$8r0-_wo+9MFAn_b4`~BSY?P!`pRc+ zJaI~SLfT~$(IlP5lP2;!I%PJ?3+p7VPT@HF#o*ns%=}D0&7%^(_py6lHYw~eJa*V5 zH-2x_`s*$(GP?v^muqIeX`XrZWZCb(ySJCmQky!3@Av$7LRnSA(h=-P)|JF?W~hb1I2 z&a3@(@^9Yn`oE9=*A~|O{B<{4$;#)qeeGZQnY;m^!S}yjVP*F8?9_NUCFPZ7i{6)s zqB+~|Gi9WxBnlq2yr{F|{`=#y3#3j~+2(w=_Flvhdw*{JuigC7Dm(XB{eQSy-o9qX z&#U@%mOQeHbHn}$91aswY7<~8uifs|uIizFOhc*t?hgB&17F@9u69notisM@bAQb; zO~u0|T0idQo^n~(U3-6dCR0PA#H~5K5{vsDC+@%A;dnA6+5AT`W<+J%Y=b2e&dMs9H1(|G?sWg;kPz>Js=vMOYpg6WHzUL-?Gk!k* z7_ec@m1#AS=N~LNv-r}|4B^7Fk2kSA3n=S%=`uaP^=uItZWold~D>X z^;t!Ey&z}bv1O_<3v)^~PrR&gm}NokNuC=r4>q0g`?NRY-PNW-qeHESUlj44++}cX zD&Nc(hSyK#aK?P9HdpxRA^!HntDsrD!B-zB-tF2og! znmi8^FN@e`H`}1f<^0k{9W{X;H`ZM{9BRlt$GAvu>5+~zciKdERDY`|`x|jG;zYda ziOCLEj~D03tecoOX(6xbmFG9!zNwEBVlXHY=FL=d4&2IoUH-aIiMOhg$BMpin^qNe z&6Vzf(Vh$3PVABk&{(KXBHiEa6Xsb4Pzz#Cfm|b`%A16a>b=@ zJ?>s!Rmx#we0}F-_sasSOb%8Bg>r{o{*-xfWn)L!A%(gl9oKmtX{O6PE{uM`?5q1? z`>!plU#?uj`o=JMiBMhlx(>0~WsDb1;~2jtu6la>Op#WX8C%x#H`gzGztb-C@X|C7 z!6aQ*8&lqzrBjmxw*{(JrcO=eJaIK9CAqPB=H^Q$PO&t;;mGA=WiDG{Z?o*qyq=c6 z6$LX3_xQAK+H^^HwdR%Or?)C92_(-CIUd;&`y%RJqVczgloOk4p05r|uB$b2b#d(1 znAyE9<)ZENOq*$rMf3JCY~5FQJZ4LpoBSIy-V{~$=F~~&++~F1zh9STnloop)br{q zA#YMVTsEsPTzH}`G?URF>~&`vjRPl%o8;Wif6Lc1xUDKYin}pouE! zOJ?bmrP^=QUTAhachN-VQ!J~Df=UDT2hE>1o}?PFx?~-Ib6|{X5u(!})h4cBNQF@y9?{d8GyQUYg^-M}zpgro?Zj=LnQU zzWT9GenrCD=?ixMk}HyCZR1T^ZQyw}XWhnF7qzHI^EO=FIX#y9Dr>>Zo*g|oUhi_` zEh(YE&b+D-p8j@m_N~o!bGepO34UZ) z@Ue5!ca68#&Zm9dWndkkaJcR?Q`4g7s>36Wyc zrWr1`KUSAA^VjDGrFj>F9Nq3@1O{2P|Jq@FqE5|j<^2`ESQOeb)Aoec>KCWRS$^A5 zll_PD|NMW??=M$bwQP~08}kdL;w6Fno8@%Qv{(Lqc6jv#MRsN%Hlx!W8H zg*q;i__f4C=BVQB+6R5t(w$#i>8_XsTMN*k92*y3^X=#5&D~$We*SDx@aFM`E|H1M ztqxf)51)-ra|$z^x%^^?(}mC{dP(wzEtwIIvqXP2rq~I*G$+gmq-Q=^2BE%-l$v_4-?*#%Z;GdoXzSv? zX1~g==A-+->%2+srdNxw12!!eOYPQzc0T&eOeP=YV+=Ue*FJGm(Swfvi!nnUu<{}zj}G~>eHV;Z&nF&N^VR}VwkBu zLFKcK(q|Lph$jaGeV@Kd{C#t|e|+6f%R-M#spXk|nk@mJUvfn%-EWiD1kkRSM zfrudINg77;<6~QI)bH3^eIxJxr|J9mRR0b$6?|mzZu#MiWedcTzOc;9oX2qY9pme- z8zR5Qa-0#EutPoYwrp8P%fYjSuP#`o#pPe?FzaRi_9W6YV8*w{dE1qbeBNx#960lM zq0I5WHs_aZh+BXCwW-p(V|%*~%TCf=wfpbC0twbN@@)JpE2{?2zl;#X-)gzd4an-VpY_*dwe!XDM{7r zsLo$?conmUhfzs~0*i34RFxFlE{ppHpT*;AK9>K#S^w|L&vc1o3A6Kdzh!<;4cI^X zOWu6DJGO7WJwE&Q@7uF?|K9zZc+0-})03mm&;LJb|3|$3$L;&}wZGmN$kx^U{q;NC z{{NqMf6u<1t62K?6odNal(svX0zq4Xb{i?|{4wRk;upmg&S#ZB@W?LdTkOAd<(;YT zwyI?~n6<3^`!6LtUPx@M*(E(&gAHMfUM?rzs51y|J>op^iM17f)1L^&Sa`F)`r`j(a%u)8I3+QC_D{;b)u;EIjt+RjZPI~W8{KFt34f77A2 z-)~Mc*KT>1)2OrTL^H!yqaCe1)2{z{CM30BV)hBa+FsrkyQk|Uw^sJ%{yglaWxUB} zkF&~w2OQ34p608m3zW);@SF@hcyG>io0R4?KIfAa;#h7ycrPUAR(5=2xvyTD`lre> zhAX!1%MZP!^=zJR)Vz%`?Jt?QH@hx_R&n8C!UB@r<<(pS7tNQ+ByyW(3`S-g=WcD3t9yA@BC`@hWTKf3eh zY-iKVU47j;`;W+EMyV}g=@qpu=HkBB)b*lM;H1%P(E>?VM@vp=p)(uVmK*r3xU`zP zRGj1U&u7bpB@`#5*N03sy&4|4T(Pw!+f^uhZ~oDg>$CW$Ne1;DW^!qGVDW#Eo}!Y< zI{&`3$rkBP_0qM(pXQfbKABp*Tek8Chc*|RVB<=K;_i8@;?Gi94fIUlPkddQt0lim(~0#lLuJkUjjKyrGaH#VWqOrLgq-HN`XpX8&FQPh^{P{%CKFx? z3P}Zi(v8|59H8%LziQzh=|6p+7w_!q@LzgliQVp;Npcsj^xK7e)ovB&oUt{opz;Qn zs+x+(Dpp0q&;=KRqBh5Kgf80Qlg2aaF|X^?4)5uDZ@V_$`p;=`Uujx=(KJVs?JB09 zwZ4b^c>aFl4ZRyhPuECU%+cGNWAopT`v!kEzq`6p@$|Lzj54Bcddhj@WPS?YdzC09;lym9tC{L+ zI7eT0`h>Kd4svUMmF-(|(@T-jlIN_pzNg?=z5zT3ouGd84=KRfBXYZdVKXuF6er~`wtt$*| zeQO&me=~M`()uWIgK6#i3AX>&3M4R3GQaY5X1t>vbu{;;ViY_i1m7Auf2_v6?|tciwvF0D_9!DzuP3x z&U(2)z^$cIEGDQ5Pujfs^OR#>t9I0JWr`WUzAnqK=KOB{^5466>-GryESv21ta~+| z&eBYl#>3zGd_ArE(pRsOw|eu-V9lX4;~cZumGk)9nH7q74ha0pGndPg&&&JvTjKGO zvbx&859`{Wzc#nuQ(5|1t=DFC#oklQD_5QMRFyno6TP6Lq06hM(TFob<)_SD9u-Lq zH9@WyUY-n>QWm+1#PlnldVlZ!E~jm;cU8`t7<264CFk4k{q^Vb`OwR+%k%T!r_5O{v3S)fli4er zZoU7`&(D9RXC9A+(fQ3C8(38W9RhdVikZ*W~do@p}C5=IQh6)~|Pbut9#k-u$_L|6a}i|KWR9!T!1NfB*by54ZpK z;V}RA+wE`5e!n_j|L61n&+m82o25VB|KqCu`gyj`>t3|UIraExND2I^dy%|-majsd zp8oEur%ICE>RnH~`q|`d;PS(X-=AGQfBpJ(?KoSX@2f>)m2>|6dvi2=zWgLk-@mth zalcsBxr{j>iSu*LvaW*`E(u9}X>E>YQ+?btJvjs!oI4JjICCZ`O+nL_|NZ?x1;77Y zeQ3bT{Pz2AOU?u%-$lZKGv;m(Q{ekMhi~EHvq!DIiCw=V*#B5XK|!qJK+5*L=C&7Z zwk>?UB7Xg^ef@t|?cOJG&-J$58{HE!muqHx`yFXw`1#?6e#1%G3^T)GCuCkPR+6|F zbll4K@|MNxUYpf6m`pm$_~p-=KPR90Jj>i=Ut;T;>ihCfQgL;?@$$bm(btWoCU6y( zwHvwno;;%z?BcY<cCGtAnWd-d0)4QC(A zDt5)`1s@WuJu&I!}@ z+&I*f7*mjay7uvFkNDFWoc4@op3Vx+-}Itw&$D0`?nWb4p&Oh`F;{rgf{I^e#Q+=kKRyM%7DD`oiJ4h&=ZY~y@f^p^Xq#Zx9;u)Q1dYwn^}69=P}8y|Eqtn2fC z@hGF`#DSYX85#H-`r{5O?U1@<`845?*wH&TtU2OkDkpBzW6zE#6B7^RUjE(0leN>h z*lhN!2F9f>HTwOJ0xy(>Rcb^SrRML{J*}jk%dqL_iT6y-Uo`DD%n0V`(GurBaYn+K zRmWgfqh;!)w?{Z$y(?o%_`JS{X~OCdl}cy-4LclXcEq%XM1`$=5S=3}%Ep?IutA6= z#Or%e!&BM4{Hiez-z|<&VL98mXdYLdmLkjX(}u20EFRvEgeT2Z4c6Wz{Xbq`vvz~4 zoOqk}hM*I?LaBR}rWMarTF~{~DMXB|EyIcH=)3SgTvsRDKJuw)A-{mF_-W~Wo*d1u zA5U&uv&MVH(SxbJQ=(@vOzBMjxWFtpSibtFkNxrH47<;_|83jYopdy7_cEQ?&w6LRHY@a?wpywHt6PwQ~MNOAHE{My-CcYwpsCbq9*J1*^={WbnaR? zN=GxgOt?vAs2K^*HBE0d|CE28 zLv{Pr={J1hg~cxDHfRboFJe5G(!1#HMBYl)(0>*tElUpV(Ajx%>+W3*A(q^mKYy^S z?>tp*J#{L>wbYu^9p_iC;L<$Bc4?K$y3JQUo$+=Jdv^MMyGSZ)+>F^zW@M-+J8gBT zE0f%HOKYXt)J^jYu8PR0a9J)dRkROGXE<28sLp7HNSeBaq_}1*o3+5Tn~w@}bhdb< zWWN?T;hAWwb7w*!~nyo#@^i7Tm>%%$Ip6znV z%UKt&|F~LK0wcr3Q`fy1y;e0|o&Idy=SlAIY8&O2yn7O@%~~#$n3nWy-Th5npOk;S z^SQUEN#ty_uu}cJMgi6dAxHl&ka6mck??5HW%nrlrY*Q~t)-cLb!QDo|@Wue=d zTBi8=2L&eQHk569o4(D-&Uog{nlrfvJha^O-X2+ zo#YmT&+zc8RdDf|cFBhQ(WGU49xLmVbbl>4^LEd@I3ANUV<9 zZ*FL#_4LIvJB-9uIv!UM4SlL-r?&3bq|pA4f^o4c+rLXPZR)b$a`XG+`-_GCy${2qKtJ7^RX<9~qfU&%!86M~`*j2#*?J?cKsJ@2^aW@tQvZ$R-j zfrkI9>pyc!v2i_4oW=J!ZLeb2tU0^8439}T-RJdT6uG2x*@QXah4rZ~{!A*%9<2Jc zq|496nZae^l#ov6>!n&&eTzHJPVSHp>^Nc4>p97Tsb$~e#203(C9JLNU$0w#-GBbv z_!!>9v-Hg&U^yWjfT z*Zp|;+uW#iijP~jq7fU@WtD(UGo7zb-zC88uEM0k^~UU?05iieJqeFD5{`mBoB|FC zg3RnJQx0UzYLl1|b8}5B$AVKw^1{=Su845#J}~Q<7E7Sunbol&6W>fc%FtkF#K7ac zKWgoqeQVM#+Xx#i(%<-a&ZJp|J-hGL)k|=`EU=K_YoC*`a+T8K88z}dZolQu%3je+Nd3pW6SF88`oPGcQS^2u{H`i?A|8BTp z;j9z0%k%gBJ{`aB_qW-zzrR0zI8Q2AX;I$U)dzXnzaD5fyvq7DyAt=2+8(8{eR1>W z#>U3ie|qwAdEpD*#QGb;6P4_0fBgyH|L^OsH%Ysz8JxCO`h9+uBg|wRc->Wr`{4H{ z61xPH#Ba`4^<30Bp~KTfq=n<;go!+bGRJ?n|E`=TkUQ`A0fRNW?2_Jm_*7I}wliw| zNBIf)0`9k-EX+T9{2U`&8(}%CV@qd zxf{AvE}EP#o^(J_V5XFEgJe-jaV*Cfk$d~=|3CI$@5AE}^2|KH?%(J6|9||ud)_Gj z`)&U3+w;q|oB!U;zwGkz^Yd%I9-ZDYQS0WZ?fTr8S7HeZM!C86c%o#imMweDyeEL(;dm4MDcg(ZQiWiSQ zd`VPV_}WhFv0h5n`uPWrmS-*FO0x`G{zhx{;=LR4#3y_BKC;_+Vy4E{BlCYX*OIk6ihNdf`1ie; zp22jH@Oglaxb3LyB(jr73#VD)ld%<6E^-YJs7!fV!aI z###R_SAAXh?1R%|J?66;1p=hX#JNH>H*Zh5wXgb~x$;KnqjtxECo_J( znOn>@H8eh6^7_;DsTY4l2v2l#7l^aon01YDVYN)xz7yl~WgJOb zst0VBs;sJHog~e_;F%4}C%>r-{byoR->{ml;oKzCTJ$XVXWlepG4BImNA;=~)h?W6 zAbwvXOn1F*<*ns)W%~EmzKDxWdBS}2(Mvl%*0=?AZN4h8x?8m;Raxe4TE1Mv{jv(*7CDHER-j z`}kKg>;L~Lca$Y-s>$XR5j_2uW_E9VaHDVT)TtMQUgZ4TAvG(pZ_C!F?JqU*Z>@fF zbi#eFZ(VEU{7W=Wzgzo;@wCA^jZW*!M$`V3vCxD9jSlI=ch-n4IOtkuMyhUIlX*Gerdlhp}hHBSk(NDHd$ zj#&9)a;ivQFVp%km9EksGiJVwVK38_w_VyPaO&tYXU~AiH5tJh*>LC9&}QCaI|Q;Mptdn67r^oz62|ew0PtykYhiUGMhW z_nt%)&FkFzvpZS0ZAGvDn%PH>Iy6L-7a#q^e=X+8SDDq4ZQR}0Ud2xGx9giT`NOOI zO)HEVH~lhiSNf%9*m_`}f2e0&-j%XL?DH%3ypP;xv||gy1q=O?QC8DJw`T5*X)L<` zmSJgC$Ft0rMNZpH*0?@?zuZvwQr+@`6y??RT}4Z#u6zAl=ega>BiSbs|CUUvJ7p(z zk>`*7KmPs6k3Smt{_Zqvx$u;&vtcIZ$tyQF?#lF;ths(fu}sz=IDv0X!Vw*<%Qm~W z-8^g5rIn>PVU^sn&KaUPep+_>1QOFu7`qr5^JPqHEB*fF=AvlI*$843!u95CFpI3!f{*p1SSuXnF|&y;-q=m804%R4p` zcpD{qeFD@r9WgWJIQKij^SSL3<`W%8O)?H{vzIFhEL_y}LZr51_RMgWjx##5YE-X& z|9kc7)u&IVcCCu=GVJ8&1h}zpjSI*Zli=TD<-5;W^Lt^#@y>$#g21v1al$9>KO7@j2%tN;(qn ze%|%?>Vel1dgsEemS)a6ap>pIqo1G8-~YSd_uKe=^2-b7d^=&r6Kj6N-~RU#@%_I( zZ9YHG{{NH8>l^)qSM}{~|8D>P&*k#_|9{5+|M7YC_4oJp-nP#PE&W{}k-l?B&8D4u z*d8pYsILG2@Y}yPk6t}`^>TyN>#)@qj$VEC=FcZC&6*vxKaSV`S^oR(j;Q=|=geoN zZQN2{ArbaBzwYyEb^mpf&ty%`Z@`p5w5&w}H?J#ZO`3dstxJ(&QNi@TiBkNp zefR9SHD@mG-G=M_=jPk(kIA=6dCmMiw!^mF!!YQ&yMednQjb>cpP$2N z#yS1=8;YBb^i4?dTdY*#Y%aS@;OCz=k6vC@KWrdzzTGe z;Fo5m*S$D47ZFp|;06JWBM;6hDjpGdHs#D2UlSey2BphdN9;bWdd(a(OHI&2>9UTe zPUkt#$y&t*qJo``of)$(Tl8@-CH%g7xNg7qWsCmZ0+q%`^7s9mKEM9Yw@BZ|RCQe{roFeIR`?%w59R|01k)pRd zM3?`Zxcj2^lv&pzcz3Sj<5tXIGs()--?G4Oy7_V2B|CqdpQaJvCc=>R>YUVOt=Uc) zCQLu;PF3fZUYu$sd|l~Tuv^hF=BG8kVmcG$oL9_b+O#`w?!0$*xkR-;1ujw*o*LG9 z!eWBNmV>hD3r+4wRc~U+%KUixe6;HNtxMa&Z_Hcnky@9simf}(>iM1>AMe>qXQ?Ya zQxRxU)^T{aWaf%(56+e8Sa@%;+NVED$ZF|vxtkZbB+gl1d2@Ix>wy5>qP%O#I!>mx zew9&1QVE$_#Y@ce)>=5P{r}pe-)PaPJ~m<1%?CA}+fGR=f4T2U$VHyDW(QjZA1wPi z=fV{0Y$gYVWm;<2g=QQ(6Sr@=`?XU4Z8^c8_MSL8e>P`HP6@^^sG zw3f45nxyoX{$hR=v~7=mkYO~>yvT{q9{fu?bh%FKp7}P_ghmes)0&^ZkDm3})Hz#E z?5@!9)(P{oa;2)vugV;)G=Jzl;iEuQ^j5bsg;wIxXa21{EPi(NrdN}X8bzzSdd~ha z4EgHvsZLuO!Z%1Z?Xb4$|5j79)Qe*d=Qnp_!?j9hHrW-t^0b|{dc9ojg~+9i?u}JF z4t=vT;=<+jh|PU^sL|Ai?bXKj%U(rsE$5#0Qc~=urcRYk&fevvA-9fvx%zU+_6uK` zwUUo0PiiaPA;xSwk74@ki?Phck@HS0mbWfyS|l}Xouz&(x6Y0}V=awk9sgIp(DOIE zuy2oMaaFEVV13uB{Y(B#=VmPW$#B=CmwO`1E6LLy`y>-jeUEEhVZv>e!>-!lVL5-+ zjF|~Dd#haJcBm|sD}NfB6lZj(KT^=$?$%|F%YWu(s!m&y+K|x@W$L-5$NzLGdxX^U zVC{E>zh)|G{D|P)Qpgk8JbmG(hYvqy7}@8ZJw833F+fSK`AV4anD92Eoo_@>y=gd*`Ru}zozo>s92$Lsw$%KYe~e9} z*g9gV^xR)}79JIQXlQonys&P2|KY?5eUXZ-Qk^Z4iE}DD><*k0pS}M4Y}@afRDvh( zS-5;n^!Y1#TUI^1YNMyD?XJgcq_^XCo9pHq=eN$>@_eh~zlhSGD%m#o4ELRExbn*Q z<_U{wsV!m=zO9cO9!dpT2eR0?!k%Gf_&0|b>-wJ0>{nd9|LM-P+ns4RAG**b-r7q#Yv>fv4uGm z>WLg(vM%{g@j;%PFufft0lM+ZCNXh~(`2Sqo>7v?|Iaw}lUD=7$v>=?s?9rg+~b^Z z<>eB)ZXKSC?e|03qgmO1?%I^_?%-3ax{q2qW`~a_TdHUU{|~zJL`rh=ft8H28kY+; zn2BEGRGeG%C|J+Q(!Qm1XHgCJlMD|FzS=Jn)+%Xy{Q50O^Q!vJ!bvN??`ZS=C6)DA zZ|mjC`P&~fxvfo(UY&JES*IuTM^T>8G+U+MlRO*J-tp|L(^C)mnh z&&#b!%Rad8>8pzh=Xnh#U+fQSIJ&XvM%)XD8zM&w#KfZ4hszowBuOwKN9I~5xeI`g@JM&bo1@mZTbyn8TqZDMk?gX+hZFtTX02J?aWQxvi{*-&bDn&=d-m?% zyg7G3kV12){nAV}QDI9T{)rJO@0bb>D6%=d-R0o(*rKo6)|z|u)wFr3yYCC$ z(vaGf7!vHg`hx0F7PY2guU8(L48b9d{PKD4-n|Q+6?^yTiG`W7Vm*=?ii5VYXtXg`}tPiFBNpw8F{d%?!KRe_wu`yt-rm{dey)E+yKOOcb!1 zJGpb0uu5lA%Z^uN?R$MLZ-^^3G)h*e`S#>w+UA}A3;w^myZgL-+VZG-~CrN#qih;tLVS~^6TY0-o4*;`|Y>m^6|A5-yizd|GM07zeh;0V#jUy zZ}q<(>fh(f=KlNi@^krj@13u&4^MZ#UmOu@v-iS=s^9<8<{kffA=y1V{QP;z_urZl zOMe^e`_Err_3O#zt4A#l-c2k0_VTlT{Qg>FJDV8W%3ZhD9e*iz@t9_2+rkFvpPd?R zZcnC6O5bU;c%{(7F4fu292zr%jArjXaCy&s;nLZmPx9<@)h&!%Jh1j=;|W!qh|B1HErA1*WbH)KR!O@&!f}R*T?U7yRiS? z*L=I*e^?pHUY~8hJ$pk`?tA%dkEe))Di)|Kr7hr6Vrw~}(x%eTV(5~dw_s(L!SOdY zU7WWl7ATl+_-Meh`QW>{ef1R&_L-|FIB%UYiB&=A`P4SOdHkyj@60|c(=g*q$sDehj%aB{(ALh zi6yTMefgCR*~G`O-IF@_EaJ-CQxTal&60ml@ZaPgk6Hd(tT_sS{Iwbz{oM$(Tt}fNNV00+z)=t%(TUoYNc@?em zxGEz1cV=y8mYH?ZZRe?66J;5izHdG|Lo@#HEI~W(^r`MqTUKn4vVH8i;8oy;mzz|V zyK-`K-`}=o>eizxrG@7O5xmnHAfX)RTQT;)C4OrEJbsu|l=&)z(xAL7S$yz9cn9osItXFjZ{ z+#He6qxx%Q<>q27gS0O9hsQ&2e>G}9t#C@olEI+Z!qK?;(z2tU^mz^)>RWU30D8T=*YW6jQ zxZJjcG(YZ4iN*4B;{#NeNmlA?`M>L(s%puSgtEHkritt+Q>RoiSSpZ>GP**7Fn|eg=SuUXu4TsTB&z+UP!&O+`Z6uDZHWeDLX!g$!G=aF%_NjKtyIw zgZr(Zrdd_?7(3F>jzJG9ts@5_T;J?b*; z8B;gr*G*sG@^njNQ0}J9=hN5pHtMHqhI77tym?os&{V@~pVG`uDX-zQiSW63{QnQ5 zM_HUA+~n%{7t)N6s#>gK3zHFKz|Oq z@ytqruK9Wyrz@9DeHy#yn-@=p@crrR3o1UPWf|(2cyp}TQh3HcLD6*T_lpZ^|4sjW z$Ufkhksph|;>7|N-BK|B zPyUrxE)x>!d+ML{e$J$uU0WPJduA8dn)V5|nt96fU*Vzrg8 zi)E}U@lnh;%ARNC7PsZ_PxZ@84?lK&z9^WR;^uZq<@WTcGpx9gLWER7DdVf}IG|7-N)6$*wpEa^-&6!jNg~?qD zaxb%btzNi%CI8!#u}UB1u6NbtJ9$2i%6j_v@cuh%ESKpt&**w(z&_nl-SYHKQNh59 zk9q;mR3;o;!`U&TGV;&!Q_~zS&hk6{r)TBX(qmJ!XR=>W+LE~rc_11{tjz z>W|Zm96IOBj5~kNs`Gf;qDk`cEsOtz#_B}2#mL*|-rD>}<;lwY-FI9!r#kI(`9D>5 z_57c2B`c)vMIREL9=)%1vcpk}?8T|uJf;Mlib=57_BuMf+HjG~!i=h>hjw-ow{-s0 zdfmQipMG}T_wul($C^HgBR{O6UwH{5<(c76Kw*H^3TdSc%k%MAM1G5JrMRHBgOox2vgb@oiWhKm??oVivisi``(Q-CA#pyw2s-+Y4Uo@vuU7(1B1 z*ed!dUa;wZY%+Il?zynnl}0o7Y<#LWZ|?m0q?~zj z-Lm*bUis>)0?97T0!+r|Kfei3nUO9ic<~j>M`L@Tyk8$qeqOC_SO4wR^8G%a^NROb zT1V%f3wtc*)>1jgVFJ&jlP0J5&E?C!^Is27_dmzZ#JKUq!`1rnJ--jXes8}dGH(CB ze}B)O|NlvzC0XX$YCS&v{ePS!@9(SKEr0y?+p^6!mrM!S+8^k$@7JfNpIRVT?l2_VJEM5ZvNZvzkkoZt#{$(%~_dZH~Wi~UNATw z>8d$=#^%^WuEWbzLSdrjzoqw zE4Es^FE>_Us$dl}0P8>pJPEqbtkNB{palVcM4=dbzCx2yd9?CRb2YQ7T^&mxoF9NY3- za=u+2jrF^OpU;KCS+}`|#`Q`Mc%XIh^_D+uGj0|KH}_vn}_Xw`~6U^LhL} z6|VL5b=CXt$J+mV^Dy!Mx39NPug+FuxY$t`*2r?=rs?Jkr|iwS$5iLCovGk-J-L=u zms?x@vZL7=T_Jw+kBp4wyT7V|`Wee_ zWUoBEl*f6dq{|rwLz&!r2Ml9U%0$?77#j95ZnI@k*_;sbhmrZvznJw}) z7O-tw*ZZa*Yq8{2+uf28YwI@`lwIWfWwJIfN47F()tW_Bu~!5PS00Y`ZnB!3dRs1K zZqdtiys`m{*M8qt_G!Y~z*{U)+=9=i7Ry;>%d#eMYFp2Y2zqS`KgA6yJECz+j zi>tRDUHR2S@T!rl|EE)@WNhpYdn@#dihiE-Ht5-!Q%^RZTN-F?^YMkw!Mv>v!8xk4 zd^cX*k+FF)THN_)! zY0eSn)rYK@&$H+2?8?eYS-Wq2&#{t;dV2fYA|r{qW~q}2 zZQIV8o${V`DgN-HD`vqV;V!zd251_LN>%c=_sdY5VpyLALuh^mWNC zX8UwO#a=pSCTs5dzdv|SZtc1y_@3jy<_iUx3EFIbSXMPKl>FkGd_N+B`Tm`(DD#6I z8Vy-p$Ga9?S*LvU($%ZO8B{tHEmf9I z)X4gxGTZ&{(@AGLl%-M@tzcyH{lZofT6%Tw_cb#m->qZs@944FZs;bF7`9^9cO6MV zxp()!|6Y^%JI+R^V@8O!@y53n5sL$kO}ZTWqNRKD8nsE&{~mhwR+wj^xZxx3deLdm zigJUq&P_>Y@JLlS?xHZ=`oraC$=0)?Tv&fiz2xJ%a+ch)YjS$qf?fLMnjSguw=|wO z<8o2QeX{DrUH_*`N2WGgT=L8+?2fRjum8id=i#|COZR0pY`d0sXY+IB*%$rHUZv;@ zm@%tYRE7Lh4_IzvIq^pNmK7a#A$q)FtIzXWc-=kavt47!!mIt)rG!HlDq3X_wN)(o4E)ulD;je^a}<;>UcO?WPQe{lENrnR)D+ z)eBAjia7zvX)KLJ3l`1XU6~Mj<1Z{C2~00bBlUW{GG|Q znTA$Du6tUpia2CB)=km6e%Z9kbX7nhLrCw$*=owOwg%r@`mE&Vj7aGp5pzX_~s%f6*s(%-ewcXboEf72KST8HxwNT0 zDu@i(azFXwDyQz>0efNu86RiKOp=I=y}R;QA%m}uCim`%CwZDMdEjF7_7w^~7d>V$DQ9pjU^t?=RKVeC-{rdc zS-T`uS~OR#^1Iy9vG6@ZhQ#+Q!vupZpG^#nx$NZRkG;IZ`s2~(@c0_J8J50mi(GZtuS*OM5QAGPA4x`sQQBv=&VUS1C8?b4iO87WE1j&ku3p(2Vpt`8rwfLrAP3h**`e0uYM8YgJkHdGbR^2|{v7@g=D<$i&%Tv|Yti>R@&AVpAKu;Fy?+0{s{Q{T^6&ro;aRz1!TtPg`f)XXPKwXpU-L7ondO6p z&-1%^;=BJn`zFZ{cq8V%&F^==x4*Bq*;n`X*SEai&(6+1{PV(5(}3@3zdmM3ZsK}gmval$q%4ly-o5U2P09bf z@6Y;oA7(ffy_A9JLLx`v-dpR;|Ng8IyKv$7*RrpFer|p}TlztP-^-t;`{(cf^<)0O zm)H9b?~q^qy?^(`BMcKc&$>)1f21av+%vCrl0f+Et=iWnca@)J5?DABnaiw+k=VyndTiTx;4X zd0~oz?335`|8KZ^=g!@Ici#Km|NC$EdHesL`tR5MK5Tx!W=DOy$=y3KbCbWnd9Gjo z?{xgXZ`=3(_5c68-tNu5_q%sHYz>nz(tnU^-nN4uwLH*zUn-!}LEYNcY~ z%TAgKpB}W%;(axr`RCG&cP@AvvecdYSk~r$D0ADxbKC8;jVq2k`}FJ=M<`QBexHNi z)XYm8yII)NbPbiN?w{NH?#b7OIc-kv<{jE!vu3d*?JfEnQokfD=IgYlz4NPD&QJW1 zWpMnFnE!;swpoo4^Ag#T7$UEvRNDE9n!T{xx^>6)WdbWR^Fu2Gj9R+b(x(|X9{qOt z%qjP;-&U{IeEUhx>8cyoznQ_-s^_Ll>MT$f~h~I?Thw% z^lkZyV=+&vG=J)D*%>Wr05$+?qqwfY?1dWKJ&HutX1 z#1p*<^=W5Z{a)RSyTEaHo|n@KGdroLOrk06D<|c%yeqjJGL<*%$PtFhj?j7YoZ576 z*i88~PwX%6{r+g}!f$EQtiRZlGqM_-;}D6Kc+EIX);#YRvzpRP?$?q0%Un|Iugd3q zHL^RkcCF$m$y3+<+_mzW`TxhGv`r#fRX4V@-u4u|(V{prTWOSg;tB@@+)ki$x0{6<(Pp8e36zjX~$hhQ8+{Um&*6wE~ z_@{NGc_l2)JA7+Zbd2eIJ6BhKtIO{`X}aZpws?ObZsWQ4y8{1aPxLJg%WGI66m&J> z?8$tWvl%MZ>O4K0udT^ssxY3?H6f-n=yag>tp#k;A8Tx1*;FWJIkjxJsY!0kkr@$d zJ!ehQvA=Qa)y0CmCEM<+=`U^CdNt2q=ias)iK~gr)#nsxSDo9nhi%8k4vqPup`Yil zZ3vyCE0t)G?Xh=*hT@!^ime?BPUc)oPFj8C>oxU@OdB^{ITp7?YubEfPop(*Z|57m z7O?i({pBLV+&ihNYtFw;*E7hueCVM5aTmYI>-TCIoBYo^8^3eaE;WtpMXs9ux@l31 zRa`$Ul$yz2^hii1woNrG!!A`fd-KJpd5X_ogk&AxXm2XK=-K%#jW;Ti8bX4Nx4oYJ ziAi(jHp!4lhNt?{vYaDzrKd|d9^NA-`}HbYL1oq+liY)U_!Ez?{ioH5Wg3_UEqKlb*gbm(crh z|8s0knUrE8!|HOAHFql?1-vWS>G@(q_f9A6zolm+Uj?wr7f)WN;d(p&Nv2HR%Y(CK zsv4)IMO-@8S!8;T$7}Ph)gKivPM*sprMXF0Mks@IaoiF1fUfo1ZfRcL`6)wjkrMNw z#u>)DqHIEBrFOi;ox5%VEa@r}KjYqazTbBMzJKWG+StURE$Xf>K`D)RBju`TqzFQw9nbjvd z@!I099JlPB!Ds)!uK%HJYSEi~f4!6VS)I-~$1fhVb7S%Fnik?ad1Xt(>KjM|9V4P$Cp4VCp%`ML3W{v1&nBk8E+kRZUgn&*H&Gy?h-mZ@YW%?pt}kuWGe4Gz524 z%qu&7dGVnXs}_wTha7i_?y1@N@5R-xS54QNfBAFt*VEIl-->q5@jv|6EYWxK z)|$_@D-pB)_v7*N{ePb7C&?enTyWy`+gZEwinrGOe)zAw{Jovc8@H{VPv#u^ef)2w zgq;6x6))TQZ4c}I@359_J^bvKSkjC$Q$8GZm+$q|WZ?@8ne6zcij_G&n{J;#MjTi>g8sC z`@1<|*RNk+AHTnEBezec3}3r@FmFraTtm|EF8LynN!rZvVLdZ!Y^^i&Y8s6keg?d%41De*c2U1y(h`|C-C+ z+iySjyrRpKyy{ZrRs8+GHGN;7y*9z3Wc&GfwI7e3udDc7_r2o9a1F9>q^5RZD7*pAli6+HpA3=Wyj5x0z~v^DS9UA7a0DgrA~ZQmFhA1(BH>@XPevi8Qr~a|L4cQ z&z=>@(a11UPTy-CMP z$*%3D0%rpz^)#Gn+`Y~{iB#*UDQy32w~! z0Y-wXeKIcUS|3w&7weT*-)>wODtU@$PcnOm_JMLQl?KoCp0DDRn?Y5XU;A( z{I{v7eBzpg@6KDU>V2c0EjlYfEL-o+za|a~bDPbFB^P$?YGRvv{n(6vygBD$ZdJy; zoi}Ti(}jSaI?rP{W?HUqHfqSE zE)M@}F57I}cjCvQEK}X8^R0E8UwJ<4G@Kx_yX}Gw3#;+{79*|oJ70A-P2TfISFrMZ zthbxT+xV+9rvHr8(#v&TG2ctnD*Ei#yj-tH8=XfiXYWk;BAqtR&*J_1HJ>9DPlp(V zcPX4p+fnam6ZSIaz)U4u{bQ$fR$6X%|Fr2;F5f3drK$HHoqE&eJ$-V?sUUsB$czQ1 zM%u^kJaw>Aza4q9K#fIj?TuRn<*i%qA5X8E%aoBB(;UTmBve$F-LH4u>`lD)H(RB- zI#*7Rty?Y{R_N3KTMKaN;-`e}kjAXKNXZyM-KDA<6y`@X3(XXk6qjY(b)e?#noCmU zn=-zohDwHBO1-%4!J~N&C7m2=q+>JB{qW%QzNGTAaLKAgF2w~`b#|RIxbO9LPY7f5 z?S1a+=X4dZGWZ=pSbYE}k z?t|U)?tD6DKixld_c|`M|Ea1bdurDGYv+o*-fyfY@L7i!cxvt06NFyk!`iyboVfxWwpkG8Td^!irx+W52cpUm}X88HoB9jnBI zrKfq=J&Bc2QCjA4q;m7g*rk>0jjJyeoOExtKDnnqYoF{&E@30f+fpl9_KPu=yi;lw z_+-GqtCCn|JY!Z6U&dKcgM%@;i_^OF7z?HvXPE7LJ|oP3ivCVtj?${@M_xZwP;UM8 zd122hZ-46wqlIS~Q&~)H)+GAsMSD+G>+IOq88X37H+DxN%a*9p`oHH`bWPN>*6}qz zoAy|K%`=BvlI3RniVuvgtlnp^dOh!4t_HK+C+eC6eSF_E)*ti>+?sa5X=cvtKgW+- z{Y<&2Hb1ynWQOz-ua|LBn~X(N|J#3MxOYcWKl`M^pBB$_ZkFB@P&nhPx#@zN5s&*j!!;{bvS^*$vaFRIng}a`|gz5=^?=m;*lG+u8sd+Gjr*sBRpFcYW_2+lDR*p=h5;5 zJd4f-YcN+gX(eU7eAs=pm*L@*zD1Y6m36Z@aW!0fn6-7+l@=YyNn>PY zkvN{x<~Sjl;eFT5l(dD#oSlLfE9bPGRG+OV$#b~EMlOGw`GFOl%RR5X{SyfrK=GeP@4jv4 z=kISx}<=Nc&#lvrKcQ=E;Yg zI3^}PnGp18vhA@AQENM5YWbC3#a;Cbx@In!lDBeZqhWB0+6K1C`dfYlKs^i*b{p{ciVIR!@v3YgD(k$ z-CnKjS>UHW)zG(1vEkH|W83r3X{vgzyq~j6;P<}y=axVI$g!ZYBe&`E!x`sf1&buq z|Ni(Y{@CK%#^0ageKU65ekU+6<^`#QKO~226|L?~O=9ob$S*IBSX=)yzwYO=gU$_6Bt2o!ce^r?k@8b{C6b~I)|L)QG{XeeO*L}}!{de@Ve}4YE z8IQ~Bf5@GGy#IgvzlWdC+t+^o*8l&{`Tu|3-u~Wyc!%}e{XY+Xe_T=b@y)CVdAmJ} zFU+1-{`>oZ)mMLAV_*-Q?_Bknl|ev=K_UI-j_=y9J+3W%dX8t7s>Io^YQi?JzDTcR z6hC`=uQ8*(ZNs$wbQ9N-ww0Y~j87*Wx_2r!W<_4OH!aA=F!b_?^ebSh0`nx&@kZpIpgWEPj6CF|aavL1Gbxyohg87Xb2>6|D# z<)ne)3dTvDvsOH{QEK=8d16Y_`OTuwqIClTCSG$jUY&UQxxl8q+?_X75~uDovwCXt z*snNc=pIqz(v`%?~_i8yuU4g&|vC#CbR6hcE4 zR(XD#_f}7p<@(kCGY#EE=C*5}a#6h|I(yrlGxuX`L?iyKe%2lSf0pLApSLwEd#dfeyKLP$we~i}eNLd%Sy1(G9#MVvS-a9k$4hxFA zcJAEQFKucbVf1wy+xcmg%+W#dj187ka_c8fj_a9x%i`aaGr9XOR4JZq(PQfCSrFt| zktm#&HZ@ZJ{l=!XlXuRznYMFsyykRobN*ElhfRDNo9d<19$h%JORhMnx>&xbRQjn| zPn^W-f`$K$91@g7KgK*><29R^qjtta3HcxfwxVFoY3b!{>z=&reRVJT@`n|DJEzI! z)^o;$1*W+tonzT}NjM`v+E_-p|MiY9JA;a|ws)y$37uc#{N?<$-C{S{8%z)7e3W^0 zCskL_v0|t3lc$qIZFFzvc^*B=TC_1HS^slog68UV2g}u>Qm3A9@!026IITP)^7mT{ z7KVlpXYBX_3^Yv27hr+}Ie?>h|X)E56_W5j_!Qa`_ zRGXa=X|u1;p(j$S&E|4M`SkU=ZW8& za_ke6@ugkoy#Bjn=344*pZoJ?n1imu&bRN*uGs$Q-Qgnhhc(v{3U^I-EY5R;YZ}Wz z#gchHQ>S)Jn&@jb-TLNzhM#t!X@3(+cBcG!lJM<{O!@;SZ-xvfwdYFLd{zd2VK(Xg zv#NC!SJ;Z1tk*b_rQ2JsPw38?^J;q-v(_yCp!r`s=JUOIcJ#$b=Bu91Ry(+aOzysM zi|5I+=-KW|5+&F|U5{SPIx6!gQt{d6mmh8Bot)5naymzMlh3_!Atug*9rkj+_1gUW zELKELn%HqCFUQ04uZP!)C94kK?8vwsFKnP;q~w-*sqj{JN270MkYdvdxs!*NXmq$S zT3Y0%Unz~4Jvnaq#D)WJs!B_x{1*v#`8=K}lz6?>;cr#xX_ZC#ar@>hd-*W2+;0Bv zb=-;;|5aUf@7rfL-;HbI>)*3y@4ow((W(CTCrhUpD!t9``uLYWwCTK=alhujS<5>U zzDaLtY*rmuV#X)TaO8&nbH|{hw!>Dr*UqcGRd!+g^X=^7nSNSE%l`hZ7L{_7bg#Yh zmjCzm?dRk7)CiV6mv8-La`2_auVAGaQ$$2h8XT*;`gNj&AoJuF1K-1*ms5(iz6@J^ z?u-yuam^jsV}?7A&R`In@<~;a~ahj0J>U0ofXVm0S{Y)`GYK&98rCJUa$2}Xwx z95M8g%DW!^`s=T&r^6R^OB{Z;qrRr*&F_lht(_hFf1b^+|Niy8|MMe%%Zf|Czuo^Y zZ}ZMq*JqdRH(I=Uc6$5epNZyk{IxnmCWtUACp$cPm&Gk{{_%u>kgKYXdKejWG?`ZU zD6(*!a#5RX=^Na=@wDl@r6uOVvt{0$o92@ok)PN8v1A_G;fE((cd6@}%&d+%yki^e+d4=+X zSz3u48-k2IxsEJJxiWXs+#~P$j|b{1tv{qy@cr=h`Ud}x(*NF-%IeKf88f!NGMjzYVy>*FM?;zy*MSf#>u0)$PAqh*%$|Fjd5a$B(OJ=aXXfd?Ug%(@ zZYw-9Qlqo?s9d~cQg5WcuWQE)=MUTLipsQ}$9Gvyo8{e?JFg-+ZIW2w8pen7R3n4Mr z8GZ^B)@1~R8YQ3Wdb!4_q_Ux0tjI`n)$SkJqN_VU?X~4*X-c&XdSEb{(R2%q&cZF$kTiGSyqo|hM!t#mfhbA3b&L?liB>ev{L&`L!r!7`G8^1@LKh|c@ z>6*x;5#^S%X2GmbpP8&@6AC_v^(}wK=a$# zpKP!8N(B2aJNG|2beCoF@;@D~I9b2ctqyWcpSJyZHB*A=@h2Gy=`0I&mGz4ReLPz9 zE>Q2p)PIjI9p#JJ6{UH2${fvnJ$APSOMb2Gk**9A?jG%IGT>KWTHsyr=ib_Nx@$IN z`!k+quXNhz!>Py|%$MOQ7&3R-F_ZQsqVsLfnkeb)ob^B~+&9XX<M)vQE7V5LwT$?BAdB{_~2FOdWLK~h0}I!BxeL2z zJ}E2J`B_&v>*&GfA0y=hTC7zy&OTUFdF9*zriAQzHiicbKXp!|aj>M+%Vx1OSzeG~ zoV1GT>f5s%h8wtRx4v>>Oz`1qkceQkU=BLq(>#9}1EZs9>Wz?tQa^O{gp4EK4VgI*1A?Z;T8|3TK`&xs}0)pON8jfu`85lhWTf-qf=jl&@r( zmGk^eZXrG{4spSQN}uTR)&->N2cHE>gsTNGC!VgN_LxAh*RQfmW{d7 zo_hFyWw@P?Fv+M$Cq2tf9{#TLTjs)_c*&JN;u^au!_2lHHi>q#J$*r5 zOX<@czW(Qn&6@ZdXCD3dbkSMsBM*LjlFC{YCcQv+i(~YhEhd#Ek)FIAsV>vQXHGNF z6A8Aj@_K${DYJ(fhs8>js~&I4on2V`e|`EbGil~V#ttp*sc%la*>>pW4TVVMN#+^~Qj;D%wbG83jPH+;AK9g_I z{^;5lCjC{hej8=Z>n@1CC#+%qLTE;q)7MY!XV!RMs_i|awL@BT!ht!Cx0mW^baY0l zJlw?mPyYWyQ+A=5ll&N%QWjkOj=gn?qDaDkTm_{B{D)x-xJq1WzGn3oYZj8 z#P3Z5$I;Iw0u%FFC$#@R;qy9le#)dJo-7haLQ+^ZqzH9P44C|yImcq&C56itWmg1Q zWM!E;7A*2qQJtCM_1J)C6(^(RCY6~fDSZlDT#Xt6hL23eQT$ti!?Cn|B{x`8+ z?s(y>6sfO=+ka0fnWg4nHSgSG3%=(s3%B2X&-ZxBGS6d%yoXhqR;X|?txJ9}(@HRi z@zIWZG3&2~pSk<(mtK)R=ly*<>;M0I`0(GB+rIYutoKxYF8H5lG4IR6e|xHB+9uo8 zSnR9+{^8%<_Q!QT%|44)F=#w*c4+L_EwFoC^w-)RL62l{5w-TyIon=8*N^wf^jh@% za)s5r5FZy6$wWCBV|EP-SGU*696aae-LL!hRGst5#~%ispBVH^=csuqC0zNc&A+9i z_JYdgpIhEuTfJ}p&A6|te?0nm_x!#;kN$o9yZgI++}*g^pGU>FpU+F~d2GTM*ik6* z@|PTQY3=ce`+vW?{r}hQ`(9H2|Jwign|8PP*3XKX?~iw{>n<-Z=QEy?a_8vRtm@k8 zVjDU8JM}l-^E0t^95z^Wz;Y!=LC5v&<>lMA%RDOE`*PQfwPEw?zP}2~MSKfFp_x`@Ejg8Ho-w)p&eyrE)gpKs6B_5Ur~{njEb*X;Z|v(+d5c5R=1WBr2H6Pearzxyof zY~v#>jgF09UyCXk9^aj=zisyGCBOdvo&LYbV*dHZCtN&PI6EufMrAfjBwzpP@xbfM zzV~$+msmV82AOk;%Ax;p-%MjU|OqYt7Ejw>97RH?e(H%a^~~@7H|YeV>iV^YCu- zdWrMw6Q&&d{O{l4>-+z|+H(JWIsfc+uMfR?_3GK@^LF2ppZ>P5`Tq5Ky!WhcyW0=H zE3}!vOMuyMg`tADyvx>~DbZFDW*ljUOBvIdW@LQ58=CK-aLnsV{?mye-7>iuZ^}+` zXd9iGRbwl?TW9rMCI#_&!84QH^j!+uy!3W2e0RHGckiTbc1{k9*~_o4|M2S1%`f0p-Xj!%I4`JK;Jy}N#>`f$}W>$Qf}h8OeeZ2!h%Abor$k6ubj@lwUuebwtrom8;>YVdB2Y3Q^d{_j(ShCm#_QsI<5C@ z&x^A{j!$l$Y~udD@cemWnS^6@9V-5YzKNx&J<*&_%jjNrg60qynwW8@=ni8K*9Mqqrs;KkX#^5x&vEBkrrIlJ1 zMbd(euTr;X99#HHzW4-d>UE(?ZibDis}9X!k4}_wUG4H@deW+UFL!<8)ytfu>c75C zAX$+=;N9w9;d6Tzx2#x}6sLL9>G$MrT-8%45DetM~yiKjW zGc=VZ7|&UFDPK@O=ZCTV`$dMc*Ds#BGBNeE>HZCemxeHI-ac=Y?B3c*h4+jSGwr`W zd-;dwSKy=hXL5?>t=&|%aNY*X%g3ka?N`p&;vva>Lqn3=$Y6EItk;Z(R2OVayJ;A4 z@Z^eit|H#_Rg5jI=FF0I7i;#sHIF_TaGEc|dGTrX=znG#I%RYM936~Q3cfTfcZj?3 zyC`|%i-4FX%Y5ghgvDKUa+=C~-{{^U{npLO_Vp|F#ZPxOe7`6uBv#|5|J=vd6aFpr z+mn!CbfHT_On=1;i^(zbR^$n8eRPNS+2KW1_S}0`obgC|oLJ^HZSo1#V>2Jd8K>|Z zoN^(4Irp7sBGWfLzBpN9Mw|P?qY=w~Mg80L`NK(@RNMclGk!ZuzDdYv=n_3{!=3m1 zv!Cx|kyS=%N%>{MmJcQ^klgLi=9iFsFz4$b$@Ki<7xAnt=~L#XIrzlw)q0iD^z+E) zKBlyI|DTd!J0G?xUN*R_9lmQ$cJ2mg-EVOl+8RG!5s4`@D4tZY)#i*~<>%s>m6bZ7 zFLV~o;pf&75UsD@^2F`;lr?dlXLkOcA{iMmVa>uxzh*uclhCaXX5L; zgKeg7lvq}{R;*)t$yvT><>iyIiu)AyhRzQ!IK86X^6=cEr~HzuC-L5E?ePC<8h*Rv zbWr{aUgN@3AB5gtsM-*%yWyAaiI?j|3;8msjsd&9giPrH<==-F!w{P%Hoo_HEkY1IDa z6Qj1Z=dp8FFN!mz{+`jdD<^1#a*E8P~?U5D{5{kc8l<~QK zRt$Td+x6B-`wh0HFqt|y%nc)Dq-PnZuzgu=(>36Gla4mv1-9lYCMdH72yW zX!oVe`F1?^c(x#KqeV-Hi-)G~VS_ch=FMcDxU%p08m}i=;Cy!A>C4zkKK`1u|Y!deokK4>Z=7(=Z{a0SDPv6 zqwFl+)WDm*_yC7s!@1=XlOooyJO9{Xj{BmCGew00IX2#wEpNYEIYXsnucl9WC6n&-9}pu z?R4f?=G9R9=90yoyzBb$_gI$|+6aHJnA;xAb!LT|#I6nj6E>EHDU+h4{GWf#N?r6X zp;TtZ&)fO?WtRuC&rf6$p)3J2Ph$yVf=&xAtUUD7ENf}G{q@?U4vz&DrKMZ@Ki1eS z&O9!g5ELq6Z0I?;Yr=h|n4eGIv1vuPyPWcKmTg;T#j7e?z)jmd2y@7DP8jn5M;mQML~b=3)O z2F^g1Ageij%O6W>mc*X-IBeiy#AYYc_xkPI`tSGu^UFM5U;j7TM|l0m@L9(m);JvbY*72~-{SwhXZdfWqVn!u&Ht-) z_V@1C{NG*w{rmU)kB_hWS6JmUFeos1x;Tcc&)*i_emP;0LrtLTlefWpHtTHNx6mv@ zHL@?>`IEqM*Pf!4O5X3!nYvs(H2L7c3lH?~CQ4e&ikziWE^K=CyHRjN%P}44#C21J zbN&>Ic15kT&Sk6WP59KbsX)-U!KPgHVthrm)$R=eQ`;8!%SBgZ)wx?bbQZ&$7E{L_mhIk#E# zT%2uf&|dP?Cr;~muI=@M!C{FLEw;RHo7#WDQI+A{AFVf0>3LTl?mwN9#S?Z_Glp&I zl$Tp(Iw(0@zY{6;J#gy|F`wYflguj1t)4{RRtkIMuX=mSKkLw?ZRdBHOj()wDZ6j! zDdR-{+Rt4qKHYi23pY*?i}Xr98FKp8)kW7ndUIS6v)9{w(YK*_xm~eKf-A#eqp$1U zXt9(Q&n*A2>E6vVUK_6pd}rvY;s_9l)yYZ93fU)HoZEM{WaYJW+|N#?GqCwI&U6iC z*88BzIW?rchE>z>jnV5w{li!Eo0wKyVtAWraBqo+f0 z>L$zba{>psWY7#4RNW8v7+mjvO_5b0+Hb%xU^9x2D8t@!YXd zQ)k_sQIfK)_s6sMyWRiIS;_YC=kK%Ya!$rDuK3tfync(%k7tI8RflUki#|^GVVkx2 z#NXLM3=XA28`55!wfVbf)2q*&k9|%SEzG+7_W88xjfc-Y?9y9#Nv6d~_tKJYOXstd zJ=IsT5IcU5J;-y;Ea}&#DHmPTPRw0owMRMU7-Q*zr(bUPOv+nV|1^p<^yrzJvN{Zs zi$Y}t0K zV%PuO2g7DP`#L9N-upk(5?T8ul$uVv`iM#7C%;x zUv~ZDd}e#AS4S3uv!e5%WbAnuQw%)Gzc{_93y7O95+Ba9;EP80|cJbrYQvxQ6 z3umfJR&WG;wn!B7+OmGz$(CJbN?q2lR@lDK>)O>6W~{vEPmiOo(TU~8W}BUIMJ_CT zmB+MRrk*kN-MsH-+eEL0ST4PCLa(?~a`(9maoy14F}hn67BAcD(`$8mR`B8SoevbX z3r?<<~ercicywZ7Vm{J>Gss4{TIBQPmo*OI%{lb5ewVAbY z7TU8mzqXjDw%L2Wi_WP}m*!qH_&F~lSK#SFfPyZ zdc0&+?f$TjT){m$Yn(Vz(lUdBIqs}%Y*d^1Yll&aq0gdu@;6FtB^p?lIJmr);640r zhj9{frTk1Ap7dn~mAAGsIVf?}O_e?VagFA&8>NlTE~%ypG3xCs ztrw2=p0ezHw0EsQ)An<&tb!U04W%NXp(fI&W_SuVS|^+LNEoYaOq6+BU?JO{C^30P zTJ-$Mc|yj*#XW&)y?K2z+|2gwzGZhij=fcsRgL#<+6G15=Tn3hcg!eK+A840ad%a} z`Rv&pViSYBIwY7B59WPeV0P@p@4N2~|2AK}?snd~>xH?Cisa01YYX0dTlV|7^YJfl zUM>6mbpF@c|Bw0W_dK_lxv%Q$ucxP{r?Dyay>$0~YbW#V`R9%C`DU}PPPhO4=kM>c z@BSrDGFhToGW%_rHP7Nqr=H)(e?Kgd@_)|w^78Zf-$cR}a(n2%e;2p^-;?wE{@gU* z|Kpwc|6jW=7fOZpFMm1ZSf+*VVa*RG&YUUqU|!Vex6JdXo3%CH%ub)J{d;|sF1NTT zmPiDc`kGDb$!IZTXy{lvplBDqQ)eK%)PCxy-wF@8WE#>nvn0y%x{Ezwa+|_Wkwdt4n7c(BXaV z*y!=rLgxDHvt_kYQ;u9=eDPz!uc>qWj_>P#{dL#--yciZ3jC95KK@DG@Zsw9c*#%h z`t#Oae{I62*s?BNVNTn{kmH4SR^ME~*lD?dQJD4FM;lcEj+P98Q=vMuRvx)=|K6Rs ze#;AGTv?XfiAk0@HkmhlO3CiK9FtTE9P9*ppMSiazrX(9o6?@U7Rv+HeEJ@8-oSKWgXaxBv6u@JEBcPvieRz5n;@{d;%r$drBm|D*r^k9U8!|IPYy^!WV# z=Dq(vY*?l-sqcNA!5h0>KmTkNKd<@apoq&wm6kj$$#+XH9oqEO{$QT?G~dZn443bS z>)EVTe|Z9f z;Lfry-=Ad9Ip23_pX#anj#ZOW@~)u<1p+4Ad}YfNXaekiS zce!ihHac*N{n0T93EiH(wNg57n=WsJBgax+Exwi6%qD5GvcBGDS`ho~lYrzzy>;(& zr!d!K^={t7$IW~A;FjX+OHYcPJ(P0b3(JJ%#hf9p>YBqgU6~R*W9ya)(yjk`orOcg z4@G1@=F}|jFm@H^ZrU_=zO;s+kmYv=?JV8XD_*59P4nJ)_KzEfs^$uAJ(~rGPxLOG z@m?<~CH2CJ^Lop_+zMI}z0~09q76&4MYrDdDb+cWo)L6K`YKz|;glmzO1s~PP37LR zb>)Gdhn(FeIP!aI`Yc|QTep7u!xf^Juek5!D>^gDLv@AS+q+lTN-}NEnng!U*dHaf z)+$wd_sQv8%XV!)|5)#9^or1Mm)_TfdkR7~ZY`g~H06YKnQ;BW?r*ELkI5ViYh1V^ z!Q}UO`~ z;bzS@Ze1&$Ef{w^S?_Q91J?+Fi?fFRoYtv!_FvU~-EIT^?xsr@J4Me~ zbEj~tPnp9Pxuq-1%KozGgySm9!sZ$-GPSmTzTIHvOb@dp!HK3Nhd%xOqq25Z>EcW8 zzC2y~PVHz|3GcH9i@lm-*X`PN@@ZuBC7r9O?G8~|A6XB^e?Gs`>zbs`6h*essykb5 z--^8=%{4{(;FgT(>9<)H+&&+wt#tDIj+9B-UTUH<6o05~`|@Rr`U(G@J9~Q zY5d#H@k3X1OWV7Y@Gi;LYk!kPrMFmIHqI`t)7oTp_vEvuch>9sWDD2C?dP7BQQehT z%wTPHdiAkC&!65+G=8y4{#mf>$5i?4N5!AGaDOeoQpWRIOE23|_J6dRAlrr)3eL(# zD<*Hdw7^AK<*>Tr@e2ql~cyED}SP{UuufoSHrgI*1i?)3lF6TW(a!VR zTt3Yz3S@clbjgQKsgOoLwLjZfLRo^&$C@bTefaqE(cx}Z>we~)8}>f?`%t}n#?o7| z^L7c`vgwR^zt#E6Y2Ro5rKNKpbk%7^&XwBQ@O8OPg!U<|^9zc60y0gcb&R`z*8k?; z|7q(%7u)X>l_g#ITx5e;`ji$p9Q=EoYxmuUcW?81rflB3Yu`Sp<%UZS9?*DHwtMNk z29Ll=CoGnJu2gt3`)sKAZ@rR?l&;xd%>vv#wAwtDKi=7W_w3cTQ$kocBzl})FdzL| zwmWX^#3seAQx?5V8}8*Ly%9NJq0-73!gHv~mGSr4vb{HD&b3e3GpTFi`(IbBj`TT; zJ9lj4Hf%YeW#+5A=;(>Yn*qzG^ex}aILGhtKMPyCd3Aq27VejJS=l{X;<{odv>litOQ0+n}mq#H_FD0(`)JU2a&p$1J9#qJE@viMpLg$Sv{sprdG^oE z`PUDAuB7rWkm%i0~cc9$sot##(t!)L#K zTlW8l!JNL91xk!BYb<<^e|&m&^XjW&qADjX`W{zG_@z(PZ2R!&XLo=6-hF%bMz0OK z{W_Xi=Gesvzt4UvuwlKV^0LCJB=${M?fs+c_!+)^c=)ft;!A8h$MVaalAI5J-o0C4 zXKQCONm4mBe|^W}_y51n{%leA@#%TH-)}ZgUmthRc6VoN`Tv6Y(#rv`aS-*W4fo)6TOn-hd&aO&ypCv3?PAHZX?zex_cYNRb`j5}; z-M9Qb{P*4AYR}HA>$Ybz?bx;N-;b;A{JW2T{#jGIyY}a+)LCwUofCKIRhckJ%%VXRpI5u}=VSi-eZT+p*Z+BVcK^@S`~S`V z_pqL=?-R zEYtJUxvOH$!Ge3cJZUM9J?3v};G-lnddUR;9ZT8jl zBh%F%ihL#mi0vN%N$07|)YGGhydR^SpUA-=(KMxpuU6N!@=F{`S0l2RWFADw!*u zi`xIENi2{*HTx>RZ)NzWGaFgVS6=O_uX8s$y(V?+wxZ3G1s1V z>CnfFmZl0#i&m{Y1)HnQ?lCDyT;EZ!Chnuz(tE2;=^qbHvEORCzdtQm^D4WbW3@!KiMkvlX1rnr`P?@4-`MS=%m1=Tfe|xx&qUGIe0rg^nYiQTi3`{cbl_ttuy zzuD0)njPS?IKuSt>F&aJ1_70Oj3*g;7i}z@@I!c!D*KtV+=92UiEpEmr@4vsJMHs{ zYw15bBZNo9CQsUD_0>O3yB~GW=9qDEalW?Va@)u|e6Af&b{m0ebt7ki2m`s~F_i^9#s#B>G|E`(3ZCPuOU)Rr{oJ;(!x@ttX z>9d^rBfe&4rW;2}1`EfE95;rTX|eD8l+K(<&gT)kz{B`&rC9Xcgo23{=KJ5x#yN_qg7NoHR3C~~f()pRJ-Q|WEX)*#~d$p!EhcZ4~ z{^pYX#8VyO$ERMeX00i_7`*7IU(n3}rm1DDsdtW~IoPFtcMUtFxH?dL{*7IqHLmY< z_n5AGD5!U(+(Hm1r!3)l-lCUAOBd zGW!%4h32UQuVpwWv+!+xFLw#|fjLv%IDGa^O$xJE#I~g21V@V-#~gRxSBoqB|DXAL z-RJQqf9XH`F)JrjGOWsY_SO65)-CrIf7WK)!^6Ed!RpH6oSzR@yt?d}yZ7X^<=-{M zm1c^q>tj4OVNua;#{+E*UsAf~o&LRPvbD{UMzLou{tO&k62C={*)453^Yg+o4~ZFv zSH;VJwU}4F`s~-Un_vH}lP}mBYrA{bu3s;n9yi|}e!u4P*}DHTmWecoJbYDFE9Y)H zd)dp1TeDwSEc^KDSyl1d_vO29tqEIw_#uPC_3PLF?z;W{yXWPfHm_1LOgdWxe%0-* z+!p!$b@}^yt`{#qw8(mNLbLaG=li_8%PFfat7J;KD+dUtxm^BzT(*IcBRSz&>2>33 zm7bk(5xKLLX-+7--|M+7Gobae0q^04jLa!_4`)ia3Tc)k{I`$K|EA(OY03AOiO=2% zPAm`mYI?owJr6s}&ITRFAca5YHER@HJrsX1$W=7F5!!ru?#-KTU#5Ch%5`UYz8v=P{rbC3-v9EJ+dto)6I__wTj-^!SpB}%XVxMu#m%4ZNU~dX z_qbMH?`G1{H8h;0;^5jDxX8_j(`4C{8OHrPJ05ubD(+&?xXIVbH6dhD*Afw@nw$Ii z4m+%~?)xkxJlQ{~C(Px@1R>^Klfv|s=6=@_bTnx@{rYx!`FC+~@jE}4C@wUr@(}dc zE-sz+ZSUfF2bHU~AF)ESc&%S>B`uOwY9`@8*dF_8s->{r@ z{Bezq%#8L#2{YN%F>yTizRzCw-ip0tQkvTTFF%x-@7=%S#noXUm;NbM&DenVHgEa6 z<;VNaAD{mEd-y(Sk-sL#kGEe}$Ykg-R5G&UN_bV+JDaA<4vFs`DnlV&VG%P>jh zT=k8w`+q$8$NcY0&5U>Nw%xD!d)4Uu|Bw9-?lQ%`igmY`c<8wNzb}6-#OBOl`TMfH zJ}pY(pk?Cm+qwM;8kszkWp7(0g}$wR&%r9RK*htm>-44>$5sXNdAdAWCjUsHeny?r zg?nG+zE;?@S;oZ2@87+D-t$Vn&pn1Z+ycvGtQk*lI->FW`s2rsPYXTyyLQSf4~3n!~Z|` z|ErxbJ@Lk`ho4r*|M~Uo6I;Ws#KjL9?#ifIa%sAV7V-3kZkwBa>Xn(pxnldZOBiiA zdChiNi~L!9%ST#}Gxm_rgFNG9_kaD^P;mc^L>Nc&j3B1K=W`zH?9+d4ovM9dmCdFo zbN*=?j~tV*;o@XGB5-uV)oEhyUA)p3|DC>LYA(1sLK&1xs3_GH?jpQtjQ8LnCcdHXTuTs$UUpK8gPr}ht8S% zQoP7WC;V*D#<#-TgkPKOmf<#)X7qM{Ej(d;=xk0m>-fW4U-g(@Hs{$MJ+*YkdtO1V zZRb)hDg8P4C&05-Wn}`ZQG8VKb(YzmY#W7?ZqJkvJ+kb4McVvGe}<*9;q}UO!P^#h zb)?J_c_9@w_wZaVVcv~fbJi8@PErpMIC1L2r}r7X^ESWINUfb=W60+ z%(}cU^p1$h!C8TQt7qtiFALHQvHWIjUaz{n{Y>_zu$)O8A+uNf67mVzmHO@IPk|-A z%N5rvS}O2~3Qktlc+zG%QzpyR@P%hp(d$#T#*dy(WW2U#R@=6irsg-lBC4add^xc? zSK#21R0c1$2V4DSL{uzr`nWU5Q+`#$KBa~LmxQC&gzv4g2{BDAuerM6*|Yg4t#_=tF0;)!{n*<*YgSs6 zt(X!d)O*I~KpHFaR>=slg^zEAL^UU62^(mCR19TK?q+W_-5bl;ys2>#tAC>nq=c6Ri0X?N4{PC_13fc?7YO&Gj!^$wbyd5j=h4hD+O*D%( z_PV!Ta8gooP~2|OrnOf@1P@MLS~Oq6+Ai_vTI*-abN;P0)74+UYT5Dpl`-inzt0cZ zAf|iC%RB4)N2}X0;y=v&{e;W^X|}4>Nu6D|oNsnibLxMw7qh>}+cpc;d|Gt%Sn5wZ zPQl34YEmnm4sdv`{;T24Ruq!1EOm6zlFb+2M~1Ik^_!7l>8|ci#>;z?t^`SbZc}1f zwT$(`GrjPbdDD80|0{629`WIGv{?DENP0`e+KoS-{ET4;H4b9Cml_eNWz}>!ZvQon zsa^WP6CPqSj(Z(s9>)Kjjs~6oC(Q` zH&b7v7PdKM>izAR<>g0|7BOissHD22us<#}Sh>pc`Ygs3dAClj{d70vbJHq?70-Kq zo9DlaK9`@Wwa#K~nnj@hr1?)I3LZYsy7ukX40prl@@wAzlbq%odi2T*)&wV)b15(L znVn}cO#Hul|G%gstsM;eUYi*@c`-bgzQFs!-#YvA-5xUikB$6h=k3`4yXWBlZ`=3( z@4o*>bz*g`?Y|#~`%iBwscm22JwvwedBum=_cGdx4irg5UKFlAzCy}%#?A75?|0wf z5a?CR^2R z{ff(`xUg~-*<>8#(l$0WP+Z-l;;15+nqobvL*r&6`eowNZ=cPRm{VCY?ZVf; zZ_nxq^?&v`;qCSPz1{8|`{o_{d;0X}hZSG$?cSICoFy@8S}N!9!aeo>*S-ENU;m@d zM$T;Zzh}QbZMfgeWULpQaGv3Xq{F47WyST?$6FRuZQcE5PH^w(Jq#R%U!D6~n50x~ z-^I(%o0oTg|Ni>_bzBeM|9>d|@8|9JHQRUY+PQbvzTY4I`pfV8AICWN`{6X_Gj0rp z=OjJMm$IywrX~`+;R@Gt8EZC$K-Wj>8PQTf^f9Jk^dv5riULxgW^X7a1^zeTg z8b3b6)&l%0QkZ5S%lEte?`e0B&u70D6yMeVI91W&Qg>{9b@5rgAfHJ|QBBTLd*1(E z_<3&P(=^Y^7H2;j^#=Ct#$r=+F1h>zYtQ=%OBg0B z>Imxj@$vCur|)OY_wV0XS^oRo=6$#SeK_oY{`~o#E%mi`W8cX9eqZn|K&4gi=Q;=ES?iGvozX@@7mof&l*ES*DQEYqhy?e)}6U)H@Q_W{J6n!YJ)Ln;9A4lRg-h?Hl1ye>C|aI ze#&C4(9K`o%z=#$E@@qi2~EpQzQ4$?WbUKz-BP9vw?gw9FR7*=4IwANVEd{dm(qw}?*8S-Wjs>ssk9Sbfs) zv;QgmtZ6njnF1-7#Zp%9xUyVZ|F+iC7){@ji!<~3P8su*AvmtlHOcy4`^^bLvh zwn&v|K819z1G9XaE@UjzeQ&q=+vfAE4MigNSJmi048NiB|Al1I?llZSq3f1rhMs-w zIx$vXKgv@nwRPnMwzKu;R;#adm?m^A_3hnTipyX9bQq)WRha_6=!RMNN|amFfq0++qW=Az@r;+Jhbc`_>dMyuy(7Z#m$C86PN1Zs`_t*t)HWDXXDK2^Gugbjks-N zch&9gHa5cCWScelE0XT{q|Xq=%Xz-`AFXTH_m? zo@lu;NM-fo+uu#x=QY*6s-Cx{zt}EU^vyi8Wv6Yfa9w9Q>$U9S%EaPr6Fzh?YgcuY zW`yuqt+Hp|7t?yh^>*BmE3+o=Gw}YoLbBu8?-Mm@>vA;zsDG-oO@Cd_wD0DM1z&mQ zRSSu2dsp*z$Lfwf+?so1Jfk*CE1FxM>M-iu`!OnX!nV}srZESN@;L;q+HhTC(tpU$ zk>xM7f_IU?#FabVbKhPd+wii}CGvL0-8p+V=G|Y~pZVB%ZFHIRSufTJMf+xiuuCuo zG4H;7_3wgbN%=u9KXFbB2|q9V^!vmUW-bX%A%;1;j20nGsSKwWceongZt=5vq*D^h zey1V(p6)gG^?9$qUA~!6HOt5T_No)n$DO|x?PGlQN9SGhH3k#y6aHV7mPcLRetF`X zsTP4g!cP@kS#1+T=l^Vsaoipp`2R-EzuYr(XZQ7V9M8O!x4rhde=>*n2e}!4Z2BKR zoXRmr*eJbi({J3w9_rngI zy~`H_yWL;)a;m3-p-^G@Lu)6w8g|FCCmR?tqt5+$o4Ca3i z72dPIe!h}C|HF!&Gjf3{jscvC2|g}I-h@sqTC_K1-J&B)EW6wVLyuI)dn7uzXgru> zT-DdQXjV-3M4s74I~-C@9y#O35qwH$!@AR&(VuO)J??+^m>X-wkos=UMUKwnnQRx= zeO6kebb?32drsiN(m03p>(}MITep3>wQnLpR7;Kr8*b+9{#UfQ^vGuu&yM!PiXJy|%%*R@9=^T&j%>#rl}(?|?7RQ|yWrPv z|IYEw7HIlBZ`Z$H`yY0~?D zKb9YVF7B{R{q4JVcRyCtR8?tRH%OkrJ5Nb!qCs22@|_aNTPK}OG-R7;n)R0d%)Fbz zyAvgL&6}QjvtR$RN#eDWLJi%9&)P)=RTZ^1c{)nCJd)uonD_kn@#C*o_hyJpy_()iGlh|Dvm)?)jkz!F;u_W_OZo9~0E1_cx-|zUmE6}q^bJJzt_i}ReKR$k} z4t!hn_j>(b{bPsi`W}9K_^|4_t=*B-zUkL*|306mpRdn%*|F)!goeu%H8Q{M-U)oM zM^EUI(9+iuH-xLjLo;UjINvQl_w!!R`%W2;Nh>zDY*FcZvn%mNUc<@B>P4qbx{I%^ zsr&!$*>8EdM}aa2g@QOdg><|bo}5j){(Ir~!}|MwUHvYWDu4WV zTw?R*?frje|NndcZ+raTXXf&DHUGbS(lLzXy&Yfo^Yq=LSHGUUTTr-H=V57m%CZHs zo>{h^uIzJsb0Frk(?Va}z^#%-%|b$xqO|rz-g5N)JXQ9Kpd*)&-gbJLd7{-JN-*i#lTT9IVcpkNf?jd0%?(>8zfz>d_3^fU8lEdVIn19@(|{vv-cuMO`mX{ne}HEP8(~F=I)7Q%`uQ?z+eAtFCM3#OE=o&RA*W?=K>j6tsO7 z<6_<58y9}NC`g3{>2fQsT&UHYL) zNsLl-K-Q|xvnO4)vZc5FVU*rA)Ak+P!Q)c@qGR6YJIyaTc&fKXXsb>7rm+3$OnO&m zY_@d?Y3$Ihlw@#WGFIMkYKnpp>-kqt)kTi?uCEVWck|$C-~CIyw&h0s=TNux&6q3j z`lQ$FC04&RouPqvvwsDp`Ex0ka$jz{#xJ9q()vcV&Be#p#KAc_XAbDZt;l59cs_w-F zvIaidV>gz&yVRnka`pL`#_}KF-wtdjdtZsKHFdw zm69lx)|6U?n8)n*A2H2V$y&Q|Zt3b%^Sz`GGtXJX*}%Fb;tuC*$DB=X%&NIhE!~z^ zG57m|AkI&x8g116i?VJ?IlM@+-uwKK$$I@EQA?GkA1e%Ak2Bw_vzb$~j9K^5Eww8reu>=l zE;*Ne=FVp$BlFga(sEP8*8N&OVUr{~pJ~&Yu4k|N-uNvFzW$8cIc#>AV*OdOs9HAl z1FEYeyna79`K>;3JpyFUNa4#oF%3i(e~WQA#m9B~TVE*(@jQ_Q=6HYI$Iyl2| zn|AZQ6`%Zl*g|%0S?ZV8swT{|@qnR5@tn1{!b4A-QB*ziGa&TD5%JmUXHHa&hcYnt1C$(Yi` zmjc|*{xb+J^KNTi-`DufdzQfI?eAr$KHsKi#5Zy8_vRxnE!t9x&UrR1=wx5N>cE5$ zPZ!Z(k@NpnSoF64Eo5m(d~7z`_xRmo-%o$ZYW@82hfrVj=AG6L)_s1qX3bkp{y9NR zOcPzW`eIl*0&NU6WaIfZE#dopwrt0(Hyw#wkNCOX6$i!>({Sa7sv1JxA(F@@*L+QC!`!%BCMTu+{obY zbasfeaubbVxw&!Kk$FK~LdkxiY2LFo?VNB!Kq`cHUWWw!g*xls!7SSO}p4oK9u;T6a-;e8J)~#RPE^B9JCpYaeZ_MXBj=uc7yt3=&P7;oL z4;$!fs`7sP`S4>_xnard)!naEj~34PGa+fph9%dhAHKW$;oaTk_dehMbN0SZ;;px3 zN-qm4_`GYXe(bo*Cmufi@#)W#k~k!iZsnPUUpGH&Ak(iezwh_+`p^0Qcm>-8I4Wiy zlK*#q|Lo}|-rwFZ2Fy^_5`0i1(|E;Fou^4k@hHcslC+!{jMrfqFd^Xzz$9q-8M`|;)hx$aH=Hw=$*I3yGbKV86>?e;l}X_nMolhU9p znNZbE7Z=N)?!p|3j4PabG#Oo<-w|5dn*PQ^P>@M+k;XN%Z8|SilomX=F|qLP62FO_ zM{fkpVzuY+@pDP?n)#(`O3_4>X@&RX7HrHak~#_I3ceEg!O3}VYgBcHG;GG+;>Zo02s%lS66qYewd$d^hAnAVpWiZR zTy?-Svp=J3me5QyXWs4WwImlseGzGU9^9+Y($(W<5;if@R#zbSm@s$B>}{*gCU8dP z7Mf2i>f)8>36lQIYHG;YxFjvLC8Xrt>zCJpjBjMchcX_Vq7vSi@R(tuisI5k-(5t5 z-#HqsQkeWoD(_gv`OuSz<XK;;nw4nRiRoUG&`gdi69{wm_G+3>-JZbf$^RsNSqs zReF5ZlId#7n#2ncJJxGuS!Ig~hAe!u_@Qf(=kC+Ye;0iZcgc!V67X0W>Jw@j-+zi@ z&Lqa-*sy(0PSGk10+9?ZleCPqnVMF7lngngs4_X>@-2bwW(PUniGKRBVBV{@oL9b1 zmf&gO^lph2y!&i}nx=Y5$rBFEa|bQOdloggW-Mcv6%_Pn@}9+aj)@pZ@roCJsd}K# z)qOQBFMg`J<0X{@kJ~dM_KNeqUO0#G(~Ju&#m{86Ob^!=JW2_#z&K)7j%X=o{UTnJN3YqlS4##D@Bu~%*S+?8_+QP|S-ed{w+U!#%?KVTb#CFm171E+935q9! zBM(n(obu+3X;HAEW0=W$#nRIK3b(D__)cw_sb*cg-i7-}&+o*XXwIWEc(gQ^b4=1L zTzcOx`@Tk;e zh6aJxPa9@!t!xg) z0g)RI&k|H`iPG9~Yf?3{i9o}f06nSOlOOJl{b?HF6(HIbGS@*QAi(I9!v2gKM^-a+ zbrko_oP0!8r*FoLH@qqiq7I*C`uMU;67ZX`R`2{~?#ewAUh=M0SA8_~p~|c?dgaGf zM(pmn))*hB+pW2KiuNs@jb0slSmVTARld_%K1E2YzVEwybj7SCT%F!hsKxZ@W{O*}zlj858g0qrjo#pft&6m%G~EjqdW5xC*1~;CjRFkOI_-Op?q~~c)L@E;U%k})$vHEvIkUc5te-sTaid^x zmrKga%o&#zBsX1ddb>AmQjYbx*?WXCyiR5{*WAx-K6l^!%^ObN6c5F;g$zrk?CQ(? zv1*mhB;!rqt7gy9n4tCA{`F(88n20}s}uO{9_7-u$XvywuufyI%B8;fK?gr}KH-1G zS6tv3nkl$Q_2?9<=NvcV5;zZ?ao*k=_^qA!#g3ah*WJEXGJDD;BiTcHG!{84Bpu3| zB^I>3{>J?~agD`ibQXDN@VKlI61igZ(22+NL4;$CyO!os)iVbz)4vwp=bzx&d8Faq z&pXQ%d_8wGb8nwH?P90&wr010qmND61vvhmEnCc~)bLuSqb&A1|8&ng7j}P~QRHo> zD>OMZN|R%;iU&ubjg8^Ab;XI1Etxaj167O8CG&_Rf7$2EdVbv$i)~p;tfXC-k`$6x zc&aQiN>6ohIqoQAJbQoWrAHl(lV8tK?pHVy8DMafp@C`RXWPU_eS$UX)=u_{P!U|> z@gONkz=K6Y;h3ya&{a*H=JzZmbJ7JX|Nl&X|IWVJR_=KvTZ4epx(yu3m)>l3N%=PK zhV}DCk1M5qrh=!_ZpX*GnKxg)wjl50{-3|}*R5N3tT05)zT(Tf+x+tX-o5{Sud=?f z@M3Pcy`5d`ojXPEcfDP9`^WKqew&hY@B2TmX*g#oRvP>N>D}sAf9mT0e7l{0wQ&K@ z?!?VEzuZ3i+JF6-J-6TP`F{NI#cKIyssBG&$$xunMXPAi#;iZ@(reXP+k`*n6=c|?-Zk$vHvhPs*8B$BUqxSZpEQnCB4 z-|>&1%aZ}Ytr}r-TV5VPt)&xw&}lL_v7>Z ze-HDYZ`i+U=Z`<9XaD|v_VnqGyZP&<80_D_fA;g2cYmKhSn9vtSnzm^%!;LRP0wBk z>7T34QL3$(GF573;k-@3i&G3UJrBD&DTp?j{;*iP`QR+>csUhDkE@JR%S$$iFa|J) z7+;ruaX0Spl%Uc_US14A!kMzBkEXo2x1nb5WuKQ*vpak5JBwtC>P0$-N(tm&jfh-+ zGso;!#M7{ScAIZ)2wZb9;B(b!9^q*DJxLcgZ~Jj4h;yQ&VQ&H}SJ%pem%0V*dlw5O zUs1D`5S;sX#Ud@ssx_fnqBi?8O$xpSKCe&Hs(2p5>#XJKx=Gl=;Od9Ni>x=dGHn%j z{aWJM94@6vDmN#4gh;LFIy>Y3x8I>|1+NsFta_in3CVAJ!Zz2`%dPtTnvG4_hpP8Q z2C2@wu;~6uL&K?E#$74Jyh=uqtlnRZnKP!J&W?S)_h;};+jA=;o?E@{nRQms=NfbT zZ+YL4r9dv5l>W!q#d&fWFQ zuDi2?`|FI^ha-+jUYQn?S9Ute#CXk2pXD4zk+pUDT#% zvj6w295x3&-Idp_@OmloUxq3%e_NS+Tn)^aj9#;!RD$hCh;b7E(lUD+`Hy%2AS~@m?Z|#~7M;PKnmNB?6 zO;{57w&1b43PKpGpV4t-nNA zm9%68d^J-;wri{?D9lw@;kCuWqg7_@1obnlpEkU6)Lyc(t=Vj2QToZ+`IlO@JziIA zoAxes{hgCJCECo(=kQN|8YY#jbG|am*pTtcmctVqTvV^WEmfXSbL`1B{&SIr4K96a z167q~-jChP?%n^jm!b0Nw=i+X>i1v1oLpx*HMvb#U&`a$vgMm!mmS+`Q@qPV`_Gxb zd23UCF4}uy)1U49|FagYPwZLUc;wqtQ{Ia)ztma$m6_KW*QG34aj7okQmLKVS+A*G zmsiJyYE8*yvEZI*6D_~P}xn#NOcVqqM*WW)Y8Ls5e+T`Y<^t^^AbKbMV z|1Nx=UH<*OzW%!J?T@$r|I;jQ7Q3HQaYaXQ-fLUquk$)RT-olIuiL+GkJO)Q6E~mI zl+@;PH8m6#Jo|ac3d1&*i~r_vgdDAWw})L|s>rm?j`ln?WzpiRFmMw4Vic_V2T4HIV;) zzWMq2ckkZit*>&|QWBb>>?jl~akO+EXXo7FJ`o#Zu}uq`6d0}96AIiu%oA*t6FJAq6_378A+wa$Y zzsrAr>4cE4zg}g{OK-gL)oxWy%?}H|#Y%k{RPE0yIi6e32;o0hwW+Zj>{eAuL>*M3?s>{0X zUOoElQ-A%R%m2O>lvW-*cU)pwp{JtYr847~xES5jHoD1%xy>pY3r!t2Hl%zO5mZFFV7v67+c9%H3Y4441wf!85dYWyS zHaef@1*}_NcK!PFH#^^(JIpjpifvAf3{hzN@#)i^`n&BD=6s&}K55hCT6Kp&kqew2 zmo%g%FPW0G@v@M$e3F&l<sJdTTYoD`TuT1>*;TjJi&LftutjjmvjLF$2PRhO6lUS9v_ab1mypZN5(#rKp zlXhulUF7nbaZN_~<_m3IzH4|>R_L5du@yS|YpR!-N_D)0v0eVx2N|k5MazE9NZ$UT zaYf6?8EG2IcaJO+3GtWCs9Q8eC3Ib$>dfGa`d5PQbk1JGke(f7pzJxRt7GjRd&{rS zXKnIvsaQHw)9{IMed0W^oXK0K1*l5S-ms+h+AHsSn@)CVuCkrA?%Q^=X)5BMQ_|Nv zJw7{cwU^Mj51xm-cI#+9QSFc1C~>-T5(}%LnT+UDk*E1{>cB>8EWEk?LoRs z(cyWzx~posyZ-i>uDlAXYmWoWgE~ymiE7ACg!^<^^=ZKi+JmEh+>~oV_ZasPJ|IBE=rRmcO zE1idjO0Maw@C!I`Lsa2Z$qpIGAhFNp*KAZAHoXW7bVyn|UFdu#SHR~NZ)dQS*lhMCQm;Ofb(2x|*nuI{Glbd5>6RY=nAD>>yfvBfOGJI#qjHs;{(S#B6h3h7F10VeWeb)!!P-KfhP?xtV!_%IdG)iW}o3 z+uG7@Oe&bY-N7N`sNy>2t44R%yuEwHLocJY`Qeg{lXxFoaBIn|Jk#^;+=g|!x8B&X z2KjMhq)Fzyo4zfg%z)RyPiECW<(6g7ulAh0EjM%Jo{K?NYbQ2{{<)J7(QUiO?zU*| zN6n}ed*jYtTJ^JVQ*~I|nylBm6g+!lT(&*1XHhtudQCo->rP17+pY1*rn~ojeVbIP z`cmYe}mH$}S&D5|;6b zKHS1*sAXj~*Eghb#iWo)N4J@lM-W~64($ob@MtHFBCd;x*C zlV>hein{2w^Y|{KDYLt$EtGjGn{T~uNr1hsvOoi?KF8H?BI#6`Lcqu)~#SkC4uir@y96R-5|Ed~?Dr$BDeJ44+S&VRfD3UhAu%dADbk z2k@^|O$%OGBP68Ykj~K(R6OmK{{H>jc2;b@+E669Tp;V;>7;g51MawKephl2p6mR2 zaMhLflYjc(mR%;g$&nJG$hp%UkX&(a+v} z`(4bmRKC9lRxkyM?0r9{*rT)K#6_8D3dJ#QZv;LwhB{7_boROGs4=PMy}L`_Ts6kF zEiD%M+(BNQ7c?1~jC1!dSz6vasmX!8*2n1-pR6YD-3KR+tM2R3HxJ()EK}fhLQZ&mP^d}<*dZq2T-`AH) zR|Pn@8+IMZ2+~*5dZlN=Ej>e1Xhv*OTixMRO@X`i#ZOyd_5BTl2x!&B?t_L2_7-d( zCQWL2F=y+=LcT^<;e_kFFFHF7E(#@eObSWzIcGUJPAkGUY}3^@ioBdb35~yBuYUbj zRnwtm#lrX1EW7T+{<`<~%VmE!5oNw&qg^paAoc;E-f69LQ@9y?}F5@AdJZHIKTk8bLhZQo5RTP*`1)P{7 zv><1Dv|wfB&H6t-est^C@0Bb&SK3iiyVd$#zlPVMH#gsXI{Nh6&mWtP1WXG!BW4!l z{k{2#f%ndnI|9?3e9Vf)F13ZacPwGz(q!e{_wI(S#ZnRTJIO+6MX}dQ?OF_YZm*MG zqkCL#eVKSqW_^WK-+5UhX1(Jpzl%#zT@K8d9n_Vd%Lyz0W4#|mflg>MfJ-(Jo>wY^{7JXYT6PMMr+o_X`C zp2s_me0W@Ae|7)A`~#1_+y4pn`CVwW>Q!R>7ajBKyHl<9 zJi1(B6Boa{?n7aZXVVd*Rj$`gJ<}GmT%qvc^2K+a4x398i{vuY*n|?Fd2=Z|m3f!5 z^J>yT=2f$I9c16~@T-GxN65E%VW|o0=3jXwvSH4Ikk7~de@mX9c&PioZT%Nh`(2&c z3X7%)HSP79F)2XohsVTyjOhop=T0nS@yIq2cy{M!&PoqUhJ9CV=YKF)72LZ(nse4> z0VR)3KkNVbtIyfb7luX}0hIfFwoe8u8b9g&m6Dmk91 zES1{C^~NaNuj>FySAvmvrAu3k>CCUQK2K#|x>9UMl0qoU0e`ny*IeGqOmK3wZ;Xhp zV|adue+B1!h1ZUT$-lQe@msCt9c6HQyUXh`;iu}x!pTcdq-JN{dva{Knx)Bh`5X&I zZH3J;4zs=#Ou2Q#UDahbXXM7lNFHtujf}$vZh_9+X;YIf7i}tW+03kd!FJ_J-o4Q?i;M>v3BHYERnb!TfAoOq& zf6rA(HU>krVE)MOOQ#*5qS+o2<$A4SO?$d!{!dj$R%=zSOKU2p=cvcue^w(GvGm2a z4c9GXr~H`z`0Ud-ufHKh*DC9~A8vjce9CZHhQTUBe?E79a1Xh9gKzoGBT-U% zt+ET>YHnF`cG}VK8%=8OPFy$M{W8dKM{1UVlGXDY21OyR7O4kM?#a(&Ju>ZoU~sLe z=hwsI9nRcstHmR>hmyF@kf(x>e1(+5AXbGoBOwjRY?0s>RT zeY1s471uPs{NvfRLnLe48872Ay2Un2yUirdrsYSeRxi>t@7t=AzsNM^$~IH!Z4;Ri z87*IGozq<&d2yMa#mpVy!kKF)O#@-O*YwG6!EWED<$WNfA)I& z%M;d|oV@d!*Ao@aSreCiyecTT*?N7{!b_#$r}pp`mSh zzRqsbExe|>HmiS+k%)cEv&PhKq0bh#Pm$mX-P}L5+{^fw*nx>p)g?0cw^p^eTtB}u zo9W2yhgRz%Pdu2GI&)d&i$}{|Pgm%9L94`*-_y?Alj8*ItJ2am9`uckJHA z&z~p1{kCp?`5TUgq#lO}4jp$)^tl8BX9gy}+NIZ-;H7e=$1!A5Q~TSeqWXoimOVBR z{&nvCu653if)_Px^PijK{nAxBrmCEvT8<8-Ho3rOHNLn zEaE7{aQ65|RyqB$>lPo5mWe;h^z&5p^l36WdwSdLd-v|f#N5|A?X+b3_U-L|PZ!oR zw9R-SzW?8z_to!q3#8i1#ed)Y$3*`4$?_LBns-TD;qG)WTC*r6Z`Z0O7T3hEv_zq+ zH+RJCUKkwco*Aj)!~XvFh9hswe*b&+>)E$e-}wyo?%uz5_r6~r-p)V%_hE&N(QX#4 zQ;%h)EpcqLU8bql%aj?Frj+#D=m>pu6_|J$7I!kShxPp^G->bzsu zmv?t}-#-2J-$CUjpT}G3cS`Jf>apJ6U+B5-{qqd=|1R4L2EMO}nxwpMf4#Xy-Jh4o z1(+=FmF*2K)S8r1Q+dzg*^-zeeuZ%-cJF&%zQeL-GJ^{1```QC^M7tSpsC{P(BRMC zU;pE<{EWYU-^y;DeaupI>%TV^`>Wnh6Zy4}{endEO{)_dRW_X4s$un9W_r)nTf(P$ z4cHk@%nCZytt_C}rNiTAVpVoK(b_k-g46Jr_knYjO0Q~`PYRfL;dkHXdAwU*o9*`f zepbJ})}rRm$K(8V6XcQ$jE_ulOMHI7IDW_V#~;6b4GlG$&AYp=Ln3m~k|_*9U7Buz zsSPs@oI3s>#(f3Hi!&w+tD1iQbqt+bJWX26`BvWc&L&wk*$M9DrKK+$r&Z2rf6Tq_ zlaS+q>Uql6|X9kUU

    W9S@J{QFcr*E2oyqy# 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 diff --git a/lib/tree-2.81/doc/tree.tex b/lib/tree-2.81/doc/tree.tex deleted file mode 100644 index 4ba233d..0000000 --- a/lib/tree-2.81/doc/tree.tex +++ /dev/null @@ -1,388 +0,0 @@ -\documentclass[11pt]{kasper} -% -% If you do not have 'kasper.cls', see -% http://www.damtp.cam.ac.uk/user/kp229/texstuff . - -\usepackage{makeidx} -\usepackage{verbatim} -\usepackage{relsize} -\makeindex -%\newcommand{\toindex}[1]{#1\index{#1}} - -\newcommand{\member}[1]{{\tt #1}\index{#1}} -%\newcommand{\member}[1]{{\tt #1}} - -\def\mystrut{\vbox to 8.5pt{}\vtop to 3.5pt{}} -\def\V{\hskip10pt\vrule\hskip10pt} -\def\T{\hskip10pt\vrule\vrule height2.5pt depth -2.1pt width 10pt} -\def\L{\hskip10pt\vrule height 8.5pt depth -2.1pt - \vrule height2.5pt depth -2.1pt width 10pt} -\def\N{\hskip10pt\phantom{\vrule}\hskip10pt} -\def\hw{\hskip-1000pt plus 1fil} - -% to test: insert before end of subtree - -\begin{document} -\title{{\tt tree.hh} documentation} -\author{Kasper Peeters} -\email{kasper.peeters@gmail.com} -\maketitle -\begin{abstract} -The {\tt tree.hh} library for C++ provides an STL-like container class -for n-ary trees, templated over the data stored at the nodes. Various -types of iterators are provided (post-order, pre-order, and -others). Where possible the access methods are compatible with the STL -or alternative algorithms are available. The library is available -under the terms of the GNU General Public License.\\[3ex] -Code and examples available at: {\tt http://tree.phi-sci.com/}\\[3ex] -{\bf This documentation is not yet entirely complete. Refer to the {\tt -tree.hh} header file for a full list of member functions.} -\end{abstract} -\vfill -\maketoc -\eject - -\begin{sectionunit} -\title{Overview} -\maketitle -\begin{sectionunit} -\title{The container class} -\maketitle -The tree class of {\tt tree.hh} is a templated container class in the -spirit of the STL. It organises data in the form of a so-called n-ary -tree. This is a tree in which every node is connected to an arbitrary -number of child nodes. Nodes at the same level of the tree are called -``siblings'', while nodes that are below a given node are called its -``children''. At the top of the tree, there is a set of nodes which -are characterised by the fact that they do not have any parents. The -collection of these nodes is called the ``head'' of the tree. See -figure~\ref{f:overview} for a pictorial illustration of this -structure (90 degrees rotated for convenience). -\begin{figure}[th] -\begin{center} -\includegraphics[width=.5\textwidth]{treefig} -\caption{Overview of the tree structure. The elements at the top of -the tree (here displayed at the left for convenience) are in the -``head'' (there can be more than one such element). Every node is -linked to its children using the ``first child'' and ``last child'' -links. In addition, all nodes on a given level are doubly-linked using -the ``previous sibling'' and ``next sibling'' links. The ``depth'' of -a given node refers to the horizontal distance from the head nodes.} -\label{f:overview} -\end{center} -\end{figure} - -The tree class is templated over the data objects stored at the nodes; -just like you can have a {\tt vector} you can now have a -{\tt tree}. Many STL algorithms work on this data structure, -and where necessary alternatives have been provided. -\medskip - -\end{sectionunit} -\begin{sectionunit} -\title{Iterators} -\maketitle - -The essential difference between a container with the structure of a -tree and the STL containers is that the latter are ``linear''. While -the STL containers thus only have essentially one way in which one can -iterate over their elements, this is not true for trees. The {\tt -tree.hh} library provides (at present) four different iteration -schemes. To describe them, consider the following tree: -\begin{equation*} -\vcenter{\offinterlineskip -\halign{&#\mystrut\hfil\cr - root \hw\cr - \T A \cr - \V \T B \cr - \V \L C \cr - \L D \cr - \N \T E \cr - \N \L F \cr}} -\end{equation*} -The three iteration types and the resulting order in which nodes are -visited are tabulated below: -\begin{center} -\begin{tabular}{llll} -pre-order (default) & ``element before children'' & -\member{pre\_order\_iterator} & root A B C D E F \\ -post-order & ``element after children'' & -\member{post\_order\_iterator} & B C A E F D root \\ -breadth-first & & -\member{breadth\_first\_iterator} & root A D B C E F \\ -sibling & ``only siblings'' & -\member{sibling\_iterator} & (for ex.) A D \\ -fixed-depth & & -\member{fixed\_depth\_iterator} & (for ex.) A D \\ -leaf & & -\member{leaf\_iterator} & B C E F -\end{tabular} -\end{center} -The pre-order ones are the default iterators, and therefore also known -under the name of {\tt iterator}. Sibling iterators and fixed-depth -iterators iterate only over the nodes at a given depth of the -tree. The former restrict themselves to the child nodes of one given -node, while the latter iterates over all child nodes at the given -depth. Finally, leaf iterators iterate over all leafs (bottom-most) -nodes of the tree. - -There are copy constructors that will convert iterators of the -various types into each other. The post- and pre-order iterators are -both also known as ``depth-first'', in contrast to the -``breadth-first'' iterator. - -The begin and end iterators of a tree can be obtained using -\member{begin()} and \member{end()} (for pre-order iterators) or -alternatively \member{begin\_post()} and \member{end\_post()} (for -post-order iterators) and \member{begin\_leaf()} and -\member{end\_leaf()} (for leaf iterators). Similarly, the begin and -end sibling iterators can be obtained by calling -\member{begin(iterator)} and \member{end(iterator)}. The range of -children of a given node can also be obtained directly from an -iterator, by using the {\tt iterator::begin()} and {\tt -iterator::end()} member functions. - -If you want to (temporarily) make an iterator not go into the child -subtree, call the member function \member{skip\_children}. This will only -keep effect for a single increment or decrement of the -iterator. Finally, whether or not an iterator is actually pointing at -a node (i.e.~is not an ``end'' iterator) can be tested using the -\member{is\_valid(iterator)} member of the tree class. - -\end{sectionunit} -\end{sectionunit} - -\begin{sectionunit} -\title{Basic operations} -\maketitle -\begin{description} -\item[Initialising] There are two nontrivial constructors. One which takes -a single node element as argument. It constructs a tree with this node -begin the sole node in the head (in other words, it is a combination -of a trivial constructor together with a \member{set\_head} call). -The other non-trivial constructor takes an iterator, and copies the -subtree starting at that node into the newly created tree (useful for -constructing new tree objects given by subtrees of existing trees). - -\item[Tree traversal] Besides the \member{operator++} and -\member{operator--} members for step-wise traversal through the tree, -it is also possible to use the \member{operator+=} and \member{operator-=} -member functions to make more than one step at the same time (though -these are linear time, not amortized constant). The result of stepping -beyond the end of the tree or stepping beyond the end of a sibling -range (for sibling iterators) is undefined. - -The parent of a given node can be reached by calling the \member{parent} -member of the tree object, giving it an iterator pointing to the node. - -If you know the number of children of a given node, you can get direct -access to the $n$th child by using the \member{child} member -function. Note that the value of the index is not checked and should -therefore always be valid. - -\item[Appending child nodes] Nodes can be added as children of a given -node using the \member{append\_child} member function. - -\item[Inserting nodes] Nodes can be inserted at the same depth as a -given other node using the \member{insert} and \member{insert\_after} -members functions. This is also how you insert the first node into a -tree. -\end{description} -\end{sectionunit} - -\begin{sectionunit} -\title{Other algorithms} -\maketitle -\begin{sectionunit} -\title{Non-mutating algorithms} -\maketitle -\begin{description} -\item[Counting nodes] The total number of nodes of a tree can be -obtained using the \member{size} member function, while the number of -children of a given node can be obtained with a call to -\member{number\_of\_children(iterator)}. Similarly, the number of -nodes at a given depth (the number of siblings of a given node) can be -obtained using the \member{number\_of\_siblings} member function. -\item[Determining depth] The \member{depth()} member function returns the -distance of a node to the root. -\item[Accessing siblings by their index] See the next item. -\item[Determining index in a sibling range] In order to determine the -index of a node in the range of siblings to which it belongs, use the -\member{index(sibling\_iterator)} member function. The first sibling node -has index 0. The reverse of this function (obtaining a sibling node -given its index in the range of siblings) is called -\member{child(const iterator\_base\&, unsigned int)}. -\item[Comparing trees] While the STL \member{equal} algorithm can be used -to compare the values of the nodes in two different trees, it does not -know about the structure of the tree. If you want the comparison to -take this into account, use the \member{equal(iterator, iterator, -iterator, BinaryPredicate)} call of the tree class. As an addition to -the STL algorithm, the length of the first range does not have to be -equal to the length of the range pointed to by the second iterator. - -There is also an \member{equal\_subtree} algorithm which takes only -two iterators, pointing to the (single-node) heads of two -subtrees. -\end{description} -\end{sectionunit} - -\begin{sectionunit} -\title{Mutating algorithms} -\maketitle -\begin{description} -\item[Erasing nodes and subtrees] In order to remove a node including -its children from the tree, use the \member{erase(iterator)} call. If you -just want to erase the children, but not the node itself, use the -\member{erase\_children(iterator)} call. - -\item[Replacing individual nodes or subtrees] - -\item[Flattening subtrees] The procedure of moving all children of a -given node to be siblings of that node is called ``flattening''; it -acts as -\begin{equation*} -\vcenter{\offinterlineskip -\halign{&#\mystrut\hfil\cr - apple \hw\cr - \T banana\cr - \V \T pear \cr - \V \T strawberry \cr - \V \L cherry \cr - \L grape\cr}}\quad\rightarrow\quad -\vcenter{\offinterlineskip -\halign{&#\mystrut\hfil\cr - apple \hw\cr - \T banana\cr - \T pear \cr - \T strawberry \cr - \T cherry \cr - \L grape\cr}} -\end{equation*} -% \begin{screen} -% apple apple -% banana banana -% pear -> pear -% strawberry strawberry -% cherry cherry -% grape grape -% \end{screen} -when the tree is flattened at the ``banana'' node. - -\item[Moving or exchanging subtrees] Simple exchange of one sibling node with the -next one is done through the member function \member{swap(sibling\_iterator)}. The -iterator remains valid and remains pointing to the moved subtree. - -More complicated move operations are the \member{move\_ontop}, -\member{move\_before} and \member{move\_after} ones. These all take -two iterators, a source and a target. The member -\member{move\_ontop(target, source)} removes the `target' node and -all its children, and replaces it with the `source' node and its -children. The `source' subtree is removed from its original location. -The other two move members do a similar thing, differing only in the -node which is to be replaced. - -\item[Extracting subtrees] You can create a new tree object -filled with the data of a subtree of the original tree. This is -analogous to the extraction of a substring of a string. The relevant -member function is \member{subtree(sibling\_iterator, -sibling\_iterator)} which takes a range of siblings as argument. -There is also a slight variation of this member, which does not return -a tree object but instead populates one that is passed as an argument -(useful if you want to call this on a tree object subclassed from -{\tt tree}. - -\item[Sorting] The standard STL sort algorithm is not very useful for -trees, because it only exchanges values, not nodes. Applying it to a -tree would mean that the structure of the tree remains unmodified, -only node values get moved around (not their subtrees). - -Therefore, the {\tt tree} class has its own sort member. It comes in -two forms, just like the STL sort, namely -\begin{screen} -void sort(sibling_iterator from, sibling_iterator to, bool deep=false); - -template -void sort(sibling_iterator from, sibling_iterator to, - StrictWeakOrdering comp, bool deep=false); -\end{screen} -The result of a call to either of these is that the nodes in the range -described by the two iterators get sorted. If the boolean {\tt deep} -is true, the subtrees of all these nodes will get sorted as well (and -so one can sort the entire tree in one call). As in the STL, you can -use the second form of this function to pass your own comparison -class. - -If the nodes to which the two iterators point are not in the same -sibling range (i.e.~not at the same depth in the tree), the result is undefined. - -\item[Merging] One way in which one might think of indicating the -position where new nodes are to be inserted, is to give the path that -leads to the insertion point. For instance, given the tree -\begin{equation*} -\vcenter{\offinterlineskip -\halign{&#\mystrut\hfil\cr - apple \hw\cr - \T banana\cr - \V \T pear \cr - \V \T strawberry \cr - \V \L cherry \cr - \L grape\cr}} -\end{equation*} -one could imagine using the sub-tree -\begin{equation*} -\vcenter{\offinterlineskip -\halign{&#\mystrut\hfil\cr - apple \hw\cr - \L banana\cr - \N \T coconut \cr - \N \L raspberry \cr}} -\end{equation*} -to indicate that the nodes ``coconut'' and ``raspberry'' are to be -inserted as new children of the ``banana'' node. In {\tt tree.hh} this -process is called \emph{tree merging}. It can do the simple addition -of children as above, but actually handles the generic case too: as -an example consider the merge -\begin{equation*} -\text{\tt merge}\left[ -\vcenter{\offinterlineskip -\halign{&#\mystrut\hfil\cr - apple \hw\cr - \T banana\cr - \V \T pear \cr - \V \T strawberry \cr - \V \L cherry \cr - \T grape\cr - blueberry \cr}}\quad, \quad -\vcenter{\offinterlineskip -\halign{&#\mystrut\hfil\cr - apple \hw\cr - \T banana\cr - \V \T coconut \cr - \V \L raspberry \cr - \T tangerine \cr - \V \L plum\cr - blueberry \cr - \N \L orange \cr}}\right]\quad\rightarrow\quad -\vcenter{\offinterlineskip -\halign{&#\mystrut\hfil\cr - apple \hw\cr - \T banana\cr - \V \T pear\cr - \V \T strawberry\cr - \V \T cherry\cr - \V \T coconut \cr - \V \L raspberry \cr - \T grape\cr - \T tangerine \cr - \V \L plum\cr - blueberry \cr - \N \L orange \cr}} -\end{equation*} -As is clear from the above, the arguments to \member{merge} are two -sibling ranges. -\end{description} -\end{sectionunit} -\end{sectionunit} - -\printindex -\end{document} diff --git a/lib/tree-2.81/doc/tree2.png b/lib/tree-2.81/doc/tree2.png deleted file mode 100644 index 9dd31b0393823981db696ec5bc357d169698ad47..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 144745 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

      !E^77W4I(m8Xad&n9YpY+bxE`q= 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°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�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 -stream -xœ­UKÓ0¾ûWøÖ©YÏø}]‰—…H‡¥MPZØí -øùŒ_‰³©©h¤zÆóøÆó°E\„/¯›{b·<±{"?±°{ Ô(øÀ$ª9ˆŽ4Ž l´AjÁAh n Nb‘N ‰t°Jt—%Ê™Æ>´vÄÍ$+œvjô—èŽðž©Fó_ŃÕSDR“ÖÇx² ·qÒØþíqƒŽ‚X’²I3‚_k`?siø*Û6:£*=46†c‰Œl%!HÀ™ðM¬èpzÀ$s>0Ræ„Ô•CKPècáÀ΋u[*5! ˜Æ¤&˺ÿËc·4±@NÕ¥´¶.e’ΪipQT]ˆh«.̲ÂI1N¦Ï NÉŠHŸœ 'Í׃s…ƒip.KÙ¤Y ÎrÓÅUB(!c7éÐå(]Èb‘IccûX?§ƒÍÙæy ²«ª —VšuA®t°43褙pÐ 7áYÂA/Õœ>—™x¿çÔ Gýwj VšUj®uðê¶•tES#ë¥HSw¥HŸèöޝo^6~×Ò+ìiƒÜµ{–gàkÑú¡R@˜Š·vÓí¶oÚo è¼Ý²›ã÷í.ìXäíûÌ®ÆÕ‹z‘ΈÂ&ÃÝï~ê¿ýñ1º”$ Ê?žw?GÁŠÑ —ög«ê[Cû€¤³ïŸO/|ÓõC |M× IÄ95_ûÙ©Œ-àék´¡Në)µ‡w-¿§^øöÌÐcendstream -endobj -7 0 obj -588 -endobj -10 0 obj -<> -endobj -11 0 obj -<> -endobj -5 0 obj -<> -/Contents 6 0 R ->> -endobj -3 0 obj -<< /Type /Pages /Kids [ -5 0 R -] /Count 1 ->> -endobj -1 0 obj -<> -endobj -4 0 obj -<> -endobj -9 0 obj -<> -endobj -8 0 obj -<> -endobj -2 0 obj -<>endobj -xref -0 12 -0000000000 65535 f -0000000971 00000 n -0000001222 00000 n -0000000912 00000 n -0000001019 00000 n -0000000752 00000 n -0000000015 00000 n -0000000673 00000 n -0000001161 00000 n -0000001088 00000 n -0000000692 00000 n -0000000722 00000 n -trailer -<< /Size 12 /Root 1 0 R /Info 2 0 R ->> -startxref -1274 -%%EOF diff --git a/lib/tree-2.81/src/.gitignore b/lib/tree-2.81/src/.gitignore deleted file mode 100644 index f0ef4c3..0000000 --- a/lib/tree-2.81/src/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -*.o -*.res -test1 diff --git a/lib/tree-2.81/src/Makefile b/lib/tree-2.81/src/Makefile deleted file mode 100644 index 7d1aba7..0000000 --- a/lib/tree-2.81/src/Makefile +++ /dev/null @@ -1,14 +0,0 @@ - -%.o: %.cc - g++ -c -I. $^ - -test1: test1.o - g++ -o test1 test1.o - -run_tests: test1 test1.req - ./test1 > test1.res - @diff test1.res test1.req - @echo "*** All tests OK ***" - -clean: - rm -f *.o *~ *.res diff --git a/lib/tree-2.81/src/simple tree.hpp b/lib/tree-2.81/src/simple tree.hpp deleted file mode 100644 index 5c7b54c..0000000 --- a/lib/tree-2.81/src/simple tree.hpp +++ /dev/null @@ -1,1560 +0,0 @@ -// Another STL-like templated tree class. -// Revised by: Xinlin Cao(xinlincao@gmail.com) -// Revised from Kasper Peeters's implementation.(http://www.aei.mpg.de/~peekas/tree/),Kasper Peeters -//Compared to Kasper's implementation, the modifications are the following: -//# removed sibling iterator -//# added children iterator -//# removed a lot of member functions from tree and iterators -//# changed set_head() to set_root() -//# added root() member function -//# added reparent_roo() member function -//# changed implementation of operator = () -//# changed some member functions about getting iterators -//# tested all member functions -//# removed implicit conversion between different iterators -//# removed depth iterator -//# change some parameters of some functions, such as append_child, isnert_xxx, move_xxx and so on. - -// This version of tree is simpler than old one. It is robust and easy for using and understanding. -// Distributed under the GNU General Public License version 3, - - -/** - -The tree.hh library for C++ provides an STL-like container class -for n-ary trees, templated over the data stored at the -nodes. Various types of iterators are provided (post-order, -pre-order, and others). Where possible the access methods are -compatible with the STL or alternative algorithms are -available. -*/ - -#ifndef tree_hh_ -#define tree_hh_ - -#include -#include -#include -#include -#include -#include -#include - -// HP-style construct/destroy have gone from the standard, -// so here is a copy. - -namespace kp { - - template - void constructor(T1* p, T2& val) - { - new ((void *) p) T1(val); - } - - template - void constructor(T1* p) - { - new ((void *) p) T1; - } - - template - void destructor(T1* p) - { - p->~T1(); - } - -} - -/// A node in the tree, combining links to other nodes as well as the actual data. -template -class tree_node_ { // size: 5*4=20 bytes (on 32 bit arch), can be reduced by 8. -public: - tree_node_ *parent; - tree_node_ *first_child, *last_child; - tree_node_ *prev_sibling, *next_sibling; - T data; -}; // __attribute__((packed)); - -template > > -class tree { -protected: - typedef tree_node_ tree_node; -public: - /// Value of the data stored at a node. - typedef T value_type; - - class iterator_base; - class pre_order_iterator; - class post_order_iterator; - class children_iterator; - class leaf_iterator; - - tree(); - tree(const T&); - tree(const tree&); - ~tree(); - tree& operator=(const tree&); - - /// Base class for iterators, only pointers stored, no traversal logic. -#ifdef __SGI_STL_PORT - class iterator_base : public stlport::bidirectional_iterator { -#else - class iterator_base { -#endif - public: - typedef T value_type; - typedef T* pointer; - typedef T& reference; - typedef size_t size_type; - typedef ptrdiff_t difference_type; - typedef std::bidirectional_iterator_tag iterator_category; - - iterator_base(); - iterator_base(tree_node *); - - T& operator*() const; - T* operator->() const; - - /// Number of children of the node pointed to by the iterator. - unsigned int number_of_children() const; - - children_iterator begin_children_iterator() const; - children_iterator end_children_iterator() const; - - tree_node *node; - }; - - /// Depth-first iterator, first accessing the node, then its children. - class pre_order_iterator : public iterator_base { - public: - pre_order_iterator(); - pre_order_iterator(tree_node *); - - bool operator==(const pre_order_iterator&) const; - bool operator!=(const pre_order_iterator&) const; - pre_order_iterator& operator++(); - pre_order_iterator& operator--(); - pre_order_iterator operator++(int); - pre_order_iterator operator--(int); - pre_order_iterator& operator+=(unsigned int); - pre_order_iterator& operator-=(unsigned int); - }; - - /// Depth-first iterator, first accessing the children, then the node itself. - class post_order_iterator : public iterator_base { - public: - post_order_iterator(); - post_order_iterator(tree_node *); - - bool operator==(const post_order_iterator&) const; - bool operator!=(const post_order_iterator&) const; - post_order_iterator& operator++(); - post_order_iterator& operator--(); - post_order_iterator operator++(int); - post_order_iterator operator--(int); - post_order_iterator& operator+=(unsigned int); - post_order_iterator& operator-=(unsigned int); - - /// Set iterator to the first child as deep as possible down the tree. - void descend_all(); - }; - - /// Breadth-first iterator, using a queue - class breadth_first_queued_iterator : public iterator_base { - public: - breadth_first_queued_iterator(); - breadth_first_queued_iterator(tree_node *); - - bool operator==(const breadth_first_queued_iterator&) const; - bool operator!=(const breadth_first_queued_iterator&) const; - breadth_first_queued_iterator& operator++(); - breadth_first_queued_iterator operator++(int); - breadth_first_queued_iterator& operator+=(unsigned int); - - private: - std::queue traversal_queue; - }; - - /// Iterator which traverses only the nodes which are siblings of each other. - class children_iterator : public iterator_base { - public: - children_iterator(); - children_iterator(tree_node *); - - bool operator==(const children_iterator&) const; - bool operator!=(const children_iterator&) const; - children_iterator& operator++(); - children_iterator& operator--(); - children_iterator operator++(int); - children_iterator operator--(int); - children_iterator& operator+=(unsigned int); - children_iterator& operator-=(unsigned int); - - tree_node *range_first() const; - tree_node *range_last() const; - tree_node *parent_; - private: - void set_parent_(); - }; - - /// Iterator which traverses only the leaves. - class leaf_iterator : public iterator_base { - public: - leaf_iterator(); - leaf_iterator(tree_node *, tree_node *top); - - bool operator==(const leaf_iterator&) const; - bool operator!=(const leaf_iterator&) const; - leaf_iterator& operator++(); - leaf_iterator& operator--(); - leaf_iterator operator++(int); - leaf_iterator operator--(int); - leaf_iterator& operator+=(unsigned int); - leaf_iterator& operator-=(unsigned int); - private: - tree_node *top_node; - }; - - /// Return iterator to the beginning of the tree. - inline pre_order_iterator root() const; - - /// Return iterator to the beginning of the tree. - inline pre_order_iterator begin_pre_order_iterator(const iterator_base&) const; - /// Return iterator to the end of the tree. - inline pre_order_iterator end_pre_order_iterator(const iterator_base&) const; - /// Return post-order iterator to the beginning of the tree. - post_order_iterator begin_post_order_iterator(const iterator_base&) const; - /// Return post-order end iterator of the tree. - post_order_iterator end_post_order_iterator(const iterator_base&) const; - - - /// Return breadth-first iterator based on a iterator. - breadth_first_queued_iterator begin_breadth_first_iterator(const iterator_base&) const; - /// Return breadth-first end iterator. - breadth_first_queued_iterator end_breadth_first_iterator(const iterator_base&) const; - - - /// Return children iterator to the first child of given node. - children_iterator begin_children_iterator(const iterator_base&) const; - /// Return children end iterator for children of given node. - children_iterator end_children_iterator(const iterator_base&) const; - - /// Return leaf iterator to the first leaf of the subtree at the given node. - leaf_iterator begin_leaf_iterator(const iterator_base& top) const; - /// Return leaf end iterator for the subtree at the given node. - leaf_iterator end_leaf_iterator(const iterator_base& top) const; - - /// Return iterator to the parent of a node. - pre_order_iterator parent(const iterator_base&); - /// Return iterator to the previous sibling of a node. - pre_order_iterator previous_sibling(const iterator_base&) const; - /// Return iterator to the next sibling of a node. - pre_order_iterator next_sibling(const iterator_base&) const; - - /// Erase all nodes of the tree. - void clear(); - /// Erase element at position pointed to by iterator, return incremented iterator. - template iter erase(iter); - /// Erase all children of the node pointed to by iterator. - void erase_children(const iterator_base&); - - - /// Short-hand to insert_before topmost node in otherwise empty tree. - pre_order_iterator set_root(const T& x); - - /// Insert node as last/first child of node pointed to by position. - pre_order_iterator append_child(const iterator_base& position, const T& x); - pre_order_iterator prepend_child(const iterator_base& position, const T& x); - - /// Insert node as previous sibling of node pointed to by position. - pre_order_iterator insert_before(iterator_base& position, const T& x); - /// Insert node as next sibling of node pointed to by position. - pre_order_iterator insert_after(const iterator_base& position, const T& x); - - /// set the data on position to be x. - pre_order_iterator modify_data(const iterator_base& position, const T& x); - - ///set X as the new head of the tree, the old head will be a child of new head. - pre_order_iterator reparent_root(const T& x); - - /// Move 'source' node (plus its children) to become the next sibling of 'target'. - pre_order_iterator move_after(const iterator_base& target, const iterator_base& source); - /// Move 'source' node (plus its children) to become the previous sibling of 'target'. - pre_order_iterator move_before(const iterator_base& target, const iterator_base& source); - - /// Count the total number of nodes. - size_t size() const; - /// Count the total number of nodes below the indicated node (plus one). - size_t size(const iterator_base&) const; - /// Check if tree is empty. - bool empty() const; - /// Compute the depth to the root or to a fixed other iterator. - int depth(const iterator_base&); - int depth(const iterator_base&, const iterator_base&); - /// Determine the maximal depth of the tree. An empty tree has max_depth=-1. - int max_depth() const; - /// Determine the maximal depth of the tree with top node at the given position. - int max_depth(const iterator_base&) const; - /// Count the number of children of node at position. - unsigned int number_of_children(const iterator_base&); - /// Determine whether the iterator is an 'end' iterator and thus not actually pointing to a node. - bool is_valid(const iterator_base&) const; - - /// Comparator class for iterators (compares pointer values; why doesn't this work automatically?) - class iterator_base_less { - public: - bool operator()(const typename tree::iterator_base& one, - const typename tree::iterator_base& two) const - { - return one.node < two.node; - } - }; - tree_node *head, *feet; // head/feet are always dummy; if an iterator points to them it is invalid -private: - tree_node_allocator alloc_; - void head_initialise_(); - //copy the data from other.src to this.dst - void construct_children_nodes_helper_(const pre_order_iterator& dst, const tree& other, const pre_order_iterator& src); - void copy_(const tree& other); - - /// Comparator class for two nodes of a tree (used for sorting and searching). - template - class compare_nodes { - public: - compare_nodes(StrictWeakOrdering comp) : comp_(comp) {}; - - bool operator()(const tree_node *a, const tree_node *b) - { - return comp_(a->data, b->data); - } - private: - StrictWeakOrdering comp_; - }; -}; - - - -// Tree - -template -tree::tree() -{ - head_initialise_(); -} - -template -tree::tree(const T& x) -{ - head_initialise_(); - set_root(x); -} - -template -tree::~tree() -{ - clear(); - alloc_.deallocate(head,1); - alloc_.deallocate(feet,1); -} - -template -void tree::head_initialise_() -{ - - head = alloc_.allocate(1,0); // MSVC does not have default second argument - feet = alloc_.allocate(1,0); - - head->parent=0; - head->first_child=0; - head->last_child=0; - head->prev_sibling=0; //head; - head->next_sibling=feet; //head; - - feet->parent=0; - feet->first_child=0; - feet->last_child=0; - feet->prev_sibling=head; - feet->next_sibling=0; -} - -template -tree& tree::operator=(const tree& other) -{ - if (this != &other) - { - copy_(other); - } - return (*this); -} - -template -tree::tree(const tree& other) -{ - head_initialise_(); - copy_(other); -} - -template -void tree::construct_children_nodes_helper_(const pre_order_iterator& dst, const tree& other, const pre_order_iterator& src) -{ - - children_iterator childIter = other.begin_children_iterator(src); - for(; childIter != other.end_children_iterator(other.root()); ++childIter) - { - pre_order_iterator new_dst = append_child(dst,(*childIter)); - pre_order_iterator new_src = other.begin_pre_order_iterator(childIter); - construct_children_nodes_helper_(new_dst, other, new_src); - } -} - - -template -void tree::copy_(const tree& other) -{ - //check self - if (this == &other) - { - assert(0); - return; - } - clear(); - - - set_root(*other.root()); - construct_children_nodes_helper_(this->root(), other, other.root()); -} - -template -void tree::clear() -{ - if(head) - { - while(head->next_sibling!=feet) - { - erase(pre_order_iterator(head->next_sibling)); - } - } -} - -template -void tree::erase_children(const iterator_base& it) -{ - // std::cout << "erase_children " << it.node << std::endl; - if(it.node==0) return; - - tree_node *cur=it.node->first_child; - tree_node *prev=0; - - while(cur!=0) { - prev=cur; - cur=cur->next_sibling; - erase_children(pre_order_iterator(prev)); - kp::destructor(&prev->data); - alloc_.deallocate(prev,1); - } - it.node->first_child=0; - it.node->last_child=0; - // std::cout << "exit" << std::endl; -} - -template -template -iter tree::erase(iter it) -{ -#define CXL_IMP 0 -#if CXL_IMP - tree_node *cur=it.node; - assert(cur!=head); - iter ret=it; - ++ret; - - - children_iterator childIter = this->begin_children_iterator(it); - children_iterator childIterNext; - while(childIter != this->end_children_iterator(it)) - { - childIterNext = ++childIter; - erase(childIter); - childIter = childIterNext; - } - - - // - // - if(cur->prev_sibling==0) { - cur->parent->first_child=cur->next_sibling; - } - else { - cur->prev_sibling->next_sibling=cur->next_sibling; - } - - if(cur->next_sibling==0) { - cur->parent->last_child=cur->prev_sibling; - } - else { - cur->next_sibling->prev_sibling=cur->prev_sibling; - } - - kp::destructor(&cur->data); - alloc_.deallocate(cur,1); - return ret; -#else - tree_node *cur=it.node; - assert(cur!=head); - iter ret=it; - ++ret; - - - erase_children(it); - - - // - // - if(cur->prev_sibling==0) { - cur->parent->first_child=cur->next_sibling; - } - else { - cur->prev_sibling->next_sibling=cur->next_sibling; - } - - if(cur->next_sibling==0) { - cur->parent->last_child=cur->prev_sibling; - } - else { - cur->next_sibling->prev_sibling=cur->prev_sibling; - } - - kp::destructor(&cur->data); - alloc_.deallocate(cur,1); - return ret; -#endif -} - -template -typename tree::pre_order_iterator tree::root() const -{ - - return pre_order_iterator(head->next_sibling); -} - - -template -typename tree::pre_order_iterator tree::begin_pre_order_iterator(const iterator_base& pos) const -{ - - return pre_order_iterator(pos.node); -} - -template -typename tree::pre_order_iterator tree::end_pre_order_iterator(const iterator_base& pos) const -{ - - return pre_order_iterator(pos.node->next_sibling); -} - - -template -typename tree::breadth_first_queued_iterator tree::begin_breadth_first_iterator(const iterator_base& pos) const -{ - - return breadth_first_queued_iterator(pos.node); -} - -template -typename tree::breadth_first_queued_iterator tree::end_breadth_first_iterator(const iterator_base& pos) const -{ - - return breadth_first_queued_iterator(); -} - - -template -typename tree::post_order_iterator tree::begin_post_order_iterator(const iterator_base& pos) const -{ - - tree_node *tmp=pos.node; - if(tmp!=feet) { - while(tmp->first_child) - tmp=tmp->first_child; - } - return post_order_iterator(tmp); -} - -template -typename tree::post_order_iterator tree::end_post_order_iterator(const iterator_base& pos) const -{ - - return post_order_iterator(pos.node->next_sibling); -} - - -template -typename tree::children_iterator tree::begin_children_iterator(const iterator_base& pos) const -{ - - assert(pos.node!=0); - if(pos.node->first_child==0) { - return end_children_iterator(pos); - } - return pos.node->first_child; -} - -template -typename tree::children_iterator tree::end_children_iterator(const iterator_base& pos) const -{ - - - children_iterator ret(0); - ret.parent_=pos.node; - return ret; -} - -template -typename tree::leaf_iterator tree::begin_leaf_iterator(const iterator_base& top) const -{ - - tree_node *tmp=top.node; - while(tmp->first_child) - tmp=tmp->first_child; - return leaf_iterator(tmp, top.node); -} - -template -typename tree::leaf_iterator tree::end_leaf_iterator(const iterator_base& top) const -{ - - return leaf_iterator(top.node, top.node); -} - -template -typename tree::pre_order_iterator tree::parent(const iterator_base& position) -{ - - assert(position.node!=0); - return pre_order_iterator(position.node->parent); -} - -template -typename tree::pre_order_iterator tree::previous_sibling(const iterator_base& position) const -{ - - assert(position.node!=0); - pre_order_iterator ret(position); - ret.node=position.node->prev_sibling; - return ret; -} - -template -typename tree::pre_order_iterator tree::next_sibling(const iterator_base& position) const -{ - - assert(position.node!=0); - pre_order_iterator ret(position); - ret.node=position.node->next_sibling; - return ret; -} - -template -typename tree::pre_order_iterator tree::append_child(const iterator_base& position, const T& x) -{ - // If your program fails here you probably used 'append_child' to add the top - // node to an empty tree. From version 1.45 the top element should be added - // using 'insert_before'. See the documentation for further information, and sorry about - // the API change. - assert(position.node!=head); - assert(position.node); - - tree_node* tmp = alloc_.allocate(1,0); - kp::constructor(&tmp->data, x); - tmp->first_child=0; - tmp->last_child=0; - - tmp->parent=position.node; - if(position.node->last_child!=0) { - position.node->last_child->next_sibling=tmp; - } - else { - position.node->first_child=tmp; - } - tmp->prev_sibling=position.node->last_child; - position.node->last_child=tmp; - tmp->next_sibling=0; - return pre_order_iterator(tmp); -} - -template -typename tree::pre_order_iterator tree::prepend_child(const iterator_base& position, const T& x) -{ - assert(position.node!=head); - assert(position.node); - - tree_node* tmp = alloc_.allocate(1,0); - kp::constructor(&tmp->data, x); - tmp->first_child=0; - tmp->last_child=0; - - tmp->parent=position.node; - if(position.node->first_child!=0) { - position.node->first_child->prev_sibling=tmp; - } - else { - position.node->last_child=tmp; - } - tmp->next_sibling=position.node->first_child; - position.node->first_child=tmp; - tmp->prev_sibling=0; - return pre_order_iterator(tmp); -} - - -template -typename tree::pre_order_iterator tree::set_root(const T& x) -{ - assert(head->next_sibling==feet); - - return insert_before(pre_order_iterator(feet), x); -} - -template -typename tree::pre_order_iterator tree::insert_before(iterator_base& position, const T& x) -{ - if(position.node==0) { - position.node=feet; // Backward compatibility: when calling insert_before on a null node, - // insert_before before the feet. - } - tree_node* tmp = alloc_.allocate(1,0); - kp::constructor(&tmp->data, x); - tmp->first_child=0; - tmp->last_child=0; - - tmp->parent=position.node->parent; - tmp->next_sibling=position.node; - tmp->prev_sibling=position.node->prev_sibling; - position.node->prev_sibling=tmp; - - if(tmp->prev_sibling==0) { - if(tmp->parent) // when inserting nodes at the head, there is no parent - tmp->parent->first_child=tmp; - } - else - { - tmp->prev_sibling->next_sibling=tmp; - } - return pre_order_iterator(tmp); -} - - -template -typename tree::pre_order_iterator tree::insert_after(const iterator_base& position, const T& x) -{ - tree_node* tmp = alloc_.allocate(1,0); - kp::constructor(&tmp->data, x); - tmp->first_child=0; - tmp->last_child=0; - - tmp->parent=position.node->parent; - tmp->prev_sibling=position.node; - tmp->next_sibling=position.node->next_sibling; - position.node->next_sibling=tmp; - - if(tmp->next_sibling==0) { - if(tmp->parent) // when inserting nodes at the head, there is no parent - tmp->parent->last_child=tmp; - } - else { - tmp->next_sibling->prev_sibling=tmp; - } - return pre_order_iterator(tmp); -} - - -template -typename tree::pre_order_iterator tree::modify_data(const iterator_base& position, const T& x) -{ - kp::destructor(&position.node->data); - kp::constructor(&position.node->data, x); - return position; -} - -///set X as the new head of the tree, the old head will be a child of new head. -template -typename tree::pre_order_iterator tree::reparent_root(const T& x) -{ - if(head->next_sibling == feet) - { - return this->set_root(x); - } - else - { - //remember the old head - tree_node *old_head_node = head->next_sibling; - - //create a new head - insert_before(pre_order_iterator(feet), x); - - //change the tree head - tree_node *new_head_node = head->next_sibling->next_sibling; - head->next_sibling = new_head_node; - - //change the new head - new_head_node->first_child = old_head_node; - new_head_node->last_child = old_head_node; - new_head_node->next_sibling = feet; - new_head_node->prev_sibling = head; - - //change the feet - feet->prev_sibling = new_head_node; - - //change the old head - old_head_node->next_sibling = 0; - old_head_node->prev_sibling = 0; - old_head_node->parent = new_head_node; - - return begin_pre_order_iterator(root()); - } -} - -template -typename tree::pre_order_iterator tree::move_after(const iterator_base& target, const iterator_base& source) -{ - tree_node *dst=target.node; - tree_node *src=source.node; - assert(dst); - assert(src); - - if(dst==src) return this->begin_pre_order_iterator(source); - if(dst->next_sibling) - if(dst->next_sibling==src) // already in the right spot - return this->begin_pre_order_iterator(source); - - // take src out of the tree - if(src->prev_sibling!=0) src->prev_sibling->next_sibling=src->next_sibling; - else src->parent->first_child=src->next_sibling; - if(src->next_sibling!=0) src->next_sibling->prev_sibling=src->prev_sibling; - else src->parent->last_child=src->prev_sibling; - - // connect it to the new point - if(dst->next_sibling!=0) dst->next_sibling->prev_sibling=src; - else dst->parent->last_child=src; - src->next_sibling=dst->next_sibling; - dst->next_sibling=src; - src->prev_sibling=dst; - src->parent=dst->parent; - return pre_order_iterator(src); -} - -template -typename tree::pre_order_iterator tree::move_before(const iterator_base& target, const iterator_base& source) -{ - tree_node *dst=target.node; - tree_node *src=source.node; - assert(dst); - assert(src); - - if(dst==src) return this->begin_pre_order_iterator(source); - if(dst->prev_sibling) - if(dst->prev_sibling==src) // already in the right spot - return this->begin_pre_order_iterator(source); - - // take src out of the tree - if(src->prev_sibling!=0) src->prev_sibling->next_sibling=src->next_sibling; - else src->parent->first_child=src->next_sibling; - if(src->next_sibling!=0) src->next_sibling->prev_sibling=src->prev_sibling; - else src->parent->last_child=src->prev_sibling; - - // connect it to the new point - if(dst->prev_sibling!=0) dst->prev_sibling->next_sibling=src; - else dst->parent->first_child=src; - src->prev_sibling=dst->prev_sibling; - dst->prev_sibling=src; - src->next_sibling=dst; - src->parent=dst->parent; - return pre_order_iterator(src); -} - - -template -size_t tree::size() const -{ - size_t i=0; - pre_order_iterator it=begin_pre_order_iterator(), eit=end_pre_order_iterator(); - while(it!=eit) { - ++i; - ++it; - } - return i; -} - -template -size_t tree::size(const iterator_base& top) const -{ - size_t i=0; - pre_order_iterator it=top, eit=top; - ++eit; - while(it!=eit) { - ++i; - ++it; - } - return i; -} - -template -bool tree::empty() const -{ - pre_order_iterator it=begin_pre_order_iterator(), eit=end_pre_order_iterator(); - return (it==eit); -} - -template -int tree::depth(const iterator_base& it) -{ - tree_node* pos=it.node; - assert(pos!=0); - int ret=0; - while(pos->parent!=0) { - pos=pos->parent; - ++ret; - } - return ret; -} - -template -int tree::depth(const iterator_base& it, const iterator_base& root) -{ - tree_node* pos=it.node; - assert(pos!=0); - int ret=0; - while(pos->parent!=0 && pos!=root.node) { - pos=pos->parent; - ++ret; - } - return ret; -} - -template -int tree::max_depth() const -{ - int maxd=-1; - for(tree_node *it = head->next_sibling; it!=feet; it=it->next_sibling) - { - - maxd=std::max(maxd, max_depth(it)); - } - - return maxd; -} - - -template -int tree::max_depth(const iterator_base& pos) const -{ - - tree_node *tmp=pos.node; - - if(tmp==0 || tmp==head || tmp==feet) return -1; - - int curdepth=0, maxdepth=0; - while(true) { // try to walk the bottom of the tree - while(tmp->first_child==0) - { - if(tmp==pos.node) return maxdepth; - if(tmp->next_sibling==0) - { - // try to walk up and then right again - do { - tmp=tmp->parent; - if(tmp==0) return maxdepth; - --curdepth; - } while(tmp->next_sibling==0); - } - - - - if(tmp==pos.node) return maxdepth; - tmp=tmp->next_sibling; - } - - tmp=tmp->first_child; - ++curdepth; - maxdepth=std::max(curdepth, maxdepth); - } -} - -template -unsigned int tree::number_of_children(const iterator_base& it) -{ - tree_node *pos=it.node->first_child; - if(pos==0) return 0; - - unsigned int ret=1; - // while(pos!=it.node->last_child) { - // ++ret; - // pos=pos->next_sibling; - // } - while((pos=pos->next_sibling)) - ++ret; - return ret; -} - -template -bool tree::is_valid(const iterator_base& it) const -{ - if(it.node==0 || it.node==feet || it.node==head) return false; - else return true; -} - -// Iterator base - -template -tree::iterator_base::iterator_base() -: node(0) -{ -} - -template -tree::iterator_base::iterator_base(tree_node *tn) -: node(tn) -{ -} - -template -T& tree::iterator_base::operator*() const -{ - return node->data; -} - -template -T* tree::iterator_base::operator->() const -{ - return &(node->data); -} - -template -bool tree::post_order_iterator::operator!=(const post_order_iterator& other) const -{ - if(other.node!=this->node) return true; - else return false; -} - -template -bool tree::post_order_iterator::operator==(const post_order_iterator& other) const -{ - if(other.node==this->node) return true; - else return false; -} - -template -bool tree::pre_order_iterator::operator!=(const pre_order_iterator& other) const -{ - if(other.node!=this->node) return true; - else return false; -} - -template -bool tree::pre_order_iterator::operator==(const pre_order_iterator& other) const -{ - if(other.node==this->node) return true; - else return false; -} - -template -bool tree::children_iterator::operator!=(const children_iterator& other) const -{ - if(other.node!=this->node) return true; - else return false; -} - -template -bool tree::children_iterator::operator==(const children_iterator& other) const -{ - if(other.node==this->node) return true; - else return false; -} - -template -bool tree::leaf_iterator::operator!=(const leaf_iterator& other) const -{ - if(other.node!=this->node) return true; - else return false; -} - -template -bool tree::leaf_iterator::operator==(const leaf_iterator& other) const -{ - if(other.node==this->node && other.top_node==this->top_node) return true; - else return false; -} - - -template -typename tree::children_iterator tree::iterator_base::begin_children_iterator() const -{ - if(node->first_child==0) - return end_children_iterator(); - - children_iterator ret(node->first_child); - ret.parent_=this->node; - return ret; -} - -template -typename tree::children_iterator tree::iterator_base::end_children_iterator() const -{ - children_iterator ret(0); - ret.parent_=node; - return ret; -} - -template -unsigned int tree::iterator_base::number_of_children() const -{ - tree_node *pos=node->first_child; - if(pos==0) return 0; - - unsigned int ret=1; - while(pos!=node->last_child) { - ++ret; - pos=pos->next_sibling; - } - return ret; -} - - - -// Pre-order iterator - -template -tree::pre_order_iterator::pre_order_iterator() -: iterator_base(0) -{ -} - -template -tree::pre_order_iterator::pre_order_iterator(tree_node *tn) -: iterator_base(tn) -{ -} - -template -typename tree::pre_order_iterator& tree::pre_order_iterator::operator++() -{ - assert(this->node!=0); - if(this->node->first_child != 0) { - this->node=this->node->first_child; - } - else { - while(this->node->next_sibling==0) { - this->node=this->node->parent; - if(this->node==0) - return *this; - } - this->node=this->node->next_sibling; - } - return *this; - - -} - -template -typename tree::pre_order_iterator& tree::pre_order_iterator::operator--() -{ - assert(this->node!=0); - if(this->node->prev_sibling) { - this->node=this->node->prev_sibling; - while(this->node->last_child) - this->node=this->node->last_child; - } - else { - this->node=this->node->parent; - if(this->node==0) - return *this; - } - return *this; - - -} - -template -typename tree::pre_order_iterator tree::pre_order_iterator::operator++(int) -{ - pre_order_iterator copy = *this; - ++(*this); - return copy; -} - -template -typename tree::pre_order_iterator tree::pre_order_iterator::operator--(int) -{ - pre_order_iterator copy = *this; - --(*this); - return copy; -} - -template -typename tree::pre_order_iterator& tree::pre_order_iterator::operator+=(unsigned int num) -{ - while(num>0) { - ++(*this); - --num; - } - return (*this); -} - -template -typename tree::pre_order_iterator& tree::pre_order_iterator::operator-=(unsigned int num) -{ - while(num>0) { - --(*this); - --num; - } - return (*this); -} - - - -// Post-order iterator - -template -tree::post_order_iterator::post_order_iterator() -: iterator_base(0) -{ -} - -template -tree::post_order_iterator::post_order_iterator(tree_node *tn) -: iterator_base(tn) -{ -} - -template -typename tree::post_order_iterator& tree::post_order_iterator::operator++() -{ - assert(this->node!=0); - if(this->node->next_sibling==0) { - this->node=this->node->parent; - } - else { - this->node=this->node->next_sibling; - while(this->node->first_child) - this->node=this->node->first_child; - } - return *this; - -} - -template -typename tree::post_order_iterator& tree::post_order_iterator::operator--() -{ - assert(this->node!=0); - if(this->node->last_child==0) - { - - while(this->node->prev_sibling==0) - { - this->node=this->node->parent; - } - this->node=this->node->prev_sibling; - } - else - { - this->node=this->node->last_child; - } - return *this; - -} - -template -typename tree::post_order_iterator tree::post_order_iterator::operator++(int) -{ - post_order_iterator copy = *this; - ++(*this); - return copy; -} - -template -typename tree::post_order_iterator tree::post_order_iterator::operator--(int) -{ - post_order_iterator copy = *this; - --(*this); - return copy; -} - - -template -typename tree::post_order_iterator& tree::post_order_iterator::operator+=(unsigned int num) -{ - while(num>0) { - ++(*this); - --num; - } - return (*this); -} - -template -typename tree::post_order_iterator& tree::post_order_iterator::operator-=(unsigned int num) -{ - while(num>0) { - --(*this); - --num; - } - return (*this); -} - -template -void tree::post_order_iterator::descend_all() -{ - assert(this->node!=0); - while(this->node->first_child) - this->node=this->node->first_child; -} - - -// Breadth-first iterator - -template -tree::breadth_first_queued_iterator::breadth_first_queued_iterator() -: iterator_base() -{ -} - -template -tree::breadth_first_queued_iterator::breadth_first_queued_iterator(tree_node *tn) -: iterator_base(tn) -{ - traversal_queue.push(tn); -} - -template -bool tree::breadth_first_queued_iterator::operator!=(const breadth_first_queued_iterator& other) const -{ - if(other.node!=this->node) return true; - else return false; -} - -template -bool tree::breadth_first_queued_iterator::operator==(const breadth_first_queued_iterator& other) const -{ - if(other.node==this->node) return true; - else return false; -} - -template -typename tree::breadth_first_queued_iterator& tree::breadth_first_queued_iterator::operator++() -{ - assert(this->node!=0); - - // Add child nodes and pop current node - children_iterator sib=this->begin_children_iterator(); - while(sib!=this->end_children_iterator()) { - traversal_queue.push(sib.node); - ++sib; - } - traversal_queue.pop(); - if(traversal_queue.size()>0) - this->node=traversal_queue.front(); - else - this->node=0; - return (*this); -} - -template -typename tree::breadth_first_queued_iterator tree::breadth_first_queued_iterator::operator++(int) -{ - breadth_first_queued_iterator copy = *this; - ++(*this); - return copy; -} - -template -typename tree::breadth_first_queued_iterator& tree::breadth_first_queued_iterator::operator+=(unsigned int num) -{ - while(num>0) { - ++(*this); - --num; - } - return (*this); -} - -// Sibling iterator - -template -tree::children_iterator::children_iterator() -: iterator_base() -{ - set_parent_(); -} - -template -tree::children_iterator::children_iterator(tree_node *tn) -: iterator_base(tn) -{ - set_parent_(); -} - -template -void tree::children_iterator::set_parent_() -{ - parent_=0; - if(this->node==0) return; - if(this->node->parent!=0) - parent_=this->node->parent; -} - -template -typename tree::children_iterator& tree::children_iterator::operator++() -{ - if(this->node) - this->node=this->node->next_sibling; - return *this; -} - -template -typename tree::children_iterator& tree::children_iterator::operator--() -{ - if(this->node) this->node=this->node->prev_sibling; - else { - assert(parent_); - this->node=parent_->last_child; - } - return *this; -} - -template -typename tree::children_iterator tree::children_iterator::operator++(int) -{ - children_iterator copy = *this; - ++(*this); - return copy; -} - -template -typename tree::children_iterator tree::children_iterator::operator--(int) -{ - children_iterator copy = *this; - --(*this); - return copy; -} - -template -typename tree::children_iterator& tree::children_iterator::operator+=(unsigned int num) -{ - while(num>0) { - ++(*this); - --num; - } - return (*this); -} - -template -typename tree::children_iterator& tree::children_iterator::operator-=(unsigned int num) -{ - while(num>0) { - --(*this); - --num; - } - return (*this); -} - -template -typename tree::tree_node *tree::children_iterator::range_first() const -{ - tree_node *tmp=parent_->first_child; - return tmp; -} - -template -typename tree::tree_node *tree::children_iterator::range_last() const -{ - return parent_->last_child; -} - -// Leaf iterator - -template -tree::leaf_iterator::leaf_iterator() -: iterator_base(0), top_node(0) -{ -} - -template -tree::leaf_iterator::leaf_iterator(tree_node *tn, tree_node *top) -: iterator_base(tn), top_node(top) -{ -} - - -template -typename tree::leaf_iterator& tree::leaf_iterator::operator++() -{ - assert(this->node!=0); - if(this->node->first_child!=0) { // current node is no longer leaf (children got added) - while(this->node->first_child) - this->node=this->node->first_child; - } - else { - while(this->node->next_sibling==0) { - if (this->node->parent==0) return *this; - this->node=this->node->parent; - if (top_node != 0 && this->node==top_node) return *this; - } - this->node=this->node->next_sibling; - while(this->node->first_child) - this->node=this->node->first_child; - } - return *this; - -} - -template -typename tree::leaf_iterator& tree::leaf_iterator::operator--() -{ - assert(this->node!=0); - while (this->node->prev_sibling==0) { - if (this->node->parent==0) return *this; - this->node=this->node->parent; - if (top_node !=0 && this->node==top_node) return *this; - } - this->node=this->node->prev_sibling; - while(this->node->last_child) - this->node=this->node->last_child; - return *this; -} - -template -typename tree::leaf_iterator tree::leaf_iterator::operator++(int) -{ - leaf_iterator copy = *this; - ++(*this); - return copy; -} - -template -typename tree::leaf_iterator tree::leaf_iterator::operator--(int) -{ - leaf_iterator copy = *this; - --(*this); - return copy; -} - - -template -typename tree::leaf_iterator& tree::leaf_iterator::operator+=(unsigned int num) -{ - while(num>0) { - ++(*this); - --num; - } - return (*this); -} - -template -typename tree::leaf_iterator& tree::leaf_iterator::operator-=(unsigned int num) -{ - while(num>0) { - --(*this); - --num; - } - return (*this); -} - -#endif diff --git a/lib/tree-2.81/src/test1.cc b/lib/tree-2.81/src/test1.cc deleted file mode 100644 index 5bb2fdf..0000000 --- a/lib/tree-2.81/src/test1.cc +++ /dev/null @@ -1,18 +0,0 @@ -#include "tree.hh" -#include "tree_util.hh" - -int main(int, char **) - { - tree tr; - - tr.insert(tr.begin(), 1); - tree::iterator i2 = tr.insert(tr.end(), 2); - tree::iterator i3 = tr.insert(tr.end(), 3); - tr.append_child(i2, 21); - tr.append_child(i3, 31); - tree::iterator i4 = tr.insert(tr.end(), 4); - - kptree::print_tree_bracketed(tr, std::cout); - - std::cout << std::endl; - } diff --git a/lib/tree-2.81/src/test1.req b/lib/tree-2.81/src/test1.req deleted file mode 100644 index e2e3a45..0000000 --- a/lib/tree-2.81/src/test1.req +++ /dev/null @@ -1,4 +0,0 @@ -1 -2(21) -3(31) -4 diff --git a/lib/tree-2.81/src/test_tree.cc b/lib/tree-2.81/src/test_tree.cc deleted file mode 100644 index 6f1bf1c..0000000 --- a/lib/tree-2.81/src/test_tree.cc +++ /dev/null @@ -1,378 +0,0 @@ -/* - - STL-like templated tree class; test program. - Copyright (C) 2001-2009 Kasper Peeters - - This program is free software: you can redistribute it and/or - modify it under the terms of the GNU General Public License as - published by the Free Software Foundation, either version 3 of the - License, or (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -*/ - -#include "tree.hh" -#include "tree_util.hh" - -#include -#include -#include -#include -#include -#include -#include - -/* - - Simple test program for the tree.hh class library. Run it and see - what happens. Or, if you want to see that it does not leak memory, - run it like - - ./test_tree 10000 >/dev/null - - or some other large number and have 'top' running in a different - shell. This will run the tests 10000 times, creating and destroying - the trees for every iteration of the loop. - - */ - -bool truefunc(std::string& one, std::string& two) - { -// std::cout << "comparing " << one << "==" << two << std::endl; - return true; - } - -void print_tree(const tree& tr, tree::pre_order_iterator it, tree::pre_order_iterator end) - { - if(!tr.is_valid(it)) return; - int rootdepth=tr.depth(it); - std::cout << "-----" << std::endl; - while(it!=end) { - for(int i=0; i& tr, tree::post_order_iterator it, tree::post_order_iterator end) - { - int rootdepth=tr.depth(it); - std::cout << "-----" << std::endl; - while(it!=end) { - for(int i=0; i& tr, tree::pre_order_iterator it, tree::pre_order_iterator end) - { - --it; - int rootdepth=0;//tr.depth(it); - std::cout << "-----" << std::endl; - while(1==1) { - for(int i=0; i& tr, tree::post_order_iterator it, tree::post_order_iterator end) - { - --it; - int rootdepth=0;//tr.depth(it); - std::cout << "-----" << std::endl; - while(1==1) { - for(int i=0; i1) - maxloop=atoi(argv[1]); - - for(unsigned int j=0; j tr9; - tr9.set_head("hi"); - tr9.insert(tr9.begin().begin(), "0"); - tr9.insert(tr9.begin().begin(), "1"); - print_tree(tr9, tr9.begin(), tr9.end()); - - - tree tr; - tree::pre_order_iterator html, body, h1, h3, bh1, mv1; - - std::cout << "empty tree to begin with:" << std::endl; - print_tree(tr, tr.begin(), tr.end()); - - html=tr.insert(tr.begin(), "html"); - tr.insert(html,"extra"); -// tr.insert(html,"zextra2"); - body=tr.append_child(html, "body"); - h1 =tr.append_child(body, "h1"); - std::cout << tr.index(h1) << std::endl; - bh1 =tr.insert(h1,"before h1"); - tr.append_child(h1, "some text"); - tree::sibling_iterator more_text=tr.append_child(body, "more text"); - - std::cout << " 'more text' is sibling " << tr.index(more_text) << " in its sibling range" << std::endl; - - std::cout << "filled tree:" << std::endl; - print_tree(tr, tr.begin(), tr.end()); - - std::cout << "filled tree, post-order traversal:" << std::endl; - print_tree_post(tr, tr.begin_post(), tr.end_post()); - - tr.swap(bh1); - std::cout << "swapped elements:" << std::endl; - print_tree(tr, tr.begin(), tr.end()); - tr.swap(h1); - std::cout << "swapped back:" << std::endl; - print_tree(tr, tr.begin(), tr.end()); - - tree copytree(h1); - std::cout << "copied tree:" << std::endl; - print_tree(copytree, copytree.begin(), copytree.end()); - - // Now test the STL algorithms - std::cout << "result of search for h1 and kasper:" << std::endl; - tree::pre_order_iterator it; - it=std::find(tr.begin(),tr.end(),std::string("h1")); - if(it!=tr.end()) print_tree(tr, it, tr.next_sibling(it)); - else std::cout << "h1 not found" << std::endl; - it=std::find(tr.begin(),tr.end(), std::string("kasper")); - if(it!=tr.end()) print_tree(tr, it, tr.next_sibling(it)); - else std::cout << "kasper not found" << std::endl; - std::cout << std::endl; - - // remove the h1, replace it with new subtree - tree replacement; - h3 =replacement.insert(replacement.begin(), "h3"); - replacement.append_child(h3, "text in h3"); - std::cout << "replacement tree:" << std::endl; - print_tree(replacement, replacement.begin(), replacement.end()); - print_tree(tr, tr.begin(), tr.end()); - h1=tr.replace(tree::sibling_iterator(h1), tr.next_sibling(h1), - tree::sibling_iterator(h3), tr.next_sibling(h3)); - std::cout << "filled tree with replacement done:" << std::endl; - print_tree(tr, tr.begin(), tr.end()); - - // replace h3 node while keeping children - h1=tr.replace(h1, ""); - print_tree(tr, tr.begin(), tr.end()); - - // add a sibling to the head - tr.insert_after(h1, "more"); - - // Copy object. - tree tr2=tr; - print_tree(tr2, tr2.begin(), tr2.end()); - tree tr3(tr); - - // reparent "before h1" to h3 node - tr.reparent(h1, bh1, tr.next_sibling(bh1)); - std::cout << "moved content:" << std::endl; - print_tree(tr, tr.begin(), tr.end()); - - // iterate over children only - tree::sibling_iterator ch=tr.begin(h1); - std::cout << "children of h1:" << std::endl; - while(ch!=tr.end(h1)) { - std::cout << (*ch) << std::endl; - ++ch; - } - std::cout << std::endl; - - // flatten the h3 node - tr.flatten(h1); - std::cout << "flattened (at h3) tree:" << std::endl; - print_tree(tr, tr.begin(), tr.end()); - - // Erase the subtree of tr below body. - tr.erase_children(body); - std::cout << "children of body erased:" << std::endl; - print_tree(tr, tr.begin(), tr.end()); - it=std::find(tr.begin(),tr.end(),"h1"); - if(it!=tr.end()) print_tree(tr, it, tr.next_sibling(it)); - else std::cout << "h1 not found" << std::endl; - - // Erase everything - tr.erase(tr.begin()); - std::cout << "erased tree:" << std::endl; - print_tree(tr, tr.begin(), tr.end()); - - // The copies are deep, ie. all nodes have been copied. - std::cout << "copies still exist:" << std::endl; - print_tree(tr2, tr2.begin(), tr2.end()); - print_tree(tr3, tr3.begin(), tr3.end()); - - // Test comparison - std::cout << "testing comparison functions:" << std::endl; - std::cout << std::equal(tr2.begin(), tr2.end(), tr3.begin(), std::equal_to()) - << " (should be 1)" << std::endl; - // modify content but not structure - tree::pre_order_iterator fl3=tr3.begin(); - fl3+=4; // pointing to "" node - std::cout << (*fl3) << std::endl; - std::string tmpfl3=(*fl3); - (*fl3)="modified"; - std::cout << std::equal(tr2.begin(), tr2.end(), tr3.begin(), std::equal_to()) - << " (should be 0)" << std::endl; - std::cout << tr2.equal(tr2.begin(), tr2.end(), tr3.begin(), std::equal_to()) - << " (should be 0)" << std::endl; - std::cout << tr2.equal(tr2.begin(), tr2.end(), tr3.begin(), truefunc) - << " (should be 1)" << std::endl; - // modify tr3 structure (but not content) - (*fl3)=tmpfl3; - tr3.flatten(fl3); - std::cout << "tree flattened, test again" << std::endl; - print_tree(tr3, tr3.begin(), tr3.end()); - - // Test comparison again - std::cout << tr2.equal(tr2.begin(), tr2.end(), tr3.begin(), std::equal_to()) - << " (should be 0)" << std::endl; - std::cout << std::equal(tr2.begin(), tr2.end(), tr3.begin(), std::equal_to()) - << " (should be 1)" << std::endl; - // Change content - (*fl3)="modified"; - // Test comparison again - std::cout << std::equal(tr2.begin(), tr2.end(), tr3.begin(), std::equal_to()) - << " (should be 0)" << std::endl; - std::cout << tr2.equal(tr2.begin(), tr2.end(), tr3.begin(), std::equal_to()) - << " (should be 0)" << std::endl; - - // Testing sort. First add a subtree to one leaf - tree::pre_order_iterator txx3=tr3.begin(); - txx3+=5; - tr3.append_child(txx3,"ccc"); - tr3.append_child(txx3,"bbb"); - tr3.append_child(txx3,"bbb"); - tr3.append_child(txx3,"aaa"); - std::less comp; - tree::pre_order_iterator bdy=tr3.begin(); - bdy+=2; - assert(tr.is_valid(bdy)); - std::cout << "unsorted subtree:" << std::endl; - print_tree(tr3, tr3.begin(), tr3.end()); - tree::sibling_iterator sortit1=tr3.begin(bdy), sortit2=tr3.begin(bdy); - sortit1+=2; - sortit2+=4; - assert(tr.is_valid(sortit1)); - assert(tr.is_valid(sortit2)); - std::cout << "partially sorted subtree: (" - << "sorted from " << (*sortit1) << " to " - << (*sortit2) << ", excluding the last element)" << std::endl; - - - mv1=tr3.begin(); - ++mv1; - tr3.sort(sortit1, sortit2); - print_tree(tr3, tr3.begin(), tr3.end()); - tr3.sort(tr3.begin(bdy), tr3.end(bdy), comp, true); // false: no sorting of subtrees -// Sorting the entire tree, level by level, is much simpler: -// tr3.sort(tr3.begin(), tr3.end(), true); - std::cout << "sorted subtree:" << std::endl; - print_tree(tr3, tr3.begin(), tr3.end()); - - // Michael's problem -// std::cout << mv1.node << ", " << tr3.feet << ", " << tr3.feet->prev_sibling << std::endl; -// std::cout << mv1.node->next_sibling << ", " << tr3.feet->prev_sibling << ", " << tr3.end().node << std::endl; -// tr3.sort(tr3.begin(), tr3.end(), true); -// std::cout << mv1.node << ", " << tr3.feet << ", " << tr3.feet->prev_sibling << std::endl; -// std::cout << mv1.node->next_sibling << ", " << tr3.feet->prev_sibling << ", " << tr3.end().node << std::endl; -// print_tree(tr3, tr3.begin(), tr3.end()); -// tr3.sort(tr3.begin(), tr3.end(), true); -// std::cout << mv1.node << ", " << tr3.feet << ", " << tr3.feet->prev_sibling << std::endl; -// std::cout << mv1.node->next_sibling << ", " << tr3.feet->prev_sibling << ", " << tr3.end().node << std::endl; -// print_tree(tr3, tr3.begin(), tr3.end()); -// return 1; - - // Test merge algorithm. - std::cout << "test merge" << std::endl; - tree mtree; - tree::pre_order_iterator mt1, mt2, mt3; - mt1=mtree.insert(mtree.begin(),"html"); - mt2=mtree.append_child(mt1,"head"); - mt3=mtree.append_child(mt1,"body"); -// Adding it without head having any children tests whether we can -// insert at the end of an empty list of children. - mtree.append_child(mt2,"title"); - mtree.append_child(mt3,"h1"); - mtree.append_child(mt3,"h1"); - - tree mtBree; - tree::pre_order_iterator mtB1, mtB2; - mtB1=mtBree.insert(mtBree.begin(),"head"); - mtB2=mtBree.append_child(mtB1,"another title"); - print_tree(mtree, mtree.begin(), mtree.end()); - print_tree(mtBree, mtBree.begin(), mtBree.end()); - - mtree.merge(mtree.begin(), mtree.end(), mtBree.begin(), mtBree.end(), true); - print_tree(mtree, mtree.begin(), mtree.end()); - mtree.merge(mtree.begin(mtree.begin()), mtree.end(mtree.begin()), mtBree.begin(), mtBree.end(), true); - print_tree(mtree, mtree.begin(), mtree.end()); - - // Print tree in reverse (test operator--) - print_tree_rev(mtree, mtree.end(), mtree.begin()); - print_tree_rev_post(mtree, mtree.end_post(), mtree.begin_post()); - - // Breadth-first - tree bft; - tree::iterator bfB,bfC,bfD; - bft.set_head("A"); - bfB=bft.append_child(bft.begin(), "B"); - bfC=bft.append_child(bft.begin(), "C"); - bfD=bft.append_child(bft.begin(), "D"); - bft.append_child(bfB, "E"); - bft.append_child(bfB, "F"); - bft.append_child(bfC, "G"); - bft.append_child(bfC, "H"); - bft.append_child(bfD, "I"); - tree::breadth_first_queued_iterator bfq=bft.begin_breadth_first(); - while(bfq!=bft.end_breadth_first()) { - std::cout << *bfq << std::endl; - ++bfq; - } - - print_tree(bft, bft.begin(), bft.end()); - bft.wrap(bfD, "wrap"); - print_tree(bft, bft.begin(), bft.end()); - - tree::leaf_iterator li=tr.begin_leaf(bfC); - while(li!=tr.end_leaf(bfC)) { - std::cout << *li << std::endl; - ++li; - } - -// tree testfixed; -// testfixed.insert(testfixed.begin(), "one"); -// testfixed.insert(testfixed.begin(), "two"); -// testfixed.insert(testfixed.begin(), "three"); -// tree::fixed_depth_iterator fit=testfixed.begin(); -// while(testfixed.is_valid(fit)) { -// std::cout << *fit << std::endl; -// ++fit; -// } - } - } diff --git a/lib/tree-2.81/src/test_tree.output b/lib/tree-2.81/src/test_tree.output deleted file mode 100644 index f6b0848..0000000 --- a/lib/tree-2.81/src/test_tree.output +++ /dev/null @@ -1,311 +0,0 @@ -empty tree to begin with: -0 - 'more text' is sibling 2 in its sibling range -filled tree: ------ -extra -html - body - before h1 - h1 - some text - more text ------ -filled tree, post-order traversal: ------ -extra - before h1 - some text - h1 - more text - body -html ------ -swapped elements: ------ -extra -html - body - h1 - some text - before h1 - more text ------ -swapped back: ------ -extra -html - body - before h1 - h1 - some text - more text ------ -copied tree: ------ -h1 - some text ------ -result of search for h1 and kasper: ------ -h1 - some text ------ -kasper not found - -replacement tree: ------ -h3 - text in h3 ------ ------ -extra -html - body - before h1 - h1 - some text - more text ------ -filled tree with replacement done: ------ -extra -html - body - before h1 - h3 - text in h3 - more text ------ ------ -extra -html - body - before h1 - - text in h3 - more text ------ ------ -extra -html - body - before h1 - - text in h3 - more - more text ------ -moved content: ------ -extra -html - body - - text in h3 - before h1 - more - more text ------ -children of h1: -text in h3 -before h1 - -flattened (at h3) tree: ------ -extra -html - body - - text in h3 - before h1 - more - more text ------ -children of body erased: ------ -extra -html - body ------ -h1 not found -erased tree: ------ -html - body ------ -copies still exist: ------ -extra -html - body - before h1 - - text in h3 - more - more text ------ ------ -extra -html - body - before h1 - - text in h3 - more - more text ------ -testing comparison functions: -1 (should be 1) - -0 (should be 0) -0 (should be 0) -1 (should be 1) -tree flattened, test again ------ -extra -html - body - before h1 - - text in h3 - more - more text ------ -0 (should be 0) -1 (should be 1) -0 (should be 0) -0 (should be 0) -unsorted subtree: ------ -extra -html - body - before h1 - modified - text in h3 - ccc - bbb - bbb - aaa - more - more text ------ -partially sorted subtree: (sorted from text in h3 to more text, excluding the last element) ------ -extra -html - body - before h1 - modified - more - text in h3 - ccc - bbb - bbb - aaa - more text ------ -sorted subtree: ------ -extra -html - body - before h1 - modified - more - more text - text in h3 - aaa - bbb - bbb - ccc ------ -test merge ------ -html - head - title - body - h1 - h1 ------ ------ -head - another title ------ ------ -html - head - title - body - h1 - h1 -head - another title ------ ------ -html - head - title - another title - body - h1 - h1 -head - another title ------ ------ - another title -head - h1 - h1 - body - another title - title - head -html ------ ------ -head - another title -html - body - h1 - h1 - head - another title - title ------ -A -B -C -D -E -F -G -H -I ------ -A - B - E - F - C - G - H - D - I ------ ------ -A - B - E - F - C - G - H - wrap - D - I ------ diff --git a/lib/tree-2.81/src/tree.hh b/lib/tree-2.81/src/tree.hh deleted file mode 100644 index b2f3005..0000000 --- a/lib/tree-2.81/src/tree.hh +++ /dev/null @@ -1,2786 +0,0 @@ - -// STL-like templated tree class. -// -// Copyright (C) 2001-2011 Kasper Peeters -// Distributed under the GNU General Public License version 3. -// -// When used together with the htmlcxx library to create -// HTML::Node template instances, the GNU Lesser General Public -// version 2 applies. Special permission to use tree.hh under -// the LGPL for other projects can be requested from the author. - -/** \mainpage tree.hh - \author Kasper Peeters - \version 2.81 - \date 23-Aug-2011 - \see http://tree.phi-sci.com/ - \see http://tree.phi-sci.com/ChangeLog - - The tree.hh library for C++ provides an STL-like container class - for n-ary trees, templated over the data stored at the - nodes. Various types of iterators are provided (post-order, - pre-order, and others). Where possible the access methods are - compatible with the STL or alternative algorithms are - available. -*/ - - -#ifndef tree_hh_ -#define tree_hh_ - -#include -#include -#include -#include -#include -#include -#include -#include - - -/// A node in the tree, combining links to other nodes as well as the actual data. -template -class tree_node_ { // size: 5*4=20 bytes (on 32 bit arch), can be reduced by 8. - public: - tree_node_(); - tree_node_(const T&); - - tree_node_ *parent; - tree_node_ *first_child, *last_child; - tree_node_ *prev_sibling, *next_sibling; - T data; -}; // __attribute__((packed)); - -template -tree_node_::tree_node_() - : parent(0), first_child(0), last_child(0), prev_sibling(0), next_sibling(0) - { - } - -template -tree_node_::tree_node_(const T& val) - : parent(0), first_child(0), last_child(0), prev_sibling(0), next_sibling(0), data(val) - { - } - -template > > -class tree { - protected: - typedef tree_node_ tree_node; - public: - /// Value of the data stored at a node. - typedef T value_type; - - class iterator_base; - class pre_order_iterator; - class post_order_iterator; - class sibling_iterator; - class leaf_iterator; - - tree(); - tree(const T&); - tree(const iterator_base&); - tree(const tree&); - ~tree(); - tree& operator=(const tree&); - - /// Base class for iterators, only pointers stored, no traversal logic. -#ifdef __SGI_STL_PORT - class iterator_base : public stlport::bidirectional_iterator { -#else - class iterator_base { -#endif - public: - typedef T value_type; - typedef T* pointer; - typedef T& reference; - typedef size_t size_type; - typedef ptrdiff_t difference_type; - typedef std::bidirectional_iterator_tag iterator_category; - - iterator_base(); - iterator_base(tree_node *); - - T& operator*() const; - T* operator->() const; - - /// When called, the next increment/decrement skips children of this node. - void skip_children(); - void skip_children(bool skip); - /// Number of children of the node pointed to by the iterator. - unsigned int number_of_children() const; - - sibling_iterator begin() const; - sibling_iterator end() const; - - tree_node *node; - protected: - bool skip_current_children_; - }; - - /// Depth-first iterator, first accessing the node, then its children. - class pre_order_iterator : public iterator_base { - public: - pre_order_iterator(); - pre_order_iterator(tree_node *); - pre_order_iterator(const iterator_base&); - pre_order_iterator(const sibling_iterator&); - - bool operator==(const pre_order_iterator&) const; - bool operator!=(const pre_order_iterator&) const; - pre_order_iterator& operator++(); - pre_order_iterator& operator--(); - pre_order_iterator operator++(int); - pre_order_iterator operator--(int); - pre_order_iterator& operator+=(unsigned int); - pre_order_iterator& operator-=(unsigned int); - }; - - /// Depth-first iterator, first accessing the children, then the node itself. - class post_order_iterator : public iterator_base { - public: - post_order_iterator(); - post_order_iterator(tree_node *); - post_order_iterator(const iterator_base&); - post_order_iterator(const sibling_iterator&); - - bool operator==(const post_order_iterator&) const; - bool operator!=(const post_order_iterator&) const; - post_order_iterator& operator++(); - post_order_iterator& operator--(); - post_order_iterator operator++(int); - post_order_iterator operator--(int); - post_order_iterator& operator+=(unsigned int); - post_order_iterator& operator-=(unsigned int); - - /// Set iterator to the first child as deep as possible down the tree. - void descend_all(); - }; - - /// Breadth-first iterator, using a queue - class breadth_first_queued_iterator : public iterator_base { - public: - breadth_first_queued_iterator(); - breadth_first_queued_iterator(tree_node *); - breadth_first_queued_iterator(const iterator_base&); - - bool operator==(const breadth_first_queued_iterator&) const; - bool operator!=(const breadth_first_queued_iterator&) const; - breadth_first_queued_iterator& operator++(); - breadth_first_queued_iterator operator++(int); - breadth_first_queued_iterator& operator+=(unsigned int); - - private: - std::queue traversal_queue; - }; - - /// The default iterator types throughout the tree class. - typedef pre_order_iterator iterator; - typedef breadth_first_queued_iterator breadth_first_iterator; - - /// Iterator which traverses only the nodes at a given depth from the root. - class fixed_depth_iterator : public iterator_base { - public: - fixed_depth_iterator(); - fixed_depth_iterator(tree_node *); - fixed_depth_iterator(const iterator_base&); - fixed_depth_iterator(const sibling_iterator&); - fixed_depth_iterator(const fixed_depth_iterator&); - - bool operator==(const fixed_depth_iterator&) const; - bool operator!=(const fixed_depth_iterator&) const; - fixed_depth_iterator& operator++(); - fixed_depth_iterator& operator--(); - fixed_depth_iterator operator++(int); - fixed_depth_iterator operator--(int); - fixed_depth_iterator& operator+=(unsigned int); - fixed_depth_iterator& operator-=(unsigned int); - - tree_node *top_node; - }; - - /// Iterator which traverses only the nodes which are siblings of each other. - class sibling_iterator : public iterator_base { - public: - sibling_iterator(); - sibling_iterator(tree_node *); - sibling_iterator(const sibling_iterator&); - sibling_iterator(const iterator_base&); - - bool operator==(const sibling_iterator&) const; - bool operator!=(const sibling_iterator&) const; - sibling_iterator& operator++(); - sibling_iterator& operator--(); - sibling_iterator operator++(int); - sibling_iterator operator--(int); - sibling_iterator& operator+=(unsigned int); - sibling_iterator& operator-=(unsigned int); - - tree_node *range_first() const; - tree_node *range_last() const; - tree_node *parent_; - private: - void set_parent_(); - }; - - /// Iterator which traverses only the leaves. - class leaf_iterator : public iterator_base { - public: - leaf_iterator(); - leaf_iterator(tree_node *, tree_node *top=0); - leaf_iterator(const sibling_iterator&); - leaf_iterator(const iterator_base&); - - bool operator==(const leaf_iterator&) const; - bool operator!=(const leaf_iterator&) const; - leaf_iterator& operator++(); - leaf_iterator& operator--(); - leaf_iterator operator++(int); - leaf_iterator operator--(int); - leaf_iterator& operator+=(unsigned int); - leaf_iterator& operator-=(unsigned int); - private: - tree_node *top_node; - }; - - /// Return iterator to the beginning of the tree. - inline pre_order_iterator begin() const; - /// Return iterator to the end of the tree. - inline pre_order_iterator end() const; - /// Return post-order iterator to the beginning of the tree. - post_order_iterator begin_post() const; - /// Return post-order end iterator of the tree. - post_order_iterator end_post() const; - /// Return fixed-depth iterator to the first node at a given depth from the given iterator. - fixed_depth_iterator begin_fixed(const iterator_base&, unsigned int) const; - /// Return fixed-depth end iterator. - fixed_depth_iterator end_fixed(const iterator_base&, unsigned int) const; - /// Return breadth-first iterator to the first node at a given depth. - breadth_first_queued_iterator begin_breadth_first() const; - /// Return breadth-first end iterator. - breadth_first_queued_iterator end_breadth_first() const; - /// Return sibling iterator to the first child of given node. - sibling_iterator begin(const iterator_base&) const; - /// Return sibling end iterator for children of given node. - sibling_iterator end(const iterator_base&) const; - /// Return leaf iterator to the first leaf of the tree. - leaf_iterator begin_leaf() const; - /// Return leaf end iterator for entire tree. - leaf_iterator end_leaf() const; - /// Return leaf iterator to the first leaf of the subtree at the given node. - leaf_iterator begin_leaf(const iterator_base& top) const; - /// Return leaf end iterator for the subtree at the given node. - leaf_iterator end_leaf(const iterator_base& top) const; - - /// Return iterator to the parent of a node. - template static iter parent(iter); - /// Return iterator to the previous sibling of a node. - template iter previous_sibling(iter) const; - /// Return iterator to the next sibling of a node. - template iter next_sibling(iter) const; - /// Return iterator to the next node at a given depth. - template iter next_at_same_depth(iter) const; - - /// Erase all nodes of the tree. - void clear(); - /// Erase element at position pointed to by iterator, return incremented iterator. - template iter erase(iter); - /// Erase all children of the node pointed to by iterator. - void erase_children(const iterator_base&); - - /// Insert empty node as last/first child of node pointed to by position. - template iter append_child(iter position); - template iter prepend_child(iter position); - /// Insert node as last/first child of node pointed to by position. - template iter append_child(iter position, const T& x); - template iter prepend_child(iter position, const T& x); - /// Append the node (plus its children) at other_position as last/first child of position. - template iter append_child(iter position, iter other_position); - template iter prepend_child(iter position, iter other_position); - /// Append the nodes in the from-to range (plus their children) as last/first children of position. - template iter append_children(iter position, sibling_iterator from, sibling_iterator to); - template iter prepend_children(iter position, sibling_iterator from, sibling_iterator to); - - /// Short-hand to insert topmost node in otherwise empty tree. - pre_order_iterator set_head(const T& x); - /// Insert node as previous sibling of node pointed to by position. - template iter insert(iter position, const T& x); - /// Specialisation of previous member. - sibling_iterator insert(sibling_iterator position, const T& x); - /// Insert node (with children) pointed to by subtree as previous sibling of node pointed to by position. - template iter insert_subtree(iter position, const iterator_base& subtree); - /// Insert node as next sibling of node pointed to by position. - template iter insert_after(iter position, const T& x); - /// Insert node (with children) pointed to by subtree as next sibling of node pointed to by position. - template iter insert_subtree_after(iter position, const iterator_base& subtree); - - /// Replace node at 'position' with other node (keeping same children); 'position' becomes invalid. - template iter replace(iter position, const T& x); - /// Replace node at 'position' with subtree starting at 'from' (do not erase subtree at 'from'); see above. - template iter replace(iter position, const iterator_base& from); - /// Replace string of siblings (plus their children) with copy of a new string (with children); see above - sibling_iterator replace(sibling_iterator orig_begin, sibling_iterator orig_end, - sibling_iterator new_begin, sibling_iterator new_end); - - /// Move all children of node at 'position' to be siblings, returns position. - template iter flatten(iter position); - /// Move nodes in range to be children of 'position'. - template iter reparent(iter position, sibling_iterator begin, sibling_iterator end); - /// Move all child nodes of 'from' to be children of 'position'. - template iter reparent(iter position, iter from); - - /// Replace node with a new node, making the old node a child of the new node. - template iter wrap(iter position, const T& x); - - /// Move 'source' node (plus its children) to become the next sibling of 'target'. - template iter move_after(iter target, iter source); - /// Move 'source' node (plus its children) to become the previous sibling of 'target'. - template iter move_before(iter target, iter source); - sibling_iterator move_before(sibling_iterator target, sibling_iterator source); - /// Move 'source' node (plus its children) to become the node at 'target' (erasing the node at 'target'). - template iter move_ontop(iter target, iter source); - - /// Merge with other tree, creating new branches and leaves only if they are not already present. - void merge(sibling_iterator, sibling_iterator, sibling_iterator, sibling_iterator, - bool duplicate_leaves=false); - /// Sort (std::sort only moves values of nodes, this one moves children as well). - void sort(sibling_iterator from, sibling_iterator to, bool deep=false); - template - void sort(sibling_iterator from, sibling_iterator to, StrictWeakOrdering comp, bool deep=false); - /// Compare two ranges of nodes (compares nodes as well as tree structure). - template - bool equal(const iter& one, const iter& two, const iter& three) const; - template - bool equal(const iter& one, const iter& two, const iter& three, BinaryPredicate) const; - template - bool equal_subtree(const iter& one, const iter& two) const; - template - bool equal_subtree(const iter& one, const iter& two, BinaryPredicate) const; - /// Extract a new tree formed by the range of siblings plus all their children. - tree subtree(sibling_iterator from, sibling_iterator to) const; - void subtree(tree&, sibling_iterator from, sibling_iterator to) const; - /// Exchange the node (plus subtree) with its sibling node (do nothing if no sibling present). - void swap(sibling_iterator it); - /// Exchange two nodes (plus subtrees) - void swap(iterator, iterator); - - /// Count the total number of nodes. - size_t size() const; - /// Count the total number of nodes below the indicated node (plus one). - size_t size(const iterator_base&) const; - /// Check if tree is empty. - bool empty() const; - /// Compute the depth to the root or to a fixed other iterator. - static int depth(const iterator_base&); - static int depth(const iterator_base&, const iterator_base&); - /// Determine the maximal depth of the tree. An empty tree has max_depth=-1. - int max_depth() const; - /// Determine the maximal depth of the tree with top node at the given position. - int max_depth(const iterator_base&) const; - /// Count the number of children of node at position. - static unsigned int number_of_children(const iterator_base&); - /// Count the number of siblings (left and right) of node at iterator. Total nodes at this level is +1. - unsigned int number_of_siblings(const iterator_base&) const; - /// Determine whether node at position is in the subtrees with root in the range. - bool is_in_subtree(const iterator_base& position, const iterator_base& begin, - const iterator_base& end) const; - /// Determine whether the iterator is an 'end' iterator and thus not actually pointing to a node. - bool is_valid(const iterator_base&) const; - /// Find the lowest common ancestor of two nodes, that is, the deepest node such that - /// both nodes are descendants of it. - iterator lowest_common_ancestor(const iterator_base&, const iterator_base &) const; - - /// Determine the index of a node in the range of siblings to which it belongs. - unsigned int index(sibling_iterator it) const; - /// Inverse of 'index': return the n-th child of the node at position. - static sibling_iterator child(const iterator_base& position, unsigned int); - /// Return iterator to the sibling indicated by index - sibling_iterator sibling(const iterator_base& position, unsigned int); - - /// For debugging only: verify internal consistency by inspecting all pointers in the tree - /// (which will also trigger a valgrind error in case something got corrupted). - void debug_verify_consistency() const; - - /// Comparator class for iterators (compares pointer values; why doesn't this work automatically?) - class iterator_base_less { - public: - bool operator()(const typename tree::iterator_base& one, - const typename tree::iterator_base& two) const - { - return one.node < two.node; - } - }; - tree_node *head, *feet; // head/feet are always dummy; if an iterator points to them it is invalid - private: - tree_node_allocator alloc_; - void head_initialise_(); - void copy_(const tree& other); - - /// Comparator class for two nodes of a tree (used for sorting and searching). - template - class compare_nodes { - public: - compare_nodes(StrictWeakOrdering comp) : comp_(comp) {}; - - bool operator()(const tree_node *a, const tree_node *b) - { - return comp_(a->data, b->data); - } - private: - StrictWeakOrdering comp_; - }; -}; - -//template -//class iterator_base_less { -// public: -// bool operator()(const typename tree::iterator_base& one, -// const typename tree::iterator_base& two) const -// { -// txtout << "operatorclass<" << one.node < two.node << std::endl; -// return one.node < two.node; -// } -//}; - -// template -// bool operator<(const typename tree::iterator& one, -// const typename tree::iterator& two) -// { -// txtout << "operator< " << one.node < two.node << std::endl; -// if(one.node < two.node) return true; -// return false; -// } -// -// template -// bool operator==(const typename tree::iterator& one, -// const typename tree::iterator& two) -// { -// txtout << "operator== " << one.node == two.node << std::endl; -// if(one.node == two.node) return true; -// return false; -// } -// -// template -// bool operator>(const typename tree::iterator_base& one, -// const typename tree::iterator_base& two) -// { -// txtout << "operator> " << one.node < two.node << std::endl; -// if(one.node > two.node) return true; -// return false; -// } - - - -// Tree - -template -tree::tree() - { - head_initialise_(); - } - -template -tree::tree(const T& x) - { - head_initialise_(); - set_head(x); - } - -template -tree::tree(const iterator_base& other) - { - head_initialise_(); - set_head((*other)); - replace(begin(), other); - } - -template -tree::~tree() - { - clear(); - alloc_.destroy(head); - alloc_.destroy(feet); - alloc_.deallocate(head,1); - alloc_.deallocate(feet,1); - } - -template -void tree::head_initialise_() - { - head = alloc_.allocate(1,0); // MSVC does not have default second argument - feet = alloc_.allocate(1,0); - alloc_.construct(head, tree_node_()); - alloc_.construct(feet, tree_node_()); - - head->parent=0; - head->first_child=0; - head->last_child=0; - head->prev_sibling=0; //head; - head->next_sibling=feet; //head; - - feet->parent=0; - feet->first_child=0; - feet->last_child=0; - feet->prev_sibling=head; - feet->next_sibling=0; - } - -template -tree& tree::operator=(const tree& other) - { - if(this != &other) - copy_(other); - return *this; - } - -template -tree::tree(const tree& other) - { - head_initialise_(); - copy_(other); - } - -template -void tree::copy_(const tree& other) - { - clear(); - pre_order_iterator it=other.begin(), to=begin(); - while(it!=other.end()) { - to=insert(to, (*it)); - it.skip_children(); - ++it; - } - to=begin(); - it=other.begin(); - while(it!=other.end()) { - to=replace(to, it); - to.skip_children(); - it.skip_children(); - ++to; - ++it; - } - } - -template -void tree::clear() - { - if(head) - while(head->next_sibling!=feet) - erase(pre_order_iterator(head->next_sibling)); - } - -template -void tree::erase_children(const iterator_base& it) - { -// std::cout << "erase_children " << it.node << std::endl; - if(it.node==0) return; - - tree_node *cur=it.node->first_child; - tree_node *prev=0; - - while(cur!=0) { - prev=cur; - cur=cur->next_sibling; - erase_children(pre_order_iterator(prev)); -// kp::destructor(&prev->data); - alloc_.destroy(prev); - alloc_.deallocate(prev,1); - } - it.node->first_child=0; - it.node->last_child=0; -// std::cout << "exit" << std::endl; - } - -template -template -iter tree::erase(iter it) - { - tree_node *cur=it.node; - assert(cur!=head); - iter ret=it; - ret.skip_children(); - ++ret; - erase_children(it); - if(cur->prev_sibling==0) { - cur->parent->first_child=cur->next_sibling; - } - else { - cur->prev_sibling->next_sibling=cur->next_sibling; - } - if(cur->next_sibling==0) { - cur->parent->last_child=cur->prev_sibling; - } - else { - cur->next_sibling->prev_sibling=cur->prev_sibling; - } - -// kp::destructor(&cur->data); - alloc_.destroy(cur); - alloc_.deallocate(cur,1); - return ret; - } - -template -typename tree::pre_order_iterator tree::begin() const - { - return pre_order_iterator(head->next_sibling); - } - -template -typename tree::pre_order_iterator tree::end() const - { - return pre_order_iterator(feet); - } - -template -typename tree::breadth_first_queued_iterator tree::begin_breadth_first() const - { - return breadth_first_queued_iterator(head->next_sibling); - } - -template -typename tree::breadth_first_queued_iterator tree::end_breadth_first() const - { - return breadth_first_queued_iterator(); - } - -template -typename tree::post_order_iterator tree::begin_post() const - { - tree_node *tmp=head->next_sibling; - if(tmp!=feet) { - while(tmp->first_child) - tmp=tmp->first_child; - } - return post_order_iterator(tmp); - } - -template -typename tree::post_order_iterator tree::end_post() const - { - return post_order_iterator(feet); - } - -template -typename tree::fixed_depth_iterator tree::begin_fixed(const iterator_base& pos, unsigned int dp) const - { - typename tree::fixed_depth_iterator ret; - ret.top_node=pos.node; - - tree_node *tmp=pos.node; - unsigned int curdepth=0; - while(curdepthfirst_child==0) { - if(tmp->next_sibling==0) { - // try to walk up and then right again - do { - if(tmp==ret.top_node) - throw std::range_error("tree: begin_fixed out of range"); - tmp=tmp->parent; - if(tmp==0) - throw std::range_error("tree: begin_fixed out of range"); - --curdepth; - } while(tmp->next_sibling==0); - } - tmp=tmp->next_sibling; - } - tmp=tmp->first_child; - ++curdepth; - } - - ret.node=tmp; - return ret; - } - -template -typename tree::fixed_depth_iterator tree::end_fixed(const iterator_base& pos, unsigned int dp) const - { - assert(1==0); // FIXME: not correct yet: use is_valid() as a temporary workaround - tree_node *tmp=pos.node; - unsigned int curdepth=1; - while(curdepthfirst_child==0) { - tmp=tmp->next_sibling; - if(tmp==0) - throw std::range_error("tree: end_fixed out of range"); - } - tmp=tmp->first_child; - ++curdepth; - } - return tmp; - } - -template -typename tree::sibling_iterator tree::begin(const iterator_base& pos) const - { - assert(pos.node!=0); - if(pos.node->first_child==0) { - return end(pos); - } - return pos.node->first_child; - } - -template -typename tree::sibling_iterator tree::end(const iterator_base& pos) const - { - sibling_iterator ret(0); - ret.parent_=pos.node; - return ret; - } - -template -typename tree::leaf_iterator tree::begin_leaf() const - { - tree_node *tmp=head->next_sibling; - if(tmp!=feet) { - while(tmp->first_child) - tmp=tmp->first_child; - } - return leaf_iterator(tmp); - } - -template -typename tree::leaf_iterator tree::end_leaf() const - { - return leaf_iterator(feet); - } - -template -typename tree::leaf_iterator tree::begin_leaf(const iterator_base& top) const - { - tree_node *tmp=top.node; - while(tmp->first_child) - tmp=tmp->first_child; - return leaf_iterator(tmp, top.node); - } - -template -typename tree::leaf_iterator tree::end_leaf(const iterator_base& top) const - { - return leaf_iterator(top.node, top.node); - } - -template -template -iter tree::parent(iter position) - { - assert(position.node!=0); - return iter(position.node->parent); - } - -template -template -iter tree::previous_sibling(iter position) const - { - assert(position.node!=0); - iter ret(position); - ret.node=position.node->prev_sibling; - return ret; - } - -template -template -iter tree::next_sibling(iter position) const - { - assert(position.node!=0); - iter ret(position); - ret.node=position.node->next_sibling; - return ret; - } - -template -template -iter tree::next_at_same_depth(iter position) const - { - // We make use of a temporary fixed_depth iterator to implement this. - - typename tree::fixed_depth_iterator tmp(position.node); - - ++tmp; - return iter(tmp); - -// assert(position.node!=0); -// iter ret(position); -// -// if(position.node->next_sibling) { -// ret.node=position.node->next_sibling; -// } -// else { -// int relative_depth=0; -// upper: -// do { -// ret.node=ret.node->parent; -// if(ret.node==0) return ret; -// --relative_depth; -// } while(ret.node->next_sibling==0); -// lower: -// ret.node=ret.node->next_sibling; -// while(ret.node->first_child==0) { -// if(ret.node->next_sibling==0) -// goto upper; -// ret.node=ret.node->next_sibling; -// if(ret.node==0) return ret; -// } -// while(relative_depth<0 && ret.node->first_child!=0) { -// ret.node=ret.node->first_child; -// ++relative_depth; -// } -// if(relative_depth<0) { -// if(ret.node->next_sibling==0) goto upper; -// else goto lower; -// } -// } -// return ret; - } - -template -template -iter tree::append_child(iter position) - { - assert(position.node!=head); - assert(position.node!=feet); - assert(position.node); - - tree_node *tmp=alloc_.allocate(1,0); - alloc_.construct(tmp, tree_node_()); -// kp::constructor(&tmp->data); - tmp->first_child=0; - tmp->last_child=0; - - tmp->parent=position.node; - if(position.node->last_child!=0) { - position.node->last_child->next_sibling=tmp; - } - else { - position.node->first_child=tmp; - } - tmp->prev_sibling=position.node->last_child; - position.node->last_child=tmp; - tmp->next_sibling=0; - return tmp; - } - -template -template -iter tree::prepend_child(iter position) - { - assert(position.node!=head); - assert(position.node!=feet); - assert(position.node); - - tree_node *tmp=alloc_.allocate(1,0); - alloc_.construct(tmp, tree_node_()); -// kp::constructor(&tmp->data); - tmp->first_child=0; - tmp->last_child=0; - - tmp->parent=position.node; - if(position.node->first_child!=0) { - position.node->first_child->prev_sibling=tmp; - } - else { - position.node->last_child=tmp; - } - tmp->next_sibling=position.node->first_child; - position.node->prev_child=tmp; - tmp->prev_sibling=0; - return tmp; - } - -template -template -iter tree::append_child(iter position, const T& x) - { - // If your program fails here you probably used 'append_child' to add the top - // node to an empty tree. From version 1.45 the top element should be added - // using 'insert'. See the documentation for further information, and sorry about - // the API change. - assert(position.node!=head); - assert(position.node!=feet); - assert(position.node); - - tree_node* tmp = alloc_.allocate(1,0); - alloc_.construct(tmp, x); -// kp::constructor(&tmp->data, x); - tmp->first_child=0; - tmp->last_child=0; - - tmp->parent=position.node; - if(position.node->last_child!=0) { - position.node->last_child->next_sibling=tmp; - } - else { - position.node->first_child=tmp; - } - tmp->prev_sibling=position.node->last_child; - position.node->last_child=tmp; - tmp->next_sibling=0; - return tmp; - } - -template -template -iter tree::prepend_child(iter position, const T& x) - { - assert(position.node!=head); - assert(position.node!=feet); - assert(position.node); - - tree_node* tmp = alloc_.allocate(1,0); - alloc_.construct(tmp, x); -// kp::constructor(&tmp->data, x); - tmp->first_child=0; - tmp->last_child=0; - - tmp->parent=position.node; - if(position.node->first_child!=0) { - position.node->first_child->prev_sibling=tmp; - } - else { - position.node->last_child=tmp; - } - tmp->next_sibling=position.node->first_child; - position.node->first_child=tmp; - tmp->prev_sibling=0; - return tmp; - } - -template -template -iter tree::append_child(iter position, iter other) - { - assert(position.node!=head); - assert(position.node!=feet); - assert(position.node); - - sibling_iterator aargh=append_child(position, value_type()); - return replace(aargh, other); - } - -template -template -iter tree::prepend_child(iter position, iter other) - { - assert(position.node!=head); - assert(position.node!=feet); - assert(position.node); - - sibling_iterator aargh=prepend_child(position, value_type()); - return replace(aargh, other); - } - -template -template -iter tree::append_children(iter position, sibling_iterator from, sibling_iterator to) - { - assert(position.node!=head); - assert(position.node!=feet); - assert(position.node); - - iter ret=from; - - while(from!=to) { - insert_subtree(position.end(), from); - ++from; - } - return ret; - } - -template -template -iter tree::prepend_children(iter position, sibling_iterator from, sibling_iterator to) - { - assert(position.node!=head); - assert(position.node!=feet); - assert(position.node); - - iter ret=from; - - while(from!=to) { - insert_subtree(position.begin(), from); - ++from; - } - return ret; - } - -template -typename tree::pre_order_iterator tree::set_head(const T& x) - { - assert(head->next_sibling==feet); - return insert(iterator(feet), x); - } - -template -template -iter tree::insert(iter position, const T& x) - { - if(position.node==0) { - position.node=feet; // Backward compatibility: when calling insert on a null node, - // insert before the feet. - } - tree_node* tmp = alloc_.allocate(1,0); - alloc_.construct(tmp, x); -// kp::constructor(&tmp->data, x); - tmp->first_child=0; - tmp->last_child=0; - - tmp->parent=position.node->parent; - tmp->next_sibling=position.node; - tmp->prev_sibling=position.node->prev_sibling; - position.node->prev_sibling=tmp; - - if(tmp->prev_sibling==0) { - if(tmp->parent) // when inserting nodes at the head, there is no parent - tmp->parent->first_child=tmp; - } - else - tmp->prev_sibling->next_sibling=tmp; - return tmp; - } - -template -typename tree::sibling_iterator tree::insert(sibling_iterator position, const T& x) - { - tree_node* tmp = alloc_.allocate(1,0); - alloc_.construct(tmp, x); -// kp::constructor(&tmp->data, x); - tmp->first_child=0; - tmp->last_child=0; - - tmp->next_sibling=position.node; - if(position.node==0) { // iterator points to end of a subtree - tmp->parent=position.parent_; - tmp->prev_sibling=position.range_last(); - tmp->parent->last_child=tmp; - } - else { - tmp->parent=position.node->parent; - tmp->prev_sibling=position.node->prev_sibling; - position.node->prev_sibling=tmp; - } - - if(tmp->prev_sibling==0) { - if(tmp->parent) // when inserting nodes at the head, there is no parent - tmp->parent->first_child=tmp; - } - else - tmp->prev_sibling->next_sibling=tmp; - return tmp; - } - -template -template -iter tree::insert_after(iter position, const T& x) - { - tree_node* tmp = alloc_.allocate(1,0); - alloc_.construct(tmp, x); -// kp::constructor(&tmp->data, x); - tmp->first_child=0; - tmp->last_child=0; - - tmp->parent=position.node->parent; - tmp->prev_sibling=position.node; - tmp->next_sibling=position.node->next_sibling; - position.node->next_sibling=tmp; - - if(tmp->next_sibling==0) { - if(tmp->parent) // when inserting nodes at the head, there is no parent - tmp->parent->last_child=tmp; - } - else { - tmp->next_sibling->prev_sibling=tmp; - } - return tmp; - } - -template -template -iter tree::insert_subtree(iter position, const iterator_base& subtree) - { - // insert dummy - iter it=insert(position, value_type()); - // replace dummy with subtree - return replace(it, subtree); - } - -template -template -iter tree::insert_subtree_after(iter position, const iterator_base& subtree) - { - // insert dummy - iter it=insert_after(position, value_type()); - // replace dummy with subtree - return replace(it, subtree); - } - -// template -// template -// iter tree::insert_subtree(sibling_iterator position, iter subtree) -// { -// // insert dummy -// iter it(insert(position, value_type())); -// // replace dummy with subtree -// return replace(it, subtree); -// } - -template -template -iter tree::replace(iter position, const T& x) - { -// kp::destructor(&position.node->data); -// kp::constructor(&position.node->data, x); - position.node->data=x; -// alloc_.destroy(position.node); -// alloc_.construct(position.node, x); - return position; - } - -template -template -iter tree::replace(iter position, const iterator_base& from) - { - assert(position.node!=head); - tree_node *current_from=from.node; - tree_node *start_from=from.node; - tree_node *current_to =position.node; - - // replace the node at position with head of the replacement tree at from -// std::cout << "warning!" << position.node << std::endl; - erase_children(position); -// std::cout << "no warning!" << std::endl; - tree_node* tmp = alloc_.allocate(1,0); - alloc_.construct(tmp, (*from)); -// kp::constructor(&tmp->data, (*from)); - tmp->first_child=0; - tmp->last_child=0; - if(current_to->prev_sibling==0) { - if(current_to->parent!=0) - current_to->parent->first_child=tmp; - } - else { - current_to->prev_sibling->next_sibling=tmp; - } - tmp->prev_sibling=current_to->prev_sibling; - if(current_to->next_sibling==0) { - if(current_to->parent!=0) - current_to->parent->last_child=tmp; - } - else { - current_to->next_sibling->prev_sibling=tmp; - } - tmp->next_sibling=current_to->next_sibling; - tmp->parent=current_to->parent; -// kp::destructor(¤t_to->data); - alloc_.destroy(current_to); - alloc_.deallocate(current_to,1); - current_to=tmp; - - // only at this stage can we fix 'last' - tree_node *last=from.node->next_sibling; - - pre_order_iterator toit=tmp; - // copy all children - do { - assert(current_from!=0); - if(current_from->first_child != 0) { - current_from=current_from->first_child; - toit=append_child(toit, current_from->data); - } - else { - while(current_from->next_sibling==0 && current_from!=start_from) { - current_from=current_from->parent; - toit=parent(toit); - assert(current_from!=0); - } - current_from=current_from->next_sibling; - if(current_from!=last) { - toit=append_child(parent(toit), current_from->data); - } - } - } while(current_from!=last); - - return current_to; - } - -template -typename tree::sibling_iterator tree::replace( - sibling_iterator orig_begin, - sibling_iterator orig_end, - sibling_iterator new_begin, - sibling_iterator new_end) - { - tree_node *orig_first=orig_begin.node; - tree_node *new_first=new_begin.node; - tree_node *orig_last=orig_first; - while((++orig_begin)!=orig_end) - orig_last=orig_last->next_sibling; - tree_node *new_last=new_first; - while((++new_begin)!=new_end) - new_last=new_last->next_sibling; - - // insert all siblings in new_first..new_last before orig_first - bool first=true; - pre_order_iterator ret; - while(1==1) { - pre_order_iterator tt=insert_subtree(pre_order_iterator(orig_first), pre_order_iterator(new_first)); - if(first) { - ret=tt; - first=false; - } - if(new_first==new_last) - break; - new_first=new_first->next_sibling; - } - - // erase old range of siblings - bool last=false; - tree_node *next=orig_first; - while(1==1) { - if(next==orig_last) - last=true; - next=next->next_sibling; - erase((pre_order_iterator)orig_first); - if(last) - break; - orig_first=next; - } - return ret; - } - -template -template -iter tree::flatten(iter position) - { - if(position.node->first_child==0) - return position; - - tree_node *tmp=position.node->first_child; - while(tmp) { - tmp->parent=position.node->parent; - tmp=tmp->next_sibling; - } - if(position.node->next_sibling) { - position.node->last_child->next_sibling=position.node->next_sibling; - position.node->next_sibling->prev_sibling=position.node->last_child; - } - else { - position.node->parent->last_child=position.node->last_child; - } - position.node->next_sibling=position.node->first_child; - position.node->next_sibling->prev_sibling=position.node; - position.node->first_child=0; - position.node->last_child=0; - - return position; - } - - -template -template -iter tree::reparent(iter position, sibling_iterator begin, sibling_iterator end) - { - tree_node *first=begin.node; - tree_node *last=first; - - assert(first!=position.node); - - if(begin==end) return begin; - // determine last node - while((++begin)!=end) { - last=last->next_sibling; - } - // move subtree - if(first->prev_sibling==0) { - first->parent->first_child=last->next_sibling; - } - else { - first->prev_sibling->next_sibling=last->next_sibling; - } - if(last->next_sibling==0) { - last->parent->last_child=first->prev_sibling; - } - else { - last->next_sibling->prev_sibling=first->prev_sibling; - } - if(position.node->first_child==0) { - position.node->first_child=first; - position.node->last_child=last; - first->prev_sibling=0; - } - else { - position.node->last_child->next_sibling=first; - first->prev_sibling=position.node->last_child; - position.node->last_child=last; - } - last->next_sibling=0; - - tree_node *pos=first; - for(;;) { - pos->parent=position.node; - if(pos==last) break; - pos=pos->next_sibling; - } - - return first; - } - -template -template iter tree::reparent(iter position, iter from) - { - if(from.node->first_child==0) return position; - return reparent(position, from.node->first_child, end(from)); - } - -template -template iter tree::wrap(iter position, const T& x) - { - assert(position.node!=0); - sibling_iterator fr=position, to=position; - ++to; - iter ret = insert(position, x); - reparent(ret, fr, to); - return ret; - } - -template -template iter tree::move_after(iter target, iter source) - { - tree_node *dst=target.node; - tree_node *src=source.node; - assert(dst); - assert(src); - - if(dst==src) return source; - if(dst->next_sibling) - if(dst->next_sibling==src) // already in the right spot - return source; - - // take src out of the tree - if(src->prev_sibling!=0) src->prev_sibling->next_sibling=src->next_sibling; - else src->parent->first_child=src->next_sibling; - if(src->next_sibling!=0) src->next_sibling->prev_sibling=src->prev_sibling; - else src->parent->last_child=src->prev_sibling; - - // connect it to the new point - if(dst->next_sibling!=0) dst->next_sibling->prev_sibling=src; - else dst->parent->last_child=src; - src->next_sibling=dst->next_sibling; - dst->next_sibling=src; - src->prev_sibling=dst; - src->parent=dst->parent; - return src; - } - -template -template iter tree::move_before(iter target, iter source) - { - tree_node *dst=target.node; - tree_node *src=source.node; - assert(dst); - assert(src); - - if(dst==src) return source; - if(dst->prev_sibling) - if(dst->prev_sibling==src) // already in the right spot - return source; - - // take src out of the tree - if(src->prev_sibling!=0) src->prev_sibling->next_sibling=src->next_sibling; - else src->parent->first_child=src->next_sibling; - if(src->next_sibling!=0) src->next_sibling->prev_sibling=src->prev_sibling; - else src->parent->last_child=src->prev_sibling; - - // connect it to the new point - if(dst->prev_sibling!=0) dst->prev_sibling->next_sibling=src; - else dst->parent->first_child=src; - src->prev_sibling=dst->prev_sibling; - dst->prev_sibling=src; - src->next_sibling=dst; - src->parent=dst->parent; - return src; - } - -// specialisation for sibling_iterators -template -typename tree::sibling_iterator tree::move_before(sibling_iterator target, - sibling_iterator source) - { - tree_node *dst=target.node; - tree_node *src=source.node; - tree_node *dst_prev_sibling; - if(dst==0) { // must then be an end iterator - dst_prev_sibling=target.parent_->last_child; - assert(dst_prev_sibling); - } - else dst_prev_sibling=dst->prev_sibling; - assert(src); - - if(dst==src) return source; - if(dst_prev_sibling) - if(dst_prev_sibling==src) // already in the right spot - return source; - - // take src out of the tree - if(src->prev_sibling!=0) src->prev_sibling->next_sibling=src->next_sibling; - else src->parent->first_child=src->next_sibling; - if(src->next_sibling!=0) src->next_sibling->prev_sibling=src->prev_sibling; - else src->parent->last_child=src->prev_sibling; - - // connect it to the new point - if(dst_prev_sibling!=0) dst_prev_sibling->next_sibling=src; - else target.parent_->first_child=src; - src->prev_sibling=dst_prev_sibling; - if(dst) { - dst->prev_sibling=src; - src->parent=dst->parent; - } - src->next_sibling=dst; - return src; - } - -template -template iter tree::move_ontop(iter target, iter source) - { - tree_node *dst=target.node; - tree_node *src=source.node; - assert(dst); - assert(src); - - if(dst==src) return source; - -// if(dst==src->prev_sibling) { -// -// } - - // remember connection points - tree_node *b_prev_sibling=dst->prev_sibling; - tree_node *b_next_sibling=dst->next_sibling; - tree_node *b_parent=dst->parent; - - // remove target - erase(target); - - // take src out of the tree - if(src->prev_sibling!=0) src->prev_sibling->next_sibling=src->next_sibling; - else src->parent->first_child=src->next_sibling; - if(src->next_sibling!=0) src->next_sibling->prev_sibling=src->prev_sibling; - else src->parent->last_child=src->prev_sibling; - - // connect it to the new point - if(b_prev_sibling!=0) b_prev_sibling->next_sibling=src; - else b_parent->first_child=src; - if(b_next_sibling!=0) b_next_sibling->prev_sibling=src; - else b_parent->last_child=src; - src->prev_sibling=b_prev_sibling; - src->next_sibling=b_next_sibling; - src->parent=b_parent; - return src; - } - -template -void tree::merge(sibling_iterator to1, sibling_iterator to2, - sibling_iterator from1, sibling_iterator from2, - bool duplicate_leaves) - { - sibling_iterator fnd; - while(from1!=from2) { - if((fnd=std::find(to1, to2, (*from1))) != to2) { // element found - if(from1.begin()==from1.end()) { // full depth reached - if(duplicate_leaves) - append_child(parent(to1), (*from1)); - } - else { // descend further - merge(fnd.begin(), fnd.end(), from1.begin(), from1.end(), duplicate_leaves); - } - } - else { // element missing - insert_subtree(to2, from1); - } - ++from1; - } - } - - -template -void tree::sort(sibling_iterator from, sibling_iterator to, bool deep) - { - std::less comp; - sort(from, to, comp, deep); - } - -template -template -void tree::sort(sibling_iterator from, sibling_iterator to, - StrictWeakOrdering comp, bool deep) - { - if(from==to) return; - // make list of sorted nodes - // CHECK: if multiset stores equivalent nodes in the order in which they - // are inserted, then this routine should be called 'stable_sort'. - std::multiset > nodes(comp); - sibling_iterator it=from, it2=to; - while(it != to) { - nodes.insert(it.node); - ++it; - } - // reassemble - --it2; - - // prev and next are the nodes before and after the sorted range - tree_node *prev=from.node->prev_sibling; - tree_node *next=it2.node->next_sibling; - typename std::multiset >::iterator nit=nodes.begin(), eit=nodes.end(); - if(prev==0) { - if((*nit)->parent!=0) // to catch "sorting the head" situations, when there is no parent - (*nit)->parent->first_child=(*nit); - } - else prev->next_sibling=(*nit); - - --eit; - while(nit!=eit) { - (*nit)->prev_sibling=prev; - if(prev) - prev->next_sibling=(*nit); - prev=(*nit); - ++nit; - } - // prev now points to the last-but-one node in the sorted range - if(prev) - prev->next_sibling=(*eit); - - // eit points to the last node in the sorted range. - (*eit)->next_sibling=next; - (*eit)->prev_sibling=prev; // missed in the loop above - if(next==0) { - if((*eit)->parent!=0) // to catch "sorting the head" situations, when there is no parent - (*eit)->parent->last_child=(*eit); - } - else next->prev_sibling=(*eit); - - if(deep) { // sort the children of each node too - sibling_iterator bcs(*nodes.begin()); - sibling_iterator ecs(*eit); - ++ecs; - while(bcs!=ecs) { - sort(begin(bcs), end(bcs), comp, deep); - ++bcs; - } - } - } - -template -template -bool tree::equal(const iter& one_, const iter& two, const iter& three_) const - { - std::equal_to comp; - return equal(one_, two, three_, comp); - } - -template -template -bool tree::equal_subtree(const iter& one_, const iter& two_) const - { - std::equal_to comp; - return equal_subtree(one_, two_, comp); - } - -template -template -bool tree::equal(const iter& one_, const iter& two, const iter& three_, BinaryPredicate fun) const - { - pre_order_iterator one(one_), three(three_); - -// if(one==two && is_valid(three) && three.number_of_children()!=0) -// return false; - while(one!=two && is_valid(three)) { - if(!fun(*one,*three)) - return false; - if(one.number_of_children()!=three.number_of_children()) - return false; - ++one; - ++three; - } - return true; - } - -template -template -bool tree::equal_subtree(const iter& one_, const iter& two_, BinaryPredicate fun) const - { - pre_order_iterator one(one_), two(two_); - - if(!fun(*one,*two)) return false; - if(number_of_children(one)!=number_of_children(two)) return false; - return equal(begin(one),end(one),begin(two),fun); - } - -template -tree tree::subtree(sibling_iterator from, sibling_iterator to) const - { - tree tmp; - tmp.set_head(value_type()); - tmp.replace(tmp.begin(), tmp.end(), from, to); - return tmp; - } - -template -void tree::subtree(tree& tmp, sibling_iterator from, sibling_iterator to) const - { - tmp.set_head(value_type()); - tmp.replace(tmp.begin(), tmp.end(), from, to); - } - -template -size_t tree::size() const - { - size_t i=0; - pre_order_iterator it=begin(), eit=end(); - while(it!=eit) { - ++i; - ++it; - } - return i; - } - -template -size_t tree::size(const iterator_base& top) const - { - size_t i=0; - pre_order_iterator it=top, eit=top; - eit.skip_children(); - ++eit; - while(it!=eit) { - ++i; - ++it; - } - return i; - } - -template -bool tree::empty() const - { - pre_order_iterator it=begin(), eit=end(); - return (it==eit); - } - -template -int tree::depth(const iterator_base& it) - { - tree_node* pos=it.node; - assert(pos!=0); - int ret=0; - while(pos->parent!=0) { - pos=pos->parent; - ++ret; - } - return ret; - } - -template -int tree::depth(const iterator_base& it, const iterator_base& root) - { - tree_node* pos=it.node; - assert(pos!=0); - int ret=0; - while(pos->parent!=0 && pos!=root.node) { - pos=pos->parent; - ++ret; - } - return ret; - } - -template -int tree::max_depth() const - { - int maxd=-1; - for(tree_node *it = head->next_sibling; it!=feet; it=it->next_sibling) - maxd=std::max(maxd, max_depth(it)); - - return maxd; - } - - -template -int tree::max_depth(const iterator_base& pos) const - { - tree_node *tmp=pos.node; - - if(tmp==0 || tmp==head || tmp==feet) return -1; - - int curdepth=0, maxdepth=0; - while(true) { // try to walk the bottom of the tree - while(tmp->first_child==0) { - if(tmp==pos.node) return maxdepth; - if(tmp->next_sibling==0) { - // try to walk up and then right again - do { - tmp=tmp->parent; - if(tmp==0) return maxdepth; - --curdepth; - } while(tmp->next_sibling==0); - } - if(tmp==pos.node) return maxdepth; - tmp=tmp->next_sibling; - } - tmp=tmp->first_child; - ++curdepth; - maxdepth=std::max(curdepth, maxdepth); - } - } - -template -unsigned int tree::number_of_children(const iterator_base& it) - { - tree_node *pos=it.node->first_child; - if(pos==0) return 0; - - unsigned int ret=1; -// while(pos!=it.node->last_child) { -// ++ret; -// pos=pos->next_sibling; -// } - while((pos=pos->next_sibling)) - ++ret; - return ret; - } - -template -unsigned int tree::number_of_siblings(const iterator_base& it) const - { - tree_node *pos=it.node; - unsigned int ret=0; - // count forward - while(pos->next_sibling && - pos->next_sibling!=head && - pos->next_sibling!=feet) { - ++ret; - pos=pos->next_sibling; - } - // count backward - pos=it.node; - while(pos->prev_sibling && - pos->prev_sibling!=head && - pos->prev_sibling!=feet) { - ++ret; - pos=pos->prev_sibling; - } - - return ret; - } - -template -void tree::swap(sibling_iterator it) - { - tree_node *nxt=it.node->next_sibling; - if(nxt) { - if(it.node->prev_sibling) - it.node->prev_sibling->next_sibling=nxt; - else - it.node->parent->first_child=nxt; - nxt->prev_sibling=it.node->prev_sibling; - tree_node *nxtnxt=nxt->next_sibling; - if(nxtnxt) - nxtnxt->prev_sibling=it.node; - else - it.node->parent->last_child=it.node; - nxt->next_sibling=it.node; - it.node->prev_sibling=nxt; - it.node->next_sibling=nxtnxt; - } - } - -template -void tree::swap(iterator one, iterator two) - { - // if one and two are adjacent siblings, use the sibling swap - if(one.node->next_sibling==two.node) swap(one); - else if(two.node->next_sibling==one.node) swap(two); - else { - tree_node *nxt1=one.node->next_sibling; - tree_node *nxt2=two.node->next_sibling; - tree_node *pre1=one.node->prev_sibling; - tree_node *pre2=two.node->prev_sibling; - tree_node *par1=one.node->parent; - tree_node *par2=two.node->parent; - - // reconnect - one.node->parent=par2; - one.node->next_sibling=nxt2; - if(nxt2) nxt2->prev_sibling=one.node; - else par2->last_child=one.node; - one.node->prev_sibling=pre2; - if(pre2) pre2->next_sibling=one.node; - else par2->first_child=one.node; - - two.node->parent=par1; - two.node->next_sibling=nxt1; - if(nxt1) nxt1->prev_sibling=two.node; - else par1->last_child=two.node; - two.node->prev_sibling=pre1; - if(pre1) pre1->next_sibling=two.node; - else par1->first_child=two.node; - } - } - -// template -// tree::iterator tree::find_subtree( -// sibling_iterator subfrom, sibling_iterator subto, iterator from, iterator to, -// BinaryPredicate fun) const -// { -// assert(1==0); // this routine is not finished yet. -// while(from!=to) { -// if(fun(*subfrom, *from)) { -// -// } -// } -// return to; -// } - -template -bool tree::is_in_subtree(const iterator_base& it, const iterator_base& begin, - const iterator_base& end) const - { - // FIXME: this should be optimised. - pre_order_iterator tmp=begin; - while(tmp!=end) { - if(tmp==it) return true; - ++tmp; - } - return false; - } - -template -bool tree::is_valid(const iterator_base& it) const - { - if(it.node==0 || it.node==feet || it.node==head) return false; - else return true; - } - -template -typename tree::iterator tree::lowest_common_ancestor( - const iterator_base& one, const iterator_base& two) const - { - std::set parents; - - // Walk up from 'one' storing all parents. - iterator walk=one; - do { - walk=parent(walk); - parents.insert(walk); - } while( is_valid(parent(walk)) ); - - // Walk up from 'two' until we encounter a node in parents. - walk=two; - do { - walk=parent(walk); - if(parents.find(walk) != parents.end()) break; - } while( is_valid(parent(walk)) ); - - return walk; - } - -template -unsigned int tree::index(sibling_iterator it) const - { - unsigned int ind=0; - if(it.node->parent==0) { - while(it.node->prev_sibling!=head) { - it.node=it.node->prev_sibling; - ++ind; - } - } - else { - while(it.node->prev_sibling!=0) { - it.node=it.node->prev_sibling; - ++ind; - } - } - return ind; - } - -template -typename tree::sibling_iterator tree::sibling(const iterator_base& it, unsigned int num) - { - tree_node *tmp; - if(it.node->parent==0) { - tmp=head->next_sibling; - while(num) { - tmp = tmp->next_sibling; - --num; - } - } - else { - tmp=it.node->parent->first_child; - while(num) { - assert(tmp!=0); - tmp = tmp->next_sibling; - --num; - } - } - return tmp; - } - -template -void tree::debug_verify_consistency() const - { - iterator it=begin(); - while(it!=end()) { - if(it.node->parent!=0) { - if(it.node->prev_sibling==0) - assert(it.node->parent->first_child==it.node); - else - assert(it.node->prev_sibling->next_sibling==it.node); - if(it.node->next_sibling==0) - assert(it.node->parent->last_child==it.node); - else - assert(it.node->next_sibling->prev_sibling==it.node); - } - ++it; - } - } - -template -typename tree::sibling_iterator tree::child(const iterator_base& it, unsigned int num) - { - tree_node *tmp=it.node->first_child; - while(num--) { - assert(tmp!=0); - tmp=tmp->next_sibling; - } - return tmp; - } - - - - -// Iterator base - -template -tree::iterator_base::iterator_base() - : node(0), skip_current_children_(false) - { - } - -template -tree::iterator_base::iterator_base(tree_node *tn) - : node(tn), skip_current_children_(false) - { - } - -template -T& tree::iterator_base::operator*() const - { - return node->data; - } - -template -T* tree::iterator_base::operator->() const - { - return &(node->data); - } - -template -bool tree::post_order_iterator::operator!=(const post_order_iterator& other) const - { - if(other.node!=this->node) return true; - else return false; - } - -template -bool tree::post_order_iterator::operator==(const post_order_iterator& other) const - { - if(other.node==this->node) return true; - else return false; - } - -template -bool tree::pre_order_iterator::operator!=(const pre_order_iterator& other) const - { - if(other.node!=this->node) return true; - else return false; - } - -template -bool tree::pre_order_iterator::operator==(const pre_order_iterator& other) const - { - if(other.node==this->node) return true; - else return false; - } - -template -bool tree::sibling_iterator::operator!=(const sibling_iterator& other) const - { - if(other.node!=this->node) return true; - else return false; - } - -template -bool tree::sibling_iterator::operator==(const sibling_iterator& other) const - { - if(other.node==this->node) return true; - else return false; - } - -template -bool tree::leaf_iterator::operator!=(const leaf_iterator& other) const - { - if(other.node!=this->node) return true; - else return false; - } - -template -bool tree::leaf_iterator::operator==(const leaf_iterator& other) const - { - if(other.node==this->node && other.top_node==this->top_node) return true; - else return false; - } - -template -typename tree::sibling_iterator tree::iterator_base::begin() const - { - if(node->first_child==0) - return end(); - - sibling_iterator ret(node->first_child); - ret.parent_=this->node; - return ret; - } - -template -typename tree::sibling_iterator tree::iterator_base::end() const - { - sibling_iterator ret(0); - ret.parent_=node; - return ret; - } - -template -void tree::iterator_base::skip_children() - { - skip_current_children_=true; - } - -template -void tree::iterator_base::skip_children(bool skip) - { - skip_current_children_=skip; - } - -template -unsigned int tree::iterator_base::number_of_children() const - { - tree_node *pos=node->first_child; - if(pos==0) return 0; - - unsigned int ret=1; - while(pos!=node->last_child) { - ++ret; - pos=pos->next_sibling; - } - return ret; - } - - - -// Pre-order iterator - -template -tree::pre_order_iterator::pre_order_iterator() - : iterator_base(0) - { - } - -template -tree::pre_order_iterator::pre_order_iterator(tree_node *tn) - : iterator_base(tn) - { - } - -template -tree::pre_order_iterator::pre_order_iterator(const iterator_base &other) - : iterator_base(other.node) - { - } - -template -tree::pre_order_iterator::pre_order_iterator(const sibling_iterator& other) - : iterator_base(other.node) - { - if(this->node==0) { - if(other.range_last()!=0) - this->node=other.range_last(); - else - this->node=other.parent_; - this->skip_children(); - ++(*this); - } - } - -template -typename tree::pre_order_iterator& tree::pre_order_iterator::operator++() - { - assert(this->node!=0); - if(!this->skip_current_children_ && this->node->first_child != 0) { - this->node=this->node->first_child; - } - else { - this->skip_current_children_=false; - while(this->node->next_sibling==0) { - this->node=this->node->parent; - if(this->node==0) - return *this; - } - this->node=this->node->next_sibling; - } - return *this; - } - -template -typename tree::pre_order_iterator& tree::pre_order_iterator::operator--() - { - assert(this->node!=0); - if(this->node->prev_sibling) { - this->node=this->node->prev_sibling; - while(this->node->last_child) - this->node=this->node->last_child; - } - else { - this->node=this->node->parent; - if(this->node==0) - return *this; - } - return *this; -} - -template -typename tree::pre_order_iterator tree::pre_order_iterator::operator++(int) - { - pre_order_iterator copy = *this; - ++(*this); - return copy; - } - -template -typename tree::pre_order_iterator tree::pre_order_iterator::operator--(int) -{ - pre_order_iterator copy = *this; - --(*this); - return copy; -} - -template -typename tree::pre_order_iterator& tree::pre_order_iterator::operator+=(unsigned int num) - { - while(num>0) { - ++(*this); - --num; - } - return (*this); - } - -template -typename tree::pre_order_iterator& tree::pre_order_iterator::operator-=(unsigned int num) - { - while(num>0) { - --(*this); - --num; - } - return (*this); - } - - - -// Post-order iterator - -template -tree::post_order_iterator::post_order_iterator() - : iterator_base(0) - { - } - -template -tree::post_order_iterator::post_order_iterator(tree_node *tn) - : iterator_base(tn) - { - } - -template -tree::post_order_iterator::post_order_iterator(const iterator_base &other) - : iterator_base(other.node) - { - } - -template -tree::post_order_iterator::post_order_iterator(const sibling_iterator& other) - : iterator_base(other.node) - { - if(this->node==0) { - if(other.range_last()!=0) - this->node=other.range_last(); - else - this->node=other.parent_; - this->skip_children(); - ++(*this); - } - } - -template -typename tree::post_order_iterator& tree::post_order_iterator::operator++() - { - assert(this->node!=0); - if(this->node->next_sibling==0) { - this->node=this->node->parent; - this->skip_current_children_=false; - } - else { - this->node=this->node->next_sibling; - if(this->skip_current_children_) { - this->skip_current_children_=false; - } - else { - while(this->node->first_child) - this->node=this->node->first_child; - } - } - return *this; - } - -template -typename tree::post_order_iterator& tree::post_order_iterator::operator--() - { - assert(this->node!=0); - if(this->skip_current_children_ || this->node->last_child==0) { - this->skip_current_children_=false; - while(this->node->prev_sibling==0) - this->node=this->node->parent; - this->node=this->node->prev_sibling; - } - else { - this->node=this->node->last_child; - } - return *this; - } - -template -typename tree::post_order_iterator tree::post_order_iterator::operator++(int) - { - post_order_iterator copy = *this; - ++(*this); - return copy; - } - -template -typename tree::post_order_iterator tree::post_order_iterator::operator--(int) - { - post_order_iterator copy = *this; - --(*this); - return copy; - } - - -template -typename tree::post_order_iterator& tree::post_order_iterator::operator+=(unsigned int num) - { - while(num>0) { - ++(*this); - --num; - } - return (*this); - } - -template -typename tree::post_order_iterator& tree::post_order_iterator::operator-=(unsigned int num) - { - while(num>0) { - --(*this); - --num; - } - return (*this); - } - -template -void tree::post_order_iterator::descend_all() - { - assert(this->node!=0); - while(this->node->first_child) - this->node=this->node->first_child; - } - - -// Breadth-first iterator - -template -tree::breadth_first_queued_iterator::breadth_first_queued_iterator() - : iterator_base() - { - } - -template -tree::breadth_first_queued_iterator::breadth_first_queued_iterator(tree_node *tn) - : iterator_base(tn) - { - traversal_queue.push(tn); - } - -template -tree::breadth_first_queued_iterator::breadth_first_queued_iterator(const iterator_base& other) - : iterator_base(other.node) - { - traversal_queue.push(other.node); - } - -template -bool tree::breadth_first_queued_iterator::operator!=(const breadth_first_queued_iterator& other) const - { - if(other.node!=this->node) return true; - else return false; - } - -template -bool tree::breadth_first_queued_iterator::operator==(const breadth_first_queued_iterator& other) const - { - if(other.node==this->node) return true; - else return false; - } - -template -typename tree::breadth_first_queued_iterator& tree::breadth_first_queued_iterator::operator++() - { - assert(this->node!=0); - - // Add child nodes and pop current node - sibling_iterator sib=this->begin(); - while(sib!=this->end()) { - traversal_queue.push(sib.node); - ++sib; - } - traversal_queue.pop(); - if(traversal_queue.size()>0) - this->node=traversal_queue.front(); - else - this->node=0; - return (*this); - } - -template -typename tree::breadth_first_queued_iterator tree::breadth_first_queued_iterator::operator++(int) - { - breadth_first_queued_iterator copy = *this; - ++(*this); - return copy; - } - -template -typename tree::breadth_first_queued_iterator& tree::breadth_first_queued_iterator::operator+=(unsigned int num) - { - while(num>0) { - ++(*this); - --num; - } - return (*this); - } - - - -// Fixed depth iterator - -template -tree::fixed_depth_iterator::fixed_depth_iterator() - : iterator_base() - { - } - -template -tree::fixed_depth_iterator::fixed_depth_iterator(tree_node *tn) - : iterator_base(tn), top_node(0) - { - } - -template -tree::fixed_depth_iterator::fixed_depth_iterator(const iterator_base& other) - : iterator_base(other.node), top_node(0) - { - } - -template -tree::fixed_depth_iterator::fixed_depth_iterator(const sibling_iterator& other) - : iterator_base(other.node), top_node(0) - { - } - -template -tree::fixed_depth_iterator::fixed_depth_iterator(const fixed_depth_iterator& other) - : iterator_base(other.node), top_node(other.top_node) - { - } - -template -bool tree::fixed_depth_iterator::operator==(const fixed_depth_iterator& other) const - { - if(other.node==this->node && other.top_node==top_node) return true; - else return false; - } - -template -bool tree::fixed_depth_iterator::operator!=(const fixed_depth_iterator& other) const - { - if(other.node!=this->node || other.top_node!=top_node) return true; - else return false; - } - -template -typename tree::fixed_depth_iterator& tree::fixed_depth_iterator::operator++() - { - assert(this->node!=0); - - if(this->node->next_sibling) { - this->node=this->node->next_sibling; - } - else { - int relative_depth=0; - upper: - do { - if(this->node==this->top_node) { - this->node=0; // FIXME: return a proper fixed_depth end iterator once implemented - return *this; - } - this->node=this->node->parent; - if(this->node==0) return *this; - --relative_depth; - } while(this->node->next_sibling==0); - lower: - this->node=this->node->next_sibling; - while(this->node->first_child==0) { - if(this->node->next_sibling==0) - goto upper; - this->node=this->node->next_sibling; - if(this->node==0) return *this; - } - while(relative_depth<0 && this->node->first_child!=0) { - this->node=this->node->first_child; - ++relative_depth; - } - if(relative_depth<0) { - if(this->node->next_sibling==0) goto upper; - else goto lower; - } - } - return *this; - } - -template -typename tree::fixed_depth_iterator& tree::fixed_depth_iterator::operator--() - { - assert(this->node!=0); - - if(this->node->prev_sibling) { - this->node=this->node->prev_sibling; - } - else { - int relative_depth=0; - upper: - do { - if(this->node==this->top_node) { - this->node=0; - return *this; - } - this->node=this->node->parent; - if(this->node==0) return *this; - --relative_depth; - } while(this->node->prev_sibling==0); - lower: - this->node=this->node->prev_sibling; - while(this->node->last_child==0) { - if(this->node->prev_sibling==0) - goto upper; - this->node=this->node->prev_sibling; - if(this->node==0) return *this; - } - while(relative_depth<0 && this->node->last_child!=0) { - this->node=this->node->last_child; - ++relative_depth; - } - if(relative_depth<0) { - if(this->node->prev_sibling==0) goto upper; - else goto lower; - } - } - return *this; - -// -// -// assert(this->node!=0); -// if(this->node->prev_sibling!=0) { -// this->node=this->node->prev_sibling; -// assert(this->node!=0); -// if(this->node->parent==0 && this->node->prev_sibling==0) // head element -// this->node=0; -// } -// else { -// tree_node *par=this->node->parent; -// do { -// par=par->prev_sibling; -// if(par==0) { // FIXME: need to keep track of this! -// this->node=0; -// return *this; -// } -// } while(par->last_child==0); -// this->node=par->last_child; -// } -// return *this; - } - -template -typename tree::fixed_depth_iterator tree::fixed_depth_iterator::operator++(int) - { - fixed_depth_iterator copy = *this; - ++(*this); - return copy; - } - -template -typename tree::fixed_depth_iterator tree::fixed_depth_iterator::operator--(int) - { - fixed_depth_iterator copy = *this; - --(*this); - return copy; - } - -template -typename tree::fixed_depth_iterator& tree::fixed_depth_iterator::operator-=(unsigned int num) - { - while(num>0) { - --(*this); - --(num); - } - return (*this); - } - -template -typename tree::fixed_depth_iterator& tree::fixed_depth_iterator::operator+=(unsigned int num) - { - while(num>0) { - ++(*this); - --(num); - } - return *this; - } - - -// Sibling iterator - -template -tree::sibling_iterator::sibling_iterator() - : iterator_base() - { - set_parent_(); - } - -template -tree::sibling_iterator::sibling_iterator(tree_node *tn) - : iterator_base(tn) - { - set_parent_(); - } - -template -tree::sibling_iterator::sibling_iterator(const iterator_base& other) - : iterator_base(other.node) - { - set_parent_(); - } - -template -tree::sibling_iterator::sibling_iterator(const sibling_iterator& other) - : iterator_base(other), parent_(other.parent_) - { - } - -template -void tree::sibling_iterator::set_parent_() - { - parent_=0; - if(this->node==0) return; - if(this->node->parent!=0) - parent_=this->node->parent; - } - -template -typename tree::sibling_iterator& tree::sibling_iterator::operator++() - { - if(this->node) - this->node=this->node->next_sibling; - return *this; - } - -template -typename tree::sibling_iterator& tree::sibling_iterator::operator--() - { - if(this->node) this->node=this->node->prev_sibling; - else { - assert(parent_); - this->node=parent_->last_child; - } - return *this; -} - -template -typename tree::sibling_iterator tree::sibling_iterator::operator++(int) - { - sibling_iterator copy = *this; - ++(*this); - return copy; - } - -template -typename tree::sibling_iterator tree::sibling_iterator::operator--(int) - { - sibling_iterator copy = *this; - --(*this); - return copy; - } - -template -typename tree::sibling_iterator& tree::sibling_iterator::operator+=(unsigned int num) - { - while(num>0) { - ++(*this); - --num; - } - return (*this); - } - -template -typename tree::sibling_iterator& tree::sibling_iterator::operator-=(unsigned int num) - { - while(num>0) { - --(*this); - --num; - } - return (*this); - } - -template -typename tree::tree_node *tree::sibling_iterator::range_first() const - { - tree_node *tmp=parent_->first_child; - return tmp; - } - -template -typename tree::tree_node *tree::sibling_iterator::range_last() const - { - return parent_->last_child; - } - -// Leaf iterator - -template -tree::leaf_iterator::leaf_iterator() - : iterator_base(0), top_node(0) - { - } - -template -tree::leaf_iterator::leaf_iterator(tree_node *tn, tree_node *top) - : iterator_base(tn), top_node(top) - { - } - -template -tree::leaf_iterator::leaf_iterator(const iterator_base &other) - : iterator_base(other.node), top_node(0) - { - } - -template -tree::leaf_iterator::leaf_iterator(const sibling_iterator& other) - : iterator_base(other.node), top_node(0) - { - if(this->node==0) { - if(other.range_last()!=0) - this->node=other.range_last(); - else - this->node=other.parent_; - ++(*this); - } - } - -template -typename tree::leaf_iterator& tree::leaf_iterator::operator++() - { - assert(this->node!=0); - if(this->node->first_child!=0) { // current node is no longer leaf (children got added) - while(this->node->first_child) - this->node=this->node->first_child; - } - else { - while(this->node->next_sibling==0) { - if (this->node->parent==0) return *this; - this->node=this->node->parent; - if (top_node != 0 && this->node==top_node) return *this; - } - this->node=this->node->next_sibling; - while(this->node->first_child) - this->node=this->node->first_child; - } - return *this; - } - -template -typename tree::leaf_iterator& tree::leaf_iterator::operator--() - { - assert(this->node!=0); - while (this->node->prev_sibling==0) { - if (this->node->parent==0) return *this; - this->node=this->node->parent; - if (top_node !=0 && this->node==top_node) return *this; - } - this->node=this->node->prev_sibling; - while(this->node->last_child) - this->node=this->node->last_child; - return *this; - } - -template -typename tree::leaf_iterator tree::leaf_iterator::operator++(int) - { - leaf_iterator copy = *this; - ++(*this); - return copy; - } - -template -typename tree::leaf_iterator tree::leaf_iterator::operator--(int) - { - leaf_iterator copy = *this; - --(*this); - return copy; - } - - -template -typename tree::leaf_iterator& tree::leaf_iterator::operator+=(unsigned int num) - { - while(num>0) { - ++(*this); - --num; - } - return (*this); - } - -template -typename tree::leaf_iterator& tree::leaf_iterator::operator-=(unsigned int num) - { - while(num>0) { - --(*this); - --num; - } - return (*this); - } - -#endif - -// Local variables: -// default-tab-width: 3 -// End: diff --git a/lib/tree-2.81/src/tree_example.cc b/lib/tree-2.81/src/tree_example.cc deleted file mode 100644 index d351f51..0000000 --- a/lib/tree-2.81/src/tree_example.cc +++ /dev/null @@ -1,59 +0,0 @@ -/* - - Cadabra: a field-theory motivated computer algebra system. - Copyright (C) 2001-2009 Kasper Peeters - - This program is free software: you can redistribute it and/or - modify it under the terms of the GNU General Public License as - published by the Free Software Foundation, either version 3 of the - License, or (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -*/ - -#include -#include -#include -#include "tree.hh" - -using namespace std; - -int main(int, char **) - { - tree tr; - tree::iterator top, one, two, loc, banana; - - top=tr.begin(); - one=tr.insert(top, "one"); - two=tr.append_child(one, "two"); - tr.append_child(two, "apple"); - banana=tr.append_child(two, "banana"); - tr.append_child(banana,"cherry"); - tr.append_child(two, "peach"); - tr.append_child(one,"three"); - - loc=find(tr.begin(), tr.end(), "two"); - if(loc!=tr.end()) { - tree::sibling_iterator sib=tr.begin(loc); - while(sib!=tr.end(loc)) { - cout << (*sib) << endl; - ++sib; - } - cout << endl; - tree::iterator sib2=tr.begin(loc); - tree::iterator end2=tr.end(loc); - while(sib2!=end2) { - for(int i=0; i - - (At the moment this only contains a printing utility, thanks to Linda - Buisman ) - - This program is free software: you can redistribute it and/or - modify it under the terms of the GNU General Public License as - published by the Free Software Foundation, either version 3 of the - License, or (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -*/ - -#ifndef tree_util_hh_ -#define tree_util_hh_ - -#include -#include "tree.hh" - -namespace kptree { - -template -void print_tree_bracketed(const tree& t, std::ostream& str=std::cout); - -template -void print_subtree_bracketed(const tree& t, typename tree::iterator iRoot, - std::ostream& str=std::cout); - - - -// Iterate over all roots (the head) and print each one on a new line -// by calling printSingleRoot. - -template -void print_tree_bracketed(const tree& t, std::ostream& str) - { - int headCount = t.number_of_siblings(t.begin()); - int headNum = 0; - for(typename tree::sibling_iterator iRoots = t.begin(); iRoots != t.end(); ++iRoots, ++headNum) { - print_subtree_bracketed(t,iRoots,str); - if (headNum != headCount) { - str << std::endl; - } - } - } - - -// Print everything under this root in a flat, bracketed structure. - -template -void print_subtree_bracketed(const tree& t, typename tree::iterator iRoot, std::ostream& str) - { - if(t.empty()) return; - if (t.number_of_children(iRoot) == 0) { - str << *iRoot; - } - else { - // parent - str << *iRoot; - str << "("; - // child1, ..., childn - int siblingCount = t.number_of_siblings(t.begin(iRoot)); - int siblingNum; - typename tree::sibling_iterator iChildren; - for (iChildren = t.begin(iRoot), siblingNum = 0; iChildren != t.end(iRoot); ++iChildren, ++siblingNum) { - // recursively print child - print_subtree_bracketed(t,iChildren,str); - // comma after every child except the last one - if (siblingNum != siblingCount ) { - str << ", "; - } - } - str << ")"; - } - } - -} - -#endif diff --git a/lib/tree-2.81/src/xinlin.hh b/lib/tree-2.81/src/xinlin.hh deleted file mode 100644 index f8db036..0000000 --- a/lib/tree-2.81/src/xinlin.hh +++ /dev/null @@ -1,1579 +0,0 @@ -// STL-like templated tree class. -// Revised by: Xinlin Cao(xinlincao@gmail.com) -// Revised from Kasper Peeters's implementation.(http://www.aei.mpg.de/~peekas/tree/) -// -//# removed sibling iterator -//# added children iterator -//# removed a lot of member functions from tree and iterators -//# changed set_head() to set_root() -//# added root() member function -//# added reparent_roo() member function -//# changed implementation of operator = () -//# changed some member functions about getting iterators -//# tested all member functions -//# removed implicit conversion between different iterators -//# removed depth iterator -// This version of tree is simpler than old one. It is robust and easy for using and understanding. -// Copyright (C) 2001-2009 Kasper Peeters -// Distributed under the GNU General Public License version 3, -// (eventually to be changed to the Boost Software License). - -/** \mainpage tree.hh -\author Kasper Peeters -\version 2.65 -\date 03-Apr-2009 -\see http://www.aei.mpg.de/~peekas/tree/ -\see http://www.aei.mpg.de/~peekas/tree/ChangeLog - -The tree.hh library for C++ provides an STL-like container class -for n-ary trees, templated over the data stored at the -nodes. Various types of iterators are provided (post-order, -pre-order, and others). Where possible the access methods are -compatible with the STL or alternative algorithms are -available. -*/ - -#ifndef tree_hh_ -#define tree_hh_ - -#include -#include -#include -#include -#include -#include -#include - -// HP-style construct/destroy have gone from the standard, -// so here is a copy. - -namespace kp { - - template - void constructor(T1* p, T2& val) - { - new ((void *) p) T1(val); - } - - template - void constructor(T1* p) - { - new ((void *) p) T1; - } - - template - void destructor(T1* p) - { - p->~T1(); - } - -} - -/// A node in the tree, combining links to other nodes as well as the actual data. -template -class tree_node_ { // size: 5*4=20 bytes (on 32 bit arch), can be reduced by 8. -public: - tree_node_ *parent; - tree_node_ *first_child, *last_child; - tree_node_ *prev_sibling, *next_sibling; - T data; -}; // __attribute__((packed)); - -template > > -class tree { -protected: - typedef tree_node_ tree_node; -public: - /// Value of the data stored at a node. - typedef T value_type; - - class iterator_base; - class pre_order_iterator; - class post_order_iterator; - class children_iterator; - class leaf_iterator; - - tree(); - tree(const T&); - tree(const tree&); - ~tree(); - tree& operator=(const tree&); - - /// Base class for iterators, only pointers stored, no traversal logic. -#ifdef __SGI_STL_PORT - class iterator_base : public stlport::bidirectional_iterator { -#else - class iterator_base { -#endif - public: - typedef T value_type; - typedef T* pointer; - typedef T& reference; - typedef size_t size_type; - typedef ptrdiff_t difference_type; - typedef std::bidirectional_iterator_tag iterator_category; - - iterator_base(); - iterator_base(tree_node *); - - T& operator*() const; - T* operator->() const; - - /// Number of children of the node pointed to by the iterator. - unsigned int number_of_children() const; - - children_iterator begin_children_iterator() const; - children_iterator end_children_iterator() const; - - tree_node *node; - }; - - /// Depth-first iterator, first accessing the node, then its children. - class pre_order_iterator : public iterator_base { - public: - pre_order_iterator(); - pre_order_iterator(tree_node *); - - bool operator==(const pre_order_iterator&) const; - bool operator!=(const pre_order_iterator&) const; - pre_order_iterator& operator++(); - pre_order_iterator& operator--(); - pre_order_iterator operator++(int); - pre_order_iterator operator--(int); - pre_order_iterator& operator+=(unsigned int); - pre_order_iterator& operator-=(unsigned int); - }; - - /// Depth-first iterator, first accessing the children, then the node itself. - class post_order_iterator : public iterator_base { - public: - post_order_iterator(); - post_order_iterator(tree_node *); - - bool operator==(const post_order_iterator&) const; - bool operator!=(const post_order_iterator&) const; - post_order_iterator& operator++(); - post_order_iterator& operator--(); - post_order_iterator operator++(int); - post_order_iterator operator--(int); - post_order_iterator& operator+=(unsigned int); - post_order_iterator& operator-=(unsigned int); - - /// Set iterator to the first child as deep as possible down the tree. - void descend_all(); - }; - - /// Breadth-first iterator, using a queue - class breadth_first_queued_iterator : public iterator_base { - public: - breadth_first_queued_iterator(); - breadth_first_queued_iterator(tree_node *); - - bool operator==(const breadth_first_queued_iterator&) const; - bool operator!=(const breadth_first_queued_iterator&) const; - breadth_first_queued_iterator& operator++(); - breadth_first_queued_iterator operator++(int); - breadth_first_queued_iterator& operator+=(unsigned int); - - private: - std::queue traversal_queue; - }; - - /// Iterator which traverses only the nodes which are siblings of each other. - class children_iterator : public iterator_base { - public: - children_iterator(); - children_iterator(tree_node *); - - bool operator==(const children_iterator&) const; - bool operator!=(const children_iterator&) const; - children_iterator& operator++(); - children_iterator& operator--(); - children_iterator operator++(int); - children_iterator operator--(int); - children_iterator& operator+=(unsigned int); - children_iterator& operator-=(unsigned int); - - tree_node *range_first() const; - tree_node *range_last() const; - tree_node *parent_; - private: - void set_parent_(); - }; - - /// Iterator which traverses only the leaves. - class leaf_iterator : public iterator_base { - public: - leaf_iterator(); - leaf_iterator(tree_node *, tree_node *top=0); - - bool operator==(const leaf_iterator&) const; - bool operator!=(const leaf_iterator&) const; - leaf_iterator& operator++(); - leaf_iterator& operator--(); - leaf_iterator operator++(int); - leaf_iterator operator--(int); - leaf_iterator& operator+=(unsigned int); - leaf_iterator& operator-=(unsigned int); - private: - tree_node *top_node; - }; - - /// Return iterator to the beginning of the tree. - inline pre_order_iterator root() const; - - /// Return iterator to the beginning of the tree. - inline pre_order_iterator begin_pre_order_iterator(const iterator_base&) const; - /// Return iterator to the end of the tree. - inline pre_order_iterator end_pre_order_iterator(const iterator_base&) const; - /// Return post-order iterator to the beginning of the tree. - post_order_iterator begin_post_order_iterator(const iterator_base&) const; - /// Return post-order end iterator of the tree. - post_order_iterator end_post_order_iterator(const iterator_base&) const; - - - /// Return breadth-first iterator based on a iterator. - breadth_first_queued_iterator begin_breadth_first_iterator(const iterator_base&) const; - /// Return breadth-first end iterator. - breadth_first_queued_iterator end_breadth_first_iterator(const iterator_base&) const; - - - /// Return children iterator to the first child of given node. - children_iterator begin_children_iterator(const iterator_base&) const; - /// Return children end iterator for children of given node. - children_iterator end_children_iterator(const iterator_base&) const; - - /// Return leaf iterator to the first leaf of the subtree at the given node. - leaf_iterator begin_leaf_iterator(const iterator_base& top) const; - /// Return leaf end iterator for the subtree at the given node. - leaf_iterator end_leaf_iterator(const iterator_base& top) const; - - /// Return iterator to the parent of a node. - template static iter parent(iter); - /// Return iterator to the previous sibling of a node. - template iter previous_sibling(iter) const; - /// Return iterator to the next sibling of a node. - template iter next_sibling(iter) const; - - /// Erase all nodes of the tree. - void clear(); - /// Erase element at position pointed to by iterator, return incremented iterator. - template iter erase(iter); - /// Erase all children of the node pointed to by iterator. - void erase_children(const iterator_base&); - - - /// Short-hand to insert_before topmost node in otherwise empty tree. - pre_order_iterator set_root(const T& x); - - /// Insert node as last/first child of node pointed to by position. - template iter append_child(iter position, const T& x); - template iter prepend_child(iter position, const T& x); - - /// Insert node as previous sibling of node pointed to by position. - template iter insert_before(iter position, const T& x); - /// Insert node as next sibling of node pointed to by position. - template iter insert_after(iter position, const T& x); - - /// Replace node at 'position' with other node (keeping same children); 'position' becomes invalid. - template iter replace(iter position, const T& x); - /// Replace node at 'position' with subtree starting at 'from' (do not erase subtree at 'from'); see above. - template iter replace(iter position, const iterator_base& from); - - ///set X as the new head of the tree, the old head will be a child of new head. - pre_order_iterator reparent_root(const T& x); - - /// Move 'source' node (plus its children) to become the next sibling of 'target'. - template iter move_after(iter target, iter source); - /// Move 'source' node (plus its children) to become the previous sibling of 'target'. - template iter move_before(iter target, iter source); - - /// Count the total number of nodes. - size_t size() const; - /// Count the total number of nodes below the indicated node (plus one). - size_t size(const iterator_base&) const; - /// Check if tree is empty. - bool empty() const; - /// Compute the depth to the root or to a fixed other iterator. - static int depth(const iterator_base&); - static int depth(const iterator_base&, const iterator_base&); - /// Determine the maximal depth of the tree. An empty tree has max_depth=-1. - int max_depth() const; - /// Determine the maximal depth of the tree with top node at the given position. - int max_depth(const iterator_base&) const; - /// Count the number of children of node at position. - static unsigned int number_of_children(const iterator_base&); - /// Determine whether the iterator is an 'end' iterator and thus not actually pointing to a node. - bool is_valid(const iterator_base&) const; - - /// Determine the index of a node in the range of siblings to which it belongs. - unsigned int index(children_iterator it) const; - /// Inverse of 'index': return the n-th child of the node at position. - static children_iterator child(const iterator_base& position, unsigned int); - - /// Comparator class for iterators (compares pointer values; why doesn't this work automatically?) - class iterator_base_less { - public: - bool operator()(const typename tree::iterator_base& one, - const typename tree::iterator_base& two) const - { - return one.node < two.node; - } - }; - tree_node *head, *feet; // head/feet are always dummy; if an iterator points to them it is invalid -private: - tree_node_allocator alloc_; - void head_initialise_(); - void copy_(const tree& other); - - /// Comparator class for two nodes of a tree (used for sorting and searching). - template - class compare_nodes { - public: - compare_nodes(StrictWeakOrdering comp) : comp_(comp) {}; - - bool operator()(const tree_node *a, const tree_node *b) - { - return comp_(a->data, b->data); - } - private: - StrictWeakOrdering comp_; - }; -}; - - - -// Tree - -template -tree::tree() -{ - head_initialise_(); -} - -template -tree::tree(const T& x) -{ - head_initialise_(); - set_root(x); -} - -template -tree::~tree() -{ - clear(); - alloc_.deallocate(head,1); - alloc_.deallocate(feet,1); -} - -template -void tree::head_initialise_() -{ - head = alloc_.allocate(1,0); // MSVC does not have default second argument - feet = alloc_.allocate(1,0); - - head->parent=0; - head->first_child=0; - head->last_child=0; - head->prev_sibling=0; //head; - head->next_sibling=feet; //head; - - feet->parent=0; - feet->first_child=0; - feet->last_child=0; - feet->prev_sibling=head; - feet->next_sibling=0; -} - -template -tree& tree::operator=(const tree& other) -{ - if (this != &other) - { - copy_(other); - } - return (*this); -} - -template -tree::tree(const tree& other) -{ - head_initialise_(); - copy_(other); -} - -template -void tree::copy_(const tree& other) -{ - //check self - if (this == &other) - { - return; - } - clear(); - pre_order_iterator it=other.begin_pre_order_iterator(other.root()), to=begin_pre_order_iterator(root()); - while(it!=other.end_pre_order_iterator(other.root())) { - to=insert_before(to, (*it)); - ++it; - } - to=begin_pre_order_iterator(root()); - it=other.begin_pre_order_iterator(other.root()); - while(it!=other.end_pre_order_iterator(other.root())) { - to=replace(to, it); - ++to; - ++it; - } -} - -template -void tree::clear() -{ - if(head) - while(head->next_sibling!=feet) - erase(pre_order_iterator(head->next_sibling)); -} - -template -void tree::erase_children(const iterator_base& it) -{ - // std::cout << "erase_children " << it.node << std::endl; - if(it.node==0) return; - - tree_node *cur=it.node->first_child; - tree_node *prev=0; - - while(cur!=0) { - prev=cur; - cur=cur->next_sibling; - erase_children(pre_order_iterator(prev)); - kp::destructor(&prev->data); - alloc_.deallocate(prev,1); - } - it.node->first_child=0; - it.node->last_child=0; - // std::cout << "exit" << std::endl; -} - -template -template -iter tree::erase(iter it) -{ - tree_node *cur=it.node; - assert(cur!=head); - iter ret=it; - ++ret; - erase_children(it); - if(cur->prev_sibling==0) { - cur->parent->first_child=cur->next_sibling; - } - else { - cur->prev_sibling->next_sibling=cur->next_sibling; - } - if(cur->next_sibling==0) { - cur->parent->last_child=cur->prev_sibling; - } - else { - cur->next_sibling->prev_sibling=cur->prev_sibling; - } - - kp::destructor(&cur->data); - alloc_.deallocate(cur,1); - return ret; -} - -template -typename tree::pre_order_iterator tree::root() const -{ - return pre_order_iterator(head->next_sibling); -} - - -template -typename tree::pre_order_iterator tree::begin_pre_order_iterator(const iterator_base& pos) const -{ - return pre_order_iterator(pos.node); -} - -template -typename tree::pre_order_iterator tree::end_pre_order_iterator(const iterator_base& pos) const -{ - return pre_order_iterator(pos.node->next_sibling); -} - - - -template -typename tree::breadth_first_queued_iterator tree::begin_breadth_first_iterator(const iterator_base& pos) const -{ - return breadth_first_queued_iterator(pos.node); -} - -template -typename tree::breadth_first_queued_iterator tree::end_breadth_first_iterator(const iterator_base& pos) const -{ - return breadth_first_queued_iterator(); -} - - -template -typename tree::post_order_iterator tree::begin_post_order_iterator(const iterator_base& pos) const -{ - tree_node *tmp=pos.node; - if(tmp!=feet) { - while(tmp->first_child) - tmp=tmp->first_child; - } - return post_order_iterator(tmp); -} - -template -typename tree::post_order_iterator tree::end_post_order_iterator(const iterator_base& pos) const -{ - return post_order_iterator(pos.node->next_sibling); -} - - -template -typename tree::children_iterator tree::begin_children_iterator(const iterator_base& pos) const -{ - assert(pos.node!=0); - if(pos.node->first_child==0) { - return end_children_iterator(pos); - } - return pos.node->first_child; -} - -template -typename tree::children_iterator tree::end_children_iterator(const iterator_base& pos) const -{ - children_iterator ret(0); - ret.parent_=pos.node; - return ret; -} - -template -typename tree::leaf_iterator tree::begin_leaf_iterator(const iterator_base& top) const -{ - tree_node *tmp=top.node; - while(tmp->first_child) - tmp=tmp->first_child; - return leaf_iterator(tmp, top.node); -} - -template -typename tree::leaf_iterator tree::end_leaf_iterator(const iterator_base& top) const -{ - return leaf_iterator(top.node, top.node); -} - -template -template -iter tree::parent(iter position) -{ - assert(position.node!=0); - return iter(position.node->parent); -} - -template -template -iter tree::previous_sibling(iter position) const -{ - assert(position.node!=0); - iter ret(position); - ret.node=position.node->prev_sibling; - return ret; -} - -template -template -iter tree::next_sibling(iter position) const -{ - assert(position.node!=0); - iter ret(position); - ret.node=position.node->next_sibling; - return ret; -} - -template -template -iter tree::append_child(iter position, const T& x) -{ - // If your program fails here you probably used 'append_child' to add the top - // node to an empty tree. From version 1.45 the top element should be added - // using 'insert_before'. See the documentation for further information, and sorry about - // the API change. - assert(position.node!=head); - assert(position.node); - - tree_node* tmp = alloc_.allocate(1,0); - kp::constructor(&tmp->data, x); - tmp->first_child=0; - tmp->last_child=0; - - tmp->parent=position.node; - if(position.node->last_child!=0) { - position.node->last_child->next_sibling=tmp; - } - else { - position.node->first_child=tmp; - } - tmp->prev_sibling=position.node->last_child; - position.node->last_child=tmp; - tmp->next_sibling=0; - return tmp; -} - -template -template -iter tree::prepend_child(iter position, const T& x) -{ - assert(position.node!=head); - assert(position.node); - - tree_node* tmp = alloc_.allocate(1,0); - kp::constructor(&tmp->data, x); - tmp->first_child=0; - tmp->last_child=0; - - tmp->parent=position.node; - if(position.node->first_child!=0) { - position.node->first_child->prev_sibling=tmp; - } - else { - position.node->last_child=tmp; - } - tmp->next_sibling=position.node->first_child; - position.node->first_child=tmp; - tmp->prev_sibling=0; - return tmp; -} - - -template -typename tree::pre_order_iterator tree::set_root(const T& x) -{ - assert(head->next_sibling==feet); - return insert_before(pre_order_iterator(feet), x); -} - -template -template -iter tree::insert_before(iter position, const T& x) -{ - if(position.node==0) { - position.node=feet; // Backward compatibility: when calling insert_before on a null node, - // insert_before before the feet. - } - tree_node* tmp = alloc_.allocate(1,0); - kp::constructor(&tmp->data, x); - tmp->first_child=0; - tmp->last_child=0; - - tmp->parent=position.node->parent; - tmp->next_sibling=position.node; - tmp->prev_sibling=position.node->prev_sibling; - position.node->prev_sibling=tmp; - - if(tmp->prev_sibling==0) { - if(tmp->parent) // when inserting nodes at the head, there is no parent - tmp->parent->first_child=tmp; - } - else - tmp->prev_sibling->next_sibling=tmp; - return tmp; -} - - -template -template -iter tree::insert_after(iter position, const T& x) -{ - tree_node* tmp = alloc_.allocate(1,0); - kp::constructor(&tmp->data, x); - tmp->first_child=0; - tmp->last_child=0; - - tmp->parent=position.node->parent; - tmp->prev_sibling=position.node; - tmp->next_sibling=position.node->next_sibling; - position.node->next_sibling=tmp; - - if(tmp->next_sibling==0) { - if(tmp->parent) // when inserting nodes at the head, there is no parent - tmp->parent->last_child=tmp; - } - else { - tmp->next_sibling->prev_sibling=tmp; - } - return tmp; -} - - -template -template -iter tree::replace(iter position, const T& x) -{ - kp::destructor(&position.node->data); - kp::constructor(&position.node->data, x); - return position; -} - -template -template -iter tree::replace(iter position, const iterator_base& from) -{ - assert(position.node!=head); - tree_node *current_from=from.node; - tree_node *start_from=from.node; - tree_node *current_to =position.node; - - // replace the node at position with head of the replacement tree at from - // std::cout << "warning!" << position.node << std::endl; - erase_children(position); - // std::cout << "no warning!" << std::endl; - tree_node* tmp = alloc_.allocate(1,0); - kp::constructor(&tmp->data, (*from)); - tmp->first_child=0; - tmp->last_child=0; - if(current_to->prev_sibling==0) { - if(current_to->parent!=0) - current_to->parent->first_child=tmp; - } - else { - current_to->prev_sibling->next_sibling=tmp; - } - tmp->prev_sibling=current_to->prev_sibling; - if(current_to->next_sibling==0) { - if(current_to->parent!=0) - current_to->parent->last_child=tmp; - } - else { - current_to->next_sibling->prev_sibling=tmp; - } - tmp->next_sibling=current_to->next_sibling; - tmp->parent=current_to->parent; - kp::destructor(¤t_to->data); - alloc_.deallocate(current_to,1); - current_to=tmp; - - // only at this stage can we fix 'last' - tree_node *last=from.node->next_sibling; - - pre_order_iterator toit=tmp; - // copy all children - do { - assert(current_from!=0); - if(current_from->first_child != 0) { - current_from=current_from->first_child; - toit=append_child(toit, current_from->data); - } - else { - while(current_from->next_sibling==0 && current_from!=start_from) { - current_from=current_from->parent; - toit=parent(toit); - assert(current_from!=0); - } - current_from=current_from->next_sibling; - if(current_from!=last) { - toit=append_child(parent(toit), current_from->data); - } - } - } while(current_from!=last); - - return current_to; -} - - -///set X as the new head of the tree, the old head will be a child of new head. -template -typename tree::pre_order_iterator tree::reparent_root(const T& x) -{ - if(head->next_sibling == feet->prev_sibling) - { - return this->set_root(x); - } - else - { - //remember the old head - tree_node *old_head_node = head->next_sibling; - - //create a new head - insert_before(pre_order_iterator(feet), x); - - //change the tree head - tree_node *new_head_node = head->next_sibling->next_sibling; - head->next_sibling = new_head_node; - - //change the new head - new_head_node->first_child = old_head_node; - new_head_node->last_child = old_head_node; - new_head_node->next_sibling = feet; - new_head_node->prev_sibling = head; - - //change the feet - feet->prev_sibling = new_head_node; - - //change the old head - old_head_node->next_sibling = 0; - old_head_node->prev_sibling = 0; - old_head_node->parent = new_head_node; - - return begin_pre_order_iterator(root()); - } -} - -template -template iter tree::move_after(iter target, iter source) -{ - tree_node *dst=target.node; - tree_node *src=source.node; - assert(dst); - assert(src); - - if(dst==src) return source; - if(dst->next_sibling) - if(dst->next_sibling==src) // already in the right spot - return source; - - // take src out of the tree - if(src->prev_sibling!=0) src->prev_sibling->next_sibling=src->next_sibling; - else src->parent->first_child=src->next_sibling; - if(src->next_sibling!=0) src->next_sibling->prev_sibling=src->prev_sibling; - else src->parent->last_child=src->prev_sibling; - - // connect it to the new point - if(dst->next_sibling!=0) dst->next_sibling->prev_sibling=src; - else dst->parent->last_child=src; - src->next_sibling=dst->next_sibling; - dst->next_sibling=src; - src->prev_sibling=dst; - src->parent=dst->parent; - return src; -} - -template -template iter tree::move_before(iter target, iter source) -{ - tree_node *dst=target.node; - tree_node *src=source.node; - assert(dst); - assert(src); - - if(dst==src) return source; - if(dst->prev_sibling) - if(dst->prev_sibling==src) // already in the right spot - return source; - - // take src out of the tree - if(src->prev_sibling!=0) src->prev_sibling->next_sibling=src->next_sibling; - else src->parent->first_child=src->next_sibling; - if(src->next_sibling!=0) src->next_sibling->prev_sibling=src->prev_sibling; - else src->parent->last_child=src->prev_sibling; - - // connect it to the new point - if(dst->prev_sibling!=0) dst->prev_sibling->next_sibling=src; - else dst->parent->first_child=src; - src->prev_sibling=dst->prev_sibling; - dst->prev_sibling=src; - src->next_sibling=dst; - src->parent=dst->parent; - return src; -} - - -template -size_t tree::size() const -{ - size_t i=0; - pre_order_iterator it=begin_pre_order_iterator(), eit=end_pre_order_iterator(); - while(it!=eit) { - ++i; - ++it; - } - return i; -} - -template -size_t tree::size(const iterator_base& top) const -{ - size_t i=0; - pre_order_iterator it=top, eit=top; - ++eit; - while(it!=eit) { - ++i; - ++it; - } - return i; -} - -template -bool tree::empty() const -{ - pre_order_iterator it=begin_pre_order_iterator(), eit=end_pre_order_iterator(); - return (it==eit); -} - -template -int tree::depth(const iterator_base& it) -{ - tree_node* pos=it.node; - assert(pos!=0); - int ret=0; - while(pos->parent!=0) { - pos=pos->parent; - ++ret; - } - return ret; -} - -template -int tree::depth(const iterator_base& it, const iterator_base& root) -{ - tree_node* pos=it.node; - assert(pos!=0); - int ret=0; - while(pos->parent!=0 && pos!=root.node) { - pos=pos->parent; - ++ret; - } - return ret; -} - -template -int tree::max_depth() const -{ - int maxd=-1; - for(tree_node *it = head->next_sibling; it!=feet; it=it->next_sibling) - maxd=std::max(maxd, max_depth(it)); - - return maxd; -} - - -template -int tree::max_depth(const iterator_base& pos) const -{ - tree_node *tmp=pos.node; - - if(tmp==0 || tmp==head || tmp==feet) return -1; - - int curdepth=0, maxdepth=0; - while(true) { // try to walk the bottom of the tree - while(tmp->first_child==0) { - if(tmp==pos.node) return maxdepth; - if(tmp->next_sibling==0) { - // try to walk up and then right again - do { - tmp=tmp->parent; - if(tmp==0) return maxdepth; - --curdepth; - } while(tmp->next_sibling==0); - } - if(tmp==pos.node) return maxdepth; - tmp=tmp->next_sibling; - } - tmp=tmp->first_child; - ++curdepth; - maxdepth=std::max(curdepth, maxdepth); - } -} - -template -unsigned int tree::number_of_children(const iterator_base& it) -{ - tree_node *pos=it.node->first_child; - if(pos==0) return 0; - - unsigned int ret=1; - // while(pos!=it.node->last_child) { - // ++ret; - // pos=pos->next_sibling; - // } - while((pos=pos->next_sibling)) - ++ret; - return ret; -} - -template -bool tree::is_valid(const iterator_base& it) const -{ - if(it.node==0 || it.node==feet || it.node==head) return false; - else return true; -} - -template -unsigned int tree::index(children_iterator it) const -{ - unsigned int ind=0; - if(it.node->parent==0) { - while(it.node->prev_sibling!=head) { - it.node=it.node->prev_sibling; - ++ind; - } - } - else { - while(it.node->prev_sibling!=0) { - it.node=it.node->prev_sibling; - ++ind; - } - } - return ind; -} - -template -typename tree::children_iterator tree::child(const iterator_base& it, unsigned int num) -{ - tree_node *tmp=it.node->first_child; - while(num--) { - assert(tmp!=0); - tmp=tmp->next_sibling; - } - return tmp; -} - - - - -// Iterator base - -template -tree::iterator_base::iterator_base() -: node(0) -{ -} - -template -tree::iterator_base::iterator_base(tree_node *tn) -: node(tn) -{ -} - -template -T& tree::iterator_base::operator*() const -{ - return node->data; -} - -template -T* tree::iterator_base::operator->() const -{ - return &(node->data); -} - -template -bool tree::post_order_iterator::operator!=(const post_order_iterator& other) const -{ - if(other.node!=this->node) return true; - else return false; -} - -template -bool tree::post_order_iterator::operator==(const post_order_iterator& other) const -{ - if(other.node==this->node) return true; - else return false; -} - -template -bool tree::pre_order_iterator::operator!=(const pre_order_iterator& other) const -{ - if(other.node!=this->node) return true; - else return false; -} - -template -bool tree::pre_order_iterator::operator==(const pre_order_iterator& other) const -{ - if(other.node==this->node) return true; - else return false; -} - -template -bool tree::children_iterator::operator!=(const children_iterator& other) const -{ - if(other.node!=this->node) return true; - else return false; -} - -template -bool tree::children_iterator::operator==(const children_iterator& other) const -{ - if(other.node==this->node) return true; - else return false; -} - -template -bool tree::leaf_iterator::operator!=(const leaf_iterator& other) const -{ - if(other.node!=this->node) return true; - else return false; -} - -template -bool tree::leaf_iterator::operator==(const leaf_iterator& other) const -{ - if(other.node==this->node && other.top_node==this->top_node) return true; - else return false; -} - -template -typename tree::children_iterator tree::iterator_base::begin_children_iterator() const -{ - if(node->first_child==0) - return end_children_iterator(); - - children_iterator ret(node->first_child); - ret.parent_=this->node; - return ret; -} - -template -typename tree::children_iterator tree::iterator_base::end_children_iterator() const -{ - children_iterator ret(0); - ret.parent_=node; - return ret; -} - -template -unsigned int tree::iterator_base::number_of_children() const -{ - tree_node *pos=node->first_child; - if(pos==0) return 0; - - unsigned int ret=1; - while(pos!=node->last_child) { - ++ret; - pos=pos->next_sibling; - } - return ret; -} - - - -// Pre-order iterator - -template -tree::pre_order_iterator::pre_order_iterator() -: iterator_base(0) -{ -} - -template -tree::pre_order_iterator::pre_order_iterator(tree_node *tn) -: iterator_base(tn) -{ -} - -template -typename tree::pre_order_iterator& tree::pre_order_iterator::operator++() -{ - assert(this->node!=0); - if(this->node->first_child != 0) { - this->node=this->node->first_child; - } - else { - while(this->node->next_sibling==0) { - this->node=this->node->parent; - if(this->node==0) - return *this; - } - this->node=this->node->next_sibling; - } - return *this; -} - -template -typename tree::pre_order_iterator& tree::pre_order_iterator::operator--() -{ - assert(this->node!=0); - if(this->node->prev_sibling) { - this->node=this->node->prev_sibling; - while(this->node->last_child) - this->node=this->node->last_child; - } - else { - this->node=this->node->parent; - if(this->node==0) - return *this; - } - return *this; -} - -template -typename tree::pre_order_iterator tree::pre_order_iterator::operator++(int) -{ - pre_order_iterator copy = *this; - ++(*this); - return copy; -} - -template -typename tree::pre_order_iterator tree::pre_order_iterator::operator--(int) -{ - pre_order_iterator copy = *this; - --(*this); - return copy; -} - -template -typename tree::pre_order_iterator& tree::pre_order_iterator::operator+=(unsigned int num) -{ - while(num>0) { - ++(*this); - --num; - } - return (*this); -} - -template -typename tree::pre_order_iterator& tree::pre_order_iterator::operator-=(unsigned int num) -{ - while(num>0) { - --(*this); - --num; - } - return (*this); -} - - - -// Post-order iterator - -template -tree::post_order_iterator::post_order_iterator() -: iterator_base(0) -{ -} - -template -tree::post_order_iterator::post_order_iterator(tree_node *tn) -: iterator_base(tn) -{ -} - -template -typename tree::post_order_iterator& tree::post_order_iterator::operator++() -{ - assert(this->node!=0); - if(this->node->next_sibling==0) { - this->node=this->node->parent; - } - else { - this->node=this->node->next_sibling; - while(this->node->first_child) - this->node=this->node->first_child; - } - return *this; -} - -template -typename tree::post_order_iterator& tree::post_order_iterator::operator--() -{ - assert(this->node!=0); - if(this->skip_current_children_ || this->node->last_child==0) { - this->skip_current_children_=false; - while(this->node->prev_sibling==0) - this->node=this->node->parent; - this->node=this->node->prev_sibling; - } - else { - this->node=this->node->last_child; - } - return *this; -} - -template -typename tree::post_order_iterator tree::post_order_iterator::operator++(int) -{ - post_order_iterator copy = *this; - ++(*this); - return copy; -} - -template -typename tree::post_order_iterator tree::post_order_iterator::operator--(int) -{ - post_order_iterator copy = *this; - --(*this); - return copy; -} - - -template -typename tree::post_order_iterator& tree::post_order_iterator::operator+=(unsigned int num) -{ - while(num>0) { - ++(*this); - --num; - } - return (*this); -} - -template -typename tree::post_order_iterator& tree::post_order_iterator::operator-=(unsigned int num) -{ - while(num>0) { - --(*this); - --num; - } - return (*this); -} - -template -void tree::post_order_iterator::descend_all() -{ - assert(this->node!=0); - while(this->node->first_child) - this->node=this->node->first_child; -} - - -// Breadth-first iterator - -template -tree::breadth_first_queued_iterator::breadth_first_queued_iterator() -: iterator_base() -{ -} - -template -tree::breadth_first_queued_iterator::breadth_first_queued_iterator(tree_node *tn) -: iterator_base(tn) -{ - traversal_queue.push(tn); -} - -template -bool tree::breadth_first_queued_iterator::operator!=(const breadth_first_queued_iterator& other) const -{ - if(other.node!=this->node) return true; - else return false; -} - -template -bool tree::breadth_first_queued_iterator::operator==(const breadth_first_queued_iterator& other) const -{ - if(other.node==this->node) return true; - else return false; -} - -template -typename tree::breadth_first_queued_iterator& tree::breadth_first_queued_iterator::operator++() -{ - assert(this->node!=0); - - // Add child nodes and pop current node - children_iterator sib=this->begin_children_iterator(); - while(sib!=this->end_children_iterator()) { - traversal_queue.push(sib.node); - ++sib; - } - traversal_queue.pop(); - if(traversal_queue.size()>0) - this->node=traversal_queue.front(); - else - this->node=0; - return (*this); -} - -template -typename tree::breadth_first_queued_iterator tree::breadth_first_queued_iterator::operator++(int) -{ - breadth_first_queued_iterator copy = *this; - ++(*this); - return copy; -} - -template -typename tree::breadth_first_queued_iterator& tree::breadth_first_queued_iterator::operator+=(unsigned int num) -{ - while(num>0) { - ++(*this); - --num; - } - return (*this); -} - -// Sibling iterator - -template -tree::children_iterator::children_iterator() -: iterator_base() -{ - set_parent_(); -} - -template -tree::children_iterator::children_iterator(tree_node *tn) -: iterator_base(tn) -{ - set_parent_(); -} - -template -void tree::children_iterator::set_parent_() -{ - parent_=0; - if(this->node==0) return; - if(this->node->parent!=0) - parent_=this->node->parent; -} - -template -typename tree::children_iterator& tree::children_iterator::operator++() -{ - if(this->node) - this->node=this->node->next_sibling; - return *this; -} - -template -typename tree::children_iterator& tree::children_iterator::operator--() -{ - if(this->node) this->node=this->node->prev_sibling; - else { - assert(parent_); - this->node=parent_->last_child; - } - return *this; -} - -template -typename tree::children_iterator tree::children_iterator::operator++(int) -{ - children_iterator copy = *this; - ++(*this); - return copy; -} - -template -typename tree::children_iterator tree::children_iterator::operator--(int) -{ - children_iterator copy = *this; - --(*this); - return copy; -} - -template -typename tree::children_iterator& tree::children_iterator::operator+=(unsigned int num) -{ - while(num>0) { - ++(*this); - --num; - } - return (*this); -} - -template -typename tree::children_iterator& tree::children_iterator::operator-=(unsigned int num) -{ - while(num>0) { - --(*this); - --num; - } - return (*this); -} - -template -typename tree::tree_node *tree::children_iterator::range_first() const -{ - tree_node *tmp=parent_->first_child; - return tmp; -} - -template -typename tree::tree_node *tree::children_iterator::range_last() const -{ - return parent_->last_child; -} - -// Leaf iterator - -template -tree::leaf_iterator::leaf_iterator() -: iterator_base(0), top_node(0) -{ -} - -template -tree::leaf_iterator::leaf_iterator(tree_node *tn, tree_node *top) -: iterator_base(tn), top_node(top) -{ -} - - -template -typename tree::leaf_iterator& tree::leaf_iterator::operator++() -{ - assert(this->node!=0); - if(this->node->first_child!=0) { // current node is no longer leaf (children got added) - while(this->node->first_child) - this->node=this->node->first_child; - } - else { - while(this->node->next_sibling==0) { - if (this->node->parent==0) return *this; - this->node=this->node->parent; - if (top_node != 0 && this->node==top_node) return *this; - } - this->node=this->node->next_sibling; - while(this->node->first_child) - this->node=this->node->first_child; - } - return *this; -} - -template -typename tree::leaf_iterator& tree::leaf_iterator::operator--() -{ - assert(this->node!=0); - while (this->node->prev_sibling==0) { - if (this->node->parent==0) return *this; - this->node=this->node->parent; - if (top_node !=0 && this->node==top_node) return *this; - } - this->node=this->node->prev_sibling; - while(this->node->last_child) - this->node=this->node->last_child; - return *this; -} - -template -typename tree::leaf_iterator tree::leaf_iterator::operator++(int) -{ - leaf_iterator copy = *this; - ++(*this); - return copy; -} - -template -typename tree::leaf_iterator tree::leaf_iterator::operator--(int) -{ - leaf_iterator copy = *this; - --(*this); - return copy; -} - - -template -typename tree::leaf_iterator& tree::leaf_iterator::operator+=(unsigned int num) -{ - while(num>0) { - ++(*this); - --num; - } - return (*this); -} - -template -typename tree::leaf_iterator& tree::leaf_iterator::operator-=(unsigned int num) -{ - while(num>0) { - --(*this); - --num; - } - return (*this); -} - -#endif diff --git a/src/gamelib/CMakeLists.txt b/src/gamelib/CMakeLists.txt index 9163fea..8a6ace3 100644 --- a/src/gamelib/CMakeLists.txt +++ b/src/gamelib/CMakeLists.txt @@ -6,14 +6,10 @@ find_package(PNG REQUIRED) add_library(${PROJECT_NAME} csvloader.cpp - sdlmain.cpp ingamescene.cpp - sizenotifiable.cpp - sizeratio.cpp gamescenebase.cpp worldgrid.cpp worldviewport.cpp - inputbag.cpp tileiterator.cpp texture.cpp movingobject.cpp @@ -32,7 +28,6 @@ target_include_directories(${PROJECT_NAME} SYSTEM PRIVATE ${SDL2IMAGE_INCLUDE_DIRS} PRIVATE ${PNG_INCLUDE_DIRS} PRIVATE ${Boost_INCLUDE_DIRS} - PRIVATE ${CMAKE_SOURCE_DIR}/lib/tree-2.81/src ) target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_SOURCE_DIR}/lib/vectorwrapper/include @@ -44,6 +39,7 @@ target_link_libraries(${PROJECT_NAME} PRIVATE ${SDL2IMAGE_LIBRARIES} PRIVATE ${PNG_LIBRARIES} PUBLIC mycurry_toplevel + PUBLIC cloonelgraphics ) target_compile_definitions(${PROJECT_NAME} diff --git a/src/gamelib/gamescenebase.cpp b/src/gamelib/gamescenebase.cpp index 620f0f2..340a06f 100644 --- a/src/gamelib/gamescenebase.cpp +++ b/src/gamelib/gamescenebase.cpp @@ -47,6 +47,7 @@ namespace curry { ///--------------------------------------------------------------------- bool DoEvents (cloonel::InputBag& parInput, cloonel::SDLMain* parSdlMain) { using cloonel::InputDevice_Keyboard; + using cloonel::ushort2; SDL_Event eve; while (SDL_PollEvent(&eve)) { @@ -65,7 +66,7 @@ namespace curry { case SDL_WINDOWEVENT: if (SDL_WINDOWEVENT_RESIZED == eve.window.event) { - parSdlMain->SetResolution(vec2us(static_cast(eve.window.data1), static_cast(eve.window.data2))); + parSdlMain->SetResolution(ushort2(static_cast(eve.window.data1), static_cast(eve.window.data2))); } else if (SDL_WINDOWEVENT_CLOSE == eve.window.event) { return true; diff --git a/src/gamelib/ingamescene.cpp b/src/gamelib/ingamescene.cpp index 8af1069..30e8ded 100644 --- a/src/gamelib/ingamescene.cpp +++ b/src/gamelib/ingamescene.cpp @@ -31,6 +31,7 @@ #include "csvloader.hpp" #include "worlditems.hpp" #include "gameactions.hpp" +#include "vector.hpp" #include #include #include @@ -46,7 +47,7 @@ namespace curry { struct IngameScene::LocalData { LocalData (const vec2us& parTileSize, cloonel::SDLMain* parSDLMain, cloonel::InputBag* parInputBag) : world(parTileSize), - viewport(&world, vec2f(parSDLMain->WidthHeight()), WorldSizeNotifiable::DeferredRegister(&world, &viewport)), + viewport(&world, vec2f(cl_vec2us(parSDLMain->WidthHeight())), WorldSizeNotifiable::DeferredRegister(&world, &viewport)), player(parTileSize), character(parInputBag, WorldSizeNotifiable::DeferredRegister(&world, &character)) { diff --git a/src/gamelib/inputbag.cpp b/src/gamelib/inputbag.cpp deleted file mode 100644 index e63b5b4..0000000 --- a/src/gamelib/inputbag.cpp +++ /dev/null @@ -1,150 +0,0 @@ -/* - Copyright 2014 Michele "King_DuckZ" Santullo - - This file is part of CloonelJump. - - CloonelJump is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - CloonelJump is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with CloonelJump. If not, see . -*/ - -#include "inputbag.hpp" -#include "key.hpp" -#include -#include -#include -#include -#include - -namespace cloonel { - struct Action { - Key key; - const std::string name; - InputBag::ActionStateType state; - bool newStatePressed; - - bool operator== ( const Key& parKey ) const { return key == parKey; } - }; - - struct InputBag::LocalData { - std::vector actions; - std::map mappings; - }; - - namespace { - // | rl | pr - // ----------------- - // rel | rel | jpr - // prs | jrl | prs - // jrl | rel | jpr - // jpr | jrl | prs - const InputBag::ActionStateType g_stateTruthTable[] = { - InputBag::ActionState_Released, - InputBag::ActionState_JustReleased, - InputBag::ActionState_Released, - InputBag::ActionState_JustReleased, - InputBag::ActionState_JustPressed, - InputBag::ActionState_Pressed, - InputBag::ActionState_JustPressed, - InputBag::ActionState_Pressed - }; - - ///---------------------------------------------------------------------- - ///When actions vector is reallocated, update pointers in mappings. - ///---------------------------------------------------------------------- - void UpdatePointers (Action* parOldAddrStart, Action* parNewAddress, std::map& parUpdate, int parOffset) { - for (auto& itMap : parUpdate) { - if (itMap.second >= parOldAddrStart) { - itMap.second = parNewAddress + (itMap.second - parOldAddrStart) + parOffset; - } - } - } - } //unnamed namespace - - ///-------------------------------------------------------------------------- - ///-------------------------------------------------------------------------- - InputBag::InputBag() : - m_localdata(new LocalData) - { - } - - ///-------------------------------------------------------------------------- - ///-------------------------------------------------------------------------- - InputBag::~InputBag() noexcept { - } - - ///-------------------------------------------------------------------------- - ///-------------------------------------------------------------------------- - void InputBag::AddAction (int parAction, const Key& parKey, std::string&& parName) { - Action* const oldBuff = m_localdata->actions.data(); - m_localdata->actions.push_back(Action({parKey, parName, ActionState_Released, false})); - Action* const newBuff = m_localdata->actions.data(); - if (oldBuff != newBuff) { - UpdatePointers(oldBuff, newBuff, m_localdata->mappings, 0); - } - m_localdata->mappings[parAction] = &m_localdata->actions.back(); - } - - ///-------------------------------------------------------------------------- - ///-------------------------------------------------------------------------- - InputBag::ActionStateType InputBag::ActionState (int parAction) const { - assert(m_localdata->mappings.find(parAction) != m_localdata->mappings.end()); - return m_localdata->mappings[parAction]->state; - } - - ///-------------------------------------------------------------------------- - ///-------------------------------------------------------------------------- - void InputBag::Clear() { - m_localdata->actions.clear(); - m_localdata->mappings.clear(); - } - - ///-------------------------------------------------------------------------- - ///-------------------------------------------------------------------------- - void InputBag::NotifyKeyAction (InputDeviceType parDev, int parScancode, bool parPressed) { - const Key searchKey(parDev, parScancode); - auto itFound = std::find(m_localdata->actions.begin(), m_localdata->actions.end(), searchKey); - //This method gets called every time a keypress or keyrelease is - //produced, but if the key is of any use is decided here. So it possible - //that a keystroke is not bound to any action and therefore no - //corresponding element is present in the actions list. - if (m_localdata->actions.end() != itFound) - itFound->newStatePressed = parPressed; - } - - ///-------------------------------------------------------------------------- - ///-------------------------------------------------------------------------- - void InputBag::KeyStateUpdateFinished() noexcept { - for (auto& currAction : m_localdata->actions) { - const int numericState = static_cast(currAction.state); - assert(numericState < 4); - const int index = (currAction.newStatePressed ? 4 : 0) + numericState; - currAction.state = g_stateTruthTable[index]; - } - } - - ///-------------------------------------------------------------------------- - ///-------------------------------------------------------------------------- - void InputBag::ClearState() { - for (auto& currAction : m_localdata->actions) { - currAction.newStatePressed = false; - currAction.state = ActionState_Released; - } - } - - ///-------------------------------------------------------------------------- - ///-------------------------------------------------------------------------- - bool IsPressed (const InputBag& parInput, int parAction) { - const InputBag::ActionStateType state = parInput.ActionState(parAction); - return InputBag::ActionState_Pressed == state or InputBag::ActionState_JustPressed == state; - } -} //namespace cloonel diff --git a/src/gamelib/inputbag.hpp b/src/gamelib/inputbag.hpp deleted file mode 100644 index 3b96040..0000000 --- a/src/gamelib/inputbag.hpp +++ /dev/null @@ -1,59 +0,0 @@ -/* - Copyright 2014 Michele "King_DuckZ" Santullo - - This file is part of CloonelJump. - - CloonelJump is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - CloonelJump is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with CloonelJump. If not, see . -*/ - -#ifndef idF4E67FC292A5480DA4305B806170F520 -#define idF4E67FC292A5480DA4305B806170F520 - -#include "inputdevicetype.hpp" -#include -#include - -namespace cloonel { - struct Key; - - class InputBag { - public: - enum ActionStateType { - ActionState_Released, - ActionState_Pressed, - ActionState_JustReleased, - ActionState_JustPressed - }; - - InputBag ( void ); - ~InputBag ( void ) noexcept; - - void AddAction ( int parAction, const Key& parKey, std::string&& parName ); - ActionStateType ActionState ( int parAction ) const; - void Clear ( void ); - void NotifyKeyAction ( InputDeviceType parDev, int parScancode, bool parPressed ); - void KeyStateUpdateFinished ( void ) noexcept; - void ClearState ( void ); - - private: - struct LocalData; - - const std::unique_ptr m_localdata; - }; - - bool IsPressed ( const InputBag& parInput, int parAction ); - inline bool IsReleased ( const InputBag& parInput, int parAction ) { return not IsPressed(parInput, parAction); } -} //namespace cloonel - -#endif diff --git a/src/gamelib/inputdevicetype.hpp b/src/gamelib/inputdevicetype.hpp deleted file mode 100644 index 3058e38..0000000 --- a/src/gamelib/inputdevicetype.hpp +++ /dev/null @@ -1,29 +0,0 @@ -/* - Copyright 2014 Michele "King_DuckZ" Santullo - - This file is part of CloonelJump. - - CloonelJump is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - CloonelJump is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with CloonelJump. If not, see . -*/ - -#ifndef idED0C5C9767B64910A2998ACDAE14A509 -#define idED0C5C9767B64910A2998ACDAE14A509 - -namespace cloonel { - enum InputDeviceType { - InputDevice_Keyboard - }; -} //namespace cloonel - -#endif diff --git a/src/gamelib/key.hpp b/src/gamelib/key.hpp deleted file mode 100644 index bd25baf..0000000 --- a/src/gamelib/key.hpp +++ /dev/null @@ -1,62 +0,0 @@ -/* - Copyright 2014 Michele "King_DuckZ" Santullo - - This file is part of CloonelJump. - - CloonelJump is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - CloonelJump is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with CloonelJump. If not, see . -*/ - -#ifndef id8F6145D6CFBA40338C5804DEC032CE16 -#define id8F6145D6CFBA40338C5804DEC032CE16 - -#include "inputdevicetype.hpp" -#include - -namespace cloonel { - struct Key { - Key ( void ) = default; - Key ( InputDeviceType parDev, int parScancode, const char parLabel[4] ) : - srcdevice(parDev), - scancode(parScancode) - { - label[0] = parLabel[0]; - label[1] = parLabel[1]; - label[2] = parLabel[2]; - label[3] = parLabel[3]; - } - Key ( InputDeviceType parDev, int parScancode ) : - srcdevice(parDev), - scancode(parScancode), - label {0, 0, 0, 0} - { - } - ~Key ( void ) noexcept = default; - - bool operator== ( const Key& parOther ) const { - return srcdevice == parOther.srcdevice and scancode == parOther.scancode; - } - bool operator!= ( const Key& parOther ) const { - return not this->operator==(parOther); - } - bool operator< ( const Key& parOther ) const { - return (srcdevice == parOther.srcdevice and scancode < parOther.scancode) or (srcdevice < parOther.srcdevice); - } - - InputDeviceType srcdevice; - int scancode; - char label[4]; - }; -} //namespace cloonel - -#endif diff --git a/src/gamelib/observersmanager.hpp b/src/gamelib/observersmanager.hpp deleted file mode 100644 index 926c532..0000000 --- a/src/gamelib/observersmanager.hpp +++ /dev/null @@ -1,180 +0,0 @@ -/* - Copyright 2014 Michele "King_DuckZ" Santullo - - This file is part of CloonelJump. - - CloonelJump is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - CloonelJump is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with CloonelJump. If not, see . -*/ - -#ifndef idF5E41734950640CDA3C949E0D3A9A30D -#define idF5E41734950640CDA3C949E0D3A9A30D - -#include -#include -#include -#include -#include -#include -#include -#include - -#if defined (WITH_VERBOSE_OBS_MANAGER) && defined(__GNUC__) && __GNUC__ >= 2 && !defined(NDEBUG) -# define OBS_MANAGER_LOG -#endif - -#if defined(OBS_MANAGER_LOG) -# include -#endif - -namespace cloonel { - template - class ObserversManager { - public: - typedef size_t TicketType; - - private: - struct TicketedWrapper { - TicketedWrapper ( void ) = default; - TicketedWrapper ( T parItem, TicketType parTicket ) : - itm(parItem), - ticket(parTicket) - { - } - - T itm; - TicketType ticket; - - bool operator== ( const TicketedWrapper& parOther ) const { return parOther.ticket == ticket; } - bool operator== ( TicketType parOther ) const { return parOther == ticket; } - }; - static T& TicketedWrapperToItm ( TicketedWrapper& parWrapper ) { return parWrapper.itm; } - - typedef tree TreeType; - typedef typename tree::iterator TreeIteratorType; - - public: - enum { - Ticket_Null = 0 - }; - typedef boost::transform_iterator, TreeIteratorType> iterator; - - ObserversManager ( void ); - ~ObserversManager ( void ) noexcept; - - TicketType Add ( T parObserver, TicketType parParent=Ticket_Null ); - void Remove ( TicketType parTicket ) noexcept; - void RemoveAll ( void ) noexcept; - void Update ( TicketType parTicket, T parObserver ); - std::size_t size ( void ) const { return m_tree.size(); } - iterator begin ( void ) { return iterator(m_tree.begin(), &TicketedWrapperToItm); } - iterator end ( void ) { return iterator(m_tree.end(), &TicketedWrapperToItm); } - void CopyObservers ( std::unordered_set& parOut ); - - private: - TreeIteratorType GetByTicket_AssertPresent ( TicketType parTicket ); - - TreeType m_tree; - TicketType m_nextTicket; - }; - - ///-------------------------------------------------------------------------- - ///-------------------------------------------------------------------------- - template - ObserversManager::ObserversManager() : - m_nextTicket(1) - { - } - - ///-------------------------------------------------------------------------- - ///-------------------------------------------------------------------------- - template - ObserversManager::~ObserversManager() noexcept { - assert(m_tree.empty()); - } - - ///-------------------------------------------------------------------------- - ///-------------------------------------------------------------------------- - template - typename ObserversManager::TicketType ObserversManager::Add (T parObserver, TicketType parParent) { - const auto currTicket = m_nextTicket; - if (Ticket_Null == parParent) - m_tree.insert(m_tree.begin(), TicketedWrapper(parObserver, currTicket)); - else - m_tree.append_child(GetByTicket_AssertPresent(parParent), TicketedWrapper(parObserver, currTicket)); - -#if defined(OBS_MANAGER_LOG) - std::cout << __PRETTY_FUNCTION__ << " registering " << currTicket << " as a child of " << parParent << "\n"; -#endif - ++m_nextTicket; - return currTicket; - } - - ///-------------------------------------------------------------------------- - ///-------------------------------------------------------------------------- - template - void ObserversManager::Remove (TicketType parTicket) noexcept { - auto deleme = GetByTicket_AssertPresent(parTicket); -#if defined(OBS_MANAGER_LOG) - for (auto it(deleme); it != m_tree.end(); ++it) { - std::cout << __PRETTY_FUNCTION__ << " unregistering " << it->ticket << "\n"; - } -#endif - m_tree.erase(deleme); - if (parTicket == m_nextTicket - 1) - --m_nextTicket; - } - - ///-------------------------------------------------------------------------- - ///-------------------------------------------------------------------------- - template - void ObserversManager::RemoveAll() noexcept { - if (not m_tree.empty()) { - for (typename TreeType::sibling_iterator it(m_tree.begin()), itEND(m_tree.end()); it != itEND; ++it) { - const TicketType ticket = it->ticket; - this->Remove(ticket); - } - assert(m_tree.empty()); - } - } - - ///-------------------------------------------------------------------------- - ///-------------------------------------------------------------------------- - template - void ObserversManager::Update (TicketType parTicket, T parObserver) { - std::swap(GetByTicket_AssertPresent(parTicket)->itm, parObserver); - } - - ///-------------------------------------------------------------------------- - ///-------------------------------------------------------------------------- - template - typename ObserversManager::TreeIteratorType ObserversManager::GetByTicket_AssertPresent (TicketType parTicket) { - auto ret = std::find(m_tree.begin(), m_tree.end(), parTicket); - assert(m_tree.end() != ret); - return ret; - } - - ///-------------------------------------------------------------------------- - ///-------------------------------------------------------------------------- - template - void ObserversManager::CopyObservers (std::unordered_set& parOut) { - for (const auto& itm : m_tree) { - parOut.insert(itm.itm); - } - } -} //namespace cloonel - -#if defined(OBS_MANAGER_LOG) -# undef OBS_MANAGER_LOG -#endif -#endif diff --git a/src/gamelib/sdlmain.cpp b/src/gamelib/sdlmain.cpp deleted file mode 100644 index 2d0d9df..0000000 --- a/src/gamelib/sdlmain.cpp +++ /dev/null @@ -1,236 +0,0 @@ -/* - Copyright 2014 Michele "King_DuckZ" Santullo - - This file is part of CloonelJump. - - CloonelJump is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - CloonelJump is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with CloonelJump. If not, see . -*/ - -#include "sdlmain.hpp" -#include "observersmanager.hpp" -#include "sizenotifiable.hpp" -#include "sizeratio.hpp" -#include -#include -#include -#include -#include -#include - -#if defined(RASPBERRY_PI) -#include -#endif - -namespace cloonel { - namespace { - ///---------------------------------------------------------------------- - ///---------------------------------------------------------------------- - std::pair GetRenderingDriver() { - typedef std::pair RetPairType; - - const int count = SDL_GetNumRenderDrivers(); - int opengles = -1; - int opengles2 = -1; - int opengl = -1; - SDL_RendererInfo info; - for (int z = 0; z < count; ++z) { - const int ret = SDL_GetRenderDriverInfo(z, &info); - if (0 == ret) { - if (std::strcmp("opengles", info.name) == 0) - opengles = z; - else if (std::strcmp("opengles2", info.name) == 0) - opengles2 = z; - else if (std::strcmp("opengl", info.name) == 0) - opengl = z; - } - } -#if !defined(FORCE_OPENGLES) - if (opengl > -1) - return RetPairType(opengl, "opengl"); -#endif - if (opengles2 > -1) - return RetPairType(opengles2, "opengles2"); - if (opengles > -1) - return RetPairType(opengles, "opengles"); -#if defined(FORCE_OPENGLES) - if (opengl > -1) - return RetPairType(opengl, "opengl"); -#endif - - return RetPairType(-1, "default"); - } - } //unnamed namespace - - struct SDLMain::LocalData { - SDL_Window* window; - SDL_Renderer* renderer; - SizeRatio sizeratio; - ObserversManager resChangeNotifList; - bool initialized; -#if defined(RASPBERRY_PI) - bool bcmInitialized; -#endif - }; - - ///------------------------------------------------------------------------ - ///------------------------------------------------------------------------ - SDLMain::SDLMain (const char* parGameName, ushort2 parRes, ushort2 parReferenceRes) : - m_gameName(parGameName), - m_localData(new LocalData) - { - m_localData->sizeratio.SetOriginal(static_cast(parReferenceRes), static_cast(parRes)); - m_localData->initialized = false; -#if defined(RASPBERRY_PI) - m_localData->bcmInitialized = false; -#endif - } - - ///------------------------------------------------------------------------ - ///------------------------------------------------------------------------ - SDLMain::~SDLMain() noexcept { - ClearIFN(*m_localData); -#if defined(RASPBERRY_PI) - assert(not m_localData->bcmInitialized); -#endif - } - - ///------------------------------------------------------------------------ - ///------------------------------------------------------------------------ - void SDLMain::Init() { - if (not m_localData->initialized) - InitSDL(*m_localData); - } - - ///------------------------------------------------------------------------ - ///------------------------------------------------------------------------ - void SDLMain::InitSDL (LocalData& parInitSDL) { -#if defined(RASPBERRY_PI) - assert(not parInitSDL.bcmInitialized); - bcm_host_init(); - parInitSDL.bcmInitialized = true; -#endif - - parInitSDL.window = nullptr; - parInitSDL.renderer = nullptr; - parInitSDL.initialized = false; - - if (SDL_Init(SDL_INIT_EVERYTHING) == -1) - throw std::runtime_error(SDL_GetError()); - parInitSDL.initialized = true; - -#if defined(FORCE_OPENGLES) - SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_ES); -#endif - - const float2 wh(m_localData->sizeratio.Resolution()); - SDL_Window* const win = SDL_CreateWindow(m_gameName.c_str(), 100, 100, static_cast(wh.x()), static_cast(wh.y()), SDL_WINDOW_SHOWN | SDL_WINDOW_RESIZABLE); - if (!win) - throw std::runtime_error(SDL_GetError()); - parInitSDL.window = win; - - const auto rendererDriver = GetRenderingDriver(); - m_rendererName = rendererDriver.second; - SDL_Renderer* const renderer = SDL_CreateRenderer(win, rendererDriver.first, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC); - if (!renderer) - throw std::runtime_error(SDL_GetError()); - parInitSDL.renderer = renderer; - } - - ///------------------------------------------------------------------------ - ///------------------------------------------------------------------------ - void SDLMain::ClearIFN (LocalData& parInitSDL) noexcept { - if (parInitSDL.renderer) - SDL_DestroyRenderer(parInitSDL.renderer); - if (parInitSDL.window) - SDL_DestroyWindow(parInitSDL.window); - if (parInitSDL.initialized) { - parInitSDL.initialized = false; - SDL_Quit(); - } -#if defined(RASPBERRY_PI) - if (parInitSDL.bcmInitialized) { - parInitSDL.bcmInitialized = false; - bcm_host_deinit(); - } -#endif - } - - ///------------------------------------------------------------------------ - ///------------------------------------------------------------------------ - SDL_Renderer* SDLMain::GetRenderer() { - if (m_localData->initialized) - return m_localData->renderer; - else - return nullptr; - } - - ///------------------------------------------------------------------------ - ///------------------------------------------------------------------------ - void SDLMain::SetResolution (ushort2 parRes) { - m_localData->sizeratio.UpdateResolution(static_cast(parRes)); - { - SDL_Renderer* const renderer = GetRenderer(); - assert(renderer); - const int retVal = SDL_RenderSetLogicalSize(renderer, parRes.x(), parRes.y()); - if (retVal) { - std::ostringstream oss; - oss << "Error setting logical size to renderer to " << parRes.x() << "x" << parRes.y() << ": " << SDL_GetError(); - throw std::runtime_error(oss.str()); - } - - const SDL_Rect area = { 0, 0, parRes.x(), parRes.y() }; - const int retValViewport = SDL_RenderSetViewport(renderer, &area); - if (retValViewport) { - std::ostringstream oss; - oss << "Error setting viewport to renderer to " << parRes.x() << "x" << parRes.y() << ": " << SDL_GetError(); - throw std::runtime_error(oss.str()); - } - } - - for (auto currNotifiable : m_localData->resChangeNotifList) { - currNotifiable->NotifyResChanged(m_localData->sizeratio); - } - } - - ///------------------------------------------------------------------------ - ///------------------------------------------------------------------------ - size_t SDLMain::RegisterForResChange (SizeNotifiableBase* parNotif) { - parNotif->NotifyResChanged(m_localData->sizeratio); - return m_localData->resChangeNotifList.Add(parNotif); - } - - ///------------------------------------------------------------------------ - ///------------------------------------------------------------------------ - void SDLMain::UnregisterForResChange (size_t parID) noexcept { - m_localData->resChangeNotifList.Remove(parID); - } - - ///------------------------------------------------------------------------ - ///------------------------------------------------------------------------ - void SDLMain::SwapRegisteredForResChange (size_t parID, SizeNotifiableBase* parNotif) { - m_localData->resChangeNotifList.Update(parID, parNotif); - } - - ///------------------------------------------------------------------------ - ///------------------------------------------------------------------------ - ushort2 SDLMain::WidthHeight() const noexcept { - return static_cast(m_localData->sizeratio.Resolution()); - } - - ///------------------------------------------------------------------------ - ///------------------------------------------------------------------------ - std::string SDLMain::GetVideoDriverName() const { - return std::string(SDL_GetCurrentVideoDriver()); - } -} //namespace cloonel diff --git a/src/gamelib/sdlmain.hpp b/src/gamelib/sdlmain.hpp deleted file mode 100644 index dc05b8c..0000000 --- a/src/gamelib/sdlmain.hpp +++ /dev/null @@ -1,60 +0,0 @@ -/* - Copyright 2014 Michele "King_DuckZ" Santullo - - This file is part of CloonelJump. - - CloonelJump is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - CloonelJump is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with CloonelJump. If not, see . -*/ - -#ifndef id8E7A054DAC9040B887F2620EFD229EE8 -#define id8E7A054DAC9040B887F2620EFD229EE8 - -#include "vector.hpp" -#include -#include - -struct SDL_Renderer; - -namespace cloonel { - class SizeNotifiableBase; - - class SDLMain { - public: - SDLMain ( const char* parGameName, ushort2 parRes, ushort2 parReferenceRes ); - ~SDLMain ( void ) noexcept; - - void Init ( void ); - SDL_Renderer* GetRenderer ( void ); - ushort2 WidthHeight ( void ) const noexcept; - - void SetResolution ( ushort2 parRes ); - size_t RegisterForResChange ( SizeNotifiableBase* parNotif ); - void UnregisterForResChange ( size_t parID ) noexcept; - void SwapRegisteredForResChange ( size_t parID, SizeNotifiableBase* parNotif ); - const std::string& GetRendererName ( void ) const { return m_rendererName; } - std::string GetVideoDriverName ( void ) const; - - private: - struct LocalData; - - void InitSDL ( LocalData& parData ); - void ClearIFN ( LocalData& parData ) noexcept; - - const std::string m_gameName; - std::string m_rendererName; - std::unique_ptr m_localData; - }; -} //namespace cloonel - -#endif diff --git a/src/gamelib/sizenotifiable.cpp b/src/gamelib/sizenotifiable.cpp deleted file mode 100644 index 7d6750d..0000000 --- a/src/gamelib/sizenotifiable.cpp +++ /dev/null @@ -1,78 +0,0 @@ -/* - Copyright 2016, 2017 Michele "King_DuckZ" Santullo - - This file is part of MyCurry. - - MyCurry is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - MyCurry is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with MyCurry. If not, see . -*/ - -#include "sizenotifiable.hpp" -#include "sizeratio.hpp" -#include "sdlmain.hpp" -#include -#include - -namespace cloonel { - namespace implem { - } //namespace implem - - namespace regbehaviours { - ///---------------------------------------------------------------------- - ///---------------------------------------------------------------------- - void AutoRegister::Register (SizeNotifiableBase* parNotifiable) { - assert(m_sdlmain); -#if !defined(NDEBUG) - assert(not m_registered); - m_registered = true; -#endif - m_id = m_sdlmain->RegisterForResChange(parNotifiable); - } - - ///---------------------------------------------------------------------- - ///---------------------------------------------------------------------- - void AutoRegister::Unregister() noexcept { -#if !defined(NDEBUG) - assert(m_registered or not m_sdlmain); - m_registered = false; -#endif - if (m_sdlmain) { - m_sdlmain->UnregisterForResChange(m_id); - } - } - - ///---------------------------------------------------------------------- - ///---------------------------------------------------------------------- - AutoRegister::AutoRegister (AutoRegister&& parOther, SizeNotifiableBase* parSwapTo) : - m_sdlmain(nullptr), - m_id(0) -#if !defined(NDEBUG) - , m_registered(false) -#endif - { - std::swap(m_sdlmain, parOther.m_sdlmain); - std::swap(m_id, parOther.m_id); -#if !defined(NDEBUG) - std::swap(m_registered, parOther.m_registered); -#endif - assert(m_sdlmain); - m_sdlmain->SwapRegisteredForResChange(m_id, parSwapTo); - } - } //namespace regbehaviours - - ///-------------------------------------------------------------------------- - ///-------------------------------------------------------------------------- - void SizeNotifiableBase::NotifyResChanged (const SizeRatio& parSize) { - m_scaleRatio = parSize.Ratio(); - } -} //namespace cloonel diff --git a/src/gamelib/sizenotifiable.hpp b/src/gamelib/sizenotifiable.hpp deleted file mode 100644 index 132cf34..0000000 --- a/src/gamelib/sizenotifiable.hpp +++ /dev/null @@ -1,128 +0,0 @@ -/* - Copyright 2014 Michele "King_DuckZ" Santullo - - This file is part of CloonelJump. - - CloonelJump is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - CloonelJump is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with CloonelJump. If not, see . -*/ - -#ifndef id78906DE4FB0D43219CD3F0D9C620FC06 -#define id78906DE4FB0D43219CD3F0D9C620FC06 - -#include "vector.hpp" -#include -#include - -namespace cloonel { - class SizeRatio; - class SDLMain; - class SizeNotifiableBase; - - namespace regbehaviours { - class DontRegister { - public: - enum { SDLMAIN_NEEDED = false }; - - DontRegister ( void ) = default; - DontRegister ( DontRegister&&, SizeNotifiableBase* ) { } - ~DontRegister ( void ) noexcept = default; - - void Register ( SizeNotifiableBase* ) const noexcept { return; } - void Unregister ( void ) const noexcept { return; } - }; - - class AutoRegister { - public: - enum { SDLMAIN_NEEDED = true }; - - AutoRegister ( AutoRegister&& parOther, SizeNotifiableBase* parSwapTo ); - explicit AutoRegister ( SDLMain* parMain ) : - m_sdlmain(parMain) -#if !defined(NDEBUG) - , m_registered(false) -#endif - { - } - ~AutoRegister ( void ) noexcept = default; - - void Register ( SizeNotifiableBase* parNotifiable ); - void Unregister ( void ) noexcept; - - private: - SDLMain* m_sdlmain; - size_t m_id; -#if !defined(NDEBUG) - bool m_registered; -#endif - }; - } //namespace regbehaviours - - class SizeNotifiableBase { - protected: - SizeNotifiableBase ( void ) = default; - SizeNotifiableBase ( const SizeNotifiableBase& ) = default; - virtual ~SizeNotifiableBase ( void ) noexcept = default; - SizeNotifiableBase& operator= ( const SizeNotifiableBase& ) = delete; - - public: - virtual void NotifyResChanged ( const SizeRatio& parSize ); - const float2& Ratio ( void ) const noexcept { return m_scaleRatio; } - - private: - float2 m_scaleRatio; - }; - - template - class SizeNotifiable; - - template - class SizeNotifiable : private RegisterBehaviour, public SizeNotifiableBase { - static_assert(RegisterBehaviour::SDLMAIN_NEEDED == false, "SdlMainNeeded mismatches expected value"); - public: - SizeNotifiable ( const SizeNotifiable& ) = delete; - SizeNotifiable ( SizeNotifiable&& parOther ) : - RegisterBehaviour(std::move(parOther), this), - SizeNotifiableBase(parOther) - { - } - SizeNotifiable ( void ) { - this->Register(this); - } - virtual ~SizeNotifiable ( void ) noexcept { - this->Unregister(); - } - }; - - template - class SizeNotifiable : private RegisterBehaviour, public SizeNotifiableBase { - static_assert(RegisterBehaviour::SDLMAIN_NEEDED == true, "SdlMainNeeded mismatches expected value"); - public: - SizeNotifiable ( const SizeNotifiable& ) = delete; - SizeNotifiable ( SizeNotifiable&& parOther ) : - RegisterBehaviour(std::move(parOther), this), - SizeNotifiableBase(parOther) - { - } - explicit SizeNotifiable ( SDLMain* parSdlMain ) : - RegisterBehaviour(parSdlMain) - { - this->Register(this); - } - virtual ~SizeNotifiable ( void ) noexcept { - this->Unregister(); - } - }; -} //namespace cloonel - -#endif diff --git a/src/gamelib/sizeratio.cpp b/src/gamelib/sizeratio.cpp deleted file mode 100644 index 53a7af7..0000000 --- a/src/gamelib/sizeratio.cpp +++ /dev/null @@ -1,66 +0,0 @@ -/* - Copyright 2016, 2017 Michele "King_DuckZ" Santullo - - This file is part of MyCurry. - - MyCurry is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - MyCurry is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with MyCurry. If not, see . -*/ - -#include "sizeratio.hpp" -#include "compatibility.h" - -namespace cloonel { - namespace { - float2 CalculateRatio ( float2 parOriginal, float2 parResolution ) a_pure; - - ///---------------------------------------------------------------------- - ///---------------------------------------------------------------------- - float2 CalculateRatio (float2 parOriginal, float2 parResolution) { - return parResolution / parOriginal; - } - } //unnamed namespace - - ///-------------------------------------------------------------------------- - ///-------------------------------------------------------------------------- - SizeRatio::SizeRatio (const float2& parOriginal) : - m_original(parOriginal), - m_size(parOriginal), - m_ratio(1.0f) - { - } - - ///-------------------------------------------------------------------------- - ///-------------------------------------------------------------------------- - SizeRatio::SizeRatio (const float2& parOriginal, const float2& parSize) : - m_original(parOriginal), - m_size(parSize), - m_ratio(CalculateRatio(parOriginal, parSize)) - { - } - - ///-------------------------------------------------------------------------- - ///-------------------------------------------------------------------------- - void SizeRatio::SetOriginal (const float2& parOriginal, const float2& parRes) { - m_original = parOriginal; - m_size = parRes; - m_ratio = CalculateRatio(parOriginal, parRes); - } - - ///-------------------------------------------------------------------------- - ///-------------------------------------------------------------------------- - void SizeRatio::UpdateResolution (const float2& parNewRes) { - m_size = parNewRes; - m_ratio = CalculateRatio(m_original, parNewRes); - } -} //namespace cloonel diff --git a/src/gamelib/sizeratio.hpp b/src/gamelib/sizeratio.hpp deleted file mode 100644 index 6e0cc4f..0000000 --- a/src/gamelib/sizeratio.hpp +++ /dev/null @@ -1,45 +0,0 @@ -/* - Copyright 2014 Michele "King_DuckZ" Santullo - - This file is part of CloonelJump. - - CloonelJump is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - CloonelJump is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with CloonelJump. If not, see . -*/ - -#ifndef id3098F08C14B84E3C8CE169CBA05C9C86 -#define id3098F08C14B84E3C8CE169CBA05C9C86 - -#include "vector.hpp" - -namespace cloonel { - class SizeRatio { - public: - SizeRatio ( void ) = default; - explicit SizeRatio ( const float2& parOriginal ); - SizeRatio ( const float2& parOriginal, const float2& parSize ); - ~SizeRatio ( void ) noexcept = default; - - const float2& Ratio ( void ) const noexcept { return m_ratio; } - const float2& Resolution ( void ) const noexcept { return m_size; } - void SetOriginal ( const float2& parOriginal, const float2& parRes ); - void UpdateResolution ( const float2& parNewRes ); - - private: - float2 m_original; - float2 m_size; - float2 m_ratio; - }; -} //namespace cloonel - -#endif diff --git a/src/gamelib/vector.hpp b/src/gamelib/vector.hpp index 2546b94..ab44966 100644 --- a/src/gamelib/vector.hpp +++ b/src/gamelib/vector.hpp @@ -20,6 +20,7 @@ #pragma once #include "vectorwrapper/vectorwrapper.hpp" +#include "vectypes.hpp" #include #include #if !defined(NDEBUG) @@ -43,11 +44,30 @@ namespace vwr { SPECIALIZE_ARRAY_VECTOR(uint16_t, 2); SPECIALIZE_ARRAY_VECTOR(int32_t, 2); + template <> + struct VectorWrapperInfo { + enum { dimensions = 2 }; + typedef cloonel::ushort2::scalar_type scalar_type; + typedef cloonel::ushort2 vector_type; + static scalar_type& get_at (size_type parIndex, vector_type& parVector) { + return parVector[parIndex]; + } + }; + template <> + struct VectorWrapperInfo { + enum { dimensions = 2 }; + typedef cloonel::float2::scalar_type scalar_type; + typedef cloonel::float2 vector_type; + static scalar_type& get_at (size_type parIndex, vector_type& parVector) { + return parVector[parIndex]; + } + }; + #if !defined(NDEBUG) template std::ostream& operator<< (std::ostream& parStream, const Vec& parVec) { parStream << '<'; - for (std::size_t z = 0; z < Vec::dimensions - 1; ++z) { + for (size_type z = 0; z < Vec::dimensions - 1; ++z) { std::cout << parVec[z] << ", "; } std::cout << parVec[Vec::dimensions - 1] << '>'; @@ -80,13 +100,8 @@ namespace curry { using vec2f = vwr::Vec>; using vec2us = vwr::Vec>; using vec2i = vwr::Vec>; + using cl_vec2us = vwr::Vec; using vwr::vector_cast; } //namespace curry -//make stuff from CloonelJump compile happily -namespace cloonel { - using ushort2 = vwr::Vec>; - using float2 = vwr::Vec>; -} //namespace cloonel - #undef SPECIALIZE_ARRAY_VECTOR From c320abbed2dccddf387be3fb4e8b8ac7013ef917 Mon Sep 17 00:00:00 2001 From: King_DuckZ Date: Sat, 11 Mar 2017 08:51:16 +0000 Subject: [PATCH 14/45] Update submodule --- lib/clooneljump | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/clooneljump b/lib/clooneljump index 6ce7b57..77e2bf5 160000 --- a/lib/clooneljump +++ b/lib/clooneljump @@ -1 +1 @@ -Subproject commit 6ce7b57882d2b542ee2d255dd2441cc1c1370390 +Subproject commit 77e2bf539f21431d5b0b883d5113a2e396a3233e From 15e874f0fee3e444e261b415adf1d552425d3ddd Mon Sep 17 00:00:00 2001 From: King_DuckZ Date: Sat, 11 Mar 2017 12:22:40 +0000 Subject: [PATCH 15/45] Move texture-related code out from Character class. --- src/gamelib/CMakeLists.txt | 1 + src/gamelib/character.cpp | 29 +++++----------------- src/gamelib/character.hpp | 12 +++------ src/gamelib/drawable.cpp | 51 ++++++++++++++++++++++++++++++++++++++ src/gamelib/drawable.hpp | 42 +++++++++++++++++++++++++++++++ 5 files changed, 104 insertions(+), 31 deletions(-) create mode 100644 src/gamelib/drawable.cpp create mode 100644 src/gamelib/drawable.hpp diff --git a/src/gamelib/CMakeLists.txt b/src/gamelib/CMakeLists.txt index 8a6ace3..2433b8e 100644 --- a/src/gamelib/CMakeLists.txt +++ b/src/gamelib/CMakeLists.txt @@ -19,6 +19,7 @@ add_library(${PROJECT_NAME} worlditems.cpp moveable.cpp grid_raytrace.cpp + drawable.cpp ) set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD 14) set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD_REQUIRED ON) diff --git a/src/gamelib/character.cpp b/src/gamelib/character.cpp index c72b8fc..de29eff 100644 --- a/src/gamelib/character.cpp +++ b/src/gamelib/character.cpp @@ -30,7 +30,6 @@ namespace curry { Character::Character (cloonel::InputBag* parInputBag, const WorldSizeNotifiable::DeferredRegister& parDeferredRegister) : WorldSizeNotifiable(parDeferredRegister), m_position(vec2f(0.0f), vec2f(0.0f), vec2f(0.0f)), - m_width_height(0.0f), m_input_bag(parInputBag), m_world(parDeferredRegister.world()), m_speed(1.0f) @@ -39,19 +38,6 @@ namespace curry { assert(m_world); } - void Character::load (const char* parTexturePath, cloonel::SDLMain& parSDLMain) { - const auto old_wh = m_width_height; - m_texture.load(parTexturePath, parSDLMain); - m_width_height = vector_cast(m_texture.width_height()); - const auto& new_wh = m_width_height; - if (m_position.get_min() != m_position.get_max()) - m_position.change_minmax(m_position.get_min(), m_position.get_max() + old_wh - new_wh); - } - - void Character::unload() { - m_texture.unload(); - } - void Character::set_position (const vec2f& parPos) { m_position = parPos; } @@ -60,14 +46,6 @@ namespace curry { return m_position.get(); } - const vec2f& Character::width_height() const { - return m_width_height; - } - - Texture& Character::texture() { - return m_texture; - } - Rect Character::destination_rect (const vec2f& parWorldPos) const { return Rect( m_position.get() - parWorldPos, @@ -111,7 +89,7 @@ namespace curry { return true; //wtp.property->walkable; }; - for_each_voxel_under_segment(old_pos, this->position(), m_texture.width_height(), *m_world, is_walkable); + for_each_voxel_under_segment(old_pos, this->position(), width_height(), *m_world, is_walkable); //for (auto tile_vec : crossed_tiles(old_pos, this->position(), m_world->tile_size())) { // const TileIndex* const tile = m_world->tile(tile_vec); // for (uint16_t z = 0; z < m_world->layer_count(); ++z) { @@ -131,4 +109,9 @@ namespace curry { assert(parSpeed > 0.0f); m_speed = parSpeed; } + + void Character::on_texture_size_changed (const vec2f& parOldSz, const vec2f& parNewSz) { + if (m_position.get_min() != m_position.get_max()) + m_position.change_minmax(m_position.get_min(), m_position.get_max() + parOldSz - parNewSz); + } } //namespace curry diff --git a/src/gamelib/character.hpp b/src/gamelib/character.hpp index 008410a..cb91aa8 100644 --- a/src/gamelib/character.hpp +++ b/src/gamelib/character.hpp @@ -19,12 +19,12 @@ #pragma once -#include "texture.hpp" #include "vector.hpp" #include "rect.hpp" #include "constrained_position.hpp" #include "worldsizenotifiable.hpp" #include "moveable.hpp" +#include "drawable.hpp" namespace cloonel { class SDLMain; @@ -34,17 +34,13 @@ namespace cloonel { namespace curry { class WorldGrid; - class Character : public WorldSizeNotifiable, public Moveable { + class Character : public Drawable, public WorldSizeNotifiable, public Moveable { public: Character (cloonel::InputBag* parInputBag, const WorldSizeNotifiable::DeferredRegister& parDeferredRegister); virtual ~Character() noexcept = default; - void load (const char* parTexturePath, cloonel::SDLMain& parSDLMain); - void unload(); const vec2f& position() const; void set_position (const vec2f& parPos); - const vec2f& width_height() const; - Texture& texture(); Rect destination_rect (const vec2f& parWorldPos) const; Rect source_rect() const; virtual void world_size_changed (const vec2us& parSize, const vec2i& parPixelSize) override; @@ -52,9 +48,9 @@ namespace curry { void set_speed (float parSpeed); private: + virtual void on_texture_size_changed (const vec2f& parOldSz, const vec2f& parNewSz); + ConstrainedPosition m_position; - Texture m_texture; - vec2f m_width_height; cloonel::InputBag* m_input_bag; WorldGrid* m_world; float m_speed; diff --git a/src/gamelib/drawable.cpp b/src/gamelib/drawable.cpp new file mode 100644 index 0000000..b3a60af --- /dev/null +++ b/src/gamelib/drawable.cpp @@ -0,0 +1,51 @@ +/* + Copyright 2016, 2017 Michele "King_DuckZ" Santullo + + This file is part of MyCurry. + + MyCurry is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + MyCurry is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with MyCurry. If not, see . +*/ + +#include "drawable.hpp" + +namespace curry { + Drawable::Drawable() : + m_width_height(0.0f) + { + } + + void Drawable::load (const char* parTexturePath, cloonel::SDLMain& parSDLMain) { + const auto old_wh = m_width_height; + m_texture.load(parTexturePath, parSDLMain); + m_width_height = vector_cast(m_texture.width_height()); + const auto& new_wh = m_width_height; + if (new_wh != old_wh) + this->on_texture_size_changed(old_wh, new_wh); + } + + void Drawable::unload() { + m_texture.unload(); + } + + const vec2f& Drawable::width_height() const { + return m_width_height; + } + + Texture& Drawable::texture() { + return m_texture; + } + + void Drawable::on_texture_size_changed (const vec2f&, const vec2f&) { + } +} //namespace curry diff --git a/src/gamelib/drawable.hpp b/src/gamelib/drawable.hpp new file mode 100644 index 0000000..c0d7735 --- /dev/null +++ b/src/gamelib/drawable.hpp @@ -0,0 +1,42 @@ +/* + Copyright 2016, 2017 Michele "King_DuckZ" Santullo + + This file is part of MyCurry. + + MyCurry is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + MyCurry is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with MyCurry. If not, see . +*/ + +#pragma once + +#include "texture.hpp" +#include "vector.hpp" + +namespace curry { + class Drawable { + public: + Drawable(); + virtual ~Drawable() noexcept = default; + + void load (const char* parTexturePath, cloonel::SDLMain& parSDLMain); + void unload(); + const vec2f& width_height() const; + Texture& texture(); + + private: + virtual void on_texture_size_changed (const vec2f& parOldSz, const vec2f& parNewSz); + + Texture m_texture; + vec2f m_width_height; + }; +} //namespace curry From 23d7121e76b6351e2ca75bf3d71d2e186720a5e7 Mon Sep 17 00:00:00 2001 From: King_DuckZ Date: Sun, 12 Mar 2017 15:12:09 +0000 Subject: [PATCH 16/45] Add safe_ptr from kakoune. --- CMakeLists.txt | 6 +++ lib/kakoune/ref_ptr.hh | 115 ++++++++++++++++++++++++++++++++++++++++ lib/kakoune/safe_ptr.hh | 96 +++++++++++++++++++++++++++++++++ 3 files changed, 217 insertions(+) create mode 100644 lib/kakoune/ref_ptr.hh create mode 100644 lib/kakoune/safe_ptr.hh diff --git a/CMakeLists.txt b/CMakeLists.txt index ca8e272..89cff21 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -55,6 +55,12 @@ set(common_gcc_flags -Wall -Wextra -pedantic -Wconversion -ffast-math) add_library(${PROJECT_NAME} INTERFACE) target_compile_options(${PROJECT_NAME} INTERFACE ${common_gcc_flags}) +target_compile_definitions(${PROJECT_NAME} + INTERFACE $<$:KAK_DEBUG> +) +target_include_directories(${PROJECT_NAME} + INTERFACE lib/kakoune +) add_subdirectory(lib/clooneljump/src/cloonelgraphics) add_subdirectory(src/gamelib) diff --git a/lib/kakoune/ref_ptr.hh b/lib/kakoune/ref_ptr.hh new file mode 100644 index 0000000..5711ced --- /dev/null +++ b/lib/kakoune/ref_ptr.hh @@ -0,0 +1,115 @@ +#ifndef ref_ptr_hh_INCLUDED +#define ref_ptr_hh_INCLUDED + +#include + +namespace Kakoune +{ + +struct RefCountable +{ + int refcount = 0; + virtual ~RefCountable() = default; +}; + +struct RefCountablePolicy +{ + static void inc_ref(RefCountable* r, void*) noexcept { ++r->refcount; } + static void dec_ref(RefCountable* r, void*) { if (--r->refcount == 0) delete r; } + static void ptr_moved(RefCountable*, void*, void*) noexcept {} +}; + +template +struct RefPtr +{ + RefPtr() = default; + explicit RefPtr(T* ptr) : m_ptr(ptr) { acquire(); } + ~RefPtr() { release(); } + RefPtr(const RefPtr& other) : m_ptr(other.m_ptr) { acquire(); } + RefPtr(RefPtr&& other) + noexcept(noexcept(std::declval().moved(nullptr))) + : m_ptr(other.m_ptr) { other.m_ptr = nullptr; moved(&other); } + + RefPtr& operator=(const RefPtr& other) + { + if (other.m_ptr != m_ptr) + { + release(); + m_ptr = other.m_ptr; + acquire(); + } + return *this; + } + + RefPtr& operator=(RefPtr&& other) + { + release(); + m_ptr = other.m_ptr; + other.m_ptr = nullptr; + moved(&other); + return *this; + } + + RefPtr& operator=(T* ptr) + { + if (ptr != m_ptr) + { + release(); + m_ptr = ptr; + acquire(); + } + return *this; + } + + [[gnu::always_inline]] + T* operator->() const { return m_ptr; } + [[gnu::always_inline]] + T& operator*() const { return *m_ptr; } + + [[gnu::always_inline]] + T* get() const { return m_ptr; } + + [[gnu::always_inline]] + explicit operator bool() const { return m_ptr; } + + void reset(T* ptr = nullptr) + { + if (ptr == m_ptr) + return; + release(); + m_ptr = ptr; + acquire(); + } + + friend bool operator==(const RefPtr& lhs, const RefPtr& rhs) { return lhs.m_ptr == rhs.m_ptr; } + friend bool operator!=(const RefPtr& lhs, const RefPtr& rhs) { return lhs.m_ptr != rhs.m_ptr; } + +private: + T* m_ptr = nullptr; + + [[gnu::always_inline]] + void acquire() + { + if (m_ptr) + Policy::inc_ref(m_ptr, this); + } + + [[gnu::always_inline]] + void release() + { + if (m_ptr) + Policy::dec_ref(m_ptr, this); + } + + [[gnu::always_inline]] + void moved(void* from) + noexcept(noexcept(Policy::ptr_moved(nullptr, nullptr, nullptr))) + { + if (m_ptr) + Policy::ptr_moved(m_ptr, from, this); + } +}; + +} + +#endif // ref_ptr_hh_INCLUDED diff --git a/lib/kakoune/safe_ptr.hh b/lib/kakoune/safe_ptr.hh new file mode 100644 index 0000000..4d83a46 --- /dev/null +++ b/lib/kakoune/safe_ptr.hh @@ -0,0 +1,96 @@ +#ifndef safe_ptr_hh_INCLUDED +#define safe_ptr_hh_INCLUDED + +// #define SAFE_PTR_TRACK_CALLSTACKS + +#include "assert.hh" +#include "ref_ptr.hh" + +#include +#include + +#ifdef SAFE_PTR_TRACK_CALLSTACKS +#include "backtrace.hh" +#include "vector.hh" +#include +#endif + +namespace Kakoune +{ + +// *** SafePtr: objects that assert nobody references them when they die *** + +class SafeCountable +{ +public: +#ifdef KAK_DEBUG + SafeCountable() : m_count(0) {} + ~SafeCountable() + { + kak_assert(m_count == 0); + #ifdef SAFE_PTR_TRACK_CALLSTACKS + kak_assert(m_callstacks.empty()); + #endif + } + +private: + friend struct SafeCountablePolicy; + #ifdef SAFE_PTR_TRACK_CALLSTACKS + struct Callstack + { + Callstack(void* p) : ptr(p) {} + void* ptr; + Backtrace bt; + }; + + mutable Vector m_callstacks; + #endif + mutable int m_count; +#endif +}; + +struct SafeCountablePolicy +{ +#ifdef KAK_DEBUG + static void inc_ref(const SafeCountable* sc, void* ptr) noexcept + { + ++sc->m_count; + #ifdef SAFE_PTR_TRACK_CALLSTACKS + sc->m_callstacks.emplace_back(ptr); + #endif + } + + static void dec_ref(const SafeCountable* sc, void* ptr) noexcept + { + --sc->m_count; + kak_assert(sc->m_count >= 0); + #ifdef SAFE_PTR_TRACK_CALLSTACKS + auto it = std::find_if(sc->m_callstacks.begin(), sc->m_callstacks.end(), + [=](const SafeCountable::Callstack& cs) { return cs.ptr == ptr; }); + kak_assert(it != sc->m_callstacks.end()); + sc->m_callstacks.erase(it); + #endif + } + + static void ptr_moved(const SafeCountable* sc, void* from, void* to) noexcept + { + #ifdef SAFE_PTR_TRACK_CALLSTACKS + auto it = std::find_if(sc->m_callstacks.begin(), sc->m_callstacks.end(), + [=](const SafeCountable::Callstack& cs) { return cs.ptr == from; }); + kak_assert(it != sc->m_callstacks.end()); + it->ptr = to; + #endif + } +#else + static void inc_ref(const SafeCountable*, void* ptr) noexcept {} + static void dec_ref(const SafeCountable*, void* ptr) noexcept {} + static void ptr_moved(const SafeCountable*, void*, void*) noexcept {} +#endif +}; + +template +using SafePtr = RefPtr; + +} + +#endif // safe_ptr_hh_INCLUDED From 8a65faf45c7e29505471a8f09ed000e4bb190de5 Mon Sep 17 00:00:00 2001 From: King_DuckZ Date: Sun, 12 Mar 2017 15:12:44 +0000 Subject: [PATCH 17/45] Fixes to make safe_ptr work outside of kakoune. --- lib/kakoune/safe_ptr.hh | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/lib/kakoune/safe_ptr.hh b/lib/kakoune/safe_ptr.hh index 4d83a46..2b3d2b1 100644 --- a/lib/kakoune/safe_ptr.hh +++ b/lib/kakoune/safe_ptr.hh @@ -3,7 +3,11 @@ // #define SAFE_PTR_TRACK_CALLSTACKS -#include "assert.hh" +//King_DuckZ: +#include +#define kak_assert(a) assert(a) + +//#include "assert.hh" #include "ref_ptr.hh" #include @@ -57,6 +61,8 @@ struct SafeCountablePolicy ++sc->m_count; #ifdef SAFE_PTR_TRACK_CALLSTACKS sc->m_callstacks.emplace_back(ptr); + #else + static_cast(ptr); #endif } @@ -69,6 +75,8 @@ struct SafeCountablePolicy [=](const SafeCountable::Callstack& cs) { return cs.ptr == ptr; }); kak_assert(it != sc->m_callstacks.end()); sc->m_callstacks.erase(it); + #else + static_cast(ptr); #endif } @@ -79,6 +87,10 @@ struct SafeCountablePolicy [=](const SafeCountable::Callstack& cs) { return cs.ptr == from; }); kak_assert(it != sc->m_callstacks.end()); it->ptr = to; + #else + static_cast(sc); + static_cast(from); + static_cast(to); #endif } #else From d9a943ee4ab5c14f7a833e8221a2c536ce7c23c5 Mon Sep 17 00:00:00 2001 From: King_DuckZ Date: Wed, 15 Mar 2017 09:12:16 +0000 Subject: [PATCH 18/45] Add DrawingQueue class. Big do-it-all commit. Work on this is not finished and there are a few changes that need to be undone. A bit messy but that's how it is :/ --- lib/clooneljump | 2 +- lib/kakoune/safe_ptr.hh | 5 +- src/gamelib/CMakeLists.txt | 1 + src/gamelib/character.hpp | 2 +- src/gamelib/drawable.cpp | 62 +++++++++-- src/gamelib/drawable.hpp | 26 +++-- src/gamelib/drawing_queue.cpp | 167 ++++++++++++++++++++++++++++++ src/gamelib/drawing_queue.hpp | 69 ++++++++++++ src/gamelib/gamescenebase.cpp | 76 ++------------ src/gamelib/gamescenebase.hpp | 6 +- src/gamelib/ingamescene.cpp | 48 +++++++-- src/gamelib/ingamescene.hpp | 9 ++ src/gamelib/safe_stack_object.hpp | 87 ++++++++++++++++ src/gamelib/texture.cpp | 14 +++ src/gamelib/texture.hpp | 6 +- 15 files changed, 480 insertions(+), 100 deletions(-) create mode 100644 src/gamelib/drawing_queue.cpp create mode 100644 src/gamelib/drawing_queue.hpp create mode 100644 src/gamelib/safe_stack_object.hpp diff --git a/lib/clooneljump b/lib/clooneljump index 77e2bf5..ceb3e18 160000 --- a/lib/clooneljump +++ b/lib/clooneljump @@ -1 +1 @@ -Subproject commit 77e2bf539f21431d5b0b883d5113a2e396a3233e +Subproject commit ceb3e180fee15ba3d6e7b17e8f88261b35d4ae92 diff --git a/lib/kakoune/safe_ptr.hh b/lib/kakoune/safe_ptr.hh index 2b3d2b1..36aa80d 100644 --- a/lib/kakoune/safe_ptr.hh +++ b/lib/kakoune/safe_ptr.hh @@ -29,6 +29,7 @@ class SafeCountable public: #ifdef KAK_DEBUG SafeCountable() : m_count(0) {} + SafeCountable (SafeCountable&&) : m_count(0) {} ~SafeCountable() { kak_assert(m_count == 0); @@ -94,8 +95,8 @@ struct SafeCountablePolicy #endif } #else - static void inc_ref(const SafeCountable*, void* ptr) noexcept {} - static void dec_ref(const SafeCountable*, void* ptr) noexcept {} + static void inc_ref(const SafeCountable*, void*) noexcept {} + static void dec_ref(const SafeCountable*, void*) noexcept {} static void ptr_moved(const SafeCountable*, void*, void*) noexcept {} #endif }; diff --git a/src/gamelib/CMakeLists.txt b/src/gamelib/CMakeLists.txt index 2433b8e..aa5832a 100644 --- a/src/gamelib/CMakeLists.txt +++ b/src/gamelib/CMakeLists.txt @@ -20,6 +20,7 @@ add_library(${PROJECT_NAME} moveable.cpp grid_raytrace.cpp drawable.cpp + drawing_queue.cpp ) set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD 14) set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD_REQUIRED ON) diff --git a/src/gamelib/character.hpp b/src/gamelib/character.hpp index cb91aa8..63e6ca2 100644 --- a/src/gamelib/character.hpp +++ b/src/gamelib/character.hpp @@ -48,7 +48,7 @@ namespace curry { void set_speed (float parSpeed); private: - virtual void on_texture_size_changed (const vec2f& parOldSz, const vec2f& parNewSz); + virtual void on_texture_size_changed (const vec2f& parOldSz, const vec2f& parNewSz) override; ConstrainedPosition m_position; cloonel::InputBag* m_input_bag; diff --git a/src/gamelib/drawable.cpp b/src/gamelib/drawable.cpp index b3a60af..7032e3b 100644 --- a/src/gamelib/drawable.cpp +++ b/src/gamelib/drawable.cpp @@ -18,34 +18,74 @@ */ #include "drawable.hpp" +#include "texture.hpp" +#include "safe_stack_object.hpp" +#include +#include +#include +#include namespace curry { + namespace { + vec2f max_size (const vec2f& parA, const vec2f& parB) { + return vec2f( + std::max(parA.x(), parB.x()), + std::max(parA.y(), parB.y()) + ); + } + } //unnamed namespace + Drawable::Drawable() : m_width_height(0.0f) { } - void Drawable::load (const char* parTexturePath, cloonel::SDLMain& parSDLMain) { - const auto old_wh = m_width_height; - m_texture.load(parTexturePath, parSDLMain); - m_width_height = vector_cast(m_texture.width_height()); - const auto& new_wh = m_width_height; - if (new_wh != old_wh) - this->on_texture_size_changed(old_wh, new_wh); + Drawable::~Drawable() noexcept = default; + + size_t Drawable::add_texture (const char* parTexturePath, cloonel::SDLMain& parSDLMain) { + SafeStackObject new_texture; + new_texture->load(parTexturePath, parSDLMain); + const auto retval = store_new_texture(std::move(new_texture)); + return retval; } - void Drawable::unload() { - m_texture.unload(); + size_t Drawable::add_texture (const vec2f& parSize, cloonel::SDLMain& parSDLMain) { + assert(parSize > 0.0f); + SafeStackObject new_texture; + new_texture->load_empty(parSDLMain, static_cast(parSize)); + const auto retval = store_new_texture(std::move(new_texture)); + return retval; + } + + void Drawable::unload_textures() noexcept { + for (auto& tex : m_textures) { + tex->unload(); + } + m_textures.clear(); } const vec2f& Drawable::width_height() const { return m_width_height; } - Texture& Drawable::texture() { - return m_texture; + Kakoune::SafePtr& Drawable::texture() { + assert(not m_textures.empty()); + auto& retval = m_textures[0]; + return retval; } void Drawable::on_texture_size_changed (const vec2f&, const vec2f&) { } + + size_t Drawable::store_new_texture (SafeStackObject&& parNewTexture) { + const auto old_wh = m_width_height; + m_width_height = max_size(vector_cast(parNewTexture->width_height()), old_wh); + const auto& new_wh = m_width_height; + if (new_wh != old_wh) + this->on_texture_size_changed(old_wh, new_wh); + + m_textures.push_back(std::move(parNewTexture)); + assert(m_textures.size() > 0); + return m_textures.size() - 1; + } } //namespace curry diff --git a/src/gamelib/drawable.hpp b/src/gamelib/drawable.hpp index c0d7735..a312b02 100644 --- a/src/gamelib/drawable.hpp +++ b/src/gamelib/drawable.hpp @@ -19,24 +19,38 @@ #pragma once -#include "texture.hpp" +#include "safe_ptr.hh" #include "vector.hpp" +#include + +namespace cloonel { + class SDLMain; +} //namespace cloonel namespace curry { + template class SafeStackObject; + class Texture; + class DrawingQueue; + class WorldViewport; + class Drawable { public: Drawable(); - virtual ~Drawable() noexcept = default; + virtual ~Drawable() noexcept; - void load (const char* parTexturePath, cloonel::SDLMain& parSDLMain); - void unload(); + size_t add_texture (const char* parTexturePath, cloonel::SDLMain& parSDLMain); + size_t add_texture (const vec2f& parSize, cloonel::SDLMain& parSDLMain); + + void unload_textures() noexcept; const vec2f& width_height() const; - Texture& texture(); + Kakoune::SafePtr& texture(); + virtual void draw ( DrawingQueue& parDQ, const WorldViewport& parViewport ) = 0; private: + size_t store_new_texture (SafeStackObject&& parNewTexture); virtual void on_texture_size_changed (const vec2f& parOldSz, const vec2f& parNewSz); - Texture m_texture; + std::vector> m_textures; vec2f m_width_height; }; } //namespace curry diff --git a/src/gamelib/drawing_queue.cpp b/src/gamelib/drawing_queue.cpp new file mode 100644 index 0000000..053a7f9 --- /dev/null +++ b/src/gamelib/drawing_queue.cpp @@ -0,0 +1,167 @@ +/* + Copyright 2016, 2017 Michele "King_DuckZ" Santullo + + This file is part of MyCurry. + + MyCurry is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + MyCurry is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with MyCurry. If not, see . +*/ + +#include "drawing_queue.hpp" +#include "sdlmain.hpp" +#include "sizeratio.hpp" +#include "rect_to_sdl.hpp" +#include "texture.hpp" +#include +#include +#include +#include + +namespace curry { + namespace { +#if !defined(NDEBUG) + bool are_equal_rel (float parA, float parB, float parEpsilon) a_pure; + + //see: http://stackoverflow.com/questions/4548004/how-to-correctly-and-standardly-compare-floats + bool are_equal_rel (float parA, float parB, float parEpsilon) { + return (std::fabs(parA - parB) <= parEpsilon * std::max(std::fabs(parA), std::fabs(parB))); + } +#endif + + ///---------------------------------------------------------------------- + ///Adjustes parSrc and parDest so that parDest will fit into parClip and + ///parSrc to be the relevant part of the source texture to be drawn. + ///Returns true if such operation was possible and parSrc and parDest + ///got set to a valid value, otherwise false. + ///---------------------------------------------------------------------- + bool clip_rect (Rect& parSrc, Rect& parDest, const Rect& parClip) { + typedef Rect RectFloat; + assert(are_equal_rel(parSrc.width(), parDest.width(), 0.00001f)); + assert(parSrc.is_valid()); + assert(parDest.is_valid()); + + //If the dest rect is completely out of the clipping region, there + //is nothing to do at all. + if (parDest.to <= parClip.from or parDest.from >= parClip.to) + return false; + + RectFloat dst; + dst.from.x() = std::max(parDest.from.x(), parClip.from.x()); + dst.from.y() = std::max(parDest.from.y(), parClip.from.y()); + dst.to.x() = std::min(parDest.to.x(), parClip.to.x()); + dst.to.y() = std::min(parDest.to.y(), parClip.to.y()); + + if (not dst.is_valid()) + return false; + + assert(parDest.from <= dst.from); + assert(parDest.to >= dst.to); + + RectFloat src; + { + const vec2f srcWidthHeight(parSrc.width_height()); + const vec2f scaledOffs((dst.from - parDest.from) / parDest.width_height()); + src.from = parSrc.from + scaledOffs * srcWidthHeight; + const vec2f scaledCrop((parDest.to - dst.to) / parDest.width_height()); + src.to = parSrc.to - scaledCrop * srcWidthHeight; + assert(src.is_valid()); + + assert(dst.is_valid()); + assert(dst.from >= parClip.from); + assert(dst.to <= parClip.to); + assert(are_equal_rel(src.width(), dst.width(), 0.00001f)); + } + parDest = dst; + parSrc = src; + return true; + } + } //unnamed namespace + + DrawingQueue::ItemInfo::ItemInfo() = default; + DrawingQueue::ItemInfo::ItemInfo (ItemInfo&&) = default; + DrawingQueue::ItemInfo::~ItemInfo() noexcept = default; + DrawingQueue::ItemInfo& DrawingQueue::ItemInfo::operator=(ItemInfo&&) = default; + + struct DrawingQueue::LocalData { + typedef std::vector TextureList; + typedef std::vector LayerList; + + explicit LocalData (cloonel::SDLMain* parSDLMain) : + sdlmain(parSDLMain), + screen_res(0.0f), + def_layer_id(0) + { + } + + LayerList layers; + cloonel::SDLMain* sdlmain; + vec2f screen_res; + std::size_t def_layer_id; + }; + + DrawingQueue::DrawingQueue (cloonel::SDLMain* parSDLMain, const cloonel::DeferredRegister& parDeferredRegister) : + SizeNotifiableBase(parSDLMain, parDeferredRegister), + m_local_data(new LocalData(parSDLMain)) + { + assert(parSDLMain); + } + + DrawingQueue::~DrawingQueue() noexcept = default; + + std::size_t DrawingQueue::add_layer() { + m_local_data->layers.push_back(LocalData::TextureList()); + return m_local_data->layers.size() - 1; + } + + std::size_t DrawingQueue::default_layer_id() const { + return m_local_data->def_layer_id; + } + + void DrawingQueue::flush_to_renderer() { + assert(not m_local_data->layers.empty()); + for (auto& layer : m_local_data->layers) { + for (auto& itm : layer) { + draw_clipped(*itm.texture, itm.source, itm.destination); + } + layer.clear(); + } + } + + void DrawingQueue::add_for_rendering (std::size_t parLayer, ItemInfo&& parItem) { + auto& layers = m_local_data->layers; + assert(parLayer < layers.size()); + assert(parItem.source.is_valid()); + assert(parItem.destination.is_valid()); + assert(parItem.texture); + layers[parLayer].push_back(std::move(parItem)); + assert(not layers[parLayer].empty()); + assert(layers[parLayer].back().source.is_valid()); + assert(layers[parLayer].back().destination.is_valid()); + } + + void DrawingQueue::draw_clipped (Texture& parTexture, Rect parSrc, Rect parDest) { + const vec2f lefttop(0.0f); + const vec2f& rightbottom = m_local_data->screen_res; + clip_rect(parSrc, parDest, Rect(lefttop, rightbottom)); + + auto src = make_sdlrect(parSrc); + auto dst = make_sdlrect(parDest); + assert(src.w == dst.w); + assert(src.h == dst.h); + SDL_RenderCopy(m_local_data->sdlmain->GetRenderer(), parTexture.texture(), &src, &dst); + } + + void DrawingQueue::OnResChanged (const cloonel::SizeRatio& parSizeRatio) { + m_local_data->screen_res = vec2f(cl_vec2us(parSizeRatio.Resolution())); + } +} //namespace curry diff --git a/src/gamelib/drawing_queue.hpp b/src/gamelib/drawing_queue.hpp new file mode 100644 index 0000000..a89b97d --- /dev/null +++ b/src/gamelib/drawing_queue.hpp @@ -0,0 +1,69 @@ +/* + Copyright 2016, 2017 Michele "King_DuckZ" Santullo + + This file is part of MyCurry. + + MyCurry is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + MyCurry is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with MyCurry. If not, see . +*/ + +#pragma once + +#include "safe_ptr.hh" +#include "rect.hpp" +#include "sizenotifiable.hpp" +#include + +namespace cloonel { + class SDLMain; +} //namespace cloonel + +namespace curry { + class Texture; + + class DrawingQueue : public cloonel::SizeNotifiable { + typedef cloonel::SizeNotifiable SizeNotifiableBase; + public: + struct ItemInfo; + + DrawingQueue (cloonel::SDLMain* parSDLMain, const cloonel::DeferredRegister& parDeferredRegister); + virtual ~DrawingQueue() noexcept; + + std::size_t add_layer(); + std::size_t default_layer_id() const; + void flush_to_renderer(); + void add_for_rendering (std::size_t parLayer, ItemInfo&& parItem); + + private: + void draw_clipped (Texture& parTexture, Rect parSrc, Rect parDest); + virtual void OnResChanged ( const cloonel::SizeRatio& parSizeRatio ) override; + + struct LocalData; + + std::unique_ptr m_local_data; + }; + + struct DrawingQueue::ItemInfo { + ItemInfo(); + ItemInfo (ItemInfo&&); + ItemInfo (const ItemInfo&) = delete; + ~ItemInfo() noexcept; + + ItemInfo& operator= (ItemInfo&&); + ItemInfo& operator= (const ItemInfo&) = delete; + + Rect source; + Rect destination; + Kakoune::SafePtr texture; + }; +} //namespace curry diff --git a/src/gamelib/gamescenebase.cpp b/src/gamelib/gamescenebase.cpp index 340a06f..7d01b2a 100644 --- a/src/gamelib/gamescenebase.cpp +++ b/src/gamelib/gamescenebase.cpp @@ -20,9 +20,8 @@ #include "gamescenebase.hpp" #include "inputbag.hpp" #include "sdlmain.hpp" -#include "rect_to_sdl.hpp" #include "rect.hpp" -#include "texture.hpp" +#include "drawing_queue.hpp" #include #include #include @@ -34,15 +33,6 @@ namespace curry { namespace { -#if !defined(NDEBUG) - bool are_equal_rel (float parA, float parB, float parEpsilon) a_pure; - - //see: http://stackoverflow.com/questions/4548004/how-to-correctly-and-standardly-compare-floats - bool are_equal_rel (float parA, float parB, float parEpsilon) { - return (std::fabs(parA - parB) <= parEpsilon * std::max(std::fabs(parA), std::fabs(parB))); - } -#endif - ///--------------------------------------------------------------------- ///--------------------------------------------------------------------- bool DoEvents (cloonel::InputBag& parInput, cloonel::SDLMain* parSdlMain) { @@ -76,59 +66,12 @@ namespace curry { } return false; } - - ///---------------------------------------------------------------------- - ///Adjustes parSrc and parDest so that parDest will fit into parClip and - ///parSrc to be the relevant part of the source texture to be drawn. - ///Returns true if such operation was possible and parSrc and parDest - ///got set to a valid value, otherwise false. - ///---------------------------------------------------------------------- - bool clip_rect (Rect& parSrc, Rect& parDest, const Rect& parClip) { - typedef Rect RectFloat; - assert(are_equal_rel(parSrc.width(), parDest.width(), 0.00001f)); - assert(parSrc.is_valid()); - assert(parDest.is_valid()); - - //If the dest rect is completely out of the clipping region, there - //is nothing to do at all. - if (parDest.to <= parClip.from or parDest.from >= parClip.to) - return false; - - RectFloat dst; - dst.from.x() = std::max(parDest.from.x(), parClip.from.x()); - dst.from.y() = std::max(parDest.from.y(), parClip.from.y()); - dst.to.x() = std::min(parDest.to.x(), parClip.to.x()); - dst.to.y() = std::min(parDest.to.y(), parClip.to.y()); - - if (not dst.is_valid()) - return false; - - assert(parDest.from <= dst.from); - assert(parDest.to >= dst.to); - - RectFloat src; - { - const vec2f srcWidthHeight(parSrc.width_height()); - const vec2f scaledOffs((dst.from - parDest.from) / parDest.width_height()); - src.from = parSrc.from + scaledOffs * srcWidthHeight; - const vec2f scaledCrop((parDest.to - dst.to) / parDest.width_height()); - src.to = parSrc.to - scaledCrop * srcWidthHeight; - assert(src.is_valid()); - - assert(dst.is_valid()); - assert(dst.from >= parClip.from); - assert(dst.to <= parClip.to); - assert(are_equal_rel(src.width(), dst.width(), 0.00001f)); - } - parDest = dst; - parSrc = src; - return true; - } } //unnamed namespace GameSceneBase::GameSceneBase (cloonel::SDLMain* parSdlMain) : m_time0(std::chrono::steady_clock::now()), m_input(std::make_unique()), + m_drawing_queue(std::make_unique(parSdlMain, cloonel::DeferredRegister())), m_sdlmain(parSdlMain), m_screen_width(static_cast(m_sdlmain->WidthHeight().x())), m_screen_height(static_cast(m_sdlmain->WidthHeight().y())), @@ -170,6 +113,7 @@ namespace curry { const float delta = std::chrono::duration(time1 - m_time0).count(); m_time0 = time1; this->on_update(delta); + m_drawing_queue->flush_to_renderer(); SDL_RenderPresent(this->sdl_main()->GetRenderer()); } @@ -181,15 +125,11 @@ namespace curry { return *m_input; } - void GameSceneBase::draw_clipped (Texture& parTexture, Rect parSrc, Rect parDest) { - const vec2f lefttop(0.0f); - const vec2f rightbottom(m_screen_width, m_screen_height); - clip_rect(parSrc, parDest, Rect(lefttop, rightbottom)); + DrawingQueue& GameSceneBase::drawing_queue() { + return *m_drawing_queue; + } - auto src = make_sdlrect(parSrc); - auto dst = make_sdlrect(parDest); - assert(src.w == dst.w); - assert(src.h == dst.h); - SDL_RenderCopy(m_sdlmain->GetRenderer(), parTexture.texture(), &src, &dst); + const DrawingQueue& GameSceneBase::drawing_queue() const { + return *m_drawing_queue; } } //namespace curry diff --git a/src/gamelib/gamescenebase.hpp b/src/gamelib/gamescenebase.hpp index f5e072f..d92599f 100644 --- a/src/gamelib/gamescenebase.hpp +++ b/src/gamelib/gamescenebase.hpp @@ -28,8 +28,8 @@ namespace cloonel { } //namespace cloonel namespace curry { - class Texture; template class Rect; + class DrawingQueue; class GameSceneBase { public: @@ -50,11 +50,13 @@ namespace curry { virtual void on_update (float parDeltaT) = 0; cloonel::SDLMain* sdl_main(); cloonel::InputBag& input_bag(); - void draw_clipped (Texture& parTexture, Rect parSrc, Rect parDest); + DrawingQueue& drawing_queue(); + const DrawingQueue& drawing_queue() const; private: std::chrono::time_point m_time0; std::unique_ptr m_input; + std::unique_ptr m_drawing_queue; cloonel::SDLMain* m_sdlmain; float m_screen_width; float m_screen_height; diff --git a/src/gamelib/ingamescene.cpp b/src/gamelib/ingamescene.cpp index 30e8ded..aed8d9b 100644 --- a/src/gamelib/ingamescene.cpp +++ b/src/gamelib/ingamescene.cpp @@ -32,6 +32,8 @@ #include "worlditems.hpp" #include "gameactions.hpp" #include "vector.hpp" +#include "drawing_queue.hpp" +#include "safe_stack_object.hpp" #include #include #include @@ -39,6 +41,7 @@ #include #include #include +#include namespace curry { namespace { @@ -55,10 +58,13 @@ namespace curry { WorldGrid world; WorldViewport viewport; - Texture worldtiles; + SafeStackObject worldtiles; MovingObject player; Character character; WorldItems moveable_items; +#if !defined(NDEBUG) + std::size_t debug_layer_id; +#endif }; IngameScene::IngameScene (cloonel::SDLMain* parSDLMain) : @@ -73,12 +79,18 @@ namespace curry { inp.AddAction(ActionUp, Key(InputDevice_Keyboard, SDL_SCANCODE_UP), "Move up"); inp.AddAction(ActionRight, Key(InputDevice_Keyboard, SDL_SCANCODE_RIGHT), "Move right"); inp.AddAction(ActionDown, Key(InputDevice_Keyboard, SDL_SCANCODE_DOWN), "Move down"); +#if !defined(NDEBUG) + //TODO: client code should be able to register named layers so other + //parts of the code can try and request a layer without the need to pass + //dynamic ids around + m_local_data->debug_layer_id = drawing_queue().add_layer(); +#endif } IngameScene::~IngameScene() noexcept = default; void IngameScene::on_prepare() { - m_local_data->worldtiles.load(RESOURCES_PATH "nonfree_texture.png", *this->sdl_main(), RGBA{255, 255, 255, 0}); + m_local_data->worldtiles->load(RESOURCES_PATH "nonfree_texture.png", *this->sdl_main(), RGBA{255, 255, 255, 0}); CSVJointData tiles = load_csv({ RESOURCES_PATH "nonfree_map_ground.csv", RESOURCES_PATH "nonfree_map_transparent.csv" @@ -92,7 +104,7 @@ namespace curry { #endif m_local_data->viewport.allow_overscan(false); - m_local_data->character.load(RESOURCES_PATH "LPC_Sara_Preview.png", *this->sdl_main()); + m_local_data->character.add_texture(RESOURCES_PATH "LPC_Sara_Preview.png", *this->sdl_main()); const float speed_per_sec = static_cast( std::max(m_local_data->world.tile_size().x(), m_local_data->world.tile_size().y()) @@ -110,8 +122,9 @@ namespace curry { m_local_data->moveable_items.move_items(parDeltaT); viewport.set_position(m_local_data->character.position() - (viewport.size() - m_local_data->character.width_height()) / 2.0f); + //TODO: move drawing code into the world map or something const auto tilesize(static_cast(world.tile_size())); - const auto tilecount(m_local_data->worldtiles.width_height() / world.tile_size()); + const auto tilecount(m_local_data->worldtiles->width_height() / world.tile_size()); for (auto tile : viewport) { for (uint16_t z = 0; z < m_local_data->world.layer_count(); ++z) { if (tile.index[z] < 0) @@ -122,15 +135,34 @@ namespace curry { Rect src_rect(src_rect_xy, src_rect_xy + tilesize); Rect dst_rect(pixel_pos, pixel_pos + tilesize); - this->draw_clipped(m_local_data->worldtiles, src_rect, dst_rect); + this->draw(layer_id_def(), m_local_data->worldtiles, src_rect, dst_rect); } } - this->draw_clipped(m_local_data->character.texture(), m_local_data->character.source_rect(), m_local_data->character.destination_rect(viewport.position())); + this->draw(layer_id_def(), m_local_data->character.texture(), m_local_data->character.source_rect(), m_local_data->character.destination_rect(viewport.position())); } void IngameScene::on_destroy() noexcept { m_local_data->moveable_items.unregister_all(); - m_local_data->worldtiles.unload(); - m_local_data->character.unload(); + m_local_data->worldtiles->unload(); + m_local_data->character.unload_textures(); } + + void IngameScene::draw (std::size_t parLayer, Kakoune::SafePtr& parTexture, Rect parSrc, Rect parDest) { + DrawingQueue::ItemInfo item{}; + item.source = parSrc; + item.destination = parDest; + item.texture = parTexture; + drawing_queue().add_for_rendering(parLayer, std::move(item)); + assert(not item.texture); + } + + std::size_t IngameScene::layer_id_def() const { + return drawing_queue().default_layer_id(); + } + +#if !defined(NDEBUG) + std::size_t IngameScene::layer_id_debug() const { + return m_local_data->debug_layer_id; + } +#endif } //namespace curry diff --git a/src/gamelib/ingamescene.hpp b/src/gamelib/ingamescene.hpp index 55c8900..008433d 100644 --- a/src/gamelib/ingamescene.hpp +++ b/src/gamelib/ingamescene.hpp @@ -20,13 +20,17 @@ #pragma once #include "gamescenebase.hpp" +#include "safe_ptr.hh" #include +#include namespace cloonel { class SDLMain; } //namespace cloonel namespace curry { + class Texture; + class IngameScene : public GameSceneBase { public: explicit IngameScene (cloonel::SDLMain* parSDLMain); @@ -36,6 +40,11 @@ namespace curry { virtual void on_prepare() override; virtual void on_destroy() noexcept override; virtual void on_update (float parDeltaT) override; + void draw (std::size_t parLayer, Kakoune::SafePtr& parTexture, Rect parSrc, Rect parDest); + std::size_t layer_id_def() const; +#if !defined(NDEBUG) + std::size_t layer_id_debug() const; +#endif private: struct LocalData; diff --git a/src/gamelib/safe_stack_object.hpp b/src/gamelib/safe_stack_object.hpp new file mode 100644 index 0000000..f9e0439 --- /dev/null +++ b/src/gamelib/safe_stack_object.hpp @@ -0,0 +1,87 @@ +/* + Copyright 2016, 2017 Michele "King_DuckZ" Santullo + + This file is part of MyCurry. + + MyCurry is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + MyCurry is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with MyCurry. If not, see . +*/ + +#pragma once + +#include "safe_ptr.hh" +#include + +namespace curry { + template + class SafeStackObject { + public: + typedef Kakoune::SafePtr safe_ptr; + + SafeStackObject(); + SafeStackObject (SafeStackObject&& parOther); + SafeStackObject (const SafeStackObject& parOther) = delete; + ~SafeStackObject() noexcept = default; + + SafeStackObject& operator= (SafeStackObject&& parOther) = delete; + SafeStackObject& operator= (const SafeStackObject& parOther) = delete; + + operator Kakoune::SafePtr&(); + safe_ptr& operator*(); + safe_ptr& operator->(); + + private: + T m_obj; + safe_ptr m_obj_ptr; + }; + + template + SafeStackObject::SafeStackObject() : + m_obj(), + m_obj_ptr(&m_obj) + { + } + + template + SafeStackObject::SafeStackObject (SafeStackObject&& parOther) : + m_obj(std::move(parOther.m_obj)), + m_obj_ptr(&m_obj) + { + } + + //template + //SafeStackObject& SafeStackObject::operator= (SafeStackObject&& parOther) { + // m_obj = std::move(parOther.m_obj); + // m_obj_ptr = std::move(parOther.m_obj_ptr); + // m_ob + //} + + //template + //SafeStackObject& SafeStackObject::operator= (const SafeStackObject& parOther) { + //} + + template + SafeStackObject::operator Kakoune::SafePtr&() { + return m_obj_ptr; + } + + template + auto SafeStackObject::operator*() -> safe_ptr& { + return m_obj_ptr; + } + + template + auto SafeStackObject::operator->() -> safe_ptr& { + return m_obj_ptr; + } +} //namespace curry diff --git a/src/gamelib/texture.cpp b/src/gamelib/texture.cpp index 2eba3ea..8a040c2 100644 --- a/src/gamelib/texture.cpp +++ b/src/gamelib/texture.cpp @@ -73,6 +73,20 @@ namespace curry { m_texture = load_texture(parPath, parSDLMain, true, parColorKey); } + void Texture::load_empty (cloonel::SDLMain& parSDLMain, const vec2us& parSize) { + assert(parSize > 0); + m_texture = SDLTextureAuto( + SDL_CreateTexture( + parSDLMain.GetRenderer(), + SDL_PIXELFORMAT_RGBA8888, + SDL_TEXTUREACCESS_TARGET, + static_cast(parSize.x()), + static_cast(parSize.y()) + ), + &SDL_DestroyTexture + ); + } + void Texture::unload() noexcept { m_texture.reset(nullptr); } diff --git a/src/gamelib/texture.hpp b/src/gamelib/texture.hpp index f6a2003..12ab27c 100644 --- a/src/gamelib/texture.hpp +++ b/src/gamelib/texture.hpp @@ -20,6 +20,7 @@ #pragma once #include "vector.hpp" +#include "safe_ptr.hh" #include #include @@ -37,14 +38,17 @@ namespace curry { uint8_t a; }; - class Texture { + class Texture : public Kakoune::SafeCountable { public: Texture(); Texture (const char* parPath, cloonel::SDLMain& parSDLMain); + Texture (Texture&&) = default; + Texture (const Texture&) = delete; ~Texture() noexcept; void load (const char* parPath, cloonel::SDLMain& parSDLMain); void load (const char* parPath, cloonel::SDLMain& parSDLMain, RGBA parColorKey); + void load_empty (cloonel::SDLMain& parSDLMain, const vec2us& parSize); void unload() noexcept; SDL_Texture* texture(); const SDL_Texture* texture() const; From 2d05fd03db63139d353c58013420a4ba250d36e6 Mon Sep 17 00:00:00 2001 From: King_DuckZ Date: Wed, 15 Mar 2017 09:13:13 +0000 Subject: [PATCH 19/45] Assert that raytracing is going to finish at some point. --- src/gamelib/grid_raytrace.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/gamelib/grid_raytrace.cpp b/src/gamelib/grid_raytrace.cpp index 8273fde..28aa2a0 100644 --- a/src/gamelib/grid_raytrace.cpp +++ b/src/gamelib/grid_raytrace.cpp @@ -138,10 +138,12 @@ namespace curry { const vec2us last_tile = pixel_to_world_tile(parWorld, parTo); while (parFunc(curr_tile) and last_tile != curr_tile) { if (max.x() < max.y()) { + assert(std::max(static_cast(curr_tile.x() + step.x()), last_tile.x()) - std::min(static_cast(curr_tile.x() + step.x()), last_tile.x()) < std::max(curr_tile.x(), last_tile.x()) - std::min(curr_tile.x(), last_tile.x())); max.x() += delta.x(); curr_tile.x() = static_cast(curr_tile.x() + step.x()); } else { + assert(std::max(static_cast(curr_tile.y() + step.y()), last_tile.y()) - std::min(static_cast(curr_tile.y() + step.y()), last_tile.y()) < std::max(curr_tile.y(), last_tile.y()) - std::min(curr_tile.y(), last_tile.y())); max.y() += delta.y(); curr_tile.y() = static_cast(curr_tile.y() + step.y()); } From 7a391c5743a37459612a64607023ab2c2cf34bee Mon Sep 17 00:00:00 2001 From: King_DuckZ Date: Wed, 15 Mar 2017 09:14:22 +0000 Subject: [PATCH 20/45] Character draws itself. --- src/gamelib/character.cpp | 12 ++++++++++++ src/gamelib/character.hpp | 1 + src/gamelib/ingamescene.cpp | 2 +- 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/gamelib/character.cpp b/src/gamelib/character.cpp index de29eff..c02df13 100644 --- a/src/gamelib/character.cpp +++ b/src/gamelib/character.cpp @@ -22,6 +22,9 @@ #include "gameactions.hpp" #include "worldgrid.hpp" #include "grid_raytrace.hpp" +#include "drawing_queue.hpp" +#include "worldviewport.hpp" +#include "texture.hpp" #include #include #include @@ -110,6 +113,15 @@ namespace curry { m_speed = parSpeed; } + void Character::draw (DrawingQueue& parDQ, const WorldViewport& parViewport) { + DrawingQueue::ItemInfo item; + item.source = source_rect(); + item.destination = destination_rect(parViewport.position()); + item.texture = texture(); + parDQ.add_for_rendering(0 , std::move(item)); + assert(not item.texture); + } + void Character::on_texture_size_changed (const vec2f& parOldSz, const vec2f& parNewSz) { if (m_position.get_min() != m_position.get_max()) m_position.change_minmax(m_position.get_min(), m_position.get_max() + parOldSz - parNewSz); diff --git a/src/gamelib/character.hpp b/src/gamelib/character.hpp index 63e6ca2..73b0665 100644 --- a/src/gamelib/character.hpp +++ b/src/gamelib/character.hpp @@ -46,6 +46,7 @@ namespace curry { virtual void world_size_changed (const vec2us& parSize, const vec2i& parPixelSize) override; virtual void do_movement (float parDeltaT) override; void set_speed (float parSpeed); + virtual void draw (DrawingQueue& parDQ, const WorldViewport& parViewport) override; private: virtual void on_texture_size_changed (const vec2f& parOldSz, const vec2f& parNewSz) override; diff --git a/src/gamelib/ingamescene.cpp b/src/gamelib/ingamescene.cpp index aed8d9b..4540dd4 100644 --- a/src/gamelib/ingamescene.cpp +++ b/src/gamelib/ingamescene.cpp @@ -138,7 +138,7 @@ namespace curry { this->draw(layer_id_def(), m_local_data->worldtiles, src_rect, dst_rect); } } - this->draw(layer_id_def(), m_local_data->character.texture(), m_local_data->character.source_rect(), m_local_data->character.destination_rect(viewport.position())); + m_local_data->character.draw(drawing_queue(), viewport); } void IngameScene::on_destroy() noexcept { From 9428e63fc2bb0a4822d2ce444d6c2a036ef5ffda Mon Sep 17 00:00:00 2001 From: King_DuckZ Date: Wed, 15 Mar 2017 21:48:27 +0000 Subject: [PATCH 21/45] Layers are now named, so code can request a layer by name. --- .gitmodules | 3 +++ CMakeLists.txt | 1 + lib/better-enums | 1 + src/gamelib/character.cpp | 3 ++- src/gamelib/draw_layer_names.hpp | 30 ++++++++++++++++++++++ src/gamelib/drawing_queue.cpp | 43 ++++++++++++++++++++------------ src/gamelib/drawing_queue.hpp | 5 ++-- src/gamelib/gamescenebase.cpp | 4 +++ src/gamelib/ingamescene.cpp | 21 ++++------------ src/gamelib/ingamescene.hpp | 7 ++---- 10 files changed, 78 insertions(+), 40 deletions(-) create mode 160000 lib/better-enums create mode 100644 src/gamelib/draw_layer_names.hpp diff --git a/.gitmodules b/.gitmodules index cfd1d7d..481588c 100644 --- a/.gitmodules +++ b/.gitmodules @@ -10,3 +10,6 @@ [submodule "lib/clooneljump"] path = lib/clooneljump url = https://bitbucket.org/King_DuckZ/clooneljump.git +[submodule "lib/better-enums"] + path = lib/better-enums + url = https://github.com/aantron/better-enums diff --git a/CMakeLists.txt b/CMakeLists.txt index 89cff21..a728ebe 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -60,6 +60,7 @@ target_compile_definitions(${PROJECT_NAME} ) target_include_directories(${PROJECT_NAME} INTERFACE lib/kakoune + INTERFACE lib/better-enums ) add_subdirectory(lib/clooneljump/src/cloonelgraphics) diff --git a/lib/better-enums b/lib/better-enums new file mode 160000 index 0000000..37d8f98 --- /dev/null +++ b/lib/better-enums @@ -0,0 +1 @@ +Subproject commit 37d8f987ca939af846a2d29a8f8198f9bf3ac4b7 diff --git a/src/gamelib/character.cpp b/src/gamelib/character.cpp index c02df13..40a7341 100644 --- a/src/gamelib/character.cpp +++ b/src/gamelib/character.cpp @@ -25,6 +25,7 @@ #include "drawing_queue.hpp" #include "worldviewport.hpp" #include "texture.hpp" +#include "draw_layer_names.hpp" #include #include #include @@ -118,7 +119,7 @@ namespace curry { item.source = source_rect(); item.destination = destination_rect(parViewport.position()); item.texture = texture(); - parDQ.add_for_rendering(0 , std::move(item)); + parDQ.add_for_rendering(DrawaLayerNames::Background, std::move(item)); assert(not item.texture); } diff --git a/src/gamelib/draw_layer_names.hpp b/src/gamelib/draw_layer_names.hpp new file mode 100644 index 0000000..b3f7d11 --- /dev/null +++ b/src/gamelib/draw_layer_names.hpp @@ -0,0 +1,30 @@ +/* + Copyright 2016, 2017 Michele "King_DuckZ" Santullo + + This file is part of MyCurry. + + MyCurry is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + MyCurry is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with MyCurry. If not, see . +*/ + +#pragma once + +#include "enum.h" +#include + +namespace curry { + BETTER_ENUM(DrawaLayerNames, uint16_t, + Background, + Debug + ); +} //namespace curry diff --git a/src/gamelib/drawing_queue.cpp b/src/gamelib/drawing_queue.cpp index 053a7f9..a83bcf7 100644 --- a/src/gamelib/drawing_queue.cpp +++ b/src/gamelib/drawing_queue.cpp @@ -26,9 +26,15 @@ #include #include #include +#include +#include namespace curry { namespace { + typedef std::vector TextureList; + typedef std::vector LayerList; + typedef boost::container::flat_map LayerIdxMap; + #if !defined(NDEBUG) bool are_equal_rel (float parA, float parB, float parEpsilon) a_pure; @@ -93,9 +99,6 @@ namespace curry { DrawingQueue::ItemInfo& DrawingQueue::ItemInfo::operator=(ItemInfo&&) = default; struct DrawingQueue::LocalData { - typedef std::vector TextureList; - typedef std::vector LayerList; - explicit LocalData (cloonel::SDLMain* parSDLMain) : sdlmain(parSDLMain), screen_res(0.0f), @@ -104,6 +107,7 @@ namespace curry { } LayerList layers; + LayerIdxMap layer_idx_map; cloonel::SDLMain* sdlmain; vec2f screen_res; std::size_t def_layer_id; @@ -118,13 +122,19 @@ namespace curry { DrawingQueue::~DrawingQueue() noexcept = default; - std::size_t DrawingQueue::add_layer() { - m_local_data->layers.push_back(LocalData::TextureList()); - return m_local_data->layers.size() - 1; - } - - std::size_t DrawingQueue::default_layer_id() const { - return m_local_data->def_layer_id; + bool DrawingQueue::add_layer (uint16_t parName) { + auto& idx_map = m_local_data->layer_idx_map; + auto it_found = idx_map.lower_bound(parName); + assert(&*it_found != nullptr or idx_map.end() == it_found); + if (it_found != idx_map.end() and it_found->first == parName) { + return false; + } + else { + m_local_data->layers.push_back(TextureList()); + const auto new_layer_index = m_local_data->layers.size() - 1; + idx_map.insert(it_found, std::make_pair(parName, new_layer_index)); + return true; + } } void DrawingQueue::flush_to_renderer() { @@ -137,16 +147,17 @@ namespace curry { } } - void DrawingQueue::add_for_rendering (std::size_t parLayer, ItemInfo&& parItem) { + void DrawingQueue::add_for_rendering (uint16_t parName, ItemInfo&& parItem) { + const auto idx = m_local_data->layer_idx_map.at(parName); auto& layers = m_local_data->layers; - assert(parLayer < layers.size()); + assert(idx < layers.size()); assert(parItem.source.is_valid()); assert(parItem.destination.is_valid()); assert(parItem.texture); - layers[parLayer].push_back(std::move(parItem)); - assert(not layers[parLayer].empty()); - assert(layers[parLayer].back().source.is_valid()); - assert(layers[parLayer].back().destination.is_valid()); + layers[idx].push_back(std::move(parItem)); + assert(not layers[idx].empty()); + assert(layers[idx].back().source.is_valid()); + assert(layers[idx].back().destination.is_valid()); } void DrawingQueue::draw_clipped (Texture& parTexture, Rect parSrc, Rect parDest) { diff --git a/src/gamelib/drawing_queue.hpp b/src/gamelib/drawing_queue.hpp index a89b97d..32f5cf3 100644 --- a/src/gamelib/drawing_queue.hpp +++ b/src/gamelib/drawing_queue.hpp @@ -23,6 +23,7 @@ #include "rect.hpp" #include "sizenotifiable.hpp" #include +#include namespace cloonel { class SDLMain; @@ -39,10 +40,10 @@ namespace curry { DrawingQueue (cloonel::SDLMain* parSDLMain, const cloonel::DeferredRegister& parDeferredRegister); virtual ~DrawingQueue() noexcept; - std::size_t add_layer(); + bool add_layer (uint16_t parName); std::size_t default_layer_id() const; void flush_to_renderer(); - void add_for_rendering (std::size_t parLayer, ItemInfo&& parItem); + void add_for_rendering (uint16_t parName, ItemInfo&& parItem); private: void draw_clipped (Texture& parTexture, Rect parSrc, Rect parDest); diff --git a/src/gamelib/gamescenebase.cpp b/src/gamelib/gamescenebase.cpp index 7d01b2a..aa977e5 100644 --- a/src/gamelib/gamescenebase.cpp +++ b/src/gamelib/gamescenebase.cpp @@ -22,6 +22,7 @@ #include "sdlmain.hpp" #include "rect.hpp" #include "drawing_queue.hpp" +#include "draw_layer_names.hpp" #include #include #include @@ -78,6 +79,9 @@ namespace curry { m_wants_to_quit(false) { assert(m_sdlmain); + const bool layer_added = m_drawing_queue->add_layer(DrawaLayerNames::Background); + assert(layer_added); + static_cast(layer_added); } GameSceneBase::~GameSceneBase() noexcept = default; diff --git a/src/gamelib/ingamescene.cpp b/src/gamelib/ingamescene.cpp index 4540dd4..1ea5d93 100644 --- a/src/gamelib/ingamescene.cpp +++ b/src/gamelib/ingamescene.cpp @@ -80,10 +80,9 @@ namespace curry { inp.AddAction(ActionRight, Key(InputDevice_Keyboard, SDL_SCANCODE_RIGHT), "Move right"); inp.AddAction(ActionDown, Key(InputDevice_Keyboard, SDL_SCANCODE_DOWN), "Move down"); #if !defined(NDEBUG) - //TODO: client code should be able to register named layers so other - //parts of the code can try and request a layer without the need to pass - //dynamic ids around - m_local_data->debug_layer_id = drawing_queue().add_layer(); + const bool layer_added = drawing_queue().add_layer(DrawaLayerNames::Debug); + assert(layer_added); + static_cast(layer_added); #endif } @@ -135,7 +134,7 @@ namespace curry { Rect src_rect(src_rect_xy, src_rect_xy + tilesize); Rect dst_rect(pixel_pos, pixel_pos + tilesize); - this->draw(layer_id_def(), m_local_data->worldtiles, src_rect, dst_rect); + this->draw(DrawaLayerNames::Background, m_local_data->worldtiles, src_rect, dst_rect); } } m_local_data->character.draw(drawing_queue(), viewport); @@ -147,7 +146,7 @@ namespace curry { m_local_data->character.unload_textures(); } - void IngameScene::draw (std::size_t parLayer, Kakoune::SafePtr& parTexture, Rect parSrc, Rect parDest) { + void IngameScene::draw (DrawaLayerNames parLayer, Kakoune::SafePtr& parTexture, Rect parSrc, Rect parDest) { DrawingQueue::ItemInfo item{}; item.source = parSrc; item.destination = parDest; @@ -155,14 +154,4 @@ namespace curry { drawing_queue().add_for_rendering(parLayer, std::move(item)); assert(not item.texture); } - - std::size_t IngameScene::layer_id_def() const { - return drawing_queue().default_layer_id(); - } - -#if !defined(NDEBUG) - std::size_t IngameScene::layer_id_debug() const { - return m_local_data->debug_layer_id; - } -#endif } //namespace curry diff --git a/src/gamelib/ingamescene.hpp b/src/gamelib/ingamescene.hpp index 008433d..7ff398c 100644 --- a/src/gamelib/ingamescene.hpp +++ b/src/gamelib/ingamescene.hpp @@ -21,6 +21,7 @@ #include "gamescenebase.hpp" #include "safe_ptr.hh" +#include "draw_layer_names.hpp" #include #include @@ -40,11 +41,7 @@ namespace curry { virtual void on_prepare() override; virtual void on_destroy() noexcept override; virtual void on_update (float parDeltaT) override; - void draw (std::size_t parLayer, Kakoune::SafePtr& parTexture, Rect parSrc, Rect parDest); - std::size_t layer_id_def() const; -#if !defined(NDEBUG) - std::size_t layer_id_debug() const; -#endif + void draw (DrawaLayerNames parLayer, Kakoune::SafePtr& parTexture, Rect parSrc, Rect parDest); private: struct LocalData; From b60bbf3739266426d7fa4b57c1d807601b39d32c Mon Sep 17 00:00:00 2001 From: King_DuckZ Date: Wed, 15 Mar 2017 21:58:24 +0000 Subject: [PATCH 22/45] Add background layer from IngameScene, not the base class. --- src/gamelib/gamescenebase.cpp | 4 ---- src/gamelib/ingamescene.cpp | 14 ++++++++------ 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/src/gamelib/gamescenebase.cpp b/src/gamelib/gamescenebase.cpp index aa977e5..7d01b2a 100644 --- a/src/gamelib/gamescenebase.cpp +++ b/src/gamelib/gamescenebase.cpp @@ -22,7 +22,6 @@ #include "sdlmain.hpp" #include "rect.hpp" #include "drawing_queue.hpp" -#include "draw_layer_names.hpp" #include #include #include @@ -79,9 +78,6 @@ namespace curry { m_wants_to_quit(false) { assert(m_sdlmain); - const bool layer_added = m_drawing_queue->add_layer(DrawaLayerNames::Background); - assert(layer_added); - static_cast(layer_added); } GameSceneBase::~GameSceneBase() noexcept = default; diff --git a/src/gamelib/ingamescene.cpp b/src/gamelib/ingamescene.cpp index 1ea5d93..e6de36d 100644 --- a/src/gamelib/ingamescene.cpp +++ b/src/gamelib/ingamescene.cpp @@ -45,6 +45,11 @@ namespace curry { namespace { + void add_layer_assert_done (DrawingQueue& parDQ, DrawaLayerNames parName) { + const bool layer_added = parDQ.add_layer(parName); + assert(layer_added); + static_cast(layer_added); + } } //unnamed namespace struct IngameScene::LocalData { @@ -62,9 +67,6 @@ namespace curry { MovingObject player; Character character; WorldItems moveable_items; -#if !defined(NDEBUG) - std::size_t debug_layer_id; -#endif }; IngameScene::IngameScene (cloonel::SDLMain* parSDLMain) : @@ -79,10 +81,10 @@ namespace curry { inp.AddAction(ActionUp, Key(InputDevice_Keyboard, SDL_SCANCODE_UP), "Move up"); inp.AddAction(ActionRight, Key(InputDevice_Keyboard, SDL_SCANCODE_RIGHT), "Move right"); inp.AddAction(ActionDown, Key(InputDevice_Keyboard, SDL_SCANCODE_DOWN), "Move down"); + + add_layer_assert_done(drawing_queue(), DrawaLayerNames::Background); #if !defined(NDEBUG) - const bool layer_added = drawing_queue().add_layer(DrawaLayerNames::Debug); - assert(layer_added); - static_cast(layer_added); + add_layer_assert_done(drawing_queue(), DrawaLayerNames::Debug); #endif } From be56c55e3ef15bdd8a6f18012cae880c0684ff63 Mon Sep 17 00:00:00 2001 From: King_DuckZ Date: Wed, 15 Mar 2017 21:58:51 +0000 Subject: [PATCH 23/45] Add a layer for game characters. --- src/gamelib/character.cpp | 2 +- src/gamelib/draw_layer_names.hpp | 5 +++-- src/gamelib/ingamescene.cpp | 1 + 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/gamelib/character.cpp b/src/gamelib/character.cpp index 40a7341..b2dbcc7 100644 --- a/src/gamelib/character.cpp +++ b/src/gamelib/character.cpp @@ -119,7 +119,7 @@ namespace curry { item.source = source_rect(); item.destination = destination_rect(parViewport.position()); item.texture = texture(); - parDQ.add_for_rendering(DrawaLayerNames::Background, std::move(item)); + parDQ.add_for_rendering(DrawaLayerNames::Characters, std::move(item)); assert(not item.texture); } diff --git a/src/gamelib/draw_layer_names.hpp b/src/gamelib/draw_layer_names.hpp index b3f7d11..e42a6c3 100644 --- a/src/gamelib/draw_layer_names.hpp +++ b/src/gamelib/draw_layer_names.hpp @@ -25,6 +25,7 @@ namespace curry { BETTER_ENUM(DrawaLayerNames, uint16_t, Background, - Debug - ); + Debug, + Characters + ) } //namespace curry diff --git a/src/gamelib/ingamescene.cpp b/src/gamelib/ingamescene.cpp index e6de36d..d7bfdfa 100644 --- a/src/gamelib/ingamescene.cpp +++ b/src/gamelib/ingamescene.cpp @@ -83,6 +83,7 @@ namespace curry { inp.AddAction(ActionDown, Key(InputDevice_Keyboard, SDL_SCANCODE_DOWN), "Move down"); add_layer_assert_done(drawing_queue(), DrawaLayerNames::Background); + add_layer_assert_done(drawing_queue(), DrawaLayerNames::Characters); #if !defined(NDEBUG) add_layer_assert_done(drawing_queue(), DrawaLayerNames::Debug); #endif From d96dbb9fe8efef840d15e5cc2111f11cd165ec5c Mon Sep 17 00:00:00 2001 From: King_DuckZ Date: Fri, 17 Mar 2017 00:30:34 +0000 Subject: [PATCH 24/45] Update vectorwrapper. Also make the necessary changes to fix the build after the update. --- CMakeLists.txt | 2 ++ lib/clooneljump | 2 +- lib/vectorwrapper | 2 +- src/gamelib/drawing_queue.cpp | 1 - src/gamelib/texture.cpp | 2 +- src/gamelib/vector.hpp | 2 ++ 6 files changed, 7 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a728ebe..01c7780 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -11,6 +11,7 @@ option(CURRY_FORCE_OPENGLES "Try to chose the openGL ES renderer if available. E option(CURRY_RASPBERRY_PI "Compile for Raspberry Pi" OFF) set(MYCURRY_RESOURCES_PATH "${CMAKE_CURRENT_SOURCE_DIR}" CACHE STRING "Path to the program's resources") +set(CLOONEL_SRC_DIR "${CMAKE_CURRENT_SOURCE_DIR}/lib/clooneljump") target_architecture(TARGET_ARCH) message (STATUS "Target architecture: ${TARGET_ARCH}") @@ -57,6 +58,7 @@ add_library(${PROJECT_NAME} INTERFACE) target_compile_options(${PROJECT_NAME} INTERFACE ${common_gcc_flags}) target_compile_definitions(${PROJECT_NAME} INTERFACE $<$:KAK_DEBUG> + INTERFACE VWR_OUTER_NAMESPACE=curry ) target_include_directories(${PROJECT_NAME} INTERFACE lib/kakoune diff --git a/lib/clooneljump b/lib/clooneljump index ceb3e18..8669e5e 160000 --- a/lib/clooneljump +++ b/lib/clooneljump @@ -1 +1 @@ -Subproject commit ceb3e180fee15ba3d6e7b17e8f88261b35d4ae92 +Subproject commit 8669e5e67476a1e6c6e6582e2fd46b1a29100b0c diff --git a/lib/vectorwrapper b/lib/vectorwrapper index aaa8e75..546bd7e 160000 --- a/lib/vectorwrapper +++ b/lib/vectorwrapper @@ -1 +1 @@ -Subproject commit aaa8e75dc125e4116bed76ed14cbfc028bf6e9c7 +Subproject commit 546bd7e270b486aa8b7e898a0e3008baa84ef6d8 diff --git a/src/gamelib/drawing_queue.cpp b/src/gamelib/drawing_queue.cpp index a83bcf7..3bd72ce 100644 --- a/src/gamelib/drawing_queue.cpp +++ b/src/gamelib/drawing_queue.cpp @@ -125,7 +125,6 @@ namespace curry { bool DrawingQueue::add_layer (uint16_t parName) { auto& idx_map = m_local_data->layer_idx_map; auto it_found = idx_map.lower_bound(parName); - assert(&*it_found != nullptr or idx_map.end() == it_found); if (it_found != idx_map.end() and it_found->first == parName) { return false; } diff --git a/src/gamelib/texture.cpp b/src/gamelib/texture.cpp index 8a040c2..8e164b4 100644 --- a/src/gamelib/texture.cpp +++ b/src/gamelib/texture.cpp @@ -74,7 +74,7 @@ namespace curry { } void Texture::load_empty (cloonel::SDLMain& parSDLMain, const vec2us& parSize) { - assert(parSize > 0); + assert(parSize > static_cast(0)); m_texture = SDLTextureAuto( SDL_CreateTexture( parSDLMain.GetRenderer(), diff --git a/src/gamelib/vector.hpp b/src/gamelib/vector.hpp index ab44966..34c2221 100644 --- a/src/gamelib/vector.hpp +++ b/src/gamelib/vector.hpp @@ -39,6 +39,7 @@ } \ } +namespace curry { namespace vwr { SPECIALIZE_ARRAY_VECTOR(float, 2); SPECIALIZE_ARRAY_VECTOR(uint16_t, 2); @@ -95,6 +96,7 @@ namespace vwr { return implem::vector_cast(parVec, to, std::make_index_sequence::dimensions>()); } } //namespace vwr +} //namespace curry namespace curry { using vec2f = vwr::Vec>; From 3a05564be941bc3853389bcd1e498a400a747abe Mon Sep 17 00:00:00 2001 From: King_DuckZ Date: Fri, 17 Mar 2017 19:52:42 +0000 Subject: [PATCH 25/45] Add missing include. --- src/gamelib/drawing_queue.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/gamelib/drawing_queue.cpp b/src/gamelib/drawing_queue.cpp index 3bd72ce..449c157 100644 --- a/src/gamelib/drawing_queue.cpp +++ b/src/gamelib/drawing_queue.cpp @@ -28,6 +28,7 @@ #include #include #include +#include namespace curry { namespace { From 1eeb944e6864bf829ba1e5fbfec935458cd751af Mon Sep 17 00:00:00 2001 From: King_DuckZ Date: Fri, 17 Mar 2017 20:08:12 +0000 Subject: [PATCH 26/45] Make Debug only available in debug builds. --- src/gamelib/draw_layer_names.hpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/gamelib/draw_layer_names.hpp b/src/gamelib/draw_layer_names.hpp index e42a6c3..0065075 100644 --- a/src/gamelib/draw_layer_names.hpp +++ b/src/gamelib/draw_layer_names.hpp @@ -23,9 +23,16 @@ #include namespace curry { +#if !defined(NDEBUG) BETTER_ENUM(DrawaLayerNames, uint16_t, Background, Debug, Characters ) +#else + BETTER_ENUM(DrawaLayerNames, uint16_t, + Background, + Characters + ) +#endif } //namespace curry From b0806e9e1c4806087881e19ae137d1aa9c2cc4c3 Mon Sep 17 00:00:00 2001 From: King_DuckZ Date: Fri, 17 Mar 2017 20:13:39 +0000 Subject: [PATCH 27/45] Print "debug" when starting game compiled in debug mode. --- src/standalone/main.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/standalone/main.cpp b/src/standalone/main.cpp index 88c42a6..8c27a81 100644 --- a/src/standalone/main.cpp +++ b/src/standalone/main.cpp @@ -48,6 +48,10 @@ int main() { cloonel::ushort2(REFERENCE_WIDTH, REFERENCE_HEIGHT) ); +#if !defined(NDEBUG) + std::cout << "Debug build\n"; +#endif + int ret_val = 0; try { sdl_main.Init(); From 084c4d64da9592b19643e683c62aa04e7ba44479 Mon Sep 17 00:00:00 2001 From: King_DuckZ Date: Sun, 23 Jul 2017 04:37:25 +0100 Subject: [PATCH 28/45] Fix the assert triggering sometimes in the raytrace grid traversal. --- src/gamelib/grid_raytrace.cpp | 63 +++++++++++++++++++---------------- 1 file changed, 34 insertions(+), 29 deletions(-) diff --git a/src/gamelib/grid_raytrace.cpp b/src/gamelib/grid_raytrace.cpp index 28aa2a0..1641c31 100644 --- a/src/gamelib/grid_raytrace.cpp +++ b/src/gamelib/grid_raytrace.cpp @@ -27,6 +27,7 @@ #include #include #include +#include namespace curry { #if !defined(BUILD_TESTING) @@ -104,46 +105,50 @@ namespace curry { const vec2f& u = parFrom; const vec2f v = parTo - parFrom; - //vec2f step(fsgn(v.x()), fsgn(v.y())); - - const auto delta = tile_size / v; - auto max = delta * (vec2f(1.0f) - frac(u / tile_size)); - - //vec2us start = pixel_to_world_tile(parWorld, u); - //const auto next_tile_boundary = (step + abs(step)) / 2.0f; - //const auto max = vec2f( - // segment_intersection( - // u, - // v, - // vec2f(static_cast(start.x() + next_tile_boundary.x()), 0.0f), - // vec2f(0.0f, static_cast(parWorld.world_size().y()) * tile_size.y()) - // ), - // segment_intersection( - // u, - // v, - // vec2f(0.0f, static_cast(start.y()) + next_tile_boundary.y()), - // vec2f(static_cast(parWorld.world_size().x()) * tile_size.x(), 0.0f) - // ) - //); - - //const auto delta = vec2f( - // std::isinf(max.x()) ? 0.0f : tile_size.x() / dot(vec2f(1.0f, 0.0f), v * inv_length(v)), - // 0.0f //std::isinf(max.y()) ? 0.0f : tile_size.y() / - //); + const auto delta = tile_size / abs(v); + const auto fr = frac(u / tile_size); + assert(fr.x() >= 0.0f and fr.x() < 1.0f); + assert(fr.y() >= 0.0f and fr.y() < 1.0f); //see: //http://stackoverflow.com/questions/12367071/how-do-i-initialize-the-t-variables-in-a-fast-voxel-traversal-algorithm-for-ray#12370474 - vec2i step(sgn(v.x()), sgn(v.y())); + const vec2i step(sgn(v.x()), sgn(v.y())); + vec2f max; + if (step.x() > 0) + max.x() = delta.x() * (1.0f - fr.x()); + else if (step.x() < 0) + max.x() = delta.x() * fr.x(); + else + max.x() = FLT_MAX; + if (step.y() > 0) + max.y() = delta.y() * (1.0f - fr.y()); + else if (step.y() < 0) + max.y() = delta.y() * fr.y(); + else + max.y() = FLT_MAX; + vec2us curr_tile = pixel_to_world_tile(parWorld, u); const vec2us last_tile = pixel_to_world_tile(parWorld, parTo); while (parFunc(curr_tile) and last_tile != curr_tile) { if (max.x() < max.y()) { - assert(std::max(static_cast(curr_tile.x() + step.x()), last_tile.x()) - std::min(static_cast(curr_tile.x() + step.x()), last_tile.x()) < std::max(curr_tile.x(), last_tile.x()) - std::min(curr_tile.x(), last_tile.x())); + assert(step.x()); + assert( + std::max(static_cast(curr_tile.x() + step.x()), last_tile.x()) - + std::min(static_cast(curr_tile.x() + step.x()), last_tile.x()) < + std::max(curr_tile.x(), last_tile.x()) - + std::min(curr_tile.x(), last_tile.x()) + ); max.x() += delta.x(); curr_tile.x() = static_cast(curr_tile.x() + step.x()); } else { - assert(std::max(static_cast(curr_tile.y() + step.y()), last_tile.y()) - std::min(static_cast(curr_tile.y() + step.y()), last_tile.y()) < std::max(curr_tile.y(), last_tile.y()) - std::min(curr_tile.y(), last_tile.y())); + assert(step.y()); + assert( + std::max(static_cast(curr_tile.y() + step.y()), last_tile.y()) - + std::min(static_cast(curr_tile.y() + step.y()), last_tile.y()) < + std::max(curr_tile.y(), last_tile.y()) - + std::min(curr_tile.y(), last_tile.y()) + ); max.y() += delta.y(); curr_tile.y() = static_cast(curr_tile.y() + step.y()); } From 40967784a36338023ada0e99b97511e289ad80a9 Mon Sep 17 00:00:00 2001 From: King_DuckZ Date: Sun, 23 Jul 2017 16:22:04 +0100 Subject: [PATCH 29/45] Add parameter to skip the callback on the first tile. For example if you are going from tile 1,1 to 1,2 you would get two notifications if parInclFirst==true, one for 1,1 and one for 1,2. If parInclFirst==false, then you will only get a notification for 1,2. Note that if the segment passed to to for_each_voxel_under_segment() is too short and doesn't span over the initial tile, passing parInclFirst==false will discard the only callback you would normally get. Effectively this can be used for a sort of "on tile changed" notification. --- src/gamelib/character.cpp | 2 +- src/gamelib/grid_raytrace.cpp | 16 ++++++++++++++-- src/gamelib/grid_raytrace.hpp | 9 ++++++++- test/unit/grid_raytrace.cpp | 3 ++- 4 files changed, 25 insertions(+), 5 deletions(-) diff --git a/src/gamelib/character.cpp b/src/gamelib/character.cpp index b2dbcc7..1fad99b 100644 --- a/src/gamelib/character.cpp +++ b/src/gamelib/character.cpp @@ -93,7 +93,7 @@ namespace curry { return true; //wtp.property->walkable; }; - for_each_voxel_under_segment(old_pos, this->position(), width_height(), *m_world, is_walkable); + for_each_voxel_under_segment(old_pos, this->position(), width_height(), *m_world, is_walkable, false); //for (auto tile_vec : crossed_tiles(old_pos, this->position(), m_world->tile_size())) { // const TileIndex* const tile = m_world->tile(tile_vec); // for (uint16_t z = 0; z < m_world->layer_count(); ++z) { diff --git a/src/gamelib/grid_raytrace.cpp b/src/gamelib/grid_raytrace.cpp index 1641c31..a5b472a 100644 --- a/src/gamelib/grid_raytrace.cpp +++ b/src/gamelib/grid_raytrace.cpp @@ -93,7 +93,14 @@ namespace curry { //see: //http://stackoverflow.com/questions/24679963/precise-subpixel-line-drawing-algorithm-rasterization-algorithm - void for_each_voxel_under_segment (const vec2f& parFrom, const vec2f& parTo, vec2us parObjSize, const WorldGrid& parWorld, std::function parFunc) { + void for_each_voxel_under_segment ( + const vec2f& parFrom, + const vec2f& parTo, + vec2us parObjSize, + const WorldGrid& parWorld, + std::function parFunc, + bool parInclFirst + ) { const vec2f tile_size = vector_cast(parWorld.tile_size()); //in this simplified case everything should be part of the world grid assert(parFrom >= vec2f(0.0f)); @@ -129,7 +136,12 @@ namespace curry { vec2us curr_tile = pixel_to_world_tile(parWorld, u); const vec2us last_tile = pixel_to_world_tile(parWorld, parTo); - while (parFunc(curr_tile) and last_tile != curr_tile) { + bool& do_callback = parInclFirst; + while ( + ((do_callback and parFunc(curr_tile)) or not do_callback) + and last_tile != curr_tile + ) { + do_callback = true; if (max.x() < max.y()) { assert(step.x()); assert( diff --git a/src/gamelib/grid_raytrace.hpp b/src/gamelib/grid_raytrace.hpp index 017e5a7..92809b1 100644 --- a/src/gamelib/grid_raytrace.hpp +++ b/src/gamelib/grid_raytrace.hpp @@ -30,5 +30,12 @@ namespace curry { float segment_intersection (const vec2f& parA, const vec2f& parDirA, const vec2f& parB, const vec2f& parDirB); #endif - void for_each_voxel_under_segment ( const vec2f& parFrom, const vec2f& parTo, vec2us parObjSize, const WorldGrid& parWorld, std::function parFunc ); + void for_each_voxel_under_segment ( + const vec2f& parFrom, + const vec2f& parTo, + vec2us parObjSize, + const WorldGrid& parWorld, + std::function parFunc, + bool parInclFirst + ); } //namespace curry diff --git a/test/unit/grid_raytrace.cpp b/test/unit/grid_raytrace.cpp index ac6032d..438a738 100644 --- a/test/unit/grid_raytrace.cpp +++ b/test/unit/grid_raytrace.cpp @@ -54,7 +54,8 @@ TEST_CASE ("Check that 2D raytracing works", "[raytracing][geometry]") { vec2f(639.0f, 639.0f), //to vec2us(1, 1), //objsize world, //world - [&diagonal](vec2us wtp) mutable {diagonal.push_back(wtp); return true;} + [&diagonal](vec2us wtp) mutable {diagonal.push_back(wtp); return true;}, + true ); const auto* tile_prop = &world.tile_property(world.tile(vec2us(0))); From 64969766d9f9f4c4883bec14e1eba9dfc667b8f5 Mon Sep 17 00:00:00 2001 From: King_DuckZ Date: Mon, 24 Jul 2017 01:19:06 +0100 Subject: [PATCH 30/45] Try to make collision work - WiP --- src/gamelib/character.cpp | 41 ++++++++++++++++++++------------------- src/gamelib/worldgrid.cpp | 5 +++++ src/gamelib/worldgrid.hpp | 1 + 3 files changed, 27 insertions(+), 20 deletions(-) diff --git a/src/gamelib/character.cpp b/src/gamelib/character.cpp index 1fad99b..66fa277 100644 --- a/src/gamelib/character.cpp +++ b/src/gamelib/character.cpp @@ -81,32 +81,33 @@ namespace curry { offset.y() += speed; const auto old_pos = this->position(); - const auto new_pos = old_pos + offset; - - this->set_position(new_pos); + this->set_position(old_pos + offset); if (position() == old_pos) return; - vec2us last_valid_pos(0xFFFF); - - auto is_walkable = [](vec2us idx) { - return true; //wtp.property->walkable; + const vec2us character_tile = pixel_to_world_tile(*m_world, position()); + vec2us stop_at = pixel_to_world_tile(*m_world, old_pos); + auto is_walkable = [world=m_world,&stop_at](vec2us idx) { + const bool walkable = world->tile_property(world->tile(idx)).walkable; + if (walkable) + stop_at = idx; + else + std::cout << "found non-walkable tile at " << idx << '\n'; + return walkable; }; for_each_voxel_under_segment(old_pos, this->position(), width_height(), *m_world, is_walkable, false); - //for (auto tile_vec : crossed_tiles(old_pos, this->position(), m_world->tile_size())) { - // const TileIndex* const tile = m_world->tile(tile_vec); - // for (uint16_t z = 0; z < m_world->layer_count(); ++z) { - // const auto& tile_prop = m_world->tile_property(tile + z); - // if (not tile_prop.walkable) { - // assert(last_valid_pos != vec2us(0xFFFF)); - // this->set_position(vector_cast(last_valid_pos)); - // } - // else { - // last_valid_pos = tile_vec; - // } - // } - //} + + if (character_tile != stop_at) { + vec2f blocked_pos = world_tile_to_pixel(*m_world, stop_at); + vec2f new_pos = position(); + if (character_tile.x() != stop_at.x()) + new_pos.x() = blocked_pos.x(); + if (character_tile.y() != stop_at.y()) + new_pos.y() = blocked_pos.y(); + + this->set_position(new_pos); + } } void Character::set_speed (float parSpeed) { diff --git a/src/gamelib/worldgrid.cpp b/src/gamelib/worldgrid.cpp index 8f11da0..9a57b92 100644 --- a/src/gamelib/worldgrid.cpp +++ b/src/gamelib/worldgrid.cpp @@ -140,6 +140,11 @@ namespace curry { ); } + vec2f world_tile_to_pixel (const WorldGrid& parWorld, const vec2us& parTile) { + assert(parTile < parWorld.world_size()); + return vector_cast(parTile) * vector_cast(parWorld.tile_size()); + } + bool position_is_on_map (const WorldGrid& parWorld, const vec2i& parPos) { assert(parWorld.tile_size() > vec2us(0)); diff --git a/src/gamelib/worldgrid.hpp b/src/gamelib/worldgrid.hpp index 00e08c7..ae5d371 100644 --- a/src/gamelib/worldgrid.hpp +++ b/src/gamelib/worldgrid.hpp @@ -62,5 +62,6 @@ namespace curry { vec2i world_size_pixel (const WorldGrid& parWorld); vec2us pixel_to_world_tile (const WorldGrid& parWorld, const vec2f& parPos); + vec2f world_tile_to_pixel (const WorldGrid& parWorld, const vec2us& parTile); bool position_is_on_map (const WorldGrid& parWorld, const vec2i& parPos); } //namespace curry From 92ed7329275650ee56463d3d2821dff592be8153 Mon Sep 17 00:00:00 2001 From: King_DuckZ Date: Mon, 24 Jul 2017 01:19:33 +0100 Subject: [PATCH 31/45] Add the customized vectorwrapper pretty-printer for curry. --- gdb/vectorwrapper.py | 72 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 gdb/vectorwrapper.py diff --git a/gdb/vectorwrapper.py b/gdb/vectorwrapper.py new file mode 100644 index 0000000..1db58a6 --- /dev/null +++ b/gdb/vectorwrapper.py @@ -0,0 +1,72 @@ + # + # Copyright 2015-2017 Michele "King_DuckZ" Santullo + # + # Licensed under the Apache License, Version 2.0 (the "License"); + # you may not use this file except in compliance with the License. + # You may obtain a copy of the License at + # + # http://www.apache.org/licenses/LICENSE-2.0 + # + # Unless required by applicable law or agreed to in writing, software + # distributed under the License is distributed on an "AS IS" BASIS, + # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + # See the License for the specific language governing permissions and + # limitations under the License. + +import gdb.printing + +#NOTE: +#This pretty-printer has been written for vectorwrapper + std::array. +#You will have to customize it if your wrapped type is different. + +class VectorWrapperStdArrPrinter(object): + "Print values in a VectorWrapper" + + class _iterator(object): + def __init__(self, start, size): + self.item = start + self.pos = 0 + self.size = size + + def __iter__(self): + return self + + def __next__(self): + if self.pos == self.size: + raise StopIteration + elt = self.item.dereference() + self.item = self.item + 1 + self.pos = self.pos + 1 + return str(elt) + + def __init__(self, val): + self.val = val + self.dimensions = int(val.type.template_argument(1)) + + def to_string(self): + #get the scalar[n] value + stdarray_elems = self.val['m_wrapped']['_M_elems'] + #get the actual scalar type + elem_type = self.val['m_wrapped'].type.template_argument(0) + #cast scalar[n] to scalar* + ptr = stdarray_elems.address.cast(elem_type.pointer()) + #iterate over the values in scalar* and str() them + retval = "vec" + str(self.dimensions) + "<" + \ + ", ".join( + str(itm) for itm in self._iterator(ptr, self.dimensions) + ) + ">" + return retval + + def display_hint(self): + return 'string' + +def build_pretty_printer(): + pp = gdb.printing.RegexpCollectionPrettyPrinter(__name__) + #add your namespace before 'vwr' if you're using a custom one + pp.add_printer('vwr', '^curry::vwr::Vec Date: Mon, 24 Jul 2017 01:26:05 +0100 Subject: [PATCH 32/45] Import tmxlite. --- .gitmodules | 3 +++ CMakeLists.txt | 1 + lib/tmxlite | 1 + src/gamelib/CMakeLists.txt | 2 ++ 4 files changed, 7 insertions(+) create mode 160000 lib/tmxlite diff --git a/.gitmodules b/.gitmodules index 481588c..0c3e3cf 100644 --- a/.gitmodules +++ b/.gitmodules @@ -13,3 +13,6 @@ [submodule "lib/better-enums"] path = lib/better-enums url = https://github.com/aantron/better-enums +[submodule "lib/tmxlite"] + path = lib/tmxlite + url = https://github.com/fallahn/tmxlite.git diff --git a/CMakeLists.txt b/CMakeLists.txt index 01c7780..f9d2048 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -66,6 +66,7 @@ target_include_directories(${PROJECT_NAME} ) add_subdirectory(lib/clooneljump/src/cloonelgraphics) +add_subdirectory(lib/tmxlite/tmxlite) add_subdirectory(src/gamelib) add_subdirectory(src/standalone) diff --git a/lib/tmxlite b/lib/tmxlite new file mode 160000 index 0000000..3934199 --- /dev/null +++ b/lib/tmxlite @@ -0,0 +1 @@ +Subproject commit 3934199e22d68a3a1e7c72049b5f6e85559e99dc diff --git a/src/gamelib/CMakeLists.txt b/src/gamelib/CMakeLists.txt index aa5832a..2d8b3b3 100644 --- a/src/gamelib/CMakeLists.txt +++ b/src/gamelib/CMakeLists.txt @@ -21,6 +21,7 @@ add_library(${PROJECT_NAME} grid_raytrace.cpp drawable.cpp drawing_queue.cpp + assertion.cpp ) set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD 14) set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD_REQUIRED ON) @@ -42,6 +43,7 @@ target_link_libraries(${PROJECT_NAME} PRIVATE ${PNG_LIBRARIES} PUBLIC mycurry_toplevel PUBLIC cloonelgraphics + PRIVATE tmxlite ) target_compile_definitions(${PROJECT_NAME} From 4ab06b4255d790a5e898256dc9afb6d111d5e76a Mon Sep 17 00:00:00 2001 From: King_DuckZ Date: Mon, 24 Jul 2017 01:27:07 +0100 Subject: [PATCH 33/45] Add 'walkable' info to tiles. --- nonfree_map.tmx | 450 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 450 insertions(+) diff --git a/nonfree_map.tmx b/nonfree_map.tmx index 3124404..386e532 100644 --- a/nonfree_map.tmx +++ b/nonfree_map.tmx @@ -2,6 +2,456 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 84e7ca952ef1f44d24aa0321eb634663b9310102 Mon Sep 17 00:00:00 2001 From: King_DuckZ Date: Mon, 24 Jul 2017 10:03:43 +0100 Subject: [PATCH 34/45] buildfix --- src/gamelib/CMakeLists.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/src/gamelib/CMakeLists.txt b/src/gamelib/CMakeLists.txt index 2d8b3b3..7bead15 100644 --- a/src/gamelib/CMakeLists.txt +++ b/src/gamelib/CMakeLists.txt @@ -21,7 +21,6 @@ add_library(${PROJECT_NAME} grid_raytrace.cpp drawable.cpp drawing_queue.cpp - assertion.cpp ) set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD 14) set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD_REQUIRED ON) From 7783cb8e5ec90ba31ca9762050499862dc5dc811 Mon Sep 17 00:00:00 2001 From: King_DuckZ Date: Mon, 31 Jul 2017 09:56:49 +0100 Subject: [PATCH 35/45] Refactor moving logic out from Character into a new class. --- src/gamelib/CMakeLists.txt | 1 + src/gamelib/character.cpp | 38 +++++++---------------- src/gamelib/character.hpp | 11 ++----- src/gamelib/world_moveable.cpp | 57 ++++++++++++++++++++++++++++++++++ src/gamelib/world_moveable.hpp | 47 ++++++++++++++++++++++++++++ 5 files changed, 119 insertions(+), 35 deletions(-) create mode 100644 src/gamelib/world_moveable.cpp create mode 100644 src/gamelib/world_moveable.hpp diff --git a/src/gamelib/CMakeLists.txt b/src/gamelib/CMakeLists.txt index 7bead15..a004f95 100644 --- a/src/gamelib/CMakeLists.txt +++ b/src/gamelib/CMakeLists.txt @@ -21,6 +21,7 @@ add_library(${PROJECT_NAME} grid_raytrace.cpp drawable.cpp drawing_queue.cpp + world_moveable.cpp ) set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD 14) set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD_REQUIRED ON) diff --git a/src/gamelib/character.cpp b/src/gamelib/character.cpp index 66fa277..b42426c 100644 --- a/src/gamelib/character.cpp +++ b/src/gamelib/character.cpp @@ -32,28 +32,17 @@ namespace curry { Character::Character (cloonel::InputBag* parInputBag, const WorldSizeNotifiable::DeferredRegister& parDeferredRegister) : - WorldSizeNotifiable(parDeferredRegister), - m_position(vec2f(0.0f), vec2f(0.0f), vec2f(0.0f)), + WorldMoveable(parDeferredRegister), m_input_bag(parInputBag), - m_world(parDeferredRegister.world()), m_speed(1.0f) { assert(m_input_bag); - assert(m_world); - } - - void Character::set_position (const vec2f& parPos) { - m_position = parPos; - } - - const vec2f& Character::position() const { - return m_position.get(); } Rect Character::destination_rect (const vec2f& parWorldPos) const { return Rect( - m_position.get() - parWorldPos, - m_position.get() - parWorldPos + width_height() + position() - parWorldPos, + position() - parWorldPos + width_height() ); } @@ -64,10 +53,6 @@ namespace curry { ); } - void Character::world_size_changed (const vec2us&, const vec2i& parPixelSize) { - m_position.change_minmax(m_position.get_min(), vector_cast(parPixelSize)); - } - void Character::do_movement (float parDeltaT) { const float speed = parDeltaT * m_speed; vec2f offset(0.0f); @@ -85,10 +70,12 @@ namespace curry { if (position() == old_pos) return; - const vec2us character_tile = pixel_to_world_tile(*m_world, position()); - vec2us stop_at = pixel_to_world_tile(*m_world, old_pos); - auto is_walkable = [world=m_world,&stop_at](vec2us idx) { - const bool walkable = world->tile_property(world->tile(idx)).walkable; + WorldGrid& world = this->world(); + + const vec2us character_tile = pixel_to_world_tile(world, position()); + vec2us stop_at = pixel_to_world_tile(world, old_pos); + auto is_walkable = [&world,&stop_at](vec2us idx) { + const bool walkable = world.tile_property(world.tile(idx)).walkable; if (walkable) stop_at = idx; else @@ -96,10 +83,10 @@ namespace curry { return walkable; }; - for_each_voxel_under_segment(old_pos, this->position(), width_height(), *m_world, is_walkable, false); + for_each_voxel_under_segment(old_pos, this->position(), width_height(), world, is_walkable, false); if (character_tile != stop_at) { - vec2f blocked_pos = world_tile_to_pixel(*m_world, stop_at); + vec2f blocked_pos = world_tile_to_pixel(world, stop_at); vec2f new_pos = position(); if (character_tile.x() != stop_at.x()) new_pos.x() = blocked_pos.x(); @@ -125,7 +112,6 @@ namespace curry { } void Character::on_texture_size_changed (const vec2f& parOldSz, const vec2f& parNewSz) { - if (m_position.get_min() != m_position.get_max()) - m_position.change_minmax(m_position.get_min(), m_position.get_max() + parOldSz - parNewSz); + this->update_moveable_size(parOldSz, parNewSz); } } //namespace curry diff --git a/src/gamelib/character.hpp b/src/gamelib/character.hpp index 73b0665..d6279f1 100644 --- a/src/gamelib/character.hpp +++ b/src/gamelib/character.hpp @@ -21,9 +21,7 @@ #include "vector.hpp" #include "rect.hpp" -#include "constrained_position.hpp" -#include "worldsizenotifiable.hpp" -#include "moveable.hpp" +#include "world_moveable.hpp" #include "drawable.hpp" namespace cloonel { @@ -34,16 +32,13 @@ namespace cloonel { namespace curry { class WorldGrid; - class Character : public Drawable, public WorldSizeNotifiable, public Moveable { + class Character : public Drawable, public WorldMoveable { public: Character (cloonel::InputBag* parInputBag, const WorldSizeNotifiable::DeferredRegister& parDeferredRegister); virtual ~Character() noexcept = default; - const vec2f& position() const; - void set_position (const vec2f& parPos); Rect destination_rect (const vec2f& parWorldPos) const; Rect source_rect() const; - virtual void world_size_changed (const vec2us& parSize, const vec2i& parPixelSize) override; virtual void do_movement (float parDeltaT) override; void set_speed (float parSpeed); virtual void draw (DrawingQueue& parDQ, const WorldViewport& parViewport) override; @@ -51,9 +46,7 @@ namespace curry { private: virtual void on_texture_size_changed (const vec2f& parOldSz, const vec2f& parNewSz) override; - ConstrainedPosition m_position; cloonel::InputBag* m_input_bag; - WorldGrid* m_world; float m_speed; }; } //namespace curry diff --git a/src/gamelib/world_moveable.cpp b/src/gamelib/world_moveable.cpp new file mode 100644 index 0000000..c9ac2be --- /dev/null +++ b/src/gamelib/world_moveable.cpp @@ -0,0 +1,57 @@ +/* + Copyright 2016, 2017 Michele "King_DuckZ" Santullo + + This file is part of MyCurry. + + MyCurry is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + MyCurry is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with MyCurry. If not, see . +*/ + +#include "world_moveable.hpp" +#include + +namespace curry { + WorldMoveable::WorldMoveable (const WorldSizeNotifiable::DeferredRegister& parDeferredRegister) : + WorldSizeNotifiable(parDeferredRegister), + m_position(vec2f(0.0f), vec2f(0.0f), vec2f(0.0f)), + m_world(parDeferredRegister.world()) + { + assert(m_world); + } + void WorldMoveable::world_size_changed (const vec2us&, const vec2i& parPixelSize) { + m_position.change_minmax(m_position.get_min(), vector_cast(parPixelSize)); + } + + void WorldMoveable::set_position (const vec2f& parPos) { + m_position = parPos; + } + + const vec2f& WorldMoveable::position() const { + return m_position.get(); + } + + void WorldMoveable::update_moveable_size (const vec2f& parOldSz, const vec2f& parNewSz) { + if (m_position.get_min() != m_position.get_max()) + m_position.change_minmax(m_position.get_min(), m_position.get_max() + parOldSz - parNewSz); + } + + WorldGrid& WorldMoveable::world() { + assert(m_world); + return *m_world; + } + + const WorldGrid& WorldMoveable::world() const { + assert(m_world); + return *m_world; + } +} //namespace curry diff --git a/src/gamelib/world_moveable.hpp b/src/gamelib/world_moveable.hpp new file mode 100644 index 0000000..cac42de --- /dev/null +++ b/src/gamelib/world_moveable.hpp @@ -0,0 +1,47 @@ +/* + Copyright 2016, 2017 Michele "King_DuckZ" Santullo + + This file is part of MyCurry. + + MyCurry is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + MyCurry is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with MyCurry. If not, see . +*/ + +#pragma once + +#include "moveable.hpp" +#include "worldsizenotifiable.hpp" +#include "constrained_position.hpp" + +namespace curry { + class WorldGrid; + + class WorldMoveable : public Moveable, public WorldSizeNotifiable { + public: + explicit WorldMoveable (const WorldSizeNotifiable::DeferredRegister& parDeferredRegister); + virtual ~WorldMoveable() = default; + + virtual void world_size_changed (const vec2us& parSize, const vec2i& parPixelSize) override; + const vec2f& position() const; + void set_position (const vec2f& parPos); + WorldGrid& world(); + const WorldGrid& world() const; + + protected: + void update_moveable_size (const vec2f& parOldSz, const vec2f& parNewSz); + + private: + ConstrainedPosition m_position; + WorldGrid* m_world; + }; +} //namespace curry From ee3a17fd13b0fb12f013b950550612e70db4f437 Mon Sep 17 00:00:00 2001 From: King_DuckZ Date: Tue, 24 Oct 2017 10:45:40 +0100 Subject: [PATCH 36/45] Make method const --- src/gamelib/worldgrid.cpp | 2 +- src/gamelib/worldgrid.hpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/gamelib/worldgrid.cpp b/src/gamelib/worldgrid.cpp index 9a57b92..72cce67 100644 --- a/src/gamelib/worldgrid.cpp +++ b/src/gamelib/worldgrid.cpp @@ -123,7 +123,7 @@ namespace curry { std::copy(parProperties.begin(), parProperties.end(), m_tile_properties.begin()); } - const TileProperty& WorldGrid::tile_property (const TileIndex* parIndex) { + const TileProperty& WorldGrid::tile_property (const TileIndex* parIndex) const { assert(parIndex); assert(static_cast(*parIndex) < m_tile_properties.size()); return m_tile_properties[static_cast(*parIndex)]; diff --git a/src/gamelib/worldgrid.hpp b/src/gamelib/worldgrid.hpp index ae5d371..7f2b5f4 100644 --- a/src/gamelib/worldgrid.hpp +++ b/src/gamelib/worldgrid.hpp @@ -42,7 +42,7 @@ namespace curry { void add_layer (vec2us parWorldSize, const std::vector& parLayer); void set_layers (vec2us parWorldSize, const std::vector>& parLayers); void set_tile_properties (const std::vector& parProperties); - const TileProperty& tile_property (const TileIndex* parIndex); + const TileProperty& tile_property (const TileIndex* parIndex) const; void unload_layers(); WorldSizeWatcherTicket register_observer (WorldSizeNotifiable* parWatcher); void unregister_observer (WorldSizeWatcherTicket parTicket); From 37f796438847041e96c134638b531f929623cacc Mon Sep 17 00:00:00 2001 From: King_DuckZ Date: Tue, 24 Oct 2017 20:25:01 +0100 Subject: [PATCH 37/45] Fix build error about SDL_platform.h not found. --- lib/clooneljump | 2 +- src/gamelib/CMakeLists.txt | 11 +++++------ 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/lib/clooneljump b/lib/clooneljump index 8669e5e..a1b66e9 160000 --- a/lib/clooneljump +++ b/lib/clooneljump @@ -1 +1 @@ -Subproject commit 8669e5e67476a1e6c6e6582e2fd46b1a29100b0c +Subproject commit a1b66e99f0fee32f72cb39676e1fc9c957cba96d diff --git a/src/gamelib/CMakeLists.txt b/src/gamelib/CMakeLists.txt index a004f95..140d7aa 100644 --- a/src/gamelib/CMakeLists.txt +++ b/src/gamelib/CMakeLists.txt @@ -1,7 +1,7 @@ project(mycurry_gamelib CXX) -PKG_SEARCH_MODULE(SDL2 REQUIRED sdl2) -PKG_SEARCH_MODULE(SDL2IMAGE REQUIRED SDL2_image>=2.0.0) +PKG_SEARCH_MODULE(SDL2 REQUIRED IMPORTED_TARGET sdl2) +PKG_SEARCH_MODULE(SDL2IMAGE REQUIRED IMPORTED_TARGET SDL2_image>=2.0.0) find_package(PNG REQUIRED) add_library(${PROJECT_NAME} @@ -22,13 +22,12 @@ add_library(${PROJECT_NAME} drawable.cpp drawing_queue.cpp world_moveable.cpp + collider.cpp ) set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD 14) set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD_REQUIRED ON) target_include_directories(${PROJECT_NAME} SYSTEM - PRIVATE ${SDL2_INCLUDE_DIR} - PRIVATE ${SDL2IMAGE_INCLUDE_DIRS} PRIVATE ${PNG_INCLUDE_DIRS} PRIVATE ${Boost_INCLUDE_DIRS} ) @@ -38,8 +37,8 @@ target_include_directories(${PROJECT_NAME} ) target_link_libraries(${PROJECT_NAME} - PRIVATE ${SDL2_LIBRARIES} - PRIVATE ${SDL2IMAGE_LIBRARIES} + PRIVATE PkgConfig::SDL2 + PRIVATE PkgConfig::SDL2IMAGE PRIVATE ${PNG_LIBRARIES} PUBLIC mycurry_toplevel PUBLIC cloonelgraphics From 94080546e51cf31d50a1bfc272e6efa5afacdbcc Mon Sep 17 00:00:00 2001 From: King_DuckZ Date: Mon, 6 Nov 2017 20:40:03 +0000 Subject: [PATCH 38/45] Broken implementation of collision code. I'm trying to get it working. --- lib/vectorwrapper | 2 +- src/gamelib/character.cpp | 31 +++--------- src/gamelib/character.hpp | 2 + src/gamelib/collider.cpp | 101 ++++++++++++++++++++++++++++++++++++++ src/gamelib/collider.hpp | 43 ++++++++++++++++ 5 files changed, 154 insertions(+), 25 deletions(-) create mode 100644 src/gamelib/collider.cpp create mode 100644 src/gamelib/collider.hpp diff --git a/lib/vectorwrapper b/lib/vectorwrapper index 546bd7e..50ebba1 160000 --- a/lib/vectorwrapper +++ b/lib/vectorwrapper @@ -1 +1 @@ -Subproject commit 546bd7e270b486aa8b7e898a0e3008baa84ef6d8 +Subproject commit 50ebba1c3157196d142bc06ebf2d290c7702b084 diff --git a/src/gamelib/character.cpp b/src/gamelib/character.cpp index b42426c..2e75122 100644 --- a/src/gamelib/character.cpp +++ b/src/gamelib/character.cpp @@ -21,7 +21,6 @@ #include "inputbag.hpp" #include "gameactions.hpp" #include "worldgrid.hpp" -#include "grid_raytrace.hpp" #include "drawing_queue.hpp" #include "worldviewport.hpp" #include "texture.hpp" @@ -72,29 +71,13 @@ namespace curry { WorldGrid& world = this->world(); - const vec2us character_tile = pixel_to_world_tile(world, position()); - vec2us stop_at = pixel_to_world_tile(world, old_pos); - auto is_walkable = [&world,&stop_at](vec2us idx) { - const bool walkable = world.tile_property(world.tile(idx)).walkable; - if (walkable) - stop_at = idx; - else - std::cout << "found non-walkable tile at " << idx << '\n'; - return walkable; - }; - - for_each_voxel_under_segment(old_pos, this->position(), width_height(), world, is_walkable, false); - - if (character_tile != stop_at) { - vec2f blocked_pos = world_tile_to_pixel(world, stop_at); - vec2f new_pos = position(); - if (character_tile.x() != stop_at.x()) - new_pos.x() = blocked_pos.x(); - if (character_tile.y() != stop_at.y()) - new_pos.y() = blocked_pos.y(); - - this->set_position(new_pos); - } + const vec2f new_pos = m_collider.try_reach_tile( + texture()->width_height() / world.tile_size(), + old_pos, + position(), + world + ); + this->set_position(new_pos); } void Character::set_speed (float parSpeed) { diff --git a/src/gamelib/character.hpp b/src/gamelib/character.hpp index d6279f1..796e62e 100644 --- a/src/gamelib/character.hpp +++ b/src/gamelib/character.hpp @@ -23,6 +23,7 @@ #include "rect.hpp" #include "world_moveable.hpp" #include "drawable.hpp" +#include "collider.hpp" namespace cloonel { class SDLMain; @@ -47,6 +48,7 @@ namespace curry { virtual void on_texture_size_changed (const vec2f& parOldSz, const vec2f& parNewSz) override; cloonel::InputBag* m_input_bag; + Collider m_collider; float m_speed; }; } //namespace curry diff --git a/src/gamelib/collider.cpp b/src/gamelib/collider.cpp new file mode 100644 index 0000000..0f7e79e --- /dev/null +++ b/src/gamelib/collider.cpp @@ -0,0 +1,101 @@ +/* + Copyright 2016, 2017 Michele "King_DuckZ" Santullo + + This file is part of MyCurry. + + MyCurry is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + MyCurry is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with MyCurry. If not, see . +*/ + +#include "collider.hpp" +#include "grid_raytrace.hpp" +#include "worldgrid.hpp" +#include "vectorwrapper/sequence_range.hpp" +#include + +namespace curry { + namespace { + vec2us collision_borders (const vec2us& parObjSize, const vec2f& parDirection) { + assert(parObjSize > 0); + const uint16_t horz_offs = (parDirection.x() > 0.0f ? static_cast(parObjSize.x() - 1) : 0); + const uint16_t vert_offs = (parDirection.y() > 0.0f ? static_cast(parObjSize.y() - 1) : 0); + return vec2us(horz_offs, vert_offs); + } + + vec2us check_tiles_count (const vec2us& parObjSize, const vec2f& parDirection) { + assert(parObjSize > 0); + const uint16_t horz = (parDirection.y() != 0.0f ? parObjSize.x() : 0); + const uint16_t vert = (parDirection.x() != 0.0f ? parObjSize.y() : 0); + return vec2us(horz, vert); + } + + vec2f make_pixel_side_offset ( + const vec2us& parTileSize, + const vec2us& parSideOffset, + const vec2f& parDirection + ) { + const vec2f tile_size = vector_cast(parTileSize); + vec2f tile_start = tile_size * vector_cast(parSideOffset); + if (parDirection.x() > 0.0f) + tile_start.x() += tile_size.x() - 1.0f; + if (parDirection.y() > 0.0f) + tile_start.y() += tile_size.y() - 1.0f; + return tile_start; + } + } //unnamed namespace + + vec2f Collider::try_reach_tile ( + const vec2us& parObjectSize, + const vec2f& parFrom, + const vec2f& parTo, + const WorldGrid& parWorld + ) { + const vec2f direction = parTo - parFrom; + std::cout << "direction: " << direction << ' '; + if (direction == 0.0f) + return parTo; + + const vec2us side_offset = collision_borders(parObjectSize, direction); + const vec2us length = check_tiles_count(parObjectSize, direction); + std::cout << "side_offset: " << side_offset << " length: " << length << '\n'; + const vec2us dest_tile = pixel_to_world_tile(parWorld, parTo); + vec2us stop_at = pixel_to_world_tile(parWorld, parFrom); + vec2f tile_relative_offs = parTo - world_tile_to_pixel(parWorld, dest_tile); + assert(tile_relative_offs < vector_cast(parWorld.tile_size())); + + auto forward_callback = [=,&parWorld,&stop_at,&tile_relative_offs](vec2us tile) { + for (auto curr_pos : vwr::increasing_sequence_range(tile, tile + parObjectSize)) { + const bool walkable = parWorld.tile_property(parWorld.tile(curr_pos)).walkable; + if (not walkable) { + tile_relative_offs = vec2f(0.0f); + return false; + } + } + stop_at = tile - side_offset; + return true; + }; + + const vec2f pix_side_offset = + make_pixel_side_offset(parWorld.tile_size(), side_offset, direction); + for_each_voxel_under_segment( + parFrom + pix_side_offset, + parTo + pix_side_offset, + parObjectSize, + parWorld, + forward_callback, + false + ); + + return world_tile_to_pixel(parWorld, stop_at) + tile_relative_offs - pix_side_offset; + } +} //namespace curry diff --git a/src/gamelib/collider.hpp b/src/gamelib/collider.hpp new file mode 100644 index 0000000..2450c72 --- /dev/null +++ b/src/gamelib/collider.hpp @@ -0,0 +1,43 @@ +/* + Copyright 2016, 2017 Michele "King_DuckZ" Santullo + + This file is part of MyCurry. + + MyCurry is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + MyCurry is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with MyCurry. If not, see . +*/ + +#pragma once + +#include "vector.hpp" +#include "rect.hpp" +#include + +namespace curry { + class WorldGrid; + + class Collider { + public: + Collider() = default; + ~Collider() = default; + + vec2f try_reach_tile ( + const vec2us& parObjectSize, + const vec2f& parFrom, + const vec2f& parTo, + const WorldGrid& parWorld + ); + + private: + }; +} //namespace curry From 57bd1cfefcde969c434d677031a6856443c4762c Mon Sep 17 00:00:00 2001 From: King_DuckZ Date: Mon, 6 Nov 2017 20:40:24 +0000 Subject: [PATCH 39/45] Temporary, just for the sake of testing collision. --- src/gamelib/csvloader.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/gamelib/csvloader.cpp b/src/gamelib/csvloader.cpp index 5f9f2d4..c3c732f 100644 --- a/src/gamelib/csvloader.cpp +++ b/src/gamelib/csvloader.cpp @@ -83,6 +83,7 @@ namespace curry { } out_csv.tile_properties.resize(static_cast(largest_tile_idx) + 1); + out_csv.tile_properties[2].walkable = false; #if !defined(NDEBUG) for (const auto& table : out_csv.tables) { From ea5bbb8673424f7cb138f2a7b07ec01e29d32a4b Mon Sep 17 00:00:00 2001 From: King_DuckZ Date: Wed, 28 Feb 2018 10:38:37 +0000 Subject: [PATCH 40/45] Update copyright to 2018 --- src/gamelib/collider.cpp | 2 +- src/gamelib/collider.hpp | 2 +- src/gamelib/world_moveable.cpp | 2 +- src/gamelib/world_moveable.hpp | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/gamelib/collider.cpp b/src/gamelib/collider.cpp index 0f7e79e..7ae37f7 100644 --- a/src/gamelib/collider.cpp +++ b/src/gamelib/collider.cpp @@ -1,5 +1,5 @@ /* - Copyright 2016, 2017 Michele "King_DuckZ" Santullo + Copyright 2016-2018 Michele "King_DuckZ" Santullo This file is part of MyCurry. diff --git a/src/gamelib/collider.hpp b/src/gamelib/collider.hpp index 2450c72..d7d5814 100644 --- a/src/gamelib/collider.hpp +++ b/src/gamelib/collider.hpp @@ -1,5 +1,5 @@ /* - Copyright 2016, 2017 Michele "King_DuckZ" Santullo + Copyright 2016-2018 Michele "King_DuckZ" Santullo This file is part of MyCurry. diff --git a/src/gamelib/world_moveable.cpp b/src/gamelib/world_moveable.cpp index c9ac2be..2e20957 100644 --- a/src/gamelib/world_moveable.cpp +++ b/src/gamelib/world_moveable.cpp @@ -1,5 +1,5 @@ /* - Copyright 2016, 2017 Michele "King_DuckZ" Santullo + Copyright 2016-2018 Michele "King_DuckZ" Santullo This file is part of MyCurry. diff --git a/src/gamelib/world_moveable.hpp b/src/gamelib/world_moveable.hpp index cac42de..ec6492f 100644 --- a/src/gamelib/world_moveable.hpp +++ b/src/gamelib/world_moveable.hpp @@ -1,5 +1,5 @@ /* - Copyright 2016, 2017 Michele "King_DuckZ" Santullo + Copyright 2016-2018 Michele "King_DuckZ" Santullo This file is part of MyCurry. From 89f7d5c94801077c6cfcdf40ca0ff04a9be01487 Mon Sep 17 00:00:00 2001 From: King_DuckZ Date: Thu, 1 Mar 2018 23:19:27 +0000 Subject: [PATCH 41/45] I think this should return 1, not 0. Like this, I can loop over the column/row facing the collision side, ie for z = tile; z < tile + len. --- src/gamelib/collider.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/gamelib/collider.cpp b/src/gamelib/collider.cpp index 7ae37f7..14613bb 100644 --- a/src/gamelib/collider.cpp +++ b/src/gamelib/collider.cpp @@ -34,8 +34,8 @@ namespace curry { vec2us check_tiles_count (const vec2us& parObjSize, const vec2f& parDirection) { assert(parObjSize > 0); - const uint16_t horz = (parDirection.y() != 0.0f ? parObjSize.x() : 0); - const uint16_t vert = (parDirection.x() != 0.0f ? parObjSize.y() : 0); + const uint16_t horz = (parDirection.y() != 0.0f ? parObjSize.x() : 1); + const uint16_t vert = (parDirection.x() != 0.0f ? parObjSize.y() : 1); return vec2us(horz, vert); } From 5bccef1f4f2c7199fbf455eacc494b3e11e2ec69 Mon Sep 17 00:00:00 2001 From: King_DuckZ Date: Thu, 1 Mar 2018 23:19:42 +0000 Subject: [PATCH 42/45] Add print statements to hopefully help with debugging. --- src/gamelib/collider.cpp | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/src/gamelib/collider.cpp b/src/gamelib/collider.cpp index 14613bb..e58b1de 100644 --- a/src/gamelib/collider.cpp +++ b/src/gamelib/collider.cpp @@ -60,8 +60,10 @@ namespace curry { const vec2f& parTo, const WorldGrid& parWorld ) { + std::cout << "---------------- collision test start --------------------\n"; const vec2f direction = parTo - parFrom; std::cout << "direction: " << direction << ' '; + std::cout << "src_tile=" << pixel_to_world_tile(parWorld, parFrom) << '\n'; if (direction == 0.0f) return parTo; @@ -69,24 +71,28 @@ namespace curry { const vec2us length = check_tiles_count(parObjectSize, direction); std::cout << "side_offset: " << side_offset << " length: " << length << '\n'; const vec2us dest_tile = pixel_to_world_tile(parWorld, parTo); - vec2us stop_at = pixel_to_world_tile(parWorld, parFrom); + const vec2f pix_side_offset = + make_pixel_side_offset(parWorld.tile_size(), side_offset, direction); + vec2us stop_at = pixel_to_world_tile(parWorld, parFrom + pix_side_offset); vec2f tile_relative_offs = parTo - world_tile_to_pixel(parWorld, dest_tile); assert(tile_relative_offs < vector_cast(parWorld.tile_size())); auto forward_callback = [=,&parWorld,&stop_at,&tile_relative_offs](vec2us tile) { - for (auto curr_pos : vwr::increasing_sequence_range(tile, tile + parObjectSize)) { + std::cout << "\t------------------- callback invoked ---------------\n"; + for (auto curr_pos : vwr::increasing_sequence_range(tile, tile + length)) { + std::cout << "\ttesting " << curr_pos << " (stop_at=" << stop_at << ", tile=" << tile << ")\n"; const bool walkable = parWorld.tile_property(parWorld.tile(curr_pos)).walkable; if (not walkable) { + std::cout << "\t*not* walkable!\n"; tile_relative_offs = vec2f(0.0f); return false; } } - stop_at = tile - side_offset; + stop_at = tile; + std::cout << "\tstop_at set to " << stop_at << " and returning from callback\n"; return true; }; - const vec2f pix_side_offset = - make_pixel_side_offset(parWorld.tile_size(), side_offset, direction); for_each_voxel_under_segment( parFrom + pix_side_offset, parTo + pix_side_offset, @@ -95,7 +101,12 @@ namespace curry { forward_callback, false ); + std::cout << "loop done\n"; + std::cout << "world_tile_to_pixel() = " << world_tile_to_pixel(parWorld, stop_at) << + " tile_relative_offs: " << tile_relative_offs << + " pix_side_offset: " << pix_side_offset << '\n'; + std::cout << "returning " << world_tile_to_pixel(parWorld, stop_at) + tile_relative_offs - pix_side_offset << '\n'; return world_tile_to_pixel(parWorld, stop_at) + tile_relative_offs - pix_side_offset; } } //namespace curry From 6861329ab94aaca07a3a06bc6aa469829ea89b7d Mon Sep 17 00:00:00 2001 From: King_DuckZ Date: Mon, 5 Mar 2018 10:34:41 +0000 Subject: [PATCH 43/45] Rename for_each_voxel to for_each_cell. --- src/gamelib/collider.cpp | 2 +- src/gamelib/grid_raytrace.cpp | 2 +- src/gamelib/grid_raytrace.hpp | 2 +- test/unit/grid_raytrace.cpp | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/gamelib/collider.cpp b/src/gamelib/collider.cpp index e58b1de..7491461 100644 --- a/src/gamelib/collider.cpp +++ b/src/gamelib/collider.cpp @@ -93,7 +93,7 @@ namespace curry { return true; }; - for_each_voxel_under_segment( + for_each_cell_under_segment( parFrom + pix_side_offset, parTo + pix_side_offset, parObjectSize, diff --git a/src/gamelib/grid_raytrace.cpp b/src/gamelib/grid_raytrace.cpp index a5b472a..0fbee0e 100644 --- a/src/gamelib/grid_raytrace.cpp +++ b/src/gamelib/grid_raytrace.cpp @@ -93,7 +93,7 @@ namespace curry { //see: //http://stackoverflow.com/questions/24679963/precise-subpixel-line-drawing-algorithm-rasterization-algorithm - void for_each_voxel_under_segment ( + void for_each_cell_under_segment ( const vec2f& parFrom, const vec2f& parTo, vec2us parObjSize, diff --git a/src/gamelib/grid_raytrace.hpp b/src/gamelib/grid_raytrace.hpp index 92809b1..c264efa 100644 --- a/src/gamelib/grid_raytrace.hpp +++ b/src/gamelib/grid_raytrace.hpp @@ -30,7 +30,7 @@ namespace curry { float segment_intersection (const vec2f& parA, const vec2f& parDirA, const vec2f& parB, const vec2f& parDirB); #endif - void for_each_voxel_under_segment ( + void for_each_cell_under_segment ( const vec2f& parFrom, const vec2f& parTo, vec2us parObjSize, diff --git a/test/unit/grid_raytrace.cpp b/test/unit/grid_raytrace.cpp index 438a738..cae8b5c 100644 --- a/test/unit/grid_raytrace.cpp +++ b/test/unit/grid_raytrace.cpp @@ -25,7 +25,7 @@ #include TEST_CASE ("Check that 2D raytracing works", "[raytracing][geometry]") { - using curry::for_each_voxel_under_segment; + using curry::for_each_cell_under_segment; using curry::vec2us; using curry::vec2f; @@ -49,7 +49,7 @@ TEST_CASE ("Check that 2D raytracing works", "[raytracing][geometry]") { { std::vector diagonal; - for_each_voxel_under_segment ( + for_each_cell_under_segment ( vec2f(0.0f, 0.0f), //from vec2f(639.0f, 639.0f), //to vec2us(1, 1), //objsize From 9da16ca82d5007811aae83119bb1c9aca10b9d55 Mon Sep 17 00:00:00 2001 From: King_DuckZ Date: Mon, 5 Mar 2018 10:35:15 +0000 Subject: [PATCH 44/45] Assert that tile calculation is correct. --- src/gamelib/worldgrid.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/gamelib/worldgrid.cpp b/src/gamelib/worldgrid.cpp index 72cce67..83f7362 100644 --- a/src/gamelib/worldgrid.cpp +++ b/src/gamelib/worldgrid.cpp @@ -135,9 +135,11 @@ namespace curry { vec2us pixel_to_world_tile (const WorldGrid& parWorld, const vec2f& parPos) { assert(position_is_on_map(parWorld, parPos)); - return vector_cast( + const auto retval = vector_cast( parPos / vector_cast(parWorld.tile_size()) ); + assert(world_tile_to_pixel(parWorld, retval) <= parPos); + return retval; } vec2f world_tile_to_pixel (const WorldGrid& parWorld, const vec2us& parTile) { From 6b3cb59bc2c157a3388481ec416ea31cae7d6da2 Mon Sep 17 00:00:00 2001 From: King_DuckZ Date: Mon, 5 Mar 2018 10:35:48 +0000 Subject: [PATCH 45/45] Fix collision right-/downwards. It still glitches when walking diagonally. --- src/gamelib/collider.cpp | 39 ++++++++++++++++++--------------------- 1 file changed, 18 insertions(+), 21 deletions(-) diff --git a/src/gamelib/collider.cpp b/src/gamelib/collider.cpp index 7491461..4cfd314 100644 --- a/src/gamelib/collider.cpp +++ b/src/gamelib/collider.cpp @@ -39,6 +39,12 @@ namespace curry { return vec2us(horz, vert); } + vec2f direction_mask (const vec2f& parDirection) { + const auto horz = (parDirection.x() == 0.0f ? 0.0f : 1.0f); + const auto vert = (parDirection.y() == 0.0f ? 0.0f : 1.0f); + return vec2f(horz, vert); + } + vec2f make_pixel_side_offset ( const vec2us& parTileSize, const vec2us& parSideOffset, @@ -60,53 +66,44 @@ namespace curry { const vec2f& parTo, const WorldGrid& parWorld ) { - std::cout << "---------------- collision test start --------------------\n"; const vec2f direction = parTo - parFrom; - std::cout << "direction: " << direction << ' '; - std::cout << "src_tile=" << pixel_to_world_tile(parWorld, parFrom) << '\n'; if (direction == 0.0f) return parTo; const vec2us side_offset = collision_borders(parObjectSize, direction); const vec2us length = check_tiles_count(parObjectSize, direction); - std::cout << "side_offset: " << side_offset << " length: " << length << '\n'; - const vec2us dest_tile = pixel_to_world_tile(parWorld, parTo); const vec2f pix_side_offset = make_pixel_side_offset(parWorld.tile_size(), side_offset, direction); - vec2us stop_at = pixel_to_world_tile(parWorld, parFrom + pix_side_offset); - vec2f tile_relative_offs = parTo - world_tile_to_pixel(parWorld, dest_tile); + const vec2f to = parTo + pix_side_offset; + const vec2f from = parFrom + pix_side_offset; + vec2us stop_at = pixel_to_world_tile(parWorld, from); + const vec2us dest_tile = pixel_to_world_tile(parWorld, to); + vec2f tile_relative_offs = to - world_tile_to_pixel(parWorld, dest_tile); assert(tile_relative_offs < vector_cast(parWorld.tile_size())); - auto forward_callback = [=,&parWorld,&stop_at,&tile_relative_offs](vec2us tile) { - std::cout << "\t------------------- callback invoked ---------------\n"; + vec2f collision_mask(0.0f); + auto forward_callback = [=,&parWorld,&stop_at,&tile_relative_offs,&collision_mask](vec2us tile) { for (auto curr_pos : vwr::increasing_sequence_range(tile, tile + length)) { - std::cout << "\ttesting " << curr_pos << " (stop_at=" << stop_at << ", tile=" << tile << ")\n"; const bool walkable = parWorld.tile_property(parWorld.tile(curr_pos)).walkable; if (not walkable) { - std::cout << "\t*not* walkable!\n"; - tile_relative_offs = vec2f(0.0f); + collision_mask = direction_mask(direction); + tile_relative_offs *= (1.0f - collision_mask); return false; } } stop_at = tile; - std::cout << "\tstop_at set to " << stop_at << " and returning from callback\n"; return true; }; for_each_cell_under_segment( - parFrom + pix_side_offset, - parTo + pix_side_offset, + from, + to, parObjectSize, parWorld, forward_callback, false ); - std::cout << "loop done\n"; - std::cout << "world_tile_to_pixel() = " << world_tile_to_pixel(parWorld, stop_at) << - " tile_relative_offs: " << tile_relative_offs << - " pix_side_offset: " << pix_side_offset << '\n'; - std::cout << "returning " << world_tile_to_pixel(parWorld, stop_at) + tile_relative_offs - pix_side_offset << '\n'; - return world_tile_to_pixel(parWorld, stop_at) + tile_relative_offs - pix_side_offset; + return world_tile_to_pixel(parWorld, stop_at) + tile_relative_offs - pix_side_offset + collision_mask * direction_mask(pix_side_offset) * 31.0f; } } //namespace curry