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