/* * 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 bool anyAreNull(const T* pointer) { return pointer == nullptr; } template bool anyAreNull(T pointer, Ts... pointers) { if (pointer == nullptr) { return true; } return anyAreNull(pointers...); } } // namespace ext_lib #endif