1477794c1SAndrew Rist /**************************************************************
2cdf0e10cSrcweir *
3477794c1SAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one
4477794c1SAndrew Rist * or more contributor license agreements. See the NOTICE file
5477794c1SAndrew Rist * distributed with this work for additional information
6477794c1SAndrew Rist * regarding copyright ownership. The ASF licenses this file
7477794c1SAndrew Rist * to you under the Apache License, Version 2.0 (the
8477794c1SAndrew Rist * "License"); you may not use this file except in compliance
9477794c1SAndrew Rist * with the License. You may obtain a copy of the License at
10cdf0e10cSrcweir *
11477794c1SAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0
12cdf0e10cSrcweir *
13477794c1SAndrew Rist * Unless required by applicable law or agreed to in writing,
14477794c1SAndrew Rist * software distributed under the License is distributed on an
15477794c1SAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16477794c1SAndrew Rist * KIND, either express or implied. See the License for the
17477794c1SAndrew Rist * specific language governing permissions and limitations
18477794c1SAndrew Rist * under the License.
19cdf0e10cSrcweir *
20477794c1SAndrew Rist *************************************************************/
21477794c1SAndrew Rist
22cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
23cdf0e10cSrcweir #include "precompiled_rsc.hxx"
24cdf0e10cSrcweir #include <stdlib.h>
25cdf0e10cSrcweir #include <stdio.h>
26cdf0e10cSrcweir
27cdf0e10cSrcweir #include <tools/rcid.h>
28cdf0e10cSrcweir #include <rschash.hxx>
29cdf0e10cSrcweir #include <rscerror.h>
30cdf0e10cSrcweir #include <rscall.h>
31cdf0e10cSrcweir #include <rscdb.hxx>
32cdf0e10cSrcweir #include <rscpar.hxx>
33cdf0e10cSrcweir
34cdf0e10cSrcweir #include "rsclex.hxx"
35cdf0e10cSrcweir
36cdf0e10cSrcweir /*************************************************************************
37cdf0e10cSrcweir |*
38cdf0e10cSrcweir |* ERRTYPE::operator = ;
39cdf0e10cSrcweir |*
40cdf0e10cSrcweir |* Beschreibung
41cdf0e10cSrcweir |* Ersterstellung MM 25.09.91
42cdf0e10cSrcweir |* Letzte Aenderung MM 25.09.91
43cdf0e10cSrcweir |*
44cdf0e10cSrcweir *************************************************************************/
operator =(const ERRTYPE & rError)45cdf0e10cSrcweir ERRTYPE& ERRTYPE::operator = ( const ERRTYPE & rError )
46cdf0e10cSrcweir {
47cdf0e10cSrcweir if( !IsError() ){
48cdf0e10cSrcweir if( rError.IsError() || !IsWarning() )
49cdf0e10cSrcweir nError = rError.nError;
50cdf0e10cSrcweir }
51cdf0e10cSrcweir return *this;
52cdf0e10cSrcweir }
53cdf0e10cSrcweir
54cdf0e10cSrcweir /*************************************************************************
55cdf0e10cSrcweir |*
56cdf0e10cSrcweir |* RscError::StdOut();
57cdf0e10cSrcweir |*
58cdf0e10cSrcweir |* Beschreibung
59cdf0e10cSrcweir |* Ersterstellung MM 06.05.91
60cdf0e10cSrcweir |* Letzte Aenderung MM 06.05.91
61cdf0e10cSrcweir |*
62cdf0e10cSrcweir *************************************************************************/
StdOut(const char * pStr,const RscVerbosity _verbosityLevel)63cdf0e10cSrcweir void RscError::StdOut( const char * pStr, const RscVerbosity _verbosityLevel )
64cdf0e10cSrcweir {
65cdf0e10cSrcweir if ( m_verbosity >= _verbosityLevel )
66cdf0e10cSrcweir {
67cdf0e10cSrcweir if( pStr ){
68cdf0e10cSrcweir printf( "%s", pStr );
69cdf0e10cSrcweir fflush( stdout );
70cdf0e10cSrcweir }
71cdf0e10cSrcweir }
72cdf0e10cSrcweir }
73cdf0e10cSrcweir
74cdf0e10cSrcweir /*************************************************************************
75cdf0e10cSrcweir |*
76cdf0e10cSrcweir |* RscError::StdErr();
77cdf0e10cSrcweir |*
78cdf0e10cSrcweir |* Beschreibung
79cdf0e10cSrcweir |* Ersterstellung PL 11/07/2001
80cdf0e10cSrcweir |* Letzte Aenderung PL 11/07/2001
81cdf0e10cSrcweir |*
82cdf0e10cSrcweir *************************************************************************/
StdErr(const char * pStr)83cdf0e10cSrcweir void RscError::StdErr( const char * pStr )
84cdf0e10cSrcweir {
85cdf0e10cSrcweir if( pStr )
86cdf0e10cSrcweir fprintf( stderr, "%s", pStr );
87cdf0e10cSrcweir }
88cdf0e10cSrcweir
89cdf0e10cSrcweir /*************************************************************************
90cdf0e10cSrcweir |*
91cdf0e10cSrcweir |* RscError::LstOut();
92cdf0e10cSrcweir |*
93cdf0e10cSrcweir |* Beschreibung
94cdf0e10cSrcweir |* Ersterstellung MM 06.05.91
95cdf0e10cSrcweir |* Letzte Aenderung MM 06.05.91
96cdf0e10cSrcweir |*
97cdf0e10cSrcweir *************************************************************************/
LstOut(const char * pStr)98cdf0e10cSrcweir void RscError::LstOut( const char * pStr ){
99cdf0e10cSrcweir if( fListing && pStr )
100cdf0e10cSrcweir fprintf( fListing, "%s", pStr );
101cdf0e10cSrcweir }
102cdf0e10cSrcweir
103cdf0e10cSrcweir /*************************************************************************
104cdf0e10cSrcweir |*
105cdf0e10cSrcweir |* RscError::StdLstOut();
106cdf0e10cSrcweir |*
107cdf0e10cSrcweir |* Beschreibung
108cdf0e10cSrcweir |* Ersterstellung MM 06.05.91
109cdf0e10cSrcweir |* Letzte Aenderung MM 06.05.91
110cdf0e10cSrcweir |*
111cdf0e10cSrcweir *************************************************************************/
StdLstOut(const char * pStr)112cdf0e10cSrcweir void RscError::StdLstOut( const char * pStr ){
113cdf0e10cSrcweir StdOut( pStr );
114cdf0e10cSrcweir LstOut( pStr );
115cdf0e10cSrcweir }
116cdf0e10cSrcweir
117cdf0e10cSrcweir /*************************************************************************
118cdf0e10cSrcweir |*
119cdf0e10cSrcweir |* RscError::StdLstErr();
120cdf0e10cSrcweir |*
121cdf0e10cSrcweir |* Beschreibung
122cdf0e10cSrcweir |* Ersterstellung PL 11/07/2001
123cdf0e10cSrcweir |* Letzte Aenderung PL 11/07/2001
124cdf0e10cSrcweir |*
125cdf0e10cSrcweir *************************************************************************/
StdLstErr(const char * pStr)126cdf0e10cSrcweir void RscError::StdLstErr( const char * pStr ){
127cdf0e10cSrcweir StdErr( pStr );
128cdf0e10cSrcweir LstOut( pStr );
129cdf0e10cSrcweir }
130cdf0e10cSrcweir
131cdf0e10cSrcweir /*************************************************************************
132cdf0e10cSrcweir |*
133cdf0e10cSrcweir |* RscError::WriteError();
134cdf0e10cSrcweir |*
135cdf0e10cSrcweir |* Beschreibung
136cdf0e10cSrcweir |* Ersterstellung MM 06.05.91
137cdf0e10cSrcweir |* Letzte Aenderung MM 06.05.91
138cdf0e10cSrcweir |*
139cdf0e10cSrcweir *************************************************************************/
WriteError(const ERRTYPE & rError,const char * pMessage)140cdf0e10cSrcweir void RscError::WriteError( const ERRTYPE& rError, const char * pMessage )
141cdf0e10cSrcweir {
142cdf0e10cSrcweir switch( rError )
143cdf0e10cSrcweir {
144cdf0e10cSrcweir case ERR_ERROR: {
145cdf0e10cSrcweir StdLstErr( "!! " );
146cdf0e10cSrcweir if( 1 == nErrors )
147cdf0e10cSrcweir StdLstErr( ByteString::CreateFromInt32( nErrors ).GetBuffer() );
148cdf0e10cSrcweir else
149cdf0e10cSrcweir StdLstErr( ByteString::CreateFromInt32( (nErrors -1) ).GetBuffer() );
150cdf0e10cSrcweir StdLstErr( " Error" );
151cdf0e10cSrcweir StdLstErr( " found!!" );
152cdf0e10cSrcweir }
153cdf0e10cSrcweir break;
154cdf0e10cSrcweir
155cdf0e10cSrcweir case ERR_UNKNOWN_METHOD:
156cdf0e10cSrcweir StdLstErr( "The used type is not allowed." );
157cdf0e10cSrcweir break;
158cdf0e10cSrcweir
159cdf0e10cSrcweir case ERR_OPENFILE:
160cdf0e10cSrcweir StdLstErr( "This file <" );
161cdf0e10cSrcweir StdLstErr( pMessage );
162cdf0e10cSrcweir StdLstErr( "> cannot be opened." );
163cdf0e10cSrcweir break;
164cdf0e10cSrcweir
165cdf0e10cSrcweir case ERR_RENAMEFILE:
166cdf0e10cSrcweir StdLstErr( "rename <" );
167cdf0e10cSrcweir StdLstErr( pMessage );
168cdf0e10cSrcweir StdLstErr( "> s not possible." );
169cdf0e10cSrcweir break;
170cdf0e10cSrcweir
171cdf0e10cSrcweir case ERR_FILESIZE:
172cdf0e10cSrcweir StdLstErr( "Wrong file <" );
173cdf0e10cSrcweir StdLstErr( pMessage );
174cdf0e10cSrcweir StdLstErr( "> length." );
175cdf0e10cSrcweir break;
176cdf0e10cSrcweir
177cdf0e10cSrcweir case ERR_FILEFORMAT:
178cdf0e10cSrcweir StdLstErr( "Wrong file type <" );
179cdf0e10cSrcweir StdLstErr( pMessage );
180cdf0e10cSrcweir StdLstErr( ">." );
181cdf0e10cSrcweir break;
182cdf0e10cSrcweir
183cdf0e10cSrcweir case ERR_NOCHAR:
184cdf0e10cSrcweir StdLstErr( "Character: '\\xxx'; The value xxx is greater than 255.");
185cdf0e10cSrcweir break;
186cdf0e10cSrcweir
187cdf0e10cSrcweir case ERR_NORSCINST:
188cdf0e10cSrcweir StdLstErr( "Internal error, instance invalid.");
189cdf0e10cSrcweir break;
190cdf0e10cSrcweir
191cdf0e10cSrcweir
192cdf0e10cSrcweir case ERR_NOINPUT:
193cdf0e10cSrcweir StdLstErr( "Input file was not specified.\n");
194cdf0e10cSrcweir case ERR_USAGE:
195cdf0e10cSrcweir StdLstOut( "Copyright (C) 2000, 2010 Oracle and/or its affiliates.\n" );
196cdf0e10cSrcweir {
197cdf0e10cSrcweir char buf[40];
198cdf0e10cSrcweir
199cdf0e10cSrcweir StdLstOut( "DataVersion: " );
200cdf0e10cSrcweir sprintf( buf, "%d.%d\n\n",
201cdf0e10cSrcweir RSCVERSION_ID / 100, RSCVERSION_ID % 100 );
202cdf0e10cSrcweir StdLstOut( buf );
203cdf0e10cSrcweir };
204cdf0e10cSrcweir
205cdf0e10cSrcweir StdLstOut( "Command line: rsc [Switches] <Source File(s)>\n" );
206cdf0e10cSrcweir StdLstOut( "Command line: rsc @<Command File>\n" );
207cdf0e10cSrcweir StdLstOut( "-h shows this help.\n" );
208cdf0e10cSrcweir StdLstOut( "-p No Preprocessor.\n" );
209cdf0e10cSrcweir StdLstOut( "-s Syntax analysis, creates .srs file\n");
210cdf0e10cSrcweir StdLstOut( "-l Linker, links files created with rsc -s,\n" );
211cdf0e10cSrcweir StdLstOut( " creates .rc file and .res file.\n" );
212cdf0e10cSrcweir StdLstOut( "-r Prevents .res file.\n" );
213cdf0e10cSrcweir StdLstOut( "-d Symbol definitions for the Preprocessor.\n" );
214cdf0e10cSrcweir StdLstOut( "-i Include directives for the Preprocessor.\n" );
215cdf0e10cSrcweir StdLstOut( "-presponse Use response file for Preprocessor.\n" );
216cdf0e10cSrcweir StdLstOut( "-lg<language> Use a different language.\n" );
217cdf0e10cSrcweir StdLstOut( "-pp=<filename> Use a different Preprocessor.\n" );
218cdf0e10cSrcweir StdLstOut( "-rsc2=<filename> Specify the location for rsc2.\n" );
219cdf0e10cSrcweir StdLstOut( "No longer existent: -rc<filename> Use a different system resource compiler.\n" );
220cdf0e10cSrcweir StdLstOut( "-fs=<filename> Name of the .res file.\n" );
22186e1cf34SPedro Giffuni StdLstOut( "-lip=<path> additional search path for system dependent files\n" );
222cdf0e10cSrcweir StdLstOut( "-fp=<filename> Renaming of the .srs file.\n" );
223cdf0e10cSrcweir StdLstOut( "-fl=<filename> Listing file.\n" );
224cdf0e10cSrcweir StdLstOut( "-fh=<filename> Header file.\n" );
225cdf0e10cSrcweir StdLstOut( "-fc=<filename> Code file.\n" );
226cdf0e10cSrcweir StdLstOut( "-ft=<filename> Touch a file when done in rsc2 (for dependencies)\n" );
227*63d84d22Smseidel StdLstOut( "-fr=<filename> Resource constructor .cxx-file.\n" );
228cdf0e10cSrcweir StdLstOut( "-fx=<filename> Name of .src-file.\n" );
229cdf0e10cSrcweir StdLstOut( "-oil=<dir> Output directory for image list files\n" );
230cdf0e10cSrcweir StdLstOut( "-r<ENV>=<path> replace <path> by <ENV> in image list files\n" );
231cdf0e10cSrcweir StdLstOut( "-CHARSET_... Convert to this character set.\n" );
232cdf0e10cSrcweir StdLstOut( "-BIGENDIAN Format of number values.\n" );
233cdf0e10cSrcweir StdLstOut( "-LITTLEENDIAN Format of number values.\n" );
234cdf0e10cSrcweir StdLstOut( "-SMART Generate smart names (cxx, hxx).\n" );
235cdf0e10cSrcweir StdLstOut( "-SrsDefault Only write one language to srs file.\n" );
236cdf0e10cSrcweir StdLstOut( "\nwhen creating multiple .res files in one pass, please give these\n" );
237cdf0e10cSrcweir StdLstOut( "options in consecutive blocks:\n" );
238cdf0e10cSrcweir StdLstOut( "-lg<language> -fs<filename> [-lip<path> [-lip<path>] ]\n" );
239cdf0e10cSrcweir StdLstOut( "a new block begins when either -lg or -fs is used again.\n" );
240cdf0e10cSrcweir break;
241cdf0e10cSrcweir
242cdf0e10cSrcweir case ERR_UNKNOWNSW:
243cdf0e10cSrcweir StdLstErr( "Unknown switch <" );
244cdf0e10cSrcweir StdLstErr( pMessage );
245cdf0e10cSrcweir StdLstErr( ">." );
246cdf0e10cSrcweir break;
247cdf0e10cSrcweir
248cdf0e10cSrcweir case ERR_REFTODEEP:
249cdf0e10cSrcweir StdLstErr( "Too many reference levels have been used (see Switch -RefDeep)." );
250cdf0e10cSrcweir break;
251cdf0e10cSrcweir
252cdf0e10cSrcweir case ERR_CONT_INVALIDPOS:
253cdf0e10cSrcweir StdLstErr( "Internal error, Container class: invalid position." );
254cdf0e10cSrcweir break;
255cdf0e10cSrcweir
256cdf0e10cSrcweir case ERR_CONT_INVALIDTYPE:
257cdf0e10cSrcweir StdLstErr( "Invalid type <" );
258cdf0e10cSrcweir StdLstErr( pMessage );
259cdf0e10cSrcweir StdLstErr( ">." );
260cdf0e10cSrcweir break;
261cdf0e10cSrcweir
262cdf0e10cSrcweir case ERR_ARRAY_INVALIDINDEX:
263cdf0e10cSrcweir StdLstErr( "Internal error, Array class: invalid index." );
264cdf0e10cSrcweir break;
265cdf0e10cSrcweir
266cdf0e10cSrcweir case ERR_RSCINST_NOVARNAME:
267cdf0e10cSrcweir StdLstErr( "Internal error, invalid name of variable." );
268cdf0e10cSrcweir break;
269cdf0e10cSrcweir
270cdf0e10cSrcweir case ERR_YACC:
271cdf0e10cSrcweir StdLstErr( pMessage );
272cdf0e10cSrcweir break;
273cdf0e10cSrcweir
274cdf0e10cSrcweir case ERR_DOUBLEID:
275cdf0e10cSrcweir StdLstErr( "Two global resources have the same identifier." );
276cdf0e10cSrcweir break;
277cdf0e10cSrcweir
278cdf0e10cSrcweir case ERR_FALSETYPE:
279cdf0e10cSrcweir StdLstErr( "Wrong type <" );
280cdf0e10cSrcweir StdLstErr( pMessage );
281cdf0e10cSrcweir StdLstErr( ">." );
282cdf0e10cSrcweir break;
283cdf0e10cSrcweir
284cdf0e10cSrcweir case ERR_NOVARIABLENAME:
285cdf0e10cSrcweir StdLstErr( "The variable <" );
286cdf0e10cSrcweir StdLstErr( pMessage );
287cdf0e10cSrcweir StdLstErr( "> must not be used here." );
288cdf0e10cSrcweir break;
289cdf0e10cSrcweir
290cdf0e10cSrcweir case ERR_RSCRANGE_OUTDEFSET:
291cdf0e10cSrcweir StdLstErr( "The used value is not in the expected domain." );
292cdf0e10cSrcweir break;
293cdf0e10cSrcweir
294cdf0e10cSrcweir case ERR_USHORTRANGE:
295cdf0e10cSrcweir StdLstErr( "Value is <" );
296cdf0e10cSrcweir StdLstErr( pMessage );
297cdf0e10cSrcweir StdLstErr( "> the allowed domain is from 0 up to 65535." );
298cdf0e10cSrcweir break;
299cdf0e10cSrcweir
300cdf0e10cSrcweir case ERR_IDRANGE:
301cdf0e10cSrcweir StdLstErr( "Value is <" );
302cdf0e10cSrcweir StdLstErr( pMessage );
303cdf0e10cSrcweir StdLstErr( "> the allowed domain is from 1 up to 32767." );
304cdf0e10cSrcweir break;
305cdf0e10cSrcweir
306cdf0e10cSrcweir case ERR_NOCOPYOBJ:
307cdf0e10cSrcweir StdLstErr( "Default resource <" );
308cdf0e10cSrcweir StdLstErr( pMessage );
309cdf0e10cSrcweir StdLstErr( "> not found." );
310cdf0e10cSrcweir break;
311cdf0e10cSrcweir
312cdf0e10cSrcweir case ERR_REFNOTALLOWED:
313cdf0e10cSrcweir StdLstErr( "The use of a reference is not allowed." );
314cdf0e10cSrcweir break;
315cdf0e10cSrcweir
316cdf0e10cSrcweir case ERR_COPYNOTALLOWED:
317cdf0e10cSrcweir StdLstErr( "The use of a default resource is not allowed." );
318cdf0e10cSrcweir break;
319cdf0e10cSrcweir
320cdf0e10cSrcweir case ERR_IDEXPECTED:
321cdf0e10cSrcweir StdLstErr( "An identifier needs to be specified." );
322cdf0e10cSrcweir break;
323cdf0e10cSrcweir
324cdf0e10cSrcweir case ERR_DOUBLEDEFINE:
325cdf0e10cSrcweir StdLstErr( "The symbol <" );
326cdf0e10cSrcweir StdLstErr( pMessage );
327cdf0e10cSrcweir StdLstErr( "> is defined twice." );
328cdf0e10cSrcweir break;
329cdf0e10cSrcweir
330cdf0e10cSrcweir case ERR_RSCINST_RESERVEDNAME:
331cdf0e10cSrcweir StdLstErr( "The symbol <" );
332cdf0e10cSrcweir StdLstErr( pMessage );
333cdf0e10cSrcweir StdLstErr( "> is a reserved name." );
334cdf0e10cSrcweir break;
335cdf0e10cSrcweir
336cdf0e10cSrcweir case ERR_ZERODIVISION:
337cdf0e10cSrcweir StdLstErr( "Attempt to divide by zero." );
338cdf0e10cSrcweir break;
339cdf0e10cSrcweir
340cdf0e10cSrcweir case ERR_PRAGMA:
341cdf0e10cSrcweir StdLstErr( "Error in a #pragma statement." );
342cdf0e10cSrcweir break;
343cdf0e10cSrcweir
344cdf0e10cSrcweir case ERR_DECLAREDEFINE:
345cdf0e10cSrcweir StdLstErr( "Error in the declaration part of the macro." );
346cdf0e10cSrcweir break;
347cdf0e10cSrcweir
348cdf0e10cSrcweir case ERR_NOTYPE:
349cdf0e10cSrcweir StdLstErr( "type expected." );
350cdf0e10cSrcweir break;
351cdf0e10cSrcweir
352cdf0e10cSrcweir case ERR_NOIMAGE:
353cdf0e10cSrcweir StdLstErr( "The image(s) <" );
354cdf0e10cSrcweir StdLstErr( pMessage );
355cdf0e10cSrcweir StdLstErr( "> could not be found." );
356cdf0e10cSrcweir break;
357cdf0e10cSrcweir
358cdf0e10cSrcweir /****************** W A R N I N G S **************************************/
359cdf0e10cSrcweir case WRN_LOCALID:
360cdf0e10cSrcweir StdLstErr( "Sub resources should have an identifier < 256." );
361cdf0e10cSrcweir break;
362cdf0e10cSrcweir
363cdf0e10cSrcweir case WRN_GLOBALID:
364cdf0e10cSrcweir StdLstErr( "Global resources should have an identifier >= 256." );
365cdf0e10cSrcweir break;
366cdf0e10cSrcweir
367cdf0e10cSrcweir case WRN_SUBINMEMBER:
368cdf0e10cSrcweir StdLstErr( "Sub resources are ignored." );
369cdf0e10cSrcweir break;
370cdf0e10cSrcweir
371cdf0e10cSrcweir case WRN_CONT_NOID:
372cdf0e10cSrcweir StdLstErr( "Resources without name are ignored." );
373cdf0e10cSrcweir break;
374cdf0e10cSrcweir
375cdf0e10cSrcweir case WRN_CONT_DOUBLEID:
376cdf0e10cSrcweir StdLstErr( "Two local resources have the same identifier." );
377cdf0e10cSrcweir break;
378cdf0e10cSrcweir
379cdf0e10cSrcweir case WRN_STR_REFNOTFOUND:
380cdf0e10cSrcweir StdLstErr( "String reference <" );
381cdf0e10cSrcweir StdLstErr( pMessage );
382cdf0e10cSrcweir StdLstErr( " > could not be resolved." );
383cdf0e10cSrcweir break;
384cdf0e10cSrcweir
385cdf0e10cSrcweir case WRN_MGR_REFNOTFOUND:
386cdf0e10cSrcweir StdLstErr( "Reference <" );
387cdf0e10cSrcweir StdLstErr( pMessage );
388cdf0e10cSrcweir StdLstErr( " > could not be resolved." );
389cdf0e10cSrcweir break;
390cdf0e10cSrcweir
391cdf0e10cSrcweir default:
392cdf0e10cSrcweir if( pMessage ){
393cdf0e10cSrcweir StdLstErr( "\nMessage: " );
394cdf0e10cSrcweir StdLstErr( pMessage );
395cdf0e10cSrcweir };
396cdf0e10cSrcweir break;
397cdf0e10cSrcweir }
398cdf0e10cSrcweir }
399cdf0e10cSrcweir
400cdf0e10cSrcweir /*************************************************************************
401cdf0e10cSrcweir |*
402cdf0e10cSrcweir |* RscErrorFormat()
403cdf0e10cSrcweir |*
404cdf0e10cSrcweir |* Beschreibung
405cdf0e10cSrcweir |* Ersterstellung MM 06.05.91
406cdf0e10cSrcweir |* Letzte Aenderung MM 06.05.91
407cdf0e10cSrcweir |*
408cdf0e10cSrcweir *************************************************************************/
ErrorFormat(const ERRTYPE & rError,RscTop * pClass,const RscId & aId)409cdf0e10cSrcweir void RscError::ErrorFormat( const ERRTYPE& rError, RscTop * pClass,
410cdf0e10cSrcweir const RscId & aId ){
411cdf0e10cSrcweir char buf[ 10 ];
412cdf0e10cSrcweir sal_uInt32 i;
413cdf0e10cSrcweir
414cdf0e10cSrcweir if( pFI )
415cdf0e10cSrcweir {
416cdf0e10cSrcweir pFI->SetError( rError );
417cdf0e10cSrcweir StdErr( "\n" );
418cdf0e10cSrcweir StdErr( pFI->GetLine() );
419cdf0e10cSrcweir StdErr( "\n" );
420cdf0e10cSrcweir // Fehlerposition anzeigen
421cdf0e10cSrcweir for( i = 0; (i +1) < pFI->GetScanPos(); i++ )
422cdf0e10cSrcweir StdLstErr( " " );
423cdf0e10cSrcweir LstOut( " ^" ); // Zeilennummern beachten
424cdf0e10cSrcweir StdErr( "^" );
425cdf0e10cSrcweir StdLstErr( "\n" );
426cdf0e10cSrcweir }
427cdf0e10cSrcweir StdLstErr( "f" );
428cdf0e10cSrcweir sprintf( buf, "%u", (unsigned int)rError );
429cdf0e10cSrcweir StdLstErr( buf );
430cdf0e10cSrcweir
431cdf0e10cSrcweir if( pFI && pTC ){
432cdf0e10cSrcweir StdLstErr( ": \"" );
433cdf0e10cSrcweir StdLstErr( pTC->aFileTab.Get( pFI->GetFileIndex() )->aFileName.GetBuffer() );
434cdf0e10cSrcweir StdLstErr( "\", line " );
435cdf0e10cSrcweir sprintf( buf, "%u", (unsigned int)pFI->GetLineNo() );
436cdf0e10cSrcweir StdLstErr( buf );
437cdf0e10cSrcweir }
438cdf0e10cSrcweir
439cdf0e10cSrcweir if( rError.IsError() )
440cdf0e10cSrcweir StdLstErr( ": Error" );
441cdf0e10cSrcweir else
442cdf0e10cSrcweir StdLstErr( ": Warning" );
443cdf0e10cSrcweir
444cdf0e10cSrcweir if( pClass || aId.IsId() )
445cdf0e10cSrcweir {
446cdf0e10cSrcweir StdLstErr( " in the object (" );
447cdf0e10cSrcweir if( pClass )
448cdf0e10cSrcweir {
449cdf0e10cSrcweir StdLstErr( "Type: " );
450cdf0e10cSrcweir StdLstErr( pHS->getString( pClass->GetId() ).getStr() );
451cdf0e10cSrcweir if( aId.IsId() )
452cdf0e10cSrcweir StdLstErr( ", " );
453cdf0e10cSrcweir }
454cdf0e10cSrcweir if( aId.IsId() )
455cdf0e10cSrcweir StdLstErr( aId.GetName().GetBuffer() );
456cdf0e10cSrcweir StdLstErr( "):\n" );
457cdf0e10cSrcweir }
458cdf0e10cSrcweir else
459cdf0e10cSrcweir StdLstErr( ": " );
460cdf0e10cSrcweir }
461cdf0e10cSrcweir
462cdf0e10cSrcweir /*************************************************************************
463cdf0e10cSrcweir |*
464cdf0e10cSrcweir |* RscError::Error()
465cdf0e10cSrcweir |*
466cdf0e10cSrcweir |* Beschreibung
467cdf0e10cSrcweir |* Ersterstellung MM 06.05.91
468cdf0e10cSrcweir |* Letzte Aenderung MM 06.05.91
469cdf0e10cSrcweir |*
470cdf0e10cSrcweir *************************************************************************/
Error(const ERRTYPE & rError,RscTop * pClass,const RscId & aId,const char * pMessage)471cdf0e10cSrcweir void RscError::Error( const ERRTYPE& rError, RscTop * pClass,
472cdf0e10cSrcweir const RscId & aId, const char * pMessage )
473cdf0e10cSrcweir {
474cdf0e10cSrcweir if( WRN_LOCALID == rError ) // Keine Warning erzeugen
475cdf0e10cSrcweir return;
476cdf0e10cSrcweir if( rError.IsError() )
477cdf0e10cSrcweir nErrors++;
478cdf0e10cSrcweir if( rError.IsError() || rError.IsWarning() ){
479cdf0e10cSrcweir ErrorFormat( rError, pClass, aId );
480cdf0e10cSrcweir WriteError( rError, pMessage );
481cdf0e10cSrcweir StdLstErr( "\n" );
482cdf0e10cSrcweir };
483cdf0e10cSrcweir }
484cdf0e10cSrcweir
485cdf0e10cSrcweir /*************************************************************************
486cdf0e10cSrcweir |*
487cdf0e10cSrcweir |* RscError::FatalError();
488cdf0e10cSrcweir |*
489cdf0e10cSrcweir |* Beschreibung
490cdf0e10cSrcweir |* Ersterstellung MM 06.05.91
491cdf0e10cSrcweir |* Letzte Aenderung MM 06.05.91
492cdf0e10cSrcweir |*
493cdf0e10cSrcweir *************************************************************************/
FatalError(const ERRTYPE & rError,const RscId & aId,const char * pMessage)494cdf0e10cSrcweir void RscError::FatalError( const ERRTYPE& rError, const RscId &aId,
495cdf0e10cSrcweir const char * pMessage )
496cdf0e10cSrcweir {
497cdf0e10cSrcweir if( ERR_USAGE != rError ){
498cdf0e10cSrcweir nErrors++;
499cdf0e10cSrcweir ErrorFormat( rError, NULL, aId );
500cdf0e10cSrcweir WriteError( rError, pMessage );
501cdf0e10cSrcweir StdLstErr( "\nTerminating compiler\n" );
502cdf0e10cSrcweir }
503cdf0e10cSrcweir else
504cdf0e10cSrcweir WriteError( rError, pMessage );
505cdf0e10cSrcweir
506cdf0e10cSrcweir exit( 1 );
507cdf0e10cSrcweir }
508*63d84d22Smseidel
509*63d84d22Smseidel /* vim: set noet sw=4 ts=4: */
510