14.2.2. Supported Types
本节描述了支持的类型系统,包括如何使用动态语言绑定API和XML配置文件实例化这些特定类型的示例。C++示例还包括实例化相应的DynamicData示例,以及设置和读取值。
14.2.2.1. Primitive Types
基本类型是自描述的,可以在没有配置参数的情况下创建。DynamicTypeBuilderFactory
接口提供了方法DynamicTypeBuilderFactory::get_primitive_type
,允许用户直接获取相应的基本动态类型。DynamicData
类为每种基本数据类型提供了特定的getter和setter。
下表显示了支持的基本类型及其对应的TypeKind。TypeKind用于查询DynamicTypeBuilderFactory
以获取特定的基本动态类型。
C++ Type | TypeKind |
---|---|
bool | TK_BOOLEAN |
char | TK_CHAR8 |
wchar_t | TK_CHAR16 |
uint8_t | TK_BYTE / TK_UINT8 |
int8_t | TK_INT8 |
int16_t | TK_INT16 |
uint16_t | TK_UINT16 |
int32_t | TK_INT32 |
uint32_t | TK_UINT32 |
int64_t | TK_INT64 |
uint64_t | TK_UINT64 |
float | TK_FLOAT32 |
double | TK_FLOAT64 |
long double | TK_FLOAT128 |
下面的示例展示了如何创建一个包含基本成员的结构体。
IDL
struct PrimitivesStruct
{
boolean my_bool;
octet my_octet;
char my_char;
wchar my_wchar;
long my_long;
unsigned long my_ulong;
int8 my_int8;
uint8 my_uint8;
short my_short;
unsigned short my_ushort;
long long my_longlong;
unsigned long long my_ulonglong;
float my_float;
double my_double;
long double my_longdouble;
};
有关此类型XML定义的详细说明,请参阅XML Primitive Types部分。
14.2.2.1.1. Type promotions
动态语言绑定还支持类型提升,允许在执行get()和set()操作时进行隐式提升。这意味着较小的数据类型可以被隐式提升到较大的数据类型,但反之则不行。
以下是支持的提升:
TypeKind | Allowed promotions |
---|---|
TK_INT8 | TK_INT16, TK_INT32, TK_INT64, TK_FLOAT32, TK_FLOAT64, TK_FLOAT128 |
TK_INT16 | TK_INT32, TK_INT64, TK_FLOAT32, TK_FLOAT64,TK_FLOAT128 |
… | … |
(表格省略了一部分内容)
14.2.2.2. String Types
字符串类型是一维字符集合(TK_CHAR8或TK_CHAR16,后者也称为宽字符串或wstring)。用于标识字符串类型的TypeKinds为TK_STRING8和TK_STRING16。字符串可以是有界或无界,这通过配置TypeDescriptor bound属性来设置最大长度。
DynamicTypeBuilderFactory
提供函数DynamicTypeBuilderFactory::create_string_type
和DynamicTypeBuilderFactory::create_wstring_type
,便于字符串创建,并提供相应的最大长度参数(使用LENGTH_UNLIMITED表示无界字符串)。
DynamicData
类还提供特定的getter和setter:DynamicData::get_string_value
, DynamicData::get_wstring_value
, DynamicData::set_string_value
, 和 DynamicData::set_wstring_value
.
下面是一个包含字符串成员结构体的示例:
IDL
struct StringsStruct
{
string my_string;
wstring my_wstring;
string<41925> my_bounded_string;
// 有界字符串,最大长度为41925个字符。
wstring<20925> my_bounded_wstring;
// 有界宽字符串,最大长度为20925个字符。
};
有关此类型XML定义的详细说明,请参阅XML String Types部分。
内容由零声教学AI助手提供,问题来源于学员提问