|
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> ¬ation,
|
|
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> > ¬ations, 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
|