CInputVirtualDevice* CInputDevice::CreateVariableVirtualDeviceFromThis(CInputActions* pcInputActions) { CInputVirtualDevice* pcVirtual; CInputSourceDesc* pcSource; CInputDevices* pcInputDevices; CChars szTemp; CArrayIntAndPointer apcSourceDescs; int i; pcInputDevices = GetInputDevices(); szTemp.Init(mszFriendlyName.Text()); szTemp.Append(" Variable"); pcVirtual = pcInputDevices->CreateVirtualDevice(szTemp.Text()); szTemp.Kill(); mcVariables.SetChords(pcVirtual->GetChords()); apcSourceDescs.Init(8); mpcDesc->GetVariableChordDescs()->GetInputSourceDescs(&apcSourceDescs, mpcDesc); for (i = 0; i < apcSourceDescs.NumElements(); i++) { pcSource = (CInputSourceDesc*)apcSourceDescs.GetPtr(i); pcVirtual->AddSource(this, pcSource); } apcSourceDescs.Kill(); pcVirtual->DoneAddingSources(); GetInputDevices()->AddChords(pcVirtual, mpcDesc->GetVariableChordDescs(), this); pcInputDevices->UpdateCommonality(); pcVirtual->Unstoppable(); return pcVirtual; }
BOOL CLogFile::FindHoles(CArrayIntAndPointer* papvOverlapping, filePos iPosition, filePos iLength) { CArrayIntAndPointer apvOverlappingSorted; int i; CLogFileCommandWrite* psWrite; int eCommand; BOOL bHoles; filePos iEnd; if (iLength == 0) { return FALSE; } if (papvOverlapping->NumElements() == 0) { return FALSE; } apvOverlappingSorted.Init(1); apvOverlappingSorted.Copy(papvOverlapping); apvOverlappingSorted.QuickSort(CompareLogFileWrite); apvOverlappingSorted.Get(0, (void**)&psWrite, &eCommand); if (psWrite->iPosition > iPosition) { apvOverlappingSorted.Kill(); return TRUE; } else { iEnd = psWrite->iPosition + psWrite->iSize -1; } bHoles = FALSE; for (i = 1; i < apvOverlappingSorted.NumElements(); i++) { apvOverlappingSorted.Get(i, (void**)&psWrite, &eCommand); if (psWrite->iPosition > (iEnd+1)) { bHoles = TRUE; break; } iEnd = psWrite->iPosition + psWrite->iSize -1; if (iEnd >= (iPosition + iLength-1)) { break; } } if (iEnd < (iPosition + iLength-1)) { bHoles = TRUE; } apvOverlappingSorted.Kill(); return bHoles; }
BOOL CCalculator::Expression(CCalcExpression** ppcExpression) { BOOL bOperator; BOOL bOperand; BOOL bFirst; CArrayIntAndPointer cArray; CCalcOperator* pcOperator; CCalcExpression* pcOperand; cArray.Init(16); bFirst = TRUE; for (;;) { for (;;) { bOperator = Operator(&pcOperator); if (!bOperator) { break; } cArray.Add(pcOperator, 0); } bOperand = Operand(&pcOperand); if (!bOperand && !bOperator) { if (bFirst) { cArray.Kill(); return FALSE; } else { BuildExpression(ppcExpression, &cArray); cArray.Kill(); if (*ppcExpression == NULL) { return FALSE; } else { return TRUE; } } } cArray.Add(pcOperand, 0); bFirst = FALSE; } }