亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? xmlparse.cpp

?? This software aims to create an applet and panel tools to manage a wireless interface card, such as
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
/* Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd
   See the file COPYING for copying permission.
*/

#include <stddef.h>
#include <string.h>                     /* memset(), memcpy() */
#include <assert.h>

#define XML_BUILDING_EXPAT 1

#ifdef COMPILED_FROM_DSP
#include "winconfig.h"
#elif defined(MACOS_CLASSIC)
#include "macconfig.h"
#elif defined(HAVE_EXPAT_CONFIG_H)
#include "expat_config.h"
#endif /* ndef COMPILED_FROM_DSP */

#include "XML/expat.h"

#ifdef XML_UNICODE
#define XML_ENCODE_MAX XML_UTF16_ENCODE_MAX
#define XmlConvert XmlUtf16Convert
#define XmlGetInternalEncoding XmlGetUtf16InternalEncoding
#define XmlGetInternalEncodingNS XmlGetUtf16InternalEncodingNS
#define XmlEncode XmlUtf16Encode
#define MUST_CONVERT(enc, s) (!(enc)->isUtf16 || (((unsigned long)s) & 1))
typedef unsigned short ICHAR;
#else
#define XML_ENCODE_MAX XML_UTF8_ENCODE_MAX
#define XmlConvert XmlUtf8Convert
#define XmlGetInternalEncoding XmlGetUtf8InternalEncoding
#define XmlGetInternalEncodingNS XmlGetUtf8InternalEncodingNS
#define XmlEncode XmlUtf8Encode
#define MUST_CONVERT(enc, s) (!(enc)->isUtf8)
typedef char ICHAR;
#endif


#ifndef XML_NS

#define XmlInitEncodingNS XmlInitEncoding
#define XmlInitUnknownEncodingNS XmlInitUnknownEncoding
#undef XmlGetInternalEncodingNS
#define XmlGetInternalEncodingNS XmlGetInternalEncoding
#define XmlParseXmlDeclNS XmlParseXmlDecl

#endif

#ifdef XML_UNICODE

#ifdef XML_UNICODE_WCHAR_T
#define XML_T(x) (const wchar_t)x
#define XML_L(x) L ## x
#else
#define XML_T(x) (const unsigned short)x
#define XML_L(x) x
#endif

#else

#define XML_T(x) x
#define XML_L(x) x

#endif

/* Round up n to be a multiple of sz, where sz is a power of 2. */
#define ROUND_UP(n, sz) (((n) + ((sz) - 1)) & ~((sz) - 1))

/* Handle the case where memmove() doesn't exist. */
#ifndef HAVE_MEMMOVE
#ifdef HAVE_BCOPY
#define memmove(d,s,l) bcopy((s),(d),(l))
#else
#error memmove does not exist on this platform, nor is a substitute available
#endif /* HAVE_BCOPY */
#endif /* HAVE_MEMMOVE */

#include "internal.h"
#include "xmltok.h"
#include "xmlrole.h"

typedef const XML_Char *KEY;

typedef struct {
  KEY name;
} NAMED;

typedef struct {
  NAMED **v;
  unsigned char power;
  size_t size;
  size_t used;
  const XML_Memory_Handling_Suite *mem;
} HASH_TABLE;

/* Basic character hash algorithm, taken from Python's string hash:
   h = h * 1000003 ^ character, the constant being a prime number.

*/
#ifdef XML_UNICODE
#define CHAR_HASH(h, c) \
  (((h) * 0xF4243) ^ (unsigned short)(c))
#else
#define CHAR_HASH(h, c) \
  (((h) * 0xF4243) ^ (unsigned char)(c))
#endif

/* For probing (after a collision) we need a step size relative prime
   to the hash table size, which is a power of 2. We use double-hashing,
   since we can calculate a second hash value cheaply by taking those bits
   of the first hash value that were discarded (masked out) when the table
   index was calculated: index = hash & mask, where mask = table->size - 1.
   We limit the maximum step size to table->size / 4 (mask >> 2) and make
   it odd, since odd numbers are always relative prime to a power of 2.
*/
#define SECOND_HASH(hash, mask, power) \
  ((((hash) & ~(mask)) >> ((power) - 1)) & ((mask) >> 2))
#define PROBE_STEP(hash, mask, power) \
  ((unsigned char)((SECOND_HASH(hash, mask, power)) | 1))

typedef struct {
  NAMED **p;
  NAMED **end;
} HASH_TABLE_ITER;

