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 }
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; }
void DeleteNames( INDEX iWorld ) { PWORLD world = GetSetMember( WORLD, &g.worlds, iWorld ); PNAMESET *ppNames = &world->names; ForAllInSet( NAME, *ppNames, (FAISCallback)DeleteAName, iWorld ); DeleteSet( (GENERICSET**)ppNames ); }
PLAYER LAYER::FindLayer( INDEX iLayer ) { return (PLAYER)ForAllInSet( LAYER, (*pool), CheckIsLayer, (uintptr_t)iLayer ); //(PLAYER)(*pool)->forall( CheckIsLayer, iLayer ); }
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; }