xrtTypeId

按规范 ABI 名生成稳定的非零类型 ID。

uint64 xrtTypeId(xstrview AbiName);
参数说明
xstrview AbiNameABI 名称
返回:按规范 ABI 名生成稳定的非零类型 ID。

示例已编译验证

/* 按规范 ABI 名生成稳定的非零类型 ID。 */
result = xrtTypeId(AbiName);

xrtFunctionSigId

按调用形态生成稳定签名 ID;所有非空参数名都参与身份。

uint64 xrtFunctionSigId(const xrtfunctionsig* pSignature);
参数说明
const xrtfunctionsig* pSignature签名
返回:按调用形态生成稳定签名 ID;所有非空参数名都参与身份。

示例已编译验证

/* 按调用形态生成稳定签名 ID;所有非空参数名都参与身份。 */
result = xrtFunctionSigId(pSignature);

xrtFunctionSigValidate

检查参数、返回值、标志、名称唯一性和显式签名 ID 是否自洽。

bool xrtFunctionSigValidate(const xrtfunctionsig* pSignature);
参数说明
const xrtfunctionsig* pSignature签名
返回:检查参数、返回值、标志、名称唯一性和显式签名 ID 是否自洽。

示例已编译验证

/* 检查参数、返回值、标志、名称唯一性和显式签名 ID 是否自洽。 */
result = xrtFunctionSigValidate(pSignature);

xrtTypeValidate

检查类型 ID、结构、生命周期标志和完整继承链是否自洽。

bool xrtTypeValidate(const xrttype* pType);
参数说明
const xrttype* pType类型
返回:检查类型 ID、结构、生命周期标志和完整继承链是否自洽。

示例已编译验证

/* 检查类型 ID、结构、生命周期标志和完整继承链是否自洽。 */
result = xrtTypeValidate(pType);

xrtTypeSame

类型相等以稳定 ID 和 ABI 名共同判断,指针相同是快速路径。

bool xrtTypeSame(const xrttype* pLeft, const xrttype* pRight);
参数说明
const xrttype* pLeft左操作数
const xrttype* pRight右操作数
返回:类型相等以稳定 ID 和 ABI 名共同判断,指针相同是快速路径。

示例已编译验证

/* 类型相等以稳定 ID 和 ABI 名共同判断,指针相同是快速路径。 */
result = xrtTypeSame(pLeft, pRight);

xrtTypeIsA

判断类型是否等于目标类型或从目标类型派生。

bool xrtTypeIsA(const xrttype* pType, const xrttype* pTarget);
参数说明
const xrttype* pType类型
const xrttype* pTarget目标
返回:判断类型是否等于目标类型或从目标类型派生。

示例已编译验证

/* 判断类型是否等于目标类型或从目标类型派生。 */
result = xrtTypeIsA(pType, pTarget);

xrtTypeIsCopyable

查询类型值是否支持复制、字节重定位、比较或散列。

bool xrtTypeIsCopyable(const xrttype* pType);
参数说明
const xrttype* pType类型
返回:查询类型值是否支持复制、字节重定位、比较或散列。

示例已编译验证

/* 查询类型值是否支持复制、字节重定位、比较或散列。 */
result = xrtTypeIsCopyable(pType);

xrtTypeIsRelocatable

XRT_API bool xrtTypeIsRelocatable(const xrttype* pType);

;
返回:XRT_API bool xrtTypeIsRelocatable(const xrttype* pType);

示例已编译验证

/* XRT_API bool xrtTypeIsRelocatable(const xrttype* pType); */
result = xrtTypeIsRelocatable();

xrtTypeIsComparable

XRT_API bool xrtTypeIsComparable(const xrttype* pType);

;
返回:XRT_API bool xrtTypeIsComparable(const xrttype* pType);

示例已编译验证

/* XRT_API bool xrtTypeIsComparable(const xrttype* pType); */
result = xrtTypeIsComparable();

xrtTypeIsHashable

XRT_API bool xrtTypeIsHashable(const xrttype* pType);

;
返回:XRT_API bool xrtTypeIsHashable(const xrttype* pType);

示例已编译验证

/* XRT_API bool xrtTypeIsHashable(const xrttype* pType); */
result = xrtTypeIsHashable();

xrtTypeArgument

返回指定下标的泛型参数,越界返回空并设置范围错误。

const xrttype* xrtTypeArgument(const xrttype* pType, size_t iIndex);
参数说明
const xrttype* pType类型
size_t iIndex下标
返回:返回指定下标的泛型参数,越界返回空并设置范围错误。

示例已编译验证

/* 返回指定下标的泛型参数,越界返回空并设置范围错误。 */
result = xrtTypeArgument(pType, iIndex);

xrtTypeFindMethod

沿当前类型和基类查找方法;签名 ID 为零时返回首个同名重载。

const xrtmethoddesc* xrtTypeFindMethod( const xrttype* pType, xstrview Name, uint64 iSignatureId );
参数说明
const xrttype* pType类型
xstrview Name名称(xstrview)
uint64 iSignatureIdSgnatureId 参数
返回:沿当前类型和基类查找方法;签名 ID 为零时返回首个同名重载。

示例已编译验证

/* 沿当前类型和基类查找方法;签名 ID 为零时返回首个同名重载。 */
result = xrtTypeFindMethod(pType, Name, iSignatureId);

xrtTypeInitValue

使用类型操作初始化、复制、移动、销毁或克隆一个 Size 字节值。

bool xrtTypeInitValue(const xrttype* pType, ptr pValue);
参数说明
const xrttype* pType类型
ptr pValue值
返回:使用类型操作初始化、复制、移动、销毁或克隆一个 Size 字节值。

示例已编译验证

typeinitvalue obj;
xrtTypeInitValue(&obj, pType, pValue);

xrtTypeCopyValue

XRT_API bool xrtTypeCopyValue( const xrttype* pType, ptr pTarget, const void* pSource );

;
返回:XRT_API bool xrtTypeCopyValue( const xrttype* pType, ptr pTarget, const void* pSource );

示例已编译验证

/* XRT_API bool xrtTypeCopyValue( const xrttype* pType, ptr pTarget, const void* pSource ); */
result = xrtTypeCopyValue();

xrtTypeMoveValue

XRT_API bool xrtTypeMoveValue( const xrttype* pType, ptr pTarget, ptr pSource );

;
返回:XRT_API bool xrtTypeMoveValue( const xrttype* pType, ptr pTarget, ptr pSource );

示例已编译验证

/* XRT_API bool xrtTypeMoveValue( const xrttype* pType, ptr pTarget, ptr pSource ); */
result = xrtTypeMoveValue();

xrtTypeDropValue

XRT_API void xrtTypeDropValue(const xrttype* pType, ptr pValue);

;
返回:XRT_API void xrtTypeDropValue(const xrttype* pType, ptr pValue);

示例已编译验证

/* XRT_API void xrtTypeDropValue(const xrttype* pType, ptr pValue); */
result = xrtTypeDropValue();

xrtTypeCloneValue

XRT_API bool xrtTypeCloneValue( const xrttype* pType, ptr pTarget, const void* pSource );

;
返回:XRT_API bool xrtTypeCloneValue( const xrttype* pType, ptr pTarget, const void* pSource );

示例已编译验证

/* XRT_API bool xrtTypeCloneValue( const xrttype* pType, ptr pTarget, const void* pSource ); */
result = xrtTypeCloneValue();

xrtTypeTraceValue

枚举值直接持有的全部强对象引用;每一个所有权槽位必须访问一次。

bool xrtTypeTraceValue( const xrttype* pType, const void* pValue, xrtobjectvisitor pVisit, ptr pContext );
参数说明
const xrttype* pType类型
const void* pValue值
xrtobjectvisitor pVisit访问回调
ptr pContext上下文
返回:枚举值直接持有的全部强对象引用;每一个所有权槽位必须访问一次。

示例已编译验证

/* 枚举值直接持有的全部强对象引用;每一个所有权槽位必须访问一次。 */
result = xrtTypeTraceValue(pType, pValue, pVisit, pContext);

xrtTypeInitInstance

初始化、销毁或追踪引用对象的堆实例负载。

bool xrtTypeInitInstance(const xrttype* pType, ptr pInstance);
参数说明
const xrttype* pType类型
ptr pInstanceInstance 参数
返回:初始化、销毁或追踪引用对象的堆实例负载。

