On Tue, Mar 11, 2003 at 12:42:26AM +0100, Marcelo E. Magallon wrote:
> On Mon, Mar 10, 2003 at 10:23:07PM +0000, Jos� Fonseca wrote:
>
> > struct function_table {
> > ...
> > void (*BlendFunc)(GLcontext *ctx, GLenum sfactor, GLenum dfactor);
> > ...
> > } driver;
> >
> > and
> >
> > class Context {
> > ...
> > void BlendFunc(GLenum sfactor, GLenum dfactor);
> > ...
> > } ;
> >
> > You can't simply do
> >
> > driver.BlendFunc = Context::BlendFunc;
>
> No, you can't do that. The problem is not the rhs as you seem to think
> but the lhs. The rhs needs to be &Context::BlendFunc. What type does
> that have? void (Context::*BlendFunc)(GLcontext *ctx, ...)
I know that sintatically that isn't allowed, but with a cast, and an
appropriate ABI, may it could, but it would be very bad practice and
we'd regret later.
> > As I said above this can be done in C++, and without damage to
> > efficiency.
>
> I doubt that. (JFTR, if I'm given the choice of programming in C++ or
> C, I'll pick C++. I'm really not being a C zealot)
>
> > class TNL {
> > // A OpenGL function
> > virtual void Coord3f(GLfloat x, GLfloat y, GLfloat z) = 0;
>
> ^^^^^^^
> pure virtual method. Depending on what you want to do with this,
> this will incur in a function call overhead, inline or not.
See
http://www.parashift.com/c++-faq-lite/value-vs-ref-semantics.html#faq-31.6
. It will incur in a function call overhead only if it's a
pointer/reference to an abstract class. If using a template for the
callback function then that won't happen. Of course that this behavior
is compiler dependent and has to be checked in gcc.
Jos� Fonseca
__________________________________________________
Do You Yahoo!?
Everything you'll ever need on one web page
from News and Sport to Email and Music Charts
http://uk.my.yahoo.com
-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel