| 521 | } |
| 522 | |
| 523 | Status ParseObject(const data::Object& fb_object, Object* object) { |
| 524 | object->access = ToEnum(fb_object.access()); |
| 525 | object->binding = fb_object.binding(); |
| 526 | object->object_type = ToEnum(fb_object.type()); |
| 527 | object->data_type = ToEnum(fb_object.data_type()); |
| 528 | |
| 529 | switch (fb_object.size_type()) { |
| 530 | case data::ObjectSize::Uint3: { |
| 531 | auto* size = fb_object.size_as_Uint3(); |
| 532 | object->size = uint3(size->x(), size->y(), size->z()); |
| 533 | break; |
| 534 | } |
| 535 | case data::ObjectSize::Uint2: { |
| 536 | auto* size = fb_object.size_as_Uint2(); |
| 537 | object->size = uint2(size->x(), size->y()); |
| 538 | break; |
| 539 | } |
| 540 | case data::ObjectSize::Uint1: { |
| 541 | auto* size = fb_object.size_as_Uint1(); |
| 542 | object->size = size->x(); |
| 543 | break; |
| 544 | } |
| 545 | case data::ObjectSize::NONE: |
| 546 | return InvalidArgumentError("Texture size is not set"); |
| 547 | } |
| 548 | |
| 549 | switch (fb_object.object_type()) { |
| 550 | case data::ObjectVariant::ObjectData: { |
| 551 | auto* fb_data = fb_object.object_as_ObjectData(); |
| 552 | object->object = std::vector<uint8_t>( |
| 553 | fb_data->data()->data(), |
| 554 | fb_data->data()->data() + fb_data->data()->size()); |
| 555 | break; |
| 556 | } |
| 557 | case data::ObjectVariant::ObjectRef: { |
| 558 | auto* fb_ref = fb_object.object_as_ObjectRef(); |
| 559 | object->object = fb_ref->global_id(); |
| 560 | break; |
| 561 | } |
| 562 | case data::ObjectVariant::NONE: { |
| 563 | return InvalidArgumentError("Object is not set"); |
| 564 | } |
| 565 | } |
| 566 | return OkStatus(); |
| 567 | } |
| 568 | |
| 569 | CompiledModelOptions ParseParameters(const data::Parameters& fb_parameters) { |
| 570 | CompiledModelOptions options; |