示例已编译验证

typeinitinstance obj;
xrtTypeInitInstance(&obj, pType, pInstance);

xrtTypeDropInstance

XRT_API void xrtTypeDropInstance(const xrttype* pType, ptr pInstance);

;
返回:XRT_API void xrtTypeDropInstance(const xrttype* pType, ptr pInstance);

示例已编译验证

/* XRT_API void xrtTypeDropInstance(const xrttype* pType, ptr pInstance); */
result = xrtTypeDropInstance();

xrtTypeTraceInstance

XRT_API bool xrtTypeTraceInstance( const xrttype* pType, const void* pInstance, xrtobjectvisitor pVisit, ptr pContext );

;
返回:XRT_API bool xrtTypeTraceInstance( const xrttype* pType, const void* pInstance, xrtobjectvisitor pVisit, ptr pContext );

示例已编译验证

/* XRT_API bool xrtTypeTraceInstance( const xrttype* pType, const void* pInstance, xrtobjectvisitor pVisit, ptr pContext ); */
result = xrtTypeTraceInstance();

xrtTypeCompareValue

使用类型操作比较或散列一个值;成功才写入输出。

bool xrtTypeCompareValue( const xrttype* pType, const void* pLeft, const void* pRight, int* pResult );
参数说明
const xrttype* pType类型
const void* pLeft左操作数
const void* pRight右操作数
int* pResult出:结果
返回:使用类型操作比较或散列一个值;成功才写入输出。

示例已编译验证

/* 使用类型操作比较或散列一个值;成功才写入输出。 */
result = xrtTypeCompareValue(pType, pLeft, pRight, pResult);

xrtTypeHashValue

XRT_API bool xrtTypeHashValue( const xrttype* pType, const void* pValue, uint64* pHash );

;
返回:XRT_API bool xrtTypeHashValue( const xrttype* pType, const void* pValue, uint64* pHash );

示例已编译验证

/* XRT_API bool xrtTypeHashValue( const xrttype* pType, const void* pValue, uint64* pHash ); */
result = xrtTypeHashValue();

xrtTypeRegistryCreate

注册表只借用唯一且不可变的描述指针;除销毁外允许并发调用。

xrttyperegistry* xrtTypeRegistryCreate(void);
返回:注册表只借用唯一且不可变的描述指针;除销毁外允许并发调用。

示例已编译验证

/* 注册表只借用唯一且不可变的描述指针;除销毁外允许并发调用。 */
xhandle* h = xrtTypeRegistryCreate();

xrtTypeRegistryDestroy

XRT_API void xrtTypeRegistryDestroy(xrttyperegistry* pRegistry);

;
返回:XRT_API void xrtTypeRegistryDestroy(xrttyperegistry* pRegistry);

示例已编译验证

xrtTypeRegistryDestroy(obj);

xrtTypeRegistryAdd

XRT_API bool xrtTypeRegistryAdd( xrttyperegistry* pRegistry, const xrttype* pType );

;
返回:XRT_API bool xrtTypeRegistryAdd( xrttyperegistry* pRegistry, const xrttype* pType );

示例已编译验证

/* XRT_API bool xrtTypeRegistryAdd( xrttyperegistry* pRegistry, const xrttype* pType ); */
result = xrtTypeRegistryAdd();

xrtTypeRegistryRemove

XRT_API bool xrtTypeRegistryRemove( xrttyperegistry* pRegistry, const xrttype* pType );

;
返回:XRT_API bool xrtTypeRegistryRemove( xrttyperegistry* pRegistry, const xrttype* pType );

示例已编译验证

/* XRT_API bool xrtTypeRegistryRemove( xrttyperegistry* pRegistry, const xrttype* pType ); */
result = xrtTypeRegistryRemove();

xrtTypeRegistryCount

XRT_API size_t xrtTypeRegistryCount(const xrttyperegistry* pRegistry);

;
返回:XRT_API size_t xrtTypeRegistryCount(const xrttyperegistry* pRegistry);

示例已编译验证

/* XRT_API size_t xrtTypeRegistryCount(const xrttyperegistry* pRegistry); */
result = xrtTypeRegistryCount();

xrtTypeRegistryAt

