📄 sd.h
字号:
// Copyright (c) 1994 James Clark// See the file COPYING for copying permission.#ifndef Sd_INCLUDED#define Sd_INCLUDED 1#ifdef __GNUG__#pragma interface#endif#include "types.h"#include "Boolean.h"#include "Resource.h"#include "CharsetInfo.h"#include "ExternalId.h"#include "ISet.h"#include "Syntax.h"#include "CharsetDecl.h"#include "HashTable.h"#include "EntityManager.h"#include "Ptr.h"// Information about the SGML declaration that is not syntax specific.#ifdef SP_NAMESPACEnamespace SP_NAMESPACE {#endifclass SP_API Sd : public Resource {public: // These must be in the same order as in the SGML declaration. enum BooleanFeature { fDATATAG, fOMITTAG, fRANK, fSTARTTAGEMPTY, fSTARTTAGUNCLOSED, fENDTAGEMPTY, fENDTAGUNCLOSED, fATTRIBDEFAULT, fATTRIBOMITNAME, fATTRIBVALUE, fEMPTYNRM, fIMPLYDEFATTLIST, fIMPLYDEFDOCTYPE, fIMPLYDEFELEMENT, fIMPLYDEFENTITY, fIMPLYDEFNOTATION, fIMPLICIT, fFORMAL, fURN, fKEEPRSRE }; enum { nBooleanFeature = fKEEPRSRE + 1, fSHORTTAG_FIRST = fSTARTTAGEMPTY, fSHORTTAG_LAST = fATTRIBVALUE }; // These must be in the same order as in the SGML declaration. enum NumberFeature { fSIMPLE, fEXPLICIT, fCONCUR, fSUBDOC }; enum { nNumberFeature = fSUBDOC + 1 }; enum NetEnable { netEnableNo, netEnableImmednet, netEnableAll }; enum EntityRef { entityRefAny, entityRefInternal, entityRefNone }; // These are names used in the SGML declaration. enum ReservedName { rALL, rANY, rAPPINFO, rATTLIST, rATTRIB, rBASESET, rCAPACITY, rCHARSET, rCONCUR, rCONTROLS, rDATATAG, rDEFAULT, rDELIM, rDESCSET, rDOCTYPE, rDOCUMENT, rELEMENT, rEMPTY, rEMPTYNRM, rENDTAG, rENTITIES, rENTITY, rEXPLICIT, rFEATURES, rFORMAL, rFUNCHAR, rFUNCTION, rGENERAL, rIMMEDNET, rIMPLICIT, rIMPLYDEF, rINSTANCE, rINTEGRAL, rINTERNAL, rKEEPRSRE, rLCNMCHAR, rLCNMSTRT, rLINK, rMINIMIZE, rMSICHAR, rMSOCHAR, rMSSCHAR, rNAMECASE, rNAMECHAR, rNAMES, rNAMESTRT, rNAMING, rNETENABL, rNO, rNOASSERT, rNONE, rNOTATION, rOMITNAME, rOMITTAG, rOTHER, rPUBLIC, rQUANTITY, rRANK, rRE, rREF, rRS, rSCOPE, rSEEALSO, rSEPCHAR, rSGML, rSGMLREF, rSHORTREF, rSHORTTAG, rSHUNCHAR, rSIMPLE, rSPACE, rSTARTTAG, rSUBDOC, rSWITCHES, rSYNTAX, rSYSTEM, rTYPE, rUCNMCHAR, rUCNMSTRT, rUNCLOSED, rUNUSED, rURN, rVALIDITY, rVALUE, rYES }; enum Capacity { TOTALCAP, ENTCAP, ENTCHCAP, ELEMCAP, GRPCAP, EXGRPCAP, EXNMCAP, ATTCAP, ATTCHCAP, AVGRPCAP, NOTCAP, NOTCHCAP, IDCAP, IDREFCAP, MAPCAP, LKSETCAP, LKNMCAP }; enum { nCapacity = LKNMCAP + 1 }; Sd(const Ptr<EntityManager> &); void setDocCharsetDesc(const UnivCharsetDesc &); Boolean matchesReservedName(const StringC &, ReservedName) const; int digitWeight(Char) const; int hexDigitWeight(Char) const; Boolean link() const; Number simpleLink() const; Boolean implicitLink() const; Number explicitLink() const; Boolean startTagEmpty() const; Boolean startTagUnclosed() const; NetEnable startTagNetEnable() const; void setStartTagNetEnable(NetEnable); Boolean endTagEmpty() const; Boolean endTagUnclosed() const; Boolean attributeDefault() const; Boolean attributeValueNotLiteral() const; Boolean attributeOmitName() const; Boolean emptyElementNormal() const; Boolean implydefAttlist() const; Boolean implydefDoctype() const; Boolean implydefElement() const; Boolean implydefEntity() const; Boolean implydefNotation() const; Number concur() const; Boolean omittag() const; Boolean rank() const; Boolean datatag() const; Boolean formal() const; Boolean keeprsre() const; Number subdoc() const; StringC reservedName(int) const; Boolean lookupQuantityName(const StringC &, Syntax::Quantity &) const; Boolean lookupGeneralDelimiterName(const StringC &, Syntax::DelimGeneral &) const; Boolean lookupCapacityName(const StringC &, Sd::Capacity &) const; StringC quantityName(Syntax::Quantity) const; Boolean internalCharsetIsDocCharset() const; const CharsetInfo &internalCharset() const; const CharsetInfo &docCharset() const; Char execToInternal(char) const; StringC execToInternal(const char *) const; Number capacity(int) const; void setCapacity(int, Number); StringC capacityName(int) const; Boolean scopeInstance() const; void setScopeInstance(); void setDocCharsetDecl(CharsetDecl &); const CharsetDecl &docCharsetDecl() const; void setBooleanFeature(BooleanFeature, Boolean); void setShorttag(Boolean); void setNumberFeature(NumberFeature, Number); StringC generalDelimiterName(Syntax::DelimGeneral) const; UnivChar nameToUniv(const StringC &); Boolean www() const; void setWww(Boolean); EntityRef entityRef() const; void setEntityRef(EntityRef); Boolean typeValid() const; void setTypeValid(Boolean); Boolean integrallyStored() const; void setIntegrallyStored(Boolean);private: PackedBoolean booleanFeature_[nBooleanFeature]; Number numberFeature_[nNumberFeature]; Number capacity_[nCapacity]; PackedBoolean internalCharsetIsDocCharset_; // if null, use docCharset_ const CharsetInfo *internalCharsetPtr_; CharsetInfo docCharset_; CharsetDecl docCharsetDecl_; Boolean scopeInstance_; Boolean www_; NetEnable netEnable_; EntityRef entityRef_; Boolean typeValid_; Boolean integrallyStored_; HashTable<StringC,int> namedCharTable_; Ptr<EntityManager> entityManager_; static const char *const reservedName_[]; static const char *const generalDelimiterName_[]; static const char *const capacityName_[]; static const char *const quantityName_[];};inlineBoolean Sd::link() const{ return (numberFeature_[fSIMPLE] || booleanFeature_[fIMPLICIT] || numberFeature_[fEXPLICIT]);}inlineNumber Sd::explicitLink() const{ return numberFeature_[fEXPLICIT];}inlineBoolean Sd::implicitLink() const{ return booleanFeature_[fIMPLICIT];}inlineNumber Sd::simpleLink() const{ return numberFeature_[fSIMPLE];}inlineBoolean Sd::startTagEmpty() const{ return booleanFeature_[fSTARTTAGEMPTY];}inlineBoolean Sd::startTagUnclosed() const{ return booleanFeature_[fSTARTTAGUNCLOSED];}inlineSd::NetEnable Sd::startTagNetEnable() const{ return netEnable_;}inlinevoid Sd::setStartTagNetEnable(NetEnable e){ netEnable_ = e;}inlineBoolean Sd::endTagEmpty() const{ return booleanFeature_[fENDTAGEMPTY];}inlineBoolean Sd::endTagUnclosed() const{ return booleanFeature_[fENDTAGUNCLOSED];}inlineBoolean Sd::attributeDefault() const{ return booleanFeature_[fATTRIBDEFAULT];}inlineBoolean Sd::attributeValueNotLiteral() const{ return booleanFeature_[fATTRIBVALUE];}inlineBoolean Sd::attributeOmitName() const{ return booleanFeature_[fATTRIBOMITNAME];}inlineBoolean Sd::emptyElementNormal() const{ return booleanFeature_[fEMPTYNRM];}inlineBoolean Sd::implydefAttlist() const{ return booleanFeature_[fIMPLYDEFATTLIST];}inlineBoolean Sd::implydefDoctype() const{ return booleanFeature_[fIMPLYDEFDOCTYPE];}inlineBoolean Sd::implydefElement() const{ return booleanFeature_[fIMPLYDEFELEMENT];}inlineBoolean Sd::implydefEntity() const{ return booleanFeature_[fIMPLYDEFENTITY];}inlineBoolean Sd::implydefNotation() const{ return booleanFeature_[fIMPLYDEFNOTATION];}inlineNumber Sd::concur() const{ return numberFeature_[fCONCUR];}inlineNumber Sd::subdoc() const{ return numberFeature_[fSUBDOC];}inlineBoolean Sd::omittag() const{ return booleanFeature_[fOMITTAG];}inlineBoolean Sd::rank() const{ return booleanFeature_[fRANK];}inlineBoolean Sd::datatag() const{ return booleanFeature_[fDATATAG];}inlineBoolean Sd::formal() const{ return booleanFeature_[fFORMAL];}inlineBoolean Sd::keeprsre() const{ return booleanFeature_[fKEEPRSRE];}inlineconst CharsetInfo &Sd::internalCharset() const{ return internalCharsetPtr_ ? *internalCharsetPtr_ : docCharset_;}inlineChar Sd::execToInternal(char c) const{ return internalCharset().execToDesc(c);}inlineStringC Sd::execToInternal(const char *s) const{ return internalCharset().execToDesc(s);}inlineStringC Sd::reservedName(int i) const{ return execToInternal(reservedName_[i]);}inlineBoolean Sd::internalCharsetIsDocCharset() const{ return internalCharsetIsDocCharset_;}inlineconst CharsetInfo &Sd::docCharset() const{ return docCharset_;}inlineint Sd::digitWeight(Char c) const{ return internalCharset().digitWeight(c);}inlineint Sd::hexDigitWeight(Char c) const{ return internalCharset().hexDigitWeight(c);}inlineNumber Sd::capacity(int i) const{ return capacity_[i];}inlinevoid Sd::setCapacity(int i, Number n){ capacity_[i] = n;}inlineStringC Sd::capacityName(int i) const{ return execToInternal(capacityName_[i]);}inlineBoolean Sd::scopeInstance() const{ return scopeInstance_;}inlinevoid Sd::setScopeInstance(){ scopeInstance_ = 1;}inlinevoid Sd::setDocCharsetDecl(CharsetDecl &decl){ decl.swap(docCharsetDecl_);}inlineconst CharsetDecl &Sd::docCharsetDecl() const{ return docCharsetDecl_;}inlinevoid Sd::setBooleanFeature(BooleanFeature i, Boolean b){ booleanFeature_[i] = b;}inlinevoid Sd::setNumberFeature(NumberFeature i, Number n){ numberFeature_[i] = n;}inlineBoolean Sd::www() const{ return www_;}inlinevoid Sd::setWww(Boolean b){ www_ = b;}inlineSd::EntityRef Sd::entityRef() const{ return entityRef_;}inlinevoid Sd::setEntityRef(EntityRef r){ entityRef_ = r;}inlineBoolean Sd::typeValid() const{ return typeValid_;} inlinevoid Sd::setTypeValid(Boolean b){ typeValid_ = b;}inlineBoolean Sd::integrallyStored() const{ return integrallyStored_;}inlinevoid Sd::setIntegrallyStored(Boolean b){ integrallyStored_ = b;}#ifdef SP_NAMESPACE}#endif#endif /* Sd_INCLUDED */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -