Teuchos Package Browser (Single Doxygen Collection)
Version of the Day
Toggle main menu visibility
Loading...
Searching...
No Matches
core
src
Teuchos_ArrayConversions.hpp
Go to the documentation of this file.
1
// @HEADER
2
// ***********************************************************************
3
//
4
// Teuchos: Common Tools Package
5
// Copyright (2004) Sandia Corporation
6
//
7
// Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive
8
// license for use of this work by or on behalf of the U.S. Government.
9
//
10
// Redistribution and use in source and binary forms, with or without
11
// modification, are permitted provided that the following conditions are
12
// met:
13
//
14
// 1. Redistributions of source code must retain the above copyright
15
// notice, this list of conditions and the following disclaimer.
16
//
17
// 2. Redistributions in binary form must reproduce the above copyright
18
// notice, this list of conditions and the following disclaimer in the
19
// documentation and/or other materials provided with the distribution.
20
//
21
// 3. Neither the name of the Corporation nor the names of the
22
// contributors may be used to endorse or promote products derived from
23
// this software without specific prior written permission.
24
//
25
// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
26
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
27
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
28
// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
29
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
30
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
31
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
32
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
33
// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
34
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
35
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36
//
37
// Questions? Contact Michael A. Heroux (maherou@sandia.gov)
38
//
39
// ***********************************************************************
40
// @HEADER
41
42
#ifndef TEUCHOS_ARRAY_CONVERSIONS_H
43
#define TEUCHOS_ARRAY_CONVERSIONS_H
44
48
49
#include "
Teuchos_Ptr.hpp
"
50
#include "
Teuchos_RCP.hpp
"
51
#include "
Teuchos_Array.hpp
"
52
#include "
Teuchos_Assert.hpp
"
53
54
55
namespace
Teuchos
{
56
57
62
template
<
class
ArrayPtrT_in,
class
T_out>
63
void
arrayViewPtrConv
(
const
ArrayPtrT_in &a_in,
64
const
ArrayView
<
Ptr<T_out>
> &a_out )
65
{
66
using
Teuchos::as
;
67
#ifdef TEUCHOS_DEBUG
68
TEUCHOS_ASSERT_EQUALITY
(
as<Teuchos_Ordinal>
(a_in.size()),
69
as<Teuchos_Ordinal>
(a_out.size()));
70
#endif
71
for
(
Teuchos_Ordinal
i = 0; i < as<Teuchos_Ordinal>(a_in.size()); ++i) {
72
a_out[i] = a_in[i].ptr();
73
}
74
}
75
76
80
template
<
class
ArrayPtrT_in,
class
T_out>
81
void
arrayViewRcpConv
(
const
ArrayPtrT_in &a_in,
82
const
ArrayView
<
RCP<T_out>
> &a_out )
83
{
84
using
Teuchos::as
;
85
#ifdef TEUCHOS_DEBUG
86
TEUCHOS_ASSERT_EQUALITY
(
as<Teuchos_Ordinal>
(a_in.size()),
87
as<Teuchos_Ordinal>
(a_out.size()));
88
#endif
89
for
(
Teuchos_Ordinal
i = 0; i < as<Teuchos_Ordinal>(a_in.size()); ++i) {
90
a_out[i] = a_in[i];
91
}
92
}
93
94
115
template
<
class
T_out,
class
ArrayPtrT_in>
116
Array<Ptr<T_out>
>
arrayPtrConv
(
const
ArrayPtrT_in &a_in)
117
{
118
using
Teuchos::as
;
119
Array<Ptr<T_out>
> a_out(a_in.size());
120
arrayViewPtrConv
(a_in, a_out());
121
return
a_out;
122
}
123
124
131
template
<
class
T_out,
class
ArrayPtrT_in>
132
Array<RCP<T_out>
>
arrayRcpConv
(
const
ArrayPtrT_in &a_in)
133
{
134
using
Teuchos::as
;
135
Array<RCP<T_out>
> a_out(a_in.size());
136
arrayViewRcpConv
(a_in, a_out());
137
return
a_out;
138
}
139
140
151
template
<
class
T>
152
ArrayView<const Ptr<const T> >
153
arrayConstPtrConstCast
(
const
ArrayView
<
const
Ptr<T>
> &a_in)
154
{
155
return
av_reinterpret_cast<const Ptr<const T>
>(a_in);
156
}
157
158
169
template
<
class
T>
170
ArrayView<const RCP<const T> >
171
arrayConstRcpConstCast
(
const
ArrayView
<
const
RCP<T>
> &a_in)
172
{
173
return
av_reinterpret_cast<const RCP<const T>
>(a_in);
174
}
175
176
177
}
// namespace Teuchos
178
179
180
#endif
// TEUCHOS_ARRAY_CONVERSIONS_H
181
Teuchos_Array.hpp
Templated array class derived from the STL std::vector.
Teuchos_Assert.hpp
Teuchos_Ordinal
TEUCHOS_ORDINAL_TYPE Teuchos_Ordinal
Definition
Teuchos_ConfigDefs.hpp:141
Teuchos_Ptr.hpp
Teuchos_RCP.hpp
Reference-counted pointer class and non-member templated function implementations.
Teuchos::ArrayView
Nonowning array view.
Definition
Teuchos_ArrayViewDecl.hpp:123
Teuchos::ArrayView::av_reinterpret_cast
ArrayView< T2 > av_reinterpret_cast(const ArrayView< T1 > &p1)
Reinterpret cast of underlying ArrayView type from T1* to T2*.
Teuchos::Array
Replacement for std::vector that is compatible with the Teuchos Memory Management classes.
Definition
Teuchos_Array.hpp:195
Teuchos::Ptr
Simple wrapper class for raw pointers to single objects where no persisting relationship exists.
Definition
Teuchos_PtrDecl.hpp:104
Teuchos::RCP
Smart reference counting pointer class for automatic garbage collection.
Definition
Teuchos_RCPDecl.hpp:429
TEUCHOS_ASSERT_EQUALITY
#define TEUCHOS_ASSERT_EQUALITY(val1, val2)
This macro is checks that to numbers are equal and if not then throws an exception with a good error ...
Definition
Teuchos_Assert.hpp:105
Teuchos
Definition
Teuchos_AbstractFactory.hpp:47
Teuchos::arrayViewPtrConv
void arrayViewPtrConv(const ArrayPtrT_in &a_in, const ArrayView< Ptr< T_out > > &a_out)
Utility function to convert from an an input Array[View,RCP]<[const] PTR<T_in> > object to an output ...
Definition
Teuchos_ArrayConversions.hpp:63
Teuchos::as
TypeTo as(const TypeFrom &t)
Convert from one value type to another.
Definition
Teuchos_as.hpp:2840
Teuchos::arrayConstRcpConstCast
ArrayView< const RCP< const T > > arrayConstRcpConstCast(const ArrayView< const RCP< T > > &a_in)
Utility function that does a reinterpret case to convert an ArrayView<const RCP<T> > object to an Arr...
Definition
Teuchos_ArrayConversions.hpp:171
Teuchos::arrayPtrConv
Array< Ptr< T_out > > arrayPtrConv(const ArrayPtrT_in &a_in)
Utility function to convert an Array[View,RCP]<[const] PTR<T_in> > object to an Array<Ptr<T_out> > ob...
Definition
Teuchos_ArrayConversions.hpp:116
Teuchos::arrayConstPtrConstCast
ArrayView< const Ptr< const T > > arrayConstPtrConstCast(const ArrayView< const Ptr< T > > &a_in)
Utility function that does a reinterpret case to convert an ArrayView<const Ptr<T> > object to an Arr...
Definition
Teuchos_ArrayConversions.hpp:153
Teuchos::arrayViewRcpConv
void arrayViewRcpConv(const ArrayPtrT_in &a_in, const ArrayView< RCP< T_out > > &a_out)
Utility function to convert from an input Array[View,RCP]<[const] RCP<T_in> > object to an output Arr...
Definition
Teuchos_ArrayConversions.hpp:81
Teuchos::arrayRcpConv
Array< RCP< T_out > > arrayRcpConv(const ArrayPtrT_in &a_in)
Utility function to convert any Array[View,RCP]<[const] RCP<T_in> > object to an Array<RCP<T_out> > o...
Definition
Teuchos_ArrayConversions.hpp:132
Generated by
1.17.0