1*477794c1SAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 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 10cdf0e10cSrcweir * 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. 19cdf0e10cSrcweir * 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 *************************************************************************/ 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 *************************************************************************/ 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 *************************************************************************/ 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 *************************************************************************/ 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 *************************************************************************/ 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 *************************************************************************/ 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 *************************************************************************/ 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 *************************************************************************/ 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 *************************************************************************/ 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 *************************************************************************/ 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