#ifndef IMAGE_IO_UTILS_FILE_UTILS_H_ // NOLINT #define IMAGE_IO_UTILS_FILE_UTILS_H_ // NOLINT #include #include #include #include "image_io/base/data_segment.h" #include "image_io/base/message_handler.h" namespace photos_editing_formats { namespace image_io { /// @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. /// @param message_handler Optional message handler to write messages to. /// @return An ostream pointer or nullptr if the open failed. std::unique_ptr OpenOutputFile(const std::string& file_name, MessageHandler* message_handler); /// @param file_name The name of the file to open for input. /// @param message_handler Optional message handler to write messages to. /// @return An istream pointer or nullptr if the open failed. std::unique_ptr OpenInputFile(const std::string& file_name, MessageHandler* message_handler); /// 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. /// @param message_handler Optional message handler to write messages to. /// @return A DataSegment pointer or nullptr if the open and reading failed. std::shared_ptr ReadEntireFile(const std::string& file_name, MessageHandler* message_handler); } // namespace image_io } // namespace photos_editing_formats #endif // IMAGE_IO_UTILS_FILE_UTILS_H_ // NOLINT