/usr/include/odil/dcmtk/conversion.txx is in libodil0-dev 0.7.3-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 | /*************************************************************************
* odil - Copyright (C) Universite de Strasbourg
* Distributed under the terms of the CeCILL-B license, as published by
* the CEA-CNRS-INRIA. Refer to the LICENSE file or to
* http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
* for details.
************************************************************************/
#ifndef _665b5269_140c_4320_94f2_ad8a7c052e9b
#define _665b5269_140c_4320_94f2_ad8a7c052e9b
#include "odil/dcmtk/conversion.h"
#include <sstream>
#include "odil/Element.h"
#include "odil/dcmtk/ElementAccessor.h"
namespace odil
{
namespace dcmtk
{
template<typename TSourceType, typename TDestinationType>
void convert(
Element const & source, DcmElement * destination,
TSourceType const & (Element::*getter)() const)
{
auto const & source_values = (source.*getter)();
for(auto i = 0; i<source_values.size(); ++i)
{
ElementAccessor<TDestinationType>::element_set(
*destination, source_values[i], i);
}
}
template<typename TSourceType>
void convert(
Element const & source, DcmElement * destination,
TSourceType const & (Element::*getter)() const)
{
OFString destination_value;
auto const & source_values = (source.*getter)();
if(!source_values.empty())
{
auto const last_it = --source_values.end();
auto it = source_values.begin();
while(it != last_it)
{
std::ostringstream stream;
stream << *it;
destination_value += stream.str().c_str();
destination_value += "\\";
++it;
}
std::ostringstream stream;
stream << *last_it;
destination_value += stream.str().c_str();
}
destination->putOFStringArray(destination_value);
}
template<typename TSourceType, typename TDestinationType>
void convert(
DcmElement * source, Element & destination,
TDestinationType & (Element::*getter)())
{
auto & destination_values = (destination.*getter)();
destination_values.reserve(source->getVM());
for(auto i = 0; i<source->getVM(); ++i)
{
destination_values.push_back(
ElementAccessor<TSourceType>::element_get(*source, i));
}
}
}
}
#endif // _665b5269_140c_4320_94f2_ad8a7c052e9b
|