diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/gras/CMakeLists.txt | 2 | ||||
-rw-r--r-- | include/gras/block.hpp | 16 | ||||
-rw-r--r-- | include/gras/element.hpp | 9 | ||||
-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 |
6 files changed, 16 insertions, 168 deletions
diff --git a/include/gras/CMakeLists.txt b/include/gras/CMakeLists.txt index f0b0d3a..15651c4 100644 --- a/include/gras/CMakeLists.txt +++ b/include/gras/CMakeLists.txt @@ -10,8 +10,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 8baecfd..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 ******************************************************************/ diff --git a/include/gras/element.hpp b/include/gras/element.hpp index 423053e..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 ******************************************************************/ 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*/ |