1 /*---------------------------------------------------------------------------*\
5 * Copyright (C) 2009 by the OpenSG Forum *
9 * contact: dirk@opensg.org, gerrit.voss@vossg.org, jbehr@zgdv.de *
11 \*---------------------------------------------------------------------------*/
12 /*---------------------------------------------------------------------------*\
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. *
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. *
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. *
28 \*---------------------------------------------------------------------------*/
29 /*---------------------------------------------------------------------------*\
37 \*---------------------------------------------------------------------------*/
39 #if __GNUC__ >= 4 || __GNUC_MINOR__ >=3
40 #pragma GCC diagnostic ignored "-Wold-style-cast"
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"
57 #if !defined(OSG_DO_DOC)
58 OSG_SINGLETON_INST(OSG::ColladaHandlerFactoryBase
, addPostFactoryExitFunction
)
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
)
74 for(UInt32 i
= 0; i
< _vExtraHandlerCreators
.size(); ++i
)
75 vStore
.push_back(_vExtraHandlerCreators
[i
]());
79 void ColladaHandlerFactoryBase::registerDomProfileHandler(
81 DomProfileHandlerCreator fCreator
)
83 DomProfileHandlerMapIt hIt
= _mDomProfileCreators
.find(uiProfileId
);
85 if(hIt
!= _mDomProfileCreators
.end())
87 SWARNING
<< "ColladaBaseFactoryBase::registerDomProfileHandler: "
88 << "profileId [" << uiProfileId
<< "] already registered."
93 _mDomProfileCreators
.insert(
95 DomProfileHandlerMap::value_type(uiProfileId
,
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();
115 ColladaHandlerFactoryBase::ColladaHandlerFactoryBase(void) :
116 _mDomProfileCreators (),
117 _vExtraHandlerCreators()
121 ColladaHandlerFactoryBase::~ColladaHandlerFactoryBase(void)
127 #endif // OSG_WITH_COLLADA