Exemple #1
0
/**
 * @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;
}
Exemple #4
0
int paraseRequest(char *buffer, size_t size, LINE_PARASE_PARAM &param)
{
	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;
}