0030520: VIS - IVtkTools_ShapePicker::GetPickPosition() returns incorrect point
[occt.git] / src / TObj / TObj_Persistence.cxx
1 // Created on: 2004-11-23
2 // Created by: Andrey BETENEV
3 // Copyright (c) 2004-2014 OPEN CASCADE SAS
4 //
5 // This file is part of Open CASCADE Technology software library.
6 //
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.
12 //
13 // Alternatively, this file may be used under the terms of Open CASCADE
14 // commercial license or contractual agreement.
15
16 // The original implementation Copyright: (C) RINA S.p.A
17
18 #include <TObj_Persistence.hxx>
19 #include <TObj_Object.hxx>
20
21 //=======================================================================
22 //function : getMapOfTypes
23 //purpose  : Returns the map of types
24 //=======================================================================
25
26 TObj_DataMapOfStringPointer& TObj_Persistence::getMapOfTypes ()
27 {
28   static TObj_DataMapOfStringPointer myMapOfTypes;
29   return myMapOfTypes;
30 }
31
32 //=======================================================================
33 //function : Constructor
34 //purpose  : Register the type for persistence
35 //=======================================================================
36
37 TObj_Persistence::TObj_Persistence (const Standard_CString theType)
38 {
39   myType = theType;
40   getMapOfTypes().Bind ( theType, this );
41 }
42
43 //=======================================================================
44 //function : Destructor
45 //purpose  : Unregister the type
46 //=======================================================================
47
48 TObj_Persistence::~TObj_Persistence ()
49 {
50   getMapOfTypes().UnBind ( myType );
51 }
52
53 //=======================================================================
54 //function : CreateNewObject
55 //purpose  :
56 //=======================================================================
57
58 Handle(TObj_Object) TObj_Persistence::CreateNewObject (const Standard_CString theType,
59                                                                const TDF_Label& theLabel)
60 {
61   if ( getMapOfTypes().IsBound ( theType ) )
62   {
63     TObj_Persistence *tool =
64       (TObj_Persistence*) getMapOfTypes().Find ( theType );
65     if ( tool ) return tool->New (theLabel);
66   }
67   return 0;
68 }
69
70 //=======================================================================
71 //function : DumpTypes
72 //purpose  :
73 //=======================================================================
74
75 void TObj_Persistence::DumpTypes (Standard_OStream &theOs)
76 {
77   TObj_DataMapOfStringPointer::Iterator it ( getMapOfTypes() );
78   for ( ; it.More(); it.Next() )
79   {
80     theOs << it.Key() << endl;
81   }
82 }