Kaydet (Commit) e67f8499 authored tarafından Rafael Dominguez's avatar Rafael Dominguez Kaydeden (comit) Thorsten Behrens

Remove DECLARE_LIST( SvTokenList, SvToken * )

üst d57e94e8
......@@ -29,10 +29,11 @@
#ifndef _LEX_HXX
#define _LEX_HXX
#include <boost/ptr_container/ptr_vector.hpp>
#include <hash.hxx>
#include <tools/gen.hxx>
#include <tools/stream.hxx>
#include <tools/list.hxx>
enum SVTOKEN_ENUM { SVTOKEN_EMPTY, SVTOKEN_COMMENT,
SVTOKEN_INTEGER, SVTOKEN_STRING,
......@@ -127,8 +128,6 @@ inline SvToken::SvToken( SVTOKEN_ENUM nTypeP, const ByteString & rStr )
inline SvToken::SvToken( SVTOKEN_ENUM nTypeP )
: nType( nTypeP ) {}
DECLARE_LIST( SvTokenList, SvToken * )
class SvTokenStream
{
sal_uLong nLine, nColumn;
......@@ -144,8 +143,8 @@ class SvTokenStream
SvFileStream * pInStream;
SvStream & rInStream;
String aFileName;
SvTokenList aTokList;
SvToken * pCurToken;
boost::ptr_vector<SvToken> aTokList;
boost::ptr_vector<SvToken>::iterator pCurToken;
void InitCtor();
......@@ -192,30 +191,37 @@ public:
{ nTabSize = nTabSizeP; }
sal_uInt16 GetTabSize() const { return nTabSize; }
SvToken * GetToken_PrevAll()
SvToken* GetToken_PrevAll()
{
SvToken * pRetToken = pCurToken;
if( NULL == (pCurToken = aTokList.Prev()) )
// current pointer never null
pCurToken = pRetToken;
boost::ptr_vector<SvToken>::iterator pRetToken = pCurToken;
return pRetToken;
// current iterator always valid
if(pCurToken != aTokList.begin())
--pCurToken;
return &(*pRetToken);
}
SvToken * GetToken_NextAll()
SvToken* GetToken_NextAll()
{
SvToken * pRetToken = pCurToken;
if( NULL == (pCurToken = aTokList.Next()) )
// current pointer never null
boost::ptr_vector<SvToken>::iterator pRetToken = pCurToken++;
if (pCurToken == aTokList.end())
pCurToken = pRetToken;
SetMax();
return pRetToken;
return &(*pRetToken);
}
SvToken * GetToken_Next()
SvToken* GetToken_Next()
{
// comments get removed initially
return GetToken_NextAll();
}
SvToken * GetToken() const { return pCurToken; }
SvToken* GetToken() const { return &(*pCurToken); }
sal_Bool Read( char cChar )
{
if( pCurToken->IsChar()
......@@ -227,6 +233,7 @@ public:
else
return sal_False;
}
void ReadDelemiter()
{
if( pCurToken->IsChar()
......@@ -237,21 +244,28 @@ public:
}
}
sal_uInt32 Tell() const
{ return aTokList.GetCurPos(); }
sal_uInt32 Tell() const { return pCurToken-aTokList.begin(); }
void Seek( sal_uInt32 nPos )
{
pCurToken = aTokList.Seek( nPos );
pCurToken = aTokList.begin() + nPos;
SetMax();
}
void SeekRel( sal_Int32 nRelPos )
void SeekRel( sal_uInt32 nRelPos )
{
pCurToken = aTokList.Seek( Tell() + nRelPos );
sal_uInt32 relIdx = Tell() + nRelPos;
if ( relIdx < aTokList.size())
{
pCurToken = aTokList.begin()+ (Tell() + nRelPos );
SetMax();
}
}
void SeekEnd()
{
pCurToken = aTokList.Seek( nMaxPos );
pCurToken = aTokList.begin()+nMaxPos;
}
};
......
......@@ -105,7 +105,6 @@ void SvTokenStream::InitCtor()
nLine = nColumn = 0;
nBufPos = 0;
nTabSize = 4;
pCurToken = NULL;
nMaxPos = 0;
c = GetNextChar();
FillTokenList();
......@@ -115,7 +114,6 @@ SvTokenStream::SvTokenStream( const String & rFileName )
: pInStream( new SvFileStream( rFileName, STREAM_STD_READ | STREAM_NOCREATE ) )
, rInStream( *pInStream )
, aFileName( rFileName )
, aTokList( 0x8000, 0x8000 )
{
InitCtor();
}
......@@ -124,7 +122,6 @@ SvTokenStream::SvTokenStream( SvStream & rStream, const String & rFileName )
: pInStream( NULL )
, rInStream( rStream )
, aFileName( rFileName )
, aTokList( 0x8000, 0x8000 )
{
InitCtor();
}
......@@ -132,28 +129,23 @@ SvTokenStream::SvTokenStream( SvStream & rStream, const String & rFileName )
SvTokenStream::~SvTokenStream()
{
delete pInStream;
SvToken * pTok = aTokList.Last();
while( pTok )
{
delete pTok;
pTok = aTokList.Prev();
}
}
void SvTokenStream::FillTokenList()
{
SvToken * pToken = new SvToken();
aTokList.Insert( pToken, LIST_APPEND );
aTokList.push_back(pToken);
do
{
if( !MakeToken( *pToken ) )
{
SvToken * p = aTokList.Prev();
*pToken = SvToken();
if( p )
if (!aTokList.empty())
{
pToken->SetLine( p->GetLine() );
pToken->SetColumn( p->GetColumn() );
*pToken = SvToken();
boost::ptr_vector<SvToken>::const_iterator it = aTokList.begin();
pToken->SetLine(it->GetLine());
pToken->SetColumn(it->GetColumn());
}
break;
}
......@@ -164,11 +156,11 @@ void SvTokenStream::FillTokenList()
else
{
pToken = new SvToken();
aTokList.Insert( pToken, LIST_APPEND );
aTokList.push_back(pToken);
}
}
while( !pToken->IsEof() );
pCurToken = aTokList.First();
pCurToken = aTokList.begin();
}
void SvTokenStream::SetCharSet( CharSet nSet )
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment