Libmagicxx v10.0.3
A modern C++23 wrapper for libmagic — the library that powers the Unix file command.
Loading...
Searching...
No Matches
Recognition::Magic::MagicPrivate::FlagsConverter Struct Reference

Converter between C++ flag types and libmagic flag values. More...

Public Member Functions

 FlagsConverter (const FlagsContainerT &flags_container) noexcept
 Construct from a container of flags.
 FlagsConverter (FlagsMaskT flags_mask) noexcept
 Construct from a flags bitmask.
 operator LibmagicValueT () const noexcept
 Convert to libmagic integer flags.
 operator FlagsContainerT () const
 Convert to container of individual flag values.
 operator LibmagicValueNameT () const
 Convert to comma-separated flag names string.
 operator FlagsMaskT () const
 Convert to bitmask representation.

Public Attributes

const FlagsMaskT m_flags_mask

Detailed Description

Converter between C++ flag types and libmagic flag values.

FlagsConverter provides bidirectional conversion between the various flag representations used in the library:

Supported Conversions

From To Purpose
FlagsContainerT FlagsMaskT Container to bitmask
FlagsMaskT LibmagicValueT Bitmask to libmagic int
FlagsMaskT FlagsContainerT Bitmask to container
FlagsMaskT LibmagicValueNameT Bitmask to string

Usage Examples

// Container to libmagic int (for magic_open)
LibmagicValueT libmagic_flags = FlagsConverter(flags);
// Bitmask to container (for GetFlags)
FlagsMaskT mask = ...;
FlagsContainerT container = FlagsConverter(mask);
// Bitmask to string (for ToString)
std::string names = FlagsConverter(mask);
std::vector< Flags > FlagsContainerT
Container type holding a collection of Magic::Flags.
Definition magic.hpp:401
std::bitset< 30uz > FlagsMaskT
Bitmask type representing a set of Magic::Flags used to configure the Magic instance.
Definition magic.hpp:223
int LibmagicValueT
Definition magic.cpp:1973
@ Mime
Definition magic.hpp:328
@ Compress
Definition magic.hpp:319
FlagsConverter(const FlagsContainerT &flags_container) noexcept
Construct from a container of flags.
Definition magic.cpp:2113
See also
Magic::Flags
Magic::FlagsContainerT
Magic::FlagsMaskT

Constructor & Destructor Documentation

◆ FlagsConverter() [1/2]

Recognition::Magic::MagicPrivate::FlagsConverter::FlagsConverter ( const FlagsContainerT & flags_container)
inlineexplicitnoexcept

Construct from a container of flags.

Folds the container using bitwise OR to create the bitmask.

Parameters
[in]flags_containerContainer of individual Flags values.

◆ FlagsConverter() [2/2]

Recognition::Magic::MagicPrivate::FlagsConverter::FlagsConverter ( FlagsMaskT flags_mask)
inlineexplicitnoexcept

Construct from a flags bitmask.

Parameters
[in]flags_maskPre-computed flags bitmask.

Member Function Documentation

◆ operator FlagsContainerT()

Recognition::Magic::MagicPrivate::FlagsConverter::operator FlagsContainerT ( ) const
inline

Convert to container of individual flag values.

Extracts each set bit in the bitmask and converts to the corresponding Flags enum value.

Returns
Container of active Flags values.

◆ operator FlagsMaskT()

Recognition::Magic::MagicPrivate::FlagsConverter::operator FlagsMaskT ( ) const
inline

Convert to bitmask representation.

Returns
The underlying FlagsMaskT bitmask.

◆ operator LibmagicValueNameT()

Recognition::Magic::MagicPrivate::FlagsConverter::operator LibmagicValueNameT ( ) const
inline

Convert to comma-separated flag names string.

Creates a human-readable string of flag names for logging and debugging purposes.

Returns
Comma-separated flag names (e.g., "Mime,Compress").

◆ operator LibmagicValueT()

Recognition::Magic::MagicPrivate::FlagsConverter::operator LibmagicValueT ( ) const
inlinenoexcept

Convert to libmagic integer flags.

Iterates through the bitmask and ORs together the corresponding libmagic constants for use with magic_open() and magic_setflags().

Returns
Libmagic-compatible integer flags value.

Member Data Documentation

◆ m_flags_mask

const FlagsMaskT Recognition::Magic::MagicPrivate::FlagsConverter::m_flags_mask

The underlying flags bitmask


The documentation for this struct was generated from the following file: