/* Copyright (c) 2024 PTC Inc. and/or Its Subsidiary Companies. All Rights Reserved. */ #include <ProToolkit.h> #include <ProUdf.h> #include <PTUDFExamples.h> #include <PTUDFExDashboardStructs.h> /*======================================================================================================*\ FUNCTION: PTUDFExUpdateReferences PURPOSE: Update data related to references needed by the current selected UDF. \*======================================================================================================*/ void PTUDFExUpdateReferences (PTUDFExUdfdata* db_udf_data) { ProUdfRequiredRef* req_ref_array; int size; int i; /*-----------------------------------------------------------------------------------------------------*\ Check the number of references required by this UDF data \*-----------------------------------------------------------------------------------------------------*/ status = ProUdfdataRequiredreferencesGet (db_udf_data->udf_data, &req_ref_array); PT_TEST_LOG_SUCC ("ProUdfdataRequiredreferencesGet()"); ProArraySizeGet (req_ref_array, &size); db_udf_data->num_references = size; ProArrayAlloc (size, sizeof (PTUDFExReference), 1, (ProArray*)&db_udf_data->reference_array); for (i = 0; i < size; i ++) { status = ProUdfrequiredrefPromptGet (req_ref_array [i], db_udf_data->reference_array[i].prompt); PT_TEST_LOG_SUCC ("ProUdfrequiredrefPromptGet()"); status = ProUdfrequiredrefTypeGet (req_ref_array [i], &db_udf_data->reference_array[i].type); PT_TEST_LOG_SUCC ("ProUdfrequiredrefTypeGet()"); db_udf_data->reference_array[i].sel_ref = NULL; } } /*======================================================================================================*\ FUNCTION: PTUDFExUpdateVarparams PURPOSE: Update data related to variable parameters available to the current selected UDF. \*======================================================================================================*/ void PTUDFExUpdateVarparams (PTUDFExUdfdata* db_udf_data) { ProUdfvarparam* var_param_array; int size; int i; status = ProUdfdataVarparamsGet (db_udf_data->udf_data, &var_param_array); PT_TEST_LOG_SUCC ("ProUdfdataVarparamsGet()"); if (status == PRO_TK_NO_ERROR) { status = ProArraySizeGet (var_param_array, &size); PT_TEST_LOG_SUCC ("ProArraySizeGet()"); status = ProArrayAlloc (size, sizeof (PTUDFExVarParam), 1, (ProArray*)&db_udf_data->varparam_array); PT_TEST_LOG_SUCC ("ProArrayAlloc()"); for (i = 0; i < size; i++) { ProModelitem owner_item; status = ProUdfvarparamNameGet (var_param_array [i], db_udf_data->varparam_array[i].param_name); PT_TEST_LOG_SUCC ("ProUdfvarparamNameGet()"); status = ProUdfvarparamOwnerGet (var_param_array [i], &owner_item); PT_TEST_LOG_SUCC ("ProUdfvardimOwnerGet()"); db_udf_data->varparam_array[i].owner_id = owner_item.id; db_udf_data->varparam_array[i].owner_type = owner_item.type; status = ProUdfvarparamDefaultvalueGet (var_param_array [i], &db_udf_data->varparam_array[i].value); PT_TEST_LOG_SUCC ("ProUdfvardimDefaultvalueGet()"); } ProUdfvarparamProarrayFree (var_param_array); db_udf_data->num_varparams = size; } } /*======================================================================================================*\ FUNCTION: PTUDFExUpdateVardims PURPOSE: Update data related to variable dimensions available to the current selected UDF. \*======================================================================================================*/ void PTUDFExUpdateVardims (PTUDFExUdfdata* db_udf_data) { ProUdfvardim* var_dim_array; int size; int i; status = ProUdfdataVardimsGet (db_udf_data->udf_data, &var_dim_array); PT_TEST_LOG_SUCC ("ProUdfdataVardimsGet()"); if (status == PRO_TK_NO_ERROR) { status = ProArraySizeGet (var_dim_array, &size); PT_TEST_LOG_SUCC ("ProArraySizeGet()"); status = ProArrayAlloc (size, sizeof (PTUDFExVarDim), 1, (ProArray*)&db_udf_data->vardim_array); PT_TEST_LOG_SUCC ("ProArrayAlloc()"); for (i = 0; i < size; i++) { status = ProUdfvardimPromptGet (var_dim_array [i], db_udf_data->vardim_array[i].prompt); PT_TEST_LOG_SUCC ("ProUdfvardimPromptGet()"); status = ProUdfvardimNameGet (var_dim_array [i], db_udf_data->vardim_array[i].dim_symbol); PT_TEST_LOG_SUCC ("ProUdfvardimNameGet()"); status = ProUdfvardimDefaultvalueGet (var_dim_array [i], &db_udf_data->vardim_array[i].type, &db_udf_data->vardim_array[i].value); PT_TEST_LOG_SUCC ("ProUdfvardimDefaultvalueGet()"); } ProUdfvardimProarrayFree (var_dim_array); db_udf_data->num_vardims = size; } } /*======================================================================================================*\ FUNCTION: PTUDFExUpdateInstances PURPOSE: Update data related to instances available to the current selected UDF. \*======================================================================================================*/ void PTUDFExUpdateInstances (PTUDFExUdfdata* db_udf_data) { status = ProUdfdataInstancenamesGet (db_udf_data->udf_data, &db_udf_data->instance_names); PT_TEST_LOG_SUCC ("ProUdfdataInstancenamesGet()"); }