トークン クラス
これまで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 += "<";
else if (c == L'>') htmlString += ">";
else if (c == L'&') htmlString += "&";
else if (c == L'(') htmlString += "("; //はてな用
else if (c == L')') htmlString += ")"; //はてな用
else if (c == L'|') htmlString += "|"; //はてな用
else htmlString += WideString(c);
}return htmlString;
}