diff options
Diffstat (limited to 'includes/image_io/utils/file_utils.h')
-rw-r--r-- | includes/image_io/utils/file_utils.h | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/includes/image_io/utils/file_utils.h b/includes/image_io/utils/file_utils.h new file mode 100644 index 0000000..d1a469d --- /dev/null +++ b/includes/image_io/utils/file_utils.h @@ -0,0 +1,41 @@ +#ifndef IMAGE_IO_UTILS_FILE_UTILS_H_ // NOLINT +#define IMAGE_IO_UTILS_FILE_UTILS_H_ // NOLINT + +#include <iostream> +#include <memory> +#include <string> + +#include "image_io/base/data_segment.h" + +namespace photos_editing_formats { +namespace image_io { + +/// A policy that controls whether an error is reported or not. +enum class ReportErrorPolicy { kDontReportError, kReportError }; + +/// @param file_name The name of the file to get the size in bytes of. +/// @param size A pointer to a variable to receive the size. +/// @return Whether file size was obtained properly. +bool GetFileSize(const std::string& file_name, size_t* size); + +/// @param file_name The name of the file to open for output. +/// @return An ostream pointer or nullptr if the open failed. +std::unique_ptr<std::ostream> OpenOutputFile( + const std::string& file_name, ReportErrorPolicy report_error_policy); + +/// @param file_name The name of the file to open for input. +/// @return An istream pointer or nullptr if the open failed. +std::unique_ptr<std::istream> OpenInputFile( + const std::string& file_name, ReportErrorPolicy report_error_policy); + +/// Opens the named file for input, gets its size, and reads the entire contents +/// into a data segment that is returned to the caller. +/// @param file_name The name of the file to open for input. +/// @return A DataSegment pointer or nullptr if the open and reading failed. +std::shared_ptr<DataSegment> ReadEntireFile( + const std::string& file_name, ReportErrorPolicy report_error_policy); + +} // namespace image_io +} // namespace photos_editing_formats + +#endif // IMAGE_IO_UTILS_FILE_UTILS_H_ // NOLINT |