GNU Radio Manual and C++ API Reference
3.8.1.0
The Free & Open Software Radio Ecosystem
vector_map.h
Go to the documentation of this file.
1
/* -*- c++ -*- */
2
/*
3
* Copyright 2012,2013 Free Software Foundation, Inc.
4
*
5
* This file is part of GNU Radio
6
*
7
* GNU Radio is free software; you can redistribute it and/or modify
8
* it under the terms of the GNU General Public License as published by
9
* the Free Software Foundation; either version 3, or (at your option)
10
* any later version.
11
*
12
* GNU Radio is distributed in the hope that it will be useful,
13
* but WITHOUT ANY WARRANTY; without even the implied warranty of
14
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
* GNU General Public License for more details.
16
*
17
* You should have received a copy of the GNU General Public License
18
* along with GNU Radio; see the file COPYING. If not, write to
19
* the Free Software Foundation, Inc., 51 Franklin Street,
20
* Boston, MA 02110-1301, USA.
21
*/
22
23
#ifndef INCLUDED_GR_VECTOR_MAP_H
24
#define INCLUDED_GR_VECTOR_MAP_H
25
26
#include <
gnuradio/blocks/api.h
>
27
#include <
gnuradio/sync_block.h
>
28
#include <vector>
29
30
namespace
gr
{
31
namespace
blocks {
32
33
/*!
34
* \brief Maps elements from a set of input vectors to a set of output vectors.
35
* \ingroup stream_operators_blk
36
*
37
* \details
38
* If in[i] is the input vector in the i'th stream then the output
39
* vector in the j'th stream is:
40
*
41
* out[j][k] = in[mapping[j][k][0]][mapping[j][k][1]]
42
*
43
* That is mapping is of the form (out_stream1_mapping,
44
* out_stream2_mapping, ...) and out_stream1_mapping is of the
45
* form (element1_mapping, element2_mapping, ...) and
46
* element1_mapping is of the form (in_stream, in_element).
47
*/
48
class
BLOCKS_API
vector_map
:
virtual
public
sync_block
49
{
50
public
:
51
// gr::blocks::vector_map::sptr
52
typedef
boost::shared_ptr<vector_map>
sptr
;
53
54
/*!
55
* Build a vector map block.
56
*
57
* \param item_size (integer) size of vector elements
58
* \param in_vlens (vector of integers) number of elements in each
59
* input vector
60
* \param mapping (vector of vectors of vectors of integers) how to
61
* map elements from input to output vectors
62
*/
63
static
sptr
make(
size_t
item_size,
64
std::vector<size_t> in_vlens,
65
std::vector<std::vector<std::vector<size_t>>> mapping);
66
67
virtual
void
set_mapping(std::vector<std::vector<std::vector<size_t>>> mapping) = 0;
68
};
69
70
}
/* namespace blocks */
71
}
/* namespace gr */
72
73
#endif
/* INCLUDED_GR_VECTOR_MAP_H */
api.h
BLOCKS_API
#define BLOCKS_API
Definition:
gr-blocks/include/gnuradio/blocks/api.h:30
gr::blocks::vector_map::sptr
boost::shared_ptr< vector_map > sptr
Definition:
vector_map.h:52
gr::sync_block
synchronous 1:1 input to output with history
Definition:
sync_block.h:37
gr::blocks::vector_map
Maps elements from a set of input vectors to a set of output vectors.
Definition:
vector_map.h:48
sync_block.h
gr
GNU Radio logging wrapper for log4cpp library (C++ port of log4j)
Definition:
basic_block.h:43
gr-blocks
include
gnuradio
blocks
vector_map.h
Generated by
1.8.16