Diary

R4에서

tomato13 2008. 3. 5. 22:12

아래의 코드는 엑셀 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;
}