@@ -72,31 +72,12 @@ const EnumStringMap<Button> BUTTON_CODE_STRINGS{
7272
7373std::string button_to_string (Button button){
7474 std::string str;
75- if (button & BUTTON_Y) str += BUTTON_STRINGS.get_string (BUTTON_Y) + " " ;
76- if (button & BUTTON_B) str += BUTTON_STRINGS.get_string (BUTTON_B) + " " ;
77- if (button & BUTTON_A) str += BUTTON_STRINGS.get_string (BUTTON_A) + " " ;
78- if (button & BUTTON_X) str += BUTTON_STRINGS.get_string (BUTTON_X) + " " ;
79- if (button & BUTTON_L) str += BUTTON_STRINGS.get_string (BUTTON_L) + " " ;
80- if (button & BUTTON_R) str += BUTTON_STRINGS.get_string (BUTTON_R) + " " ;
81- if (button & BUTTON_ZL) str += BUTTON_STRINGS.get_string (BUTTON_ZL) + " " ;
82- if (button & BUTTON_ZR) str += BUTTON_STRINGS.get_string (BUTTON_ZR) + " " ;
83- if (button & BUTTON_MINUS) str += BUTTON_STRINGS.get_string (BUTTON_MINUS) + " " ;
84- if (button & BUTTON_PLUS) str += BUTTON_STRINGS.get_string (BUTTON_PLUS) + " " ;
85- if (button & BUTTON_LCLICK) str += BUTTON_STRINGS.get_string (BUTTON_LCLICK) + " " ;
86- if (button & BUTTON_RCLICK) str += BUTTON_STRINGS.get_string (BUTTON_RCLICK) + " " ;
87- if (button & BUTTON_HOME) str += BUTTON_STRINGS.get_string (BUTTON_HOME) + " " ;
88- if (button & BUTTON_CAPTURE) str += BUTTON_STRINGS.get_string (BUTTON_CAPTURE) + " " ;
89- if (button & BUTTON_GR) str += BUTTON_STRINGS.get_string (BUTTON_GR) + " " ;
90- if (button & BUTTON_GL) str += BUTTON_STRINGS.get_string (BUTTON_GL) + " " ;
91- if (button & BUTTON_UP) str += BUTTON_STRINGS.get_string (BUTTON_UP) + " " ;
92- if (button & BUTTON_RIGHT) str += BUTTON_STRINGS.get_string (BUTTON_RIGHT) + " " ;
93- if (button & BUTTON_DOWN) str += BUTTON_STRINGS.get_string (BUTTON_DOWN) + " " ;
94- if (button & BUTTON_LEFT) str += BUTTON_STRINGS.get_string (BUTTON_LEFT) + " " ;
95- if (button & BUTTON_LEFT_SL) str += BUTTON_STRINGS.get_string (BUTTON_LEFT_SL) + " " ;
96- if (button & BUTTON_LEFT_SR) str += BUTTON_STRINGS.get_string (BUTTON_LEFT_SR) + " " ;
97- if (button & BUTTON_RIGHT_SL) str += BUTTON_STRINGS.get_string (BUTTON_RIGHT_SL) + " " ;
98- if (button & BUTTON_RIGHT_SR) str += BUTTON_STRINGS.get_string (BUTTON_RIGHT_SR) + " " ;
99- if (button & BUTTON_C) str += BUTTON_STRINGS.get_string (BUTTON_C) + " " ;
75+ for (auto iter = BUTTON_STRINGS.begin (); iter != BUTTON_STRINGS.end (); ++iter){
76+ if (iter->first & button){
77+ str += iter->second + " " ;
78+ }
79+ }
80+
10081 if (str.empty ()){
10182 str = BUTTON_STRINGS.get_string (BUTTON_NONE);
10283 }
@@ -119,36 +100,18 @@ Button string_to_button(std::string multi_button_string){
119100
120101std::string button_to_code_string (Button button){
121102 std::string str;
122- if (button & BUTTON_Y) str += BUTTON_CODE_STRINGS.get_string (BUTTON_Y) + " | " ;
123- if (button & BUTTON_B) str += BUTTON_CODE_STRINGS.get_string (BUTTON_B) + " | " ;
124- if (button & BUTTON_A) str += BUTTON_CODE_STRINGS.get_string (BUTTON_A) + " | " ;
125- if (button & BUTTON_X) str += BUTTON_CODE_STRINGS.get_string (BUTTON_X) + " | " ;
126- if (button & BUTTON_L) str += BUTTON_CODE_STRINGS.get_string (BUTTON_L) + " | " ;
127- if (button & BUTTON_R) str += BUTTON_CODE_STRINGS.get_string (BUTTON_R) + " | " ;
128- if (button & BUTTON_ZL) str += BUTTON_CODE_STRINGS.get_string (BUTTON_ZL) + " | " ;
129- if (button & BUTTON_ZR) str += BUTTON_CODE_STRINGS.get_string (BUTTON_ZR) + " | " ;
130- if (button & BUTTON_MINUS) str += BUTTON_CODE_STRINGS.get_string (BUTTON_MINUS) + " | " ;
131- if (button & BUTTON_PLUS) str += BUTTON_CODE_STRINGS.get_string (BUTTON_PLUS) + " | " ;
132- if (button & BUTTON_LCLICK) str += BUTTON_CODE_STRINGS.get_string (BUTTON_LCLICK) + " | " ;
133- if (button & BUTTON_RCLICK) str += BUTTON_CODE_STRINGS.get_string (BUTTON_RCLICK) + " | " ;
134- if (button & BUTTON_HOME) str += BUTTON_CODE_STRINGS.get_string (BUTTON_HOME) + " | " ;
135- if (button & BUTTON_CAPTURE) str += BUTTON_CODE_STRINGS.get_string (BUTTON_CAPTURE) + " | " ;
136- if (button & BUTTON_GR) str += BUTTON_CODE_STRINGS.get_string (BUTTON_GR) + " | " ;
137- if (button & BUTTON_GL) str += BUTTON_CODE_STRINGS.get_string (BUTTON_GL) + " | " ;
138- if (button & BUTTON_UP) str += BUTTON_CODE_STRINGS.get_string (BUTTON_UP) + " | " ;
139- if (button & BUTTON_RIGHT) str += BUTTON_CODE_STRINGS.get_string (BUTTON_RIGHT) + " | " ;
140- if (button & BUTTON_DOWN) str += BUTTON_CODE_STRINGS.get_string (BUTTON_DOWN) + " | " ;
141- if (button & BUTTON_LEFT) str += BUTTON_CODE_STRINGS.get_string (BUTTON_LEFT) + " | " ;
142- if (button & BUTTON_LEFT_SL) str += BUTTON_CODE_STRINGS.get_string (BUTTON_LEFT_SL) + " | " ;
143- if (button & BUTTON_LEFT_SR) str += BUTTON_CODE_STRINGS.get_string (BUTTON_LEFT_SR) + " | " ;
144- if (button & BUTTON_RIGHT_SL) str += BUTTON_CODE_STRINGS.get_string (BUTTON_RIGHT_SL) + " | " ;
145- if (button & BUTTON_RIGHT_SR) str += BUTTON_CODE_STRINGS.get_string (BUTTON_RIGHT_SR) + " | " ;
146- if (button & BUTTON_C) str += BUTTON_CODE_STRINGS.get_string (BUTTON_C) + " | " ;
103+ std::string logical_or = " | " ;
104+ for (auto iter = BUTTON_CODE_STRINGS.begin (); iter != BUTTON_CODE_STRINGS.end (); ++iter){
105+ if (iter->first & button){
106+ str += iter->second + logical_or;
107+ }
108+ }
109+
147110 if (str.empty ()){
148111 str = BUTTON_CODE_STRINGS.get_string (BUTTON_NONE);
149112 }
150- if (str.substr (str.size () - 3 ) == " | " ){
151- str = str.substr (0 , str.size () - 3 );
113+ if (str.substr (str.size () - logical_or. size ()) == logical_or){ // remove trailing " | "
114+ str = str.substr (0 , str.size () - logical_or. size () );
152115 }
153116 return str;
154117}
0 commit comments