Back to index

salome-med  6.5.0
MED_Wrapper.hxx
Go to the documentation of this file.
00001 // Copyright (C) 2007-2012  CEA/DEN, EDF R&D, OPEN CASCADE
00002 //
00003 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
00004 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
00005 //
00006 // This library is free software; you can redistribute it and/or
00007 // modify it under the terms of the GNU Lesser General Public
00008 // License as published by the Free Software Foundation; either
00009 // version 2.1 of the License.
00010 //
00011 // This library is distributed in the hope that it will be useful,
00012 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00013 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00014 // Lesser General Public License for more details.
00015 //
00016 // You should have received a copy of the GNU Lesser General Public
00017 // License along with this library; if not, write to the Free Software
00018 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
00019 //
00020 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
00021 //
00022 
00023 //  File   : 
00024 //  Author : 
00025 //  Module : 
00026 //  $Header: /home/server/cvs/MED/MED_SRC/src/MEDWrapper/Base/MED_Wrapper.hxx,v 1.7.2.1.6.3.10.1 2012-04-13 08:48:43 vsr Exp $
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     // Backward compatibility  declarations
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) // Y must be complete
00960     {
00961       return operator=<Y>(SharedPtr<Y>(p));
00962     }
00963 
00964     template<class Y> 
00965     SharedPtr& 
00966     operator()(SharedPtr<Y> const & r) // Y must be complete
00967     {
00968       return operator=<Y>(SharedPtr<Y>(r));
00969     }
00970 
00971     TLockProxy operator-> () const // never throws
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 // never throws
00984     {
00985       return boost::shared_ptr<TWrapper>::get();
00986     }
00987   };
00988 
00989   //----------------------------------------------------------------------------
00990   typedef SharedPtr<TWrapper> PWrapper;
00991 }
00992 
00993 #endif