Skip to content

Commit 97e0d78

Browse files
committed
Outline example cpp impl/python wrapper
1 parent eb8de80 commit 97e0d78

22 files changed

+613
-227
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
// cppimport
2+
#include <pybind11/pybind11.h>
3+
4+
#include <hstrat/stratum_retention_strategy/stratum_retention_algorithms/fixed_resolution_algo/enact/GenDropRanksFtor.hpp>
5+
#include <hstrat/stratum_retention_strategy/stratum_retention_algorithms/fixed_resolution_algo/PolicySpecDynamic.hpp>
6+
7+
namespace py = pybind11;
8+
namespace algo = hstrat::fixed_resolution_algo;
9+
10+
using instance_t = algo::GenDropRanksFtor<algo::PolicySpecDynamic>;
11+
12+
PYBIND11_MODULE(GenDropRanksNative, m) {
13+
py::class_<instance_t>>(
14+
m,
15+
"GenDropRanksNative"
16+
)
17+
.def(py::init<const algo::PolicySpecDynamic&>())
18+
.def(
19+
"__call__",
20+
[](instance_t& self, const algo::PolicySpecDynamic& spec){
21+
return this(spec);
22+
}
23+
);
24+
}
25+
26+
/*
27+
<%
28+
cfg['extra_compile_args'] = ['-std=c++20']
29+
cfg['include_dirs'] = ['../../../../../../include']
30+
setup_pybind11(cfg)
31+
%>
32+
*/
Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
1+
import cppimport.import_hook
2+
13
from ._FromPredKeepRank import FromPredKeepRank
24
from ._GenDropRanks import GenDropRanks
5+
from ._GenDropRanksNative import GenDropRanksNative
36

