Re: [AD] 2 errors encountered in current CVS

[ Thread Index | Date Index | More lists.liballeg.org/allegro-developers Archives ]


> On 08 Sep 2001, Javier González <xaviergonz@xxxxxxxxxx> wrote:
> > Geez, guess __forceinline was not available in MSVC 5 then
> >
> > Hey Peter, I am wondering, could I ask what's so wrong between clear
with vs
> > standard inlined one
> > Ok, maybe standard inline doesn't get inlined in debug mode, but (if
that's
> > all) what's so
> > wrong with it? After all debug mode isn't designed to be fast.
>
> The whole point of changing `clear' to `clear_bitmap' was to remove
> the conflict with the curses library (which also has a function
> called `clear').  If our `clear' doesn't get inlined, then link
> problems will occur if you try and use Allegro and curses together.
>
> Some people must have thought we were renaming `clear' just for fun.
>
>
> Hmm, maybe "static inline" would have been better.  Let's see:
>
> In one of our headers, we have:
>
>    #ifndef ALLEGRO_NO_CLEAR_BITMAP_ALIAS
>
>    static inline void clear(BITMAP *bmp)
>    {
>       clear_bitmap(bmp);
>    }
>
>    /* for compilers without inline ability: */
>
>    static void clear(BITMAP *bmp)
>    {
>       clear_bitmap(bmp);
>    }
>
>    /* for compilers without inline ability, and causes warnings for
>     * unused static functions: */
>    #define clear(bmp) ((clear_bitmap)(bmp))
>
>    #endif
>
>
> To use with curses, you'd do:
>
>    #define ALLEGRO_NO_CLEAR_BITMAP_ALIAS
>    #include <allegro.h>
>    #include <ncurses.h>
>
>    - Use clear_bitmap() for allegro.
>    - Use clear() for curses.
>    - No problems.
>
>
> Without curses, it's just the usual:
>
>    #include <allegro.h>
>
>    - Use either clear() or clear_bitmap() for Allegro.
>    - If optimised, clear() will be inlined to nothing.
>    - If not optimised, clear() will take one additional function call.
>      But the symbol `clear' will only be accessible from the current
>      module, thus not causing linker problems.
>    - No conflicts with clear() methods.
>
>
> Anything I miss?

I really like this solution (but with the Sven's point about not needing
#define at all) =)



Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/