当前位置: 首页>>代码示例>>C++>>正文


C++ TypeRef::Begin方法代码示例

本文整理汇总了C++中TypeRef::Begin方法的典型用法代码示例。如果您正苦于以下问题:C++ TypeRef::Begin方法的具体用法?C++ TypeRef::Begin怎么用?C++ TypeRef::Begin使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在TypeRef的用法示例。


在下文中一共展示了TypeRef::Begin方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: _NextInstruction

// Convert variant to data of given type. Error if the data types don't match
VIREO_FUNCTION_SIGNATURET(VariantToData, VariantToDataParamBlock)
{
    ErrorCluster *errPtr = _ParamPointer(ErrorClust);
    if (!errPtr || !errPtr->status) {
        TypeRef inputType = _ParamImmediate(InputData._paramType);
        void* inputData = _ParamImmediate(InputData)._pData;

        TypeRef targetType = _ParamPointer(TargetType);
        TypeRef outputType = _ParamImmediate(OutputData._paramType);
        void* outputData = _ParamImmediate(OutputData)._pData;

        if (targetType->IsStaticTypeWildcard() || (!outputType->IsStaticTypeAndDataWildcard() && !outputType->IsA(targetType, true))) {
            // In VIA, TargetType is a required argument. Generated VIA from G must guarantee this.
            // If TargetType is optional, just throw internal error and exit.
            // OutputData is optional. However, if supplied, outputType MUST be same as targetType. Generated VIA from G must guarantee this.
            // If violated, just throw internal error and exit.
            // We should not throw valid LV errors.
            if (errPtr)
                errPtr->SetErrorAndAppendCallChain(true, kUnspecifiedError, "Variant To Data");
            return _NextInstruction();
        }

        if (inputType->IsVariant()) {
            VariantTypeRef variant = *reinterpret_cast<VariantTypeRef *>_ParamImmediate(InputData._pData);
            if (VariantType::IsNullVariant(variant)) {
                if (errPtr)
                    errPtr->SetErrorAndAppendCallChain(true, kVariantIncompatibleType, "Variant To Data");
            } else {
                TypeRef underlyingType = variant->_underlyingTypeRef;
                if (targetType->IsVariant()) {
                    if (outputData)
                        *static_cast<VariantTypeRef *>(outputData) = VariantType::CreateNewVariantFromType(underlyingType);
                } else if (underlyingType->IsA(targetType, true)) {
                    if (outputData)
                        targetType->CopyData(underlyingType->Begin(kPARead), outputData);
                } else if (errPtr) {
                    VariantType::SetVariantToDataTypeError(underlyingType, targetType, outputType, outputData, errPtr);
                }
            }
        } else {
开发者ID:cglzaguilar,项目名称:VireoSDK,代码行数:41,代码来源:Variants.cpp


注:本文中的TypeRef::Begin方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。