OTB
9.0.0
Orfeo Toolbox
Main Page
Related Pages
Modules
Namespaces
Namespace List
Namespace Members
All
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
r
s
t
u
v
w
z
Functions
a
b
c
d
e
f
g
h
i
j
l
m
n
o
p
r
s
t
u
v
w
Variables
a
c
d
f
g
h
i
l
m
n
p
r
s
t
u
v
Typedefs
b
c
d
f
g
i
k
l
m
n
p
r
s
u
v
z
Enumerations
Enumerator
a
c
d
e
f
g
h
i
k
l
m
n
p
r
s
t
u
v
Classes
Class List
Class Index
Class Hierarchy
Class Members
All
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
~
Functions
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
z
~
Variables
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
r
s
t
u
v
w
x
y
Typedefs
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
r
s
t
u
v
w
x
Enumerations
a
b
c
d
f
h
i
l
m
o
p
s
t
Enumerator
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
r
s
t
u
v
w
Related Functions
a
b
c
e
f
g
i
l
m
n
o
r
Files
File List
File Members
All
_
b
c
d
e
f
g
i
l
m
o
p
r
s
t
u
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
_
b
c
d
g
i
o
r
t
u
Examples
Modules
Core
Common
include
otbNotNull.h
Go to the documentation of this file.
1
/*
2
* Copyright (C) 2005-2022 Centre National d'Etudes Spatiales (CNES)
3
*
4
* This file is part of Orfeo Toolbox
5
*
6
* https://www.orfeo-toolbox.org/
7
*
8
* Licensed under the Apache License, Version 2.0 (the "License");
9
* you may not use this file except in compliance with the License.
10
* You may obtain a copy of the License at
11
*
12
* http://www.apache.org/licenses/LICENSE-2.0
13
*
14
* Unless required by applicable law or agreed to in writing, software
15
* distributed under the License is distributed on an "AS IS" BASIS,
16
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17
* See the License for the specific language governing permissions and
18
* limitations under the License.
19
*/
20
21
#ifndef otbNotNull_h
22
#define otbNotNull_h
23
24
#include <cstddef>
25
#include <cassert>
26
27
namespace
otb
28
{
36
template
<
typename
T>
37
class
NotNull
38
{
39
public
:
40
constexpr
NotNull
(T p) :
m_p
(p) { assert(p); }
41
NotNull
(std::nullptr_t) =
delete
;
42
NotNull
&
operator=
(std::nullptr_t) =
delete
;
44
45
constexpr T
get
()
const
46
{
47
assert(
m_p
);
48
return
m_p
;
49
}
50
51
constexpr
operator
T()
const
{
return
get
(); }
52
constexpr T
operator->
()
const
{
return
get
(); }
53
constexpr decltype(
auto
) operator*()
const
{
return
*
get
(); }
54
55
// unwanted operators...pointers only point to single objects!
56
NotNull
&
operator++
() =
delete
;
57
NotNull
&
operator--
() =
delete
;
58
NotNull
operator++
(
int
) =
delete
;
59
NotNull
operator--
(
int
) =
delete
;
60
NotNull
&
operator+=
(std::ptrdiff_t) =
delete
;
61
NotNull
&
operator-=
(std::ptrdiff_t) =
delete
;
62
void
operator[]
(std::ptrdiff_t)
const
=
delete
;
63
64
private
:
65
T
m_p
;
66
};
67
68
}
// otb namespace
69
70
#endif // otbNotNull_h
otb::NotNull
Definition:
otbNotNull.h:37
otb::NotNull::get
constexpr T get() const
Definition:
otbNotNull.h:45
otb::NotNull::operator--
NotNull & operator--()=delete
otb::NotNull::operator-=
NotNull & operator-=(std::ptrdiff_t)=delete
otb
The "otb" namespace contains all Orfeo Toolbox (OTB) classes.
Definition:
otbJoinContainer.h:32
otb::NotNull::operator+=
NotNull & operator+=(std::ptrdiff_t)=delete
otb::NotNull::operator->
constexpr T operator->() const
Definition:
otbNotNull.h:52
otb::NotNull::operator++
NotNull & operator++()=delete
otb::NotNull::NotNull
constexpr NotNull(T p)
Definition:
otbNotNull.h:40
otb::NotNull::operator[]
void operator[](std::ptrdiff_t) const =delete
otb::NotNull::operator=
NotNull & operator=(std::nullptr_t)=delete
otb::NotNull::m_p
T m_p
Definition:
otbNotNull.h:65
Generated at Wed Feb 28 2024 15:23:11 for
OTB
with
1.8.17