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