#ifndef CABINET_MAGIC_HPP #define CABINET_MAGIC_HPP #include #include namespace cab { struct magic { enum struct flags : decltype(MAGIC_NONE) { none = MAGIC_NONE, print_debug = MAGIC_DEBUG, follow_symlinks = MAGIC_SYMLINK, inspect_compressed = MAGIC_COMPRESS, inspect_devices = MAGIC_DEVICES, }; magic(flags flags); ~magic(); private: magic_t m_cookie{}; }; constexpr auto operator|(magic::flags lhs, magic::flags rhs) noexcept -> magic::flags { return static_cast(std::to_underlying(lhs) | std::to_underlying(rhs)); } } // namespace cab #endif