lsst.astshim
gf5dcc679e7+7aca86229d
Toggle main menu visibility
Loading...
Searching...
No Matches
include
astshim
detail
utils.h
Go to the documentation of this file.
1
/*
2
* LSST Data Management System
3
* Copyright 2017 AURA/LSST.
4
*
5
* This product includes software developed by the
6
* LSST Project (http://www.lsst.org/).
7
*
8
* This program is free software: you can redistribute it and/or modify
9
* it under the terms of the GNU General Public License as published by
10
* the Free Software Foundation, either version 3 of the License, or
11
* (at your option) any later version.
12
*
13
* This program is distributed in the hope that it will be useful,
14
* but WITHOUT ANY WARRANTY; without even the implied warranty of
15
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
* GNU General Public License for more details.
17
*
18
* You should have received a copy of the LSST License Statement and
19
* the GNU General Public License along with this program. If not,
20
* see <https://www.lsstcorp.org/LegalNotices/>.
21
*/
22
#ifndef ASTSHIM_DETAIL_UTILS_H
23
#define ASTSHIM_DETAIL_UTILS_H
24
25
#include <cstddef>
26
#include <cctype>
27
#include <limits>
28
#include <sstream>
29
#include <stdexcept>
30
#include <vector>
31
32
#include "
astshim/base.h
"
33
34
namespace
ast
{
35
namespace
detail
{
36
37
static
const
int
FITSLEN = 80;
38
40
inline
void
annulAstObject
(AstObject *
object
) {
41
if
(
object
!=
nullptr
) {
42
astAnnul(
object
);
43
assertOK
();
44
}
45
}
46
47
template
<
typename
T1,
typename
T2>
48
inline
void
assertEqual
(T1 val1,
std::string
const
&descr1, T2 val2,
std::string
const
&descr2) {
49
if
(val1 != val2) {
50
std::ostringstream
os;
51
os << descr1 <<
" = "
<< val1 <<
" != "
<< descr2 <<
" = "
<< val2;
52
throw
std::invalid_argument
(os.
str
());
53
}
54
}
55
59
inline
void
astBadToNan
(
std::vector<double>
&p) {
60
for
(
auto
&val : p) {
61
if
(val == AST__BAD) {
62
val =
std::numeric_limits<double>::quiet_NaN
();
63
}
64
}
65
}
66
70
void
astBadToNan
(
ast::Array2D
const
&arr);
71
79
inline
std::string
formatAxisAttr
(
std::string
const
&name,
int
axis) {
80
std::stringstream
os;
81
os << name <<
"("
<< axis <<
")"
;
82
return
os.
str
();
83
}
84
88
bool
isSeries
(AstCmpMap
const
*cmpMap);
89
95
std::string
getClassName
(AstObject
const
*rawObj);
96
100
inline
double
safeDouble
(
double
val) {
101
assertOK
();
102
return
val != AST__BAD ? val :
std::numeric_limits<double>::quiet_NaN
();
103
}
104
108
inline
std::string
stringToUpper
(
std::string
const
&str) {
109
std::string
upstr;
110
upstr.
reserve
(str.
size
());
111
for
(
char
c : str) {
112
upstr +=
std::toupper
(c);
113
}
114
return
upstr;
115
}
116
117
}
// namespace detail
118
}
// namespace ast
119
120
#endif
base.h
std::ostringstream
std::string
std::stringstream
std::invalid_argument
ast::detail
Definition
polyMapUtils.h:30
ast::detail::formatAxisAttr
std::string formatAxisAttr(std::string const &name, int axis)
Format an axis-specific attribute by appending the axis index.
Definition
utils.h:79
ast::detail::assertEqual
void assertEqual(T1 val1, std::string const &descr1, T2 val2, std::string const &descr2)
Definition
utils.h:48
ast::detail::annulAstObject
void annulAstObject(AstObject *object)
A wrapper around astAnnul; intended as a custom deleter for std::unique_ptr.
Definition
utils.h:40
ast::detail::getClassName
std::string getClassName(AstObject const *rawObj)
Get the AST class name, changing CmpMap to SeriesMap or ParallelMap as appropriate.
Definition
utils.cc:37
ast::detail::safeDouble
double safeDouble(double val)
Return a double value after checking status and replacing AST__BAD with nan.
Definition
utils.h:100
ast::detail::stringToUpper
std::string stringToUpper(std::string const &str)
Return a copy of a string in which all characters are uppercase.
Definition
utils.h:108
ast::detail::astBadToNan
void astBadToNan(std::vector< double > &p)
Replace AST__BAD with a quiet NaN in a vector.
Definition
utils.h:59
ast::detail::isSeries
bool isSeries(AstCmpMap const *cmpMap)
Return true if the compound map is in series.
Definition
utils.cc:47
ast
AST wrapper classes and functions.
Definition
attributes_channel.dox:1
ast::Array2D
ndarray::Array< double, 2, 2 > Array2D
2D array of const double; typically used for lists of const points
Definition
base.h:42
ast::assertOK
void assertOK(AstObject *rawPtr1=nullptr, AstObject *rawPtr2=nullptr)
Throw std::runtime_error if AST's state is bad.
Definition
base.cc:49
std::numeric_limits::quiet_NaN
T quiet_NaN(T... args)
std::string::reserve
T reserve(T... args)
std::string::size
T size(T... args)
std::ostringstream::str
T str(T... args)
std::toupper
T toupper(T... args)
std::vector
Generated on
for lsst.astshim by
1.17.0