R4에서
아래의 코드는 엑셀 sheet를 parsing하는 기능의 일부분이다. 내가 작성을 하였고 수정을 해야하는데 분석을 못 하고 있다. 이유인즉 Logic이 너무 복잡해서일 것이다. 예를 들어 (1) and (2)의 의미를 바로 유추할 수가 없었다. 더구나 더 아래로 내려가면 유추 작업이 더욱 어려워지게 되었다. 때문에 이는 의미를 가지는 함수 단위로 재정립하는 것이 좋을 듯 하다. 이 작업은 내일 하련다. 보람된 하루였다...
int CEventGen::m_GetVerticalState(int nCol, int nRow)
{
int nRetState;
nRow--;
if(!m_IsEmpty(nCol, nRow)) // (1)
{
if(m_IsEmpty(nCol-1, nRow+1)==1 || nCol==1) // (2)
{
nRetState = m_GetCell(nCol, nRow);
}
else
{
nRetState = m_GetLowerConnectedState(nCol, nRow+1);
}
}
else
{
if(m_IsSubMenu(nCol, nRow)==1 || nCol==1)
{
nRetState = m_GetUpperConnectedState(nCol, nRow);
}
else
{
nRow++;
while(1)
{
nRow++;
if(nRow>ROW_MAX)
{
OutputDebugString("m_GetVerticalState error\n");
}
if(m_IsEmpty(nCol, nRow))
{
if(!m_IsSubMenu(nCol, nRow))
{
nRetState = m_GetCell(nCol, nRow-1);
break;
}
else
{
continue;
}
}
else
{
nRetState = m_GetCell(nCol, nRow);
break;
}
}
}
}
return nRetState;
}