#include #include #include #include // ------------------------------------------------------------------------- std::string GetFileName( const std::string& path ) { // Extract filename char* buffer = new char[ path.size( ) + 1 ]; std::memcpy( buffer, path.c_str( ), path.size( ) ); buffer[ path.size( ) ] = '\0'; char* tok = std::strtok( buffer, "/\\" ); char* ptr_fname = tok; while( tok != NULL ) { ptr_fname = tok; tok = std::strtok( NULL, "/\\" ); } // elihw std::string fname( ptr_fname ); delete [] buffer; // Delete extension std::size_t pos = fname.find_last_of( "." ); if( pos != std::string::npos ) fname = fname.substr( 0, pos ); return( fname ); } // ------------------------------------------------------------------------- int main( int argc, char* argv[] ) { // Open file if( argc < 4 ) { std::cerr << "Usage: " << argv[ 0 ] << " output_code namespace filter1 filter2 ..." << std::endl; return( 1 ); } // fi std::ofstream output_code( argv[ 1 ] ); if( !output_code ) { std::cerr << "Could not open file \"" << argv[ 1 ] << "\" for writing" << std::endl; return( 1 ); } // fi output_code << "#include " << std::endl; for( int i = 3; i < argc; ++i ) output_code << "#include \"" << argv[ i ] << "\"" << std::endl; output_code << std::endl << "PLUMA_CONNECTOR" << std::endl << "bool connect( pluma::Host& host )" << std::endl << "{" << std::endl << " using namespace " << argv[ 2 ] << ";" << std::endl; for( int i = 3; i < argc; ++i ) output_code << " host.add( new " << GetFileName( argv[ i ] ) << "Provider( ) );" << std::endl; output_code << " return( true );" << std::endl << "}" << std::endl; // Finish output_code.close( ); return( 0 ); } // eof - $RCSfile$