summaryrefslogtreecommitdiff
path: root/gnuradio-runtime/include/gr_block_registry.h
diff options
context:
space:
mode:
Diffstat (limited to 'gnuradio-runtime/include/gr_block_registry.h')
-rw-r--r--gnuradio-runtime/include/gr_block_registry.h44
1 files changed, 44 insertions, 0 deletions
diff --git a/gnuradio-runtime/include/gr_block_registry.h b/gnuradio-runtime/include/gr_block_registry.h
new file mode 100644
index 0000000000..9b038287bc
--- /dev/null
+++ b/gnuradio-runtime/include/gr_block_registry.h
@@ -0,0 +1,44 @@
+#ifndef GR_BLOCK_REGISTRY_H
+#define GR_BLOCK_REGISTRY_H
+
+#include <gr_runtime_api.h>
+#include <map>
+#include <gr_basic_block.h>
+
+#ifndef GR_BASIC_BLOCK_H
+class gr_basic_block;
+class gr_block;
+#endif
+
+class GR_RUNTIME_API gr_block_registry {
+ public:
+ gr_block_registry();
+
+ long block_register(gr_basic_block* block);
+ void block_unregister(gr_basic_block* block);
+
+ std::string register_symbolic_name(gr_basic_block* block);
+ void register_symbolic_name(gr_basic_block* block, std::string name);
+
+ gr_basic_block_sptr block_lookup(pmt::pmt_t symbol);
+
+ void register_primitive(std::string blk, gr_block* ref);
+ void unregister_primitive(std::string blk);
+ void notify_blk(std::string blk);
+
+ private:
+
+ //typedef std::map< long, gr_basic_block_sptr > blocksubmap_t;
+ typedef std::map< long, gr_basic_block* > blocksubmap_t;
+ typedef std::map< std::string, blocksubmap_t > blockmap_t;
+
+ blockmap_t d_map;
+ pmt::pmt_t d_ref_map;
+ std::map< std::string, gr_block*> primitive_map;
+
+};
+
+GR_RUNTIME_API extern gr_block_registry global_block_registry;
+
+#endif
+