00001 #ifndef PATH_INSTANCE_MAPPER_H_INCLUDED_ 00002 #define PATH_INSTANCE_MAPPER_H_INCLUDED_ 00003 00004 #include<vector> 00005 #include<utility> 00006 00007 #include "../segment_graph/segment_graph.h" 00008 #include "instance_tree.h" 00009 #include "module.h" 00010 #include "module_instance.h" 00011 #include "hierarchical_channel.h" 00012 #include "hierarchical_channel_instance.h" 00013 00014 namespace risc { 00015 00016 class Design; 00017 00023 class PathInstanceMapper { 00024 00025 public: 00026 00032 PathInstanceMapper(); 00033 00043 void determine_lookup_table(InstanceTree root); 00044 00049 void print_mapping(); 00050 00056 int get_id(InstanceTree tree); 00057 00063 InstanceTree 00064 get_instance_tree(int id, std::list<InstanceTree> potential_instances); 00065 00066 typedef std::pair<InstanceTree, int> PathWithID; 00067 00071 std::vector<PathWithID> path_to_id_mapping_; 00072 00076 int max_instances_; 00077 }; 00078 00079 }; // end of namespace risc 00080 00081 00082 #endif /* PATH_INSTANCE_MAPPER_H_INCLUDED_ */ 00083 00084 /* ex: set softtabstop=2 tabstop=2 shiftwidth=2 expandtab: */