fixed: auto_ptr -> unique_ptr
[opensg.git] / Source / System / FileIO / Collada / OSGColladaHandlerFactory.cpp
blob12f7f83379bf75d6bacab4f2e0b8c5bddcbcd270
1 /*---------------------------------------------------------------------------*\
2 * OpenSG *
3 * *
4 * *
5 * Copyright (C) 2009 by the OpenSG Forum *
6 * *
7 * www.opensg.org *
8 * *
9 * contact: dirk@opensg.org, gerrit.voss@vossg.org, jbehr@zgdv.de *
10 * *
11 \*---------------------------------------------------------------------------*/
12 /*---------------------------------------------------------------------------*\
13 * License *
14 * *
15 * This library is free software; you can redistribute it and/or modify it *
16 * under the terms of the GNU Library General Public License as published *
17 * by the Free Software Foundation, version 2. *
18 * *
19 * This library is distributed in the hope that it will be useful, but *
20 * WITHOUT ANY WARRANTY; without even the implied warranty of *
21 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
22 * Library General Public License for more details. *
23 * *
24 * You should have received a copy of the GNU Library General Public *
25 * License along with this library; if not, write to the Free Software *
26 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *
27 * *
28 \*---------------------------------------------------------------------------*/
29 /*---------------------------------------------------------------------------*\
30 * Changes *
31 * *
32 * *
33 * *
34 * *
35 * *
36 * *
37 \*---------------------------------------------------------------------------*/
39 #if __GNUC__ >= 4 || __GNUC_MINOR__ >=3
40 #pragma GCC diagnostic ignored "-Wold-style-cast"
41 #endif
43 #include "OSGColladaHandlerFactory.h"
45 #if defined(OSG_WITH_COLLADA) || defined(OSG_DO_DOC)
47 #include "OSGBaseInitFunctions.h"
48 #include "OSGColladaLog.h"
49 #include "OSGColladaGlobal.h"
50 #include "OSGSingletonHolder.ins"
52 #include "OSGColladaExtraHandler.h"
53 #include "OSGColladaDomProfileHandler.h"
55 OSG_BEGIN_NAMESPACE
57 #if !defined(OSG_DO_DOC)
58 OSG_SINGLETON_INST(OSG::ColladaHandlerFactoryBase, addPostFactoryExitFunction)
59 #endif
61 template class SingletonHolder<OSG::ColladaHandlerFactoryBase>;
63 void ColladaHandlerFactoryBase::registerExtraHandler(
64 ExtraHandlerCreator fCreator)
66 _vExtraHandlerCreators.push_back(fCreator);
69 void ColladaHandlerFactoryBase::createExtraHandlers(
70 ExtraHandlerStore &vStore)
72 vStore.clear();
74 for(UInt32 i = 0; i < _vExtraHandlerCreators.size(); ++i)
75 vStore.push_back(_vExtraHandlerCreators[i]());
79 void ColladaHandlerFactoryBase::registerDomProfileHandler(
80 UInt32 uiProfileId,
81 DomProfileHandlerCreator fCreator )
83 DomProfileHandlerMapIt hIt = _mDomProfileCreators.find(uiProfileId);
85 if(hIt != _mDomProfileCreators.end())
87 SWARNING << "ColladaBaseFactoryBase::registerDomProfileHandler: "
88 << "profileId [" << uiProfileId << "] already registered."
89 << std::endl;
91 else
93 _mDomProfileCreators.insert(
94 hIt,
95 DomProfileHandlerMap::value_type(uiProfileId,
96 fCreator ));
100 ColladaHandlerFactoryBase::ColladaDomProfileHandlerTPtr
101 ColladaHandlerFactoryBase::createDomProfileHandler(UInt32 uiProfileId)
103 ColladaDomProfileHandlerTPtr returnValue(NULL);
105 DomProfileHandlerMapIt hIt = _mDomProfileCreators.find(uiProfileId);
107 if(hIt != _mDomProfileCreators.end())
109 returnValue = (*hIt).second();
112 return returnValue;
115 ColladaHandlerFactoryBase::ColladaHandlerFactoryBase(void) :
116 _mDomProfileCreators (),
117 _vExtraHandlerCreators()
121 ColladaHandlerFactoryBase::~ColladaHandlerFactoryBase(void)
125 OSG_END_NAMESPACE
127 #endif // OSG_WITH_COLLADA