#include "trick/JITEvent.hh" #include "trick/jit_input_file_proto.hh" #include "trick/exec_proto.h" #include "trick/message_proto.h" // Default constructor used by Trick for checkpoints. Trick::JITEvent::JITEvent() : func_ptr(NULL) { active = false ; } Trick::JITEvent::JITEvent(std::string in_func_name , std::string in_name , double in_cycle ) : Trick::Event(in_name, in_cycle) , func_name(in_func_name) { // Set active to true by default for all JITEvents active = true ; get_func_ptr_from_name() ; } /** @details -# call the function and return it's return value. */ int Trick::JITEvent::process( long long curr_time __attribute__ ((unused)) ) { if ( func_ptr != NULL ) { return (*func_ptr)() ; } return 1 ; } /** @details -# Get the function pointer associated with this event. */ void Trick::JITEvent::restart() { get_func_ptr_from_name() ; } /** @details -# If func_name is not empty -# Get the function pointer associated with the func_name -# If the function is not found -# Print an error message saying we can't find the function */ void Trick::JITEvent::get_func_ptr_from_name() { if ( ! func_name.empty() ) { func_ptr = (int (*)(void))jit_find_symbol(func_name) ; if ( func_ptr == NULL ) { message_publish( MSG_WARNING, "JITEvent could not find function named %s", func_name.c_str() ) ; } } }