diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/gras/CMakeLists.txt | 2 | ||||
-rw-r--r-- | include/gras/block.hpp | 36 | ||||
-rw-r--r-- | include/gras/element.hpp | 21 | ||||
-rw-r--r-- | include/gras/element.i | 1 | ||||
-rw-r--r-- | include/gras/io_signature.hpp | 129 | ||||
-rw-r--r-- | include/gras/io_signature.i | 27 | ||||
-rw-r--r-- | include/gras/top_block.hpp | 13 |
7 files changed, 40 insertions, 189 deletions
diff --git a/include/gras/CMakeLists.txt b/include/gras/CMakeLists.txt index 0ec3c98..301f96a 100644 --- a/include/gras/CMakeLists.txt +++ b/include/gras/CMakeLists.txt @@ -11,8 +11,6 @@ install(FILES gras.hpp hier_block.hpp hier_block.i - io_signature.hpp - io_signature.i sbuffer.hpp sbuffer.i tags.hpp diff --git a/include/gras/block.hpp b/include/gras/block.hpp index c33f7f9..f00a6f7 100644 --- a/include/gras/block.hpp +++ b/include/gras/block.hpp @@ -109,6 +109,22 @@ struct GRAS_API Block : Element Block(const std::string &name); /******************************************************************* + * Item sizes for ports + ******************************************************************/ + + //! Get the input item size for this port in bytes + size_t get_input_size(const size_t which_input) const; + + //! Set the input item size for this port in bytes + void set_input_size(const size_t which_input, const size_t bytes); + + //! Get the output item size for this port in bytes + size_t get_output_size(const size_t which_output) const; + + //! Set the output item size for this port in bytes + void set_output_size(const size_t which_output, const size_t bytes); + + /******************************************************************* * Deal with input and output port configuration ******************************************************************/ @@ -204,12 +220,6 @@ struct GRAS_API Block : Element * Work related routines and fail states ******************************************************************/ - //! Called when the flow graph is started, can overload - virtual bool start(void); - - //! Called when the flow graph is stopped, can overload - virtual bool stop(void); - typedef WorkBufferArray<const void *> InputItems; typedef WorkBufferArray<void *> OutputItems; @@ -308,6 +318,20 @@ struct GRAS_API Block : Element void post_output_buffer(const size_t which_output, const SBuffer &buffer); /*! + * Overload notify_active to get called when block becomes active. + * This will be called when the TopBlock start/run API call executes. + * The default implementation of notify_active is a NOP. + */ + virtual void notify_active(void); + + /*! + * Overload notify_inactive to get called when block becomes inactive. + * This will be called when the TopBlock stop/run API call executes. + * The default implementation of notify_inactive is a NOP. + */ + virtual void notify_inactive(void); + + /*! * Overload notify_topology to get called on topological changes. * Use notify_topology to perform one-time resizing operations * to avoid a conditional resizing operation inside the work(). diff --git a/include/gras/element.hpp b/include/gras/element.hpp index 140a732..e6da881 100644 --- a/include/gras/element.hpp +++ b/include/gras/element.hpp @@ -4,7 +4,6 @@ #define INCLUDED_GRAS_ELEMENT_HPP #include <gras/gras.hpp> -#include <gras/io_signature.hpp> #include <boost/shared_ptr.hpp> #include <boost/enable_shared_from_this.hpp> @@ -33,14 +32,6 @@ struct GRAS_API Element : ElementBase, boost::enable_shared_from_this<Element> //! get a canonical name for this element std::string to_string(void) const; - void set_output_signature(const gras::IOSignature &sig); - - void set_input_signature(const gras::IOSignature &sig); - - const gras::IOSignature &input_signature(void) const; - - const gras::IOSignature &output_signature(void) const; - /******************************************************************* * Compatibility for dealing with shared ptrs of Elements ******************************************************************/ @@ -49,13 +40,21 @@ struct GRAS_API Element : ElementBase, boost::enable_shared_from_this<Element> * Good for that factory function/shared ptr paradigm. */ template <typename T> - Element(const boost::shared_ptr<T> &elem) + inline Element(const boost::shared_ptr<T> &elem) { *this = elem->shared_to_element(); } //! Convert a shared ptr of a derived class to an Element - Element &shared_to_element(void); + inline Element &shared_to_element(void) + { + try + { + this->weak_self = this->shared_from_this(); + } + catch(...){} + return *this; + } //! for internal use only boost::weak_ptr<Element> weak_self; diff --git a/include/gras/element.i b/include/gras/element.i index f826ca8..1408eac 100644 --- a/include/gras/element.i +++ b/include/gras/element.i @@ -29,7 +29,6 @@ //////////////////////////////////////////////////////////////////////// %include <std_string.i> %include <gras/gras.hpp> -%import <gras/io_signature.i> %include <gras/element.hpp> //////////////////////////////////////////////////////////////////////// diff --git a/include/gras/io_signature.hpp b/include/gras/io_signature.hpp deleted file mode 100644 index 1d102e4..0000000 --- a/include/gras/io_signature.hpp +++ /dev/null @@ -1,129 +0,0 @@ -// Copyright (C) by Josh Blum. See LICENSE.txt for licensing information. - -#ifndef INCLUDED_GRAS_IO_SIGNATURE_HPP -#define INCLUDED_GRAS_IO_SIGNATURE_HPP - -#include <gras/gras.hpp> -#include <vector> -#include <stdexcept> - -namespace gras -{ - -/*! - * An IO signature describes the input or output specifications - * for the streaming input or output ports of a block. - * Properties are a maximum and minimum number of ports, - * and an item size in bytes for each port. - */ -struct IOSignature : std::vector<unsigned> -{ - static const int IO_INFINITE = ~0; - - //! Create an empty signature - IOSignature(void) - { - this->set_min_streams(IO_INFINITE); - this->set_max_streams(IO_INFINITE); - } - - //! Create a signature with a single item size - IOSignature(const unsigned size) - { - this->push_back(size); - this->set_min_streams(IO_INFINITE); - this->set_max_streams(IO_INFINITE); - } - - //! Create a signature with the specified min and max streams - IOSignature(const int min_streams, const int max_streams) - { - if (min_streams > max_streams and max_streams != IO_INFINITE) - { - throw std::invalid_argument("io signature fail: min_streams > max_streams"); - } - this->set_min_streams(min_streams); - this->set_max_streams(max_streams); - } - - //! Create a signature from a vector of IO widths - IOSignature(const std::vector<unsigned> &sig) - { - this->assign(sig.begin(), sig.end()); - this->set_min_streams(IO_INFINITE); - this->set_max_streams(IO_INFINITE); - } - - //! Construct from pointer for backwards compatible shared_ptr usage. - explicit IOSignature(const IOSignature *sig) - { - *this = *sig; - } - - //! Overloaded arrow operator for backwards compatible shared_ptr usage. - IOSignature* operator->(void) - { - return this; - }; - - //! Overloaded arrow operator for backwards compatible shared_ptr usage. - const IOSignature* operator->(void) const - { - return this; - }; - - const unsigned &at(const unsigned index) const - { - if (this->empty()) - { - throw std::invalid_argument("io signature fail: indexing empty vector"); - } - if (this->size() > index) - { - return std::vector<unsigned>::at(index); - } - return this->back(); - } - - const unsigned &operator[](const unsigned index) const - { - return this->at(index); - } - - void set_min_streams(const int val) - { - _min_streams = val; - } - - void set_max_streams(const int val) - { - _max_streams = val; - } - - int min_streams(void) const - { - return _min_streams; - } - - int max_streams(void) const - { - return _max_streams; - } - - int sizeof_stream_item(const unsigned index) const - { - return this->at(index); - } - - const std::vector<unsigned> &sizeof_stream_items(void) const - { - return *this; - } - - int _min_streams; - int _max_streams; -}; - -} //namespace gras - -#endif /*INCLUDED_GRAS_IO_SIGNATURE_HPP*/ diff --git a/include/gras/io_signature.i b/include/gras/io_signature.i deleted file mode 100644 index be9a3fd..0000000 --- a/include/gras/io_signature.i +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright (C) by Josh Blum. See LICENSE.txt for licensing information. - -#ifndef INCLUDED_GRAS_IO_SIGNATURE_I -#define INCLUDED_GRAS_IO_SIGNATURE_I - -%{ -#include <gras/io_signature.hpp> -%} - -%ignore gras::IOSignature::operator->(); -%ignore gras::IOSignature::operator->() const; -%ignore gras::IOSignature::operator[]; //ignore warnings about %extend - -%include <std_vector.i> -%template (std_vector_gras_io_signature_unsigned) std::vector<unsigned>; - -%include <gras/io_signature.hpp> - -%extend gras::IOSignature -{ - const unsigned &__getitem__(const unsigned index) - { - return ($self)->at(index); - } -} - -#endif /*INCLUDED_GRAS_IO_SIGNATURE_I*/ diff --git a/include/gras/top_block.hpp b/include/gras/top_block.hpp index a96cfe8..497f54f 100644 --- a/include/gras/top_block.hpp +++ b/include/gras/top_block.hpp @@ -82,19 +82,6 @@ struct GRAS_API TopBlock : HierBlock * An external app will visualize the data. */ std::string get_stats_xml(void); - - //! Deprecated - void start(const size_t max_items); - - //! Deprecated - void run(const size_t max_items); - - //! Deprecated - int max_noutput_items(void) const; - - //! Deprecated - void set_max_noutput_items(int max_items); - }; } //namespace gras |