GNU Radio C++ API Reference g90d26cb
The Free & Open Software Radio Ecosystem
 
Loading...
Searching...
No Matches
blockinterleaving.h
Go to the documentation of this file.
1#include <vector>
2#include <cstddef>
3/* -*- c++ -*- */
4/*
5 * Copyright 2022 Johannes Demel.
6 *
7 * This file is part of GNU Radio
8 *
9 * SPDX-License-Identifier: GPL-3.0-or-later
10 *
11 */
12
13#ifndef INCLUDED_GR_BLOCKS_BLOCKINTERLEAVING_H
14#define INCLUDED_GR_BLOCKS_BLOCKINTERLEAVING_H
15
16#include <gnuradio/blocks/api.h>
17#include <cstddef>
18#include <vector>
19
20namespace gr {
21namespace blocks {
22namespace kernel {
23
25{
26public:
28
29 size_t interleaver_length() { return _interleaver_indices.size(); };
30 std::vector<size_t> interleaver_indices() { return _interleaver_indices; };
31 std::vector<size_t> deinterleaver_indices() { return _deinterleaver_indices; };
32
33 template <class T>
34 void interleave(T* target, const T* src)
35 {
36 for (auto idx : _interleaver_indices) {
37 *target++ = src[idx];
38 }
39 }
40
41 template <class T>
42 void deinterleave(T* target, const T* src)
43 {
44 for (auto idx : _deinterleaver_indices) {
45 *target++ = src[idx];
46 }
47 }
48
49private:
50 std::vector<size_t> _interleaver_indices;
51 std::vector<size_t> _deinterleaver_indices;
52
53 void set_interleaver_indices(const std::vector<size_t>& interleaver_indices);
54};
55
56} /* namespace kernel */
57} /* namespace blocks */
58} /* namespace gr */
59
60#endif /* INCLUDED_GR_BLOCKS_BLOCKINTERLEAVING_H */
Definition blockinterleaving.h:25
size_t interleaver_length()
Definition blockinterleaving.h:29
void interleave(T *target, const T *src)
Definition blockinterleaving.h:34
std::vector< size_t > deinterleaver_indices()
Definition blockinterleaving.h:31
block_interleaving(std::vector< size_t > interleaver_indices)
std::vector< size_t > interleaver_indices()
Definition blockinterleaving.h:30
void deinterleave(T *target, const T *src)
Definition blockinterleaving.h:42
STL class.
Definition vector_docstub.h:11
#define BLOCKS_API
Definition gr-blocks/include/gnuradio/blocks/api.h:18
GNU Radio logging wrapper.
Definition basic_block.h:29