public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/18829] New: Error signale on an unexisting line
@ 2004-12-04 14:03 federicotomassetti at yahoo dot it
  2004-12-04 14:08 ` [Bug c++/18829] " pinskia at gcc dot gnu dot org
                   ` (5 more replies)
  0 siblings, 6 replies; 7+ messages in thread
From: federicotomassetti at yahoo dot it @ 2004-12-04 14:03 UTC (permalink / raw)
  To: gcc-bugs

Gcc speaks about an error at line 438 on a file that have only 22x lines... 

Report:
gcc-output,
incriminated source file

In file included from surface.hpp:28,
                 from types.hpp:29,
                 from scene.hpp:28,
                 from scene_intro.hpp:31,
                 from scene_intro.cpp:26:
connecter.hpp:43: warning: `sigc::signal<T_return, T_arg1, T_arg2, T_arg3,
   T_arg4, T_arg5, T_arg6, T_arg7>::slot_type' is implicitly a typename
connecter.hpp:43: warning: implicit typename is deprecated, please see the
   documentation for details
/usr/include/sigc++-2.0/sigc++/adaptors/adaptor_trait.h: In member function `
   typename sigc::functor_trait<T_functor,
   sigc::is_base_and_derived<sigc::functor_base,
   T_functor>::value>::result_type
   sigc::adaptor_functor<T_functor>::operator()() const [with T_functor =
   sigc::bound_mem_functor1<void, IntroScene, bool>]':
/usr/include/sigc++-2.0/sigc++/functors/slot.h:89:   instantiated from `static
T_return
sigc::internal::slot_call0<T_functor,T_return>::call_it(sigc::internal::slot_rep*)
[with T_functor = sigc::bound_mem_functor1<void, IntroScene, bool>, T_return =
void]'
/usr/include/sigc++-2.0/sigc++/functors/slot.h:96:   instantiated from `static
void*(* sigc::internal::slot_call0<T_functor, T_return>::address())(void*) [with
T_functor = sigc::bound_mem_functor1<void, IntroScene, bool>, T_return = void]'

[LOOK HERE]


scene_intro.cpp:438:   instantiated from here

[LOOK HERE]

