@@ -166,24 +166,49 @@ class StringName {
166166 static StringName search (const String &p_name);
167167
168168 struct AlphCompare {
169- _FORCE_INLINE_ bool operator ()(const StringName &l, const StringName &r) const {
169+ template <typename LT, typename RT>
170+ _FORCE_INLINE_ bool operator ()(const LT &l, const RT &r) const {
171+ return compare (l, r);
172+ }
173+ _FORCE_INLINE_ static bool compare (const StringName &l, const StringName &r) {
170174 const char *l_cname = l._data ? l._data ->cname : " " ;
171175 const char *r_cname = r._data ? r._data ->cname : " " ;
172176
173177 if (l_cname) {
174178 if (r_cname) {
175- return is_str_less (l_cname, r_cname);
179+ return str_compare (l_cname, r_cname) < 0 ;
176180 } else {
177- return is_str_less (l_cname, r._data ->name .ptr ());
181+ return str_compare (l_cname, r._data ->name .ptr ()) < 0 ;
178182 }
179183 } else {
180184 if (r_cname) {
181- return is_str_less (l._data ->name .ptr (), r_cname);
185+ return str_compare (l._data ->name .ptr (), r_cname) < 0 ;
182186 } else {
183- return is_str_less (l._data ->name .ptr (), r._data ->name .ptr ());
187+ return str_compare (l._data ->name .ptr (), r._data ->name .ptr ()) < 0 ;
184188 }
185189 }
186190 }
191+ _FORCE_INLINE_ static bool compare (const String &l, const StringName &r) {
192+ const char *r_cname = r._data ? r._data ->cname : " " ;
193+
194+ if (r_cname) {
195+ return str_compare (l.get_data (), r_cname) < 0 ;
196+ } else {
197+ return str_compare (l.get_data (), r._data ->name .ptr ()) < 0 ;
198+ }
199+ }
200+ _FORCE_INLINE_ static bool compare (const StringName &l, const String &r) {
201+ const char *l_cname = l._data ? l._data ->cname : " " ;
202+
203+ if (l_cname) {
204+ return str_compare (l_cname, r.get_data ()) < 0 ;
205+ } else {
206+ return str_compare (l._data ->name .ptr (), r.get_data ()) < 0 ;
207+ }
208+ }
209+ _FORCE_INLINE_ static bool compare (const String &l, const String &r) {
210+ return str_compare (l.get_data (), r.get_data ()) < 0 ;
211+ }
187212 };
188213
189214 StringName &operator =(const StringName &p_name);
0 commit comments