//tab index generator
qint32 HLookDocsMeneger::generateNumber()
{
    qint32 n = 0;
    while(findNum(n))
        n++;
    return n;
}
Beispiel #2
0
 void dealDup(vector<vector<int>>& res, int num, int counter) {
     if (counter < 2) return ;
     int n = res.size();
     for (int i = 0; i < n; i++) {
         vector<int> sub = res[i];
         if (findNum(sub, num) == true) {
             for (int i = 1; i < counter; i++) {
                 sub.push_back(num);
                 res.push_back(sub);
             }
         }
     }
 }
int countWords(const char sTarget[], const char sFilename[], int fd[], FILE *fLogFilePtr){
	/*degiskenler*/
	FILE* 	fTextFilePtr;
	int 	i=0, 
			iColumn = 0, 
			iLine = 1, 
			iCounter=0, 
			iNumberOfChar=0;
	char 	*sText,
			sBuffer[10];

	/*dosyayi ac. gerekli durumda hata basip programi sonlandir*/
	fTextFilePtr=fopen(sFilename, "r");
	if(fTextFilePtr==NULL)
		err_sys("opendir");
	/*dosyadaki karakter sayisi kadar yer al*/
	iNumberOfChar=getNumberOfChar(sFilename);
    sText=(char*)malloc(sizeof(char)*iNumberOfChar);

    rewind(fTextFilePtr);
    /*text stringini olustur*/
    while(!feof(fTextFilePtr)){
    	fscanf(fTextFilePtr, "%c", &sText[i]);
    	++i;
    }
    i=0;
    fclose(fTextFilePtr);
    /*kelimeleri say ve log dosyasini olustur*/
	while(i<iNumberOfChar){
		if(sText[i]!='\n')
			++iColumn;
		else{
			++iLine;
			iColumn=0;
		}
		if(strncmp(&sText[i], sTarget, strlen(sTarget))==0){
			++iCounter;
			if(iCounter==1)
				fprintf(fLogFilePtr, "\n\n%s -> %s\n", sFilename, sTarget); /*bulunan kelimeleri log dosyasina yaz*/
			fprintf(fLogFilePtr, "%s    line: %d,    column: %d\n", findNum(iCounter, sBuffer), iLine, iColumn);
		}
		++i;
	}
	if(iCounter==0)
		fprintf(stdout, "\n\n'%s' didn't found in %s.\n", sTarget, sFilename);
	free(sText);
	fclose(fLogFilePtr);
	return iCounter;
}
//!------------------------------------------
void formLexems()
{
    char var[STRLIM] = {};

    while (buffer[cnt])
    {
        while (isspace(buffer[cnt]) || buffer[cnt] == '\n')
            cnt++;

        if (isdigit(buffer[cnt]))
            AddLexem(NUMBER, findNum(), NULL);
        else
        {
            Descriptor_t typeVar =  findVar(var);
            AddLexem(typeVar, 0, var);
            memset(var, '\0', strlen(var));
        }
    }
}
Beispiel #5
0
int main(void)
{
  /*Variables*/
  int num = 0, N = 0;
  
  /*Scan user input*/
  scanf("%d %d", &num, &N);

  /*Negate num if it is negative*/
  if(num < 0)
    num = -num;
  
  /*Print output
   *If num has lesser digit that N, return 0. 
   *Else, find number at Nth position
   */
  printf("%d\n", countDigit(num) < N ? 0 : findNum(num, N));
  
  return 0;
}
Beispiel #6
0
Bool NamespaceStack::isHidden(const Str &_prefix) const
{
    int ndx = findNum(_prefix);
    return (ndx != -1) ? ((*this)[ndx] -> hidden) : TRUE;
}
Beispiel #7
0
const Str* NamespaceStack::getUri(const Str &_prefix) const
{
    int ndx = findNum(_prefix);
    return (ndx != -1) ? &((*this)[ndx] -> uri) : NULL;
}
Beispiel #8
0
Str* StrStrList::find(const Str &_key) const
{
    int ndx = findNum(_key);
    return (ndx != -1) ? &((*this)[ndx] -> value) : NULL;
}
Beispiel #9
0
bool FlowWidget::eventFilter(QObject *Object, QEvent *event)
{   
	QMouseEvent* e = static_cast<QMouseEvent*>(event);//鼠标事件
	static QPoint clickInipos;////记录鼠标点击的初始坐标,用来移动
	static bool leftMove = false;//判断是否左键移动
	QTimer mouseTimer;//鼠标按压时间计时器
	bool isSingleClick = true;//判断是否是单击
	int selNum = -1;//选择的模块号
	int numEnd = -1;//释放鼠标后找到的箭头结束模块号
	static int startNum = -1;//箭头开始的模块号,为保持记忆性,用静态变量
	//鼠标双击
	if (event->type() == QEvent::MouseButtonDblClick)
	{
		if (mouseTimer.isActive())
			mouseTimer.stop();//双击则停止鼠标计时器,判定为双击,不执行单击函数
		isSingleClick = false;

		//判断那个模块被鼠标双击
		selNum = findNum(e, flowIcon);
		num = selNum + 1;//num暂时先留着,传一下参,+1是去掉main模块
		if (selNum == -1)
		{
			qDebug() << "没有找到双击的模块" << endl;
		}
		else
		{
			if (flowIcon[selNum]->rect().contains(e->pos()) &&
				(e->button() == Qt::LeftButton)) //左键双击模块
			{
				Dialog *dialog = new Dialog(this);
				connect(dialog, SIGNAL(triggerSignal()), this->parent(), SLOT(changeCode()));//传信号给FFCP修正编辑框代码
				dialog->show();
			}
			if (flowIcon[selNum]->rect().contains(e->pos()) &&
				(e->button() == Qt::RightButton)) //右键双击模块
			{
				//销掉模块图
				flowIcon[selNum]->close();
				flowIcon.remove(selNum);

				//清除模块对应的线
				int selLineNum = selNum-1;//第1个模块对应第0个箭头
				if (selLineNum >= 0)
				{
					for (int i = 0; i < 4; i++){
						lines[selLineNum][i].setLine(0, 0, 0, 0);
					}
				}

				//清除相应模块代码
				QStringList globalCodeList = globalCode.split("\n");
				globalCodeList[selNum + 2] = "";//加上头文件两行头文件两行
				globalCode = globalCodeList.join("\n");
				emit triggerSignal();
			}
		}
		
	}

	//鼠标单击
	if (event->type() == QEvent::MouseButtonPress)
	{ 
		mouseTimer.start(300);//300毫秒后双击事件还不产生就判定是单击
		clickInipos = e->pos();//获得单击时鼠标位置
		if (isSingleClick){
			//找到被单击的模块
			selNum = findNum(e, flowIcon);
			startNum = selNum;
			if (selNum == -1){
				qDebug() << "没有找到单击的模块" << endl;
			}
			else{
				//左键单击模块
				if (flowIcon[selNum]->rect().contains(e->pos()) &&
					(e->button() == Qt::LeftButton))
				{					
				}
				//右键单击模块	
				else if (e->button() == Qt::RightButton)
				{
					qDebug() << "右键单击numstart:" << selNum<<endl;
					
				}
			}
			
		}
	}

	//鼠标移动
	if (event->type() == QEvent::MouseMove)
	{

		if (startNum == -1){
			qDebug() << "没有找到要移动的模块" << endl;
		}
		else{
			//移动的相对位移
			int dx = e->pos().x() - clickInipos.x();
			int dy = e->pos().y() - clickInipos.y();

			//左键移动
			if (e->buttons() & Qt::LeftButton)
			{
				//移动控件
				flowIcon[startNum]->move(flowIcon[startNum]->x() + dx, flowIcon[startNum]->y() + dy);
				leftMove = true;//控件移动,通知释放时箭头改变
			}
			//右键移动
			else if (e->buttons() & Qt::RightButton)
			{
				moveArrowShow(startNum, dx, dy);
				update();
			}

		}
	}

	//释放鼠标
	if ((event->type() == QEvent::MouseButtonRelease))
	{
		//找到释放后鼠标所在的模块
		numEnd = findNum(e, flowIcon);
		//右键释放
		if (e->button() == Qt::RightButton)
		{
			if (numEnd == -1 || startNum == -1){
				qDebug() << "没有找到两个模块" << endl;
			}
			else{
				drawArrow(flowIcon[startNum]->pos(), flowIcon[numEnd]->pos());
				update();

				//把箭头指向的所含的代码写入代码查看器
				globalCode = globalCode + flowText[num] + "\n";
				emit triggerSignal();
			}
			for (int i = 0; i < 4; i++){
				lineShow[i].setLine(0, 0, 0, 0);
			}
			update();//释放后清除实时显示的线
			
		}

		//左键释放
		if (e->button() == Qt::LeftButton)
		{
			qDebug() << "左键释放" << endl;
			if (leftMove){//左键移动后释放
				leftMove = false;
				moveArrowLast(numEnd);//移动模块上一个箭头
				moveArrowNext(numEnd);//移动模块下一个箭头
				update();
			}
		}

		startNum = -1;//释放鼠标后,开始位置归位
	}
	return false;
}