Program: gdcm
Module: $RCSfile: TestAllEntryVerify.cxx,v $
Language: C++
- Date: $Date: 2005/01/08 23:18:30 $
- Version: $Revision: 1.19 $
+ Date: $Date: 2005/01/27 10:47:29 $
+ Version: $Revision: 1.23 $
Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
l'Image). All rights reserved. See Doc/License.txt or
PURPOSE. See the above copyright notices for more information.
=========================================================================*/
-#include "gdcmHeader.h"
+#include "gdcmFile.h"
#include <map>
#include <list>
{
public:
ReferenceFileParser();
+ ~ReferenceFileParser();
+
bool Open( std::string& referenceFileName );
void Print();
void SetDataPath(std::string&);
bool Check( MapFileValuesType::iterator &fileIt );
std::string ExtractValue(std::string& toSplit) throw ( ParserException );
- void ParseRegularLine( std::string& line ) throw ( ParserException );
- void FirstPassReferenceFile() throw ( ParserException );
- bool SecondPassReferenceFile() throw ( ParserException );
- void HandleFileName( std::string& line ) throw ( ParserException );
- void HandleKey( std::string& line ) throw ( ParserException );
- bool HandleValue( std::string& line ) throw ( ParserException );
+ void ParseRegularLine( std::string& line ) throw ( ParserException );
+ void FirstPassReferenceFile() throw ( ParserException );
+ bool SecondPassReferenceFile() throw ( ParserException );
+ void HandleFileName( std::string& line ) throw ( ParserException );
+ void HandleKey( std::string& line ) throw ( ParserException );
+ bool HandleValue( std::string& line ) throw ( ParserException );
static uint16_t axtoi( char* );
+
private:
/// The directory containing the images to check:
std::string DataPath;
MapEntryValues* CurrentMapEntryValuesPtr;
};
+ReferenceFileParser::ReferenceFileParser()
+{
+ lineNumber = 1;
+ Indent = " ";
+}
+
+ReferenceFileParser::~ReferenceFileParser()
+{
+ for (MapFileValuesType::iterator i = ProducedMap.begin();
+ i != ProducedMap.end();
+ ++i)
+ {
+ delete i->second;
+ }
+}
+
/// As gotten from:
/// http://community.borland.com/article/0,1410,17203,0.html
-uint16_t ReferenceFileParser::axtoi(char *hexStg) {
- int n = 0; // position in string
- int m = 0; // position in digit[] to shift
- int count; // loop index
- int intValue = 0; // integer value of hex string
- int digit[5]; // hold values to convert
- while (n < 4) {
- if (hexStg[n]=='\0')
- break;
- if (hexStg[n] > 0x29 && hexStg[n] < 0x40 ) //if 0 to 9
- digit[n] = hexStg[n] & 0x0f; //convert to int
- else if (hexStg[n] >='a' && hexStg[n] <= 'f') //if a to f
- digit[n] = (hexStg[n] & 0x0f) + 9; //convert to int
- else if (hexStg[n] >='A' && hexStg[n] <= 'F') //if A to F
- digit[n] = (hexStg[n] & 0x0f) + 9; //convert to int
- else break;
- n++;
- }
- count = n;
- m = n - 1;
- n = 0;
- while(n < count) {
- // digit[n] is value of hex digit at position n
- // (m << 2) is the number of positions to shift
- // OR the bits into return value
- intValue = intValue | (digit[n] << (m << 2));
- m--; // adjust the position to set
- n++; // next digit to process
- }
- return intValue;
+uint16_t ReferenceFileParser::axtoi(char *hexStg)
+{
+ int n = 0; // position in string
+ int m = 0; // position in digit[] to shift
+ int count; // loop index
+ int intValue = 0; // integer value of hex string
+ int digit[5]; // hold values to convert
+ while (n < 4)
+ {
+ if (hexStg[n]=='\0')
+ break;
+ if (hexStg[n] > 0x29 && hexStg[n] < 0x40 ) //if 0 to 9
+ digit[n] = hexStg[n] & 0x0f; //convert to int
+ else if (hexStg[n] >='a' && hexStg[n] <= 'f') //if a to f
+ digit[n] = (hexStg[n] & 0x0f) + 9; //convert to int
+ else if (hexStg[n] >='A' && hexStg[n] <= 'F') //if A to F
+ digit[n] = (hexStg[n] & 0x0f) + 9; //convert to int
+ else break;
+ n++;
+ }
+ count = n;
+ m = n - 1;
+ n = 0;
+ while(n < count)
+ {
+ // digit[n] is value of hex digit at position n
+ // (m << 2) is the number of positions to shift
+ // OR the bits into return value
+ intValue = intValue | (digit[n] << (m << 2));
+ m--; // adjust the position to set
+ n++; // next digit to process
+ }
+ return intValue;
}
void ReferenceFileParser::SetDataPath( std::string& inDataPath )
{
std::string fileName = DataPath + fileIt->first;
std::cout << Indent << "FileName: " << fileName << std::endl;
- gdcm::Header* tested = new gdcm::Header( fileName.c_str() );
+ gdcm::File* tested = new gdcm::File( fileName.c_str() );
if( !tested->IsReadable() )
{
std::cerr << Indent << "Failed\n"
uint16_t group = axtoi( &(groupString[0]) );
uint16_t element = axtoi( &(groupElement[0]) );
- std::string testedValue = tested->GetEntry(group, element);
+ std::string testedValue = tested->GetEntryValue(group, element);
if ( testedValue != j->second )
{
// Oops make sure this is only the \0 that differ
from.seekg( 0, std::ios::beg );
}
-ReferenceFileParser::ReferenceFileParser()
-{
- lineNumber = 1;
- Indent = " ";
-}
-
bool ReferenceFileParser::Open( std::string& referenceFileName )
{
from.open( referenceFileName.c_str(), std::ios::in );