now contains all the Debug related code.
* minor clean-up of includes in src/*.cxx
+2004-03-26 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
+ * src/gdcmUtil.[cxx|h] split in two. Additional file gdcmDebug.[cxx|h]
+ now contains all the Debug related code.
+ * minor clean-up of includes in src/*.cxx
+
2004-03-24 Jean-Pierre Roux
* FIX a lot of little surface modifications to be doxygen 1.3.6 compliant
-
+
2004-03-23 Jean-Pierre Roux
* FIX Now gdcmFile::SwapZone doesn't seg faults any longer for
big endian made volumes
* ENH Now gdcmParser constructor and destructor are protected to forbid
end user to instanciate class gdcmParser
- (only gdcmHeader and gdcmDicomDir are meaningfull)
-
+ (only gdcmHeader and gdcmDicomDir are meaningfull)
+
2004-03-22 Benoit Regrain
* FIX : src/gdcmDicomDir.cxx : make windows compilable
* FIX : gdcmPython/gdcm.i : change gdcmStudy to gdcmDicomDirStudy and
$(top_builddir)/src/jpeg/ljpg/libgdcmjpg.la
libgdcm_la_SOURCES= \
+ gdcmDebug.cxx \
gdcmDicomDir.cxx \
gdcmDicomDirElement.cxx \
gdcmDicomDirImage.cxx \
libgdcmincludedir = $(includedir)
-libgdcminclude_HEADERS = \
- gdcmCommon.h \
- gdcmDicomDir.h \
- gdcmDicomDirElement.h \
- gdcmDicomDirImage.h \
- gdcmDicomDirMeta.h \
- gdcmDicomDirPatient.h \
- gdcmDicomDirSerie.h \
- gdcmDicomDirStudy.h \
- gdcmDictEntry.h \
- gdcmDict.h \
- gdcmDictSet.h \
- gdcmDirList.h \
- gdcmException.h \
- gdcmFile.h \
- gdcm.h \
- gdcmHeaderEntry.h \
- gdcmHeader.h \
- gdcmHeaderHelper.h \
- gdcmObject.h \
- gdcmParser.h \
- gdcmVR.h \
- gdcmTS.h
+libgdcminclude_HEADERS = \
+ gdcmCommon.h \
+ gdcmDebug.h \
+ gdcmDicomDir.h \
+ gdcmDicomDirElement.h \
+ gdcmDicomDirImage.h \
+ gdcmDicomDirMeta.h \
+ gdcmDicomDirPatient.h \
+ gdcmDicomDirSerie.h \
+ gdcmDicomDirStudy.h \
+ gdcmDictEntry.h \
+ gdcmDict.h \
+ gdcmDictSet.h \
+ gdcmDirList.h \
+ gdcmException.h \
+ gdcmFile.h \
+ gdcm.h \
+ gdcmHeaderEntry.h \
+ gdcmHeader.h \
+ gdcmHeaderHelper.h \
+ gdcmObject.h \
+ gdcmParser.h \
+ gdcmVR.h \
+ gdcmTS.h
EXTRA_DIST = \
gdcmUtil.h
#ifndef GDCM_H
#define GDCM_H
-////////////////////////////////////////////////////////////////////////////
+//-----------------------------------------------------------------------------
// Tag based hash tables.
// We shall use as keys the strings (as the C++ type) obtained by
// concatenating the group value and the element value (both of type
#include "gdcmUtil.h"
//-----------------------------------------------------------------------------
-#endif // #ifndef GDCM_H
+#endif
#ifndef GDCMCOMMON_H
#define GDCMCOMMON_H
-//-----------------------------------------------------------------------------
-#define GDCM_DEBUG -1
-
//-----------------------------------------------------------------------------
//This is needed when compiling in debug mode
#ifdef _MSC_VER
// return type for 'identifier' is '' (ie; not a UDT or reference to UDT. Will
// produce errors if applied using infix notation
#pragma warning ( disable : 4284 )
+// 'type' : forcing value to bool 'true' or 'false' (performance warning)
+// //#pragma warning ( disable : 4800 )
#endif //_MSC_VER
-// Mmmmmm !
-// It reminds me the formerly well known LibIDO's idproto.h
-
//-----------------------------------------------------------------------------
#ifdef __GNUC__
#ifndef HAVE_NO_STDINT_H
--- /dev/null
+#include <iostream>
+#include "gdcmDebug.h"
+
+/**
+ * \ingroup Globals
+ * \brief Instance of debugging utility.
+ */
+gdcmDebug dbg;
+
+/**
+ * \ingroup gdcmDebug
+ * \brief constructor
+ * @param level debug level
+ */
+gdcmDebug::gdcmDebug(int level) {
+ DebugLevel = level;
+}
+
+/**
+ * \ingroup gdcmDebug
+ * \brief Accessor
+ * @param level Set the debug level
+ */
+void gdcmDebug::SetDebug(int level) {
+ DebugLevel = level;
+}
+
+/**
+ * \ingroup gdcmDebug
+ * \brief Verbose
+ * @param Level level
+ * @param Msg1 first message part
+ * @param Msg2 second message part
+ */
+void gdcmDebug::Verbose(int Level, const char * Msg1, const char * Msg2) {
+ if (Level > DebugLevel)
+ return ;
+ std::cerr << Msg1 << ' ' << Msg2 << std::endl;
+}
+
+/**
+ * \ingroup gdcmDebug
+ * \brief Error
+ * @param Test test
+ * @param Msg1 first message part
+ * @param Msg2 second message part
+ */
+void gdcmDebug::Error( bool Test, const char * Msg1, const char * Msg2) {
+ if (!Test)
+ return;
+ std::cerr << Msg1 << ' ' << Msg2 << std::endl;
+ Exit(1);
+}
+
+/**
+ * \ingroup gdcmDebug
+ * \brief Error
+ * @param Msg1 first message part
+ * @param Msg2 second message part
+ * @param Msg3 Third message part
+ */
+void gdcmDebug::Error(const char* Msg1, const char* Msg2,
+ const char* Msg3) {
+ std::cerr << Msg1 << ' ' << Msg2 << ' ' << Msg3 << std::endl;
+ Exit(1);
+}
+
+/**
+ * \ingroup gdcmDebug
+ * \brief Assert
+ * @param Level level
+ * @param Test test
+ * @param Msg1 first message part
+ * @param Msg2 second message part
+ */
+ void gdcmDebug::Assert(int Level, bool Test,
+ const char * Msg1, const char * Msg2) {
+ if (Level > DebugLevel)
+ return ;
+ if (!Test)
+ std::cerr << Msg1 << ' ' << Msg2 << std::endl;
+}
+
+/**
+ * \ingroup gdcmDebug
+ * \brief Exit
+ * @param a return code
+ */
+void gdcmDebug::Exit(int a) {
+#ifdef __GNUC__
+ std::exit(a);
+#endif
+#ifdef _MSC_VER
+ exit(a); // Found in #include <stdlib.h>
+#endif
+}
--- /dev/null
+// gdcmDebug.h
+//-----------------------------------------------------------------------------
+#ifndef GDCMDEBUG_H
+#define GDCMDEBUG_H
+
+#define GDCM_DEBUG -1
+
+/**
+ * \ingroup gdcmDebug
+ * \brief gdcmDebug is an object for debugging in program.
+ * It has 2 debugging modes :
+ * - error : for bad library use
+ * - debug : for debugging messages
+ *
+ * A debugging message has a level of priority and is
+ * Shown only when the debug level is higher than the
+ * message level.
+ */
+class gdcmDebug {
+public:
+ gdcmDebug(int level = GDCM_DEBUG);
+
+ void SetDebug (int level);
+ void Verbose(int, const char*, const char* ="");
+ void Error(bool, const char*, const char* ="");
+ void Error(const char*, const char* ="", const char* ="");
+
+ void Assert(int, bool, const char*, const char*);
+ void Exit(int);
+
+private:
+/// warning message level to be displayed
+ int DebugLevel;
+};
+
+extern gdcmDebug dbg;
+
+#endif
// gdcmDicomDir.cxx
//-----------------------------------------------------------------------------
-#include "gdcmDicomDir.h"
-#include "gdcmDicomDirStudy.h"
-#include "gdcmDicomDirSerie.h"
-#include "gdcmDicomDirImage.h"
-#include "gdcmDirList.h"
-#include "gdcmUtil.h"
-
#include <string>
#include <algorithm>
-
#include <sys/types.h>
#include <errno.h>
#include <unistd.h>
#endif
+#include "gdcmDicomDir.h"
+#include "gdcmDicomDirStudy.h"
+#include "gdcmDicomDirSerie.h"
+#include "gdcmDicomDirImage.h"
+#include "gdcmDirList.h"
+#include "gdcmUtil.h"
+#include "gdcmDebug.h"
+
//-----------------------------------------------------------------------------
// For full DICOMDIR description, see:
// PS 3.3-2003, pages 731-750
//-----------------------------------------------------------------------------
#include <fstream>
#include <stdio.h> // For sprintf
+#include <iostream>
+#ifdef GDCM_NO_ANSI_STRING_STREAM
+# include <strstream>
+# define ostringstream ostrstream
+# else
+# include <sstream>
+#endif
#include "gdcmDicomDirElement.h"
#include "gdcmUtil.h"
+#include "gdcmDebug.h"
#ifndef PUB_DICT_PATH
# define PUB_DICT_PATH "../Dicts/"
#endif
#define DICT_ELEM "DicomDir.dic"
-#include <iostream>
-#ifdef GDCM_NO_ANSI_STRING_STREAM
-# include <strstream>
-# define ostringstream ostrstream
-# else
-# include <sstream>
-#endif
//-----------------------------------------------------------------------------
// Constructor / Destructor
#include "gdcmDicomDirPatient.h"
#include "gdcmDicomDirElement.h"
#include "gdcmUtil.h"
+
//-----------------------------------------------------------------------------
// Constructor / Destructor
/**
#include "gdcmDicomDirSerie.h"
#include "gdcmDicomDirElement.h"
#include "gdcmUtil.h"
+
//-----------------------------------------------------------------------------
// Constructor / Destructor
/**
//-----------------------------------------------------------------------------
#include "gdcmDict.h"
#include "gdcmUtil.h"
+#include "gdcmDebug.h"
#include <fstream>
#include <iostream>
// gdcmDictEntry.cxx
//-----------------------------------------------------------------------------
#include "gdcmDictEntry.h"
+#include "gdcmDebug.h"
#include <stdio.h> // FIXME For sprintf
-#include "gdcmUtil.h"
//-----------------------------------------------------------------------------
// Constructor / Destructor
TagKey gdcmDictEntry::TranslateToKey(guint16 group, guint16 element) {
char trash[10];
TagKey key;
- // CLEAN ME: better call the iostream<< with the hex manipulator on.
+ // CLEANME: better call the iostream<< with the hex manipulator on.
// This requires some reading of the stdlibC++ sources to make the
// proper call (or copy).
sprintf(trash, "%04x|%04x", group , element);
// gdcmDictEntry
//-----------------------------------------------------------------------------
#include "gdcmDictSet.h"
-#include "gdcmUtil.h"
+#include "gdcmDebug.h"
#include <fstream>
#include <stdlib.h> // For getenv
// gdcmFile.cxx
//-----------------------------------------------------------------------------
#include "gdcmFile.h"
-#include "gdcmUtil.h"
+#include "gdcmDebug.h"
#include "jpeg/ljpg/jpegless.h"
typedef std::pair<TagHeaderEntryHT::iterator,TagHeaderEntryHT::iterator> IterHT;
* @param header file to be opened for reading datas
* @return
*/
-
gdcmFile::gdcmFile(gdcmHeader *header) {
Header=header;
SelfHeader=false;
// gdcmHeader.cxx
//-----------------------------------------------------------------------------
-#include "gdcmHeader.h"
-
#include <stdio.h>
#include <cerrno>
#include <cctype> // for isalpha
+#include <vector>
+#include "gdcmHeader.h"
#include "gdcmUtil.h"
+#include "gdcmDebug.h"
#include "gdcmTS.h"
-
//-----------------------------------------------------------------------------
// Constructor / Destructor
/**
#include "gdcmHeaderHelper.h"
#include "gdcmDirList.h"
-#include "gdcmUtil.h" //for debug
+#include "gdcmDebug.h"
#include <math.h>
#include <algorithm>
+#include <vector>
//-----------------------------------------------------------------------------
-// gdcmHeaderHelper
-//-----------------------------------------------------------------------------
-// Constructor / Destructor
/**
* \ingroup gdcmHeaderHelper
* \brief constructor
//-----------------------------------------------------------------------------
#include "gdcmObject.h"
#include "gdcmUtil.h"
+#include "gdcmDebug.h"
//-----------------------------------------------------------------------------
-// Constructor / Destructor
/**
* \ingroup gdcmObject
* \brief Constructor
// gdcmParse.cxx
//-----------------------------------------------------------------------------
-//This is needed when compiling in debug mode
-#ifdef _MSC_VER
-// 'type' : forcing value to bool 'true' or 'false' (performance warning)
-//#pragma warning ( disable : 4800 )
-// 'identifier' : class 'type' needs to have dll-interface to be used by
-// clients of class 'type2'
-#pragma warning ( disable : 4251 )
-// 'identifier' : identifier was truncated to 'number' characters in the
-// debug information
-#pragma warning ( disable : 4786 )
-#endif //_MSC_VER
-
+#include "gdcmCommon.h"
#include "gdcmFile.h"
-#include "gdcmUtil.h"
#define str2num(str, typeNum) *((typeNum *)(str))
// gdcmParser.cxx
//-----------------------------------------------------------------------------
-#include "gdcmParser.h"
-#include "gdcmUtil.h"
-
#include <errno.h>
+#include <vector>
// For nthos:
#ifdef _MSC_VER
#endif
# include <iomanip>
+#include "gdcmParser.h"
+#include "gdcmUtil.h"
+#include "gdcmDebug.h"
+
#define UI1_2_840_10008_1_2 "1.2.840.10008.1.2"
#define UI1_2_840_10008_1_2_1 "1.2.840.10008.1.2.1"
#define UI1_2_840_10008_1_2_2 "1.2.840.10008.1.2.2"
// gdcmTS.cxx
//-----------------------------------------------------------------------------
#include <fstream>
+#include <string>
+#include <iostream>
+#ifdef GDCM_NO_ANSI_STRING_STREAM
+# include <strstream>
+# define ostringstream ostrstream
+# else
+# include <sstream>
+#endif
#include "gdcmTS.h"
+#include "gdcmDebug.h"
#include "gdcmUtil.h"
+#include "gdcmDictSet.h"
#ifndef PUB_DICT_PATH
# define PUB_DICT_PATH "../Dicts/"
#endif
#define DICT_TS "dicomTS.dic"
-#include <iostream>
-#ifdef GDCM_NO_ANSI_STRING_STREAM
-# include <strstream>
-# define ostringstream ostrstream
-# else
-# include <sstream>
-#endif
//-----------------------------------------------------------------------------
// Constructor / Destructor
// gdcmUtil.cxx
//-----------------------------------------------------------------------------
#include "gdcmUtil.h"
-
+#include "gdcmDebug.h"
#include <stdio.h>
#include <ctype.h> // For isspace
-#include <string.h>
-
-//-----------------------------------------------------------------------------
-// Library globals.
-gdcmDebug dbg;
+#include <string.h> // CLEANME: could this be only string ? Related to Win32 ?
-//-----------------------------------------------------------------------------
/**
- * \ingroup gdcmDebug
- * \brief constructor
- * @param level debug level
- */
-
-gdcmDebug::gdcmDebug(int level) {
- DebugLevel = level;
-}
-
-/**
- * \ingroup gdcmDebug
- * \brief Verbose
- * @param Level level
- * @param Msg1 first message part
- * @param Msg2 second message part
+ * \ingroup Globals
+ * \brief Pointer to a container, holding _all_ the Dicom Dictionaries.
*/
-void gdcmDebug::Verbose(int Level, const char * Msg1, const char * Msg2) {
- if (Level > DebugLevel)
- return ;
- std::cerr << Msg1 << ' ' << Msg2 << std::endl;
-}
+gdcmDictSet *gdcmGlobal::Dicts = (gdcmDictSet *)0;
/**
- * \ingroup gdcmDebug
- * \brief Error
- * @param Test test
- * @param Msg1 first message part
- * @param Msg2 second message part
+ * \ingroup Globals
+ * \brief Pointer to a hash table containing the 'Value Representations'.
*/
-void gdcmDebug::Error( bool Test, const char * Msg1, const char * Msg2) {
- if (!Test)
- return;
- std::cerr << Msg1 << ' ' << Msg2 << std::endl;
- Exit(1);
-}
+gdcmVR *gdcmGlobal::VR = (gdcmVR *)0;
/**
- * \ingroup gdcmDebug
- * \brief Error
- * @param Msg1 first message part
- * @param Msg2 second message part
- * @param Msg3 Third message part
+ * \ingroup Globals
+ * \brief Pointer to a hash table containing the Transfer Syntax codes
+ * and their english description
*/
-void gdcmDebug::Error(const char* Msg1, const char* Msg2,
- const char* Msg3) {
- std::cerr << Msg1 << ' ' << Msg2 << ' ' << Msg3 << std::endl;
- Exit(1);
-}
+gdcmTS *gdcmGlobal::TS = (gdcmTS *)0;
/**
- * \ingroup gdcmDebug
- * \brief Assert
- * @param Level level
- * @param Test test
- * @param Msg1 first message part
- * @param Msg2 second message part
+ * \ingroup Globals
+ * \brief Pointer to the hash table containing the Dicom Elements
+ * necessary to describe each part of a DICOMDIR
*/
- void gdcmDebug::Assert(int Level, bool Test,
- const char * Msg1, const char * Msg2) {
- if (Level > DebugLevel)
- return ;
- if (!Test)
- std::cerr << Msg1 << ' ' << Msg2 << std::endl;
-}
+gdcmDicomDirElement *gdcmGlobal::ddElem = (gdcmDicomDirElement *)0;
/**
- * \ingroup gdcmDebug
- * \brief Exit
- * @param a return code
+ * \ingroup Globals
+ * \brief Global container
*/
-void gdcmDebug::Exit(int a) {
-#ifdef __GNUC__
- std::exit(a);
-#endif
-#ifdef _MSC_VER
- exit(a); // Found in #include <stdlib.h>
-#endif
-}
-
-//-----------------------------------------------------------------------------
-/// Pointer to a container, holding *all* the Dicom Dictionaries
-gdcmDictSet *gdcmGlobal::Dicts = (gdcmDictSet *)0;
-/// Pointer to a H table containing the 'Value Representations'
-gdcmVR *gdcmGlobal::VR = (gdcmVR *)0;
-/// Pointer to a H table containing the Transfer Syntax codes and their english description
-gdcmTS *gdcmGlobal::TS = (gdcmTS *)0;
-/// Pointer to a H table containing the Dicom Elements necessary to describe each part of a DICOMDIR
-gdcmDicomDirElement *gdcmGlobal::ddElem = (gdcmDicomDirElement *)0;
-/// gdcm Glob
gdcmGlobal gdcmGlob;
-
/**
* \ingroup gdcmGlobal
* \brief constructor : populates the
return ddElem;
}
-//-----------------------------------------------------------------------------
-// Here are some usefull functions, belonging to NO class,
-// dealing with strings, file names, etc
-// that can be called from anywhere
-// by whomsoever they can help.
-//-----------------------------------------------------------------------------
+/**
+ * \defgroup Globals Utility functions
+ * \brief Here are some utility functions, belonging to NO class,
+ * dealing with strings, file names... that can be called
+ * from anywhere by whomsoever they can help.
+ */
-// Because is not yet available in g++2.96
+/**
+ * \ingroup Globals
+ * \brief Because is not yet available in g++2.96
+ */
std::istream& eatwhite(std::istream& is) {
char c;
while (is.get(c)) {
return is;
}
-///////////////////////////////////////////////////////////////////////////
-// Because is not available in C++ (?)
+/**
+ * \ingroup Globals
+ * \brief Because not available in C++ (?)
+ */
void Tokenize (const std::string& str,
std::vector<std::string>& tokens,
const std::string& delimiters) {
}
}
-
-///////////////////////////////////////////////////////////////////////////
/**
- * \brief to prevent a flashing screen when non-printable character
+ * \ingroup Globals
+ * \brief Weed out a string from the non-printable characters (in order
+ * to avoid corrupting the terminal of invocation when printing)
* @param v characters array to remove non printable characters from
*/
char *_cleanString(char *v) {
i++,d++) {
if (!isprint(*d))
*d = '.';
- }
+ }
return v;
}
-///////////////////////////////////////////////////////////////////////////
/**
+ * \ingroup Globals
* \brief to prevent a flashing screen when non-printable character
* @param s string to remove non printable characters from
*/
str[i]='.';
}
-
if(str.size()>0)
if(!isprint(s[str.size()-1]))
if(s[str.size()-1]==0)
return(str);
}
-///////////////////////////////////////////////////////////////////////////
/**
+ * \ingroup Globals
* \brief Add a SEPARATOR to the end of the name is necessary
* @param name file/directory name to normalize
*/
void NormalizePath(std::string &name)
{
-const char SEPARATOR_X = '/';
-const char SEPARATOR_WIN = '\\';
-const std::string SEPARATOR = "/";
+ const char SEPARATOR_X = '/';
+ const char SEPARATOR_WIN = '\\';
+ const std::string SEPARATOR = "/";
int size=name.size();
+
if((name[size-1]!=SEPARATOR_X)&&(name[size-1]!=SEPARATOR_WIN))
{
name+=SEPARATOR;
}
}
-///////////////////////////////////////////////////////////////////////////
/**
+ * \ingroup Globals
* \brief Get the (directory) path from a full path file name
- * @param fullName file/directory name to extract Path from
+ * @param fullName file/directory name to extract Path from
*/
std::string GetPath(std::string &fullName)
{
return(fullName);
}
-///////////////////////////////////////////////////////////////////////////
/**
+ * \ingroup Globals
* \brief Get the (last) name of a full path file name
- * @param fullName file/directory name to extract end name from
+ * @param fullName file/directory name to extract end name from
*/
std::string GetName(std::string &fullName)
{
#include "gdcmTS.h"
#include "gdcmDictSet.h"
#include "gdcmDicomDirElement.h"
-#include <iostream>
#include <vector>
#include <string>
-//-----------------------------------------------------------------------------
-/*
- * gdcmDebug is an object for debugging in program.
- * It has 2 debugging modes :
- * - error : for bad library use
- * - debug : for debugging messages
- *
- * A debugging message has a level of priority and is
- * Shown only when the debug level is higher than the
- * message level.
- */
-class gdcmDebug {
-public:
- gdcmDebug(int level = GDCM_DEBUG);
-
- /**
- * \ingroup gdcmDebug
- * \brief sets the debug level
- * @param i debug level to be set
- */
- void SetDebug (int i)
- {DebugLevel = i;}
-
- void Verbose(int, const char*, const char* ="");
- void Error(bool, const char*, const char* ="");
- void Error(const char*, const char* ="", const char* ="");
-
- void Assert(int, bool, const char*, const char*);
- void Exit(int);
-
-private:
-/// warning message level to be displayed
- int DebugLevel;
-};
-
//-----------------------------------------------------------------------------
/*
* This class contains all globals elements that might be
//-----------------------------------------------------------------------------
std::istream & eatwhite(std::istream & is);
- void Tokenize (const std::string& str,
- std::vector<std::string>& tokens,
- const std::string& delimiters = " ");
+void Tokenize (const std::string& str,
+ std::vector<std::string>& tokens,
+ const std::string& delimiters = " ");
- extern gdcmDebug dbg;
+char *_cleanString(char *v);
+std::string _CreateCleanString(std::string s);
- char *_cleanString(char *v);
- std::string _CreateCleanString(std::string s);
-
- void NormalizePath (std::string &name);
- std::string GetPath(std::string &fullName);
- std::string GetName(std::string &fullName);
-//-----------------------------------------------------------------------------
+void NormalizePath (std::string &name);
+std::string GetPath(std::string &fullName);
+std::string GetName(std::string &fullName);
#endif
-
// gdcmVR.cxx
-#include <fstream>
//-----------------------------------------------------------------------------
-#include "gdcmVR.h"
-#include "gdcmUtil.h"
-
-#ifndef PUB_DICT_PATH
-# define PUB_DICT_PATH "../Dicts/"
-#endif
-#define DICT_VR "dicomVR.dic"
+#include <fstream>
#include <iostream>
#ifdef GDCM_NO_ANSI_STRING_STREAM
# include <sstream>
#endif
+#include "gdcmVR.h"
+#include "gdcmUtil.h"
+#include "gdcmDebug.h"
+
+#ifndef PUB_DICT_PATH
+# define PUB_DICT_PATH "../Dicts/"
+#endif
+#define DICT_VR "dicomVR.dic"
+
//-----------------------------------------------------------------------------
// Constructor / Destructor
gdcmVR::gdcmVR(void)
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"\r
# Begin Source File\r
\r
+SOURCE=..\gdcmDebug.cxx\r
+# End Source File\r
+# Begin Source File\r
+\r
SOURCE=..\gdcmDicomDir.cxx\r
# End Source File\r
# Begin Source File\r
# End Source File\r
# Begin Source File\r
\r
+SOURCE=..\gdcmDebug.h\r
+# End Source File\r
+# Begin Source File\r
+\r
SOURCE=..\gdcmCommon.h\r
# End Source File\r
# Begin Source File\r