/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XALAN_PROBLEMLISTENERBASE_HEADER_GUARD) #define XALAN_PROBLEMLISTENERBASE_HEADER_GUARD // Base include file. Must be first. #include "xalanc/PlatformSupport/PlatformSupportDefinitions.hpp" #include "LocalMsgIndex.hpp" namespace XERCES_CPP_NAMESPACE { class Locator; } namespace XALAN_CPP_NAMESPACE { using xercesc::Locator; class XalanDOMString; class XalanNode; class PrintWriter; /** * This is the abstract class that is used when reporting a problem * some kind, that requires a message, an error or a warning. */ class XALAN_PLATFORMSUPPORT_EXPORT ProblemListenerBase { public: // Sources of problem. The upper case versions // of these enums are deprecated. enum eSource { eXMLPARSER = 0, eXMLParser = 0, eXSLPROCESSOR = 1, eXSLTProcessor = 1, eXPATH = 2, eXPath = 2, eSourceCount }; // A typedef for compatibility. typedef eSource eProblemSource; // Severity of problem. The upper case versions // of these enums are deprecated. enum eClassification { eMESSAGE = 0, eMessage = 0, eWARNING = 1, eWarning = 1, eERROR = 2, eError = 2, eClassificationCount }; ProblemListenerBase(); virtual ~ProblemListenerBase(); /** * Function that is called when a problem event occurs. * * @param source Either eXMLParser, eXSLProcessor, or eXPATH. * @param classification Either eMessage, eWarning, or eError. * @param locator The current Locator instance for the stylesheet. Maybe be a null pointer. * @param sourceNode The current source node, if any. * @param msg The error message. */ virtual void problem( eSource source, eClassification classification, const XalanDOMString& msg, const Locator* locator, const XalanNode* sourceNode) = 0; /** * Function that is called when a problem event occurs. This version * assumes location information is already formatted into the message. * * @param source either eXMLPARSER, eXSLPROCESSOR, or eXPATH * @param classification either eMESSAGE, eERROR or eWARNING * @param msg string message explaining the problem. */ virtual void problem( eSource source, eClassification classification, const XalanDOMString& msg, const XalanNode* sourceNode) = 0; /** * Function to format a problem call to a PrintWriter instance. * This is a bare-bones implementation that uses localized strings. * * @param pw The PrintWriter instance to use. * @param source Either eXMLParser, eXSLProcessor, or eXPATH. * @param classification Either eMessage, eWarning, or eError. * @param locator The current Locator instance for the stylesheet. Maybe be a null pointer. * @param sourceNode The current source node, if any. * @param msg The error message. */ static void defaultFormat( PrintWriter& pw, eSource source, eClassification classification, const XalanDOMString& msg, const Locator* locator, const XalanNode* sourceNode); /** * Function to format a problem call to a PrintWriter instance. * This is a bare-bones implementation that uses localized strings. * * @param pw The PrintWriter instance to use. * @param source either eXMLPARSER, eXSLPROCESSOR, or eXPATH * @param classification either eMESSAGE, eERROR or eWARNING * @param msg string message explaining the problem. */ static void defaultFormat( PrintWriter& pw, eSource source, eClassification classification, const XalanDOMString& msg, const XalanNode* sourceNode); protected: static const XalanMessages::Codes s_messageCodes[eSourceCount][eClassificationCount]; }; } #endif // XALAN_PROBLEMLISTENER_HEADER_GUARD