Program: gdcm
Module: $RCSfile: gdcmValidator.cxx,v $
Language: C++
- Date: $Date: 2005/10/28 15:52:15 $
- Version: $Revision: 1.6 $
+ Date: $Date: 2005/11/03 08:28:40 $
+ Version: $Revision: 1.7 $
Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
l'Image). All rights reserved. See Doc/License.txt or
#include "gdcmValidator.h"
#include "gdcmElementSet.h"
#include "gdcmDataEntry.h"
+#include "gdcmUtil.h"
#include <sstream>
return true;
const std::string &s = entry->GetString();
- std::string::size_type n = s.find("\\");
+
+/* std::string::size_type n = s.find("\\");
if ( n == s.npos ) // none found
{
n = 0;
}
+*/
+
+ int n = Util::CountSubstring( s , "\\");
+
n++; // number of '\' + 1 == Value Multiplicity
+ std::string vmFromDict = entry->GetVM();
+ if ( vmFromDict == "1-n" || vmFromDict == "2-n" || vmFromDict == "3-n" )
+ return true;
+
unsigned int m;
- std::istringstream os;
- os.str( entry->GetVM());
- os >> m;
+ std::istringstream is;
+ is.str( vmFromDict );
+ is >> m;
return n == m;
}
{
// berk for now SetInput do two things at the same time
DocEntry *d=input->GetFirstEntry();
- while(d)
+ if (!d)
{
+ std::cout << "No Entry found" << std::endl;
+ return;
+ }
+ while(d)
+ {
if ( DataEntry *v = dynamic_cast<DataEntry *>(d) )
- {
- if ( !CheckVM(v) )
+ {
+ if ( v->GetVM() != gdcm::GDCM_UNKNOWN )
+ if ( !CheckVM(v) )
+ {
+ std::cout << "Tag (" << v->GetKey()
+ << ")-> [" << v->GetName() << "] contains an illegal VM. "
+ << "value [" << v->GetString() << "] VR :"
+ << v->GetVR() << ", Expected VM :" << v->GetVM() << " "
+ << std::endl;
+ }
+
+ if ( v->GetReadLength() % 2 )
{
- std::cout << "Rah this DICOM contains one wrong tag:" <<
- v->GetString() << " " <<
- v->GetGroup() << "," << v->GetElement() << "," <<
- v->GetVR() << " " << v->GetVM() << " " << v->GetName() << std::endl;
+ std::cout << "Tag (" << v->GetKey()
+ << ")-> [" << v->GetName() << "] has an uneven length :"
+ << v->GetReadLength()
+ << " [" << v->GetString() << "] "
+ << std::endl;
}
}
else