/**************************************************************
 * 
 * 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.
 * 
 *************************************************************/



#ifndef ADC_X_PARSE_HXX
#define ADC_X_PARSE_HXX

// BASE CLASSES
#include <autodoc/x_parsing.hxx>




class X_Parser : public autodoc::X_Parser_Ifc
{
  public:
	// LIFECYCLE
						X_Parser(
							E_Event				i_eEvent,
							const char *		i_sObject,
                            const String &      i_sCausingFile_FullPath,
							uintt				i_nCausingLineNr );
                        ~X_Parser();
	// INQUIRY
	virtual E_Event	   	GetEvent() const;
	virtual void	   	GetInfo(
							std::ostream &      o_rOutputMedium ) const;

  private:
	E_Event				eEvent;
	String 				sObject;
	String 				sCausingFile_FullPath;
	uintt				nCausingLineNr;

};




#endif
