]> Creatis software - creaImageIO.git/blob - src/creaImageIODicomNodeComparators.cpp
no message
[creaImageIO.git] / src / creaImageIODicomNodeComparators.cpp
1 #include <creaImageIODicomNodeComparators.h>
2 #include <creaImageIODicomNode.h>
3 #include <stdlib.h>
4 namespace creaImageIO
5 {
6
7   //===================================================================
8   bool DicomNodeIntFieldComparator::compare(DicomNode* const & x, 
9                                             DicomNode* const & y) 
10   { 
11     int ix = atoi(x->GetFieldValue(mKey).c_str());
12     int iy = atoi(y->GetFieldValue(mKey).c_str());   
13     //      std::cout << ix << " < " << iy << " ? "<<std::endl;
14     return (ix<iy);
15   }
16   //===================================================================
17   
18   //===================================================================
19   bool DicomNodeFloatFieldComparator::compare(DicomNode* const & x, 
20                                               DicomNode* const & y) 
21   { 
22     if ( x->GetFieldValue(mKey) == y->GetFieldValue(mKey) )
23       return false;
24     float ix = (float)atof(x->GetFieldValue(mKey).c_str());
25     float iy = (float)atof(y->GetFieldValue(mKey).c_str());   
26     return (ix < iy);
27   }
28   //===================================================================
29   
30   
31   //===================================================================
32   bool DicomNodeStringFieldComparator::compare(DicomNode* const & x,
33                                                DicomNode* const & y) 
34   { 
35     return (  x->GetFieldValue(mKey) < y->GetFieldValue(mKey) );
36   }
37   //===================================================================
38
39   //===================================================================
40   bool LexicographicalDicomNodeComparator::operator() (DicomNode* const & x, 
41                                                        DicomNode * const & y)
42   {
43     std::vector<DicomNodeComparator*>::iterator i;
44     for (i =mDicomNodeComparator.begin();
45          i!=mDicomNodeComparator.end();
46          ++i)
47       {
48         if ( (*i)->operator()(x,y) ) 
49           {
50             return true;
51           }
52         if ( (*i)->operator()(y,x) ) 
53           {
54             return false;
55           }
56       }
57     return false;
58   }
59   //===================================================================
60
61 }