| 545 | return true; |
| 546 | } |
| 547 | bool load_mapping(pb_istream_t *stream, const pb_field_t *field, void **arg) |
| 548 | { |
| 549 | auto profile = working_profile; |
| 550 | printf("load_mapping: %p\r\n", profile.get()); |
| 551 | proto_Mapping mapping; |
| 552 | mapping.input.cb_input.funcs.decode = load_input_dev; |
| 553 | mapping.input.cb_input.arg = arg; |
| 554 | pb_decode(stream, proto_Mapping_fields, &mapping); |
| 555 | std::unique_ptr<Input> input = make_input(mapping.input, profile, stream); |
| 556 | if (!input) |
| 557 | { |
| 558 | return true; |
| 559 | } |
| 560 | size_t mapping_id = profile->mappings.size(); |
| 561 | switch (mapping.which_mapping) |
| 562 | { |
| 563 | case proto_Mapping_gamepadAxis_tag: |
| 564 | profile->mappings.emplace_back(new GamepadAxisMapping(mapping, std::move(input), mapping_id, profile->profile_id)); |
| 565 | break; |
| 566 | case proto_Mapping_ghAxis_tag: |
| 567 | profile->mappings.emplace_back(new GuitarHeroGuitarAxisMapping(mapping, std::move(input), mapping_id, profile->profile_id)); |
| 568 | break; |
| 569 | case proto_Mapping_ghButton_tag: |
| 570 | profile->mappings.emplace_back(new GuitarHeroGuitarButtonMapping(mapping, std::move(input), mapping_id, profile->profile_id)); |
| 571 | break; |
| 572 | case proto_Mapping_rbAxis_tag: |
| 573 | profile->mappings.emplace_back(new RockBandGuitarAxisMapping(mapping, std::move(input), mapping_id, profile->profile_id)); |
| 574 | break; |
| 575 | case proto_Mapping_rbButton_tag: |
| 576 | profile->mappings.emplace_back(new RockBandGuitarButtonMapping(mapping, std::move(input), mapping_id, profile->profile_id)); |
| 577 | break; |
| 578 | case proto_Mapping_gamepadButton_tag: |
| 579 | profile->mappings.emplace_back(new GamepadButtonMapping(mapping, std::move(input), mapping_id, profile->profile_id)); |
| 580 | break; |
| 581 | case proto_Mapping_ghDrumButton_tag: |
| 582 | profile->mappings.emplace_back(new GuitarHeroDrumsButtonMapping(mapping, std::move(input), mapping_id, profile->profile_id)); |
| 583 | break; |
| 584 | case proto_Mapping_ghDrumAxis_tag: |
| 585 | profile->mappings.emplace_back(new GuitarHeroDrumsAxisMapping(mapping, std::move(input), mapping_id, profile->profile_id)); |
| 586 | break; |
| 587 | case proto_Mapping_rbDrumButton_tag: |
| 588 | profile->mappings.emplace_back(new RockBandDrumsButtonMapping(mapping, std::move(input), mapping_id, profile->profile_id)); |
| 589 | break; |
| 590 | case proto_Mapping_rbDrumAxis_tag: |
| 591 | profile->mappings.emplace_back(new RockBandDrumsAxisMapping(mapping, std::move(input), mapping_id, profile->profile_id)); |
| 592 | break; |
| 593 | case proto_Mapping_ghlButton_tag: |
| 594 | profile->mappings.emplace_back(new LiveGuitarButtonMapping(mapping, std::move(input), mapping_id, profile->profile_id)); |
| 595 | break; |
| 596 | case proto_Mapping_ghlAxis_tag: |
| 597 | profile->mappings.emplace_back(new LiveGuitarAxisMapping(mapping, std::move(input), mapping_id, profile->profile_id)); |
| 598 | break; |
| 599 | case proto_Mapping_proButton_tag: |
| 600 | profile->mappings.emplace_back(new ProGuitarButtonMapping(mapping, std::move(input), mapping_id, profile->profile_id)); |
| 601 | break; |
| 602 | case proto_Mapping_proAxis_tag: |
| 603 | profile->mappings.emplace_back(new ProGuitarAxisMapping(mapping, std::move(input), mapping_id, profile->profile_id)); |
| 604 | break; |
nothing calls this directly
no test coverage detected