4-
impls = (FromPredKeepRank, GenDropRanks)
7+
impls = (FromPredKeepRank, GenDropRanks, GenDropRanksNative)
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
#pragma once
2+
#ifndef HSTRAT_STRATUM_RETENTION_STRATEGY_STRATUM_RETENTION_ALGORITHMS_FIXED_RESOLUTION_ALGO_POLICY_HPP_INCLUDE
3+
#define HSTRAT_STRATUM_RETENTION_STRATEGY_STRATUM_RETENTION_ALGORITHMS_FIXED_RESOLUTION_ALGO_POLICY_HPP_INCLUDE
4+
5+
#include <utility>
6+
7+
#include "PolicySpecDynamic.hpp"
8+
9+
#include "enact/GenDropRanksFtor.hpp"
10+
#include "invar/CalcMrcaUncertaintyAbsUpperBoundAtPessimalRankFtor.hpp"
11+
#include "invar/CalcMrcaUncertaintyAbsUpperBoundFtor.hpp"
12+
#include "invar/CalcMrcaUncertaintyAbsUpperBoundPessimalRankFtor.hpp"
13+
#include "invar/CalcMrcaUncertaintyRelUpperBoundAtPessimalRankFtor.hpp"
14+
#include "invar/CalcMrcaUncertaintyRelUpperBoundPessimalRankFtor.hpp"
15+
#include "invar/CalcNumStrataRetainedUpperBoundFtor.hpp"
16+
#include "scry/CalcMrcaUncertaintyAbsExactFtor.hpp"
17+
#include "scry/CalcMrcaUncertaintyRelExactFtor.hpp"
18+
#include "scry/CalcNumStrataRetainedExactFtor.hpp"
19+
#include "scry/CalcRankAtColumnIndexFtor.hpp"
20+
#include "scry/IterRetainedRanksFtor.hpp"
21+
22+
namespace hstrat {
23+
namespace fixed_resolution_algo {
24+
25+
template <typename POLICY_SPEC> class Policy {
26+
27+
[[no_unique_address]] POLICY_SPEC spec;
28+
29+
public:
30+
// enactment
31+
[[no_unique_address]] GenDropRanksFtor GenDropRanks;
32+
33+
// invariants
34+
[[no_unique_address]] CalcMrcaUncertaintyAbsUpperBoundFtor<POLICY_SPEC>
35+
CalcMrcaUncertaintyAbsUpperBound;
36+
[[no_unique_address]] CalcMrcaUncertaintyAbsUpperBoundAtPessimalRankFtor<
37+
POLICY_SPEC>
38+
CalcMrcaUncertaintyAbsUpperBoundAtPessimalRank;
39+
[[no_unique_address]] CalcMrcaUncertaintyAbsUpperBoundPessimalRankFtor<
40+
POLICY_SPEC>
41+
CalcMrcaUncertaintyAbsUpperBoundPessimalRank;
42+
[[no_unique_address]] CalcMrcaUncertaintyRelUpperBoundAtPessimalRankFtor<
43+
POLICY_SPEC>
44+
CalcMrcaUncertaintyRelUpperBoundAtPessimalRank;
45+
[[no_unique_address]] CalcMrcaUncertaintyRelUpperBoundPessimalRankFtor<
46+
POLICY_SPEC>
47+
CalcMrcaUncertaintyRelUpperBoundPessimalRank;
48+
[[no_unique_address]] CalcNumStrataRetainedUpperBoundFtor<POLICY_SPEC>
49+
CalcNumStrataRetainedUpperBound;
50+
51+
// scrying
52+
[[no_unique_address]] CalcMrcaUncertaintyAbsExactFtor<POLICY_SPEC>
53+
CalcMrcaUncertaintyAbsExact;
54+
[[no_unique_address]] CalcMrcaUncertaintyRelExactFtor<POLICY_SPEC>
55+
CalcMrcaUncertaintyRelExact;
56+
[[no_unique_address]] CalcNumStrataRetainedExactFtor<POLICY_SPEC>
57+
CalcNumStrataRetainedExact;
58+
[[no_unique_address]] CalcRankAtColumnIndexFtor<POLICY_SPEC>
59+
CalcRankAtColumnIndex;
60+
[[no_unique_address]] IterRetainedRanksFtor<POLICY_SPEC> IterRetainedRanks;
61+
62+
template <typename... Args>
63+
Policy(Args &&... args)
64+
: spec(std::forward<Args>(args)...), GenDropRanks(spec),
65+
CalcMrcaUncertaintyAbsUpperBound(spec),
66+
CalcMrcaUncertaintyAbsUpperBoundAtPessimalRank(spec),
67+
CalcMrcaUncertaintyAbsUpperBoundPessimalRank(spec),
68+
CalcMrcaUncertaintyRelUpperBoundAtPessimalRank(spec),
69+
CalcMrcaUncertaintyRelUpperBoundPessimalRank(spec),
70+
CalcNumStrataRetainedUpperBound(spec),
71+
CalcMrcaUncertaintyAbsExact(spec), CalcMrcaUncertaintyRelExact(spec),
72+
CalcNumStrataRetainedExact(spec), CalcRankAtColumnIndex(spec),
73+
IterRetainedRanks(spec) {}
74+
};
75+
76+
} // namespace fixed_resolution_algo
77+
} // namespace hstrat
78+
79+
using PolicyDynamic = Policy<hstrat::fixed_resolution_algo::PolicySpecDynamic>;
80+
81+
#endif // #ifndef HSTRAT_STRATUM_RETENTION_STRATEGY_STRATUM_RETENTION_ALGORITHMS_FIXED_RESOLUTION_ALGO_POLICY_HPP_INCLUDE
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
#pragma once
2+
#ifndef HSTRAT_STRATUM_RETENTION_STRATEGY_STRATUM_RETENTION_ALGORITHMS_FIXED_RESOLUTION_ALGO_POLICYSPECCONSTEVAL_HPP_INCLUDE
3+
#define HSTRAT_STRATUM_RETENTION_STRATEGY_STRATUM_RETENTION_ALGORITHMS_FIXED_RESOLUTION_ALGO_POLICYSPECCONSTEVAL_HPP_INCLUDE
4+
5+
#include <format>
6+
#include <string>
7+
8+
#include "get_policy_name.hpp"
9+
#include "get_policy_title.hpp"
10+
11+
namespace hstrat {
12+
namespace fixed_resolution_algo {
13+
14+
template<int FIXED_RESOLUTION>
15+
struct PolicySpecConsteval {
16+
17+
static consteval int GetFixedResolution() { return FIXED_RESOLUTION; }
18+
19+
static consteval std::string Repr() {
20+
return std::format(
21+
"{}(fixed_resolution={})",
22+
GetPolicyName(),
23+
GetFixedResolution()
24+
);
25+
}
26+
27+
static consteval std::string Str() {
28+
return std::format(
29+
"{} (resolution: {})",
30+
GetPolicyTitle(),
31+
GetFixedResolution()
32+
);
33+
}
34+
35+
static consteval std::string GetAlgoName() {
36+
return hstrat::fixed_resolution_algo::get_algo_name();
37+
}
38+
39+
static consteval std::string GetAlgoTitle() {
40+
return hstrat::fixed_resolution_algo::get_algo_title();
41+
}
42+
43+
};
44+
45+
46+
};
47+
48+
} // namespace fixed_resolution_algo
49+
} // namespace hstrat
50+
51+
#endif // #ifndef HSTRAT_STRATUM_RETENTION_STRATEGY_STRATUM_RETENTION_ALGORITHMS_FIXED_RESOLUTION_ALGO_POLICYSPECCONSTEVAL_HPP_INCLUDE
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
#pragma once
2+
#ifndef HSTRAT_STRATUM_RETENTION_STRATEGY_STRATUM_RETENTION_ALGORITHMS_FIXED_RESOLUTION_ALGO_POLICYSPECDYNAMIC_HPP_INCLUDE
3+
#define HSTRAT_STRATUM_RETENTION_STRATEGY_STRATUM_RETENTION_ALGORITHMS_FIXED_RESOLUTION_ALGO_POLICYSPECDYNAMIC_HPP_INCLUDE
4+
5+
#include <format>
6+
#include <string>
7+
8+
namespace hstrat {
9+
namespace fixed_resolution_algo {
10+
11+
class PolicySpecDynamic {
12+
13+
int fixed_resolution;
14+
15+
public:
16+
17+
PolicySpecDynamic(
18+
const int fixed_resolution
19+
) : fixed_resolution(fixed_resolution)
20+
{ }
21+
22+
int GetFixedResolution() const { return fixed_resolution; }
23+
24+
std::string Repr() const {
25+
return std::format(
26+
"{}(fixed_resolution={})",
27+
GetPolicyName(),
28+
GetFixedResolution()
29+
);
30+
}
31+
32+
std::string Str() const {
33+
return std::format(
34+
"{} (resolution: {})",
35+
GetPolicyTitle(),
36+
GetFixedResolution()
37+
);
38+
}
39+
40+
static consteval std::string GetAlgoName() {
41+
return hstrat::fixed_resolution_algo::get_algo_name();
42+
}
43+
44+
static consteval std::string GetAlgoTitle() {
45+
return hstrat::fixed_resolution_algo::get_algo_title();
46+
}
47+
48+
};
49+
50+
} // namespace fixed_resolution_algo
51+
} // namespace hstrat
52+
53+
#endif // #ifndef HSTRAT_STRATUM_RETENTION_STRATEGY_STRATUM_RETENTION_ALGORITHMS_FIXED_RESOLUTION_ALGO_POLICYSPECDYNAMIC_HPP_INCLUDE
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
#pragma once
2+
#ifndef HSTRAT_STRATUM_RETENTION_STRATEGY_STRATUM_RETENTION_ALGORITHMS_FIXED_RESOLUTION_ALGO_ENACT_GENDROPRANKSFTOR_HPP_INCLUDE
3+
#define HSTRAT_STRATUM_RETENTION_STRATEGY_STRATUM_RETENTION_ALGORITHMS_FIXED_RESOLUTION_ALGO_ENACT_GENDROPRANKSFTOR_HPP_INCLUDE
4+
5+
namespace hstrat {
6+
namespace fixed_resolution_algo {
7+
8+
template<typename POLICY_SPEC>
9+
struct X {
10+
11+
X(const POLICY_SPEC& spec) {}
12+
13+
template<typename POLICY>
14+
void operator()(const POLICY& policy) const {
15+
16+
}
17+
18+
};
19+
20+
} // namespace fixed_resolution_algo
21+
} // namespace hstrat
22+
23+
#endif // #ifndef HSTRAT_STRATUM_RETENTION_STRATEGY_STRATUM_RETENTION_ALGORITHMS_FIXED_RESOLUTION_ALGO_ENACT_GENDROPRANKSFTOR_HPP_INCLUDE
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
#pragma once
2+
#ifndef HSTRAT_STRATUM_RETENTION_STRATEGY_STRATUM_RETENTION_ALGORITHMS_FIXED_RESOLUTION_ALGO_GET_ALGO_NAME_HPP_INCLUDE
3+
#define HSTRAT_STRATUM_RETENTION_STRATEGY_STRATUM_RETENTION_ALGORITHMS_FIXED_RESOLUTION_ALGO_GET_ALGO_NAME_HPP_INCLUDE
4+
5+
#include <string>
6+
7+
namespace hstrat {
8+
namespace fixed_resolution_algo {
9+
10+
constexpr std::string get_algo_name() {
11+
return "fixed_resolution_algo";
12+
}
13+
14+
} // namespace fixed_resolution_algo
15+
} // namespace hstrat
16+
17+
#endif // #ifndef HSTRAT_STRATUM_RETENTION_STRATEGY_STRATUM_RETENTION_ALGORITHMS_FIXED_RESOLUTION_ALGO_GET_ALGO_NAME_HPP_INCLUDE
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
#pragma once
2+
#ifndef HSTRAT_STRATUM_RETENTION_STRATEGY_STRATUM_RETENTION_ALGORITHMS_FIXED_RESOLUTION_ALGO_GET_ALGO_TITLE_HPP_INCLUDE
3+
#define HSTRAT_STRATUM_RETENTION_STRATEGY_STRATUM_RETENTION_ALGORITHMS_FIXED_RESOLUTION_ALGO_GET_ALGO_TITLE_HPP_INCLUDE
4+
5+
namespace hstrat {
6+
namespace fixed_resolution_algo {
7+
8+
constexpr std::string get_algo_title() {
9+
return "Fixed Resolution Stratum Retention Policy";
10+
}
11+
12+
} // namespace fixed_resolution_algo
13+
} // namespace hstrat
14+
15+
#endif // #ifndef HSTRAT_STRATUM_RETENTION_STRATEGY_STRATUM_RETENTION_ALGORITHMS_FIXED_RESOLUTION_ALGO_GET_ALGO_TITLE_HPP_INCLUDE
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
#pragma once
2+
#ifndef HSTRAT_STRATUM_RETENTION_STRATEGY_STRATUM_RETENTION_ALGORITHMS_FIXED_RESOLUTION_ALGO_INVAR_CALCMRCAUNCERTAINTYABSUPPERBOUNDATPESSIMALRANKFTOR_HPP_INCLUDE
3+
#define HSTRAT_STRATUM_RETENTION_STRATEGY_STRATUM_RETENTION_ALGORITHMS_FIXED_RESOLUTION_ALGO_INVAR_CALCMRCAUNCERTAINTYABSUPPERBOUNDATPESSIMALRANKFTOR_HPP_INCLUDE
4+
5+
namespace hstrat {
6+
namespace fixed_resolution_algo {
7+
8+
template<typename POLICY_SPEC>
9+
struct X {
10+
11+
X(const POLICY_SPEC& spec) {}
12+
13+
template<typename POLICY>
14+
void operator()(const POLICY& policy) const {
15+
16+
}
17+
18+
};
19+
20+
} // namespace fixed_resolution_algo
21+
} // namespace hstrat
22+
23+
#endif // #ifndef HSTRAT_STRATUM_RETENTION_STRATEGY_STRATUM_RETENTION_ALGORITHMS_FIXED_RESOLUTION_ALGO_INVAR_CALCMRCAUNCERTAINTYABSUPPERBOUNDATPESSIMALRANKFTOR_HPP_INCLUDE
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
#pragma once
2+
#ifndef HSTRAT_STRATUM_RETENTION_STRATEGY_STRATUM_RETENTION_ALGORITHMS_FIXED_RESOLUTION_ALGO_INVAR_CALCMRCAUNCERTAINTYABSUPPERBOUNDFTOR_HPP_INCLUDE
3+
#define HSTRAT_STRATUM_RETENTION_STRATEGY_STRATUM_RETENTION_ALGORITHMS_FIXED_RESOLUTION_ALGO_INVAR_CALCMRCAUNCERTAINTYABSUPPERBOUNDFTOR_HPP_INCLUDE
4+
5+
namespace hstrat {
6+
namespace fixed_resolution_algo {
7+
8+
template<typename POLICY_SPEC>
9+
struct X {
10+
11+
X(const POLICY_SPEC& spec) {}
12+
13+
template<typename POLICY>
14+
void operator()(const POLICY& policy) const {
15+
16+
}
17+
18+
};
19+
20+
} // namespace fixed_resolution_algo
21+
} // namespace hstrat
22+
23+
#endif // #ifndef HSTRAT_STRATUM_RETENTION_STRATEGY_STRATUM_RETENTION_ALGORITHMS_FIXED_RESOLUTION_ALGO_INVAR_CALCMRCAUNCERTAINTYABSUPPERBOUNDFTOR_HPP_INCLUDE

0 commit comments

Comments
 (0)