LSSTApplications  19.0.0-11-g2ce9f25+2,20.0.0+1,20.0.0+11,20.0.0+2,20.0.0+3,20.0.0+4,20.0.0+5,20.0.0+8,20.0.0+9,20.0.0-1-g009f3de,20.0.0-1-g10df615+8,20.0.0-1-g253301a+4,20.0.0-1-g32a200e+8,20.0.0-1-g596936a+9,20.0.0-1-g8a53f90+1,20.0.0-1-gc96f8cb+10,20.0.0-1-gd1c87d7+1,20.0.0-15-g34741e2+3,20.0.0-2-g04cfba9+2,20.0.0-2-gec03fae+2,20.0.0-3-g082faa5+1,20.0.0-3-g2fa8bb8+6,20.0.0-3-gbdbfa727+1,20.0.0-4-gde602ef96+3,20.0.0-4-ge48a6ca+4,20.0.0-8-g1acaa36,20.0.0-8-g7eef53f7+5,w.2020.27
LSSTDataManagementBasePackage
utils.h
Go to the documentation of this file.
1 /*
2  * LSST Data Management System
3  * See COPYRIGHT file at the top of the source tree.
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 
23 #ifndef LSST_SPHGEOM_PYTHON_UTILS_H_
24 #define LSST_SPHGEOM_PYTHON_UTILS_H_
25 
26 #include "pybind11/pybind11.h"
27 
28 #include <limits>
29 #include <sstream>
30 #include <stdexcept>
31 
32 #include "lsst/sphgeom/Region.h"
33 
34 namespace lsst {
35 namespace sphgeom {
36 namespace python {
37 namespace {
38 
41 ptrdiff_t convertIndex(ptrdiff_t len, pybind11::int_ i) {
42  auto j = static_cast<ptrdiff_t>(i);
43  if ((j == -1 && PyErr_Occurred()) || j < -len || j >= len) {
44  PyErr_Clear();
45  throw pybind11::index_error(
46  pybind11::str("Index {} not in range({}, {})")
47  .format(i, -len, len));
48  }
49  return (j < 0) ? j + len : j;
50 }
51 
52 
54 pybind11::bytes encode(Region const &self) {
55  std::vector<uint8_t> bytes = self.encode();
56  return pybind11::bytes(reinterpret_cast<char const *>(bytes.data()),
57  bytes.size());
58 }
59 
60 } // <anonymous>
61 } // python
62 } // sphgeom
63 } // lsst
64 
65 #endif // LSST_SPHGEOM_PYTHON_UTILS_H_
Region.h
This file defines an interface for spherical regions.
std::vector
STL class.
pex.config.history.format
def format(config, name=None, writeSourceLine=True, prefix="", verbose=False)
Definition: history.py:174
lsst
A base class for image defects.
Definition: imageAlgorithm.dox:1
bytes
table::Key< table::Array< std::uint8_t > > bytes
Definition: Transform.cc:199