/[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 1746 by jfenwick, Thu Aug 28 06:11:56 2008 UTC revision 1747 by jfenwick, Wed Sep 3 04:56:50 2008 UTC
# Line 463  namespace DataTypes Line 463  namespace DataTypes
463    
464     }     }
465    
466       std::string
467       pointToString(const ValueType& data,const ShapeType& shape, int offset, const std::string& suffix)
468       {
469          using namespace std;
470          EsysAssert(!data.isEmpty(),"Error - View is empty.");
471          stringstream temp;
472          string finalSuffix=suffix;
473          if (suffix.length() > 0) {
474             finalSuffix+=" ";
475          }
476          switch (getRank(shape)) {
477          case 0:
478             temp << finalSuffix << data[0];
479             break;
480          case 1:
481             for (int i=0;i<shape[0];i++) {
482                temp << finalSuffix << "(" << i << ") " << data[i];
483                if (i!=(shape[0]-1)) {
484                   temp << endl;
485                }
486             }
487             break;
488          case 2:
489             for (int i=0;i<shape[0];i++) {
490                for (int j=0;j<shape[1];j++) {
491                   temp << finalSuffix << "(" << i << "," << j << ") " << data[offset+getRelIndex(shape,i,j)];
492                   if (!(i==(shape[0]-1) && j==(shape[1]-1))) {
493                      temp << endl;
494                   }
495                }
496             }
497             break;
498          case 3:
499             for (int i=0;i<shape[0];i++) {
500                for (int j=0;j<shape[1];j++) {
501                   for (int k=0;k<shape[2];k++) {
502                      temp << finalSuffix << "(" << i << "," << j << "," << k << ") " << data[offset+getRelIndex(shape,i,j,k)];
503                      if (!(i==(shape[0]-1) && j==(shape[1]-1) && k==(shape[2]-1))) {
504                         temp << endl;
505                      }
506                   }
507                }
508             }
509             break;
510          case 4:
511             for (int i=0;i<shape[0];i++) {
512                for (int j=0;j<shape[1];j++) {
513                   for (int k=0;k<shape[2];k++) {
514                      for (int l=0;l<shape[3];l++) {
515                         temp << finalSuffix << "(" << i << "," << j << "," << k << "," << l << ") " << data[offset+getRelIndex(shape,i,j,k,l)];
516                         if (!(i==(shape[0]-1) && j==(shape[1]-1) && k==(shape[2]-1) && l==(shape[3]-1))) {
517                            temp << endl;
518                         }
519                      }
520                   }
521                }
522             }
523             break;
524          default:
525             stringstream mess;
526             mess << "Error - (toString) Invalid rank: " << getRank(shape);
527             throw DataException(mess.str());
528          }
529          return temp.str();
530       }
531    
532    
533       void copyPoint(ValueType& dest, ValueType::size_type doffset, ValueType::size_type nvals, const ValueType& src, ValueType::size_type soffset)
534       {
535          EsysAssert((!dest.isEmpty()&&!other.isEmpty()&&checkOffset(doffset,dest.size(),nvals)),
536                     "Error - Couldn't copy due to insufficient storage.");
537    //       EsysAssert((checkShape(other.getShape())),
538    //                  createShapeErrorMessage("Error - Couldn't copy due to shape mismatch.",other.getShape(),m_shape));
539          if (checkOffset(doffset,dest.size(),nvals) && checkOffset(soffset,src.size(),nvals)) {
540             memcpy(&dest[doffset],&src[soffset],sizeof(double)*nvals);
541          } else {
542             throw DataException("Error - invalid offset specified.");
543          }
544    
545    
546    
547       }
548    
549  }   // end namespace DataTypes  }   // end namespace DataTypes
550  }   // end namespace escript  }   // end namespace escript

Legend:
Removed from v.1746  
changed lines
  Added in v.1747

  ViewVC Help
Powered by ViewVC 1.1.26