| 489 | } |
| 490 | |
| 491 | lbug_state lbug_value_get_list_element(lbug_value* value, uint64_t index, lbug_value* out_value) { |
| 492 | auto physical_type_id = static_cast<Value*>(value->_value)->getDataType().getPhysicalType(); |
| 493 | if (physical_type_id != PhysicalTypeID::ARRAY && physical_type_id != PhysicalTypeID::STRUCT && |
| 494 | physical_type_id != PhysicalTypeID::LIST) { |
| 495 | return LbugError; |
| 496 | } |
| 497 | auto listValue = static_cast<Value*>(value->_value); |
| 498 | if (index >= NestedVal::getChildrenSize(listValue)) { |
| 499 | return LbugError; |
| 500 | } |
| 501 | try { |
| 502 | auto val = NestedVal::getChildVal(listValue, index); |
| 503 | out_value->_value = val; |
| 504 | out_value->_is_owned_by_cpp = true; |
| 505 | } catch (Exception& e) { |
| 506 | return LbugError; |
| 507 | } |
| 508 | return LbugSuccess; |
| 509 | } |
| 510 | |
| 511 | lbug_state lbug_value_get_struct_num_fields(lbug_value* value, uint64_t* out_result) { |
| 512 | auto physical_type_id = static_cast<Value*>(value->_value)->getDataType().getPhysicalType(); |