VX_INT_API vx_bool vxIsValidType(vx_enum type) { vx_bool ret = vx_false_e; if (type <= VX_TYPE_INVALID) { ret = vx_false_e; } else if (VX_TYPE_IS_SCALAR(type)) /* some scalar */ { ret = vx_true_e; } else if (VX_TYPE_IS_STRUCT(type)) /* some struct */ { ret = vx_true_e; } else if (VX_TYPE_IS_OBJECT(type)) /* some object */ { ret = vx_true_e; } #ifdef OPENVX_KHR_XML else if (type == VX_TYPE_IMPORT) /* import type extension */ { ret = vx_true_e; } #endif else { VX_PRINT(VX_ZONE_ERROR, "Type 0x%08x is invalid!\n"); } return ret; /* otherwise, not a valid type */ }
VX_API_ENTRY vx_scalar VX_API_CALL vxCreateScalar(vx_context context, vx_enum data_type, void *ptr) { vx_scalar scalar = NULL; if (vxIsValidContext(context) == vx_false_e) return 0; if (!VX_TYPE_IS_SCALAR(data_type)) { VX_PRINT(VX_ZONE_ERROR, "Invalid type to scalar\n"); vxAddLogEntry(&context->base, VX_ERROR_INVALID_TYPE, "Invalid type to scalar\n"); scalar = (vx_scalar)vxGetErrorObject(context, VX_ERROR_INVALID_TYPE); } else { scalar = (vx_scalar)vxCreateReference(context, VX_TYPE_SCALAR, VX_EXTERNAL, &context->base); if (scalar && scalar->base.type == VX_TYPE_SCALAR) { scalar->data_type = data_type; vxCommitScalarValue(scalar, ptr); } } return (vx_scalar)scalar; }