LSST Applications  21.0.0-172-gfb10e10a+18fedfabac,22.0.0+297cba6710,22.0.0+80564b0ff1,22.0.0+8d77f4f51a,22.0.0+a28f4c53b1,22.0.0+dcf3732eb2,22.0.1-1-g7d6de66+2a20fdde0d,22.0.1-1-g8e32f31+297cba6710,22.0.1-1-geca5380+7fa3b7d9b6,22.0.1-12-g44dc1dc+2a20fdde0d,22.0.1-15-g6a90155+515f58c32b,22.0.1-16-g9282f48+790f5f2caa,22.0.1-2-g92698f7+dcf3732eb2,22.0.1-2-ga9b0f51+7fa3b7d9b6,22.0.1-2-gd1925c9+bf4f0e694f,22.0.1-24-g1ad7a390+a9625a72a8,22.0.1-25-g5bf6245+3ad8ecd50b,22.0.1-25-gb120d7b+8b5510f75f,22.0.1-27-g97737f7+2a20fdde0d,22.0.1-32-gf62ce7b1+aa4237961e,22.0.1-4-g0b3f228+2a20fdde0d,22.0.1-4-g243d05b+871c1b8305,22.0.1-4-g3a563be+32dcf1063f,22.0.1-4-g44f2e3d+9e4ab0f4fa,22.0.1-42-gca6935d93+ba5e5ca3eb,22.0.1-5-g15c806e+85460ae5f3,22.0.1-5-g58711c4+611d128589,22.0.1-5-g75bb458+99c117b92f,22.0.1-6-g1c63a23+7fa3b7d9b6,22.0.1-6-g50866e6+84ff5a128b,22.0.1-6-g8d3140d+720564cf76,22.0.1-6-gd805d02+cc5644f571,22.0.1-8-ge5750ce+85460ae5f3,master-g6e05de7fdc+babf819c66,master-g99da0e417a+8d77f4f51a,w.2021.48
LSST Data Management Base Package
Public Member Functions | Public Attributes | List of all members
ast::MapSplit Class Reference

A Mapping split off as a subset of another Mapping. More...

#include <MapSplit.h>

Public Member Functions

 MapSplit (Mapping const &map, std::vector< int > const &in)
 Construct a MapSplit. More...
 
 MapSplit (MapSplit const &)=default
 
 MapSplit (MapSplit &&)=default
 
MapSplitoperator= (MapSplit const &)=default
 
MapSplitoperator= (MapSplit &&)=default
 

Public Attributes

std::shared_ptr< MappingsplitMap
 The Mapping that was split off. More...
 
std::vector< int > origIn
 Indices of the inputs of the original mapping were picked for the split mapping. More...
 
std::vector< int > origOut
 Indices of the outputs of the original mapping which are fed by the picked inputs. More...
 

Detailed Description

A Mapping split off as a subset of another Mapping.

Definition at line 38 of file MapSplit.h.

Constructor & Destructor Documentation

◆ MapSplit() [1/3]

ast::MapSplit::MapSplit ( Mapping const &  map,
std::vector< int > const &  in 
)
explicit

Construct a MapSplit.

The subset is specified by choosing a subset of inputs from an existing Mapping. Such a split is only possible if the specified inputs correspond to some subset of the original Mapping's outputs. That is, there must exist a subset of the Mapping outputs for which each output depends only on the selected Mapping inputs, and not on any of the inputs which have not been selected. Also, any output which is not in this subset must not depend on any of the selected inputs.

Parameters
[in]mapMapping to split.
[in]inIndices of inputs of map to pick. Each element should have a value in the range [1, map.getNIn()].
Exceptions
std::runtime_errorif map cannot be split as specified.

Definition at line 35 of file MapSplit.cc.

35  {
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 }
std::shared_ptr< Mapping > splitMap
The Mapping that was split off.
Definition: MapSplit.h:67
std::vector< int > origIn
Indices of the inputs of the original mapping were picked for the split mapping.
Definition: MapSplit.h:73
std::vector< int > origOut
Indices of the outputs of the original mapping which are fed by the picked inputs.
Definition: MapSplit.h:83
T data(T... args)
void assertOK(AstObject *rawPtr1=nullptr, AstObject *rawPtr2=nullptr)
Throw std::runtime_error if AST's state is bad.
Definition: base.cc:49
T push_back(T... args)
T reserve(T... args)
T size(T... args)

◆ MapSplit() [2/3]

ast::MapSplit::MapSplit ( MapSplit const &  )
default

◆ MapSplit() [3/3]

ast::MapSplit::MapSplit ( MapSplit &&  )
default

Member Function Documentation

◆ operator=() [1/2]

MapSplit& ast::MapSplit::operator= ( MapSplit &&  )
default

◆ operator=() [2/2]

MapSplit& ast::MapSplit::operator= ( MapSplit const &  )
default

Member Data Documentation

◆ origIn

std::vector<int> ast::MapSplit::origIn

Indices of the inputs of the original mapping were picked for the split mapping.

This is a copy of the in argument of the constructor.

Definition at line 73 of file MapSplit.h.

◆ origOut

std::vector<int> ast::MapSplit::origOut

Indices of the outputs of the original mapping which are fed by the picked inputs.

This will contain splitMap->getNOut() elements, each in the range [1, nout of the original mapping]. The ith element holds the index within the original mapping which corresponds to the ith output of the split mapping. For example if the 1st output of the split mapping came from the 5th output of the original mapping, then origOut[0] = 5 (0 because vectors use 0-based indexing, and 5 because AST index values are 1-based).

Definition at line 83 of file MapSplit.h.

◆ splitMap

std::shared_ptr<Mapping> ast::MapSplit::splitMap

The Mapping that was split off.

Definition at line 67 of file MapSplit.h.


The documentation for this class was generated from the following files: