I doubt that it's possible to have a signal that returns a reference. Is
this new code, or has it ever been possible to compile it? The compiler
claims that the error is in slot.h line 516. It's this line, isn't it?
return T_return();
with T_return = WebKit::WebView&. If T_return were WebKit::WebView*,
T_return() would be 0. If T_return were WebKit::WebView, T_return()
would be a call to WebView's default constructor.
I searched through glibmm and gtkmm. There is not a single example of a
_WRAP_SIGNAL wrapping a signal that returns a reference. A few signals
return either a plain pointer or a Glib::RefPtr.
Kjell
2013-03-18 05:54, Gavin Lambert skrev:
Hi Dannick,
These sorts of errors typically mean that there is some disagreement
on the number or types of parameters between the C signal and its C++
wrapper (in this case "inspect_web_view" on WebKitWebInspector), or in
your parameter conversion definitions. Check the definition of this
signal in the actual WebKit-GTK C code, in the .defs files (I assume
that you have regenerated these as needed), and in your .hg and .ccg
files.
Regards,
Gavin Lambert
*From:*gtkmm-list [mailto:gtkmm-list-boun...@gnome.org] *On Behalf Of
*Dannick Pomerleau
*Sent:* Monday, 18 March 2013 17:12
*To:* Kjell Ahlstedt
*Cc:* Gtkmm
*Subject:* Re: Error compiling webkitmm
On 03/11/2013 03:41 AM, Kjell Ahlstedt wrote:
2013-03-11 05:57, Dannick Pomerleau skrev:
The error is comming from this function.
inline T_return operator()(arg1_type_ _A_a1) const
{
if (!empty() && !blocked())
return
(reinterpret_cast<call_type>(slot_base::rep_->call_))(slot_base::rep_,
_A_a1);
return T_return();
}
/home/dannick/Documents/programming/webkitmm/mainline/webkit/webkitmm/webinspector.cc:249:1:
required from here
/usr/include/sigc++-2.0/sigc++/functors/slot.h:516:23: error:
value-initialization of reference type 'WebKit::WebView&'
Compilation error messages from libsigc++'s many C++ template
functions and template classes can be very difficult to interpret.
The compiler says the error is in slot.h, but don't take that for
granted. It can be somewhere else. To start with, it's interesting
to know what's in webinspector.cc, around line 249.
Kjell
Sorry I did not get back sooner here is the function from
webinspector.cc at around line 249. It starts at 235.
static WebKitWebView*
WebInspector_signal_inspect_web_view_callback(WebKitWebInspector*
self, WebKitWebView* p0,void* data)
{
using namespace WebKit;
typedef sigc::slot< WebView&,WebView& > SlotType;
// Do not try to call a signal on a disassociated wrapper.
if(Glib::ObjectBase::_get_current_wrapper((GObject*) self))
{
#ifdef GLIBMM_EXCEPTIONS_ENABLED
try
{
#endif //GLIBMM_EXCEPTIONS_ENABLED
if(sigc::slot_base *const slot =
Glib::SignalProxyNormal::data_to_slot(data))
return ((*static_cast<SlotType*>(slot))(*Glib::wrap(p0)
)).gobj();
#ifdef GLIBMM_EXCEPTIONS_ENABLED
}
catch(...)
{
Glib::exception_handlers_invoke();
}
#endif //GLIBMM_EXCEPTIONS_ENABLED
}
typedef WebKitWebView* RType;
return RType();
}
Here is a link to the github repository I created with the changes I
have made until now.
_______________________________________________
gtkmm-list mailing list
gtkmm-list@gnome.org
https://mail.gnome.org/mailman/listinfo/gtkmm-list