//tab index generator qint32 HLookDocsMeneger::generateNumber() { qint32 n = 0; while(findNum(n)) n++; return n; }
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)); } } }
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; }
Bool NamespaceStack::isHidden(const Str &_prefix) const { int ndx = findNum(_prefix); return (ndx != -1) ? ((*this)[ndx] -> hidden) : TRUE; }
const Str* NamespaceStack::getUri(const Str &_prefix) const { int ndx = findNum(_prefix); return (ndx != -1) ? &((*this)[ndx] -> uri) : NULL; }
Str* StrStrList::find(const Str &_key) const { int ndx = findNum(_key); return (ndx != -1) ? &((*this)[ndx] -> value) : NULL; }
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; }