Ponca  97e1aa5c56f0b8ca113a6b95d36cc3b5cde35a4e
Point Cloud Analysis library
Loading...
Searching...
No Matches
concepts.h
1#pragma once
2
3#include "../concepts.h"
4
5#include <type_traits>
6
7namespace Ponca
8{
9 template <typename T>
10 concept ProvidesScaleDerivative = (T::isScaleDer() && T::derDimension() > 0);
11
12 template <typename T>
13 concept ProvidesSpaceDerivative = (T::isSpaceDer() && T::derDimension() > 0);
14
15 template <typename T>
17
18 template <typename K>
20
21 template <typename K>
33 template <typename T>
34 concept ProvidesComputeState = ProvidesCommonTypes<T> && requires(T t, const T ct) {
35 { ct.isStable() } -> std::same_as<bool>;
36 { ct.isReady() } -> std::same_as<bool>;
37 { ct.getCurrentState() } -> std::same_as<FIT_RESULT>;
38 };
42 template <typename T>
43 concept ProvidesBasketUnitBase = ProvidesCommonTypes<T> && ProvidesComputeState<T> && requires(T t, const T ct) {
44 typename T::NeighborFilter;
45 t.setNeighborFilter(typename T::NeighborFilter{});
46 { ct.getNeighborFilter() } -> std::convertible_to<typename T::NeighborFilter>;
47
48 { ct.getWeightSum() } -> std::same_as<typename T::Scalar>;
49 { ct.getNumNeighbors() } -> std::integral;
50 };
51
55 template <typename T>
56 concept ProvidesBasketDiffUnitBase = ProvidesBasketUnitBase<T> && requires(T t, const T ct) {
57 { ct.isScaleDer() } -> std::same_as<bool>;
58 { ct.isSpaceDer() } -> std::same_as<bool>;
59 { ct.derDimension() } -> std::integral;
60 };
61
62 template <typename T>
64} // namespace Ponca
This concept ensures that the default types and accessors in a BasketDiff are well-formed.
Definition concepts.h:56
This concept ensures that the default types and accessors in a Basket are well-formed.
Definition concepts.h:43
This concept if currently only used a base concept for ProvidesBasketUnitBase.
Definition concepts.h:34
This Source Code Form is subject to the terms of the Mozilla Public License, v.
Definition concepts.h:11