> abi/src/af/gr/unix/gr_UnixGraphics.cpp contains this:
>   #ifndef __FreeBSD__
>   #include <endian.h>
>   #else
>   #include <machine/endian.h>
>   #endif
> Since HP-UX doesn't have endian.h anywhere, I just wrapped this
> up in "#ifndef __hpux" / "#endif".  Which is fine by me, but I
> bet there's a prettier place for this kind of logic, more in
> keeping with the abiword build model.  Any suggestions?

This is my doing; you cannot just #ifndef it though. I suggest that 
we create /af/util/xp/ut_endian.h with the contents below, and that 
each platform defines in there either UT_BIG_ENDIAN or 
UT_LITTLE_ENDIAN. We can then include this file if we need to 
decide on ediannes.

Tomas

----------------------------------------- ut_endian.h 
-------------------------------------
#ifndef UT_ENDIAN_H
#define UT_ENDIAN_H

#ifdef __hpux

#elif __FreeBSD__
        #include <machine/endian.h>
        #if __BYTE_ORDER == __LITTLE_ENDIAN             
                #define UT_LITTLE_ENDIAN
        #else
                #define UT_BIG_ENDIAN
        #endif
#else
        #include <endian.h>
        #if __BYTE_ORDER == __LITTLE_ENDIAN             
                #define UT_LITTLE_ENDIAN
        #else
                #define UT_BIG_ENDIAN
        #endif
#endif


//XP macros

// convert single UCS character
// x,y are pointers to UT_UCSChar
// we will use a temporary variable, so that x and y
// can be the same
#ifdef UT_LITTLE_ENDIAN         
#define LE2BE16(x,y)                                  \
char * lb1;                                           \
UT_UCSChar tucs;                                      \
tucs = * ((UT_UCSChar *)(x)); lb1 = (char*) (&tucs);  \
*((char*)(y)) = *(lb1+1); *(((char*)(y)+1)) = *lb1;
#else
#define LE2BE16(x,y)
#endif

#endif //UT_ENDIAN_H

*********************************************
[EMAIL PROTECTED] / www.frydrych.net
PGP keys:  http://www.frydrych.net/contact.html

Reply via email to