Ejemplo n.º 1
0
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;
}
Ejemplo n.º 2
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;
}