ZBLOG

14.2.2. Supported Types This section describes the supported Type System including examples of how to instantiate those specific types using the Dynamic Language Binding API and the XML configuration file. The C++ examples also include instantiat...

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_typeDynamicTypeBuilderFactory::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助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://sdn.0voice.com/?id=7430

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?