⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 arcprocessor.h

📁 SP是一个基于GNU C++编译器
💻 H
字号:
// Copyright (c) 1996 James Clark// See the file COPYING for copying permission.#ifndef ArcProcessor_INCLUDED#define ArcProcessor_INCLUDED 1#include "Event.h"#include "ContentState.h"#include "Id.h"#include "NamedTable.h"#include "Vector.h"#include "ArcEngine.h"#include "SgmlParser.h"#ifdef SP_NAMESPACEnamespace SP_NAMESPACE {#endifclass Allocator;// Processor for a single architectureclass ArcProcessor : private ContentState, private AttributeContext {public:  struct MetaMap {    MetaMap();    void clear();    const Attributed *attributed;    unsigned suppressFlags;    // #ARCCONT and #CONTENT are handled with a special index    // list of indexes into element's attlist of architectural attributes    Vector<unsigned> attMapFrom;    // corresponding list of indexes in form's attlist    Vector<unsigned> attMapTo;  };  struct MetaMapCache {    MetaMapCache();    void clear();    MetaMap map;    enum { nNoSpec = 4 };    // Prerequisites for this cached entry to be valid.    // The cache is only valid if for each member of noSpec != -1    // the attribute with that index was not specified (or current)    unsigned noSpec[nNoSpec];    unsigned suppressFlags;    const AttributeList *linkAtts;  };  ArcProcessor();  void setName(const StringC &);  void init(const EndPrologEvent &,	    const ConstPtr<Sd> &,	    const ConstPtr<Syntax> &,	    const SgmlParser *parser,	    Messenger *,	    const Vector<StringC> &superName,	    ArcDirector &director,	    const volatile sig_atomic_t *cancelPtr);  // Return 0 if the content is needed, but wasn't supplied  Boolean processStartElement(const StartElementEvent &,			      const AttributeList *linkAttributes,			      const Text *content,			      Allocator &);  void processEndElement(const EndElementEvent &,			 Allocator &);  // Return true if its architectural.  Boolean processData();  ConstPtr<Dtd> dtdPointer() const { return metaDtd_; }  Boolean valid() const { return valid_; }  void checkIdrefs();  const StringC &name() const { return name_; }  EventHandler &docHandler() const { return *docHandler_; }private:  ArcProcessor(const ArcProcessor &); // undefined  void operator=(const ArcProcessor &);	// undefined  const Syntax &attributeSyntax() const;  ConstPtr<Notation> getAttributeNotation(const StringC &,					  const Location &);  ConstPtr<Entity> getAttributeEntity(const StringC &,				      const Location &);  void noteCurrentAttribute(size_t, AttributeValue *);  ConstPtr<AttributeValue> getCurrentAttribute(size_t) const;  Boolean defineId(const StringC &, const Location &, Location &);  void noteIdref(const StringC &, const Location &);  Id *lookupCreateId(const StringC &);  void dispatchMessage(const Message &);  void dispatchMessage(Message &);  void initMessage(Message &);  const MetaMap &buildMetaMap(const ElementType *,			      const Notation *,			      const AttributeList &,			      const AttributeList *linkAtts,			      unsigned suppressFlags);  void considerSupr(const AttributeList &atts,		    const AttributeList *linkAtts,		    unsigned &thisSuppressFlags,		    unsigned &newSuppressFlags,		    Boolean &inhibitCache,		    unsigned &arcSuprIndex);  void considerIgnD(const AttributeList &atts,		    const AttributeList *linkAtts,		    unsigned thisSuppressFlags,		    unsigned &newSuppressFlags,		    Boolean &inhibitCache,		    unsigned &arcSuprIndex);  const Attributed *considerForm(const AttributeList &atts,				 const AttributeList *linkAtts,				 const StringC &name,				 Boolean isNotation,				 unsigned thisSuppressFlags,				 unsigned &newSuppressFlags,				 Boolean &inhibitCache,				 unsigned &arcFormIndex);  const Attributed *autoForm(const AttributeList &atts,			     const StringC &name,			     Boolean isNotation,			     unsigned thisSuppressFlags,			     unsigned &newSuppressFlags,			     Boolean &inhibitCache,			     unsigned &idIndex);  const Text *considerNamer(const AttributeList &atts,			    Boolean &inhibitCache,			    unsigned &arcNamerIndex);  void buildAttributeMapRename(MetaMap &map,			       const Text &rename,			       const AttributeList &atts,			       const AttributeList *linkAtts,			       Vector<PackedBoolean> &attRenamed);  void buildAttributeMapRest(MetaMap &map,			     const AttributeList &atts,			     const AttributeList *linkAtts,			     const Vector<PackedBoolean> &attRenamed);  Boolean matchName(const StringC &name, const char *key);  void split(const Text &text,	     Char space,	     Vector<StringC> &tokens,	     Vector<size_t> &tokenPos);  Boolean mapAttributes(const AttributeList &from,			const AttributeList *fromLink,			const Text *content,			AttributeList &to,			ConstPtr<AttributeValue> &arcContent,			const MetaMap &map);  void supportAttributes(const AttributeList &);  void processArcOpts(const AttributeList &atts);  void processArcQuant(const Text &);  ConstPtr<Entity> makeDtdEntity(const Notation *);  void mungeMetaDtd(Dtd &metaDtd, const Dtd &docDtd);  Boolean mungeDataEntity(ExternalDataEntity &entity);  void emitArcContent(const Text &text,		      EventHandler &handler,		      Allocator &allocator);  Boolean valid_;  StringC name_;  Messenger *mgr_;  ConstPtr<Dtd> docDtd_;  Ptr<Dtd> metaDtd_;  ConstPtr<Syntax> docSyntax_;  ConstPtr<Syntax> metaSyntax_;  ConstPtr<Sd> docSd_;  enum ReservedName {    rArcFormA,    rArcNamrA,    rArcSuprA,    rArcIgnDA,    rArcDocF,    rArcSuprF,    rArcBridF,    rArcDataF,    rArcAuto,    rArcIndr,    rArcDTD,    rArcQuant  };  enum { nReserve = rArcQuant + 1 };  StringC supportAtts_[nReserve];  Boolean arcDtdIsParam_;  Boolean arcAuto_;  Vector<StringC> arcOpts_;  StringC rniContent_;  StringC rniArcCont_;  StringC rniDefault_;  enum {    isArc = 01,    suppressForm = 02,    suppressSupr = 04,    ignoreData = 010,    condIgnoreData = 020,    // recovering from invalid data    recoverData = 040    };  Vector<unsigned> openElementFlags_;  AttributeList attributeList_;  NCVector<Owner<MetaMapCache> > metaMapCache_;  MetaMap noCacheMetaMap_;  NamedTable<Id> idTable_;  Vector<ConstPtr<AttributeValue> > currentAttributes_;  ConstPtr<Notation> defaultNotation_;  Boolean errorIdref_;  ArcDirector *director_;  EventHandler *docHandler_;  Owner<EventHandler> ownEventHandler_;  size_t docIndex_;};#ifdef SP_NAMESPACE}#endif#endif /* not ArcProcessor_INCLUDED */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -