00001 #ifndef HIERARCHICAL_CHANNEL_H_INCLUDED_ 00002 #define HIERARCHICAL_CHANNEL_H_INCLUDED_ 00003 00004 #include <vector> 00005 00006 #include "channel.h" 00007 #include "rose.h" 00008 00009 #include "function.h" 00010 #include "thread.h" 00011 #include "cthread.h" 00012 #include "method.h" 00013 00014 namespace risc { 00015 00016 class HierarchicalChannel: public Channel{ 00017 00018 public: 00019 00020 ~HierarchicalChannel(); 00021 00025 explicit HierarchicalChannel(SgClassDefinition *ast_node); 00026 00032 virtual void initialize_functions(); 00033 00037 ThreadVector threads_; 00038 00042 CThreadVector cthreads_; 00043 00047 MethodVector methods_; 00048 00052 ResetSignalVector reset_signals_; 00053 00057 ResetSignalVector async_reset_signals_; 00058 00063 int instance_counter_; 00064 00065 private: 00069 HierarchicalChannel(const HierarchicalChannel &hcd); 00070 }; 00071 00072 typedef std::vector<HierarchicalChannel*> 00073 HierarchicalChannelVector; 00074 typedef std::vector<HierarchicalChannel*>::iterator 00075 HierarchicalChannelVectorIter; 00076 typedef std::vector<HierarchicalChannel*>::const_iterator 00077 HierarchicalChannelVectorConstIter; 00078 00079 }; // end of namespace risc 00080 00081 #endif /* HIERARCHICAL_CHANNEL_H_INCLUDED_ */ 00082 00083 /* ex: set softtabstop=2 tabstop=2 shiftwidth=2 expandtab: */