aboutsummaryrefslogtreecommitdiffstats
path: root/nihil.ucl/errc.ccm
diff options
context:
space:
mode:
Diffstat (limited to 'nihil.ucl/errc.ccm')
-rw-r--r--nihil.ucl/errc.ccm33
1 files changed, 33 insertions, 0 deletions
diff --git a/nihil.ucl/errc.ccm b/nihil.ucl/errc.ccm
new file mode 100644
index 0000000..8f0444d
--- /dev/null
+++ b/nihil.ucl/errc.ccm
@@ -0,0 +1,33 @@
+/*
+ * This source code is released into the public domain.
+ */
+
+module;
+
+#include <string>
+#include <system_error>
+
+export module nihil.ucl:errc;
+
+namespace nihil::ucl {
+
+export enum struct errc {
+ no_error = 0,
+
+ // ucl_object_new() or similar failed, e.g. out of memory
+ failed_to_create_object,
+ // Trying to create an object from a UCL object of the wrong type
+ type_mismatch,
+};
+
+export auto ucl_category() noexcept -> std::error_category &;
+export auto make_error_condition(errc ec) -> std::error_condition;
+
+} // namespace nihil::ucl
+
+namespace std {
+
+export template<>
+struct is_error_condition_enum<nihil::ucl::errc> : true_type {};
+
+} // namespace std