/* * 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 LIBFUD_HPP #define LIBFUD_HPP #include "fud_array.hpp" #include "fud_allocator.hpp" #include "fud_result.hpp" #include "fud_status.hpp" #include "fud_string.hpp" #include namespace fud { constexpr size_t GIT_REV_CHARS = 13; struct FUD { uint8_t major; uint8_t minor; uint8_t patch; Array revision; }; /** \brief Get the version of FUD including git revision. */ FUD fud(); /** * \brief Get an environmental variable if it exists. * * \param[in] name The name of the variable to look up. * \param[in] allocator The allocator used by the string returned. * * \retstmt The value of the string bound to the variable if it exists. * \retcode FudStatus::NullPointer if name is a null pointer. * \retcode FudStatus::NotFound if no binding for the variable exists. */ Result getEnv(const char* name, Allocator* allocator= &globalFudAllocator); template concept CStringRepr = requires(T strObj) { { strObj.c_str() } -> std::convertible_to; }; template Result getEnv(const T& name, Allocator* allocator = &globalFudAllocator) { return getEnv(name.c_str(), allocator); } } // namespace fud #endif