コード例 #1
0
void  FamilyTreeClear ( PFAMILYTREE option_tree )
{
	ForAllInSet( FAMILYNODE, option_tree->nodes, DestroyNode, (uintptr_t)option_tree );
	DeleteSetEx( FAMILYNODE, &option_tree->nodes );
	option_tree->family = NULL;
//	option_tree->nodes
}
コード例 #2
0
INDEX SrvrOpenWorld( uint32_t client_id, CTEXTSTR name )
{
	PWORLD world;
	INDEX iWorld;
	uintptr_t psvResult;
	psvResult = ForAllInSet( WORLD, g.worlds, CompareWorldName, (uintptr_t)name );
	if( psvResult )
	{
		world = (PWORLD)psvResult;
		iWorld = GetMemberIndex( WORLD, &g.worlds, world );
#if defined( WORLD_SCAPE_SERVER_EXPORTS ) || defined( WORLDSCAPE_SERVICE )
		SrvrMarkWorldUpdated( client_id, iWorld );
#endif
	}
	else
	{
		world = GetFromSet( WORLD, &g.worlds );
		iWorld = GetMemberIndex( WORLD, &g.worlds, world );
#if defined( WORLD_SCAPE_SERVER_EXPORTS ) || defined( WORLDSCAPE_SERVICE )
		SrvrMarkWorldUpdated( client_id, iWorld );
#endif
		world->name = SrvrMakeName( client_id, iWorld, name );
		// get from set is zero initialized.
		//world->lines = NULL;
		//world->walls = NULL;
		//world->sectors = NULL;
		//world->textures = NULL;
		//world->names = NULL; // derr just made a name for this world itself... then do what?!
		//world->spacetree = NULL;
		SrvrCreateSquareSector( client_id, iWorld, VectorConst_0, 50 );
	}
	return iWorld;
}
コード例 #3
0
void DeleteNames( INDEX iWorld  )
{
	PWORLD world = GetSetMember( WORLD, &g.worlds, iWorld );
	PNAMESET *ppNames = &world->names;
	ForAllInSet( NAME, *ppNames, (FAISCallback)DeleteAName, iWorld );
	DeleteSet( (GENERICSET**)ppNames );
}
コード例 #4
0
PLAYER LAYER::FindLayer( INDEX iLayer )
{
	return 	(PLAYER)ForAllInSet( LAYER, (*pool), CheckIsLayer, (uintptr_t)iLayer );
//(PLAYER)(*pool)->forall( CheckIsLayer, iLayer );
}
コード例 #5
0
int main( void )
{
	int n;
	char tmp[256];
   int card_count = 0;
	int card;
	char *cardset;
	int cardset_start = 0;
	int cardset_end = 32000;
	snprintf( tmp, sizeof( tmp ), "cards.dat" );
	printf( "Loading cardset....\n" );
	LoadCardset( tmp, &card_count, &cardset );
	{
      int num;
      //int s =  ( n - 1 ) / 15;
		printf( "Sorting cardset...\n" );
		for( card = 0; card < card_count; card++ )
		{
			PCARD_TESTER tester = GetFromSet( CARD_TESTER, &test_set );
			tester->card = cardset + (card * 25);
			//lprintf( "card %d(%d) = %p", card, GetMemberIndex( CARD_TESTER, &test_set, tester ), tester );
			for( num = 0; num < 25; num++ )
			{
				if( num == 12 )
					continue;
				{
					PCARD_TESTER_LINK link = GetFromSet( CARD_TESTER_LINK, &test_set_links );
					PCARD_TESTER_LINK *base_tester= &sorted_cards[cardset[card*25+num]];
					link->tester = tester;
					//lprintf( "Add card %d to %d", card, cardset[card*25+num] );
					if( link->next = (*base_tester) )
						(*base_tester)->me = &link->next;
					(*base_tester) = link;
				}
			}
		}
	}
	printf( "Drawing balls...\n" );
	for( n = 0; n < 0x40000000; n++ )
	{
      int *source_balls = DrawRandomNumbers2();
		int *balls;
		int ball;

		switch( n % 6 )
		{
		case 0:
			max_counts[0] = 5;
			max_counts[1] = 15;
			max_counts[2] = 15;
			max_counts[3] = 15;
			max_counts[4] = 5;
			break;
		case 1:
			max_counts[0] = 15;
			max_counts[1] = 5;
			max_counts[2] = 15;
			max_counts[3] = 15;
			max_counts[4] = 5;
			break;
		case 2:
			max_counts[0] = 5;
			max_counts[1] = 15;
			max_counts[2] = 15;
			max_counts[3] = 5;
			max_counts[4] = 15;
			break;
		case 3:
			max_counts[0] = 15;
			max_counts[1] = 5;
			max_counts[2] = 15;
			max_counts[3] = 5;
			max_counts[4] = 15;
			break;
		case 4:
			max_counts[0] = 5;
			max_counts[1] = 5;
			max_counts[2] = 15;
			max_counts[3] = 15;
			max_counts[4] = 15;
			break;
		case 5:
			max_counts[0] = 15;
			max_counts[1] = 15;
			max_counts[2] = 15;
			max_counts[3] = 5;
			max_counts[4] = 5;
			break;
		}

      balls = PickBalls( source_balls );

		for( card = 0; card < card_count; card++ )
		{
			PCARD_TESTER tester = GetSetMember( CARD_TESTER, &test_set, card );
			tester->marks = 0;
		}
		for( ball = 0; ball <= 75; ball++ )
		{
			lprintf( "First card %p", sorted_cards[ball] );
			
		}
		for( ball = 0; ball < 45; ball++ )
		{
			int cards_marked = 0;
			int real_ball = balls[ball];
			PCARD_TESTER_LINK tester;
			PCARD_TESTER_LINK prior = NULL;
			PCARD_TESTER_LINK _prior = NULL;
			lprintf( "First card %p", sorted_cards[real_ball] );
			for( tester = sorted_cards[real_ball]; tester; tester = tester->next )
			{
				cards_marked++;
				tester->tester->marks++;
				_prior = prior;
				prior = tester;
			}
			lprintf( "Marked %d cards with %d", cards_marked, real_ball );
		}

		printf( "balls: " );
		for( ball = 0; ball < 75; ball++ )
		{
			printf( "%d,", balls[ball] );
		}
		printf( "\n" );
		fflush( stdout );
		{
			for( ball = 0; ball < 25; ball++ )
			{
				marks[ball] = 0;
			}
			ForAllInSet( CARD_TESTER, test_set, TestOk, 0 );
			printf( "cards with X marks: " );
			for( ball = 0; ball < 25; ball++ )
			{
				printf( "%d,", marks[ball] );
			}
		}
		printf( "\n" );
		fflush( stdout );
		{
			for( ball = 0; ball < 25; ball++ )
			{
				marks[ball] = 0;
			}
			ForAllInSet( CARD_TESTER, test_set, TestOk2, 0 );
			printf( "cards with X marks: " );
			for( ball = 0; ball < 25; ball++ )
			{
				printf( "%d,", marks[ball] );
			}
		}
		printf( "\n" );
		fflush( stdout );
	}
	return 0;
}