void CCompareResultsDlg::OnCompareViewEdit()
{
  bool bDatabaseRO = (m_LCResults.GetColumn() == CURRENT) ? m_bOriginalDBReadOnly : m_bComparisonDBReadOnly;

  DWORD_PTR dwItemData = m_LCResults.GetItemData(m_LCResults.GetRow());
  st_CompareData *pst_data = GetCompareData(dwItemData);
  ASSERT(pst_data != NULL);

  if (bDatabaseRO || m_LCResults.GetColumn() == COMPARE)
    ProcessFunction(VIEW, pst_data);
  else
    ProcessFunction(EDIT, pst_data);
}
Exemplo n.º 2
0
/*!
  \param Wtree
  \param RecBufSw
*/
xbShort xbExpn::ProcessExpression( xbExpNode * Wtree, xbShort RecBufSw )
{
  xbExpNode * WorkNode;
  xbShort rc;
  if( Wtree == 0 )
    Wtree = Tree;
  memset(WorkBuf, 0x00, WorkBufMaxLen+1 );
  /* initialize the stack - free any expnodes */
  while( GetStackDepth() > 0 ) {
    WorkNode = (xbExpNode *) Pop();
    if( !WorkNode->InTree )
      delete WorkNode;
  }   
  if(( WorkNode = GetFirstTreeNode( Wtree )) == NULL )
    return XB_NO_DATA;

  while( WorkNode ) {
    Push(WorkNode);
    if( WorkNode->Type == 'D' && WorkNode->dbf ) {
        WorkNode->dbf->GetField( WorkNode->FieldNo, WorkNode->StringResult, RecBufSw );
        if( WorkNode->dbf->GetFieldType( WorkNode->FieldNo ) == 'N' || 
            WorkNode->dbf->GetFieldType( WorkNode->FieldNo ) == 'F' )
            WorkNode->DoubResult = WorkNode->dbf->GetDoubleField( WorkNode->FieldNo, RecBufSw );
    } else if( WorkNode->Type == 'O' ) {
      if(( rc = ProcessOperator( RecBufSw )) != XB_NO_ERROR )
        return rc;
    } else if( WorkNode->Type == 'F' )
      if(( rc = ProcessFunction( WorkNode->NodeText )) != XB_NO_ERROR )
        return rc;
      WorkNode = GetNextTreeNode( WorkNode );
  }
  if( GetStackDepth() != 1 )    /* should only have result left in stack */
    return XB_PARSE_ERROR;
  return XB_NO_ERROR;
}
void CCompareResultsDlg::OnCompareSynchronize()
{
  if (m_bOriginalDBReadOnly)
    return;

  CGeneralMsgBox gmb;
  CString cs_temp, cs_title;
  // Initialize set
  GTUSet setGTU;

  // First check database
  if (!m_pcore0->GetUniqueGTUValidated() && !m_pcore0->InitialiseGTU(setGTU)) {
    // Database is not unique to start with - tell user to validate it first
    cs_title.LoadString(IDS_SYNCHFAILED);
    cs_temp.Format(IDS_DBHASDUPLICATES, m_pcore0->GetCurFile().c_str());
    gmb.MessageBox(cs_temp, cs_title, MB_ICONEXCLAMATION);
    return;
  }
  setGTU.clear();  // Don't need it anymore - so clear it now

  DWORD_PTR dwItemData = m_LCResults.GetItemData(m_LCResults.GetRow());
  st_CompareData *pst_data = GetCompareData(dwItemData);
  ASSERT(pst_data != NULL);

  ProcessFunction(SYNCH, pst_data);
}
Exemplo n.º 4
0
bool CCastleGame::ProcessGameUntilBreak()
{
    char szCurrentString[MAX_CHARS_PER_LINE];
    FUNCTIONTYPE eFunction=FUNCTIONFAIL;

    int nNumLoops=0;

    while(true)
    {
        //Read the next statement
        STATEMENTRESULT stResult=ReadStatement(szCurrentString, MAX_CHARS_PER_LINE);
        if(stResult == ST_FUNCTION)
        {
            eFunction=GetFunction(szCurrentString);
            ProcessFunction(eFunction, szCurrentString);
            if(eFunction==END||eFunction==CHOICE)break;
        }
        else if(stResult==ST_LABEL)
        {
            //we don't need to do anything on a label
        }
        else
        {
            CompileError(("Error: An error occured while translating the script!"));
        }

        //if this loop loops too many times we quit because there is probably
        //a problem with the script (for example an infinite GOTO loop)
        nNumLoops++;
        if(nNumLoops>1000) {
            CompileError(("Error: Possible Infinite Loop!"));
            return false;
        }
    }
    return true;
}
Exemplo n.º 5
0
static HRESULT ProcessInterface(__in FILE *fp, __in TYPEINFO_ITEM *lpTypeInfoItem, __in SIZE_T nPass)
{
  ITYPEINFO_LIST cTypeInfoList;
  CAutoTypeAttr cTypeAttr, cTypeAttr2;
  CNktStringW cStrTempW;
  WORD i;
  HRESULT hRes;
  SIZE_T k1;
  BOOL b;

  if (nPass == 1)
  {
    WRITEANSI_AND_CHECK(fp, "\r\n");
    WRITEANSI_AND_CHECK(fp, "typedef struct ");
    WRITEWIDE_AND_CHECK(fp, (LPWSTR)(lpTypeInfoItem->szNameW));
    WRITEANSI_AND_CHECK(fp, " ");
    WRITEWIDE_AND_CHECK(fp, (LPWSTR)(lpTypeInfoItem->szNameW));
    WRITEANSI_AND_CHECK(fp, ";\r\n");
    return S_OK;
  }
  //second pass
  hRes = cTypeAttr.Set(lpTypeInfoItem->cTypeInfo);
  EXIT_ON_ERROR(hRes);
  //typedef struct IUnknown IUnknown;
  WRITEANSI_AND_CHECK(fp, "\r\n");
  WRITEANSI_AND_CHECK(fp, "typedef struct ");
  WRITEWIDE_AND_CHECK(fp, (LPWSTR)(lpTypeInfoItem->szNameW));
  WRITEANSI_AND_CHECK(fp, "Vtbl {\r\n");
  //build parents
  hRes = BuildInterfaceBaseList(cTypeInfoList, lpTypeInfoItem->cTypeInfo);
  EXIT_ON_ERROR(hRes);
  for (k1=0; k1<cTypeInfoList.GetCount(); k1++)
  {
    hRes = cTypeAttr2.Set(cTypeInfoList[k1]);
    EXIT_ON_ERROR(hRes);
    for (i=0; i<cTypeAttr2->cFuncs; i++)
    {
      hRes = ProcessFunction(fp, i, cTypeAttr2.Get(), cTypeInfoList[k1], 1, lpTypeInfoItem->szNameW);
      EXIT_ON_ERROR(hRes);
      b = TRUE;
    }
  }
  for (k1=0; k1<cTypeInfoList.GetCount(); k1++)
  {
    hRes = cTypeAttr2.Set(cTypeInfoList[k1]);
    EXIT_ON_ERROR(hRes);
    for (i=0; i<cTypeAttr2->cVars; i++)
    {
      if (b != FALSE)
      {
        WRITEANSI_AND_CHECK(fp, "\r\n");
        b = FALSE;
      }
      hRes = ProcessVariable(fp, i, cTypeAttr2.Get(), cTypeInfoList[k1], 1);
      EXIT_ON_ERROR(hRes);
    }
  }
  WRITEANSI_AND_CHECK(fp, "};\r\n\r\n");
  //----
  WRITEANSI_AND_CHECK(fp, "struct ");
  WRITEWIDE_AND_CHECK(fp, (LPWSTR)(lpTypeInfoItem->szNameW));
  WRITEANSI_AND_CHECK(fp, " {\r\n");
  WRITEINDENT_AND_CHECK(fp, 1);
  WRITEANSI_AND_CHECK(fp, "struct ");
  WRITEWIDE_AND_CHECK(fp, (LPWSTR)(lpTypeInfoItem->szNameW));
  WRITEANSI_AND_CHECK(fp, "Vtbl *lpVtbl;\r\n");
  WRITEANSI_AND_CHECK(fp, "};\r\n");
  return S_OK;
}
Exemplo n.º 6
0
 void Execute(Function* function) {
     ProcessFunction(function);
 }