#define INIT_TAG_BUF_SIZE 32  /* must be a multiple of sizeof(XML_Char) */
#define INIT_DATA_BUF_SIZE 1024
#define INIT_ATTS_SIZE 16
#define INIT_ATTS_VERSION 0xFFFFFFFF
#define INIT_BLOCK_SIZE 1024
#define INIT_BUFFER_SIZE 1024

#define EXPAND_SPARE 24

typedef struct binding {
  struct prefix *prefix;
  struct binding *nextTagBinding;
  struct binding *prevPrefixBinding;
  const struct attribute_id *attId;
  XML_Char *uri;
  int uriLen;
  int uriAlloc;
} BINDING;

typedef struct prefix {
  const XML_Char *name;
  BINDING *binding;
} PREFIX;

typedef struct {
  const XML_Char *str;
  const XML_Char *localPart;
  const XML_Char *prefix;
  int strLen;
  int uriLen;
  int prefixLen;
} TAG_NAME;

/* TAG represents an open element.
   The name of the element is stored in both the document and API
   encodings.  The memory buffer 'buf' is a separately-allocated
   memory area which stores the name.  During the XML_Parse()/
   XMLParseBuffer() when the element is open, the memory for the 'raw'
   version of the name (in the document encoding) is shared with the
   document buffer.  If the element is open across calls to
   XML_Parse()/XML_ParseBuffer(), the buffer is re-allocated to
   contain the 'raw' name as well.

   A parser re-uses these structures, maintaining a list of allocated
   TAG objects in a free list.
*/
typedef struct tag {
  struct tag *parent;           /* parent of this element */
  const char *rawName;          /* tagName in the original encoding */
  int rawNameLength;
  TAG_NAME name;                /* tagName in the API encoding */
  char *buf;                    /* buffer for name components */
  char *bufEnd;                 /* end of the buffer */
  BINDING *bindings;
} TAG;

typedef struct {
  const XML_Char *name;
  const XML_Char *textPtr;
  int textLen;                  /* length in XML_Chars */
  int processed;                /* # of processed bytes - when suspended */
  const XML_Char *systemId;
  const XML_Char *base;
  const XML_Char *publicId;
  const XML_Char *notation;
  XML_Bool open;
  XML_Bool is_param;
  XML_Bool is_internal; /* true if declared in internal subset outside PE */
} ENTITY;

typedef struct {
  enum XML_Content_Type         type;
  enum XML_Content_Quant        quant;
  const XML_Char *              name;
  int                           firstchild;
  int                           lastchild;
  int                           childcnt;
  int                           nextsib;
} CONTENT_SCAFFOLD;

#define INIT_SCAFFOLD_ELEMENTS 32

typedef struct block {
  struct block *next;
  int size;
  XML_Char s[1];
} BLOCK;

typedef struct {
  BLOCK *blocks;
  BLOCK *freeBlocks;
  const XML_Char *end;
  XML_Char *ptr;
  XML_Char *start;
  const XML_Memory_Handling_Suite *mem;
} STRING_POOL;

/* The XML_Char before the name is used to determine whether
   an attribute has been specified. */
typedef struct attribute_id {
  XML_Char *name;
  PREFIX *prefix;
  XML_Bool maybeTokenized;
  XML_Bool xmlns;
} ATTRIBUTE_ID;

typedef struct {
  const ATTRIBUTE_ID *id;
  XML_Bool isCdata;
  const XML_Char *value;
} DEFAULT_ATTRIBUTE;

typedef struct {
  unsigned long version;
  unsigned long hash;
  const XML_Char *uriName;
} NS_ATT;

typedef struct {
  const XML_Char *name;
  PREFIX *prefix;
  const ATTRIBUTE_ID *idAtt;
  int nDefaultAtts;
  int allocDefaultAtts;
  DEFAULT_ATTRIBUTE *defaultAtts;
} ELEMENT_TYPE;

typedef struct {
  HASH_TABLE generalEntities;
  HASH_TABLE elementTypes;
  HASH_TABLE attributeIds;
  HASH_TABLE prefixes;
  STRING_POOL pool;
  STRING_POOL entityValuePool;
  /* false once a parameter entity reference has been skipped */
  XML_Bool keepProcessing;
  /* true once an internal or external PE reference has been encountered;
     this includes the reference to an external subset */
  XML_Bool hasParamEntityRefs;
  XML_Bool standalone;
#ifdef XML_DTD
  /* indicates if external PE has been read */
  XML_Bool paramEntityRead;
  HASH_TABLE paramEntities;
#endif /* XML_DTD */
  PREFIX defaultPrefix;
  /* === scaffolding for building content model === */
  XML_Bool in_eldecl;
  CONTENT_SCAFFOLD *scaffold;
  unsigned contentStringLen;
  unsigned scaffSize;
  unsigned scaffCount;
  int scaffLevel;
  int *scaffIndex;
} DTD;

