xrtCallFrameValidate

检查调用帧结构、参数绑定、可选参数、变长参数和关键字参数是否符合有效签名。

bool xrtCallFrameValidate(const xrtcallframe* pFrame);
参数说明
const xrtcallframe* pFrame帧
返回:检查调用帧结构、参数绑定、可选参数、变长参数和关键字参数是否符合有效签名。

示例已编译验证

/* 检查调用帧结构、参数绑定、可选参数、变长参数和关键字参数是否符合有效签名。 */
result = xrtCallFrameValidate(pFrame);

xrtCallFrameArgument

按原始位置返回借用参数,越界时报告范围错误。

xvalue* xrtCallFrameArgument( const xrtcallframe* pFrame, size_t iIndex );
参数说明
const xrtcallframe* pFrame帧
size_t iIndex下标
返回:按原始位置返回借用参数,越界时报告范围错误。

示例已编译验证

/* 按原始位置返回借用参数,越界时报告范围错误。 */
result = xrtCallFrameArgument(pFrame, iIndex);

xrtCallFrameKeyword

按完整名称返回借用关键字值;未提供时返回空而不设置错误。

xvalue* xrtCallFrameKeyword( const xrtcallframe* pFrame, xstrview Name );
参数说明
const xrtcallframe* pFrame帧
xstrview Name名称(xstrview)
返回:按完整名称返回借用关键字值;未提供时返回空而不设置错误。

示例已编译验证

/* 按完整名称返回借用关键字值;未提供时返回空而不设置错误。 */
result = xrtCallFrameKeyword(pFrame, Name);

xrtCallFrameParameter

按有效签名的形参下标返回位置或关键字传入的借用值;可选参数缺失时返回空。

xvalue* xrtCallFrameParameter( const xrtcallframe* pFrame, size_t iIndex );
参数说明
const xrtcallframe* pFrame帧
size_t iIndex下标
返回:按有效签名的形参下标返回位置或关键字传入的借用值;可选参数缺失时返回空。

示例已编译验证

/* 按有效签名的形参下标返回位置或关键字传入的借用值;可选参数缺失时返回空。 */
result = xrtCallFrameParameter(pFrame, iIndex);

xrtCallResultInit

初始化一个新的调用结果;已经持有资源的结果必须先 Unit。

void xrtCallResultInit(xrtcallresult* pResult);
参数说明
xrtcallresult* pResult出:结果
返回:初始化一个新的调用结果;已经持有资源的结果必须先 Unit。

示例已编译验证

callresultinit obj;
xrtCallResultInit(&obj, pResult);

xrtCallResultClear

释放结果值但保留溢出容量,结果可以继续复用。

void xrtCallResultClear(xrtcallresult* pResult);
参数说明
xrtcallresult* pResult出:结果
返回:释放结果值但保留溢出容量,结果可以继续复用。

示例已编译验证

/* 释放结果值但保留溢出容量,结果可以继续复用。 */
result = xrtCallResultClear(pResult);

xrtCallResultUnit

释放结果值和溢出存储。

void xrtCallResultUnit(xrtcallresult* pResult);
参数说明
xrtcallresult* pResult出:结果
返回:释放结果值和溢出存储。

示例已编译验证

xrtCallResultUnit(pResult);

xrtCallResultCount

返回调用结果数量。

size_t xrtCallResultCount(const xrtcallresult* pResult);
参数说明
const xrtcallresult* pResult出:结果
返回:返回调用结果数量。

示例已编译验证

/* 返回调用结果数量。 */
result = xrtCallResultCount(pResult);

xrtCallResultGet

返回指定下标借用的结果值。

xvalue* xrtCallResultGet( const xrtcallresult* pResult, size_t iIndex );
参数说明
const xrtcallresult* pResult出:结果
size_t iIndex下标
返回:返回指定下标借用的结果值。

示例已编译验证

/* 返回指定下标借用的结果值。 */
result = xrtCallResultGet(pResult, iIndex);

xrtCallResultSet

增加值引用后替换已有下标或追加到末尾,不允许创建稀疏结果。

bool xrtCallResultSet( xrtcallresult* pResult, size_t iIndex, const xvalue* pValue );
参数说明
xrtcallresult* pResult出:结果
size_t iIndex下标
const xvalue* pValue值
返回:增加值引用后替换已有下标或追加到末尾,不允许创建稀疏结果。

示例已编译验证

/* 增加值引用后替换已有下标或追加到末尾,不允许创建稀疏结果。 */
result = xrtCallResultSet(pResult, iIndex, pValue);

xrtCallResultSetTake

移交值引用后替换已有下标或追加到末尾,成功时清空来源槽。

bool xrtCallResultSetTake( xrtcallresult* pResult, size_t iIndex, xvalue** pValue );
参数说明
xrtcallresult* pResult出:结果
size_t iIndex下标
xvalue** pValue值
返回:移交值引用后替换已有下标或追加到末尾,成功时清空来源槽。

