22 #include "SOURCEXTRACTORPLUSPLUS_VERSION.h"
29 #if BOOST_VERSION < 107300
30 #include <boost/io/detail/quoted_manip.hpp>
32 #include <boost/io/quoted.hpp>
35 namespace SourceXtractor {
39 using namespace Euclid::Table;
51 if (str.
str().size() > 80) {
55 size_t remaining = 80 - str.
str().size();
56 if (comment.
size() < remaining) {
60 str << comment.
substr(0, remaining);
70 quoted_value << boost::io::quoted(value,
'\'',
'\'');
76 if (str.
str().size() > 80) {
80 size_t remaining = 80 - str.
str().size();
81 if (comment.
size() < remaining) {
85 str << comment.
substr(0, remaining);
95 str <<
"Version " << SOURCEXTRACTORPLUSPLUS_VERSION_STRING;
103 strftime(date_str,
sizeof(date_str),
"%Y-%m-%dT%H:%M:%SZ", &now);
104 str <<
"Called at " << date_str;
108 for (
auto& e : entries) {
118 if (m_fits_writer ==
nullptr) {
121 m_gain = detection_frame_info.getGain();
124 m_image_metadata = detection_frame_info.getMetadata();
128 m_fits_writer = std::make_shared<FitsWriter>(m_filename);
131 if (m_part_nb >= 1) {
133 hdu_name <<
"LDAC_OBJECTS_" << m_part_nb;
134 m_fits_writer->setHduName(hdu_name.
str());
136 m_fits_writer->setHduName(
"LDAC_OBJECTS");
143 auto imhead_writer = Euclid::make_unique<FitsWriter>(m_filename, m_part_nb == 0);
144 if (m_part_nb >= 1) {
146 hdu_name <<
"LDAC_IMHEAD_" << m_part_nb;
147 imhead_writer->setHduName(hdu_name.
str());
149 imhead_writer->setHduName(
"LDAC_IMHEAD");
154 for (
const auto &p : m_image_metadata) {
156 if (p.second.m_extra.count(
"comment")) {
157 comment = p.second.m_extra.
at(
"comment");
159 if (p.second.m_value.type() ==
typeid(
std::string)) {
160 ldac_imhead.
emplace_back(generateHeader(p.first, boost::get<std::string>(p.second.m_value), comment));
162 ldac_imhead.
emplace_back(generateHeader(p.first, p.second.m_value, comment));
167 ldac_imhead.
emplace_back(generateHeader(
"SPPGAIN", m_gain,
"Gain used"));
168 ldac_imhead.
emplace_back(generateHeader(
"SPPBKDEV", m_rms,
"Median background RMS"));
171 generateHistory(ldac_imhead);
188 m_fits_writer =
nullptr;
std::unique_ptr< T > make_unique(Args &&...args)