Question

We're using OmniORB with our C++ server. Currently, when an object is specified as a char in the IDL file, it is translated to an unsigned char in C++. We want it to be just char. Is there something we can change to make this happen?

Was it helpful?

Solution

It is implementation defined (page 15 in the spec) what the IDL types boolean, char and octet map to.

omniORB chooses to:

...
typedef unsigned char _CORBA_Char;
typedef unsigned char _CORBA_Octet; 
...

You can change the omniORB sources, though I doubt that would be a good idea. Or you can accept that CORBA::Char does not represent the C++ char type.

OTHER TIPS

I would recommend using CORBA::Char when calling functions that are direct CORBA calls and assigning return values of such functions.

If you need to convert them to/from 'char' or 'unsigned char', a static_cast should do the job.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top