Line data Source code
1 : /* File: gui_error_info_printer.c; Copyright and License: see below */
2 :
3 : #include "gui_error_info_printer.h"
4 : #include "u8/u8_trace.h"
5 : #include "u8/u8_log.h"
6 : #include <assert.h>
7 :
8 0 : void gui_error_info_printer_init ( gui_error_info_printer_t *this_ )
9 : {
10 0 : U8_TRACE_BEGIN();
11 :
12 0 : (*this_).dummy = 0; /* prevent warnings on uninitialized usage */
13 :
14 0 : U8_TRACE_END();
15 0 : }
16 :
17 0 : void gui_error_info_printer_destroy ( gui_error_info_printer_t *this_ )
18 : {
19 0 : U8_TRACE_BEGIN();
20 :
21 0 : U8_TRACE_END();
22 0 : }
23 :
24 0 : u8_error_t gui_error_info_printer_show_error_info ( gui_error_info_printer_t *this_,
25 : const u8_error_info_t *err_info,
26 : utf8stringbuf_t out_buf )
27 : {
28 0 : U8_TRACE_BEGIN();
29 0 : u8_error_t result = U8_ERROR_NONE;
30 :
31 : /* update content text: */
32 0 : switch ( u8_error_info_get_error( err_info ) )
33 : {
34 0 : case U8_ERROR_LEXICAL_STRUCTURE:
35 : {
36 0 : result |= utf8stringbuf_append_str( &out_buf, "Lexical error in input" );
37 : }
38 0 : break;
39 :
40 0 : case U8_ERROR_PARSER_STRUCTURE:
41 : {
42 0 : result |= utf8stringbuf_append_str( &out_buf, "Parser error in input" );
43 : }
44 0 : break;
45 :
46 0 : case U8_ERROR_STRING_BUFFER_EXCEEDED:
47 : {
48 0 : result |= utf8stringbuf_append_str( &out_buf, "String too long in input" );
49 : }
50 0 : break;
51 :
52 0 : case U8_ERROR_VALUE_OUT_OF_RANGE:
53 : {
54 0 : result |= utf8stringbuf_append_str( &out_buf, "Illegal value in input" );
55 : }
56 0 : break;
57 :
58 0 : default:
59 : {
60 0 : result |= utf8stringbuf_append_str( &out_buf, "Error x" );
61 0 : result |= utf8stringbuf_append_hex( &out_buf, u8_error_info_get_error( err_info ) );
62 0 : result |= utf8stringbuf_append_str( &out_buf, " occurred" );
63 : }
64 0 : break;
65 : }
66 :
67 0 : switch ( u8_error_info_get_unit ( err_info ) )
68 : {
69 0 : case U8_ERROR_INFO_UNIT_LINE:
70 : {
71 0 : result |= utf8stringbuf_append_str( &out_buf, " at line " );
72 0 : result |= utf8stringbuf_append_int( &out_buf, u8_error_info_get_line( err_info ) );
73 : }
74 0 : break;
75 :
76 0 : case U8_ERROR_INFO_UNIT_NAME:
77 : {
78 0 : result |= utf8stringbuf_append_str( &out_buf, " at name " );
79 0 : result |= utf8stringbuf_append_str( &out_buf, u8_error_info_get_name( err_info ) );
80 : }
81 0 : break;
82 :
83 0 : case U8_ERROR_INFO_UNIT_LINE_NAME:
84 : {
85 0 : result |= utf8stringbuf_append_str( &out_buf, " at name " );
86 0 : result |= utf8stringbuf_append_str( &out_buf, u8_error_info_get_name( err_info ) );
87 0 : result |= utf8stringbuf_append_str( &out_buf, " at line " );
88 0 : result |= utf8stringbuf_append_int( &out_buf, u8_error_info_get_line( err_info ) );
89 : }
90 0 : break;
91 :
92 0 : default:
93 : {
94 : /* no further information to add */
95 : }
96 0 : break;
97 : }
98 :
99 0 : U8_TRACE_END_ERR( result );
100 0 : return result;
101 : }
102 :
103 :
104 : /*
105 : Copyright 2022-2025 Andreas Warnke
106 :
107 : Licensed under the Apache License, Version 2.0 (the "License");
108 : you may not use this file except in compliance with the License.
109 : You may obtain a copy of the License at
110 :
111 : http://www.apache.org/licenses/LICENSE-2.0
112 :
113 : Unless required by applicable law or agreed to in writing, software
114 : distributed under the License is distributed on an "AS IS" BASIS,
115 : WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
116 : See the License for the specific language governing permissions and
117 : limitations under the License.
118 : */
|