Version: 8.3.0
MED_Wrapper.hxx
Go to the documentation of this file.
1 // Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE
2 //
3 // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
5 //
6 // This library is free software; you can redistribute it and/or
7 // modify it under the terms of the GNU Lesser General Public
8 // License as published by the Free Software Foundation; either
9 // version 2.1 of the License, or (at your option) any later version.
10 //
11 // This library is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 // Lesser General Public License for more details.
15 //
16 // You should have received a copy of the GNU Lesser General Public
17 // License along with this library; if not, write to the Free Software
18 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 //
20 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
21 //
22 
23 #ifndef MED_Wrapper_HeaderFile
24 #define MED_Wrapper_HeaderFile
25 
26 #include "MED_WrapperBase.hxx"
27 
28 #include "MED_Structures.hxx"
29 #include "MED_Algorithm.hxx"
30 
31 #include <boost/thread/mutex.hpp>
32 
33 namespace MED
34 {
35 
36  //----------------------------------------------------------------------------
39  {
40  typedef boost::mutex TMutex;
43 
44  virtual
45  ~TWrapper();
46 
47  //----------------------------------------------------------------------------
49  virtual
50  EVersion
51  GetVersion() = 0;
52 
53  //----------------------------------------------------------------------------
55  virtual
56  PMeshInfo
57  CrMeshInfo(TInt theDim = 0, TInt theSpaceDim = 0,
58  const std::string& theValue = "",
59  EMaillage theType = eNON_STRUCTURE,
60  const std::string& theDesc = "") = 0;
61 
63  virtual
64  PMeshInfo
65  CrMeshInfo(const PMeshInfo& theInfo) = 0;
66 
68  virtual
69  TInt
70  GetNbMeshes(TErr* theErr = NULL) = 0;
71 
73  virtual
74  void
75  GetMeshInfo(TInt theMeshId,
76  TMeshInfo& theInfo,
77  TErr* theErr = NULL) = 0;
78 
80  virtual
81  void
82  SetMeshInfo(const TMeshInfo& theInfo,
83  TErr* theErr = NULL) = 0;
84 
86  virtual
87  PMeshInfo
88  GetPMeshInfo(TInt theId,
89  TErr* theErr = NULL);
90 
91 
92  //----------------------------------------------------------------------------
94  virtual
95  TInt
96  GetNbFamilies(const TMeshInfo& theMeshInfo,
97  TErr* theErr = NULL) = 0;
98 
100  virtual
101  TInt
102  GetNbFamAttr(TInt theFamId,
103  const TMeshInfo& theInfo,
104  TErr* theErr = NULL) = 0;
105 
107  virtual
108  TInt
109  GetNbFamGroup(TInt theFamId,
110  const TMeshInfo& theInfo,
111  TErr* theErr = NULL) = 0;
112 
114  virtual
115  void
116  GetFamilyInfo(TInt theFamId,
117  TFamilyInfo& theInfo,
118  TErr* theErr = NULL) = 0;
119 
121  virtual
122  void
123  SetFamilyInfo(const TFamilyInfo& theInfo,
124  TErr* theErr = NULL) = 0;
125 
127  virtual
129  CrFamilyInfo(const PMeshInfo& theMeshInfo,
130  TInt theNbGroup = 0,
131  TInt theNbAttr = 0,
132  TInt theId = 0,
133  const std::string& theValue = "") = 0;
134 
136  virtual
138  CrFamilyInfo(const PMeshInfo& theMeshInfo,
139  const std::string& theValue,
140  TInt theId,
141  const TStringSet& theGroupNames,
142  const TStringVector& theAttrDescs = TStringVector(),
143  const TIntVector& theAttrIds = TIntVector(),
144  const TIntVector& theAttrVals = TIntVector()) = 0;
145 
147  virtual
149  CrFamilyInfo(const PMeshInfo& theMeshInfo,
150  const PFamilyInfo& theInfo) = 0;
151 
154  GetPFamilyInfo(const PMeshInfo& theMeshInfo,
155  TInt theId,
156  TErr* theErr = NULL);
157 
158  //----------------------------------------------------------------------------
160  virtual
161  void
162  GetNames(TElemInfo& theInfo,
163  TInt theNb,
164  EEntiteMaillage theEntity,
165  EGeometrieElement theGeom,
166  TErr* theErr = NULL)
167  {}
168 
170  virtual
171  void
172  GetNumeration(TElemInfo& theInfo,
173  TInt theNb,
174  EEntiteMaillage theEntity,
175  EGeometrieElement theGeom,
176  TErr* theErr = NULL)
177  {}
178 
180  virtual
181  void
182  GetFamilies(TElemInfo& theInfo,
183  TInt theNb,
184  EEntiteMaillage theEntity,
185  EGeometrieElement theGeom,
186  TErr* theErr = NULL)
187  {}
188 
190  virtual
191  void
192  SetNames(const TElemInfo& theInfo,
193  EEntiteMaillage theEntity,
194  EGeometrieElement theGeom,
195  TErr* theErr = NULL)
196  {}
197 
199  virtual
200  void
201  SetNumeration(const TElemInfo& theInfo,
202  EEntiteMaillage theEntity,
203  EGeometrieElement theGeom,
204  TErr* theErr = NULL)
205  {}
206 
208  virtual
209  void
210  SetFamilies(const TElemInfo& theInfo,
211  EEntiteMaillage theEntity,
212  EGeometrieElement theGeom,
213  TErr* theErr = NULL)
214  {}
215 
217  PElemInfo
218  GetPElemInfo(const PMeshInfo& theMeshInfo,
219  EEntiteMaillage theEntity = eNOEUD,
220  EGeometrieElement theGeom = ePOINT1,
221  EConnectivite theConnMode = eNOD,
222  TErr* theErr = NULL);
223 
224  //----------------------------------------------------------------------------
226  virtual
227  TInt
228  GetNbNodes(const TMeshInfo& theMeshInfo,
229  TErr* theErr = NULL) = 0;
230 
231  virtual
232  TInt
233  GetNbNodes(const TMeshInfo& theMeshInfo,
234  ETable theTable,
235  TErr* theErr = NULL)
236  {
237  return 0;
238  }
239 
241  virtual
242  void
243  GetNodeInfo(TNodeInfo& theInfo,
244  TErr* theErr = NULL) = 0;
245 
247  virtual
248  void
249  SetNodeInfo(const TNodeInfo& theInfo,
250  TErr* theErr = NULL) = 0;
251 
253  virtual
254  PElemInfo
255  CrElemInfo(const PMeshInfo& theMeshInfo,
256  TInt theNbElem,
257  EBooleen theIsElemNum = eVRAI,
258  EBooleen theIsElemNames = eVRAI)
259  {
260  return PElemInfo();
261  }
262 
264  virtual
265  PElemInfo
266  CrElemInfo(const PMeshInfo& theMeshInfo,
267  TInt theNbElem,
268  const TIntVector& theFamNum,
269  const TIntVector& aElemNum,
270  const TStringVector& aElemNames)
271  {
272  return PElemInfo();
273  }
274 
276  virtual
277  PNodeInfo
278  CrNodeInfo(const PMeshInfo& theMeshInfo,
279  TInt theNbElem,
280  EModeSwitch theMode = eFULL_INTERLACE,
281  ERepere theSystem = eCART,
282  EBooleen theIsElemNum = eVRAI,
283  EBooleen theIsElemNames = eVRAI) = 0;
284 
286  virtual
287  PNodeInfo
288  CrNodeInfo(const PMeshInfo& theMeshInfo,
289  const TFloatVector& theNodeCoords,
290  EModeSwitch theMode = eFULL_INTERLACE,
291  ERepere theSystem = eCART,
292  const TStringVector& theCoordNames = TStringVector(),
293  const TStringVector& theCoordUnits = TStringVector(),
294  const TIntVector& theFamilyNums = TIntVector(),
295  const TIntVector& theElemNums = TIntVector(),
296  const TStringVector& theElemNames = TStringVector()) = 0;
297 
299  virtual
300  PNodeInfo
301  CrNodeInfo(const PMeshInfo& theMeshInfo,
302  const PNodeInfo& theInfo) = 0;
303 
305  PNodeInfo
306  GetPNodeInfo(const PMeshInfo& theMeshInfo,
307  TErr* theErr = NULL);
308 
309  //----------------------------------------------------------------------------
311 
312  virtual
313  void
314  GetPolygoneInfo(TPolygoneInfo& theInfo,
315  TErr* theErr = NULL)
316  {}
317 
319 
320  virtual
321  void
322  SetPolygoneInfo(const TPolygoneInfo& theInfo,
323  TErr* theErr = NULL)
324  {}
325 
327 
328  virtual
329  TInt
330  GetNbPolygones(const TMeshInfo& theMeshInfo,
331  EEntiteMaillage theEntity,
332  EGeometrieElement theGeom,
333  EConnectivite theConnMode = eNOD,
334  TErr* theErr = NULL)
335  {
336  return 0;
337  }
338 
340 
341  virtual
342  TInt
343  GetPolygoneConnSize(const TMeshInfo& theMeshInfo,
344  EEntiteMaillage theEntity,
345  EGeometrieElement theGeom,
346  EConnectivite theConnMode = eNOD,
347  TErr* theErr = NULL)
348  {
349  return 0;
350  }
351 
353 
354  virtual
356  CrPolygoneInfo(const PMeshInfo& theMeshInfo,
357  EEntiteMaillage theEntity,
358  EGeometrieElement theGeom,
359  TInt theNbElem,
360  TInt theConnSize,
361  EConnectivite theConnMode = eNOD,
362  EBooleen theIsElemNum = eVRAI,
363  EBooleen theIsElemNames = eVRAI)
364  {
365  return PPolygoneInfo();
366  }
367 
369 
370  virtual
372  CrPolygoneInfo(const PMeshInfo& theMeshInfo,
373  EEntiteMaillage theEntity,
374  EGeometrieElement theGeom,
375  const TIntVector& theIndexes,
376  const TIntVector& theConnectivities,
377  EConnectivite theConnMode = eNOD,
378  const TIntVector& theFamilyNums = TIntVector(),
379  const TIntVector& theElemNums = TIntVector(),
380  const TStringVector& theElemNames = TStringVector())
381  {
382  return PPolygoneInfo();
383  }
384 
386  virtual
388  CrPolygoneInfo(const PMeshInfo& theMeshInfo,
389  const PPolygoneInfo& theInfo)
390  {
391  return PPolygoneInfo();
392  }
393 
395 
397  GetPPolygoneInfo(const PMeshInfo& theMeshInfo,
398  EEntiteMaillage theEntity,
399  EGeometrieElement theGeom,
400  EConnectivite theConnMode = eNOD);
401 
402  //----------------------------------------------------------------------------
404 
405  virtual
406  void
407  GetPolyedreInfo(TPolyedreInfo& theInfo,
408  TErr* theErr = NULL)
409  {}
410 
412 
413  virtual
414  void
415  SetPolyedreInfo(const TPolyedreInfo& theInfo,
416  TErr* theErr = NULL)
417  {}
418 
420 
421  virtual
422  TInt
423  GetNbPolyedres(const TMeshInfo& theMeshInfo,
424  EEntiteMaillage theEntity,
425  EGeometrieElement theGeom,
426  EConnectivite theConnMode = eNOD,
427  TErr* theErr = NULL)
428  {
429  return 0;
430  }
431 
433 
434  virtual
435  void
436  GetPolyedreConnSize(const TMeshInfo& theMeshInfo,
437  TInt& theNbFaces,
438  TInt& theConnSize,
439  EConnectivite theConnMode = eNOD,
440  TErr* theErr = NULL)
441  {
442  theNbFaces = theConnSize = 0;
443  }
444 
445  virtual
447  CrPolyedreInfo(const PMeshInfo& theMeshInfo,
448  EEntiteMaillage theEntity,
449  EGeometrieElement theGeom,
450  TInt theNbElem,
451  TInt theNbFaces,
452  TInt theConnSize,
453  EConnectivite theConnMode = eNOD,
454  EBooleen theIsElemNum = eVRAI,
455  EBooleen theIsElemNames = eVRAI)
456  {
457  return PPolyedreInfo();
458  }
459 
461 
462  virtual
464  CrPolyedreInfo(const PMeshInfo& theMeshInfo,
465  EEntiteMaillage theEntity,
466  EGeometrieElement theGeom,
467  const TIntVector& theIndexes,
468  const TIntVector& theFaces,
469  const TIntVector& theConnectivities,
470  EConnectivite theConnMode = eNOD,
471  const TIntVector& theFamilyNums = TIntVector(),
472  const TIntVector& theElemNums = TIntVector(),
473  const TStringVector& theElemNames = TStringVector())
474  {
475  return PPolyedreInfo();
476  }
477 
479  virtual
481  CrPolyedreInfo(const PMeshInfo& theMeshInfo,
482  const PPolyedreInfo& theInfo)
483  {
484  return PPolyedreInfo();
485  }
486 
488 
490  GetPPolyedreInfo(const PMeshInfo& theMeshInfo,
491  EEntiteMaillage theEntity,
492  EGeometrieElement theGeom,
493  EConnectivite theConnMode = eNOD);
494 
495  //----------------------------------------------------------------------------
497  virtual
499  GetEntityInfo(const TMeshInfo& theMeshInfo,
500  EConnectivite theConnMode = eNOD,
501  TErr* theErr = NULL) = 0;
502 
504  virtual
505  TInt
506  GetNbCells(const TMeshInfo& theMeshInfo,
507  EEntiteMaillage theEntity,
508  EGeometrieElement theGeom,
509  EConnectivite theConnMode = eNOD,
510  TErr* theErr = NULL) = 0;
511 
513  virtual
514  void
515  GetCellInfo(TCellInfo& theInfo,
516  TErr* theErr = NULL) = 0;
517 
519  virtual
520  void
521  SetCellInfo(const TCellInfo& theInfo,
522  TErr* theErr = NULL) = 0;
523 
525  virtual
526  PCellInfo
527  CrCellInfo(const PMeshInfo& theMeshInfo,
528  EEntiteMaillage theEntity,
529  EGeometrieElement theGeom,
530  TInt theNbElem,
531  EConnectivite theConnMode = eNOD,
532  EBooleen theIsElemNum = eVRAI,
533  EBooleen theIsElemNames = eVRAI,
534  EModeSwitch theMode = eFULL_INTERLACE) = 0;
535 
537  virtual
538  PCellInfo
539  CrCellInfo(const PMeshInfo& theMeshInfo,
540  EEntiteMaillage theEntity,
541  EGeometrieElement theGeom,
542  const TIntVector& theConnectivities,
543  EConnectivite theConnMode = eNOD,
544  const TIntVector& theFamilyNums = TIntVector(),
545  const TIntVector& theElemNums = TIntVector(),
546  const TStringVector& theElemNames = TStringVector(),
547  EModeSwitch theMode = eFULL_INTERLACE) = 0;
548 
550  virtual
551  PCellInfo
552  CrCellInfo(const PMeshInfo& theMeshInfo,
553  const PCellInfo& theInfo) = 0;
554 
556  PCellInfo
557  GetPCellInfo(const PMeshInfo& theMeshInfo,
558  EEntiteMaillage theEntity,
559  EGeometrieElement theGeom,
560  EConnectivite theConnMode = eNOD,
561  TErr* theErr = NULL);
562 
563  //----------------------------------------------------------------------------
565 
566  virtual
567  TInt
568  GetNbBalls(const TMeshInfo& theMeshInfo)
569  {
570  return 0;
571  }
572 
574 
575  virtual
576  void
577  GetBallInfo(TBallInfo& theInfo,
578  TErr* theErr = NULL)
579  {}
580 
582 
583  virtual
584  void
585  SetBallInfo(const TBallInfo& theInfo,
586  TErr* theErr = NULL)
587  {}
588 
590 
591  virtual
592  PBallInfo
593  CrBallInfo(const PMeshInfo& theMeshInfo,
594  TInt theNbBalls,
595  EBooleen theIsElemNum = eVRAI)
596  {
597  return PBallInfo();
598  }
599 
601 
602  virtual
603  PBallInfo
604  CrBallInfo(const PMeshInfo& theMeshInfo,
605  const TIntVector& theNodes,
606  TFloatVector& theDiameters,
607  const TIntVector& theFamilyNums = TIntVector(),
608  const TIntVector& theElemNums = TIntVector())
609  {
610  return PBallInfo();
611  }
612 
614  virtual
615  PBallInfo
616  CrBallInfo(const PMeshInfo& theMeshInfo,
617  const PBallInfo& theInfo)
618  {
619  return PBallInfo();
620  }
621 
623 
624  virtual
625  PBallInfo
626  GetPBallInfo(const PMeshInfo& theMeshInfo);
627 
628  //----------------------------------------------------------------------------
630  virtual
631  TInt
632  GetNbFields(TErr* theErr = NULL) = 0;
633 
635  virtual
636  TInt
637  GetNbComp(TInt theFieldId,
638  TErr* theErr = NULL) = 0;
639 
641  virtual
642  void
643  GetFieldInfo(TInt theFieldId,
644  TFieldInfo& theInfo,
645  TErr* theErr = NULL) = 0;
646 
648  virtual
649  void
650  SetFieldInfo(const TFieldInfo& theInfo,
651  TErr* theErr = NULL) = 0;
652 
653 
655  virtual
656  PFieldInfo
657  CrFieldInfo(const PMeshInfo& theMeshInfo,
658  TInt theNbComp = 0,
659  ETypeChamp theType = eFLOAT64,
660  const std::string& theValue = "",
661  EBooleen theIsLocal = eVRAI,
662  TInt theNbRef = 1) = 0;
663 
665  virtual
666  PFieldInfo
667  CrFieldInfo(const PMeshInfo& theMeshInfo,
668  const PFieldInfo& theInfo) = 0;
669 
671  PFieldInfo
672  GetPFieldInfo(const PMeshInfo& theMeshInfo,
673  TInt theId,
674  TErr* theErr = NULL);
675 
676 
677  //----------------------------------------------------------------------------
679 
680  virtual
681  TInt
682  GetNbGauss(TErr* theErr = NULL)
683  {
684  return TInt();
685  }
686 
688 
689  virtual
691  GetGaussPreInfo(TInt theId,
692  TErr* theErr = NULL)
693  {
695  }
696 
698 
699  virtual
700  void
701  GetGaussInfo(TInt theId,
702  TGaussInfo& theInfo,
703  TErr* theErr = NULL)
704  {}
705 
707 
708  virtual
709  PGaussInfo
710  CrGaussInfo(const TGaussInfo::TInfo& theInfo,
711  EModeSwitch theMode = eFULL_INTERLACE) = 0;
712 
713 
714  //----------------------------------------------------------------------------
716 
721  virtual
722  TInt
723  GetNbTimeStamps(const TFieldInfo& theInfo,
724  const TEntityInfo& theEntityInfo,
725  EEntiteMaillage& theEntity,
726  TGeom2Size& theGeom2Size,
727  TErr* theErr = NULL) = 0;
728 
730  virtual
731  void
732  GetTimeStampInfo(TInt theTimeStampId,
733  TTimeStampInfo& theInfo,
734  TErr* theErr = NULL) = 0;
735 
737  virtual
739  CrTimeStampInfo(const PFieldInfo& theFieldInfo,
740  EEntiteMaillage theEntity,
741  const TGeom2Size& theGeom2Size,
742  const TGeom2NbGauss& theGeom2NbGauss = TGeom2NbGauss(),
743  TInt theNumDt = 0,
744  TInt theNumOrd = 0,
745  TFloat theDt = 0,
746  const std::string& theUnitDt = "",
747  const TGeom2Gauss& theGeom2Gauss = TGeom2Gauss()) = 0;
748 
750  virtual
752  CrTimeStampInfo(const PFieldInfo& theFieldInfo,
753  const PTimeStampInfo& theInfo) = 0;
754 
757  GetPTimeStampInfo(const PFieldInfo& theFieldInfo,
758  EEntiteMaillage theEntity,
759  const TGeom2Size& theGeom2Size,
760  TInt theId,
761  TErr* theErr = NULL);
762 
763 
764  //----------------------------------------------------------------------------
766  virtual
767  TInt
768  GetNbProfiles(TErr* theErr = NULL) = 0;
769 
771  virtual
773  GetProfilePreInfo(TInt theId,
774  TErr* theErr = NULL) = 0;
775 
777  virtual
778  void
779  GetProfileInfo(TInt theId,
780  TProfileInfo& theInfo,
781  TErr* theErr = NULL) = 0;
782 
784  virtual
786  CrProfileInfo(const TProfileInfo::TInfo& theInfo,
787  EModeProfil theMode = eCOMPACT) = 0;
788 
790  virtual
791  void
792  SetProfileInfo(const TProfileInfo& theInfo,
793  TErr* theErr = NULL) = 0;
794 
797  GetPProfileInfo(TInt theId,
798  EModeProfil theMode = eCOMPACT,
799  TErr* theErr = NULL);
800 
801 
802  //----------------------------------------------------------------------------
804  virtual
805  void
806  GetTimeStampValue(const PTimeStampValueBase& theTimeStampValue,
807  const TMKey2Profile& theMKey2Profile,
808  const TKey2Gauss& theKey2Gauss,
809  TErr* theErr = NULL) = 0;
810 
812  virtual
813  void
814  SetTimeStampValue(const PTimeStampValueBase& theTimeStampValue,
815  TErr* theErr = NULL) = 0;
816 
818  virtual
820  CrTimeStampValue(const PTimeStampInfo& theTimeStampInfo,
821  ETypeChamp theTypeChamp,
822  const TGeom2Profile& theGeom2Profile = TGeom2Profile(),
823  EModeSwitch theMode = eFULL_INTERLACE) = 0;
824 
826  virtual
828  CrTimeStampValue(const PTimeStampInfo& theTimeStampInfo,
829  const TGeom2Profile& theGeom2Profile = TGeom2Profile(),
830  EModeSwitch theMode = eFULL_INTERLACE);
831 
833  virtual
835  CrTimeStampValue(const PTimeStampInfo& theTimeStampInfo,
836  const PTimeStampValueBase& theInfo,
837  ETypeChamp theTypeChamp) = 0;
838 
840  virtual
842  CrTimeStampValue(const PTimeStampInfo& theTimeStampInfo,
843  const PTimeStampValueBase& theInfo);
844 
847  GetPTimeStampValue(const PTimeStampInfo& theTimeStampInfo,
848  const TMKey2Profile& theMKey2Profile,
849  const TKey2Gauss& theKey2Gauss,
850  TErr* theErr = NULL);
851 
852  //----------------------------------------------------------------------------
853  // Backward compatibility declarations
855  virtual
856  void
857  GetTimeStampVal(const PTimeStampVal& theVal,
858  const TMKey2Profile& theMKey2Profile,
859  const TKey2Gauss& theKey2Gauss,
860  TErr* theErr = NULL);
861 
863  virtual
864  void
865  SetTimeStamp(const PTimeStampVal& theVal,
866  TErr* theErr = NULL);
867 
869  virtual
871  CrTimeStampVal(const PTimeStampInfo& theTimeStampInfo,
872  const TGeom2Profile& theGeom2Profile = TGeom2Profile(),
873  EModeSwitch theMode = eFULL_INTERLACE);
874 
876  virtual
878  CrTimeStampVal(const PTimeStampInfo& theTimeStampInfo,
879  const PTimeStampVal& theInfo);
880 
883  GetPTimeStampVal(const PTimeStampInfo& theTimeStampInfo,
884  const TMKey2Profile& theMKey2Profile,
885  const TKey2Gauss& theKey2Gauss,
886  TErr* theErr = NULL);
887 
888  //----------------------------------------------------------------------------
890 
892  GetPGrilleInfo(const PMeshInfo& theMeshInfo);
893 
895 
897  GetPGrilleInfo(const PMeshInfo& theMeshInfo,
898  const PGrilleInfo& theInfo);
899 
901 
902  virtual
903  void
904  GetGrilleInfo(TGrilleInfo& theInfo,
905  TErr* theErr = NULL)
906  {}
907 
909 
910  virtual
911  void
912  SetGrilleInfo(const TGrilleInfo& theInfo,
913  TErr* theErr = NULL)
914  {}
915 
917  virtual
919  CrGrilleInfo(const PMeshInfo& theMeshInfo,
920  const PGrilleInfo& theGrilleInfo)
921  {
922  return PGrilleInfo();
923  }
924 
926  virtual
928  CrGrilleInfo(const PMeshInfo& theMeshInfo)
929  {
930  return PGrilleInfo();
931  }
932 
934  virtual
936  CrGrilleInfo(const PMeshInfo& theMeshInfo,
937  const EGrilleType& type)
938  {
939  return PGrilleInfo();
940  }
941 
943  virtual
945  CrGrilleInfo(const PMeshInfo& theMeshInfo,
946  const EGrilleType& type,
947  const TInt& nbNodes)
948  {
949  return PGrilleInfo();
950  }
951 
953  virtual
955  CrGrilleInfo(const PMeshInfo& theMeshInfo,
956  const EGrilleType& type,
957  const MED::TIntVector& nbNodeVec)
958  {
959  return PGrilleInfo();
960  }
961 
963  virtual
964  void
965  GetGrilleType(const TMeshInfo& theMeshInfo,
966  EGrilleType& type,
967  TErr* theErr = NULL)
968  {
969  }
970 
971  };
972 
973 
974  //----------------------------------------------------------------------------
977  {
978  TLockProxy& operator=(const TLockProxy& );
980 
981  public:
982  TLockProxy(TWrapper* theWrapper);
983 
984  ~TLockProxy();
985 
986  TWrapper * operator-> () const;
987  };
988 
989 
990  //----------------------------------------------------------------------------
992  template<>
993  class MEDWRAPPER_EXPORT SharedPtr<TWrapper>: public boost::shared_ptr<TWrapper>
994  {
995  public:
997 
998  template<class Y>
999  explicit SharedPtr(Y * p):
1000  boost::shared_ptr<TWrapper>(p)
1001  {}
1002 
1003  template<class Y>
1005  boost::shared_ptr<TWrapper>(boost::dynamic_pointer_cast<TWrapper,Y>(r))
1006  {}
1007 
1008  template<class Y>
1009  SharedPtr&
1010  operator=(SharedPtr<Y> const & r)
1011  {
1012  SharedPtr<TWrapper>(r).swap(*this);
1013  return *this;
1014  }
1015 
1016  template<class Y>
1017  SharedPtr&
1018  operator()(Y * p) // Y must be complete
1019  {
1020  return operator=<Y>(SharedPtr<Y>(p));
1021  }
1022 
1023  template<class Y>
1024  SharedPtr&
1025  operator()(SharedPtr<Y> const & r) // Y must be complete
1026  {
1027  return operator=<Y>(SharedPtr<Y>(r));
1028  }
1029 
1030  TLockProxy operator-> () const // never throws
1031  {
1032  return TLockProxy(this->get());
1033  }
1034 
1035  protected:
1036  operator const TWrapper& () const;
1037 
1038  operator TWrapper& ();
1039 
1040  TWrapper& operator* () const;
1041 
1042  TWrapper * get() const // never throws
1043  {
1044  return boost::shared_ptr<TWrapper>::get();
1045  }
1046  };
1047 
1048  //----------------------------------------------------------------------------
1049  typedef SharedPtr<TWrapper> PWrapper;
1050 }
1051 
1052 #endif