本文整理汇总了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 {