summaryrefslogtreecommitdiff
path: root/include/gras/detail/block.hpp
diff options
context:
space:
mode:
authorJosh Blum2013-06-05 10:44:00 -0700
committerJosh Blum2013-06-05 10:44:00 -0700
commit7889847eed1e8bc003b88b0d6ad4f7904873d2ac (patch)
tree4497b862f1e28faf585214e13ed124cf856323a5 /include/gras/detail/block.hpp
parent4201e46df896d88ef39a3ccb3b57f7517932d5a2 (diff)
downloadsandhi-7889847eed1e8bc003b88b0d6ad4f7904873d2ac.tar.gz
sandhi-7889847eed1e8bc003b88b0d6ad4f7904873d2ac.tar.bz2
sandhi-7889847eed1e8bc003b88b0d6ad4f7904873d2ac.zip
gras: created duck typed API for posting msgs
Uses templates and template overloads in c++ User python duck typing in the python case. Cleans up post for #84
Diffstat (limited to 'include/gras/detail/block.hpp')
-rw-r--r--include/gras/detail/block.hpp36
1 files changed, 36 insertions, 0 deletions
diff --git a/include/gras/detail/block.hpp b/include/gras/detail/block.hpp
index d975b0f..3c85905 100644
--- a/include/gras/detail/block.hpp
+++ b/include/gras/detail/block.hpp
@@ -97,6 +97,42 @@ inline ValueType Block::get(const std::string &key)
return this->_get_property(key).as<ValueType>();
}
+template <typename ValueType>
+inline void Block::post_output_msg(const size_t i, const ValueType &value)
+{
+ this->_post_output_msg(i, PMC_M(value));
+}
+
+template <>
+inline void Block::post_output_msg(const size_t i, const PMCC &value)
+{
+ this->_post_output_msg(i, value);
+}
+
+template <>
+inline void Block::post_output_msg(const size_t i, const PMC &value)
+{
+ this->_post_output_msg(i, value);
+}
+
+template <typename ValueType>
+inline void Block::post_input_msg(const size_t i, const ValueType &value)
+{
+ this->_post_input_msg(i, PMC_M(value));
+}
+
+template <>
+inline void Block::post_input_msg(const size_t i, const PMCC &value)
+{
+ this->_post_input_msg(i, value);
+}
+
+template <>
+inline void Block::post_input_msg(const size_t i, const PMC &value)
+{
+ this->_post_input_msg(i, value);
+}
+
} //namespace gras
#endif /*INCLUDED_GRAS_DETAIL_BLOCK_HPP*/