NS-3 based Named Data Networking (NDN) simulator
ndnSIM 2.5: NDN, CCN, CCNx, content centric networks
API Documentation
buffer.hpp
Go to the documentation of this file.
1
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2
/*
3
* Copyright (c) 2013-2018 Regents of the University of California.
4
*
5
* This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
6
*
7
* ndn-cxx library is free software: you can redistribute it and/or modify it under the
8
* terms of the GNU Lesser General Public License as published by the Free Software
9
* Foundation, either version 3 of the License, or (at your option) any later version.
10
*
11
* ndn-cxx library is distributed in the hope that it will be useful, but WITHOUT ANY
12
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
13
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
14
*
15
* You should have received copies of the GNU General Public License and GNU Lesser
16
* General Public License along with ndn-cxx, e.g., in COPYING.md file. If not, see
17
* <http://www.gnu.org/licenses/>.
18
*
19
* See AUTHORS.md for complete list of ndn-cxx authors and contributors.
20
*
21
* @author Alexander Afanasyev <http://lasr.cs.ucla.edu/afanasyev/index.html>
22
*/
23
24
#ifndef NDN_ENCODING_BUFFER_HPP
25
#define NDN_ENCODING_BUFFER_HPP
26
27
#include "
ndn-cxx/detail/common.hpp
"
28
29
#include <vector>
30
31
namespace
ndn
{
32
40
class
Buffer
:
public
std::vector<uint8_t>
41
{
42
public
:
45
Buffer
() =
default
;
46
49
Buffer
(
const
Buffer
&);
50
53
Buffer
&
54
operator=
(
const
Buffer
&);
55
58
Buffer
(
Buffer
&&) noexcept;
59
62
Buffer
&
63
operator=(
Buffer
&&) noexcept;
64
68
explicit
69
Buffer
(
size_t
size)
70
: std::vector<uint8_t>(size, 0)
71
{
72
}
73
78
Buffer
(
const
void
*
buf
,
size_t
length)
79
: std::vector<uint8_t>(reinterpret_cast<const uint8_t*>(
buf
),
80
reinterpret_cast<const uint8_t*>(
buf
) + length)
81
{
82
}
83
88
template
<
class
InputIt>
89
Buffer
(InputIt first, InputIt last)
90
: std::vector<uint8_t>(first, last)
91
{
92
}
93
96
template
<
class
T>
97
T*
98
get
() noexcept
99
{
100
return
reinterpret_cast<
T*
>
(data());
101
}
102
105
template
<
class
T>
106
const
T*
107
get
() const noexcept
108
{
109
return
reinterpret_cast<
const
T*
>
(data());
110
}
111
};
112
113
inline
114
Buffer::Buffer
(
const
Buffer&) =
default
;
115
116
inline
Buffer&
117
Buffer::operator=
(
const
Buffer&) =
default
;
118
119
inline
120
Buffer::Buffer
(Buffer&&) noexcept = default;
121
122
inline Buffer&
123
Buffer::operator=(Buffer&&) noexcept = default;
124
125
using
BufferPtr
= shared_ptr<
Buffer
>;
126
using
ConstBufferPtr
= shared_ptr<const
Buffer
>;
127
128
}
// namespace ndn
129
130
#endif // NDN_ENCODING_BUFFER_HPP
buf
const uint8_t * buf
Definition:
verification-helpers.cpp:47
common.hpp
Common includes and macros used throughout the library.
ndn::Buffer::get
T * get() noexcept
Definition:
buffer.hpp:98
ndn::Buffer
General-purpose automatically managed/resized buffer.
Definition:
buffer.hpp:41
ndn::Buffer::Buffer
Buffer(const Buffer &)
Copy constructor.
ndn::Buffer::Buffer
Buffer(InputIt first, InputIt last)
Creates a Buffer by copying the elements of the range [first, last)
Definition:
buffer.hpp:89
ndn::Buffer::Buffer
Buffer(const void *buf, size_t length)
Creates a Buffer by copying contents from a raw buffer.
Definition:
buffer.hpp:78
ndn::Buffer::get
const T * get() const noexcept
Definition:
buffer.hpp:107
ndn::Buffer::Buffer
Buffer(Buffer &&) noexcept
Move constructor.
ndn::BufferPtr
shared_ptr< Buffer > BufferPtr
Definition:
buffer.hpp:125
ndn::Buffer::operator=
Buffer & operator=(const Buffer &)
Copy assignment operator.
ndn::Buffer::Buffer
Buffer()=default
Creates an empty Buffer.
ndn::ConstBufferPtr
shared_ptr< const Buffer > ConstBufferPtr
Definition:
buffer.hpp:126
ndn
Copyright (c) 2011-2015 Regents of the University of California.
Definition:
ndn-strategy-choice-helper.hpp:34
ndnSIM
ndn-cxx
ndn-cxx
encoding
buffer.hpp
Generated on Mon Jun 1 2020 22:32:14 for ndnSIM by
1.8.18