/* This file is part of the KDE libraries
Copyright (C) 1997 Martin Jones (mjones@kde.org)
(C) 1997 Torben Weis (weis@kde.org)
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
//-----------------------------------------------------------------------------
//
// This is a modified HTMLTokenizer from khtmlw.
//
#ifndef BOOKTOKEN_H
#define BOOKTOKEN_H
#include <qlist.h>
#include <qstrlist.h>
#include <qarray.h>
// Every tag as deliverd by HTMLTokenizer starts with TAG_ESCAPE. This way
// you can devide between tags and words.
#define TAG_ESCAPE 13
// The count of spaces used for each tab.
#define TAB_SIZE 8
//-----------------------------------------------------------------------------
class BMToken
{
public:
BMToken( const char *t, int len )
{
tok = new char [ len + 1 ];
memcpy( tok, t, len+1 );
nextToken = 0;
}
~BMToken()
{
delete [] tok;
}
char *token()
{ return tok; }
BMToken *next()
{ return nextToken; }
void setNext( BMToken *n )
{ nextToken = n; }
private:
char *tok;
BMToken *nextToken;
};
//-----------------------------------------------------------------------------
class BookmarkTokenizer
{
public:
BookmarkTokenizer();
~BookmarkTokenizer();
void begin();
void write( const char * );
void end();
char* nextToken();
bool hasMoreTokens();
void first()
{ curr = head; }
protected:
void reset();
void appendToken( const char *t, int len )
{
if ( len < 1 )
return;
BMToken *tok = new BMToken( t, len );
if ( head )
{
tail->setNext( tok );
tail = tok;
}
else
{
head = tail = tok;
}
if ( !curr )
curr = tok;
}
protected:
char *buffer;
char *dest;
BMToken *head;
BMToken *tail;
BMToken *curr;
// the size of buffer
int size;
// are we in a html tag
bool tag;
// are we in quotes within a html tag
bool tquote;
// To avoid multiple spaces
bool space;
// Discard line breaks immediately after tags
bool discardCR;
// Area we in a <!-- comment --> block
bool comment;
};
//-----------------------------------------------------------------------------
#endif
Documentation generated by root@darkstar.lst.de on Wed Sep 8 17:38:57 CEST 1999