typedef struct open_internal_entity {
  const char *internalEventPtr;
  const char *internalEventEndPtr;
  struct open_internal_entity *next;
  ENTITY *entity;
  int startTagLevel;
  XML_Bool betweenDecl; /* WFC: PE Between Declarations */
} OPEN_INTERNAL_ENTITY;

typedef enum XML_Error PTRCALL Processor(XML_Parser parser,
                                         const char *start,
                                         const char *end,
                                         const char **endPtr);

static Processor prologProcessor;
static Processor prologInitProcessor;
static Processor contentProcessor;
static Processor cdataSectionProcessor;
#ifdef XML_DTD
static Processor ignoreSectionProcessor;
static Processor externalParEntProcessor;
static Processor externalParEntInitProcessor;
static Processor entityValueProcessor;
static Processor entityValueInitProcessor;
#endif /* XML_DTD */
static Processor epilogProcessor;
static Processor errorProcessor;
static Processor externalEntityInitProcessor;
static Processor externalEntityInitProcessor2;
static Processor externalEntityInitProcessor3;
static Processor externalEntityContentProcessor;
static Processor internalEntityProcessor;

static enum XML_Error
handleUnknownEncoding(XML_Parser parser, const XML_Char *encodingName);
static enum XML_Error
processXmlDecl(XML_Parser parser, int isGeneralTextEntity,
               const char *s, const char *next);
static enum XML_Error
initializeEncoding(XML_Parser parser);
static enum XML_Error
doProlog(XML_Parser parser, const ENCODING *enc, const char *s, 
         const char *end, int tok, const char *next, const char **nextPtr, 
         XML_Bool haveMore);
static enum XML_Error
processInternalEntity(XML_Parser parser, ENTITY *entity, 
                      XML_Bool betweenDecl);
static enum XML_Error
doContent(XML_Parser parser, int startTagLevel, const ENCODING *enc,
          const char *start, const char *end, const char **endPtr, 
          XML_Bool haveMore);
static enum XML_Error
doCdataSection(XML_Parser parser, const ENCODING *, const char **startPtr,
               const char *end, const char **nextPtr, XML_Bool haveMore);
#ifdef XML_DTD
static enum XML_Error
doIgnoreSection(XML_Parser parser, const ENCODING *, const char **startPtr,
                const char *end, const char **nextPtr, XML_Bool haveMore);
#endif /* XML_DTD */

static enum XML_Error
storeAtts(XML_Parser parser, const ENCODING *, const char *s,
          TAG_NAME *tagNamePtr, BINDING **bindingsPtr);
static enum XML_Error
addBinding(XML_Parser parser, PREFIX *prefix, const ATTRIBUTE_ID *attId,
           const XML_Char *uri, BINDING **bindingsPtr);
static int
defineAttribute(ELEMENT_TYPE *type, ATTRIBUTE_ID *, XML_Bool isCdata, 
                XML_Bool isId, const XML_Char *dfltValue, XML_Parser parser);
static enum XML_Error
storeAttributeValue(XML_Parser parser, const ENCODING *, XML_Bool isCdata,
                    const char *, const char *, STRING_POOL *);
static enum XML_Error
appendAttributeValue(XML_Parser parser, const ENCODING *, XML_Bool isCdata,
                     const char *, const char *, STRING_POOL *);
static ATTRIBUTE_ID *
getAttributeId(XML_Parser parser, const ENCODING *enc, const char *start,
               const char *end);
static int
setElementTypePrefix(XML_Parser parser, ELEMENT_TYPE *);
static enum XML_Error
storeEntityValue(XML_Parser parser, const ENCODING *enc, const char *start,
                 const char *end);
static int
reportProcessingInstruction(XML_Parser parser, const ENCODING *enc,
                            const char *start, const char *end);
static int
reportComment(XML_Parser parser, const ENCODING *enc, const char *start,
              const char *end);
static void
reportDefault(XML_Parser parser, const ENCODING *enc, const char *start,
              const char *end);

static const XML_Char * getContext(XML_Parser parser);
static XML_Bool
setContext(XML_Parser parser, const XML_Char *context);

static void FASTCALL normalizePublicId(XML_Char *s);

