MostlyHarmless 0.0.1
 
Loading...
Searching...
No Matches
mostlyharmless_Parameters.h
Go to the documentation of this file.
1#ifndef MOSTLYHARMLESS_PARAMETERS_H
2#define MOSTLYHARMLESS_PARAMETERS_H
3#include <clap/ext/params.h>
4#include <mostly_harmless/utils/mostlyharmless_Hash.h>
6#include <functional>
7namespace mostly_harmless {
8
15 struct ParameterID {
20 explicit ParameterID(std::string_view internalName) : pid(mostly_harmless::utils::hash<std::uint32_t>(internalName)) {
21 }
22
27 [[nodiscard]] std::string toString() const noexcept {
28 return std::to_string(pid);
29 }
30
34 const std::uint32_t pid;
35 };
36
40 template <marvin::FloatType SampleType>
41 struct Parameter final {
51 Parameter(ParameterID parameterId_, std::string_view name_, std::string_view category_, marvin::utils::Range<SampleType> range_, SampleType defaultValue_, std::uint32_t flags_);
52
62 Parameter(std::uint32_t pid_, std::string_view name_, std::string_view category_, marvin::utils::Range<SampleType> range_, SampleType defaultValue_, std::uint32_t flags_);
63
67 std::uint32_t pid;
68
72 std::string name;
73
77 std::string category;
78
83
87 SampleType defaultValue;
88
92 std::uint32_t flags;
93
97 std::function<std::string(const Parameter&, double)> valueToString{ nullptr };
98
102 SampleType value{ defaultValue };
103 };
104} // namespace mostly_harmless
105#endif
Contains general purpose utility classes & functions.
Definition mostlyharmless_TaskThread.h:12
The top-level namespace, contains all things plugin-related.
Definition mostlyharmless_BusConfig.h:3
POD type that represents a range of values, for classes requiring a min and a max.
Definition marvin_Range.h:21
Convenience class for generating a parameter id.
Definition mostlyharmless_Parameters.h:15
ParameterID(std::string_view internalName)
Definition mostlyharmless_Parameters.h:20
const std::uint32_t pid
Definition mostlyharmless_Parameters.h:34
std::string toString() const noexcept
Definition mostlyharmless_Parameters.h:27
std::uint32_t flags
Definition mostlyharmless_Parameters.h:92
std::string name
Definition mostlyharmless_Parameters.h:72
std::function< std::string(const Parameter &, double)> valueToString
Definition mostlyharmless_Parameters.h:97
std::string category
Definition mostlyharmless_Parameters.h:77
SampleType defaultValue
Definition mostlyharmless_Parameters.h:87
Parameter(ParameterID parameterId_, std::string_view name_, std::string_view category_, marvin::utils::Range< SampleType > range_, SampleType defaultValue_, std::uint32_t flags_)
std::uint32_t pid
Definition mostlyharmless_Parameters.h:67
marvin::utils::Range< SampleType > range
Definition mostlyharmless_Parameters.h:82
Parameter(std::uint32_t pid_, std::string_view name_, std::string_view category_, marvin::utils::Range< SampleType > range_, SampleType defaultValue_, std::uint32_t flags_)
SampleType value
Definition mostlyharmless_Parameters.h:102