////////////////////////////////////////////////////////////////////////////
// CCompoundStr クラスのインタフェース宣言
//
////////////////////////////////////////////////////////////////////////////

#if !defined( COMPOUNDSTR_H_INCLUDED_ )
#define COMPOUNDSTR_H_INCLUDED_

#include <Xm/Xm.h>
#include <string>
#include "TaEditJPEXT.h"

class CCompoundStr
{
public:
	CCompoundStr() : m_str( NULL ){};
	CCompoundStr( const char *pStr ) : m_str( NULL ) {
		SetStr( pStr );
	};
	CCompoundStr( const wchar_t *pStr ) : m_str( NULL ) {
		SetStr( pStr );
	};
	CCompoundStr( XmString str ) : m_str( str ) {};

	~CCompoundStr() {
		Free();
	};

	// 文字列を設定
	void SetStr( const char *pStr ) {
		Free();
		if ( NULL == pStr ) return ;
		m_str = XmStringCreateLocalized( const_cast< char* >( pStr ) );
		// m_str = XmStringCreateLtoR( const_cast< char* >( pStr ), XmFONTLIST_DEFAULT_TAG );
	};
	void SetStr( const wchar_t *pStr ) {
		std::string wStr;
		if ( JPEXT_WCStoMBS( pStr, &wStr ) )
			SetStr( wStr.c_str() );
	};
	void SetStr( XmString pStr ) {
		Free();
		m_str = pStr;
	}

	// 文字列を取得
	XmString GetStr()  const {
		return m_str;
	};

	operator XmString()  const {
		return m_str;
	};

	// 文字列を解放
	void Free() {
		if ( m_str )
			XmStringFree( m_str );
		m_str = NULL;
	};

protected:
	XmString m_str;
};

#endif // COMPOUNDSTR_H_INCLUDED_

