C++11 Mapping for Built-In Types
On this page:
Mapping of Slice Built-In Types to C++ Types
The Slice built-in types are mapped to C++ types as shown in this table:
Slice | C++ |
---|---|
bool | bool |
byte | Ice::Byte |
short | short |
int | int |
long | long long |
float | float |
double | double |
string | std::string |
Ice::Byte
is a typedef for unsigned char
. This guarantees that byte values are always in the range 0..255.
Alternative String Mapping for C++
You can use a metadata directive, "cpp:type:wstring"
, to map strings to C++ std::wstring
. For containers (such as interfaces or structures), the metadata directive applies to all strings within the container. A corresponding metadata directive, "cpp:type:string"
, can be used to selectively override the mapping defined by the enclosing container. For example:
["cpp:type:wstring"] struct S1 { string x; // Maps to std::wstring ["cpp:type:wstring"] string y; // Maps to std::wstring ["cpp:type:string"] string z; // Maps to std::string } struct S2 { string x; // Maps to std::string ["cpp:type:string"] string y; // Maps to std::string ["cpp:type:wstring"] string z; // Maps to std::wstring }
With these metadata directives, the strings are mapped as indicated by the comments. By default, narrow strings are encoded as UTF-8, and wide strings use a UTF encoding that is appropriate for the platform on which the application executes. You can override the encoding for narrow and wide strings by registering a string converter with the Ice run time.
String View Mapping in C++
You can use the metadata directive cpp:view-type:string-view-type
to map some string parameters to a custom C++ "view-type" of your choice. This view-type can reference memory without owning it, like the experimental string_view
type. For example:
void sendString(["cpp:view-type:std::experimental::string_view"] string data);
maps to:
// Proxy function for synchronous call: input parameter mapped to string_view type. void sendString(const std::experimental::string_view&);
See Customizing the C++11 Mapping for a detailed description of the cpp:view-type
metadata directive.