📄 booktoken.h
字号:
/* 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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -