Frost Moon Project

Src/sslib/FileSearch.h -MagicPNG Ver.1.00- - Frost Moon Project   アクセスランキング  

Home > ソフトウェア > MagicPNG > MagicPNG100.zip > Src > sslib > FileSearch.h

 
//FileSearch.h

#ifndef _FILESEARCH_H_5AFE0001_7E75_4496_A177_D666A6867AD3
#define _FILESEARCH_H_5AFE0001_7E75_4496_A177_D666A6867AD3



namespace sslib{
class FileSearch{
public:
    FileSearch():
        m_handle(INVALID_HANDLE_VALUE),
        m_file_data(),
        m_base_path(),
        m_wildcard(),
        m_wildcard_list(),
        m_first(true){
    }
    virtual ~FileSearch(){close();}

protected:
    HANDLE m_handle;
    WIN32_FIND_DATA m_file_data;
    tstring m_base_path;
    tstring m_wildcard;
    std::list<tstring> m_wildcard_list;
    bool m_first;

private:
    bool match(const TCHAR* file_path);

public:
    //最初のファイルの情報を取得
    WIN32_FIND_DATA* first(const TCHAR* search_dir,const TCHAR* wildcard=_T("*"));

    //次のファイルの情報を取得
    WIN32_FIND_DATA* next();

    //ファイルの検索を終了
    bool close();

    inline const WIN32_FIND_DATA* data()const{
        return &m_file_data;
    }

    //ファイルのフルパスを取得
    inline const tstring filepath()const{
        return m_base_path+m_file_data.cFileName;
    }

    //ファイルのサイズを取得
    inline long long getSize()const{
        return (long long)MAKEQWORD(m_file_data.nFileSizeHigh,m_file_data.nFileSizeLow);
    }

    inline bool isDirectory()const{return (m_file_data.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY)!=0;}
    inline bool isHiddenFile()const{return (m_file_data.dwFileAttributes&FILE_ATTRIBUTE_HIDDEN)!=0;}
    inline bool isSystemFile()const{return (m_file_data.dwFileAttributes&FILE_ATTRIBUTE_SYSTEM)!=0;}
    inline bool hasAttribute(DWORD attr)const{return (m_file_data.dwFileAttributes&attr)!=0;}
};

//namespace sslib
}

#endif //_FILESEARCH_H_5AFE0001_7E75_4496_A177_D666A6867AD3


Home > ソフトウェア > MagicPNG > MagicPNG100.zip > Src > sslib > FileSearch.h