/usr/include/gdcm-2.2/gdcmModule.h is in libgdcm2-dev 2.2.4-1.1ubuntu4.
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 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 | /*=========================================================================
Program: GDCM (Grassroots DICOM). A DICOM library
Copyright (c) 2006-2011 Mathieu Malaterre
All rights reserved.
See Copyright.txt or http://gdcm.sourceforge.net/Copyright.html for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notice for more information.
=========================================================================*/
#ifndef GDCMMODULE_H
#define GDCMMODULE_H
#include "gdcmTypes.h"
#include "gdcmTag.h"
#include "gdcmModuleEntry.h"
#include <map>
#include <vector>
namespace gdcm
{
class DataSet;
class Usage;
class Macros;
/**
* \brief Class for representing a Module
* \note
* Module: A set of Attributes within an Information Entity or Normalized IOD which
* are logically related to each other.
* \sa Macro
*/
class GDCM_EXPORT Module
{
public:
typedef std::map<Tag, ModuleEntry> MapModuleEntry;
typedef std::vector<std::string> ArrayIncludeMacrosType;
//typedef MapModuleEntry::const_iterator ConstIterator;
//typedef MapModuleEntry::iterator Iterator;
//ConstIterator Begin() const { return ModuleInternal.begin(); }
//Iterator Begin() { return ModuleInternal.begin(); }
//ConstIterator End() const { return ModuleInternal.end(); }
//Iterator End() { return ModuleInternal.end(); }
Module() {}
friend std::ostream& operator<<(std::ostream& _os, const Module &_val);
void Clear() { ModuleInternal.clear(); }
/// Will add a ModuleEntry direcly at root-level. See Macro for nested-included level.
void AddModuleEntry(const Tag& tag, const ModuleEntry & module)
{
ModuleInternal.insert(
MapModuleEntry::value_type(tag, module));
}
void AddMacro(const char *include)
{
ArrayIncludeMacros.push_back( include );
}
/// Find or Get a ModuleEntry. ModuleEntry are either search are root-level
/// or within nested-macro included in module.
bool FindModuleEntryInMacros(Macros const ¯os, const Tag &tag) const;
const ModuleEntry& GetModuleEntryInMacros(Macros const ¯os, const Tag &tag) const;
void SetName( const char *name) { Name = name; }
const char *GetName() const { return Name.c_str(); }
// Verify will print on std::cerr for error
// Upon success will return true, false otherwise
bool Verify(const DataSet& ds, Usage const & usage) const;
private:
//Module &operator=(const Module &_val); // purposely not implemented
//Module(const Module &_val); // purposely not implemented
MapModuleEntry ModuleInternal;
std::string Name;
ArrayIncludeMacrosType ArrayIncludeMacros;
};
//-----------------------------------------------------------------------------
inline std::ostream& operator<<(std::ostream& _os, const Module &_val)
{
_os << _val.Name << '\n';
Module::MapModuleEntry::const_iterator it = _val.ModuleInternal.begin();
for(;it != _val.ModuleInternal.end(); ++it)
{
const Tag &t = it->first;
const ModuleEntry &de = it->second;
_os << t << " " << de << '\n';
}
return _os;
}
} // end namespace gdcm
#endif //GDCMMODULE_H
|