00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef MED_Wrapper_HeaderFile
00029 #define MED_Wrapper_HeaderFile
00030
00031 #include "MED_WrapperBase.hxx"
00032
00033 #include "MED_Structures.hxx"
00034 #include "MED_Algorithm.hxx"
00035
00036 #include <boost/thread/mutex.hpp>
00037
00038 namespace MED
00039 {
00040
00041
00043 struct MEDWRAPPER_EXPORT TWrapper
00044 {
00045 typedef boost::mutex TMutex;
00047 TMutex myMutex;
00048
00049 virtual
00050 ~TWrapper();
00051
00052
00054 virtual
00055 EVersion
00056 GetVersion() = 0;
00057
00058
00060 virtual
00061 PMeshInfo
00062 CrMeshInfo(TInt theDim = 0, TInt theSpaceDim = 0,
00063 const std::string& theValue = "",
00064 EMaillage theType = eNON_STRUCTURE,
00065 const std::string& theDesc = "") = 0;
00066
00068 virtual
00069 PMeshInfo
00070 CrMeshInfo(const PMeshInfo& theInfo) = 0;
00071
00073 virtual
00074 TInt
00075 GetNbMeshes(TErr* theErr = NULL) = 0;
00076
00078 virtual
00079 void
00080 GetMeshInfo(TInt theMeshId,
00081 TMeshInfo& theInfo,
00082 TErr* theErr = NULL) = 0;
00083
00085 virtual
00086 void
00087 SetMeshInfo(const TMeshInfo& theInfo,
00088 TErr* theErr = NULL) = 0;
00089
00091 virtual
00092 PMeshInfo
00093 GetPMeshInfo(TInt theId,
00094 TErr* theErr = NULL);
00095
00096
00097
00099 virtual
00100 TInt
00101 GetNbFamilies(const TMeshInfo& theMeshInfo,
00102 TErr* theErr = NULL) = 0;
00103
00105 virtual
00106 TInt
00107 GetNbFamAttr(TInt theFamId,
00108 const TMeshInfo& theInfo,
00109 TErr* theErr = NULL) = 0;
00110
00112 virtual
00113 TInt
00114 GetNbFamGroup(TInt theFamId,
00115 const TMeshInfo& theInfo,
00116 TErr* theErr = NULL) = 0;
00117
00119 virtual
00120 void
00121 GetFamilyInfo(TInt theFamId,
00122 TFamilyInfo& theInfo,
00123 TErr* theErr = NULL) = 0;
00124
00126 virtual
00127 void
00128 SetFamilyInfo(const TFamilyInfo& theInfo,
00129 TErr* theErr = NULL) = 0;
00130
00132 virtual
00133 PFamilyInfo
00134 CrFamilyInfo(const PMeshInfo& theMeshInfo,
00135 TInt theNbGroup = 0,
00136 TInt theNbAttr = 0,
00137 TInt theId = 0,
00138 const std::string& theValue = "") = 0;
00139
00141 virtual
00142 PFamilyInfo
00143 CrFamilyInfo(const PMeshInfo& theMeshInfo,
00144 const std::string& theValue,
00145 TInt theId,
00146 const TStringSet& theGroupNames,
00147 const TStringVector& theAttrDescs = TStringVector(),
00148 const TIntVector& theAttrIds = TIntVector(),
00149 const TIntVector& theAttrVals = TIntVector()) = 0;
00150
00152 virtual
00153 PFamilyInfo
00154 CrFamilyInfo(const PMeshInfo& theMeshInfo,
00155 const PFamilyInfo& theInfo) = 0;
00156
00158 PFamilyInfo
00159 GetPFamilyInfo(const PMeshInfo& theMeshInfo,
00160 TInt theId,
00161 TErr* theErr = NULL);
00162
00163
00165 virtual
00166 void
00167 GetNames(TElemInfo& theInfo,
00168 TInt theNb,
00169 EEntiteMaillage theEntity,
00170 EGeometrieElement theGeom,
00171 TErr* theErr = NULL)
00172 {}
00173
00175 virtual
00176 void
00177 GetNumeration(TElemInfo& theInfo,
00178 TInt theNb,
00179 EEntiteMaillage theEntity,
00180 EGeometrieElement theGeom,
00181 TErr* theErr = NULL)
00182 {}
00183
00185 virtual
00186 void
00187 GetFamilies(TElemInfo& theInfo,
00188 TInt theNb,
00189 EEntiteMaillage theEntity,
00190 EGeometrieElement theGeom,
00191 TErr* theErr = NULL)
00192 {}
00193
00195 virtual
00196 void
00197 SetNames(const TElemInfo& theInfo,
00198 EEntiteMaillage theEntity,
00199 EGeometrieElement theGeom,
00200 TErr* theErr = NULL)
00201 {}
00202
00204 virtual
00205 void
00206 SetNumeration(const TElemInfo& theInfo,
00207 EEntiteMaillage theEntity,
00208 EGeometrieElement theGeom,
00209 TErr* theErr = NULL)
00210 {}
00211
00213 virtual
00214 void
00215 SetFamilies(const TElemInfo& theInfo,
00216 EEntiteMaillage theEntity,
00217 EGeometrieElement theGeom,
00218 TErr* theErr = NULL)
00219 {}
00220
00222 PElemInfo
00223 GetPElemInfo(const PMeshInfo& theMeshInfo,
00224 EEntiteMaillage theEntity = eNOEUD,
00225 EGeometrieElement theGeom = ePOINT1,
00226 EConnectivite theConnMode = eNOD,
00227 TErr* theErr = NULL);
00228
00229
00231 virtual
00232 TInt
00233 GetNbNodes(const TMeshInfo& theMeshInfo,
00234 TErr* theErr = NULL) = 0;
00235
00236 virtual
00237 TInt
00238 GetNbNodes(const TMeshInfo& theMeshInfo,
00239 ETable theTable,
00240 TErr* theErr = NULL)
00241 {
00242 return 0;
00243 }
00244
00246 virtual
00247 void
00248 GetNodeInfo(TNodeInfo& theInfo,
00249 TErr* theErr = NULL) = 0;
00250
00252 virtual
00253 void
00254 SetNodeInfo(const TNodeInfo& theInfo,
00255 TErr* theErr = NULL) = 0;
00256
00258 virtual
00259 PElemInfo
00260 CrElemInfo(const PMeshInfo& theMeshInfo,
00261 TInt theNbElem,
00262 EBooleen theIsElemNum = eVRAI,
00263 EBooleen theIsElemNames = eVRAI)
00264 {
00265 return PElemInfo();
00266 }
00267
00269 virtual
00270 PElemInfo
00271 CrElemInfo(const PMeshInfo& theMeshInfo,
00272 TInt theNbElem,
00273 const TIntVector& theFamNum,
00274 const TIntVector& aElemNum,
00275 const TStringVector& aElemNames)
00276 {
00277 return PElemInfo();
00278 }
00279
00281 virtual
00282 PNodeInfo
00283 CrNodeInfo(const PMeshInfo& theMeshInfo,
00284 TInt theNbElem,
00285 EModeSwitch theMode = eFULL_INTERLACE,
00286 ERepere theSystem = eCART,
00287 EBooleen theIsElemNum = eVRAI,
00288 EBooleen theIsElemNames = eVRAI) = 0;
00289
00291 virtual
00292 PNodeInfo
00293 CrNodeInfo(const PMeshInfo& theMeshInfo,
00294 const TFloatVector& theNodeCoords,
00295 EModeSwitch theMode = eFULL_INTERLACE,
00296 ERepere theSystem = eCART,
00297 const TStringVector& theCoordNames = TStringVector(),
00298 const TStringVector& theCoordUnits = TStringVector(),
00299 const TIntVector& theFamilyNums = TIntVector(),
00300 const TIntVector& theElemNums = TIntVector(),
00301 const TStringVector& theElemNames = TStringVector()) = 0;
00302
00304 virtual
00305 PNodeInfo
00306 CrNodeInfo(const PMeshInfo& theMeshInfo,
00307 const PNodeInfo& theInfo) = 0;
00308
00310 PNodeInfo
00311 GetPNodeInfo(const PMeshInfo& theMeshInfo,
00312 TErr* theErr = NULL);
00313
00314
00316
00317 virtual
00318 void
00319 GetPolygoneInfo(TPolygoneInfo& theInfo,
00320 TErr* theErr = NULL)
00321 {}
00322
00324
00325 virtual
00326 void
00327 SetPolygoneInfo(const TPolygoneInfo& theInfo,
00328 TErr* theErr = NULL)
00329 {}
00330
00332
00333 virtual
00334 TInt
00335 GetNbPolygones(const TMeshInfo& theMeshInfo,
00336 EEntiteMaillage theEntity,
00337 EGeometrieElement theGeom,
00338 EConnectivite theConnMode = eNOD,
00339 TErr* theErr = NULL)
00340 {
00341 return 0;
00342 }
00343
00345
00346 virtual
00347 TInt
00348 GetPolygoneConnSize(const TMeshInfo& theMeshInfo,
00349 EEntiteMaillage theEntity,
00350 EGeometrieElement theGeom,
00351 EConnectivite theConnMode = eNOD,
00352 TErr* theErr = NULL)
00353 {
00354 return 0;
00355 }
00356
00358
00359 virtual
00360 PPolygoneInfo
00361 CrPolygoneInfo(const PMeshInfo& theMeshInfo,
00362 EEntiteMaillage theEntity,
00363 EGeometrieElement theGeom,
00364 TInt theNbElem,
00365 TInt theConnSize,
00366 EConnectivite theConnMode = eNOD,
00367 EBooleen theIsElemNum = eVRAI,
00368 EBooleen theIsElemNames = eVRAI)
00369 {
00370 return PPolygoneInfo();
00371 }
00372
00374
00375 virtual
00376 PPolygoneInfo
00377 CrPolygoneInfo(const PMeshInfo& theMeshInfo,
00378 EEntiteMaillage theEntity,
00379 EGeometrieElement theGeom,
00380 const TIntVector& theIndexes,
00381 const TIntVector& theConnectivities,
00382 EConnectivite theConnMode = eNOD,
00383 const TIntVector& theFamilyNums = TIntVector(),
00384 const TIntVector& theElemNums = TIntVector(),
00385 const TStringVector& theElemNames = TStringVector())
00386 {
00387 return PPolygoneInfo();
00388 }
00389
00391 virtual
00392 PPolygoneInfo
00393 CrPolygoneInfo(const PMeshInfo& theMeshInfo,
00394 const PPolygoneInfo& theInfo)
00395 {
00396 return PPolygoneInfo();
00397 }
00398
00400
00401 PPolygoneInfo
00402 GetPPolygoneInfo(const PMeshInfo& theMeshInfo,
00403 EEntiteMaillage theEntity,
00404 EGeometrieElement theGeom,
00405 EConnectivite theConnMode = eNOD);
00406
00407
00409
00410 virtual
00411 void
00412 GetPolyedreInfo(TPolyedreInfo& theInfo,
00413 TErr* theErr = NULL)
00414 {}
00415
00417
00418 virtual
00419 void
00420 SetPolyedreInfo(const TPolyedreInfo& theInfo,
00421 TErr* theErr = NULL)
00422 {}
00423
00425
00426 virtual
00427 TInt
00428 GetNbPolyedres(const TMeshInfo& theMeshInfo,
00429 EEntiteMaillage theEntity,
00430 EGeometrieElement theGeom,
00431 EConnectivite theConnMode = eNOD,
00432 TErr* theErr = NULL)
00433 {
00434 return 0;
00435 }
00436
00438
00439 virtual
00440 void
00441 GetPolyedreConnSize(const TMeshInfo& theMeshInfo,
00442 TInt& theNbFaces,
00443 TInt& theConnSize,
00444 EConnectivite theConnMode = eNOD,
00445 TErr* theErr = NULL)
00446 {
00447 theNbFaces = theConnSize = 0;
00448 }
00449
00450 virtual
00451 PPolyedreInfo
00452 CrPolyedreInfo(const PMeshInfo& theMeshInfo,
00453 EEntiteMaillage theEntity,
00454 EGeometrieElement theGeom,
00455 TInt theNbElem,
00456 TInt theNbFaces,
00457 TInt theConnSize,
00458 EConnectivite theConnMode = eNOD,
00459 EBooleen theIsElemNum = eVRAI,
00460 EBooleen theIsElemNames = eVRAI)
00461 {
00462 return PPolyedreInfo();
00463 }
00464
00466
00467 virtual
00468 PPolyedreInfo
00469 CrPolyedreInfo(const PMeshInfo& theMeshInfo,
00470 EEntiteMaillage theEntity,
00471 EGeometrieElement theGeom,
00472 const TIntVector& theIndexes,
00473 const TIntVector& theFaces,
00474 const TIntVector& theConnectivities,
00475 EConnectivite theConnMode = eNOD,
00476 const TIntVector& theFamilyNums = TIntVector(),
00477 const TIntVector& theElemNums = TIntVector(),
00478 const TStringVector& theElemNames = TStringVector())
00479 {
00480 return PPolyedreInfo();
00481 }
00482
00484 virtual
00485 PPolyedreInfo
00486 CrPolyedreInfo(const PMeshInfo& theMeshInfo,
00487 const PPolyedreInfo& theInfo)
00488 {
00489 return PPolyedreInfo();
00490 }
00491
00493
00494 PPolyedreInfo
00495 GetPPolyedreInfo(const PMeshInfo& theMeshInfo,
00496 EEntiteMaillage theEntity,
00497 EGeometrieElement theGeom,
00498 EConnectivite theConnMode = eNOD);
00499
00500
00502 virtual
00503 TEntityInfo
00504 GetEntityInfo(const TMeshInfo& theMeshInfo,
00505 EConnectivite theConnMode = eNOD,
00506 TErr* theErr = NULL) = 0;
00507
00509 virtual
00510 TInt
00511 GetNbCells(const TMeshInfo& theMeshInfo,
00512 EEntiteMaillage theEntity,
00513 EGeometrieElement theGeom,
00514 EConnectivite theConnMode = eNOD,
00515 TErr* theErr = NULL) = 0;
00516
00518 virtual
00519 void
00520 GetCellInfo(TCellInfo& theInfo,
00521 TErr* theErr = NULL) = 0;
00522
00524 virtual
00525 void
00526 SetCellInfo(const TCellInfo& theInfo,
00527 TErr* theErr = NULL) = 0;
00528
00530 virtual
00531 PCellInfo
00532 CrCellInfo(const PMeshInfo& theMeshInfo,
00533 EEntiteMaillage theEntity,
00534 EGeometrieElement theGeom,
00535 TInt theNbElem,
00536 EConnectivite theConnMode = eNOD,
00537 EBooleen theIsElemNum = eVRAI,
00538 EBooleen theIsElemNames = eVRAI,
00539 EModeSwitch theMode = eFULL_INTERLACE) = 0;
00540
00542 virtual
00543 PCellInfo
00544 CrCellInfo(const PMeshInfo& theMeshInfo,
00545 EEntiteMaillage theEntity,
00546 EGeometrieElement theGeom,
00547 const TIntVector& theConnectivities,
00548 EConnectivite theConnMode = eNOD,
00549 const TIntVector& theFamilyNums = TIntVector(),
00550 const TIntVector& theElemNums = TIntVector(),
00551 const TStringVector& theElemNames = TStringVector(),
00552 EModeSwitch theMode = eFULL_INTERLACE) = 0;
00553
00555 virtual
00556 PCellInfo
00557 CrCellInfo(const PMeshInfo& theMeshInfo,
00558 const PCellInfo& theInfo) = 0;
00559
00561 PCellInfo
00562 GetPCellInfo(const PMeshInfo& theMeshInfo,
00563 EEntiteMaillage theEntity,
00564 EGeometrieElement theGeom,
00565 EConnectivite theConnMode = eNOD,
00566 TErr* theErr = NULL);
00567
00568
00569
00571 virtual
00572 TInt
00573 GetNbFields(TErr* theErr = NULL) = 0;
00574
00576 virtual
00577 TInt
00578 GetNbComp(TInt theFieldId,
00579 TErr* theErr = NULL) = 0;
00580
00582 virtual
00583 void
00584 GetFieldInfo(TInt theFieldId,
00585 TFieldInfo& theInfo,
00586 TErr* theErr = NULL) = 0;
00587
00589 virtual
00590 void
00591 SetFieldInfo(const TFieldInfo& theInfo,
00592 TErr* theErr = NULL) = 0;
00593
00594
00596 virtual
00597 PFieldInfo
00598 CrFieldInfo(const PMeshInfo& theMeshInfo,
00599 TInt theNbComp = 0,
00600 ETypeChamp theType = eFLOAT64,
00601 const std::string& theValue = "",
00602 EBooleen theIsLocal = eVRAI,
00603 TInt theNbRef = 1) = 0;
00604
00606 virtual
00607 PFieldInfo
00608 CrFieldInfo(const PMeshInfo& theMeshInfo,
00609 const PFieldInfo& theInfo) = 0;
00610
00612 PFieldInfo
00613 GetPFieldInfo(const PMeshInfo& theMeshInfo,
00614 TInt theId,
00615 TErr* theErr = NULL);
00616
00617
00618
00620
00621 virtual
00622 TInt
00623 GetNbGauss(TErr* theErr = NULL)
00624 {
00625 return TInt();
00626 }
00627
00629
00630 virtual
00631 TGaussInfo::TInfo
00632 GetGaussPreInfo(TInt theId,
00633 TErr* theErr = NULL)
00634 {
00635 return TGaussInfo::TInfo( TGaussInfo::TKey(ePOINT1,""),0 );
00636 }
00637
00639
00640 virtual
00641 void
00642 GetGaussInfo(TInt theId,
00643 TGaussInfo& theInfo,
00644 TErr* theErr = NULL)
00645 {}
00646
00648
00649 virtual
00650 PGaussInfo
00651 CrGaussInfo(const TGaussInfo::TInfo& theInfo,
00652 EModeSwitch theMode = eFULL_INTERLACE) = 0;
00653
00654
00655
00657
00662 virtual
00663 TInt
00664 GetNbTimeStamps(const TFieldInfo& theInfo,
00665 const TEntityInfo& theEntityInfo,
00666 EEntiteMaillage& theEntity,
00667 TGeom2Size& theGeom2Size,
00668 TErr* theErr = NULL) = 0;
00669
00671 virtual
00672 void
00673 GetTimeStampInfo(TInt theTimeStampId,
00674 TTimeStampInfo& theInfo,
00675 TErr* theErr = NULL) = 0;
00676
00678 virtual
00679 PTimeStampInfo
00680 CrTimeStampInfo(const PFieldInfo& theFieldInfo,
00681 EEntiteMaillage theEntity,
00682 const TGeom2Size& theGeom2Size,
00683 const TGeom2NbGauss& theGeom2NbGauss = TGeom2NbGauss(),
00684 TInt theNumDt = 0,
00685 TInt theNumOrd = 0,
00686 TFloat theDt = 0,
00687 const std::string& theUnitDt = "",
00688 const TGeom2Gauss& theGeom2Gauss = TGeom2Gauss()) = 0;
00689
00691 virtual
00692 PTimeStampInfo
00693 CrTimeStampInfo(const PFieldInfo& theFieldInfo,
00694 const PTimeStampInfo& theInfo) = 0;
00695
00697 PTimeStampInfo
00698 GetPTimeStampInfo(const PFieldInfo& theFieldInfo,
00699 EEntiteMaillage theEntity,
00700 const TGeom2Size& theGeom2Size,
00701 TInt theId,
00702 TErr* theErr = NULL);
00703
00704
00705
00707 virtual
00708 TInt
00709 GetNbProfiles(TErr* theErr = NULL) = 0;
00710
00712 virtual
00713 TProfileInfo::TInfo
00714 GetProfilePreInfo(TInt theId,
00715 TErr* theErr = NULL) = 0;
00716
00718 virtual
00719 void
00720 GetProfileInfo(TInt theId,
00721 TProfileInfo& theInfo,
00722 TErr* theErr = NULL) = 0;
00723
00725 virtual
00726 PProfileInfo
00727 CrProfileInfo(const TProfileInfo::TInfo& theInfo,
00728 EModeProfil theMode = eCOMPACT) = 0;
00729
00731 virtual
00732 void
00733 SetProfileInfo(const TProfileInfo& theInfo,
00734 TErr* theErr = NULL) = 0;
00735
00737 PProfileInfo
00738 GetPProfileInfo(TInt theId,
00739 EModeProfil theMode = eCOMPACT,
00740 TErr* theErr = NULL);
00741
00742
00743
00745 virtual
00746 void
00747 GetTimeStampValue(const PTimeStampValueBase& theTimeStampValue,
00748 const TMKey2Profile& theMKey2Profile,
00749 const TKey2Gauss& theKey2Gauss,
00750 TErr* theErr = NULL) = 0;
00751
00753 virtual
00754 void
00755 SetTimeStampValue(const PTimeStampValueBase& theTimeStampValue,
00756 TErr* theErr = NULL) = 0;
00757
00759 virtual
00760 PTimeStampValueBase
00761 CrTimeStampValue(const PTimeStampInfo& theTimeStampInfo,
00762 ETypeChamp theTypeChamp,
00763 const TGeom2Profile& theGeom2Profile = TGeom2Profile(),
00764 EModeSwitch theMode = eFULL_INTERLACE) = 0;
00765
00767 virtual
00768 PTimeStampValueBase
00769 CrTimeStampValue(const PTimeStampInfo& theTimeStampInfo,
00770 const TGeom2Profile& theGeom2Profile = TGeom2Profile(),
00771 EModeSwitch theMode = eFULL_INTERLACE);
00772
00774 virtual
00775 PTimeStampValueBase
00776 CrTimeStampValue(const PTimeStampInfo& theTimeStampInfo,
00777 const PTimeStampValueBase& theInfo,
00778 ETypeChamp theTypeChamp) = 0;
00779
00781 virtual
00782 PTimeStampValueBase
00783 CrTimeStampValue(const PTimeStampInfo& theTimeStampInfo,
00784 const PTimeStampValueBase& theInfo);
00785
00787 PTimeStampValueBase
00788 GetPTimeStampValue(const PTimeStampInfo& theTimeStampInfo,
00789 const TMKey2Profile& theMKey2Profile,
00790 const TKey2Gauss& theKey2Gauss,
00791 TErr* theErr = NULL);
00792
00793
00794
00796 virtual
00797 void
00798 GetTimeStampVal(const PTimeStampVal& theVal,
00799 const TMKey2Profile& theMKey2Profile,
00800 const TKey2Gauss& theKey2Gauss,
00801 TErr* theErr = NULL);
00802
00804 virtual
00805 void
00806 SetTimeStamp(const PTimeStampVal& theVal,
00807 TErr* theErr = NULL);
00808
00810 virtual
00811 PTimeStampVal
00812 CrTimeStampVal(const PTimeStampInfo& theTimeStampInfo,
00813 const TGeom2Profile& theGeom2Profile = TGeom2Profile(),
00814 EModeSwitch theMode = eFULL_INTERLACE);
00815
00817 virtual
00818 PTimeStampVal
00819 CrTimeStampVal(const PTimeStampInfo& theTimeStampInfo,
00820 const PTimeStampVal& theInfo);
00821
00823 PTimeStampVal
00824 GetPTimeStampVal(const PTimeStampInfo& theTimeStampInfo,
00825 const TMKey2Profile& theMKey2Profile,
00826 const TKey2Gauss& theKey2Gauss,
00827 TErr* theErr = NULL);
00828
00829
00831
00832 PGrilleInfo
00833 GetPGrilleInfo(const PMeshInfo& theMeshInfo);
00834
00836
00837 PGrilleInfo
00838 GetPGrilleInfo(const PMeshInfo& theMeshInfo,
00839 const PGrilleInfo& theInfo);
00840
00842
00843 virtual
00844 void
00845 GetGrilleInfo(TGrilleInfo& theInfo,
00846 TErr* theErr = NULL)
00847 {}
00848
00850
00851 virtual
00852 void
00853 SetGrilleInfo(const TGrilleInfo& theInfo,
00854 TErr* theErr = NULL)
00855 {}
00856
00858 virtual
00859 PGrilleInfo
00860 CrGrilleInfo(const PMeshInfo& theMeshInfo,
00861 const PGrilleInfo& theGrilleInfo)
00862 {
00863 return PGrilleInfo();
00864 }
00865
00867 virtual
00868 PGrilleInfo
00869 CrGrilleInfo(const PMeshInfo& theMeshInfo)
00870 {
00871 return PGrilleInfo();
00872 }
00873
00875 virtual
00876 PGrilleInfo
00877 CrGrilleInfo(const PMeshInfo& theMeshInfo,
00878 const EGrilleType& type)
00879 {
00880 return PGrilleInfo();
00881 }
00882
00884 virtual
00885 PGrilleInfo
00886 CrGrilleInfo(const PMeshInfo& theMeshInfo,
00887 const EGrilleType& type,
00888 const TInt& nbNodes)
00889 {
00890 return PGrilleInfo();
00891 }
00892
00894 virtual
00895 PGrilleInfo
00896 CrGrilleInfo(const PMeshInfo& theMeshInfo,
00897 const EGrilleType& type,
00898 const MED::TIntVector& nbNodeVec)
00899 {
00900 return PGrilleInfo();
00901 }
00902
00904 virtual
00905 void
00906 GetGrilleType(const TMeshInfo& theMeshInfo,
00907 EGrilleType& type,
00908 TErr* theErr = NULL)
00909 {
00910 }
00911
00912 };
00913
00914
00915
00917 class MEDWRAPPER_EXPORT TLockProxy
00918 {
00919 TLockProxy& operator=(const TLockProxy& );
00920 TWrapper* myWrapper;
00921
00922 public:
00923 TLockProxy(TWrapper* theWrapper);
00924
00925 ~TLockProxy();
00926
00927 TWrapper * operator-> () const;
00928 };
00929
00930
00931
00933 template<>
00934 class MEDWRAPPER_EXPORT SharedPtr<TWrapper>: public boost::shared_ptr<TWrapper>
00935 {
00936 public:
00937 SharedPtr() {}
00938
00939 template<class Y>
00940 explicit SharedPtr(Y * p):
00941 boost::shared_ptr<TWrapper>(p)
00942 {}
00943
00944 template<class Y>
00945 SharedPtr(SharedPtr<Y> const & r):
00946 boost::shared_ptr<TWrapper>(r,boost::detail::dynamic_cast_tag())
00947 {}
00948
00949 template<class Y>
00950 SharedPtr&
00951 operator=(SharedPtr<Y> const & r)
00952 {
00953 boost::shared_ptr<TWrapper>(r,boost::detail::dynamic_cast_tag()).swap(*this);
00954 return *this;
00955 }
00956
00957 template<class Y>
00958 SharedPtr&
00959 operator()(Y * p)
00960 {
00961 return operator=<Y>(SharedPtr<Y>(p));
00962 }
00963
00964 template<class Y>
00965 SharedPtr&
00966 operator()(SharedPtr<Y> const & r)
00967 {
00968 return operator=<Y>(SharedPtr<Y>(r));
00969 }
00970
00971 TLockProxy operator-> () const
00972 {
00973 return TLockProxy(this->get());
00974 }
00975
00976 protected:
00977 operator const TWrapper& () const;
00978
00979 operator TWrapper& ();
00980
00981 TWrapper& operator* () const;
00982
00983 TWrapper * get() const
00984 {
00985 return boost::shared_ptr<TWrapper>::get();
00986 }
00987 };
00988
00989
00990 typedef SharedPtr<TWrapper> PWrapper;
00991 }
00992
00993 #endif