1 /*---------------------------------------------------------------------------* 2 Project: Horizon 3 File: fs_FileOutputStream.h 4 5 Copyright (C)2009 Nintendo Co., Ltd. All rights reserved. 6 7 These coded instructions, statements, and computer programs contain 8 proprietary information of Nintendo of America Inc. and/or Nintendo 9 Company Ltd., and are protected by Federal copyright law. They may 10 not be disclosed to third parties or copied or duplicated in any form, 11 in whole or in part, without the prior written consent of Nintendo. 12 13 $Rev: 36362 $ 14 *---------------------------------------------------------------------------*/ 15 16 #ifndef NN_FS_FS_FILEOUTPUTSTREAM_H_ 17 #define NN_FS_FS_FILEOUTPUTSTREAM_H_ 18 19 #include <nn/fs/fs_IOutputStream.h> 20 #include <nn/fs/fs_FileBase.h> 21 #include <nn/fnd/fnd_Storage.h> 22 23 namespace nn { namespace fs { 24 25 /* Please see man pages for details 26 27 28 29 30 31 32 33 34 35 36 37 38 */ 39 class FileOutputStream : public IOutputStream, public detail::FileBase, private nn::util::NonCopyable<FileOutputStream> 40 { 41 public: 42 43 /* Please see man pages for details 44 45 46 47 48 49 50 51 52 */ FileOutputStream()53 FileOutputStream() {} 54 55 /* Please see man pages for details 56 57 58 59 60 61 62 63 64 65 66 67 68 69 */ FileOutputStream(const wchar_t * pathName,bool createIfNotExist)70 FileOutputStream(const wchar_t* pathName, bool createIfNotExist) : 71 detail::FileBase(pathName, OPEN_MODE_WRITE | (createIfNotExist ? OPEN_MODE_CREATE : 0)) {} 72 73 /* Please see man pages for details 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 */ FileOutputStream(const char * pathName,bool createIfNotExist)91 FileOutputStream(const char* pathName, bool createIfNotExist) : 92 detail::FileBase(pathName, OPEN_MODE_WRITE | (createIfNotExist ? OPEN_MODE_CREATE : 0)) {} 93 94 /* Please see man pages for details 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 */ Initialize(const wchar_t * pathName,bool createIfNotExist)110 void Initialize(const wchar_t* pathName, bool createIfNotExist) 111 { detail::FileBase::Initialize(pathName, OPEN_MODE_WRITE | (createIfNotExist ? OPEN_MODE_CREATE : 0)); } 112 113 /* Please see man pages for details 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 */ Initialize(const char * pathName,bool createIfNotExist)132 void Initialize(const char* pathName, bool createIfNotExist) 133 { detail::FileBase::Initialize(pathName, OPEN_MODE_WRITE | (createIfNotExist ? OPEN_MODE_CREATE : 0)); } 134 135 /* Please see man pages for details 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 */ TryInitialize(const wchar_t * pathName,bool createIfNotExist)155 nn::Result TryInitialize(const wchar_t* pathName, bool createIfNotExist) 156 { return detail::FileBase::TryInitialize(pathName, OPEN_MODE_WRITE | (createIfNotExist ? OPEN_MODE_CREATE : 0)); } 157 158 /* Please see man pages for details 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 */ TryInitialize(const char * pathName,bool createIfNotExist)180 nn::Result TryInitialize(const char* pathName, bool createIfNotExist) 181 { return detail::FileBase::TryInitialize(pathName, OPEN_MODE_WRITE | (createIfNotExist ? OPEN_MODE_CREATE : 0)); } 182 183 /* Please see man pages for details 184 185 186 187 */ Finalize()188 void Finalize() { detail::FileBase::Finalize(); } 189 190 /* Please see man pages for details 191 192 193 194 */ ~FileOutputStream()195 virtual ~FileOutputStream() {} 196 197 /* Please see man pages for details 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 */ 215 virtual s32 Write(const void* buffer, size_t size, bool flush=true) { return detail::FileBase::Write(buffer, size, flush); } 216 217 /* Please see man pages for details 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 */ 235 virtual Result TryWrite(s32* pOut, const void* buffer, size_t size, bool flush=true) { return detail::FileBase::TryWrite(pOut, buffer, size, flush); } 236 237 /* Please see man pages for details 238 239 240 241 242 243 244 245 246 247 */ Seek(s64 position,PositionBase base)248 virtual void Seek(s64 position, PositionBase base) { detail::FileBase::Seek(position, base); } 249 250 /* Please see man pages for details 251 252 253 254 255 256 257 258 259 */ TrySeek(s64 position,PositionBase base)260 virtual Result TrySeek(s64 position, PositionBase base) { return detail::FileBase::TrySeek(position, base); } 261 262 /* Please see man pages for details 263 264 265 266 */ GetPosition()267 virtual s64 GetPosition() const { return detail::FileBase::GetPosition(); } 268 269 /* Please see man pages for details 270 271 272 273 274 275 */ TryGetPosition(s64 * pOut)276 virtual Result TryGetPosition(s64* pOut) const { return detail::FileBase::TryGetPosition(pOut); } 277 278 /* Please see man pages for details 279 280 281 282 */ SetPosition(s64 position)283 virtual void SetPosition(s64 position) { detail::FileBase::SetPosition(position); } 284 285 /* Please see man pages for details 286 287 288 289 290 291 */ TrySetPosition(s64 position)292 virtual Result TrySetPosition(s64 position) { return detail::FileBase::TrySetPosition(position); } 293 294 /* Please see man pages for details 295 296 297 298 */ GetSize()299 virtual s64 GetSize() const { return detail::FileBase::GetSize(); } 300 301 /* Please see man pages for details 302 303 304 305 306 307 */ TryGetSize(s64 * pOut)308 virtual Result TryGetSize(s64* pOut) const { return detail::FileBase::TryGetSize(pOut); } 309 310 /* Please see man pages for details 311 312 313 314 */ SetSize(s64 size)315 virtual void SetSize(s64 size) { detail::FileBase::SetSize(size); } 316 317 /* Please see man pages for details 318 319 320 321 322 323 */ TrySetSize(s64 size)324 virtual Result TrySetSize(s64 size) { return detail::FileBase::TrySetSize(size); } 325 326 /* Please see man pages for details 327 328 329 */ Flush()330 virtual void Flush() { detail::FileBase::Flush(); } 331 332 /* Please see man pages for details 333 334 335 336 */ TryFlush()337 virtual Result TryFlush() { return detail::FileBase::TryFlush(); } 338 }; 339 340 }} 341 342 #endif 343