mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 21:42:43 +00:00 
			
		
		
		
	 6e19ab2bbc
			
		
	
	
		6e19ab2bbc
		
	
	
	
	
		
			
			We have a new, improved string type coming up in AK (OOM aware, no null state), and while it's going to use UTF-8, the name UTF8String is a mouthful - so let's free up the String name by renaming the existing class. Making the old one have an annoying name will hopefully also help with quick adoption :^)
		
			
				
	
	
		
			26 lines
		
	
	
	
		
			1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			26 lines
		
	
	
	
		
			1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /*
 | |
|  * Copyright (c) 2022, Sam Atkins <atkinssj@serenityos.org>
 | |
|  *
 | |
|  * SPDX-License-Identifier: BSD-2-Clause
 | |
|  */
 | |
| 
 | |
| #pragma once
 | |
| 
 | |
| #include <AK/DeprecatedString.h>
 | |
| #include <LibUnicode/CharacterTypes.h>
 | |
| 
 | |
| template<typename Callback>
 | |
| void for_each_character_containing(StringView query, Callback callback)
 | |
| {
 | |
|     DeprecatedString uppercase_query = query.to_uppercase_string();
 | |
|     StringView uppercase_query_view = uppercase_query.view();
 | |
|     constexpr u32 maximum_code_point = 0x10FFFF;
 | |
|     // FIXME: There's probably a better way to do this than just looping, but it still only takes ~150ms to run for me!
 | |
|     for (u32 code_point = 1; code_point <= maximum_code_point; ++code_point) {
 | |
|         if (auto maybe_display_name = Unicode::code_point_display_name(code_point); maybe_display_name.has_value()) {
 | |
|             auto display_name = maybe_display_name.release_value();
 | |
|             if (display_name.contains(uppercase_query_view, AK::CaseSensitivity::CaseSensitive))
 | |
|                 callback(code_point, move(display_name));
 | |
|         }
 | |
|     }
 | |
| }
 |