Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release/1.5.0 #41

Open
wants to merge 83 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
83 commits
Select commit Hold shift + click to select a range
e49f40f
Merge pull request #1 from improbable-eng/master
tzaeschke Mar 24, 2021
5bc827b
Merge branch 'improbable-eng:master' into master
tzaeschke Jan 14, 2022
2ae1314
Merge branch 'improbable-eng:master' into master
tzaeschke Jan 26, 2022
4b540d4
Merge branch 'improbable-eng:master' into master
tzaeschke Feb 6, 2022
df29cb6
Improve build experience
tzaeschke Feb 16, 2022
4f6bfdd
Update README.md
tzaeschke Feb 16, 2022
291d960
Fix for each postlen / #2 (#3)
tzaeschke Feb 22, 2022
18cbb71
Fix/issue 4 fix key copy (#6)
tzaeschke Mar 2, 2022
ced5e27
Avoid find on remove node (#7)
tzaeschke Mar 2, 2022
45f2bf5
Fix/issue 9 entry union (#10)
tzaeschke Mar 9, 2022
5d76f97
Move postfix tfrom Node to Entry (#12)
tzaeschke Mar 9, 2022
80a5ceb
issue 11 cleanup (#13)
tzaeschke Mar 9, 2022
671f603
Update README.md
tzaeschke Mar 9, 2022
7a6b1d8
Fix/issue 14 b tree (#15)
tzaeschke Apr 1, 2022
039da73
Avoid std::uint16_t (#17)
tzaeschke Apr 1, 2022
8732b56
moveable PhTree (#20)
tzaeschke Apr 4, 2022
1078e35
Fix/19 clean up iterators (#23)
tzaeschke Apr 7, 2022
582fccf
Initial (#25)
tzaeschke Apr 8, 2022
899716d
FilterSphere issue (#28)
tzaeschke Apr 8, 2022
fb80406
Release v1.2.0 (#32)
tzaeschke Apr 14, 2022
277ad87
filters for multimaps (#30)
tzaeschke Apr 15, 2022
6eccd4f
Filters (#34)
tzaeschke Apr 18, 2022
0dc4465
Filters (#35)
tzaeschke Apr 18, 2022
25d2e1a
Add filters for box keys (#37)
tzaeschke Apr 18, 2022
5009b5e
Issue 38: remove std::optional (#41)
tzaeschke May 18, 2022
d6a58d1
Add try_emplace() (#42)
tzaeschke May 18, 2022
c2e3d8b
Cleaned up erase() (#47)
tzaeschke May 23, 2022
9d622c1
Fix slight problem with value initialization in entry.h (#49)
tzaeschke Jun 9, 2022
6b5759e
Issue 44: alternative multimap bucket (#48)
tzaeschke Jun 9, 2022
cb5dc1e
Fix/43 relocate (#45)
tzaeschke Jun 21, 2022
7992902
Cleanup unit tests (#54)
tzaeschke Jun 23, 2022
09583a6
issue 56 - support move-only/copy-only values (#57)
tzaeschke Jul 1, 2022
71c4054
Iterator cleanup (#58)
tzaeschke Jul 1, 2022
5569986
improved multimap consistency check (#59)
tzaeschke Jul 1, 2022
8ca44f0
Initial
tzaeschke Jul 24, 2022
6c7f74a
Undo erroneous commit
tzaeschke Jul 24, 2022
83db67c
Fix/60 MSVC 2019 issues (#64)
tzaeschke Aug 3, 2022
a25c7e0
Update phtree_test_issues.cc
tzaeschke Aug 3, 2022
629f5cc
Update README converter example
tzaeschke Aug 5, 2022
8adf018
Issue 51 relocate multimap v2 (#52)
tzaeschke Aug 5, 2022
0111120
separate folders for tests/benchmarks (#67)
tzaeschke Aug 5, 2022
789b60c
Fixed result counting in query_mm_d_benchmark.cc
tzaeschke Aug 16, 2022
91b99f4
Add flag to relocate() (#69)
tzaeschke Aug 16, 2022
0935cfe
cmake full build and VS 19 (#71)
tzaeschke Aug 23, 2022
5d1da3b
Initial
tzaeschke Aug 25, 2022
3c6689d
Initial
tzaeschke Aug 25, 2022
d89e32c
Fixed numerous MSVC warnings (#76)
tzaeschke Aug 28, 2022
a273622
v1.3.0 (#77)
tzaeschke Aug 28, 2022
2090229
Update README.md
tzaeschke Aug 28, 2022
2c9174f
#53 improve build scripts (#79)
tzaeschke Aug 31, 2022
163ca96
fix codecov = 0% (#81)
tzaeschke Aug 31, 2022
ebb0b45
Update README.md
tzaeschke Aug 31, 2022
bc15eb3
Update README.md
tzaeschke Sep 1, 2022
3d9f3b7
Update BUILD
tzaeschke Sep 2, 2022
9bbcd31
enable cmake import (#82)
tzaeschke Sep 8, 2022
c214f51
cmake find_package() (#84)
tzaeschke Sep 8, 2022
4b19a34
Release 1.4.0 (#85)
tzaeschke Sep 9, 2022
a136a5a
Removed .bazelversion (#90)
tzaeschke Sep 24, 2022
695b52f
Update TODO.txt
tzaeschke Sep 24, 2022
f7e5596
Benchmarks reformat (#91)
tzaeschke Sep 25, 2022
3fdd42b
Update README.md
tzaeschke Oct 5, 2022
3fbe2d5
Improve window query by using point query (#92)
tzaeschke Nov 3, 2022
ebf683e
minmask/maxmask (#95)
tzaeschke Nov 22, 2022
9f8c0b9
B+tree (#94)
tzaeschke Dec 5, 2022
257f8dc
Embed Node into Entry by flatteningcontainers (#96)
tzaeschke Dec 7, 2022
6706463
cleanup handle_collision() and key comparison functions (#97)
tzaeschke Dec 9, 2022
5ce28bf
Simplify relocate() (#98)
tzaeschke Dec 12, 2022
420359e
Cleanup of previous commit "simplify relocate" (#99)
tzaeschke Dec 13, 2022
a32e820
clean up (#101)
tzaeschke Dec 13, 2022
1a00ad8
Simplify relocate() cleanup part 3 (#104)
tzaeschke Dec 16, 2022
dd59aaa
Fix bmi2 compiler flag (#105)
tzaeschke Dec 17, 2022
f0ccc3d
Bazel 6.0 (#110)
tzaeschke Dec 19, 2022
59e2ab2
#107 clean up array map (#108)
tzaeschke Dec 20, 2022
998f7c0
Fuzzer (#114)
tzaeschke Jan 16, 2023
4618230
multimap relocate() fails asan (#116)
tzaeschke Jan 17, 2023
4ce863b
initial (#117)
tzaeschke Feb 2, 2023
ee8baee
Update README.md
tzaeschke Feb 2, 2023
c754096
Update README.md
tzaeschke Feb 2, 2023
56e0f2a
Update README.md
tzaeschke Feb 2, 2023
d3d98f6
Fix bptree copy cstr/assignment (#119)
tzaeschke Feb 9, 2023
20917cc
Fix msvc warnings (#121)
tzaeschke Feb 9, 2023
e72086d
initial
tzaeschke Feb 9, 2023
51aee62
initial
tzaeschke Feb 9, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
filters for multimaps (#30)
  • Loading branch information
tzaeschke authored Apr 15, 2022
commit 277ad87fb08b6f19e30f292be24340b5ffc1345d
3 changes: 2 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.

## [Unreleased]
### Changed
- Nothing yet
- **API BREAKING CHANGE**: Allow filtering on buckets in multimaps. Multimap filters have different functions
and function signatures than normal `PhTree` filters. [#26](https://github.com/tzaeschke/phtree-cpp/issues/26)

## [1.2.0] - 2022-04-14
### Changed
Expand Down
37 changes: 36 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,8 @@ More information about PH-Trees (including a Java implementation) is available [

* [Filters](#filters)

* [Filters for MultiMaps](#filters-for-multimaps)

* [Distance Functions](#distance-functions)

[Converters](#converters)
Expand Down Expand Up @@ -176,7 +178,7 @@ for (auto it = tree.begin_knn_query(5, {1, 1, 1}); it != tree.end(); ++it) {
}
```

<a id="Filters"></a>
<a id="filters"></a>

##### Filters

Expand Down Expand Up @@ -205,6 +207,39 @@ for (auto it = tree.begin_query({1, 1, 1}, {3, 3, 3}, FilterByValueId<3, T>()));
...
}
```
Note: The filter example works only for the 'map' version of the PH-Tree, such as `PhTree`, `PhTreeD`, ... .
Filters for the `PhTreeMultiMap` are discussed in the next section.

<a id="filters-for-multimaps"></a>

#### Filters for MultiMaps

The `PhTreeMultiMap` requires a different type of filter. In order to function as a multimap, it uses a collections
("buckets") as entries for each occupied coordinate. The buckets allow it to store several values per coordinate.
When using a filter, the PH-Tree will check `IsEntryValid` for every *bucket* (this is different from version 1.x.x
where it called `IsEntryValid` for every entry in a bucket but never for the bucket itself).
Since 2.0.0 there is a new function required in every multimap filter: `IsBucketEntryValid`. It is called once for
every entry in a bucket if the bucket passed `IsEntryValid`. An example of a geometric filter can be found
in `phtree/common/filter.h` in `FilterMultiMapAABB`.

```C++
template <dimension_t DIM, typename T>
struct FilterMultiMapByValueId {
template <typename BucketT>
[[nodiscard]] constexpr bool IsEntryValid(const PhPoint<DIM>& key, const BucketT& bucket) const {
// Arbitrary example: Only allow keys/buckets with a certain property, eg. keys that lie within a given sphere.
return check_some_geometric_propert_of_key(key);
}
[[nodiscard]] constexpr bool IsBucketEntryValid(const PhPoint<DIM>& key, const T& value) const {
// Arbitrary example: Only allow values with even values of id_
return value.id_ % 2 == 0;
}
[[nodiscard]] constexpr bool IsNodeValid(const PhPoint<DIM>& prefix, int bits_to_ignore) const {
// Allow all nodes
return true;
}
};
```

<a id="distance-functions"></a>

Expand Down
15 changes: 15 additions & 0 deletions phtree/benchmark/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -230,6 +230,21 @@ cc_binary(
],
)

cc_binary(
name = "query_mm_d_filter_benchmark",
testonly = True,
srcs = [
"query_mm_d_filter_benchmark.cc",
],
linkstatic = True,
deps = [
"//phtree",
"//phtree/benchmark",
"@gbenchmark//:benchmark",
"@spdlog",
],
)

cc_binary(
name = "query_mm_box_d_benchmark",
testonly = True,
Expand Down
Loading