メインページ | 構成 | ファイル一覧 | 構成メンバ | ファイルメンバ | 関連ページ

dkcSJISFileSystem.h

説明を見る。
00001 
00010 #ifndef dkutil_c_SJISFileSystem__h
00011 #define dkutil_c_SJISFileSystem__h
00012 
00013 #include "dkcOSIndependent.h"
00014 #include "dkcMemoryStream.h"
00015 #include "dkcString.h"
00016 #include "dkcStack.h"
00017 
00018 #ifdef WIN32
00019 
00020 #else
00021 
00022 
00023 # include "dirent.h"
00024 # include "unistd.h"
00025 # include "fcntl.h"
00026 # include "utime.h"
00027 
00028 #endif
00029 
00030 DKC_EXTERN char * WINAPI dkcGetFileExtension( const char *PathName );
00031 
00032 DKC_EXTERN int WINAPI dkcIsShiftJIS( const char *str, int nPos );
00033 
00034 /* Generic */
00036 DKC_EXTERN BOOL WINAPI dkcIsEffectivePath(const char *path,size_t size);
00037 
00039 DKC_EXTERN BOOL WINAPI dkcIsRelativityPath(const char *path);
00041 DKC_EXTERN BOOL WINAPI dkcIsAbsolutelyPath(const char *path);
00051 DKC_EXTERN int WINAPI dkcCurrentDirectoryConcatenate(char *dest,size_t dsize,const char *src);
00059 DKC_EXTERN int WINAPI dkcDirectoryConcatenate(char *dest,size_t dlen,size_t dsize,const char *src);
00060 
00062 DKC_EXTERN BOOL WINAPI dkcIsTailPathSep(const char *src,size_t dlen);
00072 DKC_EXTERN BOOL WINAPI dkcPushBackPathSep(char *dest,size_t dlen,size_t size);
00073 
00075 DKC_EXTERN int WINAPI dkcToAbsolutelyPath(char *dest,size_t dsize,const char *src,size_t ssize);
00076 
00089 typedef struct dkc_PathString{
00090     DKC_STRING *mString;
00092     size_t mIterateCount;
00093 }DKC_PATHSTRING;
00094 
00095 //PATHSTRINGの割り当て、解放
00102 DKC_EXTERN DKC_PATHSTRING * WINAPI dkcAllocPathString(const char *path);
00103 
00104 DKC_EXTERN int WINAPI dkcFreePathString(DKC_PATHSTRING **);
00105 
00106 //パスのデータを得る。
00107 
00108 DKC_EXTERN size_t WINAPI dkcPathStringSize(const DKC_PATHSTRING *);
00109 
00110 DKC_EXTERN const char *WINAPI dkcPathStringPointer(const DKC_PATHSTRING *);
00111 
00112 
00113 //パスを区切る。
00114 
00115 DKC_EXTERN int WINAPI dkcPathStringDevideBegin(DKC_PATHSTRING *,char *buff,size_t size);
00117 DKC_EXTERN int WINAPI dkcPathStringDevideNext(DKC_PATHSTRING *,char *buff,size_t size);
00118 
00119 DKC_EXTERN void WINAPI dkcPathStringDevideEnd(DKC_PATHSTRING *);
00120 
00121 
00122 
00123 
00125 DKC_EXTERN int WINAPI dkcPathStringCopy(DKC_PATHSTRING *,const char *buff,size_t size);
00127 DKC_EXTERN int WINAPI dkcPathStringConcatenate(DKC_PATHSTRING *,const char *buff,size_t size);
00128 
00129 /*
00130 DKC_EXTERN int WINAPI dkcPathStringElementInsert(DKC_PATHSTRING *,const char *buff,size_t size);
00131 
00132 DKC_EXTERN int WINAPI dkcPathStringElementReplace(DKC_PATHSTRING *,const char *buff,size_t size);
00133 */
00134 
00135 DKC_EXTERN int WINAPI dkcPathStringGetDrive(DKC_PATHSTRING *,char *buff,size_t size);
00136 
00137 DKC_EXTERN int WINAPI dkcPathStringGetFileExtension(DKC_PATHSTRING *,char *buff,size_t size);
00138 
00139 DKC_EXTERN int WINAPI dkcPathStringGetFileName(DKC_PATHSTRING *,char *buff,size_t size);
00144 DKC_EXTERN int WINAPI dkcPathStringGetDirectory(DKC_PATHSTRING *,char *buff,size_t size);
00145 
00146 
00147 //**********************************************************
00148 //関数の後ろにLogicという名前がついているものは
00149 //内部を理解していない場合は使わな方が無難です。
00150 
00152 DKC_EXTERN int WINAPI dkcPathStringDevideBegin_Logic(DKC_PATHSTRING *,size_t *count,char *buff,size_t size);
00154 DKC_EXTERN int WINAPI dkcPathStringDevideNext_Logic(DKC_PATHSTRING *,size_t *count,char *buff,size_t size);
00156 DKC_EXTERN void WINAPI dkcPathStringDevideEnd_Logic(size_t *count);
00157 
00159 DKC_EXTERN int WINAPI dkcPathStringElementInsert_Logic(DKC_PATHSTRING *,size_t count,
00160                                                                                                 const char *src,size_t len);
00161 
00162 DKC_EXTERN int WINAPI dkcPathStringElementErase_Logic(DKC_PATHSTRING *,size_t count);
00163 
00165 DKC_EXTERN int WINAPI dkcPathStringElementReplace_Logic(DKC_PATHSTRING *,size_t count,
00166                                                                                                  const char *,size_t len);
00167 
00168 
00176 DKC_EXTERN BOOL WINAPI dkcSetCurrentDirectory(const char *filename);
00177 
00179 DKC_EXTERN BOOL WINAPI dkcGetCurrentDirectory(char *buff,size_t size);
00180 
00185 DKC_EXTERN int WINAPI dkcCreateDirectory(const char *pPath);
00191 DKC_EXTERN BOOL WINAPI dkcFileCopy(const char *dest,const char *src);
00201 DKC_EXTERN BOOL WINAPI dkcFileCopyEx(const char *dest,const char *src,
00202                                                                         size_t inner_buffer_size,BOOL bThreadLock);
00204 DKC_EXTERN BOOL WINAPI dkcFileRemove(const char *filename);
00209 DKC_EXTERN BOOL WINAPI dkcFileRename(const char *oldname,const char *newname);
00210 
00214 DKC_EXTERN BOOL WINAPI dkcFileExist(const char *filename);
00218 DKC_EXTERN UINT WINAPI dkcFileSize(const char *filename);
00224 DKC_EXTERN BOOL WINAPI dkcCreateZeroByteFile(const char *filename,BOOL rewrite);
00225 
00229 typedef struct dkc_FileFinder{
00231     DKC_PATHSTRING *mDir;
00233     DKC_STRING *mTarget;
00235     BOOL mbSubDir;
00237     int mState;
00239     DKC_STACK *mStack;
00240 #   ifdef WIN32
00241 
00242     HANDLE mHandle;
00243     WIN32_FIND_DATAA mFindData;
00244 #   else //linux or unix...
00245     struct dirent *mDirent;
00246     DIR *mHandle;
00247 #   endif
00248 }DKC_FILE_FINDER;
00249 
00250 typedef struct dkc_FindFile{
00251 #   ifdef WIN32
00252 
00253     HANDLE mHandle;
00254     WIN32_FIND_DATAA mFindData;
00255 #   else //linux or unix...
00256     struct dirent *mDirent;
00257     DIR *mHandle;
00258 #endif
00259 }DKC_FINDFILE;
00260 
00261 DKC_EXTERN DKC_FINDFILE *WINAPI dkcAllocFindFile();
00262 
00263 DKC_EXTERN int WINAPI dkcFreeFindFile(DKC_FINDFILE **);
00264 
00266 DKC_EXTERN int WINAPI dkcFindFirstFile(DKC_FINDFILE *ptr,const char *target);
00268 DKC_EXTERN int WINAPI dkcFindNextFile(DKC_FINDFILE *ptr);
00270 DKC_EXTERN int WINAPI dkcFindClose(DKC_FINDFILE *ptr);
00271 
00272 DKC_EXTERN int WINAPI dkcFindFileGetFileName(DKC_FINDFILE *ptr,
00273                                                                                          char *buff,size_t buffsize);
00274 
00275 DKC_EXTERN BOOL WINAPI dkcFindFileIsFolder(DKC_FINDFILE *ptr);
00276 
00277 DKC_EXTERN BOOL WINAPI dkcFindFileIsDot(DKC_FINDFILE *ptr);
00278 
00279 DKC_EXTERN BOOL WINAPI dkcFindFileIsNormalFile(DKC_FINDFILE *ptr);
00280 
00281 DKC_EXTERN BOOL WINAPI dkcFindFileIsReadOnly(DKC_FINDFILE *ptr);
00282 
00283 DKC_EXTERN void WINAPI dkcFindFileSize(DKC_FINDFILE *ptr,ULONG *,ULONG *);
00284 
00285 
00286 
00287 
00288 #if 0
00289 enum edkcFileFinder{
00291     edkcFileFinderEmpty = 0,
00293     edkcFileFinderSearching,
00295     edkcFileFinderFinish,
00296 };
00297 
00298 
00305 DKC_EXTERN DKC_FILE_FINDER * WINAPI dkcAllocFileFinder(
00306             const char *target,const char *dir,BOOL bSubDir
00307             );
00308 
00309 DKC_EXTERN int WINAPI dkcFreeFileFinder(DKC_FILE_FINDER **);
00310 
00311 
00319 DKC_EXTERN int WINAPI dkcFileFinderNext(
00320     DKC_FILE_FINDER *ptr,DKC_PATHSTRING *path,BOOL *bCopySucceeded
00321 );
00322 
00323 
00324 
00329 DKC_EXTERN int WINAPI dkcFileFinderReferenceFileName(DKC_FILE_FINDER *ptr,DKC_PATHSTRING *path);
00330 
00331 #ifdef __cplusplus
00332 namespace dkutil{
00333 
00334 
00343 template<class STL_T>
00344 inline bool file_listup(const char *target,const char *dir,bool bSubDir,
00345                                                 STL_T &c)
00346 {
00347     //定義
00348     //typedef STL_T::iterator iterator;
00349     
00350     bool result = false;
00351     BOOL bCopySucceeded = FALSE;
00352     DKC_PATHSTRING *pPath = NULL;
00353     DKC_FILE_FINDER *pFinder = NULL;
00354 
00355     //初期化
00356     pPath = dkcAllocPathString(dir);
00357     if(NULL==pPath){    return false;}
00358     pFinder = dkcAllocFileFinder(target,dir,(BOOL)bSubDir);
00359     if(NULL==pFinder){ goto Error;}
00360     
00361     //std::string str;
00362     //処理
00363     for(;;){
00364         int r = dkcFileFinderNext(pFinder,pPath,&bCopySucceeded);
00365         if(edk_EndProcess == r){
00366             break;
00367         }else if(DKUTIL_FAILED(r)){
00368             goto Error;
00369         }
00370         if(TRUE==bCopySucceeded){//コピーできている。
00371             c.push_back(dkcPathStringPointer(pPath));
00372         }
00373     }
00374     
00375     result = true;
00376 
00377 Error://エラー∩後始末
00378     dkcFreePathString(&pPath);
00379     dkcFreeFileFinder(&pFinder);
00380     return result;
00381 }
00382 
00383 
00384 }
00385 #endif //end of __cplusplus
00386 
00387 
00388 #endif //end of if 0
00389 
00390 #endif //end of include once

dkutil_cに対してSun Jul 18 22:45:22 2004に生成されました。 doxygen 1.3.6