summaryrefslogtreecommitdiff
path: root/include/status.hpp
diff options
context:
space:
mode:
authorDominick Allen <djallen@librehumanitas.org>2024-09-22 10:19:15 -0500
committerDominick Allen <djallen@librehumanitas.org>2024-09-22 10:19:15 -0500
commitbf81e34921e3e30b05313efbcf5c9fa839cb7c05 (patch)
treeb56a343e59164bc347232669e8bb808cf3c4f4ef /include/status.hpp
Initial commit.
Diffstat (limited to 'include/status.hpp')
-rw-r--r--include/status.hpp106
1 files changed, 106 insertions, 0 deletions
diff --git a/include/status.hpp b/include/status.hpp
new file mode 100644
index 0000000..2bba4b3
--- /dev/null
+++ b/include/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 STATUS_HPP
+#define 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* ExtStatusToString(FudStatus status)
+{
+ switch (status) {
+ case FudStatus::Success:
+ return "ExtSuccess";
+ case FudStatus::NullPointer:
+ return "ExtNullPointer";
+ case FudStatus::StringInvalid:
+ return "ExtStringInvalid";
+ case FudStatus::OperationInvalid:
+ return "ExtOperationInvalid";
+ case FudStatus::AllocFailure:
+ return "ExtAllocFailure";
+ case FudStatus::InvalidInput:
+ return "ExtInvalidInput";
+ case FudStatus::Utf8Invalid:
+ return "ExtUtf8Invalid";
+ case FudStatus::Failure:
+ return "ExtFailure";
+ case FudStatus::NotFound:
+ return "ExtNotFound";
+ case FudStatus::Aliased:
+ return "ExtAliased";
+ case FudStatus::Empty:
+ return "ExtEmpty";
+ case FudStatus::Partial:
+ return "ExtPartial";
+ case FudStatus::Full:
+ return "ExtFull";
+ case FudStatus::RangeError:
+ return "ExtRangeError";
+ case FudStatus::VariantInvalid:
+ return "ExtVariantInvalid";
+ case FudStatus::NotImplemented:
+ return "ExtNotImplemented";
+ case FudStatus::NotSupported:
+ return "ExtNotSupported";
+ 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 ext_lib
+
+#endif