20#include <AlexandriaKernel/memory_tools.h>
22#include "SOURCEXTRACTORPLUSPLUS_VERSION.h"
29#if BOOST_VERSION < 107300
30#include <boost/io/detail/quoted_manip.hpp>
32#include <boost/io/quoted.hpp>
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);
76 if (str.
str().size() > 80) {
95 str <<
"Version " << SOURCEXTRACTORPLUSPLUS_VERSION_STRING;
96 entries.emplace_back(str.
str());
103 strftime(date_str,
sizeof(date_str),
"%Y-%m-%dT%H:%M:%SZ", &now);
104 str <<
"Called at " << date_str;
105 entries.emplace_back(str.
str());
108 for (
auto& e : entries) {
111 headers.emplace_back(padder.
str());
118 if (m_fits_writer ==
nullptr) {
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");
139 FlushableOutput::outputSource(
source);
142void LdacOutput::writeHeaders() {
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;
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)) {
185void LdacOutput::nextPart() {
188 m_fits_writer =
nullptr;
std::unique_ptr< T > make_unique(Args &&... args)