📄 csharedata_new.cpp
字号:
GetColorNameByIndex( types.m_RegexKeywordArr[j].m_nColorIndex ),
types.m_RegexKeywordArr[j].m_szKeyword);
cProfile.IOProfileData( bRead, pszSecName, szKeyName, szKeyData, 0 );
}
}
}
//@@@ 2001.11.17 add end MIK
/* 禁則 */
cProfile.IOProfileData( bRead, pszSecName, "bKinsokuHead" , types.m_bKinsokuHead );
cProfile.IOProfileData( bRead, pszSecName, "bKinsokuTail" , types.m_bKinsokuTail );
cProfile.IOProfileData( bRead, pszSecName, "bKinsokuRet" , types.m_bKinsokuRet ); //@@@ 2002.04.13 MIK
cProfile.IOProfileData( bRead, pszSecName, "bKinsokuKuto" , types.m_bKinsokuKuto ); //@@@ 2002.04.17 MIK
cProfile.IOProfileData( bRead, pszSecName, "szKinsokuHead" ,
types.m_szKinsokuHead,
sizeof( m_pShareData->m_Types[0].m_szKinsokuHead ));
cProfile.IOProfileData( bRead, pszSecName, "szKinsokuTail" ,
types.m_szKinsokuTail,
sizeof( m_pShareData->m_Types[0].m_szKinsokuTail ));
cProfile.IOProfileData( bRead, pszSecName, "bUseDocumentIcon" , types.m_bUseDocumentIcon ); // Sep. 19 ,2002 genta 変数名誤り修正
}
}
/*!
@brief 共有データのKeyWordsセクションの入出力
@param[in] bRead true: 読み込み / false: 書き込み
@param[in,out] cProfile INIファイル入出力クラス
@date 2005-04-07 D.S.Koba ShareData_IO_2から分離。
*/
void CShareData::ShareData_IO_KeyWords( const bool bRead, CProfile& cProfile )
{
const char* pszSecName = "KeyWords";
int i, j;
char szKeyName[64];
char szKeyData[1024];
CKeyWordSetMgr* pCKeyWordSetMgr = &m_pShareData->m_CKeyWordSetMgr;
int nKeyWordSetNum = pCKeyWordSetMgr->m_nKeyWordSetNum;
cProfile.IOProfileData( bRead, pszSecName, "nCurrentKeyWordSetIdx" , pCKeyWordSetMgr->m_nCurrentKeyWordSetIdx );
bool bIOSuccess = cProfile.IOProfileData( bRead, pszSecName, "nKeyWordSetNum", nKeyWordSetNum );
if( bRead ){
// nKeyWordSetNum が読み込めていれば、すべての情報がそろっていると仮定して処理を進める
if( bIOSuccess ){
// 2004.11.25 Moca キーワードセットの情報は、直接書き換えないで関数を利用する
// 初期設定されているため、先に削除しないと固定メモリの確保に失敗する可能性がある
int nMemLen = MAX_KEYWORDNUM * ( MAX_KEYWORDLEN + 1 ) + 1;
char *pszMem = new char[nMemLen];
pCKeyWordSetMgr->ResetAllKeyWordSet();
for( i = 0; i < nKeyWordSetNum; ++i ){
int nKEYWORDCASE = 0;
int nKeyWordNum = 0;
wsprintf( szKeyName, "szSN[%02d]", i );
cProfile.IOProfileData( bRead, pszSecName, szKeyName, szKeyData, sizeof( szKeyData ));
wsprintf( szKeyName, "nCASE[%02d]", i );
cProfile.IOProfileData( bRead, pszSecName, szKeyName, nKEYWORDCASE );
wsprintf( szKeyName, "nKWN[%02d]", i );
cProfile.IOProfileData( bRead, pszSecName, szKeyName, nKeyWordNum );
pCKeyWordSetMgr->AddKeyWordSet( szKeyData, nKEYWORDCASE, nKeyWordNum );
// 2004.11.25 Moca szKW[%02d].Size の情報は利用する意味がない。
// wsprintf( szKeyName, "szKW[%02d].Size", i );
// cProfile.IOProfileData( bRead, pszSecName, szKeyName, nMemLen );
wsprintf( szKeyName, "szKW[%02d]", i );
if( true == cProfile.IOProfileData( bRead, pszSecName, szKeyName, pszMem, nMemLen ) ){
pCKeyWordSetMgr->SetKeyWordArr( i, nKeyWordNum, pszMem );
}
}
delete [] pszMem;
}
}else{
int nSize = pCKeyWordSetMgr->m_nKeyWordSetNum;
for( i = 0; i < nSize; ++i ){
wsprintf( szKeyName, "szSN[%02d]", i );
cProfile.IOProfileData( bRead, pszSecName, szKeyName,
pCKeyWordSetMgr->m_szSetNameArr[i],
sizeof( pCKeyWordSetMgr->m_szSetNameArr[0] ));
wsprintf( szKeyName, "nCASE[%02d]", i );
cProfile.IOProfileData( bRead, pszSecName, szKeyName, pCKeyWordSetMgr->m_nKEYWORDCASEArr[i] );
wsprintf( szKeyName, "nKWN[%02d]", i );
cProfile.IOProfileData( bRead, pszSecName, szKeyName, pCKeyWordSetMgr->m_nKeyWordNumArr[i] );
int nMemLen = 0;
for( j = 0; j < pCKeyWordSetMgr->m_nKeyWordNumArr[i]; ++j ){
nMemLen += strlen( pCKeyWordSetMgr->GetKeyWord( i, j ) );
nMemLen ++;
}
nMemLen ++;
wsprintf( szKeyName, "szKW[%02d].Size", i );
cProfile.IOProfileData( bRead, pszSecName, szKeyName, nMemLen );
char* pszMem = new char[nMemLen + 1]; // May 25, 2003 genta 区切りをTABに変更したので,最後の\0の分を追加
char* pMem = pszMem;
for( j = 0; j < pCKeyWordSetMgr->m_nKeyWordNumArr[i]; ++j ){
// May 25, 2003 genta 区切りをTABに変更
int kwlen = strlen( pCKeyWordSetMgr->GetKeyWord( i, j ) );
memcpy( pMem, pCKeyWordSetMgr->GetKeyWord( i, j ), kwlen );
pMem += kwlen;
*pMem++ = '\t';
}
*pMem = '\0';
wsprintf( szKeyName, "szKW[%02d]", i );
cProfile.IOProfileData( bRead, pszSecName, szKeyName, pszMem, nMemLen );
delete [] pszMem;
}
}
}
/*!
@brief 共有データのMacroセクションの入出力
@param[in] bRead true: 読み込み / false: 書き込み
@param[in,out] cProfile INIファイル入出力クラス
@date 2005-04-07 D.S.Koba ShareData_IO_2から分離。
*/
void CShareData::ShareData_IO_Macro( const bool bRead, CProfile& cProfile )
{
const char* pszSecName = "Macro";
int i;
char szKeyName[64];
for( i = 0; i < MAX_CUSTMACRO; ++i ){
MacroRec& macrorec = m_pShareData->m_MacroTable[i];
// Oct. 4, 2001 genta あまり意味がなさそうなので削除:3行
// 2002.02.08 hor 未定義値を無視
if( !bRead && !lstrlen(macrorec.m_szName) && !lstrlen(macrorec.m_szFile) ) continue;
wsprintf( szKeyName, "Name[%03d]", i );
cProfile.IOProfileData( bRead, pszSecName, szKeyName, macrorec.m_szName, MACRONAME_MAX - 1 );
wsprintf( szKeyName, "File[%03d]", i );
cProfile.IOProfileData( bRead, pszSecName, szKeyName, macrorec.m_szFile, _MAX_PATH );
wsprintf( szKeyName, "ReloadWhenExecute[%03d]", i );
cProfile.IOProfileData( bRead, pszSecName, szKeyName, macrorec.m_bReloadWhenExecute );
}
}
/*!
@brief 共有データのOtherセクションの入出力
@param[in] bRead true: 読み込み / false: 書き込み
@param[in,out] cProfile INIファイル入出力クラス
@date 2005-04-07 D.S.Koba ShareData_IO_2から分離。
*/
void CShareData::ShareData_IO_Other( const bool bRead, CProfile& cProfile )
{
const char* pszSecName = "Other"; //セクションを1個作成した。2003.05.12 MIK
int i;
char szKeyName[64];
/* **** その他のダイアログ **** */
/* 外部コマンド実行の「標準出力を得る」 */
cProfile.IOProfileData( bRead, pszSecName, "bGetStdout" , m_pShareData->m_bGetStdout );
/* 指定行へジャンプの「改行単位の行番号」か「折り返し単位の行番号」か */
cProfile.IOProfileData( bRead, pszSecName, "bLineNumIsCRLF" , m_pShareData->m_bLineNumIsCRLF );
/* DIFF差分表示 */ //@@@ 2002.05.27 MIK
cProfile.IOProfileData( bRead, pszSecName, "nDiffFlgOpt" , m_pShareData->m_nDiffFlgOpt );
/* CTAGS */ //@@@ 2003.05.12 MIK
cProfile.IOProfileData( bRead, pszSecName, "nTagsOpt" , m_pShareData->m_nTagsOpt );
cProfile.IOProfileData( bRead, pszSecName, "szTagsCmdLine" , m_pShareData->m_szTagsCmdLine, sizeof( m_pShareData->m_szTagsCmdLine ) );
//From Here 2005.04.03 MIK キーワード指定タグジャンプ
cProfile.IOProfileData( bRead, pszSecName, "_TagJumpKeyword_Counts", m_pShareData->m_nTagJumpKeywordArrNum );
for( i = 0; i < m_pShareData->m_nTagJumpKeywordArrNum; ++i ){
wsprintf( szKeyName, "TagJumpKeyword[%02d]", i );
if( i >= m_pShareData->m_nTagJumpKeywordArrNum ){
strcpy( m_pShareData->m_szTagJumpKeywordArr[i], "" );
}
cProfile.IOProfileData( bRead, pszSecName, szKeyName,
m_pShareData->m_szTagJumpKeywordArr[i], sizeof( m_pShareData->m_szTagJumpKeywordArr[0] ));
}
cProfile.IOProfileData( bRead, pszSecName, "m_bTagJumpICase" , m_pShareData->m_bTagJumpICase );
cProfile.IOProfileData( bRead, pszSecName, "m_bTagJumpAnyWhere" , m_pShareData->m_bTagJumpAnyWhere );
//From Here 2005.04.03 MIK キーワード指定タグジャンプの
// MIK バージョン情報(書き込みのみ)
if( ! bRead ){
TCHAR iniVer[256];
wsprintf( iniVer, _T("%d.%d.%d.%d"),
HIWORD( m_pShareData->m_dwProductVersionMS ),
LOWORD( m_pShareData->m_dwProductVersionMS ),
HIWORD( m_pShareData->m_dwProductVersionLS ),
LOWORD( m_pShareData->m_dwProductVersionLS ) );
cProfile.IOProfileData( bRead, pszSecName, _T("szVersion") , iniVer, sizeof( iniVer ) );
}
}
/*!
@brief 色設定 I/O
指定された色設定を指定されたセクションに書き込む。または
指定されたセクションからいろ設定を読み込む。
@param[in,out] pcProfile 書き出し、読み込み先Profile object (入出力方向はbReadに依存)
@param[in] bRead true: 読み出し / false: 書き込み
@param[in] pszSecName セクション名
@param[in,out] pColorInfoArr 書き出し、読み込み対象の色設定へのポインタ (入出力方向はbReadに依存)
*/
void CShareData::IO_ColorSet( CProfile* pcProfile, bool bRead, const char* pszSecName, ColorInfo* pColorInfoArr )
{
char szKeyName[256];
char szKeyData[1024];
int j;
for( j = 0; j < COLORIDX_LAST; ++j ){
static const char* pszForm = "%d,%d,%06x,%06x,%d";
#ifndef STR_COLORDATA_HEAD3
wsprintf( szKeyName, "CI[%02d]", j );
#else
wsprintf( szKeyName, "C[%s]", colorIDXKeyName[j] ); //Stonee, 2001/01/12, 2001/01/15
#endif
if( bRead ){
if( true == pcProfile->IOProfileData( bRead, pszSecName, szKeyName, szKeyData, sizeof( szKeyData )) ){
pColorInfoArr[j].m_bUnderLine = FALSE;
sscanf( szKeyData, pszForm,
&pColorInfoArr[j].m_bDisp,
&pColorInfoArr[j].m_bFatFont,
&pColorInfoArr[j].m_colTEXT,
&pColorInfoArr[j].m_colBACK,
&pColorInfoArr[j].m_bUnderLine
);
}
}else{
wsprintf( szKeyData, pszForm,
pColorInfoArr[j].m_bDisp,
pColorInfoArr[j].m_bFatFont,
pColorInfoArr[j].m_colTEXT,
pColorInfoArr[j].m_colBACK,
pColorInfoArr[j].m_bUnderLine
);
pcProfile->IOProfileData( bRead, pszSecName, szKeyName, szKeyData, 0 );
}
}
return;
}
/*!
@brief タグジャンプ情報の保存
タグジャンプするときに、タグジャンプ先の情報を保存する。
@param[in] pTagJump 保存するタグジャンプ情報
@retval true 保存成功
@retval false 保存失敗
@date 2004/06/21 新規作成
@date 2004/06/22 Moca 一杯になったら一番古い情報を削除しそこに新しい情報を入れる
*/
void CShareData::PushTagJump(const TagJump *pTagJump)
{
int i = m_pShareData->m_TagJumpTop + 1;
if( MAX_TAGJUMPNUM <= i ){
i = 0;
}
if( m_pShareData->m_TagJumpNum < MAX_TAGJUMPNUM ){
m_pShareData->m_TagJumpNum++;
}
m_pShareData->m_TagJump[i] = *pTagJump;
m_pShareData->m_TagJumpTop = i;
}
/*!
@brief タグジャンプ情報の参照
タグジャンプバックするときに、タグジャンプ元の情報を参照する。
@param[out] pTagJump 参照するタグジャンプ情報
@retval true 参照成功
@retval false 参照失敗
@date 2004/06/21 新規作成
@date 2004/06/22 Moca SetTagJump変更による修正
*/
bool CShareData::PopTagJump(TagJump *pTagJump)
{
if( 0 < m_pShareData->m_TagJumpNum ){
*pTagJump = m_pShareData->m_TagJump[m_pShareData->m_TagJumpTop--];
if( m_pShareData->m_TagJumpTop < 0 ){
m_pShareData->m_TagJumpTop = MAX_TAGJUMPNUM - 1;
}
m_pShareData->m_TagJumpNum--;
return true;
}
return false;
}
/*[EOF]*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -