Mercurial > projects > hoofbaby
diff deps/Platinum/ThirdParty/Neptune/Source/System/PSP/NptPSPDirectory.cpp @ 0:3425707ddbf6
Initial import (hopefully this mercurial stuff works...)
author | fraserofthenight |
---|---|
date | Mon, 06 Jul 2009 08:06:28 -0700 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/deps/Platinum/ThirdParty/Neptune/Source/System/PSP/NptPSPDirectory.cpp Mon Jul 06 08:06:28 2009 -0700 @@ -0,0 +1,199 @@ +/***************************************************************** +| +| Neptune - Directory :: PSP Implementation +| +| Copyright (c) 2004-2008, Plutinosoft, LLC. +| Author: Sylvain Rebaud (sylvain@plutinosoft.com) +| + ****************************************************************/ + +/*---------------------------------------------------------------------- +| includes ++---------------------------------------------------------------------*/ +#include <stdio.h> + +#include <kernel.h> +#include <psptypes.h> +#include <psperror.h> + +#include "NptConfig.h" +#include "NptTypes.h" +#include "NptDirectory.h" +#include "NptDebug.h" +#include "NptResults.h" + +/*---------------------------------------------------------------------- +| NPT_PSPDirectoryEntry ++---------------------------------------------------------------------*/ +class NPT_PSPDirectoryEntry : public NPT_DirectoryEntryInterface +{ +public: + // methods + NPT_PSPDirectoryEntry(const char* path); + virtual ~NPT_PSPDirectoryEntry(); + + // NPT_DirectoryInterface methods + virtual NPT_Result GetType(NPT_DirectoryEntryType& type); + virtual NPT_Result GetSize(NPT_Size& size); + +private: + // members + NPT_StringObject m_Path; +}; + +/*---------------------------------------------------------------------- +| NPT_PSPDirectoryEntry::NPT_PSPDirectoryEntry ++---------------------------------------------------------------------*/ +NPT_PSPDirectoryEntry::NPT_PSPDirectoryEntry(const char* path) : + m_Path(path) +{ +} + +/*---------------------------------------------------------------------- +| NPT_PSPDirectoryEntry::~NPT_PSPDirectoryEntry ++---------------------------------------------------------------------*/ +NPT_PSPDirectoryEntry::~NPT_PSPDirectoryEntry() +{ +} + +/*---------------------------------------------------------------------- +| NPT_PSPDirectoryEntry::GetType ++---------------------------------------------------------------------*/ +NPT_Result +NPT_PSPDirectoryEntry::GetType(NPT_DirectoryEntryType& type) +{ + //// converts from Utf8 ? + //DWORD fa = GetFileAttributes(m_Path); + //if (fa == 0xFFFFFFFF) { + // return NPT_FAILURE; + //} + + //if ((fa & FILE_ATTRIBUTE_DIRECTORY) == 0) { + // type = NPT_FILE_TYPE; + //} else { + // type = NPT_DIRECTORY_TYPE; + //} + + return NPT_SUCCESS; +} + +/*---------------------------------------------------------------------- +| NPT_PSPDirectoryEntry::GetSize ++---------------------------------------------------------------------*/ +NPT_Result +NPT_PSPDirectoryEntry::GetSize(NPT_Size& size) +{ + //WIN32_FIND_DATA filedata; + + //// converts to Utf8? + //HANDLE sizeHandle = FindFirstFile(m_Path, &filedata); + //if (sizeHandle == INVALID_HANDLE_VALUE) { + // FindClose(sizeHandle); + // return NPT_FAILURE; + //} + + //size = filedata.nFileSizeLow; + //FindClose(sizeHandle); + return NPT_SUCCESS; +} + +/*---------------------------------------------------------------------- +| NPT_DirectoryEntry::NPT_DirectoryEntry ++---------------------------------------------------------------------*/ +NPT_DirectoryEntry::NPT_DirectoryEntry(const char* path) +{ + m_Delegate = new NPT_PSPDirectoryEntry(path); +} + +/*---------------------------------------------------------------------- +| NPT_PSPDirectory ++---------------------------------------------------------------------*/ +class NPT_PSPDirectory : public NPT_DirectoryInterface +{ +public: + // methods + NPT_PSPDirectory(const char* path); + virtual ~NPT_PSPDirectory(); + + // NPT_DirectoryInterface methods + virtual NPT_Result GetNextEntry(NPT_StringObject& name, NPT_Size* size = NULL, NPT_DirectoryEntryType* type = NULL); + +private: + // members + NPT_StringObject m_Path; +}; + +/*---------------------------------------------------------------------- +| NPT_PSPDirectory::NPT_PSPDirectory ++---------------------------------------------------------------------*/ +NPT_PSPDirectory::NPT_PSPDirectory(const char* path) : + m_Path(path) +{ + if (!m_Path.EndsWith(NPT_WIN32_DIR_DELIMITER_STR)) { + if (!m_Path.EndsWith(NPT_UNIX_DIR_DELIMITER_STR)) { + m_Path += NPT_UNIX_DIR_DELIMITER_STR; + } + } + + m_Path += "*.*"; +} + +/*---------------------------------------------------------------------- +| NPT_PSPDirectory::~NPT_PSPDirectory ++---------------------------------------------------------------------*/ +NPT_PSPDirectory::~NPT_PSPDirectory() +{ + //if (m_SearchHandle != NULL) { + // FindClose(m_SearchHandle); + //} +} + +/*---------------------------------------------------------------------- +| NPT_PSPDirectory::GetNextEntry ++---------------------------------------------------------------------*/ +NPT_Result +NPT_PSPDirectory::GetNextEntry(NPT_StringObject& name, NPT_Size* size, NPT_DirectoryEntryType* type) +{ + //WIN32_FIND_DATA filedata; + + //if (m_SearchHandle == NULL) { + // m_SearchHandle = FindFirstFile(m_Path, &filedata); + // if (m_SearchHandle == INVALID_HANDLE_VALUE) { + // m_SearchHandle = NULL; + // return NPT_FAILURE; + // } + //} else { + // if (FindNextFile(m_SearchHandle, &filedata) == 0) { + // return NPT_FAILURE; + // } + //} + + //// need to convert to Utf8 ? + //name = filedata.cFileName; + + //if (size) { + // *size = filedata.nFileSizeLow; + //} + + //if (type) { + // *type = (filedata.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) ? NPT_DIRECTORY_TYPE : NPT_FILE_TYPE; + //} + + return NPT_SUCCESS; +} + +/*---------------------------------------------------------------------- +| NPT_Directory::NPT_Directory ++---------------------------------------------------------------------*/ +NPT_Directory::NPT_Directory(const char* path) +{ + m_Delegate = new NPT_PSPDirectory(path); +} + + + + + + + +