1*78bc99aaSAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 3*78bc99aaSAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4*78bc99aaSAndrew Rist * or more contributor license agreements. See the NOTICE file 5*78bc99aaSAndrew Rist * distributed with this work for additional information 6*78bc99aaSAndrew Rist * regarding copyright ownership. The ASF licenses this file 7*78bc99aaSAndrew Rist * to you under the Apache License, Version 2.0 (the 8*78bc99aaSAndrew Rist * "License"); you may not use this file except in compliance 9*78bc99aaSAndrew Rist * with the License. You may obtain a copy of the License at 10cdf0e10cSrcweir * 11*78bc99aaSAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12cdf0e10cSrcweir * 13*78bc99aaSAndrew Rist * Unless required by applicable law or agreed to in writing, 14*78bc99aaSAndrew Rist * software distributed under the License is distributed on an 15*78bc99aaSAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*78bc99aaSAndrew Rist * KIND, either express or implied. See the License for the 17*78bc99aaSAndrew Rist * specific language governing permissions and limitations 18*78bc99aaSAndrew Rist * under the License. 19cdf0e10cSrcweir * 20*78bc99aaSAndrew Rist *************************************************************/ 21cdf0e10cSrcweir 22cdf0e10cSrcweir #include <precomp.h> 23cdf0e10cSrcweir #include <x_parse.hxx> 24cdf0e10cSrcweir 25cdf0e10cSrcweir // NOT FULLY DECLARED SERVICES 26cdf0e10cSrcweir 27cdf0e10cSrcweir 28cdf0e10cSrcweir 29cdf0e10cSrcweir X_Parser::X_Parser( E_Event i_eEvent, 30cdf0e10cSrcweir const char * i_sObject, 31cdf0e10cSrcweir const String & i_sCausingFile_FullPath, 32cdf0e10cSrcweir uintt i_nCausingLineNr ) 33cdf0e10cSrcweir : eEvent(i_eEvent), 34cdf0e10cSrcweir sObject(i_sObject), 35cdf0e10cSrcweir sCausingFile_FullPath(i_sCausingFile_FullPath), 36cdf0e10cSrcweir nCausingLineNr(i_nCausingLineNr) 37cdf0e10cSrcweir { 38cdf0e10cSrcweir } 39cdf0e10cSrcweir 40cdf0e10cSrcweir X_Parser::~X_Parser() 41cdf0e10cSrcweir { 42cdf0e10cSrcweir } 43cdf0e10cSrcweir 44cdf0e10cSrcweir X_Parser::E_Event 45cdf0e10cSrcweir X_Parser::GetEvent() const 46cdf0e10cSrcweir { 47cdf0e10cSrcweir return eEvent; 48cdf0e10cSrcweir } 49cdf0e10cSrcweir 50cdf0e10cSrcweir void 51cdf0e10cSrcweir X_Parser::GetInfo( std::ostream & o_rOutputMedium ) const 52cdf0e10cSrcweir { 53cdf0e10cSrcweir o_rOutputMedium << "Error in file " 54cdf0e10cSrcweir << sCausingFile_FullPath 55cdf0e10cSrcweir << " in line " 56cdf0e10cSrcweir << nCausingLineNr 57cdf0e10cSrcweir << ": "; 58cdf0e10cSrcweir 59cdf0e10cSrcweir 60cdf0e10cSrcweir switch (eEvent) 61cdf0e10cSrcweir { 62cdf0e10cSrcweir case x_InvalidChar: 63cdf0e10cSrcweir o_rOutputMedium << "Unknown character '" 64cdf0e10cSrcweir << sObject 65cdf0e10cSrcweir << "'"; 66cdf0e10cSrcweir break; 67cdf0e10cSrcweir case x_UnexpectedToken: 68cdf0e10cSrcweir o_rOutputMedium << "Unexpected token \"" 69cdf0e10cSrcweir << sObject 70cdf0e10cSrcweir << "\""; 71cdf0e10cSrcweir break; 72cdf0e10cSrcweir case x_UnexpectedEOF: 73cdf0e10cSrcweir o_rOutputMedium << "Unexpected end of file."; 74cdf0e10cSrcweir break; 75cdf0e10cSrcweir case x_UnspecifiedSyntaxError: 76cdf0e10cSrcweir o_rOutputMedium << "Unspecified syntax problem in file."; 77cdf0e10cSrcweir break; 78cdf0e10cSrcweir case x_Any: 79cdf0e10cSrcweir default: 80cdf0e10cSrcweir o_rOutputMedium << "Unspecified parsing exception."; 81cdf0e10cSrcweir } // end switch 82cdf0e10cSrcweir o_rOutputMedium << Endl(); 83cdf0e10cSrcweir } 84cdf0e10cSrcweir 85cdf0e10cSrcweir 86cdf0e10cSrcweir std::ostream & 87cdf0e10cSrcweir operator<<( std::ostream & o_rOut, 88cdf0e10cSrcweir const autodoc::X_Parser_Ifc & i_rException ) 89cdf0e10cSrcweir { 90cdf0e10cSrcweir i_rException.GetInfo(o_rOut); 91cdf0e10cSrcweir return o_rOut; 92cdf0e10cSrcweir } 93