int AddToTree(WORD **DestTree, size_t *Treecount, char *Word) { int Status = SUCCESS; int CompResult = 0; /* safety check */ assert(NULL != DestTree); assert(NULL != Treecount); assert(NULL != Word); /* ok, either *DestTree is NULL or it isn't (deep huh?) */ if(NULL == *DestTree) /* this is the place to add it then */ { *DestTree = malloc(sizeof **DestTree); if(NULL == *DestTree) { /* horrible - we're out of memory */ Status = NO_MEMORY_FOR_WORDNODE; } else { (*DestTree)->Left = NULL; (*DestTree)->Right = NULL; (*DestTree)->Count = 1; (*DestTree)->Word = dupstr(Word); if(NULL == (*DestTree)->Word) { /* even more horrible - we've run out of memory in the middle */ Status = NO_MEMORY_FOR_WORD; free(*DestTree); *DestTree = NULL; } else { /* everything was successful, add one to the tree nodes count */ ++*Treecount; } } } else /* we need to make a decision */ { CompResult = strcmp(Word, (*DestTree)->Word); if(0 < CompResult) { Status = AddToTree(&(*DestTree)->Left, Treecount, Word); } else if(0 > CompResult) { Status = AddToTree(&(*DestTree)->Left, Treecount, Word); } else { /* add one to the count - this is the same node */ ++(*DestTree)->Count; } } /* end of else we need to make a decision */ return Status; }
void autobots_toutiao::onActImportComment() { QString path = QFileDialog::getOpenFileName(this, QStringLiteral("请选择文件路径"), "", QStringLiteral("Txt(*.txt)")); if (path.isEmpty()) //判断用户是否选择了文件 { //emitLogMessage(QStringLiteral("取消打开文件")); return; } QFile file(path); if (!file.open(QIODevice::ReadOnly)) { QMessageBox::critical(NULL, "提示", "无法打开文件"); return ; } QTextStream text_stream(&file); //QString str = text_stream.readAll(); int n_row = 0; ui.treeWidget_comment_id->clear(); //m_comment_item_list.clear(); m_comment_list.clear(); while(!text_stream.atEnd()) { QString line_str = text_stream.readLine(); if (!line_str.isEmpty()) { AddToTree(line_str); } } file.close(); }
int ReadInputToTree(WORD **DestTree, size_t *Treecount, FILE *Input) { int Status = SUCCESS; char Buf[8192] = {0}; char *Word = NULL; /* safety check */ assert(NULL != DestTree); assert(NULL != Treecount); assert(NULL != Input); /* for every line */ while(NULL != fgets(Buf, sizeof Buf, Input)) { /* strtok the input to get only alpha character words */ Word = strtok(Buf, NONALPHA); while(SUCCESS == Status && NULL != Word) { /* deal with this word by adding it to the tree */ Status = AddToTree(DestTree, Treecount, Word); /* next word */ if(SUCCESS == Status) { Word = strtok(NULL, NONALPHA); } } } return Status; }
void CDongleMakerDlg::OnReadDongle() { // Check the attached dongle and get the serial number unsigned short ssn; BOOL hasKey = m_pDongle->GetSerialNumber(&ssn); if (!hasKey) { AfxMessageBox(IDS_NOKEY); return; } m_serialNumber.Format("%d", (int)ssn); BeginWaitCursor(); m_AppTree.DeleteAllItems(); for (int i=0; i<MAX_PROTECTED_APP; i++) { AppLock* applock = m_pDongle->GetAppLock(i); BOOL bOk = m_pDongle->ReadApp(applock); AddToTree(applock); } m_AppTree.SelectItem(m_AppTree.GetRootItem()); EndWaitCursor(); UpdateData(FALSE); }
void DeckLibraryTab::UpdateCardList () { RecordSet *pCardList = m_pModel->GetLibraryList (); long lNumber, lCardRef; if (m_bNoEvents) return; m_bNoEvents = TRUE; m_pTree->Freeze (); m_pTree->DeleteChildren (m_oRootId); for (unsigned int i = 0; i < pCardList->GetCount(); i++) { /* remember the view query is : "SELECT number_used, " " card_name, " " set_name, " " card_type, " " card_ref " */ if (pCardList->Item(i).Item(0).ToLong(&lNumber) && pCardList->Item(i).Item(4).ToLong(&lCardRef)) { AddToTree ( pCardList->Item(i).Item(3), pCardList->Item(i).Item(1), pCardList->Item(i).Item(2), lNumber, lCardRef,HandPercentage(m_pModel->GetLibraryCount(),lNumber)); } } // m_pTree->SortChildren (m_oRootId); m_pTree->Thaw (); m_bNoEvents = FALSE; }
void autobots_toutiao::onAddCommentID() { QString id = ui.lineEdit_comment_id->text(); ui.lineEdit_comment_id->setText(""); AddToTree(id); }
void Lexer::ProcessTokens() { Character Char(NULL, NULL, NULL, NULL, NULL); Char = scanner.GetChar(); token = Token(Char, &scanner, NULL); while (true) { char prevToken[256]; token.GetType(prevToken); if (strcmp(prevToken, WHITESPACE)) AddToTree(token); Char = scanner.GetChar(); if (Char.cargo == ENDMARK) break; token = Token(Char, &scanner, prevToken); } }
void cRenderList::Compile() { int lLightNum = (int)m_setLights.size(); if(lLightNum > MAX_NUM_OF_LIGHTS) lLightNum = MAX_NUM_OF_LIGHTS; for(int i=0; i<lLightNum; ++i) mvObjectsPerLight[i] =0; // Iterate the objects to be rendered and build trees with render states. tRenderableSetIt it = m_setObjects.begin(); for(;it != m_setObjects.end();++it) { iRenderable* pObject = *it; iMaterial* pMat = pObject->GetMaterial(); //Skip meshes... if(pObject->GetRenderType() == eRenderableType_Mesh) continue; //If the object is transparent add tot eh trans tree if(pMat->IsTransperant()) { //Use the set cotainer instead for now: m_setTransperantObjects.insert(pObject); /*for(int lPass=0; lPass< pMat->GetNumOfPasses(eMaterialRenderType_Diffuse, NULL);lPass++) { AddToTree(pObject,eRenderListDrawType_Trans, eMaterialRenderType_Light,0,NULL, true,lPass); }*/ } //If object is not trans add to another tree. else { //If the object uses z pass add to z tree. if(pMat->UsesType(eMaterialRenderType_Z)) { for(int lPass=0; lPass< pMat->GetNumOfPasses(eMaterialRenderType_Z, NULL);lPass++) { AddToTree(pObject,eRenderListDrawType_Normal,eMaterialRenderType_Z, 0,NULL, false,lPass); } } //If object uses light add the object to each light's tree. if(pMat->UsesType(eMaterialRenderType_Light)) { //Light trees that the object will belong to. int lLightCount =0; tLight3DSetIt lightIt = m_setLights.begin(); for(;lightIt != m_setLights.end();++lightIt) { iLight3D* pLight = *lightIt; if( (pLight->GetOnlyAffectInSector()==false || pObject->IsInSector(pLight->GetCurrentSector())) && pLight->CheckObjectIntersection(pObject)) { if(lLightCount >= MAX_NUM_OF_LIGHTS) break; ++mvObjectsPerLight[lLightCount]; for(int lPass=0; lPass< pMat->GetNumOfPasses(eMaterialRenderType_Light, pLight);++lPass) { AddToTree(pObject,eRenderListDrawType_Normal, eMaterialRenderType_Light,lLightCount,pLight, false,lPass); } } ++lLightCount; } } //If it has a diffuse pass, add to the diffuse tree. if(pObject->GetMaterial()->UsesType(eMaterialRenderType_Diffuse)) { for(int lPass=0; lPass< pMat->GetNumOfPasses(eMaterialRenderType_Diffuse,NULL);lPass++) { AddToTree(pObject,eRenderListDrawType_Normal, eMaterialRenderType_Diffuse,0,NULL, false,lPass); } } } } }