00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef INCLUDED_GR_HIER_BLOCK2_DETAIL_H
00023 #define INCLUDED_GR_HIER_BLOCK2_DETAIL_H
00024
00025 #include <gr_hier_block2.h>
00026 #include <gr_flat_flowgraph.h>
00027 #include <boost/utility.hpp>
00028
00029
00030
00031
00032 class gr_hier_block2_detail : boost::noncopyable
00033 {
00034 public:
00035 gr_hier_block2_detail(gr_hier_block2 *owner);
00036 ~gr_hier_block2_detail();
00037
00038 void connect(gr_basic_block_sptr block);
00039 void connect(gr_basic_block_sptr src, int src_port,
00040 gr_basic_block_sptr dst, int dst_port);
00041 void disconnect(gr_basic_block_sptr block);
00042 void disconnect(gr_basic_block_sptr, int src_port,
00043 gr_basic_block_sptr, int dst_port);
00044 void disconnect_all();
00045 void lock();
00046 void unlock();
00047 void flatten_aux(gr_flat_flowgraph_sptr sfg) const;
00048
00049 private:
00050
00051
00052 gr_hier_block2 *d_owner;
00053 gr_hier_block2_detail *d_parent_detail;
00054 gr_flowgraph_sptr d_fg;
00055 std::vector<gr_endpoint_vector_t> d_inputs;
00056 gr_endpoint_vector_t d_outputs;
00057 gr_basic_block_vector_t d_blocks;
00058
00059 void connect_input(int my_port, int port, gr_basic_block_sptr block);
00060 void connect_output(int my_port, int port, gr_basic_block_sptr block);
00061 void disconnect_input(int my_port, int port, gr_basic_block_sptr block);
00062 void disconnect_output(int my_port, int port, gr_basic_block_sptr block);
00063
00064 gr_endpoint_vector_t resolve_port(int port, bool is_input);
00065 gr_endpoint_vector_t resolve_endpoint(const gr_endpoint &endp, bool is_input) const;
00066 };
00067
00068 #endif