Ejemplo n.º 1
0
static void loopTheLoop(std::list<GEdge*> &wire,
			std::list<GEdgeSigned> &loop,  
			GEdge **degeneratedToInsert)
{
  GEdgeSigned *prevOne = 0;
  GEdgeSigned ges(0,0);

  while(wire.size()){
    if (prevOne && (*degeneratedToInsert) && 
	(*degeneratedToInsert)->getBeginVertex () == prevOne->getEndVertex()){
      ges = GEdgeSigned(1,*degeneratedToInsert);
      *degeneratedToInsert = 0;
      // printf("second degenerated edge inserted\n");
    }
    else ges = nextOne(prevOne, wire);
    if(ges.getSign() == 0){ // oops
      if (0){
	Msg::Error("Something wrong in edge loop of size=%d, no sign !", wire.size());
	for (std::list<GEdge* >::iterator it = wire.begin(); it != wire.end(); it++){
	  Msg::Error("GEdge=%d begin=%d end =%d", (*it)->tag(), 
		     (*it)->getBeginVertex()->tag(), (*it)->getEndVertex()->tag());
	}
      }
      break;
    }
    prevOne = &ges;
    // ges.print();
    loop.push_back(ges);
  }  
}
Ejemplo n.º 2
0
static void loopTheLoop(std::list<GEdge *> &wire, std::list<GEdgeSigned> &loop,
                        GEdge **degeneratedToInsert)
{
  GEdgeSigned *prevOne = 0;
  GEdgeSigned ges(0, 0);

  while(wire.size()) {
    if(prevOne && (*degeneratedToInsert) &&
       (*degeneratedToInsert)->getBeginVertex() == prevOne->getEndVertex()) {
      ges = GEdgeSigned(1, *degeneratedToInsert);
      *degeneratedToInsert = 0;
      // printf("second degenerated edge inserted\n");
    }
    else
      ges = nextOne(prevOne, wire);
    if(ges.getSign() == 0) { // oops
      Msg::Warning("Something wrong in curve loop of size=%d, no sign!",
                   wire.size());
      break;
    }
    prevOne = &ges;
    // ges.print();
    loop.push_back(ges);
  }
}
Ejemplo n.º 3
0
void bracketMatch(char *brackets)
{
     int len;
     bool ret=true;
     int count=0;
     
     if(brackets == NULL)
     {
         return;
     }
     
     len = strlen(brackets);
     if(len&1)/*len must be even*/
     {
         return;
     }
     
     while(1)
     {
         printf("%s \n", brackets);
         count++;     
         while(1)
         {
             ret=nextOne(brackets+1, len-2);
             if (!ret)
             {
                 printf("total count %d\n", count);
                 return;
             }
             if (validMatch(brackets, len))
             {
                 break;
             }
         }
     }    
}
Ejemplo n.º 4
0
void BookmarkIterator::delayedEmitNextOne()
{
    QTimer::singleShot(1, this, SLOT(nextOne()));
}