Blame sgmlnorm/sgmlnorm.cxx

Packit 8a864e
// Copyright (c) 1996 James Clark
Packit 8a864e
// See the file COPYING for copying permission.
Packit 8a864e
Packit 8a864e
#include "config.h"
Packit 8a864e
#include "sptchar.h"
Packit 8a864e
#include "ParserApp.h"
Packit 8a864e
#include "GenericEventHandler.h"
Packit 8a864e
#include "SGMLGenerator.h"
Packit 8a864e
#include "SgmlnormMessages.h"
Packit 8a864e
Packit 8a864e
#ifdef SP_NAMESPACE
Packit 8a864e
using namespace SP_NAMESPACE;
Packit 8a864e
#endif
Packit 8a864e
Packit 8a864e
class SGMLGeneratorEH : public SGMLGenerator, public GenericEventHandler {
Packit 8a864e
public:
Packit 8a864e
  SGMLGeneratorEH(OutputCharStream *, unsigned genFlags, Messenger *);
Packit 8a864e
  void reportMessage(const Message &msg, StringC &);
Packit 8a864e
private:
Packit 8a864e
  Messenger *mgr_;
Packit 8a864e
};
Packit 8a864e
Packit 8a864e
class SgmlnormApp : public ParserApp {
Packit 8a864e
public:
Packit 8a864e
  SgmlnormApp();
Packit 8a864e
  void processOption(AppChar opt, const AppChar *arg);
Packit 8a864e
  ErrorCountEventHandler *makeEventHandler();
Packit 8a864e
private:
Packit 8a864e
  unsigned genFlags_;
Packit 8a864e
  Boolean rawOutput_;
Packit 8a864e
};
Packit 8a864e
Packit 8a864e
SP_DEFINE_APP(SgmlnormApp)
Packit 8a864e
Packit 8a864e
SgmlnormApp::SgmlnormApp()
Packit 8a864e
: rawOutput_(0), genFlags_(0)
Packit 8a864e
{
Packit 8a864e
  changeOptionRegistration('n', AppChar(255));
Packit 8a864e
  registerOption('d', SP_T("dtd"), SgmlnormMessages::dHelp);
Packit 8a864e
  registerOption('m', SP_T("marked-sections"), SgmlnormMessages::mHelp);
Packit 8a864e
  registerOption('n', SP_T("comments"), SgmlnormMessages::nHelp);
Packit 8a864e
  registerOption('r', SP_T("raw"), SgmlnormMessages::rHelp);
Packit 8a864e
  registerInfo(SgmlnormMessages::info1);
Packit 8a864e
  registerInfo(SgmlnormMessages::info2);
Packit 8a864e
  registerInfo(SgmlnormMessages::info3);
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
void SgmlnormApp::processOption(AppChar opt, const AppChar *arg)
Packit 8a864e
{
Packit 8a864e
  switch (opt) {
Packit 8a864e
  case AppChar(255):
Packit 8a864e
    ParserApp::processOption('n', arg);
Packit 8a864e
    break;
Packit 8a864e
  case 'd':
Packit 8a864e
    genFlags_ |= SGMLGenerator::generateDtd;
Packit 8a864e
    break;
Packit 8a864e
  case 'm':
Packit 8a864e
    options_.eventsWanted.addMarkedSections();
Packit 8a864e
    break;
Packit 8a864e
  case 'n':
Packit 8a864e
    options_.eventsWanted.addCommentDecls();
Packit 8a864e
    break;
Packit 8a864e
  case 'r':
Packit 8a864e
    rawOutput_ = 1;
Packit 8a864e
    break;
Packit 8a864e
  default:
Packit 8a864e
    ParserApp::processOption(opt, arg);
Packit 8a864e
    break;
Packit 8a864e
  }
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
ErrorCountEventHandler *SgmlnormApp::makeEventHandler()
Packit 8a864e
{
Packit 8a864e
  OutputCharStream *os = makeStdOut();
Packit 8a864e
  if (!rawOutput_)
Packit 8a864e
    os = new RecordOutputCharStream(os);
Packit 8a864e
  return new SGMLGeneratorEH(os, genFlags_, this);
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
SGMLGeneratorEH::SGMLGeneratorEH(OutputCharStream *os, unsigned genFlags,
Packit 8a864e
				 Messenger *mgr)
Packit 8a864e
: SGMLGenerator(os, genFlags), GenericEventHandler(*this, 1), mgr_(mgr)
Packit 8a864e
{
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
void SGMLGeneratorEH::reportMessage(const Message &msg, StringC &)
Packit 8a864e
{
Packit 8a864e
  mgr_->dispatchMessage(msg);
Packit 8a864e
}