File Annotation

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