int main(void) { BYTE wert = 0; /* Test, ob Bit 0 gesetzt ist */ printf("%s\n",Bit_Test(wert, 0)?"gesetzt":"nicht gesetzt"); Bit_Set(&wert, 0); /* Bit 0 setzen */ /* Wieder testen, ob Bit 0 gesetzt ist */ printf("%s\n",Bit_Test(wert, 0)?"gesetzt":"nicht gesetzt"); Bit_Clear(&wert, 0); /* Bit 0 wieder löschen */ /* Wieder testen, ob Bit 0 gesetzt ist */ printf("%s\n",Bit_Test(wert, 0)?"gesetzt":"nicht gesetzt"); return 0; }
OcTree_Node<dim> *OcTree_Node<dim>::GetNeighbour(int move_dim,int move_dir) { int pos; OcTree_Node<dim> *current_node=this; stack.empty(); // Ascend while(true) { if (current_node->Father==NULL) return NULL; pos=current_node->GetType(); if (move_dir==1) { if (Bit_Read(pos,move_dim)==0) { current_node=(dynamic_cast <OcTree_Node<dim> *> (current_node->Father->Child[Bit_Set(pos,move_dim,1)])); break; } } if (move_dir==0) { if (Bit_Read(pos,move_dim)==1) { current_node=(dynamic_cast <OcTree_Node<dim> *> (current_node->Father->Child[Bit_Set(pos,move_dim,0)])); break; } } stack.push(pos); current_node=(dynamic_cast <OcTree_Node<dim> *> (current_node->Father)); } while (!stack.isEmpty()) { pos=stack.pop(); if (move_dir==0) pos=Bit_Set(pos,move_dim,1); else pos=Bit_Set(pos,move_dim,0); if (current_node->IsLeaf()) return current_node; current_node=(dynamic_cast <OcTree_Node<dim> *> (current_node->Child[pos])); } return current_node; }