按稳定类型 ID 顺序返回指定位置的借用描述;并发修改时下标只代表本次调用快照。

const xrttype* xrtTypeRegistryAt( const xrttyperegistry* pRegistry, size_t iIndex );
参数说明
const xrttyperegistry* pRegistryRegstry 参数
size_t iIndex下标
返回:按稳定类型 ID 顺序返回指定位置的借用描述;并发修改时下标只代表本次调用快照。

示例已编译验证

/* 按稳定类型 ID 顺序返回指定位置的借用描述;并发修改时下标只代表本次调用快照。 */
result = xrtTypeRegistryAt(pRegistry, iIndex);

xrtTypeRegistryFindId

XRT_API const xrttype* xrtTypeRegistryFindId( const xrttyperegistry* pRegistry, uint64 iTypeId );

;
返回:XRT_API const xrttype* xrtTypeRegistryFindId( const xrttyperegistry* pRegistry, uint64 iTypeId );

示例已编译验证

/* XRT_API const xrttype* xrtTypeRegistryFindId( const xrttyperegistry* pRegistry, uint64 iTypeId ); */
result = xrtTypeRegistryFindId();

xrtTypeRegistryFindName

XRT_API const xrttype* xrtTypeRegistryFindName( const xrttyperegistry* pRegistry, xstrview AbiName );

;
返回:XRT_API const xrttype* xrtTypeRegistryFindName( const xrttyperegistry* pRegistry, xstrview AbiName );

示例已编译验证

/* XRT_API const xrttype* xrtTypeRegistryFindName( const xrttyperegistry* pRegistry, xstrview AbiName ); */
result = xrtTypeRegistryFindName();

xrtProtocolValidate

验证协议类型、要求和重载身份完整且唯一。

bool xrtProtocolValidate(const xrtprotocol* pProtocol);
参数说明
const xrtprotocol* pProtocol协议名
返回:验证协议类型、要求和重载身份完整且唯一。

示例已编译验证

/* 验证协议类型、要求和重载身份完整且唯一。 */
result = xrtProtocolValidate(pProtocol);

xrtProtocolWitnessValidate

验证协议见证表完整且每个要求只实现一次。

bool xrtProtocolWitnessValidate( const xrtprotocolwitness* pWitness );
参数说明
const xrtprotocolwitness* pWitnessWtness 参数
返回:验证协议见证表完整且每个要求只实现一次。

示例已编译验证

/* 验证协议见证表完整且每个要求只实现一次。 */
result = xrtProtocolWitnessValidate(pWitness);

xrtProtocolWitnessFind

XRT_API const xrtprotocolentry* xrtProtocolWitnessFind( const xrtprotocolwitness* pWitness, xstrview Name, uint64 iSignatureId );

;
返回:XRT_API const xrtprotocolentry* xrtProtocolWitnessFind( const xrtprotocolwitness* pWitness, xstrview Name, uint64 iSignatureId );

示例已编译验证

/* XRT_API const xrtprotocolentry* xrtProtocolWitnessFind( const xrtprotocolwitness* pWitness, xstrview Name, uint64 iSignatureId ); */
result = xrtProtocolWitnessFind();

xrtProtocolRegistryCreate

XRT_API xrtprotocolregistry* xrtProtocolRegistryCreate(void);

;
返回:XRT_API xrtprotocolregistry* xrtProtocolRegistryCreate(void);

示例已编译验证

/* XRT_API xrtprotocolregistry* xrtProtocolRegistryCreate(void); */
xhandle* h = xrtProtocolRegistryCreate();

xrtProtocolRegistryDestroy

XRT_API void xrtProtocolRegistryDestroy(xrtprotocolregistry* pRegistry);

;
返回:XRT_API void xrtProtocolRegistryDestroy(xrtprotocolregistry* pRegistry);

示例已编译验证

xrtProtocolRegistryDestroy(obj);

xrtProtocolRegistryAdd

XRT_API bool xrtProtocolRegistryAdd( xrtprotocolregistry* pRegistry, const xrtprotocolwitness* pWitness );

;
返回:XRT_API bool xrtProtocolRegistryAdd( xrtprotocolregistry* pRegistry, const xrtprotocolwitness* pWitness );

