libcamera: file: Use Flags<> class for open flags
Use the newly introduced Flags<> class to store a bitfield of File::OpenMode in a type-safe way. The existing File::OpenMode enum is renamed to File::OpenModeFlag to free the File::OpenMode for the Flags<> type alias. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>
This commit is contained in:
parent
49862904f6
commit
91d06ae2fc
2 changed files with 10 additions and 3 deletions
|
@ -30,13 +30,15 @@ public:
|
|||
|
||||
using MapFlags = Flags<MapFlag>;
|
||||
|
||||
enum OpenMode {
|
||||
enum OpenModeFlag {
|
||||
NotOpen = 0,
|
||||
ReadOnly = (1 << 0),
|
||||
WriteOnly = (1 << 1),
|
||||
ReadWrite = ReadOnly | WriteOnly,
|
||||
};
|
||||
|
||||
using OpenMode = Flags<OpenModeFlag>;
|
||||
|
||||
File(const std::string &name);
|
||||
File();
|
||||
~File();
|
||||
|
|
|
@ -58,7 +58,7 @@ LOG_DEFINE_CATEGORY(File)
|
|||
*/
|
||||
|
||||
/**
|
||||
* \enum File::OpenMode
|
||||
* \enum File::OpenModeFlag
|
||||
* \brief Mode in which a file is opened
|
||||
* \var File::NotOpen
|
||||
* \brief The file is not open
|
||||
|
@ -70,6 +70,11 @@ LOG_DEFINE_CATEGORY(File)
|
|||
* \brief The file is open for reading and writing
|
||||
*/
|
||||
|
||||
/**
|
||||
* \typedef File::OpenMode
|
||||
* \brief A bitwise combination of File::OpenModeFlag values
|
||||
*/
|
||||
|
||||
/**
|
||||
* \brief Construct a File to represent the file \a name
|
||||
* \param[in] name The file name
|
||||
|
@ -168,7 +173,7 @@ bool File::open(File::OpenMode mode)
|
|||
return false;
|
||||
}
|
||||
|
||||
int flags = (mode & ReadWrite) - 1;
|
||||
int flags = static_cast<OpenMode::Type>(mode & ReadWrite) - 1;
|
||||
if (mode & WriteOnly)
|
||||
flags |= O_CREAT;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue