Salome HOME
Attempt of Management of profiles in spliter
[tools/medcoupling.git] / src / MEDCoupling / MCAuto.hxx
index 06f728620b0bc836c2dbe4f7631c21d5e80f5ff1..ff32e25a130849b8a06fd381ee4c3ad1eaab35d1 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -24,6 +24,8 @@
 #include "MEDCouplingRefCountObject.hxx"
 #include "InterpKernelException.hxx"
 
+#include <vector>
+
 namespace MEDCoupling
 {
   template<class T>
@@ -80,6 +82,16 @@ namespace MEDCoupling
     return ret;
   }
 
+  template<class T>
+  typename std::vector<const T *> ToConstVect(const typename std::vector< MCAuto<T> >& vec)
+  {
+    std::size_t sz(vec.size());
+    std::vector<const T *> ret(sz);
+    for(std::size_t i=0;i<sz;i++)
+      ret[i]=(const T *)vec[i];
+    return ret;
+  }
+  
   template<class T>
   class MCConstAuto
   {
@@ -101,6 +113,7 @@ namespace MEDCoupling
     const T& operator*() { return *_ptr; }
     const T& operator*() const { return *_ptr; }
     operator const T *() const { return _ptr; }
+    T *shameOnMeConstCast() const { return const_cast<T*>(_ptr); }
   private:
     void referPtr(const T *ptr) { _ptr=ptr; if(_ptr) _ptr->incrRef(); }
     void destroyPtr() { if(_ptr) _ptr->decrRef(); }