1 /*---------------------------------------------------------------------------* 2 Project: Horizon 3 File: fs_DirectoryBase.h 4 5 Copyright (C)2009-2012 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: 46347 $ 14 *---------------------------------------------------------------------------*/ 15 16 #ifndef NN_FS_CTR_MPCORE_FS_DIRECTORYBASE_H_ 17 #define NN_FS_CTR_MPCORE_FS_DIRECTORYBASE_H_ 18 19 #include <nn/Handle.h> 20 #include <nn/Result.h> 21 #include <nn/types.h> 22 #include <nn/util/util_Result.h> 23 #include <nn/fs/fs_Parameters.h> 24 #include <nn/fs/CTR/MPCore/fs_UserFileSystem.h> 25 #include <nn/util/util_NonCopyable.h> 26 27 namespace nn { namespace fs { namespace detail { 28 29 class DirectoryBaseImpl : private nn::util::NonCopyable<DirectoryBaseImpl> 30 { 31 protected: 32 typedef nn::fs::CTR::MPCore::detail::UserFileSystem UserFileSystem; 33 DirectoryBaseImpl()34 DirectoryBaseImpl() : m_P(0) {} 35 TryInitialize(const wchar_t * path)36 Result TryInitialize(const wchar_t* path) 37 { 38 return UserFileSystem::TryOpenDirectory(&m_P, path); 39 } 40 TryInitializeRaw(ArchiveHandle handle,const nn::fs::CTR::MPCore::Path & path)41 Result TryInitializeRaw(ArchiveHandle handle, const nn::fs::CTR::MPCore::Path& path) 42 { 43 return UserFileSystem::TryOpenDirectoryRaw(&m_P, handle, path); 44 } 45 Finalize()46 void Finalize() { UserFileSystem::CloseDirectory(m_P); this->m_P = 0; } ~DirectoryBaseImpl()47 ~DirectoryBaseImpl() { Finalize(); } 48 TryRead(s32 * pOut,DirectoryEntry pEntries[],s32 numEntries)49 Result TryRead(s32* pOut, DirectoryEntry pEntries[], s32 numEntries) { return UserFileSystem::TryReadDirectory(pOut, m_P, pEntries, numEntries); } 50 TrySetPriority(s32 priority)51 nn::Result TrySetPriority(s32 priority) 52 { 53 return UserFileSystem::TrySetPriorityForDirectory(m_P, priority); 54 } TryGetPriority(s32 * pOut)55 nn::Result TryGetPriority(s32* pOut) const 56 { 57 return UserFileSystem::TryGetPriorityForDirectory(pOut, m_P); 58 } 59 60 private: 61 62 void* m_P; 63 IsInitialized()64 bool IsInitialized() const { return m_P != 0; } 65 }; 66 67 }}} 68 69 #endif 70