File Annotation

Not logged in
dcdd144598 2011-02-23        kinaba: #ifndef _KILIB_PATH_H_
dcdd144598 2011-02-23        kinaba: #define _KILIB_PATH_H_
dcdd144598 2011-02-23        kinaba: #include "types.h"
dcdd144598 2011-02-23        kinaba: #include "string.h"
dcdd144598 2011-02-23        kinaba: #ifndef __ccdoc__
dcdd144598 2011-02-23        kinaba: namespace ki {
dcdd144598 2011-02-23        kinaba: #endif
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: //=========================================================================
dcdd144598 2011-02-23        kinaba: //@{ @pkg ki.StdLib //@}
dcdd144598 2011-02-23        kinaba: //@{
dcdd144598 2011-02-23        kinaba: //	ファイル名処理
dcdd144598 2011-02-23        kinaba: //
dcdd144598 2011-02-23        kinaba: //	基本的には文字列ですが、特にファイル名として扱うときに便利な
dcdd144598 2011-02-23        kinaba: //	クラスです。名前部分のみ取り出しとか拡張子のみ取り出しとか、
dcdd144598 2011-02-23        kinaba: //	属性を取ってくるとか色々。
dcdd144598 2011-02-23        kinaba: //@}
dcdd144598 2011-02-23        kinaba: //=========================================================================
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: class Path : public String
dcdd144598 2011-02-23        kinaba: {
dcdd144598 2011-02-23        kinaba: public:
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 	Path() {}
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 	//@{ 別のPathのコピー //@}
dcdd144598 2011-02-23        kinaba: 	Path( const Path&   s )              : String( s ){}
dcdd144598 2011-02-23        kinaba: 	Path( const String& s )              : String( s ){}
dcdd144598 2011-02-23        kinaba: 	Path( const TCHAR*  s, long siz=-1 ) : String( s, siz ){}
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 	//@{ 単純代入 //@}
dcdd144598 2011-02-23        kinaba: 	Path& operator=( const Path&   s )
dcdd144598 2011-02-23        kinaba: 		{ return static_cast<Path&>(String::operator=(s)); }
dcdd144598 2011-02-23        kinaba: 	Path& operator=( const String& s )
dcdd144598 2011-02-23        kinaba: 		{ return static_cast<Path&>(String::operator=(s)); }
dcdd144598 2011-02-23        kinaba: 	Path& operator=( const TCHAR*  s )
dcdd144598 2011-02-23        kinaba: 		{ return static_cast<Path&>(String::operator=(s)); }
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 	//@{ 加算代入 //@}
dcdd144598 2011-02-23        kinaba: 	Path& operator+=( const Path&   s )
dcdd144598 2011-02-23        kinaba: 		{ return static_cast<Path&>(String::operator+=(s)); }
dcdd144598 2011-02-23        kinaba: 	Path& operator+=( const String& s )
dcdd144598 2011-02-23        kinaba: 		{ return static_cast<Path&>(String::operator+=(s)); }
dcdd144598 2011-02-23        kinaba: 	Path& operator+=( const TCHAR*  s )
dcdd144598 2011-02-23        kinaba: 		{ return static_cast<Path&>(String::operator+=(s)); }
dcdd144598 2011-02-23        kinaba: 	Path& operator+=( TCHAR c )
dcdd144598 2011-02-23        kinaba: 		{ return static_cast<Path&>(String::operator+=(c)); }
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 	//@{ 特殊パス取得して初期化 //@}
dcdd144598 2011-02-23        kinaba: 	explicit Path( int nPATH, bool bs=true )
dcdd144598 2011-02-23        kinaba: 		{ BeSpecialPath( nPATH, bs ); }
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 	//@{ 特殊パス取得 //@}
dcdd144598 2011-02-23        kinaba: 	Path& BeSpecialPath( int nPATH, bool bs=true );
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 	//@{ 特殊パス指定用定数 //@}
dcdd144598 2011-02-23        kinaba: 	enum { Win=0x1787, Sys, Tmp, Exe, Cur, ExeName,
dcdd144598 2011-02-23        kinaba: 			Snd=CSIDL_SENDTO, Dsk=CSIDL_DESKTOPDIRECTORY };
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 	//@{ 最後にバックスラッシュを入れる(true)/入れない(false) //@}
dcdd144598 2011-02-23        kinaba: 	Path& BeBackSlash( bool add );
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 	//@{ ドライブ名ないしルートのみ //@}
dcdd144598 2011-02-23        kinaba: 	Path& BeDriveOnly();
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 	//@{ ディレクトリ名のみ //@}
dcdd144598 2011-02-23        kinaba: 	Path& BeDirOnly();
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 	//@{ 短いパス名 //@}
dcdd144598 2011-02-23        kinaba: 	Path& BeShortStyle();
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 	//@{ ファイル名だけは確実に長く //@}
dcdd144598 2011-02-23        kinaba: 	Path& BeShortLongStyle();
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 	//@{ ...とかを入れて短く //@}
dcdd144598 2011-02-23        kinaba: 	String CompactIfPossible(int Mx);
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 	//@{ ディレクトリ情報以外 //@}
dcdd144598 2011-02-23        kinaba: 	const TCHAR* name() const;
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 	//@{ 最後の拡張子 //@}
dcdd144598 2011-02-23        kinaba: 	const TCHAR* ext() const;
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 	//@{ 最初の.以降全部と見なした拡張子 //@}
dcdd144598 2011-02-23        kinaba: 	const TCHAR* ext_all() const;
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 	//@{ ディレクトリ情報と最後の拡張子を除いた名前部分 //@}
dcdd144598 2011-02-23        kinaba: 	Path body() const;
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 	//@{ ディレクトリ情報と最初の.以降全部を除いた名前部分 //@}
dcdd144598 2011-02-23        kinaba: 	Path body_all() const;
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: public:
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 	//@{ ファイルかどうか //@}
dcdd144598 2011-02-23        kinaba: 	bool isFile() const;
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 	//@{ ディレクトリかどうか //@}
dcdd144598 2011-02-23        kinaba: 	bool isDirectory() const;
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 	//@{ 存在するかどうか。isFile() || isDirectory() //@}
dcdd144598 2011-02-23        kinaba: 	bool exist() const;
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 	//@{ 読み取り専用かどうか //@}
dcdd144598 2011-02-23        kinaba: 	bool isReadOnly() const;
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: public:
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 	static const TCHAR* name( const TCHAR* str );
dcdd144598 2011-02-23        kinaba: 	static const TCHAR* ext( const TCHAR* str );
dcdd144598 2011-02-23        kinaba: 	static const TCHAR* ext_all( const TCHAR* str );
dcdd144598 2011-02-23        kinaba: };
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: //-------------------------------------------------------------------------
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: inline bool Path::isFile() const
dcdd144598 2011-02-23        kinaba: 	{ return 0==(::GetFileAttributes(c_str())&FILE_ATTRIBUTE_DIRECTORY); }
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: inline bool Path::isDirectory() const
dcdd144598 2011-02-23        kinaba: 	{ DWORD x=::GetFileAttributes(c_str());
dcdd144598 2011-02-23        kinaba: 	  return x!=0xffffffff && (x&FILE_ATTRIBUTE_DIRECTORY)!=0; }
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: inline bool Path::exist() const
dcdd144598 2011-02-23        kinaba: 	{ return 0xffffffff != ::GetFileAttributes(c_str()); }
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: inline bool Path::isReadOnly() const
dcdd144598 2011-02-23        kinaba: 	{ DWORD x=::GetFileAttributes(c_str());
dcdd144598 2011-02-23        kinaba: 	  return x!=0xffffffff && (x&FILE_ATTRIBUTE_READONLY)!=0; }
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: inline const TCHAR* Path::name() const
dcdd144598 2011-02-23        kinaba: 	{ return name(c_str()); }
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: inline const TCHAR* Path::ext() const
dcdd144598 2011-02-23        kinaba: 	{ return ext(c_str()); }
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: inline const TCHAR* Path::ext_all() const
dcdd144598 2011-02-23        kinaba: 	{ return ext_all(c_str()); }
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: //=========================================================================
dcdd144598 2011-02-23        kinaba: 
dcdd144598 2011-02-23        kinaba: }      // namespace ki
dcdd144598 2011-02-23        kinaba: #endif // _KILIB_PATH_H_