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

📄 sd.cxx

📁 SP是一个基于GNU C++编译器
💻 CXX
字号:
// Copyright (c) 1994 James Clark// See the file COPYING for copying permission.#ifdef __GNUG__#pragma implementation#endif#include "splib.h"#include "Sd.h"#include "macros.h"#ifdef SP_NAMESPACEnamespace SP_NAMESPACE {#endifSd::Sd(const Ptr<EntityManager> &entityManager): entityManager_(entityManager),  internalCharsetIsDocCharset_(entityManager->internalCharsetIsDocCharset()),  docCharset_(entityManager->charset()),  scopeInstance_(0),  www_(0),  netEnable_(netEnableNo),  entityRef_(entityRefAny),  typeValid_(1),  integrallyStored_(0){  int i;  for (i = 0; i < nBooleanFeature; i++)    booleanFeature_[i] = 0;  for (i = 0; i < nNumberFeature; i++)    numberFeature_[i] = 0;  for (i = 0; i < nCapacity; i++)    capacity_[i] = 35000;  if (internalCharsetIsDocCharset_)    internalCharsetPtr_ = 0;  else    internalCharsetPtr_ = &entityManager->charset();}void Sd::setDocCharsetDesc(const UnivCharsetDesc &desc){  docCharset_.set(desc);}const char *const Sd::reservedName_[] = {  "ALL",  "ANY",  "APPINFO",  "ATTLIST",  "ATTRIB",  "BASESET",  "CAPACITY",  "CHARSET",  "CONCUR",  "CONTROLS",  "DATATAG",  "DEFAULT",  "DELIM",  "DESCSET",  "DOCTYPE",  "DOCUMENT",  "ELEMENT",  "EMPTY",  "EMPTYNRM",  "ENDTAG",  "ENTITIES",  "ENTITY",  "EXPLICIT",  "FEATURES",  "FORMAL",  "FUNCHAR",  "FUNCTION",  "GENERAL",  "IMMEDNET",  "IMPLICIT",  "IMPLYDEF",  "INSTANCE",  "INTEGRAL",  "INTERNAL",  "KEEPRSRE",  "LCNMCHAR",  "LCNMSTRT",  "LINK",  "MINIMIZE",  "MSICHAR",  "MSOCHAR",  "MSSCHAR",  "NAMECASE",  "NAMECHAR",  "NAMES",  "NAMESTRT",  "NAMING",  "NETENABL",  "NO",  "NOASSERT",  "NONE",  "NOTATION",  "OMITNAME",  "OMITTAG",  "OTHER",  "PUBLIC",  "QUANTITY",  "RANK",  "RE",  "REF",  "RS",  "SCOPE",  "SEEALSO",  "SEPCHAR",  "SGML",  "SGMLREF",  "SHORTREF",  "SHORTTAG",  "SHUNCHAR",  "SIMPLE",  "SPACE",  "STARTTAG",  "SUBDOC",  "SWITCHES",  "SYNTAX",  "SYSTEM",  "TYPE",  "UCNMCHAR",  "UCNMSTRT",  "UNCLOSED",  "UNUSED",  "URN",  "VALIDITY",  "VALUE",  "YES"};const char *const Sd::capacityName_[] = {  "TOTALCAP",  "ENTCAP",  "ENTCHCAP",  "ELEMCAP",  "GRPCAP",  "EXGRPCAP",  "EXNMCAP",  "ATTCAP",  "ATTCHCAP",  "AVGRPCAP",  "NOTCAP",  "NOTCHCAP",  "IDCAP",  "IDREFCAP",  "MAPCAP",  "LKSETCAP",  "LKNMCAP"};const char *const Sd::quantityName_[] = {  "ATTCNT",  "ATTSPLEN",  "BSEQLEN",  "DTAGLEN",  "DTEMPLEN",  "ENTLVL",  "GRPCNT",  "GRPGTCNT",  "GRPLVL",  "LITLEN",  "NAMELEN",  "NORMSEP",  "PILEN",  "TAGLEN",  "TAGLVL"};const char *const Sd::generalDelimiterName_[] = {  "AND",  "COM",  "CRO",  "DSC",  "DSO",  "DTGC",  "DTGO",  "ERO",  "ETAGO",  "GRPC",  "GRPO",  "HCRO",  "LIT",  "LITA",  "MDC",  "MDO",  "MINUS",  "MSC",  "NET",  "NESTC",  "OPT",  "OR",  "PERO",  "PIC",  "PIO",  "PLUS",  "REFC",  "REP",  "RNI",  "SEQ",  "STAGO",  "TAGC",  "VI"};Boolean Sd::lookupQuantityName(const StringC &name, Syntax::Quantity &quantity)     const{  for (size_t i = 0; i < SIZEOF(quantityName_); i++)    if (execToInternal(quantityName_[i]) == name) {      quantity = Syntax::Quantity(i);      return 1;    }  return 0;}Boolean Sd::lookupCapacityName(const StringC &name, Sd::Capacity &capacity)     const{  for (size_t i = 0; i < SIZEOF(capacityName_); i++)    if (execToInternal(capacityName_[i]) == name) {      capacity = Sd::Capacity(i);      return 1;    }  return 0;}Boolean Sd::lookupGeneralDelimiterName(const StringC &name,				       Syntax::DelimGeneral &delimGeneral)     const{  for (size_t i = 0; i < SIZEOF(generalDelimiterName_); i++)    if (execToInternal(generalDelimiterName_[i]) == name) {      delimGeneral = Syntax::DelimGeneral(i);      return 1;    }  return 0;}StringC Sd::quantityName(Syntax::Quantity q) const{  return execToInternal(quantityName_[q]);}StringC Sd::generalDelimiterName(Syntax::DelimGeneral d) const{  return execToInternal(generalDelimiterName_[d]);}UnivChar Sd::nameToUniv(const StringC &name){  const int *p = namedCharTable_.lookup(name);  int n;  if (p)    n = *p;  else {    n = int(namedCharTable_.count());    namedCharTable_.insert(name, n);  }  return n + 0x60000000;	// 10646 private use group}void Sd::setShorttag(Boolean b){  for (int i = fSHORTTAG_FIRST; i <= fSHORTTAG_LAST; i++)    booleanFeature_[i] = b;  netEnable_ = netEnableAll;}#ifdef SP_NAMESPACE}#endif

⌨️ 快捷键说明

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