/*========================================================================= 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 GDCMDICTCONVERTER_H #define GDCMDICTCONVERTER_H #include "gdcmTypes.h" #include "gdcmVR.h" #include "gdcmVM.h" #include namespace gdcm { class DictConverterInternal; /** * \brief Class to convert a .dic file into something else: * \details * - CXX code : embed dict into shared lib (DICT_DEFAULT) * - Debug mode (DICT_DEBUG) * - XML dict (DICT_XML) * \note */ class GDCM_EXPORT DictConverter { public: DictConverter(); ~DictConverter(); void SetInputFileName(const char* filename); const std::string &GetInputFilename() const; void SetOutputFileName(const char* filename); const std::string &GetOutputFilename() const; int GetOutputType() const { return OutputType; } void SetOutputType(int type) { OutputType = type; } const std::string &GetDictName() const; void SetDictName(const char *name); void Convert(); // Leaving them public for now. Not really user oriented but may be // useful static bool ReadVR(const char *raw, VR::VRType &type); static bool ReadVM(const char *raw, VM::VMType &type); static bool Readuint16(const char *raw, uint16_t &ov); enum OutputTypes { DICT_DEFAULT = 0, DICT_DEBUG, DICT_XML }; protected: void WriteHeader(); void WriteFooter(); bool ConvertToXML(const char *raw, std::string &cxx); bool ConvertToCXX(const char *raw, std::string &cxx); void AddGroupLength(); private: DictConverterInternal *Internal; int OutputType; }; } // end namespace gdcm #endif //GDCMDICTCONVERTER_H