Blame lib/Event.cxx

Packit 8a864e
// Copyright (c) 1994 James Clark
Packit 8a864e
// See the file COPYING for copying permission.
Packit 8a864e
Packit 8a864e
#ifdef __GNUG__
Packit 8a864e
#pragma implementation
Packit 8a864e
#endif
Packit 8a864e
#include "splib.h"
Packit 8a864e
#include "Event.h"
Packit 8a864e
#include "Entity.h"
Packit 8a864e
#include "Attribute.h"
Packit 8a864e
#include "EventQueue.h"
Packit 8a864e
Packit 8a864e
#ifdef SP_NAMESPACE
Packit 8a864e
namespace SP_NAMESPACE {
Packit 8a864e
#endif
Packit 8a864e
Packit 8a864e
void Event::copyData()
Packit 8a864e
{
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
LocatedEvent::LocatedEvent(Type type, const Location &location)
Packit 8a864e
: location_(location), Event(type)
Packit 8a864e
{
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
MarkupEvent::MarkupEvent(Type type)
Packit 8a864e
: LocatedEvent(type, Location())
Packit 8a864e
{
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
MarkupEvent::MarkupEvent(Type type, const Location &loc, Markup *markup)
Packit 8a864e
: LocatedEvent(type, loc)
Packit 8a864e
{
Packit 8a864e
  if (markup)
Packit 8a864e
    markup->swap(markup_);
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
StartElementEvent::StartElementEvent(const ElementType *elementType,
Packit 8a864e
				     const ConstPtr<Dtd> &dtd,
Packit 8a864e
				     AttributeList *attributes,
Packit 8a864e
				     const Location &startLocation,
Packit 8a864e
				     Markup *markup)
Packit 8a864e
: LocatedEvent(startElement, startLocation),
Packit 8a864e
  elementType_(elementType),
Packit 8a864e
  dtd_(dtd),
Packit 8a864e
  included_(0),
Packit 8a864e
  copied_(0),
Packit 8a864e
  markup_(markup),
Packit 8a864e
  attributes_(attributes)
Packit 8a864e
{
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
StartElementEvent::~StartElementEvent()
Packit 8a864e
{
Packit 8a864e
  if (copied_) {
Packit 8a864e
    delete attributes_;
Packit 8a864e
    delete markup_;
Packit 8a864e
  }
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
void StartElementEvent::copyData()
Packit 8a864e
{
Packit 8a864e
  if (!copied_) {
Packit 8a864e
    {
Packit 8a864e
      AttributeList *p = new AttributeList;
Packit 8a864e
      attributes_->swap(*p);
Packit 8a864e
      attributes_ = p;
Packit 8a864e
    }
Packit 8a864e
    if (markup_) {
Packit 8a864e
      Markup *p = new Markup;
Packit 8a864e
      markup_->swap(*p);
Packit 8a864e
      markup_ = p;
Packit 8a864e
    }
Packit 8a864e
    copied_ = 1;
Packit 8a864e
  }
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
EndElementEvent::EndElementEvent(const ElementType *elementType,
Packit 8a864e
				 const ConstPtr<Dtd> &dtd,
Packit 8a864e
				 const Location &startLocation,
Packit 8a864e
				 Markup *markup)
Packit 8a864e
: LocatedEvent(endElement, startLocation),
Packit 8a864e
  elementType_(elementType),
Packit 8a864e
  dtd_(dtd),
Packit 8a864e
  included_(0),
Packit 8a864e
  copied_(0),
Packit 8a864e
  markup_(markup)
Packit 8a864e
{
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
EndElementEvent::~EndElementEvent()
Packit 8a864e
{
Packit 8a864e
  if (copied_)
Packit 8a864e
    delete markup_;
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
void EndElementEvent::copyData()
Packit 8a864e
{
Packit 8a864e
  if (!copied_) {
Packit 8a864e
    if (markup_) {
Packit 8a864e
      Markup *p = new Markup;
Packit 8a864e
      markup_->swap(*p);
Packit 8a864e
      markup_ = p;
Packit 8a864e
    }
Packit 8a864e
    copied_ = 1;
Packit 8a864e
  }
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
DataEvent::DataEvent(Type type, const Char *p, size_t length,
Packit 8a864e
		     const Location &location)
Packit 8a864e
: p_(p),length_(length), LocatedEvent(type, location)
Packit 8a864e
{
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
const Entity *DataEvent::entity() const
Packit 8a864e
{
Packit 8a864e
  return 0;
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
Boolean DataEvent::isRe(unsigned long &) const
Packit 8a864e
{
Packit 8a864e
  return 0;
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
ImmediateDataEvent::ImmediateDataEvent(Type type, const Char *p, size_t length,
Packit 8a864e
				       const Location &location,
Packit 8a864e
				       Boolean copy)
Packit 8a864e
: DataEvent(type, p, length, location), alloc_(0)
Packit 8a864e
{
Packit 8a864e
  if (copy) 
Packit 8a864e
    ImmediateDataEvent::copyData();
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
ImmediateDataEvent::~ImmediateDataEvent()
Packit 8a864e
{
Packit 8a864e
  if (alloc_)
Packit 8a864e
    delete [] alloc_;
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
void ImmediateDataEvent::copyData()
Packit 8a864e
{
Packit 8a864e
  if (!alloc_) {
Packit 8a864e
    alloc_ = new Char[length_];
Packit 8a864e
    memcpy(alloc_, p_, length_*sizeof(Char));
Packit 8a864e
    p_ = alloc_;
Packit 8a864e
  }
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
ReEvent::ReEvent(const Char *p, const Location &location, unsigned long serial)
Packit 8a864e
: ImmediateDataEvent(characterData, p, 1, location, 0),
Packit 8a864e
  serial_(serial)
Packit 8a864e
{
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
Boolean ReEvent::isRe(unsigned long &serial) const
Packit 8a864e
{
Packit 8a864e
  serial = serial_;
Packit 8a864e
  return 1;
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
DataEntityEvent::DataEntityEvent(Type type, const InternalEntity *entity,
Packit 8a864e
				 const ConstPtr<Origin> &origin)
Packit 8a864e
: DataEvent(type,
Packit 8a864e
	    entity->string().data(),
Packit 8a864e
	    entity->string().size(),
Packit 8a864e
	    Location(origin, 0))
Packit 8a864e
{
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
const Entity *DataEntityEvent::entity() const
Packit 8a864e
{
Packit 8a864e
  return location().origin()->asEntityOrigin()->entity();
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
CdataEntityEvent::CdataEntityEvent(const InternalEntity *entity,
Packit 8a864e
				   const ConstPtr<Origin> &origin)
Packit 8a864e
: DataEntityEvent(characterData, entity, origin)
Packit 8a864e
{
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
SdataEntityEvent::SdataEntityEvent(const InternalEntity *entity,
Packit 8a864e
				   const ConstPtr<Origin> &origin)
Packit 8a864e
: DataEntityEvent(sdataEntity, entity, origin)
Packit 8a864e
{
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
MessageEvent::MessageEvent(const Message &m)
Packit 8a864e
: Event(Event::message), message_(m)
Packit 8a864e
{
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
MessageEvent::MessageEvent(Message &m)
Packit 8a864e
: Event(Event::message)
Packit 8a864e
{
Packit 8a864e
  m.swap(message_);
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
MessageEvent::~MessageEvent()
Packit 8a864e
{
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
PiEvent::PiEvent(const Char *data, size_t dataLength, const Location &location)
Packit 8a864e
: data_(data), dataLength_(dataLength), LocatedEvent(pi, location)
Packit 8a864e
{
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
const Entity *PiEvent::entity() const
Packit 8a864e
{
Packit 8a864e
  return 0;
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
PiEntityEvent::PiEntityEvent(const PiEntity *entity,
Packit 8a864e
			     const ConstPtr<Origin> &origin)
Packit 8a864e
: PiEvent(entity->string().data(), entity->string().size(),
Packit 8a864e
	  Location(origin, 0))
Packit 8a864e
{
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
const Entity *PiEntityEvent::entity() const
Packit 8a864e
{
Packit 8a864e
  return location().origin()->asEntityOrigin()->entity();
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
ImmediatePiEvent::ImmediatePiEvent(StringC &str, const Location &loc)
Packit 8a864e
: PiEvent(str.data(), str.size(), loc)
Packit 8a864e
{
Packit 8a864e
  str.swap(string_);
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
ExternalEntityEvent::ExternalEntityEvent(Type type, 
Packit 8a864e
					 const ConstPtr<EntityOrigin> &origin)
Packit 8a864e
: origin_(origin), Event(type)
Packit 8a864e
{
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
ExternalDataEntityEvent::ExternalDataEntityEvent(const ExternalDataEntity *entity,
Packit 8a864e
						 const ConstPtr<EntityOrigin> &origin)
Packit 8a864e
: dataEntity_(entity), ExternalEntityEvent(externalDataEntity, origin)
Packit 8a864e
{
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
SubdocEntityEvent::SubdocEntityEvent(const SubdocEntity *entity,
Packit 8a864e
				     const ConstPtr<EntityOrigin> &origin)
Packit 8a864e
: subdocEntity_(entity), ExternalEntityEvent(subdocEntity, origin)
Packit 8a864e
{
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
NonSgmlCharEvent::NonSgmlCharEvent(Char c, const Location &location)
Packit 8a864e
: LocatedEvent(nonSgmlChar, location), c_(c)
Packit 8a864e
{
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
AppinfoEvent::AppinfoEvent(const Location &location)
Packit 8a864e
: LocatedEvent(appinfo, location), appinfoNone_(1)
Packit 8a864e
{
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
AppinfoEvent::AppinfoEvent(const Text &text, const Location &location)
Packit 8a864e
: LocatedEvent(appinfo, location), appinfoNone_(0), appinfo_(text)
Packit 8a864e
{
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
UselinkEvent::UselinkEvent(const ConstPtr<Lpd> &lpd,
Packit 8a864e
			   const LinkSet *linkSet,
Packit 8a864e
			   Boolean restore,
Packit 8a864e
			   const Location &loc,
Packit 8a864e
			   Markup *markup)
Packit 8a864e
: MarkupEvent(uselink, loc, markup),
Packit 8a864e
  lpd_(lpd),
Packit 8a864e
  linkSet_(linkSet),
Packit 8a864e
  restore_(restore)
Packit 8a864e
{
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
UsemapEvent::UsemapEvent(const ShortReferenceMap *map,
Packit 8a864e
			 Vector<const ElementType *> &elements,
Packit 8a864e
			 const ConstPtr<Dtd> &dtd,
Packit 8a864e
			 const Location &loc,
Packit 8a864e
			 Markup *markup)
Packit 8a864e
: MarkupEvent(usemap, loc, markup),
Packit 8a864e
  map_(map),
Packit 8a864e
  dtd_(dtd)
Packit 8a864e
{
Packit 8a864e
  elements.swap(elements_);
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
StartSubsetEvent::StartSubsetEvent(Type type,
Packit 8a864e
				   const StringC &name,
Packit 8a864e
				   const ConstPtr<Entity> &entity,
Packit 8a864e
				   Boolean hasInternalSubset,
Packit 8a864e
				   const Location &loc,
Packit 8a864e
				   Markup *markup)
Packit 8a864e
: name_(name), entity_(entity), hasInternalSubset_(hasInternalSubset),
Packit 8a864e
  MarkupEvent(type, loc, markup)
Packit 8a864e
{
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
StartDtdEvent::StartDtdEvent(const StringC &name,
Packit 8a864e
			     const ConstPtr<Entity> &entity,
Packit 8a864e
			     Boolean hasInternalSubset,
Packit 8a864e
			     const Location &loc,
Packit 8a864e
			     Markup *markup)
Packit 8a864e
: StartSubsetEvent(startDtd, name, entity, hasInternalSubset, loc, markup)
Packit 8a864e
{
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
StartLpdEvent::StartLpdEvent(Boolean active,
Packit 8a864e
			     const StringC &name,
Packit 8a864e
			     const ConstPtr<Entity> &entity,
Packit 8a864e
			     Boolean hasInternalSubset,
Packit 8a864e
			     const Location &loc,
Packit 8a864e
			     Markup *markup)
Packit 8a864e
: StartSubsetEvent(startLpd, name, entity, hasInternalSubset, loc, markup),
Packit 8a864e
  active_(active)
Packit 8a864e
{
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
EndDtdEvent::EndDtdEvent(const ConstPtr<Dtd> &dtd,
Packit 8a864e
			 const Location &loc,
Packit 8a864e
			 Markup *markup)
Packit 8a864e
:  MarkupEvent(endDtd, loc, markup), dtd_(dtd)
Packit 8a864e
{
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
EndLpdEvent::EndLpdEvent(const ConstPtr<Lpd> &lpd,
Packit 8a864e
			 const Location &loc,
Packit 8a864e
			 Markup *markup)
Packit 8a864e
:  MarkupEvent(endLpd, loc, markup), lpd_(lpd)
Packit 8a864e
{
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
EndPrologEvent::EndPrologEvent(const ConstPtr<Dtd> &dtd,
Packit 8a864e
			       const ConstPtr<ComplexLpd> &lpd,
Packit 8a864e
			       Vector<StringC> &simpleLinkNames,
Packit 8a864e
			       Vector<AttributeList> &simpleLinkAttributes,
Packit 8a864e
			       const Location &location)
Packit 8a864e
: LocatedEvent(endProlog, location), dtd_(dtd), lpd_(lpd)
Packit 8a864e
{
Packit 8a864e
  simpleLinkAttributes.swap(simpleLinkAttributes_);
Packit 8a864e
  simpleLinkNames.swap(simpleLinkNames_);
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
EndPrologEvent::EndPrologEvent(const ConstPtr<Dtd> &dtd,
Packit 8a864e
			       const Location &location)
Packit 8a864e
: LocatedEvent(endProlog, location), dtd_(dtd)
Packit 8a864e
{
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
SgmlDeclEvent::SgmlDeclEvent(const ConstPtr<Sd> &sd,
Packit 8a864e
			     const ConstPtr<Syntax> &syntax)
Packit 8a864e
Packit 8a864e
: sd_(sd), prologSyntax_(syntax), instanceSyntax_(syntax),
Packit 8a864e
  nextIndex_(0), MarkupEvent(sgmlDecl)
Packit 8a864e
{
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
SgmlDeclEvent::SgmlDeclEvent(const ConstPtr<Sd> &sd,
Packit 8a864e
			     const ConstPtr<Syntax> &prologSyntax,
Packit 8a864e
			     const ConstPtr<Syntax> &instanceSyntax,
Packit 8a864e
			     const ConstPtr<Sd> &refSd,
Packit 8a864e
			     const ConstPtr<Syntax> &refSyntax,
Packit 8a864e
			     Index nextIndex,
Packit 8a864e
			     const StringC &implySystemId,
Packit 8a864e
			     const Location &loc,
Packit 8a864e
			     Markup *markup)
Packit 8a864e
: sd_(sd), prologSyntax_(prologSyntax), instanceSyntax_(instanceSyntax),
Packit 8a864e
  refSd_(refSd), refSyntax_(refSyntax),
Packit 8a864e
  nextIndex_(nextIndex), implySystemId_(implySystemId),
Packit 8a864e
  MarkupEvent(sgmlDecl, loc, markup)
Packit 8a864e
{
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
CommentDeclEvent::CommentDeclEvent(const Location &loc,
Packit 8a864e
				   Markup *markup)
Packit 8a864e
: MarkupEvent(commentDecl, loc, markup)
Packit 8a864e
{
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
SSepEvent::SSepEvent(const Char *p, size_t length,
Packit 8a864e
		     const Location &location, Boolean copy)
Packit 8a864e
: ImmediateDataEvent(sSep, p, length, location, copy)
Packit 8a864e
{
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
IgnoredRsEvent::IgnoredRsEvent(Char c, const Location &location)
Packit 8a864e
: LocatedEvent(ignoredRs, location), c_(c)
Packit 8a864e
{
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
IgnoredReEvent::IgnoredReEvent(Char c, const Location &location,
Packit 8a864e
			       unsigned long serial)
Packit 8a864e
: LocatedEvent(ignoredRe, location),
Packit 8a864e
  c_(c),
Packit 8a864e
  serial_(serial)
Packit 8a864e
{
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
ReOriginEvent::ReOriginEvent(Char c, const Location &location,
Packit 8a864e
			     unsigned long serial)
Packit 8a864e
: LocatedEvent(reOrigin, location), c_(c), serial_(serial)
Packit 8a864e
{
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
Packit 8a864e
IgnoredCharsEvent::IgnoredCharsEvent(const Char *p, size_t length,
Packit 8a864e
				     const Location &location, Boolean copy)
Packit 8a864e
: ImmediateDataEvent(ignoredChars, p, length, location, copy)
Packit 8a864e
{
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
MarkedSectionEvent::MarkedSectionEvent(Type type, Status status,
Packit 8a864e
				       const Location &loc,
Packit 8a864e
				       Markup *markup)
Packit 8a864e
: MarkupEvent(type, loc, markup),
Packit 8a864e
  status_(status)
Packit 8a864e
{
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
MarkedSectionStartEvent::MarkedSectionStartEvent(Status status,
Packit 8a864e
						 const Location &loc,
Packit 8a864e
						 Markup *markup)
Packit 8a864e
: MarkedSectionEvent(markedSectionStart, status, loc, markup)
Packit 8a864e
{
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
MarkedSectionEndEvent::MarkedSectionEndEvent(Status status,
Packit 8a864e
					     const Location &loc,
Packit 8a864e
					     Markup *markup)
Packit 8a864e
: MarkedSectionEvent(markedSectionEnd, status, loc, markup)
Packit 8a864e
{
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
EntityStartEvent::EntityStartEvent(const ConstPtr<EntityOrigin> &origin)
Packit 8a864e
: Event(entityStart), origin_(origin)
Packit 8a864e
{
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
EntityEndEvent::EntityEndEvent(const Location &location)
Packit 8a864e
: LocatedEvent(entityEnd, location)
Packit 8a864e
{
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
EntityDeclEvent:: EntityDeclEvent(const ConstPtr<Entity> &entity,
Packit 8a864e
				  Boolean ignored, const Location &loc,
Packit 8a864e
				  Markup *markup)
Packit 8a864e
: MarkupEvent(entityDecl, loc, markup),
Packit 8a864e
  entity_(entity),
Packit 8a864e
  ignored_(ignored)
Packit 8a864e
{
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
NotationDeclEvent:: NotationDeclEvent(const ConstPtr<Notation> &notation,
Packit 8a864e
				      const Location &loc,
Packit 8a864e
				      Markup *markup)
Packit 8a864e
: MarkupEvent(notationDecl, loc, markup), notation_(notation)
Packit 8a864e
{
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
ElementDeclEvent::ElementDeclEvent(Vector<const ElementType *> &elements,
Packit 8a864e
				   const ConstPtr<Dtd> &dtd,
Packit 8a864e
				   const Location &loc,
Packit 8a864e
				   Markup *markup)
Packit 8a864e
: MarkupEvent(elementDecl, loc, markup), dtd_(dtd)
Packit 8a864e
{
Packit 8a864e
  elements.swap(elements_);
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
AttlistDeclEvent::AttlistDeclEvent(Vector<const ElementType *> &elements,
Packit 8a864e
				   const ConstPtr<Dtd> &dtd,
Packit 8a864e
				   const Location &loc,
Packit 8a864e
				   Markup *markup)
Packit 8a864e
: MarkupEvent(attlistDecl, loc, markup), dtd_(dtd)
Packit 8a864e
{
Packit 8a864e
  elements.swap(elements_);
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
AttlistNotationDeclEvent::AttlistNotationDeclEvent(
Packit 8a864e
  Vector<ConstPtr<Notation> > &notations, const Location &loc,
Packit 8a864e
						   Markup *markup)
Packit 8a864e
: MarkupEvent(attlistNotationDecl, loc, markup)
Packit 8a864e
{
Packit 8a864e
  notations.swap(notations_);
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
LinkAttlistDeclEvent
Packit 8a864e
::LinkAttlistDeclEvent(Vector<const ElementType *> &elements,
Packit 8a864e
		       const ConstPtr<Lpd> &lpd,
Packit 8a864e
		       const Location &loc,
Packit 8a864e
		       Markup *markup)
Packit 8a864e
: MarkupEvent(linkAttlistDecl, loc, markup), lpd_(lpd)
Packit 8a864e
{
Packit 8a864e
  elements.swap(elements_);
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
LinkDeclEvent::LinkDeclEvent(const LinkSet *linkSet,
Packit 8a864e
			     const ConstPtr<ComplexLpd> &lpd,
Packit 8a864e
			     const Location &loc,
Packit 8a864e
			     Markup *markup)
Packit 8a864e
: MarkupEvent(linkDecl, loc, markup), lpd_(lpd), linkSet_(linkSet)
Packit 8a864e
{
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
IdLinkDeclEvent::IdLinkDeclEvent(const ConstPtr<ComplexLpd> &lpd,
Packit 8a864e
				 const Location &loc,
Packit 8a864e
				 Markup *markup)
Packit 8a864e
: MarkupEvent(linkDecl, loc, markup), lpd_(lpd)
Packit 8a864e
{
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
ShortrefDeclEvent::ShortrefDeclEvent(const ShortReferenceMap *map,
Packit 8a864e
				     const ConstPtr<Dtd> &dtd,
Packit 8a864e
				     const Location &loc,
Packit 8a864e
				     Markup *markup)
Packit 8a864e
: MarkupEvent(shortrefDecl, loc, markup), map_(map), dtd_(dtd)
Packit 8a864e
{
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
IgnoredMarkupEvent::IgnoredMarkupEvent(const Location &loc,
Packit 8a864e
				       Markup *markup)
Packit 8a864e
: MarkupEvent(ignoredMarkup, loc, markup)
Packit 8a864e
{
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
EntityDefaultedEvent::EntityDefaultedEvent(const ConstPtr<Entity> &entity,
Packit 8a864e
					   const Location &loc)
Packit 8a864e
: LocatedEvent(entityDefaulted, loc), entity_(entity)
Packit 8a864e
{
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
SgmlDeclEntityEvent::  SgmlDeclEntityEvent(const PublicId &publicId,
Packit 8a864e
					   PublicId::TextClass entityType,
Packit 8a864e
					   const StringC &effectiveSystemId,
Packit 8a864e
					   const Location &loc)
Packit 8a864e
: LocatedEvent(sgmlDeclEntity, loc), publicId_(publicId),
Packit 8a864e
  entityType_(entityType), effectiveSystemId_(effectiveSystemId)
Packit 8a864e
{
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
EventHandler::~EventHandler()
Packit 8a864e
{
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
// By default, do nothing when an input opens or closes.
Packit 8a864e
void EventHandler::inputClosed(InputSource *in) {}
Packit 8a864e
Packit 8a864e
void EventHandler::inputOpened(InputSource *in) {}
Packit 8a864e
Packit 8a864e
EventQueue::EventQueue()
Packit 8a864e
{
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
#define EVENT(c, f) \
Packit 8a864e
  void EventHandler::f(c *event) { delete event; } \
Packit 8a864e
  void EventQueue::f(c *event) { append(event); } \
Packit 8a864e
  void c::handle(EventHandler &handler) { handler.f(this); }
Packit 8a864e
#include "events.h"
Packit 8a864e
#undef EVENT
Packit 8a864e
Packit 8a864e
Pass1EventHandler::Pass1EventHandler()
Packit 8a864e
: hadError_(0), origHandler_(0)
Packit 8a864e
{
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
void Pass1EventHandler::init(EventHandler *origHandler)
Packit 8a864e
{
Packit 8a864e
  hadError_ = 0;
Packit 8a864e
  origHandler_ = origHandler;
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
void Pass1EventHandler::message(MessageEvent *event)
Packit 8a864e
{
Packit 8a864e
  if (event->message().isError()) {
Packit 8a864e
    hadError_ = 1;
Packit 8a864e
    origHandler_->message(event);
Packit 8a864e
  }
Packit 8a864e
  else
Packit 8a864e
    IQueue<Event>::append(event);
Packit 8a864e
}
Packit 8a864e
Packit 8a864e
#ifdef SP_NAMESPACE
Packit 8a864e
}
Packit 8a864e
#endif