X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=shared%2Fmidi_mapper_util.h;h=072494e07606dee1f576e2f1e6ef8574189535ff;hb=43be1e6d8d769da60b694aa09c58e589bdbc39af;hp=9120fc8719998f97575193e4e739c25aa7f65f58;hpb=6da5e74d3e13c307de29bd540ff4ce8371000efd;p=nageru diff --git a/shared/midi_mapper_util.h b/shared/midi_mapper_util.h index 9120fc8..072494e 100644 --- a/shared/midi_mapper_util.h +++ b/shared/midi_mapper_util.h @@ -7,31 +7,43 @@ #include template -inline bool match_controller_helper(const Proto &msg, int field_number, int controller) +inline int get_controller_mapping_helper(const Proto &msg, int field_number, int default_value) { using namespace google::protobuf; const FieldDescriptor *descriptor = msg.GetDescriptor()->FindFieldByNumber(field_number); const Reflection *reflection = msg.GetReflection(); if (!reflection->HasField(msg, descriptor)) { - return false; + return default_value; } const MIDIControllerProto &controller_proto = static_cast(reflection->GetMessage(msg, descriptor)); - return (controller_proto.controller_number() == controller); + return controller_proto.controller_number(); } template -inline bool match_button_helper(const Proto &msg, int field_number, int note) +inline bool match_controller_helper(const Proto &msg, int field_number, int controller) +{ + return (get_controller_mapping_helper(msg, field_number, -1) == controller); +} + +template +inline int get_button_mapping_helper(const Proto &msg, int field_number, int default_value) { using namespace google::protobuf; const FieldDescriptor *descriptor = msg.GetDescriptor()->FindFieldByNumber(field_number); const Reflection *reflection = msg.GetReflection(); if (!reflection->HasField(msg, descriptor)) { - return false; + return default_value; } const MIDIButtonProto &button_proto = static_cast(reflection->GetMessage(msg, descriptor)); - return (button_proto.note_number() == note); + return button_proto.note_number(); +} + +template +inline bool match_button_helper(const Proto &msg, int field_number, int note) +{ + return (get_button_mapping_helper(msg, field_number, -1) == note); } template