/[escript]/trunk/escript/src/DataArrayView.h
ViewVC logotype

Diff of /trunk/escript/src/DataArrayView.h

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

revision 113 by jgs, Mon Feb 28 07:06:33 2005 UTC revision 117 by jgs, Fri Apr 1 05:48:57 2005 UTC
# Line 24  Line 24 
24  #include <boost/shared_ptr.hpp>  #include <boost/shared_ptr.hpp>
25    
26  #include <iostream>  #include <iostream>
27    
28  #include <vector>  #include <vector>
29    #include "escript/Data/DataVector.h"
30    
31  namespace escript {  namespace escript {
32    
# Line 42  namespace escript { Line 44  namespace escript {
44     The view provided represents a single n-dimensional data-point     The view provided represents a single n-dimensional data-point
45     comprised of values taken from the given data array, starting at the     comprised of values taken from the given data array, starting at the
46     specified offset and extending for as many values as are necessary to     specified offset and extending for as many values as are necessary to
47     satisfy the given shape.     satisfy the given shape. The default offset can be changed, or different
48       offsets specified, in order to provide views of other data-points in
49       the underlying data array.
50  */  */
51    
52  class DataArrayView {  class DataArrayView {
# Line 52  class DataArrayView { Line 56  class DataArrayView {
56    
57   public:   public:
58    
59    /**    //
60        Some basic types which define the data values and view shapes.    // Some basic types which define the data values and view shapes.
61    */    typedef DataVector                        ValueType;
62    typedef std::vector<double>               ValueType;    //typedef std::vector<double>               ValueType;
63    typedef std::vector<int>                  ShapeType;    typedef std::vector<int>                  ShapeType;
64    typedef std::vector<std::pair<int, int> > RegionType;    typedef std::vector<std::pair<int, int> > RegionType;
65    typedef std::vector<std::pair<int, int> > RegionLoopRangeType;    typedef std::vector<std::pair<int, int> > RegionLoopRangeType;
# Line 208  class DataArrayView { Line 212  class DataArrayView {
212    */    */
213    bool    bool
214    checkOffset() const;    checkOffset() const;
215    
216    bool    bool
217    checkOffset(ValueType::size_type offset) const;    checkOffset(ValueType::size_type offset) const;
218    
# Line 230  class DataArrayView { Line 235  class DataArrayView {
235       Calculate the number of values for the given shape or region.       Calculate the number of values for the given shape or region.
236       This is purely a utility method and has no bearing on this view.       This is purely a utility method and has no bearing on this view.
237    */    */
238    static int    static
239      int
240    noValues(const ShapeType& shape);    noValues(const ShapeType& shape);
241    static int  
242      static
243      int
244    noValues(const RegionLoopRangeType& region);    noValues(const RegionLoopRangeType& region);
245    
246    /**    /**
# Line 254  class DataArrayView { Line 262  class DataArrayView {
262       \brief       \brief
263       Return the shape of this view.       Return the shape of this view.
264    */    */
265    const ShapeType&    const
266      ShapeType&
267    getShape() const;    getShape() const;
268    
269    /**    /**
270       \brief       \brief
271       Return true if the given shape is the same as this view's shape.       Return true if the given shape is the same as this view's shape.
      This is purely a utility method and has no bearing on this view.  
272    */    */
273    bool    bool
274    checkShape(const DataArrayView::ShapeType& other) const;    checkShape(const ShapeType& other) const;
275    
276    /**    /**
277       \brief       \brief
278       Create a shape error message. Normally used when there is a shape       Create a shape error message. Normally used when there is a shape
279       mismatch.       mismatch between this shape and the other shape.
      This is purely a utility method and has no bearing on this view.  
280    
281       \param messagePrefix - Input -       \param messagePrefix - Input -
282                         First part of the error message.                         First part of the error message.
# Line 278  class DataArrayView { Line 285  class DataArrayView {
285    */    */
286    std::string    std::string
287    createShapeErrorMessage(const std::string& messagePrefix,    createShapeErrorMessage(const std::string& messagePrefix,
288                            const DataArrayView::ShapeType& other) const;                            const ShapeType& other) const;
289    
290    /**    /**
291       \brief       \brief
# Line 298  class DataArrayView { Line 305  class DataArrayView {
305    
306       \param shape - Input.       \param shape - Input.
307    */    */
308    static std::string    static
309    shapeToString(const DataArrayView::ShapeType& shape);    std::string
310      shapeToString(const ShapeType& shape);
311    
312    /**    /**
313      \brief      \brief
# Line 478  class DataArrayView { Line 486  class DataArrayView {
486       \param region - Input -       \param region - Input -
487                         Slice region.                         Slice region.
488    */    */
489    static DataArrayView::ShapeType    static
490      ShapeType
491    getResultSliceShape(const RegionType& region);    getResultSliceShape(const RegionType& region);
492    
493    /**    /**
# Line 537  class DataArrayView { Line 546  class DataArrayView {
546           getSliceRegion(:1,0:2)      => < <0,1> <0,2> <0,6> >           getSliceRegion(:1,0:2)      => < <0,1> <0,2> <0,6> >
547    
548    */    */
549    DataArrayView::RegionType    RegionType
550    getSliceRegion(const boost::python::object& key) const;    getSliceRegion(const boost::python::object& key) const;
551    
552    /**    /**
# Line 770  class DataArrayView { Line 779  class DataArrayView {
779       \param right - Input - The right hand side.       \param right - Input - The right hand side.
780       \param result - Output - The result of the operation.       \param result - Output - The result of the operation.
781    */    */
782    static void    static
783      void
784    matMult(const DataArrayView& left,    matMult(const DataArrayView& left,
785            const DataArrayView& right,            const DataArrayView& right,
786            DataArrayView& result);            DataArrayView& result);
# Line 781  class DataArrayView { Line 791  class DataArrayView {
791       of the given views.       of the given views.
792       This is purely a utility method and has no bearing on this view.       This is purely a utility method and has no bearing on this view.
793    */    */
794    static ShapeType    static
795      ShapeType
796    determineResultShape(const DataArrayView& left,    determineResultShape(const DataArrayView& left,
797                         const DataArrayView& right);                         const DataArrayView& right);
798    
# Line 796  class DataArrayView { Line 807  class DataArrayView {
807    //    //
808    // The data values for the view.    // The data values for the view.
809    // NOTE: This points to data external to the view.    // NOTE: This points to data external to the view.
810    // This is just a pointer to a simple STL vector of doubles.    // This is just a pointer to an array of ValueType.
811    ValueType* m_data;    ValueType* m_data;
812    
813    //    //

Legend:
Removed from v.113  
changed lines
  Added in v.117

  ViewVC Help
Powered by ViewVC 1.1.26