lsst.afw
g5a732f18d5+53520f316c
Loading...
Searching...
No Matches
src
formatters
Utils.cc
Go to the documentation of this file.
1
// -*- lsst-c++ -*-
2
3
/*
4
* LSST Data Management System
5
* Copyright 2008, 2009, 2010 LSST Corporation.
6
*
7
* This product includes software developed by the
8
* LSST Project (http://www.lsst.org/).
9
*
10
* This program is free software: you can redistribute it and/or modify
11
* it under the terms of the GNU General Public License as published by
12
* the Free Software Foundation, either version 3 of the License, or
13
* (at your option) any later version.
14
*
15
* This program is distributed in the hope that it will be useful,
16
* but WITHOUT ANY WARRANTY; without even the implied warranty of
17
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18
* GNU General Public License for more details.
19
*
20
* You should have received a copy of the LSST License Statement and
21
* the GNU General Public License along with this program. If not,
22
* see <http://www.lsstcorp.org/LegalNotices/>.
23
*/
24
25
//
26
//##====---------------- ----------------====##/
27
//
28
// Support for formatters
29
//
30
//##====---------------- ----------------====##/
31
32
#include <cstdint>
33
#include <iostream>
34
35
#include "
lsst/afw/formatters/Utils.h
"
36
37
using
std::int64_t
;
38
39
namespace
lsst
{
40
namespace
afw {
41
namespace
formatters {
42
43
ndarray::Array<std::uint8_t, 1, 1>
stringToBytes
(
std::string
const
& str) {
44
auto
nbytes = str.
size
() *
sizeof
(char) /
sizeof
(
std::uint8_t
);
45
std::uint8_t
const
* byteCArr =
reinterpret_cast<
std::uint8_t
const*
>
(str.
data
());
46
auto
shape = ndarray::makeVector(nbytes);
47
auto
strides = ndarray::makeVector(1);
48
// Make an Array that shares memory with `str` (and does not free that memory when destroyed),
49
// then return a copy; this is simpler than manually copying the data into a newly allocated array
50
ndarray::Array<std::uint8_t const, 1, 1> localArray = ndarray::external(byteCArr, shape, strides);
51
return
ndarray::copy(localArray);
52
}
53
54
std::string
bytesToString
(ndarray::Array<std::uint8_t const, 1, 1>
const
&
bytes
) {
55
auto
nchars =
bytes
.
size
() *
sizeof
(
std::uint8_t
) /
sizeof
(
char
);
56
char
const
* charCArr =
reinterpret_cast<
char
const*
>
(
bytes
.getData());
57
return
std::string
(charCArr, nchars);
58
}
59
60
}
// namespace formatters
61
}
// namespace afw
62
}
// namespace lsst
Utils.h
std::string
std::string::data
T data(T... args)
std::int64_t
lsst::afw::formatters::stringToBytes
ndarray::Array< std::uint8_t, 1, 1 > stringToBytes(std::string const &str)
Encode a std::string as a vector of uint8.
Definition
Utils.cc:43
lsst::afw::formatters::bytesToString
std::string bytesToString(ndarray::Array< std::uint8_t const, 1, 1 > const &bytes)
Decode a std::string from a vector of uint8 returned by stringToBytes.
Definition
Utils.cc:54
lsst
std::string::size
T size(T... args)
bytes
table::Key< table::Array< std::uint8_t > > bytes
Definition
python.h:135
Generated on Fri Apr 19 2024 04:04:21 for lsst.afw by
1.10.0