/usr/include/sigc++-2.0/sigc++/adaptors/adaptor_trait.h:251: error: no match
   for call to `(sigc::bound_mem_functor1<void, IntroScene, bool>) ()'
/usr/include/sigc++-2.0/sigc++/functors/mem_fun.h:1838: error: candidates are:
   T_return sigc::bound_mem_functor1<T_return, T_obj,
   T_arg1>::operator()(typename sigc::type_trait<T_arg3>::take) const [with
   T_return = void, T_obj = IntroScene, T_arg1 = bool]
/usr/include/sigc++-2.0/sigc++/adaptors/adaptor_trait.h:251: error: return-statement
   with a value, in function declared with a void return type

cc -c -o scene_intro.o `sdl-config --cflags` `pkg-config sigc++-2.0
--cflags`-I../SDL_Flic/ -I/usr/local/include/ -O   scene_intro.cpp


Then come the file scene_intro.cpp:

/***************************************************************************
 *                                                                         *
 *   This file is part of the Domini Terrae project                        *
 *                                                                         *
 *   Copyright (C) 2004 by Federico Tomassetti                             *
 *   federicotomassetti@yahoo.it                                           *
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *
 *   This program is distributed in the hope that it will be useful,       *
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 *   GNU General Public License for more details.                          *
 *                                                                         *
 *   You should have received a copy of the GNU General Public License     *
 *   along with this program; if not, write to the                         *
 *   Free Software Foundation, Inc.,                                       *
 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
 ***************************************************************************/

#include <cmath>
#include <SDL_image.h>
#include "scene_intro.hpp"
#include "scene_play.hpp"
#include "sdlutil.hpp"
#include "sdlttfutil.hpp"
#include "strutil.hpp"
#include "debug.hpp"
#include "global.hpp"
#include "datafinder.hpp"
#include "app.hpp"
#include "game.hpp"
#include "exit_codes.hpp"
#include "blink.hpp"

#include <iostream>
using namespace std;

static const int line_gap = 40;

IntroScene::IntroScene( unsigned int num_actions,
		const boost::signal<std::string ( unsigned int )>::slot_type& slot_get_text,
		const boost::signal<bool ( unsigned int )>::slot_type& slot_do_action,
		const boost::signal<void ()>::slot_type& slot_all_done )
try	: to_update_( true ), background_( NULL ),
		font_( NULL ), blinking_text_( NULL ), blink_( NULL ),
		done_( false ), completed_actions_( 0 ), num_actions_( num_actions ),
		img_done_( NULL )
{
	sig_need_text_.connect( slot_get_text );
	sig_do_action_.connect( slot_do_action );
	sig_all_done_.connect( slot_all_done );

	// load the background

	background_ = IMGCK_Load( Glob::datafinder()->find( "intro_background" ) );
	
	SDL_Color color = color_create( 0x10, 0x15, 0xb5 );
	
	// blit lines & semi transparent texts on background
	
	SDL_Surface * img_line = IMGCK_Load( Glob::datafinder()->find( "intro_line" ) );
	font_ = TTFCK_OpenFont( Glob::datafinder()->find( "intro_font"), 20 );	
	for ( int i=0;i<num_actions_;i++ ) {
	
		// blit the line
	
		SDL_Rect dstrect_line = rect_create( 230, 200 + (line_gap*i),
				0, 0 );
		SDLCK_BlitSurface( img_line, NULL, background_, &dstrect_line );
		
		// obtain the string
		
		string text = sig_need_text_( i );
		
		// render the string
		
		SDL_Surface * rendered = TTFCK_RenderText_Blended( font_, text.c_str(), color );
		
		// save it as opaque
		
		opaque_texts_.push_back( rendered );
		
		// copy & alphize it
		
		SDL_Surface * alphized = surface_copy( rendered );
		if ( !surface_alphize( alphized, 90 ) ) {
			App::prog_warning( "Text not alphized" );
		}
		
		// blit it alphized
		
		SDL_Rect dstrect_text = rect_create( 240, 215 + (line_gap*i),
				0, 0 );
		SDLCK_BlitSurface( alphized, NULL, background_, &dstrect_text );
		
		SDL_FreeSurface( alphized );
	}
	SDL_FreeSurface( img_line );
	
	img_done_ = IMGCK_Load( Glob::datafinder()->find( "intro_done" ) );
	
	blinking_text_ = new Surface( TTFCK_RenderText_Blended( font_, 
			"press any key to start the game",
			color_create( 0xff, 0, 0 ) ) );
	
} catch ( const SDL_Failure& ex ) {
	App::debug_info( "SDL_Failure creating IntroScene" );
	throw;
}

IntroScene::~IntroScene()
{
	if ( blinking_text_ ) delete blinking_text_;
	if ( blink_ ) delete blink_;
	if ( img_done_ ) SDL_FreeSurface( img_done_ );
	if ( font_ ) TTF_CloseFont( font_ );
	if ( background_ ) SDL_FreeSurface( background_ );
}

void IntroScene::key_pressed( SDLKey key )
{
	static bool done_sent = false;
	if ( done_ && !done_sent ) {
		sig_all_done_();
		done_sent = true;
	}
}

void IntroScene::mouse_pressed( Uint8 button, uint mouse_x, uint mouse_y )
{
}

void IntroScene::mouse_released( Uint8 button, uint mouse_x, uint mouse_y )
{
}

void IntroScene::mouse_moved( uint mouse_x, uint mouse_y )
{
}

void IntroScene::key_released( SDLKey )
{
}

RectsVector IntroScene::update()
try {
	RectsVector rects;
	
	// if we don't need to update, nothing to do
	
	if ( !to_update_ ) return rects;
	IAMHERE;
	SDL_Surface * fb = Video::inst()->get_framebuffer();
	IAMHERE;
	SDLCK_BlitSurface( background_, NULL, fb, NULL );
	IAMHERE;
	rects.push_back( rect_create( 0, 0, fb->w, fb->h ) );
	IAMHERE;
	to_update_ = false;
	return rects;
} catch ( const SDL_Failure& ex ) {
	App::comunicate_error( string( "IntroScene::update(): An SDL function failed: " )
			+ ex.function_ + string( " error: " ) + ex.error_ );
}

void IntroScene::act()
try {

	if ( completed_actions_ < num_actions_ ) {
		SDL_Surface * fb = Video::inst()->get_framebuffer();
			
		SDL_Rect dstrect_text = rect_create( 240, 215 + (line_gap*completed_actions_), 
				0, 0 );
		SDL_Rect dstrect_done = rect_create( 500, 200 + (line_gap*completed_actions_), 
				0, 0 );
		
		// blit opaque text
		
		SDLCK_BlitSurface( opaque_texts_[ completed_actions_ ], NULL, fb, &dstrect_text );
		SDL_FreeSurface( opaque_texts_[ completed_actions_ ] );
		
		sig_do_action_( completed_actions_ );
		
		// blit done img
		
		SDLCK_BlitSurface( img_done_, NULL, fb, &dstrect_done );
	
		completed_actions_++;
	} else if ( completed_actions_== num_actions_ ) {
	
		// start blink
	
		SDL_Color color = color_create( 0xD0, 0x35, 0x35 );	
		blinking_text_ = new Surface( TTFCK_RenderText_Blended( font_, "Press a key to
continue",
				color ) );
		
		blink_ = new Blink( blinking_text_, 400 );
		SDL_Rect saved_rect = rect_create( 400 - (blinking_text_->get()->w/2), 450,
				400 + (blinking_text_->get()->w/2), blinking_text_->get()->h );
		saved_.save( background_, &saved_rect );
		sigc::slot<void> slot = sigc::mem_fun( this, &IntroScene::slot_blink );
		blink_->conn_changed_.connect( slot );
		
		// set done flag
		
		done_ = true;
	}
} catch ( const SDL_Failure& ex ) {
	App::comunicate_error( string( "IntroScene::act(): An SDL function failed: " )
			+ ex.function_ + string( " error: " ) + ex.error_ );
} 

void IntroScene::slot_blink( bool blitted )
{
	SDL_Rect rect = rect_create( 400 - (blinking_text_->get()->w/2), 450,
			400 + (blinking_text_->get()->w/2), blinking_text_->get()->h );
	if ( blitted ) {
		SDLCK_BlitSurface( background_, &rect, blinking_text_->get(), NULL );
	} else {
		saved_.restore( background_, &rect );
	}
	to_update_ = true;
}

-- 
           Summary: Error signale on an unexisting line
           Product: gcc
           Version: 3.3.4
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: c++
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: federicotomassetti at yahoo dot it
                CC: gcc-bugs at gcc dot gnu dot org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18829


^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2004-12-17 12:55 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-12-04 14:03 [Bug c++/18829] New: Error signale on an unexisting line federicotomassetti at yahoo dot it
2004-12-04 14:08 ` [Bug c++/18829] " pinskia at gcc dot gnu dot org
2004-12-06  5:15 ` pinskia at gcc dot gnu dot org
2004-12-06 17:50 ` federicotomassetti at yahoo dot it
2004-12-06 21:42 ` pinskia at gcc dot gnu dot org
2004-12-16 18:31 ` federicotomassetti at yahoo dot it
2004-12-17 12:55 ` pinskia at gcc dot gnu dot org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).