/** * @brief ResultsPageWidget::on_btnNewSearch_clicked */ void ResultsPageWidget::on_btnNewSearch_clicked() { bool newSearchPossible = true; QVariant varDatasetNo; emit readFromStack(4, varDatasetNo); if (!varDatasetNo.canConvert<int>()) { LOG_ERR("could not find dataset on stack"); } QVariant varSearchQuery; emit readFromStack(3, varSearchQuery); if(!varSearchQuery.canConvert<std::shared_ptr<SearchQuery>>()) { newSearchPossible = false; LOG_ERR("could not find search query on stack"); } QVariant varAlgorithm; emit readFromStack(2, varAlgorithm); if(!varAlgorithm.canConvert<QPointer<Algorithm>>()) { LOG_ERR("could not find algorithm on stack"); } // ToDo: read parameters from stack QVariant varFeedback; if (newSearchPossible) { SearchQuery* query = varSearchQuery.value<std::shared_ptr<SearchQuery>>().get(); auto feedback = std::make_shared<SearchFeedback>(mModel.getFeedback()); QList<DataPacket*> algoInputs; algoInputs.push_back(query); algoInputs.push_back(feedback.get()); varFeedback.setValue(feedback); if(!mAlgorithm->setInputs(algoInputs)){ newSearchPossible = false; } } if (newSearchPossible) { emit pushToStack(varFeedback); emit pushToStack(varDatasetNo); emit pushToStack(varSearchQuery); emit pushToStack(varAlgorithm); //emit pushToStack(varParameter); emit exit(EXIT_NEW_SEARCH); } }
void VirtStack68k::pushToStack(int size){ VariableItem* StackVar=new VariableItem(); TAG *tagNomVar=new TAG(); char* buffer= new char[200]; sprintf(buffer,"_systArgVar%i",mTempCtr++); tagNomVar->SetIdentif(buffer); StackVar->setTagName(tagNomVar); StackVar->SetSize(size); pushToStack(StackVar); }
// Driver program int main() { struct stack *newStack = createStack(4); //Pushing elements to stack pushToStack(10, newStack); pushToStack(20, newStack); pushToStack(30, newStack); pushToStack(40, newStack); printf("After pushing\n"); printStack(newStack); //Pop element from stack if(popFromStack(newStack) == -1) { printf("Stack is empty\n"); } printf("\nAfter popping\n"); printStack(newStack); return 0; }
int paraseRequest(char *buffer, size_t size, LINE_PARASE_PARAM ¶m) { size_t &wordIndex = param.wordMgr.wordCount;//数组下标,是个引用哈 for(size_t i = 0; i < size; ++i) { if(isLineEnd(buffer[i])) { param.state = HTTP_OPTION; ++wordIndex; return i+1; //已经解析了i+1字节 } else if(isSeparator(buffer[i])) //是分隔符,组成一个单词 { ++wordIndex; }else { pushToStack(param.wordMgr.word[wordIndex], buffer+i); } } return 0; }