lsst.afw
g3a5ebb7d8a+28b83bf6a5
Toggle main menu visibility
Loading...
Searching...
No Matches
include
lsst
afw
geom
detail
transformUtils.h
Go to the documentation of this file.
1
// -*- lsst-c++ -*-
2
/*
3
* LSST Data Management System
4
* Copyright 2017 AURA/LSST.
5
*
6
* This product includes software developed by the
7
* LSST Project (http://www.lsst.org/).
8
*
9
* This program is free software: you can redistribute it and/or modify
10
* it under the terms of the GNU General Public License as published by
11
* the Free Software Foundation, either version 3 of the License, or
12
* (at your option) any later version.
13
*
14
* This program is distributed in the hope that it will be useful,
15
* but WITHOUT ANY WARRANTY; without even the implied warranty of
16
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17
* GNU General Public License for more details.
18
*
19
* You should have received a copy of the LSST License Statement and
20
* the GNU General Public License along with this program. If not,
21
* see <http://www.lsstcorp.org/LegalNotices/>.
22
*/
23
24
#ifndef LSST_AFW_GEOM_TRANSFORMUTILS_H
25
#define LSST_AFW_GEOM_TRANSFORMUTILS_H
26
27
#include <memory>
28
#include <vector>
29
30
#include "
astshim.h
"
31
#include "ndarray.h"
32
33
#include "
lsst/afw/geom/Endpoint.h
"
34
#include "
lsst/afw/geom/Transform.h
"
35
#include "
lsst/daf/base/PropertyList.h
"
36
37
namespace
lsst
{
38
namespace
afw
{
39
namespace
geom
{
40
namespace
detail
{
42
constexpr
int
serializationVersion
= 1;
43
55
template
<
class
Transform>
56
std::shared_ptr<Transform>
readStream
(
std::istream
& is);
57
71
template
<
class
Transform>
72
void
writeStream
(
Transform
const
&
transform
,
std::ostream
& os);
73
74
/*
75
* Provide definitions here in the header file to avoid the need for explicit instantiations
76
*/
77
78
template
<
class
Transform>
79
std::shared_ptr<Transform>
readStream
(
std::istream
& is) {
80
int
version
;
81
is >>
version
;
82
if
(
version
!= 1) {
83
throw
LSST_EXCEPT
(
pex::exceptions::InvalidParameterError
,
84
"Unsupported version "
+
std::to_string
(
version
));
85
}
86
std::string
shortClassName;
87
is >> shortClassName;
88
if
(shortClassName !=
Transform::getShortClassName
()) {
89
std::ostringstream
os;
90
os <<
"Class name in stream "
<< shortClassName <<
" != "
<<
Transform::getShortClassName
();
91
throw
LSST_EXCEPT
(
pex::exceptions::InvalidParameterError
, os.
str
());
92
}
93
auto
astStream =
ast::Stream
(&is,
nullptr
);
94
auto
astObjectPtr =
ast::Channel
(astStream).
read
();
95
auto
mapping =
std::dynamic_pointer_cast<ast::Mapping>
(astObjectPtr);
96
if
(!mapping) {
97
std::ostringstream
os;
98
os <<
"The AST serialization was read as a "
<< astObjectPtr->getClassName()
99
<<
" instead of a Mapping"
;
100
throw
LSST_EXCEPT
(
pex::exceptions::InvalidParameterError
, os.
str
());
101
}
102
103
return
std::make_shared<Transform>
(*mapping);
104
}
105
106
template
<
class
Transform>
107
void
writeStream
(
Transform
const
&
transform
,
std::ostream
& os) {
108
os <<
serializationVersion
<<
" "
<<
Transform::getShortClassName
();
109
transform
.getMapping()->show(os,
false
);
// false = do not write comments
110
}
111
112
}
// namespace detail
113
}
// namespace geom
114
}
// namespace afw
115
}
// namespace lsst
116
117
#endif
Endpoint.h
LSST_EXCEPT
#define LSST_EXCEPT(type,...)
PropertyList.h
Transform.h
astshim.h
std::istream
std::ostream
std::ostringstream
std::string
ast::Channel
ast::Channel::read
std::shared_ptr< Object > read()
ast::Stream
lsst::afw::geom::Transform
Transform LSST spatial data, such as lsst::geom::Point2D and lsst::geom::SpherePoint,...
Definition
Transform.h:68
lsst::afw::geom::Transform::getShortClassName
static std::string getShortClassName()
Return a short version of the class name with no punctuation.
Definition
Transform.cc:137
lsst::pex::exceptions::InvalidParameterError
std::make_shared
T make_shared(T... args)
lsst::afw::geom::detail
Definition
frameSetUtils.h:41
lsst::afw::geom::detail::writeStream
void writeStream(Transform const &transform, std::ostream &os)
Serialize a Transform to an output stream.
Definition
transformUtils.h:107
lsst::afw::geom::detail::serializationVersion
constexpr int serializationVersion
version of serialization used when writing (older versions may also be supported when reading)
Definition
transformUtils.h:42
lsst::afw::geom::detail::readStream
std::shared_ptr< Transform > readStream(std::istream &is)
Deserialize a Transform from an input stream.
Definition
transformUtils.h:79
lsst::afw::geom.transform
Definition
transform.py:1
lsst::afw::geom
Definition
frameSetUtils.h:40
lsst::afw.version
Definition
version.py:1
lsst::afw
Definition
imageAlgorithm.dox:1
lsst
std::dynamic_pointer_cast
T dynamic_pointer_cast(T... args)
std::shared_ptr
std::ostringstream::str
T str(T... args)
std::to_string
T to_string(T... args)
Generated on
for lsst.afw by
1.17.0