- data
- << " " << prefix
- << "if( dynamic_cast< " << *iIt << "* >( o ) != NULL ) \\"
- << std::endl
- << " this->f( a dynamic_cast< " << *iIt << "* >( o ) ); \\"
- << std::endl;
- prefix = "else ";
+ if( toks.size( ) > 1 )
+ {
+ data
+ << "#define cpPlugins_Demangle_" << object_name << "_"
+ << toks[ 0 ] << "_" << nIns << "( o, f";
+ for( unsigned int i = 1; i < toks.size( ); ++i )
+ data << ", " << toks[ i ];
+ }
+ else
+ data
+ << "#define cpPlugins_Demangle_" << object_name << "_"
+ << toks[ 0 ] << "_" << nIns << "( o, f";
+
+ for( unsigned int i = 1; i < nIns; ++i )
+ data << ", X" << i;
+ data << " ) \\";
+
+ data << std::endl;
+ std::string prefix = "";
+ for( auto iIt = instances.begin( ); iIt != instances.end( ); ++iIt )
+ {
+ data
+ << " " << prefix
+ << "if( dynamic_cast< " << *iIt << "* >( o ) != NULL ) \\"
+ << std::endl
+ << " this->f( dynamic_cast< " << *iIt << "* >( o )";
+
+ for( unsigned int i = 1; i < nIns; ++i )
+ data << ", X" << i;
+ data
+ << " ); \\"
+ << std::endl;
+ prefix = "else ";
+
+ } // rof
+ data << " " << prefix << std::endl << std::endl;