]> Creatis software - gdcm.git/blobdiff - src/gdcmDataEntry.cxx
In order to avoid confusing user with 'public' methods he is not allowed to use,
[gdcm.git] / src / gdcmDataEntry.cxx
index 6c59d8e90375b877be74e3ce9c660d08bcd3ff76..4d7b76283a5f290ed3896db61410dfd3d6a7d8a7 100644 (file)
@@ -3,8 +3,8 @@
   Program:   gdcm
   Module:    $RCSfile: gdcmDataEntry.cxx,v $
   Language:  C++
-  Date:      $Date: 2005/10/21 15:16:52 $
-  Version:   $Revision: 1.7 $
+  Date:      $Date: 2005/10/21 15:52:13 $
+  Version:   $Revision: 1.9 $
                                                                                 
   Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
   l'Image). All rights reserved. See Doc/License.txt or
@@ -224,17 +224,21 @@ bool DataEntry::IsValueCountValid() const
   bool valid = false;
   uint32_t vm;
   const std::string &strVM = GetVM();
+  uint32_t vc = GetValueCount();
   if( strVM == "1-n" )
     {
     // make sure it is at least one ??? FIXME
-    valid = GetValueCount() >= 1;
+    valid = vc >= 1 || vc == 0;
     }
   else
     {
     std::istringstream os;
     os.str( strVM );
     os >> vm;
-    valid = vm == GetValueCount();
+    // Two cases:
+    // vm respect the one from the dict
+    // vm is 0 (we need to check is this element is allowed to be empty) FIXME
+    valid = vc == vm || vc == 0;
     }
   return valid;
 }
@@ -252,6 +256,8 @@ uint32_t DataEntry::GetValueCount(void) const
       return GetLength()/sizeof(double);
    else if( Global::GetVR()->IsVROfStringRepresentable(vr) )
    {
+      // Some element in DICOM are allowed to be empty
+      if( !GetLength() ) return 0;
       // Don't use std::string to accelerate processing
       uint32_t count = 1;
       for(uint32_t i=0;i<GetLength();i++)