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>
35 class DALI_ADAPTOR_API FileStream
40 * @brief File type formats
41 * The default format is binary
43 enum FileMode ///< FileType format
45 BINARY = 1 << 0, ///< File stream will be opened as a binary
46 TEXT = 1 << 1, ///< File stream will be opened as text
47 READ = 1 << 2, ///< File stream will be opened for reading
48 WRITE = 1 << 3, ///< File stream will be opened for writing
49 APPEND = 1 << 4, ///< File stream will be opened for appending
54 * @param[in] filename Filename of the file to open the stream for
55 * @param[in] mode How we want to open the stream. Binary or Text, Read or Write. Binary & Read default
57 FileStream(const std::string& filename, uint8_t mode = BINARY | READ);
61 * @param[in] buffer Buffer to open the stream for.
62 * The buffer is not owned by FileStream and must be valid for entire lifetime of FileStream
63 * @param[in] dataSize The maximum size of the data in the buffer.
64 * @param[in] mode How we want to open the stream. Binary or Text, Read or Write. Binary & Read default
66 FileStream(uint8_t* buffer, size_t dataSize, uint8_t mode = BINARY | READ);
70 * @param[in] buffer Buffer to open the stream for.
71 * The buffer is not owned by FileStream and must be valid for entire lifetime of FileStream
72 * @param[in] dataSize The maximum size of the data in the buffer.
73 * @param[in] mode How we want to open the stream. Binary or Text, Read or Write. Binary & Read default
75 FileStream(Dali::Vector<uint8_t>& buffer, size_t dataSize, uint8_t mode = BINARY | READ);
78 * Default move constructor
80 FileStream(FileStream&&);
85 FileStream(const FileStream&) = delete;
90 FileStream& operator=(const FileStream&) = delete;
95 FileStream& operator=(FileStream&&);
103 * @brief Returns the stream
104 * @return std::iostream.
106 std::iostream& GetStream();
109 * @brief Returns the file stream
111 * @note This class is responsible for closing the file so the caller SHOULD NOT call fclose() on the returned pointer.
118 std::unique_ptr<Impl> mImpl;
123 #endif // DALI_FILE_STREAM_H