Beispiel #1
0
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;  
}
Beispiel #2
0
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();
}
Beispiel #3
0
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;
}
Beispiel #4
0
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);
}
Beispiel #5
0
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;
}
Beispiel #6
0
void autobots_toutiao::onAddCommentID()
{
  
  QString id = ui.lineEdit_comment_id->text();

  ui.lineEdit_comment_id->setText("");

  AddToTree(id);
}
Beispiel #7
0
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);
    }
}
Beispiel #8
0
	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);
					}
				}
			}
		}
	}