<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <meta name="GENERATOR" content="cpp2html 1.2 by Lorenzo Bettini, bettini@gnu.org http://w3.newnet.it/bettini http://www.gnu.org/software/cpp2html/cpp2html.html"> <title>generators.cc</title> </head> <body bgcolor="#FFFFFF" text="#000000" link="#0000EE" vlink="#551A8B" alink="#FF0000"> <pre> <tt> <i><font color=#9A1900>/* ** Copyright (C) 1999, 2000, Lorenzo Bettini <lorenzo.bettini@penteres.it> ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program 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 General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ** */</font></i> <i><font color=#9A1900>// generators.cc </font></i> <i><font color=#9A1900>// generators and decorators </font></i> <b><font color=#0000FF>#include</font></b> <font color=#FF0000>"textgen.h"</font> <b><font color=#0000FF>#include</font></b> <font color=#FF0000>"decorators.h"</font> <b><font color=#0000FF>#include</font></b> <font color=#FF0000>"tags.h"</font> <b><font color=#0000FF>#include</font></b> <font color=#FF0000>"keys.h"</font> <b><font color=#0000FF>#define</font></b> GET_DECORATED( d ) ( d ? d : GlobalGenerator ) TextGenerator *GlobalGenerator ; TextGenerator *KeywordGenerator ; TextGenerator *CommentGenerator ; TextGenerator *StringGenerator ; TextGenerator *TypeGenerator ; TextGenerator *NumberGenerator ; <b><font color=#0000FF>static</font></b> TextGenerator *createGenerator( <font color=#009900>char</font> *key ) ; <font color=#009900>void</font> createGenerators() { GlobalGenerator = <b><font color=#0000FF>new</font></b> TextGenerator ; KeywordGenerator = createGenerator( KEYWORD ) ; CommentGenerator = createGenerator( COMMENT ) ; StringGenerator = createGenerator( STRING ) ; TypeGenerator = createGenerator( TYPE ) ; NumberGenerator = createGenerator( NUMBER ) ; } <font color=#009900>void</font> createGeneratorsForCSS() { GlobalGenerator = <b><font color=#0000FF>new</font></b> TextGenerator ; KeywordGenerator = <b><font color=#0000FF>new</font></b> SpanDecorator(GlobalGenerator, KEYWORD) ; CommentGenerator = <b><font color=#0000FF>new</font></b> SpanDecorator(GlobalGenerator, COMMENT) ; StringGenerator = <b><font color=#0000FF>new</font></b> SpanDecorator(GlobalGenerator, STRING) ; TypeGenerator = <b><font color=#0000FF>new</font></b> SpanDecorator(GlobalGenerator, TYPE) ; NumberGenerator = <b><font color=#0000FF>new</font></b> SpanDecorator(GlobalGenerator, NUMBER) ; } TextGenerator *createGenerator( <font color=#009900>char</font> *key ) { Tag *tag = getTag( key ) ; TextDecorator *dec = NULL ; <b><font color=#0000FF>if</font></b> ( ! tag ) <i><font color=#9A1900>// no options </font></i> <b><font color=#0000FF>return</font></b> GlobalGenerator ; <font color=#009900>char</font> * color = tag->GetColor() ; <b><font color=#0000FF>if</font></b> ( color ) dec = <b><font color=#0000FF>new</font></b> ColorDecorator( GlobalGenerator, color ) ; <b><font color=#0000FF>if</font></b> ( tag->IsBold() ) dec = <b><font color=#0000FF>new</font></b> TagDecorator( GET_DECORATED( dec ), BOLD_TAG ) ; <b><font color=#0000FF>if</font></b> ( tag->IsItalic() ) dec = <b><font color=#0000FF>new</font></b> TagDecorator( GET_DECORATED( dec ), ITALIC_TAG ) ; <b><font color=#0000FF>if</font></b> ( tag->IsUnderline() ) dec = <b><font color=#0000FF>new</font></b> TagDecorator( GET_DECORATED( dec ), UNDERLINE_TAG ) ; <b><font color=#0000FF>return</font></b> GET_DECORATED( dec ) ; <i><font color=#9A1900>// There should be some options, but it's not ncessary ... </font></i> <i><font color=#9A1900>// so this is just to be safe </font></i>} </tt> </pre> </body> </html>