void free_instruments(void) { int i=128; while(i--) { if (tonebank[i]) free_bank(0,i); if (drumset[i]) free_bank(1,i); } }
void free_banks( void ) { BANK_DATA *bank, *bank_next; int hash; for ( hash = 0; hash < 126; hash++ ) { for ( bank = bank_index[hash]; bank; bank = bank_next ) { bank_next = bank->next; unlink_bank( bank ); free_bank( bank ); } } }
void free_mob_index( MOB_INDEX_DATA *pMob ) { free_string( pMob->player_name ); free_string( pMob->name2 ); free_string( pMob->name3 ); free_string( pMob->name4 ); free_string( pMob->name5 ); free_string( pMob->name6 ); free_string( pMob->short_descr ); free_string( pMob->long_descr ); free_string( pMob->description ); free_prog( pMob->progs ); free_shop( pMob->pShop ); free_repair( pMob->pRepair ); free_bank( pMob->pBank ); pMob->pShop = NULL; pMob->pBank = NULL; pMob->pRepair = NULL; pMob->next = mob_index_free; mob_index_free = pMob; return; }
void __fastcall__ free_scroll (struct obj * s) { free_bank (((struct scroll *) s)->bank); }
void do_bankedit( CHAR_DATA *ch, char *argument ) { BANK_DATA *bank; int type = DEFAULT_CURR; char arg1[MAX_INPUT_LENGTH]; char arg2[MAX_INPUT_LENGTH]; char arg3[MAX_INPUT_LENGTH]; char arg4[MIL]; char arg5[MSL]; int amount; if ( IS_NPC( ch ) ) { return; } if ( argument[0] == '\0' ) { send_to_char ( "Syntax:\tbankedit [delete/password/amount] [name] [new password or amount] [currency] [add/subtract]\r\n", ch ); return; } argument = one_argument( argument, arg1 ); argument = one_argument( argument, arg2 ); bank = find_bank( arg2 ); if ( !bank ) { send_to_char( "There is no account with that name!\r\n", ch ); return; } if ( !str_cmp( arg1, "delete" ) ) { ch_printf( ch, "Deleting... (%s)\r\n", bank->name ); free_bank_to_chars( bank ); unlink_bank( bank ); free_bank( bank ); save_bank( ); send_to_char( "The account has successfully been deleted.\r\n", ch ); return; } argument = one_argument( argument, arg3 ); if ( !str_cmp( arg1, "password" ) ) { char *pwdnew, *p; if ( arg3 == '\0' ) { send_to_char( "You have to have something for a password.\r\n", ch ); return; } if ( strlen( arg3 ) < 5 ) { send_to_char( "Invalid Password. Must be at least 5 characters in length.\r\n", ch ); return; } if ( arg3[0] == '!' ) { send_to_char( "Password cannot begin with the '!' character.\r\n", ch ); return; } pwdnew = crypt( arg3, bank->name ); for ( p = pwdnew; *p != '\0'; p++ ) { if ( *p == '~' ) { send_to_char( "Password not acceptable, try again.\r\n", ch ); return; } } STRFREE( bank->password ); bank->password = STRALLOC( pwdnew ); bank->lastused = current_time; save_bank( ); ch_printf( ch, "The password has been changed to %s.\r\n", arg3 ); return; } argument = one_argument( argument, arg4 ); if ( !str_cmp( arg1, "amount" ) ) { amount = atoi( arg3 ); if ( arg3 && arg4 ) type = get_currency_type( arg4 ); if ( amount < 0 ) { send_to_char( "A positive value please.\r\n", ch ); return; } if ( !str_cmp( arg5, "add" ) ) { if ( type == CURR_BRONZE ) { bank->bronze += amount; } if ( type == CURR_COPPER ) { bank->copper += amount; } if ( type == CURR_GOLD ) { bank->gold += amount; } if ( type == CURR_SILVER ) { bank->silver += amount; } } if ( !str_cmp( arg5, "subtract" ) ) { if ( type == CURR_BRONZE ) { bank->bronze -= amount; } if ( type == CURR_COPPER ) { bank->copper -= amount; } if ( type == CURR_GOLD ) { bank->gold -= amount; } if ( type == CURR_SILVER ) { bank->silver -= amount; } } bank->lastused = current_time; save_bank( ); ch_printf( ch, "The amount has been changed to %d.\r\n", bank->amount ); return; } }
void do_account( CHAR_DATA *ch, char *argument ) { BANK_DATA *bank; CHAR_DATA *banker; char arg1[MAX_INPUT_LENGTH]; char arg2[MAX_INPUT_LENGTH]; char arg3[MAX_INPUT_LENGTH]; char buf[MSL], *pwdnew, *p; int currtime = time( 0 ); /* * arg1 == account name * arg2 == password (if none, close it) */ if ( !( banker = find_banker( ch ) ) ) { send_to_char( "You're not in a bank!\r\n", ch ); return; } if ( IS_NPC( ch ) || IS_IMMORTAL( ch ) ) { snprintf( buf, MSL, "say Sorry, %s, we don't do business with mobs, or 6D STAFF.", ch->name ); interpret( banker, buf ); return; } if ( argument[0] == '\0' ) { send_to_char( "Syntax: account [account name] [account password]\n", ch ); send_to_char( "Syntax: account [account name] [account password] [create/delete]\n", ch ); send_to_char( "Syntax: account [account name]\n", ch ); interpret( banker, ( char * ) "say if you need help type &WHELP BANK&D." ); return; } argument = one_argument( argument, arg1 ); argument = one_argument( argument, arg2 ); argument = one_argument( argument, arg3 ); bank = find_bank( arg1 ); if ( !str_cmp( arg3, "create" ) ) { if ( strlen( arg1 ) < 4 ) { send_to_char( "Account name must be at least 4 characters.\r\n", ch ); return; } if ( strlen( arg2 ) < 5 ) { send_to_char( "Invalid Password. Must be at least 5 characters in length.\r\n", ch ); return; } if ( arg2[0] == '!' ) { send_to_char( "Password cannot begin with the '!' character.\r\n", ch ); return; } if ( bank ) { send_to_char( "There is already an account with that name!\r\n", ch ); return; } if ( ( currtime - ch->pcdata->lastaccountcreated ) < 3600 ) { send_to_char ( "Please wait at least one hour from previous creation time to make a new account.\r\n", ch ); return; } pwdnew = crypt( arg2, arg1 ); for ( p = pwdnew; *p != '\0'; p++ ) { if ( *p == '~' ) { send_to_char( "Password not acceptable, try again.\r\n", ch ); return; } } CREATE( bank, BANK_DATA, 1 ); bank->lastused = current_time; bank->name = STRALLOC( arg1 ); bank->password = STRALLOC( pwdnew ); bank->bronze = 0; bank->copper = 0; bank->gold = 0; bank->silver = 0; add_bank( bank ); save_bank( ); ch->pcdata->lastaccountcreated = currtime; save_char_obj( ch ); saving_char = NULL; send_to_char( "Your account has been added.\r\n", ch ); return; } else if ( !str_cmp( arg3, "delete" ) ) { if ( !bank ) { send_to_char( "There is no account with that name!\r\n", ch ); return; } if ( strcmp( crypt( arg2, bank->password ), bank->password ) ) { send_to_char( "Invalid password.\r\n", ch ); return; } GET_MONEY( ch, CURR_GOLD ) += bank->gold; GET_MONEY( ch, CURR_SILVER ) += bank->silver; GET_MONEY( ch, CURR_BRONZE ) += bank->bronze; GET_MONEY( ch, CURR_COPPER ) += bank->copper; ch_printf( ch, "Deleting... (%s)\r\n", bank->name ); free_bank_to_chars( bank ); unlink_bank( bank ); free_bank( bank ); save_bank( ); ch->pcdata->lastaccountcreated = 0; save_char_obj( ch ); saving_char = NULL; send_to_char( "Your account has successfully been deleted.\r\n", ch ); return; } if ( !bank ) { send_to_char( "There is no account by that name!\r\n", ch ); return; } if ( !str_cmp( arg2, "" ) ) { if ( ch->pcdata->bank == NULL ) { send_to_char( "You don't have any bank account open now.\r\n", ch ); return; } snprintf( buf, MSL, "You have closed the account %s.\r\n", ch->pcdata->bank->name ); send_to_char( buf, ch ); ch->pcdata->bank = NULL; return; } if ( strcmp( crypt( arg2, bank->password ), bank->password ) ) { send_to_char( "Invalid password.\r\n", ch ); return; } snprintf( buf, MSL, "You have opened the account %s.\r\n", bank->name ); send_to_char( buf, ch ); ch->pcdata->bank = bank; }
void add_bank( BANK_DATA * bank ) { int hash, x; BANK_DATA *tmp, *prev; if ( !bank ) { bug( "Add_bank: NULL bank" ); return; } if ( !bank->name ) { bug( "Add_bank: NULL bank->name" ); return; } if ( !bank->password ) { bug( "Add_bank: NULL bank->password" ); return; } /* * make sure the name is all lowercase */ for ( x = 0; bank->name[x] != '\0'; x++ ) bank->name[x] = LOWER( bank->name[x] ); if ( bank->name[0] < 'a' || bank->name[0] > 'z' ) hash = 0; else hash = ( bank->name[0] - 'a' ) + 1; if ( ( prev = tmp = bank_index[hash] ) == NULL ) { bank->next = bank_index[hash]; bank_index[hash] = bank; return; } for ( ; tmp; tmp = tmp->next ) { if ( ( x = strcmp( bank->name, tmp->name ) ) == 0 ) { bug( "Add_bank: trying to add duplicate name to bucket %d", hash ); free_bank( bank ); return; } else if ( x < 0 ) { if ( tmp == bank_index[hash] ) { bank->next = bank_index[hash]; bank_index[hash] = bank; return; } prev->next = bank; bank->next = tmp; return; } prev = tmp; } /* * add to end */ prev->next = bank; bank->next = NULL; return; }
int main(int argc, char *argv[]) { Parameters *parameters; // user defined parameters Geometry *geometry; // homogenous cube geometry Material *material; // problem material Bank *source_bank; // array for particle source sites Tally *tally; // scalar flux tally double *keff; // effective multiplication factor double t1, t2; // timers #ifdef _OPENMP unsigned long counter = 0; //counter to decide the start pos of master bank copy from sub banks Bank *g_fission_bank; //global fission bank #endif // Get inputs: set parameters to default values, parse parameter file, // override with any command line inputs, and print parameters parameters = init_parameters(); parse_parameters(parameters); read_CLI(argc, argv, parameters); print_parameters(parameters); // Set initial RNG seed set_initial_seed(parameters->seed); set_stream(STREAM_INIT); // Create files for writing results to init_output(parameters); // Set up geometry geometry = init_geometry(parameters); // Set up material material = init_material(parameters); // Set up tallies tally = init_tally(parameters); // Create source bank and initial source distribution source_bank = init_source_bank(parameters, geometry); // Create fission bank #ifdef _OPENMP omp_set_num_threads(parameters->n_threads); // Set number of openmp threads printf("threads num: %d\n", parameters->n_threads); // Allocate one master fission bank g_fission_bank = init_bank(2*parameters->n_particles); #endif // Set up array for k effective keff = calloc(parameters->n_active, sizeof(double)); center_print("SIMULATION", 79); border_print(); printf("%-15s %-15s %-15s\n", "BATCH", "KEFF", "MEAN KEFF"); #ifdef _OPENMP // Start time t1 = omp_get_wtime(); run_eigenvalue(counter, g_fission_bank, parameters, geometry, material, source_bank, fission_bank, tally, keff); // Stop time t2 = omp_get_wtime(); #endif printf("Simulation time: %f secs\n", t2-t1); // Free memory #ifdef _OPENMP free_bank(g_fission_bank); #endif free(keff); free_tally(tally); free_bank(source_bank); free_material(material); free(geometry); free(parameters); return 0; }
int main(int argc, char *argv[]) { Parameters *parameters; // user defined parameters Geometry *geometry; // homogenous cube geometry Material *material; // problem material Bank *source_bank; // array for particle source sites Bank *fission_bank; // array for particle fission sites Tally *tally; // scalar flux tally double *keff; // effective multiplication factor double t1, t2; // timers // Get inputs: set parameters to default values, parse parameter file, // override with any command line inputs, and print parameters parameters = init_parameters(); parse_parameters(parameters); read_CLI(argc, argv, parameters); print_parameters(parameters); // Set initial RNG seed set_initial_seed(parameters->seed); set_stream(STREAM_OTHER); // Create files for writing results to init_output(parameters); // Set up geometry geometry = init_geometry(parameters); // Set up material material = init_material(parameters); // Set up tallies tally = init_tally(parameters); // Create source bank and initial source distribution source_bank = init_source_bank(parameters, geometry); // Create fission bank fission_bank = init_fission_bank(parameters); // Set up array for k effective keff = calloc(parameters->n_active, sizeof(double)); center_print("SIMULATION", 79); border_print(); printf("%-15s %-15s %-15s %-15s\n", "BATCH", "ENTROPY", "KEFF", "MEAN KEFF"); // Start time t1 = timer(); run_eigenvalue(parameters, geometry, material, source_bank, fission_bank, tally, keff); // Stop time t2 = timer(); printf("Simulation time: %f secs\n", t2-t1); // Free memory free(keff); free_tally(tally); free_bank(fission_bank); free_bank(source_bank); free_material(material); free(geometry); free(parameters); return 0; }