trick/trick_source/sim_services/JITInputFile/include/JITInputFile.hh
Alex Lin 14a75508a3 Cleaning up once include variables and copyright cleanup.
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.
2015-03-23 16:03:14 -05:00

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