示例已编译验证

/* 移交值引用后替换已有下标或追加到末尾,成功时清空来源槽。 */
result = xrtCallResultSetTake(pResult, iIndex, pValue);

xrtCallResultPush

增加值引用后追加一个结果。

bool xrtCallResultPush( xrtcallresult* pResult, const xvalue* pValue );
参数说明
xrtcallresult* pResult出:结果
const xvalue* pValue值
返回:增加值引用后追加一个结果。

示例已编译验证

/* 增加值引用后追加一个结果。 */
result = xrtCallResultPush(pResult, pValue);

xrtCallResultPushTake

移交值引用后追加一个结果。

bool xrtCallResultPushTake( xrtcallresult* pResult, xvalue** pValue );
参数说明
xrtcallresult* pResult出:结果
xvalue** pValue值
返回:移交值引用后追加一个结果。

示例已编译验证

/* 移交值引用后追加一个结果。 */
result = xrtCallResultPushTake(pResult, pValue);

xrtCallResultMove

释放目标原值并把完整结果所有权移动到目标。

bool xrtCallResultMove( xrtcallresult* pTarget, xrtcallresult* pSource );
参数说明
xrtcallresult* pTarget目标
xrtcallresult* pSource来源
返回:释放目标原值并把完整结果所有权移动到目标。

示例已编译验证

/* 释放目标原值并把完整结果所有权移动到目标。 */
result = xrtCallResultMove(pTarget, pSource);

xrtCallableCreate

创建不可变 callable;签名可以为空,非空签名及其引用必须覆盖 callable 生命周期。

xrtcallable* xrtCallableCreate( const xrtfunctionsig* pSignature, xrtcallproc pEntry, ptr pEnvironment, xrtcalldrop pDropEnvironment );
参数说明
const xrtfunctionsig* pSignature签名
xrtcallproc pEntry条目
ptr pEnvironmentEnvronment 参数
xrtcalldrop pDropEnvironmentDroEnvronment 参数
返回:创建不可变 callable;签名可以为空,非空签名及其引用必须覆盖 callable 生命周期。

示例已编译验证

/* 创建不可变 callable;签名可以为空,非空签名及其引用必须覆盖 callable 生命周期。 */
xhandle* h = xrtCallableCreate(pSignature, pEntry, pEnvironment, pDropEnvironment);

xrtCallableRef

增加或释放 callable 引用,最后一个引用负责释放环境。

xrtcallable* xrtCallableRef(xrtcallable* pCallable);
参数说明
xrtcallable* pCallableCallable 参数
返回:增加或释放 callable 引用,最后一个引用负责释放环境。

示例已编译验证

/* 增加或释放 callable 引用,最后一个引用负责释放环境。 */
result = xrtCallableRef(pCallable);

xrtCallableUnref

XRT_API void xrtCallableUnref(xrtcallable* pCallable);

;
返回:XRT_API void xrtCallableUnref(xrtcallable* pCallable);

示例已编译验证

/* XRT_API void xrtCallableUnref(xrtcallable* pCallable); */
result = xrtCallableUnref();

xrtTypeCallable

返回拥有一个 callable 强引用的 C ABI 槽类型描述。

const xrttype* xrtTypeCallable(void);
返回:返回拥有一个 callable 强引用的 C ABI 槽类型描述。

示例已编译验证

/* 返回拥有一个 callable 强引用的 C ABI 槽类型描述。 */
result = xrtTypeCallable();

xrtCallableSignature

返回 callable 借用的签名;动态 callable 可以返回空。

const xrtfunctionsig* xrtCallableSignature( const xrtcallable* pCallable );
参数说明
const xrtcallable* pCallableCallable 参数
返回:返回 callable 借用的签名;动态 callable 可以返回空。

示例已编译验证

/* 返回 callable 借用的签名;动态 callable 可以返回空。 */
result = xrtCallableSignature(pCallable);

xrtCallableSignatureId

返回 callable 的稳定签名 ID;动态 callable 返回零。

uint64 xrtCallableSignatureId(const xrtcallable* pCallable);
参数说明
const xrtcallable* pCallableCallable 参数
返回:返回 callable 的稳定签名 ID;动态 callable 返回零。

示例已编译验证

/* 返回 callable 的稳定签名 ID;动态 callable 返回零。 */
result = xrtCallableSignatureId(pCallable);

xrtCallableInvoke

XRT_API bool xrtCallableInvoke( const xrtcallable* pCallable, const xrtcallframe* pFrame, xrtcallresult* pResult );

;
返回:XRT_API bool xrtCallableInvoke( const xrtcallable* pCallable, const xrtcallframe* pFrame, xrtcallresult* pResult );

示例已编译验证

/* XRT_API bool xrtCallableInvoke( const xrtcallable* pCallable, const xrtcallframe* pFrame, xrtcallresult* pResult ); */
result = xrtCallableInvoke();