Salome HOME
update due to bugs PAL8113 and another I do not remember the number ;) .
[modules/med.git] / src / MEDMEM / MEDMEM_Coordinate.hxx
index e65517fc8f6ccc702005f68bbf4d59e67dece95a..741b68278473abd0bddfd9db7e978b23a093e770 100644 (file)
 #include "MEDMEM_PointerOf.hxx"
 #include "MEDMEM_Exception.hxx"
 #include "MEDMEM_define.hxx"
-//using namespace MED_EN;
 
 
 #include "MEDMEM_Array.hxx"
 
-class COORDINATE {
+/*!
+    This class contains coordinates of the nodes .\n
+    It could also store useful optional information about nodes
+    as  node numbers and about axes as names or units. \n
+    spaceDimension and  numberOfNodes can be found in _coordinate object.
+*/
+
+namespace MEDMEM {
+class COORDINATE
+{
 
 protected:
                                    /*! contains "CARTESIAN",
                                        "CYLINDRICAL" or "SPHERICAL"*/
-  string            _coordinateSystem;
+  string                       _coordinateSystem;
+
 
-  // all in _coordinate object !!!
-  //  int               _spaceDimension;
-  //  int               _numberOfNodes;
+                                    /*! _coordinate is a MEDARRAY<double> object : \n
+                                        - spaceDimension \n
+                                        - numberOfNodes \n
+                                        - default storage mode \n
+                                        - Up to 4 "PointerOf" to an array of size spaceDimension*NumberOfNodes\n
 
-                                    /*! array of size spaceDimension*NumberOfNodes */
-  //PointerOf< MEDARRAY<double> > _coordinate;     
-  //bool                               _allocateCoordinate;
-                                       MEDARRAY<double>* _coordinate;     
+                                        Storing the object (not a pointer to this object) is more convenient for memory
+                                        management.
+                                        */
+  mutable MEDARRAY<double>            _coordinate;
 
-                                    /*! array of size spaceDimension */
-  PointerOf<string>          _coordinateName; 
-                                        //string *          _coordinateName; 
+                                    /*! PointerOf to an array of size spaceDimension storing axes names*/
+  PointerOf<string>          _coordinateName;
 
-                                    /*! array of size spaceDimension */
-  PointerOf<string>          _coordinateUnit; 
-                                       //string *          _coordinateUnit; 
+                                    /*! PointerOf to an array of size spaceDimension storing units */
+  PointerOf<string>          _coordinateUnit;
 
-                                    /*! array of size NumberOfNodes : optionnal nodes numbers */
-  PointerOf<int>             _nodeNumber;     
-                                       //int    *          _nodeNumber;     
+                                    /*! PointerOf to an array of size NumberOfNodes : optional nodes numbers */
+  PointerOf<int>             _nodeNumber;
 
 
 public :
@@ -52,28 +60,36 @@ public :
 
 
   COORDINATE();
-  COORDINATE(medModeSwitch Mode,int SpaceDimension, int NumberOfNodes);
+  COORDINATE(int SpaceDimension, int NumberOfNodes, MED_EN::medModeSwitch Mode);
+  COORDINATE(int SpaceDimension,const string * CoordinateName, const string * CoordinateUnit);
   COORDINATE(const COORDINATE & m);
-  ~COORDINATE();
+  virtual ~COORDINATE();
+
+  void setCoordinates(MEDARRAY<double> *Coordinate,bool shallowCopy=false);
+  void setCoordinates(const MED_EN::medModeSwitch Mode, const double *Coordinate);
+  void setCoordinatesNames(const string * CoordinateName);
+  void setCoordinateName(const string CoordinateName, const int i);
+  void setCoordinatesUnits(const string * CoordinateUnit);
+  void setCoordinateUnit(const string CoordinateUnit, const int i);
+  void setCoordinatesSystem(const string CoordinateSystem);
+  void setNodesNumbers(const int * NodeNumber);
+
+  int             getSpaceDimension() const;
+  int             getNumberOfNodes() const;
+
+  virtual const int*      getNodesNumbers() const;
+  //const int*            getNodesNumbers() ;
+  string          getCoordinatesSystem() const;
 
-  void setCoordinates(MEDARRAY<double> *Coordinate);
-  void setCoordinatesNames(string * CoordinateName);
-  void setCoordinatesUnits(string * CoordinateUnit);
-  void setCoordinatesSystem(string CoordinateSystem);
-  void setNodesNumbers(int * NodeNumber);
+  virtual const double *  getCoordinates(MED_EN::medModeSwitch Mode);
+  virtual double          getCoordinate(int Number,int Axis);
+  virtual const double *  getCoordinateAxis(int Axis);
 
-  int*            getNodesNumbers() const;
-  int*            getNodesNumbers() ;
-  string          getCoordinatesSystem() const;
-  const double *  getCoordinates(medModeSwitch Mode);
-  double          getCoordinate(int Number,int Axis); 
-  // return coordinate of node number Number, on axis Axis (1: X, 2: Y, 3: Z)
-  const double * getCoordinateAxis(int Axis); 
-  // return all nodes coordinates from axis Axis
-  string * getCoordinatesNames(); 
-  string   getCoordinateName(int Axis);
-  string * getCoordinatesUnits();
-  string   getCoordinateUnit(int Axis);
+  const string * getCoordinatesNames() const;
+  string   getCoordinateName(int Axis) const;
+  const string * getCoordinatesUnits() const;
+  string   getCoordinateUnit(int Axis) const;
+};
 };
 
 #endif /* COORDINATE_HXX */