static DTD * dtdCreate(const XML_Memory_Handling_Suite *ms);
/* do not call if parentParser != NULL */
static void dtdReset(DTD *p, const XML_Memory_Handling_Suite *ms);
static void
dtdDestroy(DTD *p, XML_Bool isDocEntity, const XML_Memory_Handling_Suite *ms);
static int
dtdCopy(DTD *newDtd, const DTD *oldDtd, const XML_Memory_Handling_Suite *ms);
static int
copyEntityTable(HASH_TABLE *, STRING_POOL *, const HASH_TABLE *);

static NAMED *
lookup(HASH_TABLE *table, KEY name, size_t createSize);
static void FASTCALL
hashTableInit(HASH_TABLE *, const XML_Memory_Handling_Suite *ms);
static void FASTCALL hashTableClear(HASH_TABLE *);
static void FASTCALL hashTableDestroy(HASH_TABLE *);
static void FASTCALL
hashTableIterInit(HASH_TABLE_ITER *, const HASH_TABLE *);
static NAMED * FASTCALL hashTableIterNext(HASH_TABLE_ITER *);

static void FASTCALL
poolInit(STRING_POOL *, const XML_Memory_Handling_Suite *ms);
static void FASTCALL poolClear(STRING_POOL *);
static void FASTCALL poolDestroy(STRING_POOL *);
static XML_Char *
poolAppend(STRING_POOL *pool, const ENCODING *enc,
           const char *ptr, const char *end);
static XML_Char *
poolStoreString(STRING_POOL *pool, const ENCODING *enc,
                const char *ptr, const char *end);
static XML_Bool FASTCALL poolGrow(STRING_POOL *pool);
static const XML_Char * FASTCALL
poolCopyString(STRING_POOL *pool, const XML_Char *s);
static const XML_Char *
poolCopyStringN(STRING_POOL *pool, const XML_Char *s, int n);
static const XML_Char * FASTCALL
poolAppendString(STRING_POOL *pool, const XML_Char *s);

static int FASTCALL nextScaffoldPart(XML_Parser parser);
static XML_Content * build_model(XML_Parser parser);
static ELEMENT_TYPE *
getElementType(XML_Parser parser, const ENCODING *enc,
               const char *ptr, const char *end);

