diff options
Diffstat (limited to 'src/outputgen.cpp')
-rw-r--r-- | src/outputgen.cpp | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/src/outputgen.cpp b/src/outputgen.cpp new file mode 100644 index 0000000..0905b78 --- /dev/null +++ b/src/outputgen.cpp @@ -0,0 +1,81 @@ +/****************************************************************************** + * + * $Id: outputgen.cpp,v 1.15 2001/03/19 19:27:41 root Exp $ + * + * Copyright (C) 1997-2011 by Dimitri van Heesch. + * + * Permission to use, copy, modify, and distribute this software and its + * documentation under the terms of the GNU General Public License is hereby + * granted. No representations are made about the suitability of this software + * for any purpose. It is provided "as is" without express or implied warranty. + * See the GNU General Public License for more details. + * + * Documents produced by Doxygen are derivative works derived from the + * input used in their production; they are not affected by this license. + * + */ + +#include <stdlib.h> + +#include "qtbc.h" +#include "outputgen.h" +#include "message.h" +#include "portable.h" + +OutputGenerator::OutputGenerator() +{ + //printf("OutputGenerator::OutputGenerator()\n"); + file=0; + active=TRUE; + genStack = new QStack<bool>; + genStack->setAutoDelete(TRUE); +} + +OutputGenerator::~OutputGenerator() +{ + //printf("OutputGenerator::~OutputGenerator()\n"); + delete file; + delete genStack; +} + +void OutputGenerator::startPlainFile(const char *name) +{ + //printf("startPlainFile(%s)\n",name); + fileName=dir+"/"+name; + file = new QFile(fileName); + if (!file) + { + err("Could not create file object for %s\n",fileName.data()); + exit(1); + } + if (!file->open(IO_WriteOnly)) + { + err("Could not open file %s for writing\n",fileName.data()); + exit(1); + } + t.setDevice(file); +} + +void OutputGenerator::endPlainFile() +{ + delete file; + file=0; + fileName.resize(0); +} + +void OutputGenerator::pushGeneratorState() +{ + genStack->push(new bool(isEnabled())); + //printf("%p:pushGeneratorState(%d)\n",this,genStack->count()); +} + +void OutputGenerator::popGeneratorState() +{ + //printf("%p:popGeneratorState(%d)\n",this,genStack->count()); + bool *lb = genStack->pop(); + ASSERT(lb!=0); + if (lb==0) return; // for some robustness against superfluous \endhtmlonly commands. + if (*lb) enable(); else disable(); + delete lb; +} + |