mirror of
https://github.com/nasa/trick.git
synced 2024-12-31 10:27:03 +00:00
14a75508a3
Changed all header file once include variables to follow the same naming convention and not start with any underscores. Also deleted old incorrect copyright notices. Also removed $Id: tags from all files. Fixes #14. Fixes #22.
108 lines
2.9 KiB
C++
108 lines
2.9 KiB
C++
/**
|
|
PURPOSE:
|
|
(blah.)
|
|
LIBRARY DEPENDENCY:
|
|
((../src/JITInputFile.cpp))
|
|
*/
|
|
|
|
#ifndef JITINPUTFILE_HH
|
|
#define JITINPUTFILE_HH
|
|
|
|
#include <string>
|
|
#include <queue>
|
|
#include <map>
|
|
|
|
#include "sim_services/JITInputFile/include/JITEvent.hh"
|
|
#include "sim_services/SimObject/include/JobData.hh"
|
|
|
|
namespace Trick {
|
|
|
|
/**
|
|
* This class is used in a map in the JITInputFile class to hold
|
|
* a library name and a handle to the library contents.
|
|
*
|
|
* @author Alexander S. Lin
|
|
*
|
|
* @date April 2014
|
|
*
|
|
*/
|
|
struct JITLibInfo {
|
|
JITLibInfo() : handle(NULL) {} ;
|
|
|
|
/** name of library */
|
|
std::string library_name ;
|
|
|
|
/** handle returned by dlopen to the library */
|
|
void * handle ;
|
|
} ;
|
|
|
|
/**
|
|
* This class compiles/loads/runs functions out of dynamically loaded shared libraries.
|
|
* C++ source code input files may be used in place of a python input file.
|
|
* Source code is compiled and linked into a shared library. The library
|
|
* is dynamically loaded and functions out of the library may be run
|
|
* Libraries may be pre-compiled and loaded directly.
|
|
*
|
|
* Calls from this class may be called from python input files.
|
|
*
|
|
* @author Alexander S. Lin
|
|
*
|
|
* @date April 2014
|
|
*
|
|
*/
|
|
|
|
class JITInputFile {
|
|
|
|
public:
|
|
JITInputFile() ;
|
|
|
|
int process_sim_args() ;
|
|
|
|
/**
|
|
Called as an intialization job to compile and run the input file
|
|
@return 0 for success, compilation error code if compilation fails.
|
|
*/
|
|
int init() ;
|
|
|
|
/**
|
|
Compile the incoming file name
|
|
@param file_name - the name of the C++ file.
|
|
@return 0 for success, compilation error code if compilation fails.
|
|
*/
|
|
int compile(std::string file_name) ;
|
|
|
|
/**
|
|
Run a function out of a loaded library
|
|
@param library_name - the name of the library
|
|
@param run_function - the name of function to run
|
|
@return 0 for success, error code if library not loaded or function not found.
|
|
*/
|
|
int run(std::string library_name , std::string run_function ) ;
|
|
|
|
/**
|
|
Convienience function to call compile and run
|
|
@param file_name - the name of the C++ file.
|
|
@param run_function - the name of function to run
|
|
@return 0 for success, error code from either compile or run function if an error occurred.
|
|
*/
|
|
int compile_and_run(std::string file_name, std::string run_function = "run_me" ) ;
|
|
|
|
/**
|
|
Adds a precompiled library to the list of known libraries (does not attempt to open library)
|
|
@param lib_name - the name of the shared library
|
|
@return 0 for success
|
|
*/
|
|
int add_library(std::string lib_name) ;
|
|
|
|
private:
|
|
/** C++ input file from the command line if one was specified. */
|
|
std::string input_file ;
|
|
|
|
/** Map of source file name to structue holding library name and library handle */
|
|
std::map< std::string , JITLibInfo > file_to_libinfo_map ;
|
|
|
|
} ;
|
|
|
|
}
|
|
#endif
|