File Annotation

Not logged in
13b7203622 2011-02-23        kinaba: //--- K.I.LIB ---
13b7203622 2011-02-23        kinaba: // kl_str.h : string classes for K.I.LIB
13b7203622 2011-02-23        kinaba: 
13b7203622 2011-02-23        kinaba: #ifndef AFX_KISTR_H__1932CA2C_ACA6_4606_B57A_ACD0B7D1D35B__INCLUDED_
13b7203622 2011-02-23        kinaba: #define AFX_KISTR_H__1932CA2C_ACA6_4606_B57A_ACD0B7D1D35B__INCLUDED_
13b7203622 2011-02-23        kinaba: 
13b7203622 2011-02-23        kinaba: /*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/
13b7203622 2011-02-23        kinaba: // kiStr : 単純文字列
13b7203622 2011-02-23        kinaba: 
13b7203622 2011-02-23        kinaba: class kiStr
13b7203622 2011-02-23        kinaba: {
13b7203622 2011-02-23        kinaba: friend void kilib_startUp();
13b7203622 2011-02-23        kinaba: 
13b7203622 2011-02-23        kinaba: private: //-- グローバルな初期化処理など ---------------------
13b7203622 2011-02-23        kinaba: 
13b7203622 2011-02-23        kinaba: 	static void init();
13b7203622 2011-02-23        kinaba: 
13b7203622 2011-02-23        kinaba: public: //-- 外向きインターフェイス --------------------------
13b7203622 2011-02-23        kinaba: 
13b7203622 2011-02-23        kinaba: 	// 2byte文字の処理を高速化(したような気分)
13b7203622 2011-02-23        kinaba: 	static char* next( char* p )
13b7203622 2011-02-23        kinaba: 		{ return p+st_lb[(*p)&0xff]; }
13b7203622 2011-02-23        kinaba: 	static const char* next( const char* p )
13b7203622 2011-02-23        kinaba: 		{ return p+st_lb[(*p)&0xff]; }
13b7203622 2011-02-23        kinaba: 	static bool isLeadByte( char c )
13b7203622 2011-02-23        kinaba: 		{ return st_lb[c&0xff]==2; }
13b7203622 2011-02-23        kinaba: 
13b7203622 2011-02-23        kinaba: 	// 初期化
13b7203622 2011-02-23        kinaba: 	kiStr( int start_size = 100 );
13b7203622 2011-02-23        kinaba: 	kiStr( const char* s, int min_size = 100 );
13b7203622 2011-02-23        kinaba: 	explicit kiStr( const kiStr& s );
13b7203622 2011-02-23        kinaba: 
13b7203622 2011-02-23        kinaba: 	// 演算子
13b7203622 2011-02-23        kinaba: 	kiStr& operator = ( const kiStr& );
13b7203622 2011-02-23        kinaba: 	kiStr& operator = ( const char* s );
13b7203622 2011-02-23        kinaba: 	kiStr& operator += ( const char* s );
13b7203622 2011-02-23        kinaba: 	kiStr& operator += ( char c );
13b7203622 2011-02-23        kinaba: 	bool operator == ( const char* s ) const;
13b7203622 2011-02-23        kinaba: 	bool isSame( const char* s )       const;
13b7203622 2011-02-23        kinaba: 	operator const char*()             const;
13b7203622 2011-02-23        kinaba: 	int len()                          const;
13b7203622 2011-02-23        kinaba: 	void lower()
13b7203622 2011-02-23        kinaba: 		{ ::CharLower(m_pBuf); }
13b7203622 2011-02-23        kinaba: 	void upper()
13b7203622 2011-02-23        kinaba: 		{ ::CharUpper(m_pBuf); }
13b7203622 2011-02-23        kinaba: 	kiStr& setInt( int n, bool cm=false );
13b7203622 2011-02-23        kinaba: 	void replaceToSlash() {
13b7203622 2011-02-23        kinaba: 		for(char* p=m_pBuf; *p; p=next(p))
13b7203622 2011-02-23        kinaba: 			if(*p=='\\')
13b7203622 2011-02-23        kinaba: 				*p='/';
13b7203622 2011-02-23        kinaba: 	}
13b7203622 2011-02-23        kinaba: 
13b7203622 2011-02-23        kinaba: 	// リソースからロード
13b7203622 2011-02-23        kinaba: 	kiStr& loadRsrc( UINT id );
13b7203622 2011-02-23        kinaba: 
13b7203622 2011-02-23        kinaba: 	kiStr& removeTrailWS();
13b7203622 2011-02-23        kinaba: 
13b7203622 2011-02-23        kinaba: protected: //-- 派生クラス向け -----------------------------
13b7203622 2011-02-23        kinaba: 
13b7203622 2011-02-23        kinaba: 	char* m_pBuf;
13b7203622 2011-02-23        kinaba: 	int   m_ALen;
13b7203622 2011-02-23        kinaba: 
13b7203622 2011-02-23        kinaba: private: //-- 内部処理 -------------------------------------
13b7203622 2011-02-23        kinaba: 
13b7203622 2011-02-23        kinaba: 	static char st_lb[256];
13b7203622 2011-02-23        kinaba: 
13b7203622 2011-02-23        kinaba: public:
13b7203622 2011-02-23        kinaba: 
13b7203622 2011-02-23        kinaba: 	virtual ~kiStr();
13b7203622 2011-02-23        kinaba: };
13b7203622 2011-02-23        kinaba: 
13b7203622 2011-02-23        kinaba: inline const kiStr operator+(const kiStr& x, const kiStr& y)
13b7203622 2011-02-23        kinaba: 	{ return kiStr(x) += y; }
13b7203622 2011-02-23        kinaba: inline const kiStr operator+(const char* x, const kiStr& y)
13b7203622 2011-02-23        kinaba: 	{ return kiStr(x) += y; }
13b7203622 2011-02-23        kinaba: inline const kiStr operator+(const kiStr& x, const char* y)
13b7203622 2011-02-23        kinaba: 	{ return kiStr(x) += y; }
13b7203622 2011-02-23        kinaba: 
13b7203622 2011-02-23        kinaba: /*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/
13b7203622 2011-02-23        kinaba: // kiPath : パス特有の処理用関数付き文字列
13b7203622 2011-02-23        kinaba: 
13b7203622 2011-02-23        kinaba: class kiPath : public kiStr
13b7203622 2011-02-23        kinaba: {
13b7203622 2011-02-23        kinaba: public: //-- 外向きインターフェイス --------------------------
13b7203622 2011-02-23        kinaba: 
13b7203622 2011-02-23        kinaba: 	// 初期化
13b7203622 2011-02-23        kinaba: 	kiPath() : kiStr( MAX_PATH ){}
13b7203622 2011-02-23        kinaba: 	explicit kiPath( const char* s ) : kiStr( s, MAX_PATH ){}
13b7203622 2011-02-23        kinaba: 	explicit kiPath( const kiStr& s ) : kiStr( s, MAX_PATH ){}
13b7203622 2011-02-23        kinaba: 	explicit kiPath( const kiPath& s ) : kiStr( s, MAX_PATH ){}
13b7203622 2011-02-23        kinaba: 	kiPath( int nPATH, bool bs = true ) : kiStr( MAX_PATH )
13b7203622 2011-02-23        kinaba: 		{
13b7203622 2011-02-23        kinaba: 			beSpecialPath( nPATH );
13b7203622 2011-02-23        kinaba: 			if( nPATH != Exe_name )
13b7203622 2011-02-23        kinaba: 				beBackSlash( bs );
13b7203622 2011-02-23        kinaba: 		}
13b7203622 2011-02-23        kinaba: 
13b7203622 2011-02-23        kinaba: 	// operator
13b7203622 2011-02-23        kinaba: 	void operator = ( const char* s ){ kiStr::operator =(s); }
13b7203622 2011-02-23        kinaba: 
13b7203622 2011-02-23        kinaba: 	// 特殊パス取得
13b7203622 2011-02-23        kinaba: 	void beSpecialPath( int nPATH );
13b7203622 2011-02-23        kinaba: 	enum { Win=0x1787, Sys, Tmp, Prg, Exe, Cur, Exe_name,
13b7203622 2011-02-23        kinaba: 			Snd=CSIDL_SENDTO, Dsk=CSIDL_DESKTOP, Doc=CSIDL_PERSONAL };
13b7203622 2011-02-23        kinaba: 
13b7203622 2011-02-23        kinaba: 	// 短いパス
13b7203622 2011-02-23        kinaba: 	void beShortPath();
13b7203622 2011-02-23        kinaba: 
13b7203622 2011-02-23        kinaba: 	// 最後のバックスラッシュ制御
13b7203622 2011-02-23        kinaba: 	void beBackSlash( bool add );
13b7203622 2011-02-23        kinaba: 
13b7203622 2011-02-23        kinaba: 	// ディレクトリ名のみ
13b7203622 2011-02-23        kinaba: 	bool beDirOnly();
13b7203622 2011-02-23        kinaba: 	// ファイル名except拡張子全部
13b7203622 2011-02-23        kinaba: 	void getBody( kiStr& str ) const;
13b7203622 2011-02-23        kinaba: 	// ファイル名except拡張子一つ
13b7203622 2011-02-23        kinaba: 	void getBody_all( kiStr& str ) const;
13b7203622 2011-02-23        kinaba: 
13b7203622 2011-02-23        kinaba: 	// 複数階層mkdir
13b7203622 2011-02-23        kinaba: 	void mkdir();
13b7203622 2011-02-23        kinaba: 	// 複数階層rmdir
13b7203622 2011-02-23        kinaba: 	void remove();
13b7203622 2011-02-23        kinaba: 
13b7203622 2011-02-23        kinaba: 	// ドライブタイプ
13b7203622 2011-02-23        kinaba: 	UINT getDriveType() const;
13b7203622 2011-02-23        kinaba: 	// 同じディレクトリにあるかどうか
13b7203622 2011-02-23        kinaba: 	bool isInSameDir(const char* r) const;
13b7203622 2011-02-23        kinaba: 
13b7203622 2011-02-23        kinaba: 	// [static] ディレクトリ情報を含まない、ファイル名のみ抽出
13b7203622 2011-02-23        kinaba: 	static const char* name( const char* str );
13b7203622 2011-02-23        kinaba: 	// [static] 最後の拡張子。無ければNULL
13b7203622 2011-02-23        kinaba: 	static const char* ext( const char* str );
13b7203622 2011-02-23        kinaba: 	// [static] 拡張子全部。無ければNULL
13b7203622 2011-02-23        kinaba: 	static const char* ext_all( const char* str );
13b7203622 2011-02-23        kinaba: 	// [static] \ / で終わるか否か
13b7203622 2011-02-23        kinaba: 	static bool endwithyen( const char* str );
13b7203622 2011-02-23        kinaba: 
13b7203622 2011-02-23        kinaba: 	// non-static-ver
13b7203622 2011-02-23        kinaba: 	const char* name() const
13b7203622 2011-02-23        kinaba: 		{ return name(m_pBuf); }
13b7203622 2011-02-23        kinaba: 	const char* ext() const
13b7203622 2011-02-23        kinaba: 		{ return ext(m_pBuf); }
13b7203622 2011-02-23        kinaba: 	const char* ext_all() const
13b7203622 2011-02-23        kinaba: 		{ return ext_all(m_pBuf); }
13b7203622 2011-02-23        kinaba: };
13b7203622 2011-02-23        kinaba: 
13b7203622 2011-02-23        kinaba: #endif