On Wed, Mar 05, 2003 at 10:04:40AM -0800, Ian Romanick wrote:
> Philip Brown wrote:
> > Are you saying that C++ somehow allows for more code sharing between
> > drivers than straight ANSI C?
>
> It's not so much that it allows it as it makes it less painful. Look at
> the texmem-0-0-1 branch. In lib/GL/mesa/src/drv/common/texmem.h there
> is a structure called driTextureObject. In
> lib/GL/mesa/src/drv/radeon/radeon_context.h there is a structure called
> radeon_tex_obj that has a driTextureObject as it's first element.
> Basically, I'm using inheritance here. The problem is that everywhere I
> want to use something from the base "class" I have to say
> "tObj->base.foo". There's also no easy way to over-ride functions from
> the base.
>..
> There are a number of structures, like the *_context structures, where
> we could do this. It's possible to do in C, but in C++ it's less
> syntactically painful.
Given the abundance of macros already in use in dri, I would think you
would just define a macro for that sort of stuff ;-)
Also, rather than containing the struct, you could do what is done already
in the drm level, with drm_map_t vs drm_local_map_t (and all over the X
server code), and just extend the struct, rather than encapsulating it. So
[quick-n-dirty illustration for discussion purposes]
struct dritexture{
int baseval;
};
struct radeontexture {
int baseval;
int radeonextraval;
};
Also, since functions are not part of "the object", I dont see where
"overriding functions" comes into play. If you dont want to use a "base"
function, you just call a radeon-specific one?
-------------------------------------------------------
This SF.net email is sponsored by: Etnus, makers of TotalView, The debugger
for complex code. Debugging C/C++ programs can leave you feeling lost and
disoriented. TotalView can help you find your way. Available on major UNIX
and Linux platforms. Try it free. www.etnus.com
_______________________________________________
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel