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

📄 lpd.h

📁 html-->wml的转换,能实现html到wml的大量转换工作,但是存在些许缺陷,比如对于jpeg以及gif无法转换成wbmp格式
💻 H
字号:
// Copyright (c) 1994 James Clark// See the file COPYING for copying permission.#ifndef Lpd_INCLUDED#define Lpd_INCLUDED 1#ifdef __GNUG__#pragma interface#endif#include "Attribute.h"#include "StringC.h"#include "Ptr.h"#include "Resource.h"#include "Boolean.h"#include "Named.h"#include "NamedTable.h"#include "Syntax.h"#include "Location.h"#include "Dtd.h"#ifdef SP_NAMESPACEnamespace SP_NAMESPACE {#endifclass ElementType;struct SP_API ResultElementSpec {  ResultElementSpec();  const ElementType *elementType;  AttributeList attributeList;  void swap(ResultElementSpec &);};class SP_API Lpd : public Resource {public:  enum Type { simpleLink, implicitLink, explicitLink };  Lpd(const StringC &, Type, const Location &,      const Ptr<Dtd> &sourceDtd);  virtual ~Lpd();  Type type() const;  const Location &location() const;  const Ptr<Dtd> &sourceDtd();  ConstPtr<Dtd> sourceDtd() const;  Boolean active() const;  void activate();  const ConstPtr<StringResource<Char> > &namePointer() const;  const StringC &name() const;private:  Lpd(const Lpd &);		// undefined  void operator=(const Lpd &);	// undefined  Type type_;  Location location_;  Boolean active_;  Ptr<Dtd> sourceDtd_;  ConstPtr<StringResource<Char> > name_;};class SP_API SimpleLpd : public Lpd, public Attributed {public:  SimpleLpd(const StringC &, const Location &,	    const Ptr<Dtd> &sourceDtd);private:  SimpleLpd(const SimpleLpd &);	// undefined  void operator=(const SimpleLpd &); // undefined};class LinkSet;// A link rule whose source element specification is not implied.class SP_API SourceLinkRule {public:  SourceLinkRule();  void setLinkAttributes(AttributeList &);  void setResult(const ElementType *, AttributeList &);  void setUselink(const LinkSet *);  void setPostlink(const LinkSet *);  void setPostlinkRestore();  void swap(SourceLinkRule &);  const AttributeList &attributes() const;  const ResultElementSpec &resultElementSpec() const;  const LinkSet *uselink() const;  const LinkSet *postlink() const;  Boolean postlinkRestore() const;private:  const LinkSet *uselink_;  const LinkSet *postlink_;  Boolean postlinkRestore_;  AttributeList linkAttributes_;  ResultElementSpec resultElementSpec_;};class SP_API SourceLinkRuleResource : public Resource, public SourceLinkRule {public:  SourceLinkRuleResource();};class SP_API LinkSet : public Named {public:  LinkSet(const StringC &, const Dtd *);  void setDefined();  Boolean defined() const;  void addImplied(const ElementType *, AttributeList &);  size_t nLinkRules(const ElementType *) const;  const SourceLinkRule &linkRule(const ElementType *, size_t) const;  void addLinkRule(const ElementType *,		   const ConstPtr<SourceLinkRuleResource> &);  size_t nImpliedLinkRules() const;  const ResultElementSpec &impliedLinkRule(size_t) const;  Boolean impliedResultAttributes(const ElementType *,				  const AttributeList *&);private:  LinkSet(const LinkSet &);	// undefined  void operator=(const LinkSet &); // undefined  Boolean defined_;  // indexed by typeIndex of source elements  Vector<Vector<ConstPtr<SourceLinkRuleResource> > >     linkRules_;  Vector<ResultElementSpec> impliedSourceLinkRules_;};class SP_API IdLinkRule : public SourceLinkRule {public:  IdLinkRule();  Boolean isAssociatedWith(const ElementType *) const;  void setAssocElementTypes(Vector<const ElementType *> &);  void swap(IdLinkRule &);private:  Vector<const ElementType *> assocElementTypes_;};// A collection of link rules in a ID link set that are// assocated with the same name (unique identifier).class SP_API IdLinkRuleGroup : public Named {public:  IdLinkRuleGroup(const StringC &);  size_t nLinkRules() const;  const IdLinkRule &linkRule(size_t) const;  void addLinkRule(IdLinkRule &);private:  IdLinkRuleGroup(const IdLinkRuleGroup &); // undefined  void operator=(const IdLinkRuleGroup &);  // undefined  Vector<IdLinkRule> linkRules_;};// An implicit or explicit LPD.class SP_API ComplexLpd : public Lpd {public:  typedef ConstNamedTableIter<LinkSet> ConstLinkSetIter;  ComplexLpd(const StringC &, Type,	     const Location &,	     const Syntax &syntax,	     const Ptr<Dtd> &sourceDtd,	     const Ptr<Dtd> &resultDtd);  size_t allocAttributeDefinitionListIndex();  size_t nAttributeDefinitionList() const;  LinkSet *initialLinkSet();  const LinkSet *initialLinkSet() const;  const LinkSet *emptyLinkSet() const;  const LinkSet *lookupLinkSet(const StringC &) const;  const IdLinkRuleGroup *lookupIdLink(const StringC &) const;  IdLinkRuleGroup *lookupCreateIdLink(const StringC &);  void insertIdLink(IdLinkRuleGroup *);  ConstLinkSetIter linkSetIter() const;  Boolean hadIdLinkSet() const;  void setHadIdLinkSet();  LinkSet *lookupLinkSet(const StringC &);  LinkSet *insertLinkSet(LinkSet *);  const Ptr<Dtd> &resultDtd();  ConstPtr<Dtd> resultDtd() const;  const ConstPtr<AttributeDefinitionList> &    attributeDef(const ElementType *) const;  void setAttributeDef(const ElementType *,		       const ConstPtr<AttributeDefinitionList> &);private:  ComplexLpd(const ComplexLpd &); // undefined  void operator=(const ComplexLpd &); // undefined  Ptr<Dtd> resultDtd_;  Vector<ConstPtr<AttributeDefinitionList> > linkAttributeDefs_;  NamedTable<LinkSet> linkSetTable_;  LinkSet initialLinkSet_;  LinkSet emptyLinkSet_;  Boolean hadIdLinkSet_;  NamedTable<IdLinkRuleGroup> idLinkTable_;  size_t nAttributeDefinitionList_;};inlineLpd::Type Lpd::type() const{  return type_;}inlineconst Location &Lpd::location() const{  return location_;}inlineBoolean Lpd::active() const{  return active_;}inlinevoid Lpd::activate(){  active_ = 1;}inlineConstPtr<Dtd> Lpd::sourceDtd() const{  return sourceDtd_;}inlineconst Ptr<Dtd> &Lpd::sourceDtd(){  return sourceDtd_;}inlineconst ConstPtr<StringResource<Char> > &Lpd::namePointer() const{  return name_;}inlineconst StringC &Lpd::name() const{  return *name_;}inlinevoid SourceLinkRule::setLinkAttributes(AttributeList &attributes){  attributes.swap(linkAttributes_);}inlineconst AttributeList &SourceLinkRule::attributes() const{  return linkAttributes_;}inlinevoid SourceLinkRule::setResult(const ElementType *element,			       AttributeList &attributes){  resultElementSpec_.elementType = element;  attributes.swap(resultElementSpec_.attributeList);}inlineconst ResultElementSpec &SourceLinkRule::resultElementSpec() const{  return resultElementSpec_;}inlinevoid SourceLinkRule::setUselink(const LinkSet *linkSet){  uselink_ = linkSet;}inlinevoid SourceLinkRule::setPostlink(const LinkSet *linkSet){  postlink_ = linkSet;}inlinevoid SourceLinkRule::setPostlinkRestore(){  postlinkRestore_ = 1;}inlineconst LinkSet *SourceLinkRule::uselink() const{  return uselink_;}inlineconst LinkSet *SourceLinkRule::postlink() const{  return postlink_;}inlineBoolean SourceLinkRule::postlinkRestore() const{  return postlinkRestore_;}inlineBoolean LinkSet::defined() const{  return defined_;}inlinevoid LinkSet::setDefined(){  defined_ = 1;}inlineconst SourceLinkRule &LinkSet::linkRule(const ElementType *e, size_t i) const{  return *linkRules_[e->index()][i];}inlinesize_t LinkSet::nImpliedLinkRules() const{  return impliedSourceLinkRules_.size();}inlineconst ResultElementSpec &LinkSet::impliedLinkRule(size_t i) const{  return impliedSourceLinkRules_[i];}inlineconst Ptr<Dtd> &ComplexLpd::resultDtd(){  return resultDtd_;}inlineConstPtr<Dtd> ComplexLpd::resultDtd() const{  return resultDtd_;}inlineLinkSet *ComplexLpd::initialLinkSet(){  return &initialLinkSet_;}inlineconst LinkSet *ComplexLpd::initialLinkSet() const{  return &initialLinkSet_;}inlineconst LinkSet *ComplexLpd::emptyLinkSet() const{  return &emptyLinkSet_;}inlineconst LinkSet *ComplexLpd::lookupLinkSet(const StringC &name) const{  return linkSetTable_.lookup(name);}inlineLinkSet *ComplexLpd::lookupLinkSet(const StringC &name){  return linkSetTable_.lookup(name);}inlineLinkSet *ComplexLpd::insertLinkSet(LinkSet *e){  return linkSetTable_.insert(e);}inlinesize_t ComplexLpd::nAttributeDefinitionList() const{  return nAttributeDefinitionList_;}inlinesize_t ComplexLpd::allocAttributeDefinitionListIndex(){  return nAttributeDefinitionList_++;}inlineComplexLpd::ConstLinkSetIter ComplexLpd::linkSetIter() const{  // Avoid use of typedef to work around MSVC 2.0 bug.  return ConstNamedTableIter<LinkSet>(linkSetTable_);}inlineconst ConstPtr<AttributeDefinitionList> &ComplexLpd::attributeDef(const ElementType *e) const{  return linkAttributeDefs_[e->index()];}inlinevoid ComplexLpd::setAttributeDef(const ElementType *e,				 const ConstPtr<AttributeDefinitionList> &attdef){  linkAttributeDefs_[e->index()] = attdef;}inlineBoolean ComplexLpd::hadIdLinkSet() const{  return hadIdLinkSet_;}inlinevoid ComplexLpd::setHadIdLinkSet(){  hadIdLinkSet_ = 1;}inlineconst IdLinkRuleGroup *ComplexLpd::lookupIdLink(const StringC &id) const{  return idLinkTable_.lookup(id);}inlinesize_t IdLinkRuleGroup::nLinkRules() const{  return linkRules_.size();}inlineconst IdLinkRule &IdLinkRuleGroup::linkRule(size_t i) const{  return linkRules_[i];}#ifdef SP_NAMESPACE}#endif#endif /* not Lpd_INCLUDED */

⌨️ 快捷键说明

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