[vtkusers] #Defines for Big or Little Endian

Mike Jackson mike.jackson at imts.us
Fri Sep 1 09:34:43 EDT 2006


Well, 
 I _was_ looking for the equivalent in vtk. And you helped with the first
part which is the Endian Definition.
  But I wasn't able to find the equivalent convenience functions like those
from Apple in VTK. Am I still missing something or are those just not there?

Mike Jackson

On 9/1/06 9:20 AM, "Glen Lehmann" <glehmann at atamai.com> wrote:

> Yes, Mike,
> 
> Sorry, thought you were looking for the VTK-equivalent.  You can
> always check your compiler defines by running:
> 
> cpp -E -dM /dev/null
> 
> or
> 
> gcc -x c++ -E -dM /dev/null
> 
> Cheers,
> 
> Glen
> 
> On 01/09/06, Mike Jackson <imikejackson at gmail.com> wrote:
>> Actually,
>>    Apple has this exact set of methods in their open source Core Foundation
>> code.
>> 
>> So for example they have:
>> 
>> vtkTypeUInt32 CFSwapInt32BigToHost(vtkTypeUInt32 arg)
>> {
>> 
>> #if defined(__BIG_ENDIAN__)
>> 
>> return arg;
>> 
>> #else
>> 
>> return CFSwapInt32(arg);
>> 
>> #endif
>> 
>> }
>> 
>> vtkTypeUInt32 CFSwapInt32(vtkTypeUInt32 arg) {
>> #if defined(__i386__) && defined(__GNUC__)
>>     __asm__("bswap %0" : "+r" (arg));
>>     return arg;
>> 
>> #elif defined(__ppc__) && defined(__GNUC__)
>> 
>>     vtkTypeUInt32 result;
>>     __asm__("lwbrx %0,0,%1" : "=r" (result) : "r" (&arg), "m" (arg));
>>     return result;
>> 
>> #else
>>     vtkTypeUInt32 result;
>>     result = ((arg & 0xFF) << 24) | ((arg & 0xFF00) << 8) | ((arg >> 8) &
>> 0xFF00) | ((arg >> 24) & 0xFF);
>>     return result;
>> 
>> #endif
>> 
>> }
>> 
>> This is basically what I am looking for.
>> 
>> Thanks for all those that replied with help.
>> Mike Jackson
>> 
>> On 9/1/06 7:24 AM, "Bob Palank" <bob at stlcc.org> wrote:
>> 
>>> Why not write the integer(s) to disk and then use a Hex editor to inspect
>>> the file ?
>>> ByteViewer works for me.
>>> BR
>>>   Bob
>>> 
>>> -----Original Message-----
>>> From: vtkusers-bounces+bob=stlcc.org at vtk.org
>>> [mailto:vtkusers-bounces+bob=stlcc.org at vtk.org]On Behalf Of Mike Jackson
>>> Sent: Thursday, August 31, 2006 3:36 PM
>>> To: VTK Users
>>> Subject: [vtkusers] #Defines for Big or Little Endian
>>> 
>>> 
>>> Is there a #define some where that I can use to test if I am running
>>> on a big or little endian machine?
>>> 
>>> Beyond that, are there already methods some where that I have not
>>> found that will take a value, say UIn32 and swap the bytes to whatever
>>> the system is? Something like:
>>> 
>>> ByteSwap::swapLEToSystem( UInt32 );
>>> 
>>> Thanks
>>> 
>>> --
>>> Mike Jackson
>>> imikejackson _at_ gee-mail dot com
>>> _______________________________________________
>> 
>> 
>> 







More information about the vtkusers mailing list