1 // Created on: 2004-11-23
2 // Created by: Andrey BETENEV
3 // Copyright (c) 2004-2012 OPEN CASCADE SAS
5 // The content of this file is subject to the Open CASCADE Technology Public
6 // License Version 6.5 (the "License"). You may not use the content of this file
7 // except in compliance with the License. Please obtain a copy of the License
8 // at http://www.opencascade.org and read it completely before using this file.
10 // The Initial Developer of the Original Code is Open CASCADE S.A.S., having its
11 // main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France.
13 // The Original Code and all software distributed under the License is
14 // distributed on an "AS IS" basis, without warranty of any kind, and the
15 // Initial Developer hereby disclaims all such warranties, including without
16 // limitation, any warranties of merchantability, fitness for a particular
17 // purpose or non-infringement. Please see the License for the specific terms
18 // and conditions governing the rights and limitations under the License.
20 // The original implementation Copyright: (C) RINA S.p.A
22 #include <TObj_Persistence.hxx>
23 #include <TObj_Object.hxx>
25 //=======================================================================
26 //function : getMapOfTypes
27 //purpose : Returns the map of types
28 //=======================================================================
30 TObj_DataMapOfStringPointer& TObj_Persistence::getMapOfTypes ()
32 static TObj_DataMapOfStringPointer myMapOfTypes;
36 //=======================================================================
37 //function : Constructor
38 //purpose : Register the type for persistence
39 //=======================================================================
41 TObj_Persistence::TObj_Persistence (const Standard_CString theType)
44 getMapOfTypes().Bind ( theType, this );
47 //=======================================================================
48 //function : Destructor
49 //purpose : Unregister the type
50 //=======================================================================
52 TObj_Persistence::~TObj_Persistence ()
54 getMapOfTypes().UnBind ( myType );
57 //=======================================================================
58 //function : CreateNewObject
60 //=======================================================================
62 Handle(TObj_Object) TObj_Persistence::CreateNewObject (const Standard_CString theType,
63 const TDF_Label& theLabel)
65 if ( getMapOfTypes().IsBound ( theType ) )
67 TObj_Persistence *tool =
68 (TObj_Persistence*) getMapOfTypes().Find ( theType );
69 if ( tool ) return tool->New (theLabel);
74 //=======================================================================
75 //function : DumpTypes
77 //=======================================================================
79 void TObj_Persistence::DumpTypes (Standard_OStream &theOs)
81 TObj_DataMapOfStringPointer::Iterator it ( getMapOfTypes() );
82 for ( ; it.More(); it.Next() )
84 theOs << it.Key() << endl;