Program: gdcm
Module: $RCSfile: gdcmDataEntry.cxx,v $
Language: C++
- Date: $Date: 2005/10/21 14:15:41 $
- Version: $Revision: 1.6 $
+ 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
bool DataEntry::IsValueCountValid() const
{
+ bool valid = false;
uint32_t vm;
- std::istringstream os;
- os.str( GetVM() );
- os >> vm;
- return vm == GetValueCount();
+ const std::string &strVM = GetVM();
+ uint32_t vc = GetValueCount();
+ if( strVM == "1-n" )
+ {
+ // make sure it is at least one ??? FIXME
+ valid = vc >= 1 || vc == 0;
+ }
+ else
+ {
+ std::istringstream os;
+ os.str( strVM );
+ os >> vm;
+ // 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;
}
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++)