1 // Created on: 2004-11-23
2 // Created by: Andrey BETENEV
3 // Copyright (c) 2004-2014 OPEN CASCADE SAS
5 // This file is part of Open CASCADE Technology software library.
7 // This library is free software; you can redistribute it and/or modify it under
8 // the terms of the GNU Lesser General Public License version 2.1 as published
9 // by the Free Software Foundation, with special exception defined in the file
10 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
11 // distribution for complete text of the license and disclaimer of any warranty.
13 // Alternatively, this file may be used under the terms of Open CASCADE
14 // commercial license or contractual agreement.
16 // The original implementation Copyright: (C) RINA S.p.A
18 #include <TObj_Persistence.hxx>
19 #include <TObj_Object.hxx>
21 //=======================================================================
22 //function : getMapOfTypes
23 //purpose : Returns the map of types
24 //=======================================================================
26 TObj_DataMapOfStringPointer& TObj_Persistence::getMapOfTypes ()
28 static TObj_DataMapOfStringPointer myMapOfTypes;
32 //=======================================================================
33 //function : Constructor
34 //purpose : Register the type for persistence
35 //=======================================================================
37 TObj_Persistence::TObj_Persistence (const Standard_CString theType)
40 getMapOfTypes().Bind ( theType, this );
43 //=======================================================================
44 //function : Destructor
45 //purpose : Unregister the type
46 //=======================================================================
48 TObj_Persistence::~TObj_Persistence ()
50 getMapOfTypes().UnBind ( myType );
53 //=======================================================================
54 //function : CreateNewObject
56 //=======================================================================
58 Handle(TObj_Object) TObj_Persistence::CreateNewObject (const Standard_CString theType,
59 const TDF_Label& theLabel)
61 if ( getMapOfTypes().IsBound ( theType ) )
63 TObj_Persistence *tool =
64 (TObj_Persistence*) getMapOfTypes().Find ( theType );
65 if ( tool ) return tool->New (theLabel);
70 //=======================================================================
71 //function : DumpTypes
73 //=======================================================================
75 void TObj_Persistence::DumpTypes (Standard_OStream &theOs)
77 TObj_DataMapOfStringPointer::Iterator it ( getMapOfTypes() );
78 for ( ; it.More(); it.Next() )
80 theOs << it.Key() << endl;