MCPcopy Create free account
hub / github.com/Santroller/Santroller / load_mapping

Function load_mapping

src/config.cpp:547–646  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

545 return true;
546}
547bool 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;

Callers

nothing calls this directly

Calls 2

pb_decodeFunction · 0.85
make_inputFunction · 0.85

Tested by

no test coverage detected