Blame include/SgmlParser.h

Packit 8a864e
// Copyright (c) 1994 James Clark
Packit 8a864e
// See the file COPYING for copying permission.
Packit 8a864e
Packit 8a864e
#ifndef SgmlParser_INCLUDED
Packit 8a864e
#define SgmlParser_INCLUDED 1
Packit 8a864e
Packit 8a864e
#ifdef __GNUG__
Packit 8a864e
#pragma interface
Packit 8a864e
#endif
Packit 8a864e
Packit 8a864e
#include "StringC.h"
Packit 8a864e
#include "Ptr.h"
Packit 8a864e
#include "Location.h"
Packit 8a864e
#include "EntityManager.h"
Packit 8a864e
Packit 8a864e
#include <signal.h>
Packit 8a864e
Packit 8a864e
#ifdef SP_NAMESPACE
Packit 8a864e
namespace SP_NAMESPACE {
Packit 8a864e
#endif
Packit 8a864e
Packit 8a864e
class Event;
Packit 8a864e
class Parser;
Packit 8a864e
class UnivCharsetDesc;
Packit 8a864e
class EventHandler;
Packit 8a864e
struct ParserOptions;
Packit 8a864e
template<class T> class Ptr;
Packit 8a864e
template<class T> class ConstPtr;
Packit 8a864e
class InputSourceOrigin;
Packit 8a864e
class Sd;
Packit 8a864e
class Syntax;
Packit 8a864e
class Dtd;
Packit 8a864e
Packit 8a864e
class SP_API SgmlParser {
Packit 8a864e
public:
Packit 8a864e
  struct SP_API Params {
Packit 8a864e
    enum EntityType {
Packit 8a864e
      document,
Packit 8a864e
      subdoc,
Packit 8a864e
      dtd
Packit 8a864e
    };
Packit 8a864e
    Params();
Packit 8a864e
    EntityType entityType;	// defaults to document
Packit 8a864e
    StringC sysid;		// must be specified
Packit 8a864e
    Ptr<InputSourceOrigin> origin;
Packit 8a864e
    Ptr<EntityManager> entityManager;
Packit 8a864e
    const SgmlParser *parent;
Packit 8a864e
    ConstPtr<Sd> sd;
Packit 8a864e
    ConstPtr<Syntax> prologSyntax;
Packit 8a864e
    ConstPtr<Syntax> instanceSyntax;
Packit 8a864e
    unsigned subdocLevel;
Packit 8a864e
    const ParserOptions *options;
Packit 8a864e
    PackedBoolean subdocInheritActiveLinkTypes;
Packit 8a864e
    // referenced subdocs count against SUBDOC limit in SGML declaration
Packit 8a864e
    PackedBoolean subdocReferenced;
Packit 8a864e
    StringC doctypeName;
Packit 8a864e
  };
Packit 8a864e
  SgmlParser();			// must call init
Packit 8a864e
  SgmlParser(const Params &params);
Packit 8a864e
  void init(const Params &params);
Packit 8a864e
  ~SgmlParser();
Packit 8a864e
  Event *nextEvent();
Packit 8a864e
  void parseAll(EventHandler &, const volatile sig_atomic_t *cancelPtr = 0);
Packit 8a864e
  ConstPtr<Sd> sd() const;
Packit 8a864e
  ConstPtr<Syntax> instanceSyntax() const;
Packit 8a864e
  ConstPtr<Syntax> prologSyntax() const;
Packit 8a864e
  EntityManager &entityManager() const;
Packit 8a864e
  const EntityCatalog &entityCatalog() const;
Packit 8a864e
  const ParserOptions &options() const;
Packit 8a864e
  // Only to be called after the parse has ended.
Packit 8a864e
  Ptr<Dtd> baseDtd();
Packit 8a864e
  void activateLinkType(const StringC &);
Packit 8a864e
  void allLinkTypesActivated();
Packit 8a864e
  void swap(SgmlParser &);
Packit 8a864e
  friend class Parser;
Packit 8a864e
  friend class PiAttspecParser;
Packit 8a864e
private:
Packit 8a864e
  SgmlParser(const SgmlParser &);
Packit 8a864e
  void operator=(const SgmlParser &);
Packit 8a864e
  Parser *parser_;
Packit 8a864e
};
Packit 8a864e
Packit 8a864e
#ifdef SP_NAMESPACE
Packit 8a864e
}
Packit 8a864e
#endif
Packit 8a864e
Packit 8a864e
#endif /* not SgmlParser_INCLUDED */