1 #ifndef DALI_FILE_STREAM_H
2 #define DALI_FILE_STREAM_H
5 * Copyright (c) 2020 Samsung Electronics Co., Ltd.
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
29 #include <dali/public-api/common/dali-vector.h>
30 #include <dali/public-api/dali-adaptor-common.h>
34 class DALI_ADAPTOR_API FileStream
38 * @brief File type formats
39 * The default format is binary
41 enum FileMode ///< FileType format
43 BINARY = 1 << 0, ///< File stream will be opened as a binary
44 TEXT = 1 << 1, ///< File stream will be opened as text
45 READ = 1 << 2, ///< File stream will be opened for reading
46 WRITE = 1 << 3, ///< File stream will be opened for writing
47 APPEND = 1 << 4, ///< File stream will be opened for appending
52 * @param[in] filename Filename of the file to open the stream for
53 * @param[in] mode How we want to open the stream. Binary or Text, Read or Write. Binary & Read default
55 FileStream(const std::string& filename, uint8_t mode = BINARY | READ);
59 * @param[in] buffer Buffer to open the stream for.
60 * The buffer is not owned by FileStream and must be valid for entire lifetime of FileStream
61 * @param[in] dataSize The maximum size of the data in the buffer.
62 * @param[in] mode How we want to open the stream. Binary or Text, Read or Write. Binary & Read default
64 FileStream(uint8_t* buffer, size_t dataSize, uint8_t mode = BINARY | READ);
68 * @param[in] buffer Buffer to open the stream for.
69 * The buffer is not owned by FileStream and must be valid for entire lifetime of FileStream
70 * @param[in] dataSize The maximum size of the data in the buffer.
71 * @param[in] mode How we want to open the stream. Binary or Text, Read or Write. Binary & Read default
73 FileStream(Dali::Vector<uint8_t>& buffer, size_t dataSize, uint8_t mode = BINARY | READ);
76 * Default move constructor
78 FileStream(FileStream&&);
83 FileStream(const FileStream&) = delete;
88 FileStream& operator=(const FileStream&) = delete;
93 FileStream& operator=(FileStream&&);
101 * @brief Returns the stream
102 * @return std::iostream.
104 std::iostream& GetStream();
107 * @brief Returns the file stream
109 * @note This class is responsible for closing the file so the caller SHOULD NOT call fclose() on the returned pointer.
115 std::unique_ptr<Impl> mImpl;
120 #endif // DALI_FILE_STREAM_H