00001 #ifndef DYNAMIC_PATH_INSTANCE_MAPPER_H_INCLUDED_ 00002 #define DYNAMIC_PATH_INSTANCE_MAPPER_H_INCLUDED_ 00003 00004 #include <vector> 00005 00006 #include "instance_tree.h" 00007 #include "path_instance_mapper.h" 00008 00009 class DynamicModule; 00010 00011 namespace risc { 00012 00022 class DynamicPathInstanceMapper: public PathInstanceMapper { 00023 00024 public: 00025 00031 DynamicPathInstanceMapper(std::string filename); 00032 00033 void traverse_tree(InstanceTree root, DynamicModule *module); 00034 00045 void determine_lookup_table(); 00046 00050 std::string filename_; 00051 00055 DynamicModule *dynamic_root_; 00056 00060 std::list<std::pair<std::string, int*> > global_variable_addresses_; 00061 00066 void parse_dynamic_instance_tree(); 00067 00068 /* 00069 * \fn function get_dynamic_tree_root 00070 * \brief This function returns the root node of the dynamic analysis 00071 */ 00072 virtual DynamicModule* get_dynamic_tree_root(); 00073 00079 virtual bool perform_dynamic_analysis(); 00080 00085 virtual int* get_global_variable_address(std::string variable_name); 00086 00091 virtual std::string get_global_variable_name(int *variable_address); 00092 00100 std::string translate_type_name(std::string gnu_type_name); 00101 }; 00102 00103 } // end of namespace risc 00104 00105 #endif /* DYNAMIC_PATH_INSTANCE_MAPPER_H_INCLUDED_ */ 00106 00107 /* ex: set softtabstop=2 tabstop=2 shiftwidth=2 expandtab: */