/** @details -# Save the number of jobs in the scheduler -# Copy all of the job information in a checkpointable array -# Save the number of sim_objects in the scheduler -# Copy all of the sim_objects in a checkpointable array */ int Trick::Executive::checkpoint() { unsigned int ii ; /* save the number of jobs in the scheduler */ num_all_jobs = all_jobs_vector.size() ; /* copy all of the job information in a checkpointable array */ if ( num_all_jobs > 0 ) { all_jobs_for_checkpoint = (Trick::JobData *)TMM_declare_var( TRICK_STRUCTURED, "Trick::JobData", 0 , "all_jobs" , 1 , (int *)&num_all_jobs) ; for ( ii = 0 ; ii < num_all_jobs ; ii++ ) { all_jobs_for_checkpoint[ii] = *(all_jobs_vector[ii]) ; } } checkpoint_stl(sim_objects , std::string("trick_sys") , std::string("sim_objects")) ; checkpoint_stl(freeze_times , std::string("trick_sys") , std::string("freeze_times")) ; return(0) ; }
int IntegLoopSimObject::call_function ( Trick::JobData * curr_job ) { int trick_ret = 0 ; if ( curr_job->disabled ) return (trick_ret) ; switch ( curr_job->id ) { case 0: integ_sched.rebuild_jobs() ; break ; case 1: integ_sched.get_first_step_deriv_from_integrator() ; break ; case 2: integ_sched.call_deriv_jobs() ; break ; case 3: integ_sched.integrate() ; break ; case 4: checkpoint_stl(integ_sched.sim_objects, name + std::string("_") + std::string("integ_sched.sim_objects"), std::string("")) ; break ; case 5: delete_stl (integ_sched.sim_objects, name + std::string("_") + std::string("integ_sched.sim_objects"), std::string("")) ; break ; case 6: restore_stl (integ_sched.sim_objects, name + std::string("_") + std::string("integ_sched.sim_objects"), std::string("")) ; break ; case 7: integ_sched.restart_checkpoint() ; break ; case 8: integ_sched.rebuild_jobs() ; break ; case 9: integ_sched.get_first_step_deriv_from_integrator() ; break ; default: trick_ret = -1 ; break ; } return(trick_ret) ; }
/* All STLs are checkpointed through the same templated function checkpoint_stl. The second and third arguments to the call give each set of STL data a unique name. In this example the unique name is the concatenation of the object instance and the variable name */ int STLCompanion::checkpoint(STLCheckpoint * stlc, std::string object_name ) { checkpoint_stl(stlc->my_double_map , object_name , std::string("my_double_map")) ; checkpoint_stl(stlc->my_string_key_map , object_name , std::string("my_string_key_map")) ; checkpoint_stl(stlc->my_string_data_map , object_name , std::string("my_string_data_map")) ; checkpoint_stl(stlc->my_string_map , object_name , std::string("my_string_map")) ; checkpoint_stl(stlc->my_int_multimap , object_name , std::string("my_int_multimap")) ; checkpoint_stl(stlc->my_string_key_multimap , object_name , std::string("my_string_key_multimap")) ; checkpoint_stl(stlc->my_string_data_multimap , object_name , std::string("my_string_data_multimap")) ; checkpoint_stl(stlc->my_string_multimap , object_name , std::string("my_string_multimap")) ; checkpoint_stl(stlc->my_double_vector , object_name , std::string("my_double_vector")) ; checkpoint_stl(stlc->my_string_vector , object_name , std::string("my_string_vector")) ; checkpoint_stl(stlc->my_short_list , object_name , std::string("my_short_list")) ; checkpoint_stl(stlc->my_string_list , object_name , std::string("my_string_list")) ; checkpoint_stl(stlc->my_float_deque , object_name , std::string("my_float_deque")) ; checkpoint_stl(stlc->my_string_deque , object_name , std::string("my_string_deque")) ; checkpoint_stl(stlc->my_int_set , object_name , std::string("my_int_set")) ; checkpoint_stl(stlc->my_string_set , object_name , std::string("my_string_set")) ; checkpoint_stl(stlc->my_long_multiset , object_name , std::string("my_long_multiset")) ; checkpoint_stl(stlc->my_string_multiset , object_name , std::string("my_string_multiset")) ; checkpoint_stl(stlc->my_uint_stack , object_name , std::string("my_uint_stack")) ; checkpoint_stl(stlc->my_string_stack , object_name , std::string("my_string_stack")) ; checkpoint_stl(stlc->my_int_queue , object_name , std::string("my_int_queue")) ; checkpoint_stl(stlc->my_string_queue , object_name , std::string("my_string_queue")) ; checkpoint_stl(stlc->my_int_priority_queue , object_name , std::string("my_int_priority_queue")) ; checkpoint_stl(stlc->my_string_priority_queue , object_name , std::string("my_string_priority_queue")) ; checkpoint_stl(stlc->my_int_pair , object_name , std::string("my_int_pair")) ; checkpoint_stl(stlc->my_string_first_pair , object_name , std::string("my_string_first_pair")) ; checkpoint_stl(stlc->my_string_second_pair , object_name , std::string("my_string_second_pair")) ; checkpoint_stl(stlc->my_string_pair , object_name , std::string("my_stringpair")) ; return 0 ; }