トークン クラス

これまでC# で作成してきた「SourceToHTML」を、C++Builder に焼きなおしてみます。

Token.h


//*******************************************************************************************************
// トークン情報クラス
//*******************************************************************************************************
#ifndef TokenH
#define TokenH
//---------------------------------------------------------------------------
#include <Classes.hpp>
//---------------------------------------------------------------------------
class TToken
{
public:
WideString tokenString;// トークンの文字列
WideString tokenKind; // トークンの種類
bool IsFixed; // 確定済みか

// 初期化
__fastcall TToken(WideString argString, WideString argKind);
// "<", ">", "&", "(", "), "|" を変換
WideString __fastcall getTokenHtml();
__property WideString tokenHtml = {read=getTokenHtml};
};
#endif

Token.cpp


//*******************************************************************************************************
// トークン情報クラス
//*******************************************************************************************************
#pragma hdrstop
#include "Token.h"
//-------------------------------------------------------------------------------------------------------
#pragma package(smart_init)
//-------------------------------------------------------------------------------------------------------
// 初期化
//-------------------------------------------------------------------------------------------------------
__fastcall TToken::TToken(WideString argString, WideString argKind)
{
tokenString = argString;
tokenKind = argKind;
IsFixed = false;
}
//-------------------------------------------------------------------------------------------------------
// "<", ">", "&", "(", "), "|" を変換
//-------------------------------------------------------------------------------------------------------
WideString __fastcall TToken::getTokenHtml()
{
if (tokenString == NULL) return "";

WideString htmlString = "";
for (int i=1;i<=wcslen(tokenString);i++)
{
wchar_t c = tokenString[i];

if (c == L'<') htmlString += "&#x3C;";
else if (c == L'>') htmlString += "&#x3E;";
else if (c == L'&') htmlString += "&#x26;";
else if (c == L'(') htmlString += "&#x28;"; //はてな
else if (c == L')') htmlString += "&#x29;"; //はてな
else if (c == L'|') htmlString += "&#x7C;"; //はてな
else htmlString += WideString(c);
}

return htmlString;
}