Problem
What is the C++ size in the mapping for CORBA types?
Solution
A: The C++ size depends on the architecture and is not fixed in the specifications.
For example the CORBA type ULongLong does not fit into a C++ unsigned long on 32 bit systems.
Here it is mapped to unsigned long long which is 8 bystes in size as CORBA::ULongLong is. On 64-bit systems, it is mapped to unsigned long because long is a 64-bit type there and not == int, which is a 32-bit type there.
The attached size_of.cpp small program prints the size of every relevant C++ and CORBA type size.
Compile it using this command line:
g++ -I$ACE_ROOT -I$ACE_ROOT/TAO -o size_of size_of.cpp
and attach the output here below if it is for an architecture not already listed.
Linux RH-E 4 on INTEL PC 32 bits
sizeof(bool)=1
sizeof(char)=1
sizeof(short)=2
sizeof(int)=4
sizeof(long)=4
sizeof(long long)=8
sizeof(unsigned char)=1
sizeof(unsigned short)=2
sizeof(unsigned int)=4
sizeof(unsigned long)=4
sizeof(unsigned long long)=8
sizeof(float)=4
sizeof(double)=8
sizeof(long double)=12
sizeof(CORBA::Boolean)=1
sizeof(CORBA::Octet)=1
sizeof(CORBA::Char)=1
sizeof(CORBA::WChar)=4
sizeof(CORBA::Short)=2
sizeof(CORBA::UShort)=2
sizeof(CORBA::Long)=4
sizeof(CORBA::ULong)=4
sizeof(CORBA::LongLong)=8
sizeof(CORBA::ULongLong)=8
sizeof(CORBA::Float)=4
sizeof(CORBA::Double)=8
sizeof(CORBA::LongDouble)=16
Scientific Linux SL release 4.1 (Beryllium) on octuple AMD Opteron(tm) Processor 875 (8 dual core CPUs)
Added for AIRUB, by courtesy of RolandLemke. -- ThomasJuerges - 10 Apr 2006
sizeof(bool)=1
sizeof(char)=1
sizeof(short)=2
sizeof(int)=4
sizeof(long)=8
sizeof(long long)=8
sizeof(unsigned char)=1
sizeof(unsigned short)=2
sizeof(unsigned int)=4
sizeof(unsigned long)=8
sizeof(unsigned long long)=8
sizeof(float)=4
sizeof(double)=8
sizeof(long double)=16
sizeof(CORBA::Boolean)=1
sizeof(CORBA::Octet)=1
sizeof(CORBA::Char)=1
sizeof(CORBA::WChar)=4
sizeof(CORBA::Short)=2
sizeof(CORBA::UShort)=2
sizeof(CORBA::Long)=4
sizeof(CORBA::ULong)=4
sizeof(CORBA::LongLong)=8
sizeof(CORBA::ULongLong)=8
sizeof(CORBA::Float)=4
sizeof(CORBA::Double)=8
sizeof(CORBA::LongDouble)=16
-- GianlucaChiozzi - 31 Mar 2006
- size_of.cpp: Little utility to print the size of CORBA types in CPP mapping