]> Creatis software - gdcm.git/blobdiff - src/gdcmValidator.cxx
> // Don't waste time checking tags where VM is OB and OW, since we know
[gdcm.git] / src / gdcmValidator.cxx
index af42a3b65b6aa34a46af882fda36e59f8bf8a5ac..1ab8b91c472e140ec3632bff1a12a5ce9467a47e 100644 (file)
@@ -3,8 +3,8 @@
   Program:   gdcm
   Module:    $RCSfile: gdcmValidator.cxx,v $
   Language:  C++
-  Date:      $Date: 2005/06/17 12:15:54 $
-  Version:   $Revision: 1.3 $
+  Date:      $Date: 2005/10/28 15:52:15 $
+  Version:   $Revision: 1.6 $
                                                                                 
   Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
   l'Image). All rights reserved. See Doc/License.txt or
@@ -18,8 +18,7 @@
 
 #include "gdcmValidator.h"
 #include "gdcmElementSet.h"
-#include "gdcmBinEntry.h"
-#include "gdcmValEntry.h"
+#include "gdcmDataEntry.h"
 
 #include <sstream>
 
@@ -34,13 +33,19 @@ Validator::~Validator()
 {
 }
 
-// Function to compare the VM found while parsing d->GetValue()
+// Function to compare the VM found while parsing d->GetString()
 // compare to the one from the dictionary
-bool CheckVM(ValEntry *v)
+bool CheckVM(DataEntry *entry)
 {
-  const std::string &s = v->GetValue();
+  // Don't waste time checking tags where VM is OB and OW, since we know
+  // it's allways 1, whatever the actual length (found on disc)
+  
+  if ( entry->GetVR() == "OB" ||  entry->GetVR() == "OW" )
+     return true;
+     
+  const std::string &s = entry->GetString();
   std::string::size_type n = s.find("\\");
-  if (n == s.npos) // none found
+  if ( n == s.npos ) // none found
   {
     n = 0;
   }
@@ -48,7 +53,7 @@ bool CheckVM(ValEntry *v)
 
   unsigned int m;
   std::istringstream os;
-  os.str( v->GetVM());
+  os.str( entry->GetVM());
   os >> m;
 
   return n == m;
@@ -57,22 +62,15 @@ bool CheckVM(ValEntry *v)
 void Validator::SetInput(ElementSet *input)
 {
   // berk for now SetInput do two things at the same time
-  gdcm::DocEntry *d=input->GetFirstEntry();
+  DocEntry *d=input->GetFirstEntry();
   while(d)
   {
-    if ( gdcm::BinEntry *b = dynamic_cast<gdcm::BinEntry*>(d) )
-    {
-//      copyH->InsertBinEntry( b->GetBinArea(),b->GetLength(),
-//        b->GetGroup(),b->GetElement(),
-//        b->GetVR() );
-        (void)b;
-    }
-    else if ( gdcm::ValEntry *v = dynamic_cast<gdcm::ValEntry*>(d) )
+    if ( DataEntry *v = dynamic_cast<DataEntry *>(d) )
     {   
-      if( !CheckVM(v))
+      if ( !CheckVM(v) )
       {
         std::cout << "Rah this DICOM contains one wrong tag:" << 
-        v->GetValue() << " " <<
+        v->GetString() << " " <<
         v->GetGroup() << "," << v->GetElement() << "," <<
         v->GetVR() << " " << v->GetVM() << " " << v->GetName() << std::endl;
       }