static XML_Parser
parserCreate(const XML_Char *encodingName,
             const XML_Memory_Handling_Suite *memsuite,

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色菇凉天天综合网| 国产精品网站在线| 欧美日韩黄色一区二区| 福利91精品一区二区三区| 久久精品国产成人一区二区三区| 亚洲精品v日韩精品| 国产精品女人毛片| 精品成人一区二区| 精品国产三级电影在线观看| 欧美精品欧美精品系列| 欧美天堂一区二区三区| 91视频一区二区三区| 国产精品77777| 国产成人午夜99999| 精品无人区卡一卡二卡三乱码免费卡| 日本不卡一区二区三区| 免费人成在线不卡| 国产一区亚洲一区| 成人免费毛片片v| 在线观看一区二区视频| 91超碰这里只有精品国产| 日韩免费高清av| 国产日产欧美一区二区视频| 国产精品麻豆欧美日韩ww| 亚洲精品五月天| 一区二区三区欧美| 捆绑紧缚一区二区三区视频| 国产一区二区三区在线观看免费| 成人在线一区二区三区| 91精品福利在线| 欧美一区二区黄色| 国产欧美日产一区| 亚洲午夜一二三区视频| 麻豆专区一区二区三区四区五区| 国产资源精品在线观看| 91免费小视频| 日韩一区二区视频| 国产精品美女久久久久久久久| 亚洲最大的成人av| 精品一区二区三区欧美| 成人国产一区二区三区精品| 欧美日韩亚洲综合| 久久久亚洲午夜电影| 亚洲免费大片在线观看| 久久99久久精品| 色琪琪一区二区三区亚洲区| 日韩免费看网站| 亚洲精品精品亚洲| 国产麻豆精品95视频| 欧美伊人久久久久久午夜久久久久| 日韩精品一区二区三区中文不卡| 国产精品的网站| 天天操天天综合网| 成人动漫在线一区| 欧美一级夜夜爽| 亚洲欧洲综合另类| 国产精品2024| 欧美高清一级片在线| 一区在线播放视频| 久久国产三级精品| 欧美亚洲国产一区二区三区va| 国产亚洲欧美日韩在线一区| 午夜日韩在线电影| 91无套直看片红桃| 久久久亚洲综合| 日本视频一区二区三区| 91国模大尺度私拍在线视频| 久久久久99精品国产片| 日本欧美大码aⅴ在线播放| 色婷婷香蕉在线一区二区| 精品不卡在线视频| 日韩黄色片在线观看| 91麻豆swag| 国产精品久久久久久久久晋中 | 精品国产成人系列| 亚洲电影在线免费观看| aa级大片欧美| 欧美激情一区二区三区全黄| 免费观看日韩av| 欧美日韩在线播放三区四区| 中文字幕一区av| 粉嫩13p一区二区三区| 精品日韩在线观看| 美女爽到高潮91| 欧美日本高清视频在线观看| 亚洲九九爱视频| 91亚洲精品乱码久久久久久蜜桃| 日本一区二区三级电影在线观看 | 亚洲激情在线播放| 粉嫩aⅴ一区二区三区四区| 欧美tk—视频vk| 麻豆成人av在线| 欧美一区二区三区色| 午夜a成v人精品| 56国语精品自产拍在线观看| 亚洲午夜免费视频| 色欧美片视频在线观看| 亚洲老妇xxxxxx| 色综合久久88色综合天天免费| 国产精品毛片高清在线完整版| 成人在线视频一区二区| 国产日韩欧美麻豆| 国产成人精品一区二| 国产日韩影视精品| 成人av手机在线观看| 国产精品久久综合| 97aⅴ精品视频一二三区| 中文字幕在线观看不卡| heyzo一本久久综合| 亚洲欧美日韩综合aⅴ视频| 日本久久电影网| 性久久久久久久| 欧美一区二区精品久久911| 久久精品国产精品青草| 久久久久综合网| 99视频在线观看一区三区| 一区二区三区日韩欧美精品| 欧美少妇bbb| 蜜桃视频一区二区三区在线观看| 日韩欧美一级精品久久| 国产一区二区三区精品欧美日韩一区二区三区 | 欧美区一区二区三区| 日韩高清在线一区| 久久综合久久鬼色| zzijzzij亚洲日本少妇熟睡| 日韩一区在线播放| 欧美久久一二区| 国产乱淫av一区二区三区| 国产精品二三区| 欧美人与禽zozo性伦| 国产一区二区三区免费看| 国产精品久久毛片av大全日韩| 在线一区二区三区四区五区| 日韩成人伦理电影在线观看| 精品国产乱码久久久久久图片| 成人午夜激情在线| 亚洲一区国产视频| 精品国产成人在线影院 | 欧美不卡在线视频| 波多野结衣在线一区| 亚洲第一综合色| 久久久久久久性| 欧美性猛交xxxx黑人交| 久久av中文字幕片| 亚洲欧美一区二区三区极速播放| 欧美精品在线观看播放| 丁香五精品蜜臀久久久久99网站| 亚洲综合丝袜美腿| 精品少妇一区二区三区视频免付费 | 成人免费在线视频| 欧美电影一区二区三区| 高清在线不卡av| 午夜精品免费在线| 国产精品萝li| 日韩精品一区二区三区在线| a级高清视频欧美日韩| 欧美96一区二区免费视频| 国产精品传媒视频| 日韩一区二区三区四区| 99这里只有精品| 久久99精品久久久久婷婷| 亚洲少妇最新在线视频| 久久综合久久综合久久| 欧美日韩国产高清一区| av资源网一区| 国产一区亚洲一区| 日日欢夜夜爽一区| 亚洲三级电影全部在线观看高清| 精品成人免费观看| 欧美高清视频不卡网| 99久久777色| 国产麻豆一精品一av一免费 | 91视频免费观看| 风间由美一区二区三区在线观看 | 国产欧美日韩不卡| 精品美女在线播放| 欧美老肥妇做.爰bbww| 91视频观看免费| 国产v日产∨综合v精品视频| 日本视频中文字幕一区二区三区| 亚洲乱码国产乱码精品精可以看 | 国产人伦精品一区二区| 日韩欧美激情在线| 欧美日韩亚洲国产综合| 97国产精品videossex| 国产.欧美.日韩| 久久激情五月婷婷| 青青草97国产精品免费观看无弹窗版 | 91精品国产一区二区三区香蕉| 日本久久电影网| 91在线免费播放| 成人免费视频网站在线观看| 国产一区二区三区免费看| 久久精工是国产品牌吗| 蜜臀av一区二区在线免费观看| 亚洲伊人伊色伊影伊综合网| 亚洲欧美日韩国产手机在线| 国产精品每日更新| 国产精品电影一区二区| 亚洲欧美综合另类在线卡通|