dlg_stream_input.h

来自「本工具提供一个词法分析器和语法分析器的集成开发环境」· C头文件 代码 · 共 99 行

H
99
字号
/************************************************************//*															*//*		Predefined char stream: Input from (c++) stream.	*//*															*//* By Hubert Holin (Hubert.Holin@Bigfoot.com), 1998.		*//*															*//* This is completely free stuff, do whatever you want with	*//* it (but then, I will take no responsability for whatever	*//* may happen if you do either... caveat emptor!).			*//*															*//************************************************************/#ifndef _DLG_STREAM_INPUT_H#define _DLG_STREAM_INPUT_H#include PCCTS_ISTREAM_HPCCTS_NAMESPACE_STD#ifndef DLGX_H#include "DLexerBase.h"#endif// NOTES:	The semantics of the copy constructor//			and the affectation operator may be unwaranted...//			and the stream may not be reset.////			It would have been so much nicer for nextChar()//			to throw (of for the DLGInputStream to change status)//			upon hiting EOF than to return an "int"...template	<				class E,				class T = ::std::char_traits<E>			>class DLG_stream_input : public DLGInputStream{public:							DLG_stream_input(::std::basic_istream<E,T> * p_input_stream)	:	input(p_input_stream)	{		// nothing to do!	};							DLG_stream_input(const DLG_stream_input & a_recopier)	:	input(a_recopier.input)	{		// nothing to do!	};		virtual				~DLG_stream_input()	{		this->purge();	// bloody templarized lookup...	};		DLG_stream_input	operator = (const DLG_stream_input & a_affecter)	{		if (this != &a_affecter)		{			input = a_affecter.input;		}		return(*this);	};		virtual int			nextChar()	{		E	extracted_stuff;				input->get(extracted_stuff);				if	(*input)		{			return(int(extracted_stuff));		}		else		{			return(EOF);		}	};	protected:		::std::basic_istream<E,T> *	input;	private:		void	purge()	{		// nothing to do!	};};#endif /* _DLG_STREAM_INPUT_H */

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?