1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
|
/* -*- c++ -*- */
/*
* Copyright 2004,2007 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
* SPDX-License-Identifier: GPL-3.0-or-later
*
*/
#ifndef INCLUDED_IO_SIGNATURE_H
#define INCLUDED_IO_SIGNATURE_H
#include <functional>
#include <gnuradio/api.h>
#include <gnuradio/buffer_double_mapped.h>
#include <gnuradio/buffer_type.h>
#include <gnuradio/runtime_types.h>
namespace gr {
/*!
* \brief i/o signature for input and output ports.
* \brief misc
*/
class GR_RUNTIME_API io_signature
{
int d_min_streams;
int d_max_streams;
std::vector<int> d_sizeof_stream_item;
gr_vector_buffer_type d_stream_buffer_type;
io_signature(int min_streams,
int max_streams,
const std::vector<int>& sizeof_stream_items,
gr_vector_buffer_type buftypes);
public:
typedef std::shared_ptr<io_signature> sptr;
static constexpr int IO_INFINITE = -1;
~io_signature();
/*!
* \brief Create an i/o signature
*
* \ingroup internal
* \param min_streams specify minimum number of streams (>= 0)
* \param max_streams specify maximum number of streams (>= min_streams or -1 ->
* infinite) \param sizeof_stream_item specify the size of the items in each stream
* \param buftype type of buffers the streams should use (defaults to standard host
* double mapped buffer)
*/
static sptr make(int min_streams,
int max_streams,
int sizeof_stream_item,
buffer_type buftype = buffer_double_mapped::type);
/*!
* \brief Create an i/o signature
*
* \param min_streams specify minimum number of streams (>= 0)
* \param max_streams specify maximum number of streams (>= min_streams or -1 ->
* infinite) \param sizeof_stream_item1 specify the size of the items in the first
* stream \param sizeof_stream_item2 specify the size of the items in the second and
* subsequent streams
* \param buftype1 type of buffers the first stream should use (defaults to standard
* host double mapped buffer)
* \param buftype2 type of buffers the second and subsequent streams should use
* (defaults to standard host double mapped buffer)
*/
static sptr make2(int min_streams,
int max_streams,
int sizeof_stream_item1,
int sizeof_stream_item2,
buffer_type buftype1 = buffer_double_mapped::type,
buffer_type buftype2 = buffer_double_mapped::type);
/*!
* \brief Create an i/o signature
*
* \param min_streams specify minimum number of streams (>= 0)
* \param max_streams specify maximum number of streams (>= min_streams or -1 ->
* infinite) \param sizeof_stream_item1 specify the size of the items in the first
* stream \param sizeof_stream_item2 specify the size of the items in the second
* stream \param sizeof_stream_item3 specify the size of the items in the third and
* subsequent streams
* \param buftype1 type of buffers the first stream should use (defaults to standard
* host double mapped buffer)
* \param buftype2 type of buffers the second stream should use (defaults to standard
* host double mapped buffer)
* \param buftype3 type of buffers the third and subsequent streams should use
* (defaults to standard host double mapped buffer)
*/
static sptr make3(int min_streams,
int max_streams,
int sizeof_stream_item1,
int sizeof_stream_item2,
int sizeof_stream_item3,
buffer_type buftype1 = buffer_double_mapped::type,
buffer_type buftype2 = buffer_double_mapped::type,
buffer_type buftype3 = buffer_double_mapped::type);
/*!
* \brief Create an i/o signature
*
* \param min_streams specify minimum number of streams (>= 0)
* \param max_streams specify maximum number of streams (>= min_streams or -1 ->
* infinite) \param sizeof_stream_items specify the size of the items in the streams
*
* If there are more streams than there are entries in
* sizeof_stream_items, the value of the last entry in
* sizeof_stream_items is used for the missing values.
* sizeof_stream_items must contain at least 1 entry.
*/
static sptr
makev(int min_streams, int max_streams, const std::vector<int>& sizeof_stream_items);
/*!
* \brief Create an i/o signature
*
* \param min_streams specify minimum number of streams (>= 0)
* \param max_streams specify maximum number of streams (>= min_streams or -1 ->
* infinite)
* \param sizeof_stream_items specify the size of the items in the streams
* \param buftypes the type of buffer each stream will should use
*
* If there are more streams than there are entries in
* sizeof_stream_items, the value of the last entry in
* sizeof_stream_items is used for the missing values.
* sizeof_stream_items must contain at least 1 entry.
*/
static sptr makev(int min_streams,
int max_streams,
const std::vector<int>& sizeof_stream_items,
gr_vector_buffer_type buftypes);
int min_streams() const { return d_min_streams; }
int max_streams() const { return d_max_streams; }
int sizeof_stream_item(int index) const;
std::vector<int> sizeof_stream_items() const;
buffer_type stream_buffer_type(size_t index) const;
gr_vector_buffer_type stream_buffer_types() const;
};
} /* namespace gr */
#endif /* INCLUDED_IO_SIGNATURE_H */
|