Check In tool source code based on Build tool project revision r1655.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8964 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
98
BaseTools/Source/C/VfrCompile/Pccts/h/DLG_stream_input.h
Normal file
98
BaseTools/Source/C/VfrCompile/Pccts/h/DLG_stream_input.h
Normal file
@@ -0,0 +1,98 @@
|
||||
|
||||
/************************************************************/
|
||||
/* */
|
||||
/* 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.h"
|
||||
|
||||
PCCTS_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 */
|
||||
|
Reference in New Issue
Block a user