summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2020-07-25 02:17:48 +0300
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2021-08-03 10:55:30 +0300
commit91d06ae2fc6114d870ab76a05c1268a6ee417415 (patch)
treeea70db217c73895e7cc67bab1580702061519199
parent49862904f6cc707d300fab079ffe8173bf24d5d4 (diff)
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>
-rw-r--r--include/libcamera/base/file.h4
-rw-r--r--src/libcamera/base/file.cpp9
2 files changed, 10 insertions, 3 deletions
diff --git a/include/libcamera/base/file.h b/include/libcamera/base/file.h
index 452a658b..eebb2402 100644
--- a/include/libcamera/base/file.h
+++ b/include/libcamera/base/file.h
@@ -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();
diff --git a/src/libcamera/base/file.cpp b/src/libcamera/base/file.cpp
index 944918f2..1c5879b3 100644
--- a/src/libcamera/base/file.cpp
+++ b/src/libcamera/base/file.cpp
@@ -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
@@ -71,6 +71,11 @@ LOG_DEFINE_CATEGORY(File)
*/
/**
+ * \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;