示例已编译验证

/* XRT_API bool xrtProtocolRegistryAdd( xrtprotocolregistry* pRegistry, const xrtprotocolwitness* pWitness ); */
result = xrtProtocolRegistryAdd();

xrtProtocolRegistryRemove

XRT_API bool xrtProtocolRegistryRemove( xrtprotocolregistry* pRegistry, const xrtprotocolwitness* pWitness );

;
返回:XRT_API bool xrtProtocolRegistryRemove( xrtprotocolregistry* pRegistry, const xrtprotocolwitness* pWitness );

示例已编译验证

/* XRT_API bool xrtProtocolRegistryRemove( xrtprotocolregistry* pRegistry, const xrtprotocolwitness* pWitness ); */
result = xrtProtocolRegistryRemove();

xrtProtocolRegistryFind

XRT_API const xrtprotocolwitness* xrtProtocolRegistryFind( const xrtprotocolregistry* pRegistry, uint64 iProtocolTypeId, uint64 iConcreteTypeId );

;
返回:XRT_API const xrtprotocolwitness* xrtProtocolRegistryFind( const xrtprotocolregistry* pRegistry, uint64 iProtocolTypeId, uint64 iConcreteTypeId );

示例已编译验证

/* XRT_API const xrtprotocolwitness* xrtProtocolRegistryFind( const xrtprotocolregistry* pRegistry, uint64 iProtocolTypeId, uint64 iConcreteTypeId ); */
result = xrtProtocolRegistryFind();

xrtProtocolRegistryCount

XRT_API size_t xrtProtocolRegistryCount( const xrtprotocolregistry* pRegistry );

;
返回:XRT_API size_t xrtProtocolRegistryCount( const xrtprotocolregistry* pRegistry );

示例已编译验证

/* XRT_API size_t xrtProtocolRegistryCount( const xrtprotocolregistry* pRegistry ); */
result = xrtProtocolRegistryCount();

xrtProtocolRegistryAt

按协议类型 ID 和具体类型 ID 顺序返回借用见证;并发修改时下标只代表本次调用快照。

const xrtprotocolwitness* xrtProtocolRegistryAt( const xrtprotocolregistry* pRegistry, size_t iIndex );
参数说明
const xrtprotocolregistry* pRegistryRegstry 参数
size_t iIndex下标
返回:按协议类型 ID 和具体类型 ID 顺序返回借用见证;并发修改时下标只代表本次调用快照。

示例已编译验证

/* 按协议类型 ID 和具体类型 ID 顺序返回借用见证;并发修改时下标只代表本次调用快照。 */
result = xrtProtocolRegistryAt(pRegistry, iIndex);

xrtEnumValidate

验证枚举标签和名称唯一,并查询变体。

bool xrtEnumValidate(const xrtenum* pEnum);
参数说明
const xrtenum* pEnum枚举
返回:验证枚举标签和名称唯一,并查询变体。

示例已编译验证

/* 验证枚举标签和名称唯一,并查询变体。 */
result = xrtEnumValidate(pEnum);

xrtEnumFindTag

XRT_API const xrtenumvariant* xrtEnumFindTag( const xrtenum* pEnum, int64 iTag );

;
返回:XRT_API const xrtenumvariant* xrtEnumFindTag( const xrtenum* pEnum, int64 iTag );

示例已编译验证

/* XRT_API const xrtenumvariant* xrtEnumFindTag( const xrtenum* pEnum, int64 iTag ); */
result = xrtEnumFindTag();

xrtEnumFindName

XRT_API const xrtenumvariant* xrtEnumFindName( const xrtenum* pEnum, xstrview Name );

;
返回:XRT_API const xrtenumvariant* xrtEnumFindName( const xrtenum* pEnum, xstrview Name );

示例已编译验证

/* XRT_API const xrtenumvariant* xrtEnumFindName( const xrtenum* pEnum, xstrview Name ); */
result = xrtEnumFindName();

xrtTypeNull

XRT 内建标量类型描述在进程期保持稳定。

const xrttype* xrtTypeNull(void);
返回:XRT 内建标量类型描述在进程期保持稳定。

示例已编译验证

/* XRT 内建标量类型描述在进程期保持稳定。 */
result = xrtTypeNull();

