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); }
/*! \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); }
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; }
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; }
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; }