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_H
00023 #define INCLUDED_GR_HIER_BLOCK2_H
00024
00025 #include <gr_basic_block.h>
00026
00030 gr_hier_block2_sptr gr_make_hier_block2(const std::string &name,
00031 gr_io_signature_sptr input_signature,
00032 gr_io_signature_sptr output_signature);
00033
00034 class gr_hier_block2_detail;
00035
00040 class gr_hier_block2 : public gr_basic_block
00041 {
00042 private:
00043 friend class gr_hier_block2_detail;
00044 friend gr_hier_block2_sptr gr_make_hier_block2(const std::string &name,
00045 gr_io_signature_sptr input_signature,
00046 gr_io_signature_sptr output_signature);
00047
00051 gr_hier_block2_detail *d_detail;
00052
00053 protected:
00054 gr_hier_block2(const std::string &name,
00055 gr_io_signature_sptr input_signature,
00056 gr_io_signature_sptr output_signature);
00057
00058 public:
00059 virtual ~gr_hier_block2();
00060
00061 void connect(gr_basic_block_sptr block);
00062
00063 void connect(gr_basic_block_sptr src, int src_port,
00064 gr_basic_block_sptr dst, int dst_port);
00065
00066 void disconnect(gr_basic_block_sptr block);
00067
00068 void disconnect(gr_basic_block_sptr src, int src_port,
00069 gr_basic_block_sptr dst, int dst_port);
00070
00071 void disconnect_all();
00072 virtual void lock();
00073 virtual void unlock();
00074
00075 gr_flat_flowgraph_sptr flatten() const;
00076 };
00077
00078 inline gr_hier_block2_sptr make_hier_block2_sptr(gr_basic_block_sptr block) {
00079 return boost::dynamic_pointer_cast<gr_hier_block2, gr_basic_block>(block);
00080 }
00081
00082 #endif