You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
161 lines
3.3 KiB
161 lines
3.3 KiB
#include "AP_Scripting_helpers.h" |
|
|
|
/// Fast param access via pointer helper class |
|
|
|
// init by name |
|
bool Parameter::init(const char *name) |
|
{ |
|
vp = AP_Param::find(name, &vtype); |
|
if (vp == nullptr) { |
|
return false; |
|
} |
|
return true; |
|
} |
|
|
|
// init by info, to get the value of old params |
|
bool Parameter::init_by_info(uint16_t key, uint32_t group_element, enum ap_var_type type) |
|
{ |
|
switch (type) { |
|
case AP_PARAM_INT8: |
|
vp = new AP_Int8; |
|
break; |
|
case AP_PARAM_INT16: |
|
vp = new AP_Int16; |
|
break; |
|
case AP_PARAM_INT32: |
|
vp = new AP_Int32; |
|
break; |
|
case AP_PARAM_FLOAT: |
|
vp = new AP_Float; |
|
break; |
|
default: |
|
return false; |
|
} |
|
if (vp == nullptr) { |
|
return false; |
|
} |
|
vtype = type; |
|
AP_Param::ConversionInfo info = { |
|
key, |
|
group_element, |
|
type, |
|
nullptr |
|
}; |
|
return AP_Param::find_old_parameter(&info, vp); |
|
} |
|
|
|
// set a value |
|
bool Parameter::set(float value) |
|
{ |
|
if (vp == nullptr) { |
|
return false; |
|
} |
|
switch (vtype) { |
|
case AP_PARAM_INT8: |
|
((AP_Int8 *)vp)->set(value); |
|
return true; |
|
case AP_PARAM_INT16: |
|
((AP_Int16 *)vp)->set(value); |
|
return true; |
|
case AP_PARAM_INT32: |
|
((AP_Int32 *)vp)->set(value); |
|
return true; |
|
case AP_PARAM_FLOAT: |
|
((AP_Float *)vp)->set(value); |
|
return true; |
|
default: |
|
break; |
|
} |
|
// not a supported type |
|
return false; |
|
} |
|
|
|
// get value |
|
bool Parameter::get(float &value) |
|
{ |
|
if (vp == nullptr) { |
|
return false; |
|
} |
|
switch (vtype) { |
|
case AP_PARAM_INT8: |
|
value = ((AP_Int8 *)vp)->get(); |
|
break; |
|
case AP_PARAM_INT16: |
|
value = ((AP_Int16 *)vp)->get(); |
|
break; |
|
|
|
case AP_PARAM_INT32: |
|
value = ((AP_Int32 *)vp)->get(); |
|
break; |
|
|
|
case AP_PARAM_FLOAT: |
|
value = ((AP_Float *)vp)->get(); |
|
break; |
|
|
|
default: |
|
// not a supported type |
|
return false; |
|
} |
|
return true; |
|
} |
|
|
|
// set and save value |
|
bool Parameter::set_and_save(float value) |
|
{ |
|
if (vp == nullptr) { |
|
return false; |
|
} |
|
switch (vtype) { |
|
case AP_PARAM_INT8: |
|
((AP_Int8 *)vp)->set_and_save(value); |
|
return true; |
|
case AP_PARAM_INT16: |
|
((AP_Int16 *)vp)->set_and_save(value); |
|
return true; |
|
case AP_PARAM_INT32: |
|
((AP_Int32 *)vp)->set_and_save(value); |
|
return true; |
|
case AP_PARAM_FLOAT: |
|
((AP_Float *)vp)->set_and_save(value); |
|
return true; |
|
default: |
|
break; |
|
} |
|
// not a supported type |
|
return false; |
|
} |
|
|
|
// Check if param had been configured |
|
bool Parameter::configured() |
|
{ |
|
if (vp == nullptr) { |
|
return false; |
|
} |
|
return vp->configured(); |
|
} |
|
|
|
// set default value |
|
bool Parameter::set_default(float value) |
|
{ |
|
if (vp == nullptr) { |
|
return false; |
|
} |
|
switch (vtype) { |
|
case AP_PARAM_INT8: |
|
((AP_Int8 *)vp)->set_default(value); |
|
return true; |
|
case AP_PARAM_INT16: |
|
((AP_Int16 *)vp)->set_default(value); |
|
return true; |
|
case AP_PARAM_INT32: |
|
((AP_Int32 *)vp)->set_default(value); |
|
return true; |
|
case AP_PARAM_FLOAT: |
|
((AP_Float *)vp)->set_default(value); |
|
return true; |
|
default: |
|
break; |
|
} |
|
// not a supported type |
|
return false; |
|
}
|
|
|