summaryrefslogtreecommitdiff
path: root/include/fud_status.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'include/fud_status.hpp')
-rw-r--r--include/fud_status.hpp106
1 files changed, 106 insertions, 0 deletions
diff --git a/include/fud_status.hpp b/include/fud_status.hpp
new file mode 100644
index 0000000..47b14a4
--- /dev/null
+++ b/include/fud_status.hpp
@@ -0,0 +1,106 @@
+/*
+ * libfud
+ * Copyright 2024 Dominick Allen
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef FUD_STATUS_HPP
+#define FUD_STATUS_HPP
+
+namespace fud {
+
+enum class [[nodiscard]] FudStatus
+{
+ Success = 0,
+ NullPointer,
+ StringInvalid,
+ OperationInvalid,
+ AllocFailure,
+ InvalidInput,
+ Utf8Invalid,
+ Failure,
+ NotFound,
+ Aliased,
+ Empty,
+ Partial,
+ Full,
+ RangeError,
+ VariantInvalid,
+ NotImplemented,
+ NotSupported
+};
+
+static inline const char* FudStatusToString(FudStatus status)
+{
+ switch (status) {
+ case FudStatus::Success:
+ return "Success";
+ case FudStatus::NullPointer:
+ return "NullPointer";
+ case FudStatus::StringInvalid:
+ return "StringInvalid";
+ case FudStatus::OperationInvalid:
+ return "OperationInvalid";
+ case FudStatus::AllocFailure:
+ return "AllocFailure";
+ case FudStatus::InvalidInput:
+ return "InvalidInput";
+ case FudStatus::Utf8Invalid:
+ return "Utf8Invalid";
+ case FudStatus::Failure:
+ return "Failure";
+ case FudStatus::NotFound:
+ return "NotFound";
+ case FudStatus::Aliased:
+ return "Aliased";
+ case FudStatus::Empty:
+ return "Empty";
+ case FudStatus::Partial:
+ return "Partial";
+ case FudStatus::Full:
+ return "Full";
+ case FudStatus::RangeError:
+ return "RangeError";
+ case FudStatus::VariantInvalid:
+ return "VariantInvalid";
+ case FudStatus::NotImplemented:
+ return "NotImplemented";
+ case FudStatus::NotSupported:
+ return "NotSupported";
+ default:
+ return "Unknown";
+ }
+}
+
+static inline bool anyAreNull() { return false; }
+
+template <typename T>
+bool anyAreNull(const T* pointer)
+{
+ return pointer == nullptr;
+}
+
+template <typename T, typename... Ts>
+bool anyAreNull(T pointer, Ts... pointers)
+{
+ if (pointer == nullptr)
+ {
+ return true;
+ }
+ return anyAreNull(pointers...);
+}
+
+} // namespace fud
+
+#endif