00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #include "torc/generic/om/Cloning.hpp"
00017
00018 namespace torc {
00019
00020 namespace generic {
00021
00022 void
00023 copyParams( const Instance &inOriginal,
00024 const InstanceSharedPtr &outCloned,
00025 const ObjectFactorySharedPtr &inFactory ) {
00026
00027 ParameterMapSharedPtr params = inOriginal.getParameters();
00028 ParameterMapSharedPtr clonedParams = outCloned->getParameters();
00029 ParameterContext origContext = inOriginal.getParameterContext();
00030 ParameterContext clonedContext
00031 = outCloned->getParameterContext();
00032 std::map< std::string, ParameterSharedPtr> overriddenParams;
00033 params->getOverriddenParameters( origContext, overriddenParams );
00034 for( std::map< std::string, ParameterSharedPtr>::iterator
00035 it = overriddenParams.begin();
00036 it != overriddenParams.end(); ++it )
00037 {
00038 ParameterSharedPtr clonedParam
00039 = clone( (*it).second, inFactory );
00040 clonedParams->set(
00041 clonedContext, (*it).first, clonedParam );
00042 }
00043 }
00044
00045 }
00046
00047 }