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:
Ice::Byte is a typedef for
unsigned char. This guarantees that byte values are always in the range 0..255.
All the basic types are guaranteed to be distinct C++ types, that is, you can safely overload functions that differ in only the types listed in the table above.
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:
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:
See Customizing the C++98 Mapping for a detailed description of the
cpp:view-type metadata directive.
- Basic Types
- Customizing the C++98 Mapping
- C++98 Mapping for Identifiers
- C++98 Mapping for Modules
- C++98 Mapping for Enumerations
- C++98 Mapping for Structures
- C++98 Mapping for Sequences
- C++98 Mapping for Dictionaries
- C++98 Mapping for Constants
- C++98 Mapping for Exceptions
- C++98 Strings and Character Encoding