xrtTypeBool

XRT_API const xrttype* xrtTypeBool(void);

;
返回:XRT_API const xrttype* xrtTypeBool(void);

示例已编译验证

/* XRT_API const xrttype* xrtTypeBool(void); */
result = xrtTypeBool();

xrtTypeBool32

XRT_API const xrttype* xrtTypeBool32(void);

;
返回:XRT_API const xrttype* xrtTypeBool32(void);

示例已编译验证

/* XRT_API const xrttype* xrtTypeBool32(void); */
result = xrtTypeBool32();

xrtTypeInt8

XRT_API const xrttype* xrtTypeInt8(void);

;
返回:XRT_API const xrttype* xrtTypeInt8(void);

示例已编译验证

/* XRT_API const xrttype* xrtTypeInt8(void); */
result = xrtTypeInt8();

xrtTypeUInt8

XRT_API const xrttype* xrtTypeUInt8(void);

;
返回:XRT_API const xrttype* xrtTypeUInt8(void);

示例已编译验证

/* XRT_API const xrttype* xrtTypeUInt8(void); */
result = xrtTypeUInt8();

xrtTypeInt16

XRT_API const xrttype* xrtTypeInt16(void);

;
返回:XRT_API const xrttype* xrtTypeInt16(void);

示例已编译验证

/* XRT_API const xrttype* xrtTypeInt16(void); */
result = xrtTypeInt16();

xrtTypeUInt16

XRT_API const xrttype* xrtTypeUInt16(void);

;
返回:XRT_API const xrttype* xrtTypeUInt16(void);

示例已编译验证

/* XRT_API const xrttype* xrtTypeUInt16(void); */
result = xrtTypeUInt16();

xrtTypeInt32

XRT_API const xrttype* xrtTypeInt32(void);

;
返回:XRT_API const xrttype* xrtTypeInt32(void);

示例已编译验证

/* XRT_API const xrttype* xrtTypeInt32(void); */
result = xrtTypeInt32();

xrtTypeUInt32

XRT_API const xrttype* xrtTypeUInt32(void);

;
返回:XRT_API const xrttype* xrtTypeUInt32(void);

示例已编译验证

/* XRT_API const xrttype* xrtTypeUInt32(void); */
result = xrtTypeUInt32();

xrtTypeInt64

XRT_API const xrttype* xrtTypeInt64(void);

;
返回:XRT_API const xrttype* xrtTypeInt64(void);

示例已编译验证

/* XRT_API const xrttype* xrtTypeInt64(void); */
result = xrtTypeInt64();

xrtTypeUInt64

XRT_API const xrttype* xrtTypeUInt64(void);

;
返回:XRT_API const xrttype* xrtTypeUInt64(void);

示例已编译验证

/* XRT_API const xrttype* xrtTypeUInt64(void); */
result = xrtTypeUInt64();

xrtTypeFloat32

XRT_API const xrttype* xrtTypeFloat32(void);

;
返回:XRT_API const xrttype* xrtTypeFloat32(void);

示例已编译验证

/* XRT_API const xrttype* xrtTypeFloat32(void); */
result = xrtTypeFloat32();

xrtTypeFloat64

XRT_API const xrttype* xrtTypeFloat64(void);

;
返回:XRT_API const xrttype* xrtTypeFloat64(void);

示例已编译验证

/* XRT_API const xrttype* xrtTypeFloat64(void); */
result = xrtTypeFloat64();

xrtTypeTime

XRT_API const xrttype* xrtTypeTime(void);

;
返回:XRT_API const xrttype* xrtTypeTime(void);

示例已编译验证

/* XRT_API const xrttype* xrtTypeTime(void); */
result = xrtTypeTime();

xrtTypePointer

XRT_API const xrttype* xrtTypePointer(void);

;
返回:XRT_API const xrttype* xrtTypePointer(void);

示例已编译验证

/* XRT_API const xrttype* xrtTypePointer(void); */
result = xrtTypePointer();

xrtTypeType

XRT_API const xrttype* xrtTypeType(void);

;
返回:XRT_API const xrttype* xrtTypeType(void);

示例已编译验证

/* XRT_API const xrttype* xrtTypeType(void); */
result = xrtTypeType();