void CCompareResultsDlg::OnCompareCopyToOriginalDB()
{
  if (m_bOriginalDBReadOnly)
    return;

  // Check not already equal
  CString cs_text = m_LCResults.GetItemText(m_LCResults.GetRow(), m_LCResults.GetColumn());
  if (cs_text.Compare(L"=") == 0)
    return;

  CGeneralMsgBox gmb;
  CString cs_msg;
  int ifunction;

  const CString cs_originaldb(MAKEINTRESOURCE(IDS_ORIGINALDB));
  const CString cs_comparisondb(MAKEINTRESOURCE(IDS_COMPARISONDB));

  cs_msg.Format(IDS_COPYLEFTRIGHT, cs_comparisondb, cs_originaldb);
  ifunction = COPY_TO_ORIGINALDB;

  if (cs_text.Right(1) == L"*")
    cs_msg += CString(MAKEINTRESOURCE(IDS_COPYUNKNOWNFIELDS));

  if (gmb.AfxMessageBox(cs_msg, NULL,
                        MB_YESNO | MB_ICONWARNING | MB_DEFBUTTON2) != IDYES)
    return;

  LRESULT lres(FALSE);
  DWORD_PTR dwItemData = m_LCResults.GetItemData(m_LCResults.GetRow());
  st_CompareData *pst_data = GetCompareData(dwItemData);
  ASSERT(pst_data != NULL);

  const int indatabase = pst_data->indatabase;
  if (m_LCResults.GetColumn() == indatabase || indatabase == BOTH) {
    lres = ProcessFunction(ifunction, pst_data);
  } else
    return;

  if (lres != TRUE)
    return;

  if (pst_data->unknflds0)
    m_LCResults.SetItemText(m_LCResults.GetRow(), CURRENT, L"=*");
  else
    m_LCResults.SetItemText(m_LCResults.GetRow(), CURRENT, L"=");

  if (pst_data->unknflds1)
    m_LCResults.SetItemText(m_LCResults.GetRow(), COMPARE, L"=*");
  else
    m_LCResults.SetItemText(m_LCResults.GetRow(), COMPARE, L"=");

  for (int i = 0; i < m_nCols - 5; i++)
    m_LCResults.SetItemText(m_LCResults.GetRow(), USER + 1 + i, L"-");

  st_CompareData st_newdata;
  st_newdata = *pst_data;
  st_newdata.bsDiffs.reset();

  const int id = pst_data->id;
  CompareData::iterator cd_iter;
  switch (indatabase) {
    case BOTH:
      m_numConflicts--;
      cd_iter = std::find_if(m_Conflicts.begin(), m_Conflicts.end(),
                             std::bind2nd(std::equal_to<int>(), id));
      if (cd_iter != m_Conflicts.end())
        m_Conflicts.erase(cd_iter);
      break;
    case CURRENT:
      m_numOnlyInCurrent--;
      cd_iter = std::find_if(m_OnlyInCurrent.begin(), m_OnlyInCurrent.end(),
                             std::bind2nd(std::equal_to<int>(), id));
      if (cd_iter != m_OnlyInCurrent.end())
        m_OnlyInCurrent.erase(cd_iter);
      break;
    case COMPARE:
      m_numOnlyInComp--;
      cd_iter = std::find_if(m_OnlyInComp.begin(), m_OnlyInComp.end(),
                             std::bind2nd(std::equal_to<int>(), id));
      if (cd_iter != m_OnlyInComp.end())
        m_OnlyInComp.erase(cd_iter);
      break;
    case IDENTICAL:
    default:
      ASSERT(0);
  }

  m_numIdentical++;
  st_newdata.id = static_cast<int>(m_numIdentical);
  st_newdata.indatabase = IDENTICAL;
  m_Identical.push_back(st_newdata);
  m_LCResults.SetItemData(m_LCResults.GetRow(), MAKELONG(IDENTICAL, st_newdata.id));
  UpdateStatusBar();

  m_OriginalDBChanged = true;
}