mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 00:32:45 +00:00 
			
		
		
		
	LibGfx/PortableFormat: Make read_whitespace return an ErrorOr
				
					
				
			This commit is contained in:
		
							parent
							
								
									74f893e9f4
								
							
						
					
					
						commit
						bab2113ec1
					
				
					 3 changed files with 23 additions and 19 deletions
				
			
		|  | @ -39,7 +39,7 @@ bool read_image_data(PGMLoadingContext& context, Streamer& streamer) | |||
|                 break; | ||||
|             auto value = number_or_error.value(); | ||||
| 
 | ||||
|             if (!read_whitespace(context, streamer)) | ||||
|             if (read_whitespace(context, streamer).is_error()) | ||||
|                 break; | ||||
| 
 | ||||
|             color_data.append({ (u8)value, (u8)value, (u8)value }); | ||||
|  |  | |||
|  | @ -27,21 +27,21 @@ bool read_image_data(PPMLoadingContext& context, Streamer& streamer) | |||
|             if (red_or_error.is_error()) | ||||
|                 break; | ||||
| 
 | ||||
|             if (!read_whitespace(context, streamer)) | ||||
|             if (read_whitespace(context, streamer).is_error()) | ||||
|                 break; | ||||
| 
 | ||||
|             auto const green_or_error = read_number(streamer); | ||||
|             if (green_or_error.is_error()) | ||||
|                 break; | ||||
| 
 | ||||
|             if (!read_whitespace(context, streamer)) | ||||
|             if (read_whitespace(context, streamer).is_error()) | ||||
|                 break; | ||||
| 
 | ||||
|             auto const blue_or_error = read_number(streamer); | ||||
|             if (blue_or_error.is_error()) | ||||
|                 break; | ||||
| 
 | ||||
|             if (!read_whitespace(context, streamer)) | ||||
|             if (read_whitespace(context, streamer).is_error()) | ||||
|                 break; | ||||
| 
 | ||||
|             Color color { (u8)red_or_error.value(), (u8)green_or_error.value(), (u8)blue_or_error.value() }; | ||||
|  |  | |||
|  | @ -109,25 +109,29 @@ static bool read_magic_number(TContext& context, Streamer& streamer) | |||
| } | ||||
| 
 | ||||
| template<typename TContext> | ||||
| static bool read_whitespace(TContext& context, Streamer& streamer) | ||||
| static ErrorOr<void> read_whitespace(TContext& context, Streamer& streamer) | ||||
| { | ||||
|     bool exist = false; | ||||
|     bool is_first_char = true; | ||||
|     u8 byte {}; | ||||
| 
 | ||||
|     while (streamer.read(byte)) { | ||||
|         if (byte == ' ' || byte == '\t' || byte == '\n' || byte == '\r') { | ||||
|             exist = true; | ||||
|         } else if (byte == '#') { | ||||
|         if (byte == '#') { | ||||
|             streamer.step_back(); | ||||
|             if (read_comment(context, streamer).is_error()) | ||||
|                 return false; | ||||
|         } else { | ||||
|             streamer.step_back(); | ||||
|             return exist; | ||||
|             TRY(read_comment(context, streamer)); | ||||
|             continue; | ||||
|         } | ||||
|         if (byte != ' ' && byte != '\t' && byte != '\n' && byte != '\r') { | ||||
|             streamer.step_back(); | ||||
|             if (is_first_char) | ||||
|                 return Error::from_string_literal("Can't read whitespace from stream"); | ||||
|             break; | ||||
|         } | ||||
| 
 | ||||
|         if (is_first_char) | ||||
|             is_first_char = false; | ||||
|     } | ||||
| 
 | ||||
|     return exist; | ||||
|     return {}; | ||||
| } | ||||
| 
 | ||||
| template<typename TContext> | ||||
|  | @ -212,13 +216,13 @@ static bool decode(TContext& context) | |||
|     if (!read_magic_number(context, streamer)) | ||||
|         return false; | ||||
| 
 | ||||
|     if (!read_whitespace(context, streamer)) | ||||
|     if (read_whitespace(context, streamer).is_error()) | ||||
|         return false; | ||||
| 
 | ||||
|     if (!read_width(context, streamer)) | ||||
|         return false; | ||||
| 
 | ||||
|     if (!read_whitespace(context, streamer)) | ||||
|     if (read_whitespace(context, streamer).is_error()) | ||||
|         return false; | ||||
| 
 | ||||
|     if (!read_height(context, streamer)) | ||||
|  | @ -229,14 +233,14 @@ static bool decode(TContext& context) | |||
|         return false; | ||||
|     } | ||||
| 
 | ||||
|     if (!read_whitespace(context, streamer)) | ||||
|     if (read_whitespace(context, streamer).is_error()) | ||||
|         return false; | ||||
| 
 | ||||
|     if constexpr (requires { context.format_details.max_val; }) { | ||||
|         if (!read_max_val(context, streamer)) | ||||
|             return false; | ||||
| 
 | ||||
|         if (!read_whitespace(context, streamer)) | ||||
|         if (read_whitespace(context, streamer).is_error()) | ||||
|             return false; | ||||
|     } | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Lucas CHOLLET
						Lucas CHOLLET