aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Ericson <John.Ericson@Obsidian.Systems>2023-04-02 18:57:46 -0400
committerJohn Ericson <John.Ericson@Obsidian.Systems>2023-04-02 18:57:46 -0400
commit32d72b1696c085d17c82c9f9b02f31ac32aa148f (patch)
treecc4b532b3fa0cf46e389e5e5ec5664cb53b4ee37
parent2585bcaa500f874871d8ac34a83fca638770b78f (diff)
Add more API docs to `experimental-features.hh`
-rw-r--r--src/libutil/experimental-features.hh33
1 files changed, 30 insertions, 3 deletions
diff --git a/src/libutil/experimental-features.hh b/src/libutil/experimental-features.hh
index 650fa6533..3c479dbd9 100644
--- a/src/libutil/experimental-features.hh
+++ b/src/libutil/experimental-features.hh
@@ -35,27 +35,54 @@ enum struct ExperimentalFeature
*/
using Xp = ExperimentalFeature;
+/**
+ * Parse an experimental feature (enum value) from its name. Experimental
+ * feature flag names are hyphenated and do not contain spaces.
+ */
const std::optional<ExperimentalFeature> parseExperimentalFeature(
const std::string_view & name);
+
+/**
+ * Show the name of an experimental feature. This is the opposite of
+ * parseExperimentalFeature().
+ */
std::string_view showExperimentalFeature(const ExperimentalFeature);
+
+/**
+ * Compute the documentation of all experimental features.
+ *
+ * This a markdown bulleted list where each item is first (a) the
+ * experimental feature flag name in backticks, and then (b) the
+ * description of the experimental feature.
+ */
std::string getExperimentalFeaturesList();
+/**
+ * Shorthand for `str << showExperimentalFeature(feature)`.
+ */
std::ostream & operator<<(
std::ostream & str,
const ExperimentalFeature & feature);
/**
- * Parse a set of strings to the corresponding set of experimental features,
- * ignoring (but warning for) any unkwown feature.
+ * Parse a set of strings to the corresponding set of experimental
+ * features, ignoring (but warning for) any unknown feature.
*/
std::set<ExperimentalFeature> parseFeatures(const std::set<std::string> &);
+/**
+ * An experimental feature was required for some (experimental)
+ * operation, but was not enabled.
+ */
class MissingExperimentalFeature : public Error
{
public:
+ /**
+ * The experimental feature that was required but not enabled.
+ */
ExperimentalFeature missingFeature;
- MissingExperimentalFeature(ExperimentalFeature);
+ MissingExperimentalFeature(ExperimentalFeature missingFeature);
};
/**