/[escript]/branches/arrayview_from_1695_trunk/escript/src/DataTypes.cpp
ViewVC logotype

Diff of /branches/arrayview_from_1695_trunk/escript/src/DataTypes.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1778 by jfenwick, Tue Sep 9 02:52:26 2008 UTC revision 1779 by jfenwick, Thu Sep 11 01:06:15 2008 UTC
# Line 18  Line 18 
18  #include "DataException.h"  #include "DataException.h"
19  #include "DataTypes.h"  #include "DataTypes.h"
20    
21    namespace {
22  using namespace boost::python;  using namespace boost::python;
23    using namespace escript;
24  namespace escript  using namespace escript::DataTypes;
 {  
 namespace DataTypes  
 {  
   
    int  
    noValues(const ShapeType& shape)  
    {  
       ShapeType::const_iterator i;  
       //  
       // An empty shape vector means rank 0 which contains 1 value  
       int noValues=1;  
       for (i=shape.begin();i!=shape.end();i++) {  
          noValues*=(*i);  
       }  
       return noValues;  
    }  
   
    int  
    noValues(const RegionLoopRangeType& region)  
    {  
       //  
       // An empty region vector means rank 0 which contains 1 value  
       int noValues=1;  
       unsigned int i;  
       for (i=0;i<region.size();i++) {  
          noValues*=region[i].second-region[i].first;  
       }  
       return noValues;  
    }  
   
    std::string  
    shapeToString(const DataTypes::ShapeType& shape)  
    {  
       std::stringstream temp;  
       temp << "(";  
       unsigned int i;  
       for (i=0;i<shape.size();i++) {  
          temp << shape[i];  
          if (i < shape.size()-1) {  
             temp << ",";  
          }  
       }  
       temp << ")";  
       return temp.str();  
    }  
   
25    
26  /*  /*
27    \brief    \brief
# Line 119  namespace DataTypes Line 74  namespace DataTypes
74           throw DataException("Error - lower index must less or equal upper index.");           throw DataException("Error - lower index must less or equal upper index.");
75        return std::pair<int,int>(s0,s1);        return std::pair<int,int>(s0,s1);
76     }     }
77    }
78    
79    
80    using namespace boost::python;
81    
82    namespace escript
83    {
84    namespace DataTypes
85    {
86    
87       int
88       noValues(const ShapeType& shape)
89       {
90          ShapeType::const_iterator i;
91          //
92          // An empty shape vector means rank 0 which contains 1 value
93          int noValues=1;
94          for (i=shape.begin();i!=shape.end();i++) {
95             noValues*=(*i);
96          }
97          return noValues;
98       }
99    
100       int
101       noValues(const RegionLoopRangeType& region)
102       {
103          //
104          // An empty region vector means rank 0 which contains 1 value
105          int noValues=1;
106          unsigned int i;
107          for (i=0;i<region.size();i++) {
108             noValues*=region[i].second-region[i].first;
109          }
110          return noValues;
111       }
112    
113       std::string
114       shapeToString(const DataTypes::ShapeType& shape)
115       {
116          std::stringstream temp;
117          temp << "(";
118          unsigned int i;
119          for (i=0;i<shape.size();i++) {
120             temp << shape[i];
121             if (i < shape.size()-1) {
122                temp << ",";
123             }
124          }
125          temp << ")";
126          return temp.str();
127       }
128    
129    
130    
131    
132    
# Line 461  namespace DataTypes Line 469  namespace DataTypes
469     }     }
470    
471     std::string     std::string
472     pointToString(const ValueType& data,const ShapeType& shape, int offset, const std::string& suffix)     pointToString(const ValueType& data,const ShapeType& shape, int offset, const std::string& prefix)
473     {     {
474        using namespace std;        using namespace std;
475        EsysAssert(data.size()>0,"Error - Data object is empty.");        EsysAssert(data.size()>0,"Error - Data object is empty.");
476        stringstream temp;        stringstream temp;
477        string finalSuffix=suffix;        string finalPrefix=prefix;
478        if (suffix.length() > 0) {        if (prefix.length() > 0) {
479           finalSuffix+=" ";           finalPrefix+=" ";
480        }        }
481        switch (getRank(shape)) {        switch (getRank(shape)) {
482        case 0:        case 0:
483           temp << finalSuffix << data[0];           temp << finalPrefix << data[0];
484           break;           break;
485        case 1:        case 1:
486           for (int i=0;i<shape[0];i++) {           for (int i=0;i<shape[0];i++) {
487              temp << finalSuffix << "(" << i <<  ") " << data[i+offset];              temp << finalPrefix << "(" << i <<  ") " << data[i+offset];
488              if (i!=(shape[0]-1)) {              if (i!=(shape[0]-1)) {
489                 temp << endl;                 temp << endl;
490              }              }
# Line 485  namespace DataTypes Line 493  namespace DataTypes
493        case 2:        case 2:
494           for (int i=0;i<shape[0];i++) {           for (int i=0;i<shape[0];i++) {
495              for (int j=0;j<shape[1];j++) {              for (int j=0;j<shape[1];j++) {
496                 temp << finalSuffix << "(" << i << "," << j << ") " << data[offset+getRelIndex(shape,i,j)];                 temp << finalPrefix << "(" << i << "," << j << ") " << data[offset+getRelIndex(shape,i,j)];
497                 if (!(i==(shape[0]-1) && j==(shape[1]-1))) {                 if (!(i==(shape[0]-1) && j==(shape[1]-1))) {
498                    temp << endl;                    temp << endl;
499                 }                 }
# Line 496  namespace DataTypes Line 504  namespace DataTypes
504           for (int i=0;i<shape[0];i++) {           for (int i=0;i<shape[0];i++) {
505              for (int j=0;j<shape[1];j++) {              for (int j=0;j<shape[1];j++) {
506                 for (int k=0;k<shape[2];k++) {                 for (int k=0;k<shape[2];k++) {
507                    temp << finalSuffix << "(" << i << "," << j << "," << k << ") " << data[offset+getRelIndex(shape,i,j,k)];                    temp << finalPrefix << "(" << i << "," << j << "," << k << ") " << data[offset+getRelIndex(shape,i,j,k)];
508                    if (!(i==(shape[0]-1) && j==(shape[1]-1) && k==(shape[2]-1))) {                    if (!(i==(shape[0]-1) && j==(shape[1]-1) && k==(shape[2]-1))) {
509                       temp << endl;                       temp << endl;
510                    }                    }
# Line 509  namespace DataTypes Line 517  namespace DataTypes
517              for (int j=0;j<shape[1];j++) {              for (int j=0;j<shape[1];j++) {
518                 for (int k=0;k<shape[2];k++) {                 for (int k=0;k<shape[2];k++) {
519                    for (int l=0;l<shape[3];l++) {                    for (int l=0;l<shape[3];l++) {
520                       temp << finalSuffix << "(" << i << "," << j << "," << k << "," << l << ") " << data[offset+getRelIndex(shape,i,j,k,l)];                       temp << finalPrefix << "(" << i << "," << j << "," << k << "," << l << ") " << data[offset+getRelIndex(shape,i,j,k,l)];
521                       if (!(i==(shape[0]-1) && j==(shape[1]-1) && k==(shape[2]-1) && l==(shape[3]-1))) {                       if (!(i==(shape[0]-1) && j==(shape[1]-1) && k==(shape[2]-1) && l==(shape[3]-1))) {
522                          temp << endl;                          temp << endl;
523                       }                       }

Legend:
Removed from v.1778  
changed lines
  Added in v.1779

  ViewVC Help
Powered by ViewVC 1.1.26