lsst.astshim
gf5dcc679e7+7aca86229d
Toggle main menu visibility
Loading...
Searching...
No Matches
src
MapSplit.cc
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
#include <cmath>
23
#include <limits>
24
#include <sstream>
25
#include <stdexcept>
26
27
#include "
astshim/base.h
"
28
#include "
astshim/detail/utils.h
"
29
#include "
astshim/Object.h
"
30
#include "
astshim/Mapping.h
"
31
#include "
astshim/MapSplit.h
"
32
33
namespace
ast
{
34
35
MapSplit::MapSplit
(
Mapping
const
&map,
std::vector<int>
const
&in) {
36
std::vector<int>
locOut;
37
locOut.
reserve
(map.
getNOut
());
// the max # of elements astMapSplit may set
38
AstMapping *rawSplitMap;
39
astMapSplit(map.
getRawPtr
(), in.
size
(), in.
data
(), locOut.
data
(), &rawSplitMap);
40
assertOK
();
41
if
(!rawSplitMap) {
42
throw
std::runtime_error
(
"Could not split the map"
);
43
}
44
splitMap
=
Object::fromAstObject<Mapping>
(
reinterpret_cast<
AstObject *
>
(rawSplitMap),
false
);
45
origIn
= in;
46
// copy the splitMap->getNOut() elements of `locOut` that contain data to `origOut`
47
const
int
newNOut =
splitMap
->getNOut();
48
for
(
int
i = 0; i < newNOut; ++i) {
49
origOut
.push_back(locOut[i]);
50
}
51
}
52
53
}
// namespace ast
MapSplit.h
Mapping.h
Object.h
base.h
ast::MapSplit::MapSplit
MapSplit(Mapping const &map, std::vector< int > const &in)
Construct a MapSplit.
Definition
MapSplit.cc:35
ast::MapSplit::splitMap
std::shared_ptr< Mapping > splitMap
The Mapping that was split off.
Definition
MapSplit.h:67
ast::MapSplit::origIn
std::vector< int > origIn
Indices of the inputs of the original mapping were picked for the split mapping.
Definition
MapSplit.h:73
ast::MapSplit::origOut
std::vector< int > origOut
Indices of the outputs of the original mapping which are fed by the picked inputs.
Definition
MapSplit.h:83
ast::Mapping
An abstract base class for objects which transform one set of coordinates to another.
Definition
Mapping.h:59
ast::Mapping::getNOut
int getNOut() const
Get NOut: the number of output axes.
Definition
Mapping.h:82
ast::Object::fromAstObject
static std::shared_ptr< Class > fromAstObject(AstObject *rawObj, bool copy)
Given a bare AST object pointer return a shared pointer to an ast::Object of the correct type.
Definition
Object.cc:140
ast::Object::getRawPtr
AstObject const * getRawPtr() const
Get the raw AST pointer.
Definition
Object.h:292
std::vector::data
T data(T... args)
ast
AST wrapper classes and functions.
Definition
attributes_channel.dox:1
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::vector::reserve
T reserve(T... args)
std::runtime_error
std::vector::size
T size(T... args)
utils.h
std::vector
Generated on
for lsst.astshim by
1.17.0