Back to index

lightning-sunbird  0.9+nobinonly
Classes | Defines | Typedefs | Functions
xmltok.h File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  position
struct  ATTRIBUTE
struct  encoding
struct  INIT_ENCODING

Defines

#define XML_TOK_TRAILING_RSQB
#define XML_TOK_NONE   -4 /* The string to be scanned is empty */
#define XML_TOK_TRAILING_CR
#define XML_TOK_PARTIAL_CHAR   -2 /* only part of a multibyte sequence */
#define XML_TOK_PARTIAL   -1 /* only part of a token */
#define XML_TOK_INVALID   0
#define XML_TOK_START_TAG_WITH_ATTS   1
#define XML_TOK_START_TAG_NO_ATTS   2
#define XML_TOK_EMPTY_ELEMENT_WITH_ATTS   3 /* empty element tag <e/> */
#define XML_TOK_EMPTY_ELEMENT_NO_ATTS   4
#define XML_TOK_END_TAG   5
#define XML_TOK_DATA_CHARS   6
#define XML_TOK_DATA_NEWLINE   7
#define XML_TOK_CDATA_SECT_OPEN   8
#define XML_TOK_ENTITY_REF   9
#define XML_TOK_CHAR_REF   10 /* numeric character reference */
#define XML_TOK_PI   11 /* processing instruction */
#define XML_TOK_XML_DECL   12 /* XML decl or text decl */
#define XML_TOK_COMMENT   13
#define XML_TOK_BOM   14 /* Byte order mark */
#define XML_TOK_PROLOG_S   15
#define XML_TOK_DECL_OPEN   16 /* <!foo */
#define XML_TOK_DECL_CLOSE   17 /* > */
#define XML_TOK_NAME   18
#define XML_TOK_NMTOKEN   19
#define XML_TOK_POUND_NAME   20 /* #name */
#define XML_TOK_OR   21 /* | */
#define XML_TOK_PERCENT   22
#define XML_TOK_OPEN_PAREN   23
#define XML_TOK_CLOSE_PAREN   24
#define XML_TOK_OPEN_BRACKET   25
#define XML_TOK_CLOSE_BRACKET   26
#define XML_TOK_LITERAL   27
#define XML_TOK_PARAM_ENTITY_REF   28
#define XML_TOK_INSTANCE_START   29
#define XML_TOK_NAME_QUESTION   30 /* name? */
#define XML_TOK_NAME_ASTERISK   31 /* name* */
#define XML_TOK_NAME_PLUS   32 /* name+ */
#define XML_TOK_COND_SECT_OPEN   33 /* <![ */
#define XML_TOK_COND_SECT_CLOSE   34 /* ]]> */
#define XML_TOK_CLOSE_PAREN_QUESTION   35 /* )? */
#define XML_TOK_CLOSE_PAREN_ASTERISK   36 /* )* */
#define XML_TOK_CLOSE_PAREN_PLUS   37 /* )+ */
#define XML_TOK_COMMA   38
#define XML_TOK_ATTRIBUTE_VALUE_S   39
#define XML_TOK_CDATA_SECT_CLOSE   40
#define XML_TOK_PREFIXED_NAME   41
#define XML_N_STATES   3
#define XML_PROLOG_STATE   0
#define XML_CONTENT_STATE   1
#define XML_CDATA_SECTION_STATE   2
#define XML_N_LITERAL_TYPES   2
#define XML_ATTRIBUTE_VALUE_LITERAL   0
#define XML_ENTITY_VALUE_LITERAL   1
#define XML_UTF8_ENCODE_MAX   4
#define XML_UTF16_ENCODE_MAX   2
#define XmlTok(enc, state, ptr, end, nextTokPtr)   (((enc)->scanners[state])(enc, ptr, end, nextTokPtr))
#define XmlPrologTok(enc, ptr, end, nextTokPtr)   XmlTok(enc, XML_PROLOG_STATE, ptr, end, nextTokPtr)
#define XmlContentTok(enc, ptr, end, nextTokPtr)   XmlTok(enc, XML_CONTENT_STATE, ptr, end, nextTokPtr)
#define XmlCdataSectionTok(enc, ptr, end, nextTokPtr)   XmlTok(enc, XML_CDATA_SECTION_STATE, ptr, end, nextTokPtr)
#define XmlLiteralTok(enc, literalType, ptr, end, nextTokPtr)   (((enc)->literalScanners[literalType])(enc, ptr, end, nextTokPtr))
#define XmlAttributeValueTok(enc, ptr, end, nextTokPtr)   XmlLiteralTok(enc, XML_ATTRIBUTE_VALUE_LITERAL, ptr, end, nextTokPtr)
#define XmlEntityValueTok(enc, ptr, end, nextTokPtr)   XmlLiteralTok(enc, XML_ENTITY_VALUE_LITERAL, ptr, end, nextTokPtr)
#define XmlSameName(enc, ptr1, ptr2)   (((enc)->sameName)(enc, ptr1, ptr2))
#define XmlNameMatchesAscii(enc, ptr1, end1, ptr2)   (((enc)->nameMatchesAscii)(enc, ptr1, end1, ptr2))
#define XmlNameLength(enc, ptr)   (((enc)->nameLength)(enc, ptr))
#define XmlSkipS(enc, ptr)   (((enc)->skipS)(enc, ptr))
#define XmlGetAttributes(enc, ptr, attsMax, atts)   (((enc)->getAtts)(enc, ptr, attsMax, atts))
#define XmlCharRefNumber(enc, ptr)   (((enc)->charRefNumber)(enc, ptr))
#define XmlPredefinedEntityName(enc, ptr, end)   (((enc)->predefinedEntityName)(enc, ptr, end))
#define XmlUpdatePosition(enc, ptr, end, pos)   (((enc)->updatePosition)(enc, ptr, end, pos))
#define XmlIsPublicId(enc, ptr, end, badPtr)   (((enc)->isPublicId)(enc, ptr, end, badPtr))
#define XmlUtf8Convert(enc, fromP, fromLim, toP, toLim)   (((enc)->utf8Convert)(enc, fromP, fromLim, toP, toLim))
#define XmlUtf16Convert(enc, fromP, fromLim, toP, toLim)   (((enc)->utf16Convert)(enc, fromP, fromLim, toP, toLim))

Typedefs

typedef struct position POSITION
typedef struct encoding
typedef int(PTRCALLSCANNER )(const ENCODING *, const char *, const char *, const char **)
typedef int(* CONVERTER )(void *userData, const char *p)

Functions

int XmlParseXmlDecl (int isGeneralTextEntity, const ENCODING *enc, const char *ptr, const char *end, const char **badPtr, const char **versionPtr, const char **versionEndPtr, const char **encodingNamePtr, const ENCODING **namedEncodingPtr, int *standalonePtr)
int XmlInitEncoding (INIT_ENCODING *, const ENCODING **, const char *name)
const ENCODINGXmlGetUtf8InternalEncoding (void)
const ENCODINGXmlGetUtf16InternalEncoding (void)
int FASTCALL XmlUtf8Encode (int charNumber, char *buf)
int FASTCALL XmlUtf16Encode (int charNumber, unsigned short *buf)
int XmlSizeOfUnknownEncoding (void)
ENCODINGXmlInitUnknownEncoding (void *mem, int *table, CONVERTER convert, void *userData)
int XmlParseXmlDeclNS (int isGeneralTextEntity, const ENCODING *enc, const char *ptr, const char *end, const char **badPtr, const char **versionPtr, const char **versionEndPtr, const char **encodingNamePtr, const ENCODING **namedEncodingPtr, int *standalonePtr)
int XmlInitEncodingNS (INIT_ENCODING *, const ENCODING **, const char *name)
const ENCODINGXmlGetUtf8InternalEncodingNS (void)
const ENCODINGXmlGetUtf16InternalEncodingNS (void)
ENCODINGXmlInitUnknownEncodingNS (void *mem, int *table, CONVERTER convert, void *userData)

Class Documentation

struct position

Definition at line 110 of file xmltok.h.

Class Members
unsigned long columnNumber
unsigned long lineNumber
struct ATTRIBUTE

Definition at line 116 of file xmltok.h.

Class Members
const char * name
char normalized
const char * valueEnd
const char * valuePtr
struct INIT_ENCODING

Definition at line 259 of file xmltok.h.

Class Members
const ENCODING ** encPtr
ENCODING initEnc

Define Documentation

Definition at line 102 of file xmltok.h.

Definition at line 96 of file xmltok.h.

Definition at line 95 of file xmltok.h.

Definition at line 103 of file xmltok.h.

Definition at line 101 of file xmltok.h.

Definition at line 91 of file xmltok.h.

Definition at line 94 of file xmltok.h.

Definition at line 74 of file xmltok.h.

#define XML_TOK_BOM   14 /* Byte order mark */

Definition at line 43 of file xmltok.h.

Definition at line 77 of file xmltok.h.

Definition at line 33 of file xmltok.h.

#define XML_TOK_CHAR_REF   10 /* numeric character reference */

Definition at line 35 of file xmltok.h.

Definition at line 57 of file xmltok.h.

Definition at line 55 of file xmltok.h.

Definition at line 69 of file xmltok.h.

#define XML_TOK_CLOSE_PAREN_PLUS   37 /* )+ */

Definition at line 70 of file xmltok.h.

Definition at line 68 of file xmltok.h.

Definition at line 71 of file xmltok.h.

Definition at line 42 of file xmltok.h.

#define XML_TOK_COND_SECT_CLOSE   34 /* ]]> */

Definition at line 67 of file xmltok.h.

#define XML_TOK_COND_SECT_OPEN   33 /* <![ */

Definition at line 66 of file xmltok.h.

Definition at line 31 of file xmltok.h.

Definition at line 32 of file xmltok.h.

#define XML_TOK_DECL_CLOSE   17 /* > */

Definition at line 48 of file xmltok.h.

#define XML_TOK_DECL_OPEN   16 /* <!foo */

Definition at line 47 of file xmltok.h.

Definition at line 29 of file xmltok.h.

#define XML_TOK_EMPTY_ELEMENT_WITH_ATTS   3 /* empty element tag <e/> */

Definition at line 28 of file xmltok.h.

Definition at line 30 of file xmltok.h.

Definition at line 34 of file xmltok.h.

Definition at line 60 of file xmltok.h.

Definition at line 21 of file xmltok.h.

Definition at line 58 of file xmltok.h.

#define XML_TOK_NAME   18

Definition at line 49 of file xmltok.h.

Definition at line 64 of file xmltok.h.

#define XML_TOK_NAME_PLUS   32 /* name+ */

Definition at line 65 of file xmltok.h.

Definition at line 63 of file xmltok.h.

Definition at line 50 of file xmltok.h.

#define XML_TOK_NONE   -4 /* The string to be scanned is empty */

Definition at line 17 of file xmltok.h.

Definition at line 56 of file xmltok.h.

Definition at line 54 of file xmltok.h.

#define XML_TOK_OR   21 /* | */

Definition at line 52 of file xmltok.h.

Definition at line 59 of file xmltok.h.

#define XML_TOK_PARTIAL   -1 /* only part of a token */

Definition at line 20 of file xmltok.h.

#define XML_TOK_PARTIAL_CHAR   -2 /* only part of a multibyte sequence */

Definition at line 19 of file xmltok.h.

Definition at line 53 of file xmltok.h.

#define XML_TOK_PI   11 /* processing instruction */

Definition at line 40 of file xmltok.h.

#define XML_TOK_POUND_NAME   20 /* #name */

Definition at line 51 of file xmltok.h.

Definition at line 82 of file xmltok.h.

Definition at line 46 of file xmltok.h.

Definition at line 27 of file xmltok.h.

Definition at line 26 of file xmltok.h.

Value:
-3   /* A CR at the end of the scan;
                                    might be part of CRLF sequence */

Definition at line 18 of file xmltok.h.

Value:
-5 /* ] or ]] at the end of the scan; might be
                                    start of illegal ]]> sequence */

Definition at line 13 of file xmltok.h.

#define XML_TOK_XML_DECL   12 /* XML decl or text decl */

Definition at line 41 of file xmltok.h.

Definition at line 108 of file xmltok.h.

Definition at line 106 of file xmltok.h.

#define XmlAttributeValueTok (   enc,
  ptr,
  end,
  nextTokPtr 
)    XmlLiteralTok(enc, XML_ATTRIBUTE_VALUE_LITERAL, ptr, end, nextTokPtr)

Definition at line 221 of file xmltok.h.

#define XmlCdataSectionTok (   enc,
  ptr,
  end,
  nextTokPtr 
)    XmlTok(enc, XML_CDATA_SECTION_STATE, ptr, end, nextTokPtr)

Definition at line 205 of file xmltok.h.

#define XmlCharRefNumber (   enc,
  ptr 
)    (((enc)->charRefNumber)(enc, ptr))

Definition at line 241 of file xmltok.h.

#define XmlContentTok (   enc,
  ptr,
  end,
  nextTokPtr 
)    XmlTok(enc, XML_CONTENT_STATE, ptr, end, nextTokPtr)

Definition at line 202 of file xmltok.h.

#define XmlEntityValueTok (   enc,
  ptr,
  end,
  nextTokPtr 
)    XmlLiteralTok(enc, XML_ENTITY_VALUE_LITERAL, ptr, end, nextTokPtr)

Definition at line 224 of file xmltok.h.

#define XmlGetAttributes (   enc,
  ptr,
  attsMax,
  atts 
)    (((enc)->getAtts)(enc, ptr, attsMax, atts))

Definition at line 238 of file xmltok.h.

#define XmlIsPublicId (   enc,
  ptr,
  end,
  badPtr 
)    (((enc)->isPublicId)(enc, ptr, end, badPtr))

Definition at line 250 of file xmltok.h.

#define XmlLiteralTok (   enc,
  literalType,
  ptr,
  end,
  nextTokPtr 
)    (((enc)->literalScanners[literalType])(enc, ptr, end, nextTokPtr))

Definition at line 218 of file xmltok.h.

#define XmlNameLength (   enc,
  ptr 
)    (((enc)->nameLength)(enc, ptr))

Definition at line 232 of file xmltok.h.

#define XmlNameMatchesAscii (   enc,
  ptr1,
  end1,
  ptr2 
)    (((enc)->nameMatchesAscii)(enc, ptr1, end1, ptr2))

Definition at line 229 of file xmltok.h.

#define XmlPredefinedEntityName (   enc,
  ptr,
  end 
)    (((enc)->predefinedEntityName)(enc, ptr, end))

Definition at line 244 of file xmltok.h.

#define XmlPrologTok (   enc,
  ptr,
  end,
  nextTokPtr 
)    XmlTok(enc, XML_PROLOG_STATE, ptr, end, nextTokPtr)

Definition at line 199 of file xmltok.h.

#define XmlSameName (   enc,
  ptr1,
  ptr2 
)    (((enc)->sameName)(enc, ptr1, ptr2))

Definition at line 227 of file xmltok.h.

#define XmlSkipS (   enc,
  ptr 
)    (((enc)->skipS)(enc, ptr))

Definition at line 235 of file xmltok.h.

#define XmlTok (   enc,
  state,
  ptr,
  end,
  nextTokPtr 
)    (((enc)->scanners[state])(enc, ptr, end, nextTokPtr))

Definition at line 196 of file xmltok.h.

#define XmlUpdatePosition (   enc,
  ptr,
  end,
  pos 
)    (((enc)->updatePosition)(enc, ptr, end, pos))

Definition at line 247 of file xmltok.h.

#define XmlUtf16Convert (   enc,
  fromP,
  fromLim,
  toP,
  toLim 
)    (((enc)->utf16Convert)(enc, fromP, fromLim, toP, toLim))

Definition at line 256 of file xmltok.h.

#define XmlUtf8Convert (   enc,
  fromP,
  fromLim,
  toP,
  toLim 
)    (((enc)->utf8Convert)(enc, fromP, fromLim, toP, toLim))

Definition at line 253 of file xmltok.h.


Typedef Documentation

typedef int(* CONVERTER)(void *userData, const char *p)

Definition at line 282 of file xmltok.h.

typedef struct encoding

Definition at line 124 of file xmltok.h.

typedef struct position POSITION
typedef int(PTRCALL * SCANNER)(const ENCODING *, const char *, const char *, const char **)

Definition at line 126 of file xmltok.h.


Function Documentation

Definition at line 8 of file xmltok_ns.c.

{
#if BYTEORDER == 1234
  return &ns(internal_little2_encoding).enc;
#elif BYTEORDER == 4321
  return &ns(internal_big2_encoding).enc;
#else
  const short n = 1;
  return (*(const char *)&n
          ? &ns(internal_little2_encoding).enc
          : &ns(internal_big2_encoding).enc);
#endif
}

Here is the caller graph for this function:

Definition at line 2 of file xmltok_ns.c.

{
  return &ns(internal_utf8_encoding).enc;
}
int XmlInitEncoding ( INIT_ENCODING ,
const ENCODING **  ,
const char *  name 
)

Definition at line 49 of file xmltok_ns.c.

{
  int i = getEncodingIndex(name);
  if (i == UNKNOWN_ENC)
    return 0;
  SET_INIT_ENC_INDEX(p, i);
  p->initEnc.scanners[XML_PROLOG_STATE] = NS(initScanProlog);
  p->initEnc.scanners[XML_CONTENT_STATE] = NS(initScanContent);
  p->initEnc.updatePosition = initUpdatePosition;
  p->encPtr = encPtr;
  *encPtr = &(p->initEnc);
  return 1;
}

Here is the call graph for this function:

int XmlInitEncodingNS ( INIT_ENCODING ,
const ENCODING **  ,
const char *  name 
)
ENCODING* XmlInitUnknownEncoding ( void mem,
int table,
CONVERTER  convert,
void userData 
)

Definition at line 1346 of file xmltok.c.

{
  int i;
  struct unknown_encoding *e = (struct unknown_encoding *)mem;
  for (i = 0; i < (int)sizeof(struct normal_encoding); i++)
    ((char *)mem)[i] = ((char *)&latin1_encoding)[i];
  for (i = 0; i < 128; i++)
    if (latin1_encoding.type[i] != BT_OTHER
        && latin1_encoding.type[i] != BT_NONXML
        && table[i] != i)
      return 0;
  for (i = 0; i < 256; i++) {
    int c = table[i];
    if (c == -1) {
      e->normal.type[i] = BT_MALFORM;
      /* This shouldn't really get used. */
      e->utf16[i] = 0xFFFF;
      e->utf8[i][0] = 1;
      e->utf8[i][1] = 0;
    }
    else if (c < 0) {
      if (c < -4)
        return 0;
      e->normal.type[i] = (unsigned char)(BT_LEAD2 - (c + 2));
      e->utf8[i][0] = 0;
      e->utf16[i] = 0;
    }
    else if (c < 0x80) {
      if (latin1_encoding.type[c] != BT_OTHER
          && latin1_encoding.type[c] != BT_NONXML
          && c != i)
        return 0;
      e->normal.type[i] = latin1_encoding.type[c];
      e->utf8[i][0] = 1;
      e->utf8[i][1] = (char)c;
      e->utf16[i] = (unsigned short)(c == 0 ? 0xFFFF : c);
    }
    else if (checkCharRefNumber(c) < 0) {
      e->normal.type[i] = BT_NONXML;
      /* This shouldn't really get used. */
      e->utf16[i] = 0xFFFF;
      e->utf8[i][0] = 1;
      e->utf8[i][1] = 0;
    }
    else {
      if (c > 0xFFFF)
        return 0;
      if (UCS2_GET_NAMING(nmstrtPages, c >> 8, c & 0xff))
        e->normal.type[i] = BT_NMSTRT;
      else if (UCS2_GET_NAMING(namePages, c >> 8, c & 0xff))
        e->normal.type[i] = BT_NAME;
      else
        e->normal.type[i] = BT_OTHER;
      e->utf8[i][0] = (char)XmlUtf8Encode(c, e->utf8[i] + 1);
      e->utf16[i] = (unsigned short)c;
    }
  }
  e->userData = userData;
  e->convert = convert;
  if (convert) {
    e->normal.isName2 = unknown_isName;
    e->normal.isName3 = unknown_isName;
    e->normal.isName4 = unknown_isName;
    e->normal.isNmstrt2 = unknown_isNmstrt;
    e->normal.isNmstrt3 = unknown_isNmstrt;
    e->normal.isNmstrt4 = unknown_isNmstrt;
    e->normal.isInvalid2 = unknown_isInvalid;
    e->normal.isInvalid3 = unknown_isInvalid;
    e->normal.isInvalid4 = unknown_isInvalid;
  }
  e->normal.enc.utf8Convert = unknown_toUtf8;
  e->normal.enc.utf16Convert = unknown_toUtf16;
  return &(e->normal.enc);
}

Here is the call graph for this function:

ENCODING* XmlInitUnknownEncodingNS ( void mem,
int table,
CONVERTER  convert,
void userData 
)
int XmlParseXmlDecl ( int  isGeneralTextEntity,
const ENCODING enc,
const char *  ptr,
const char *  end,
const char **  badPtr,
const char **  versionPtr,
const char **  versionEndPtr,
const char **  encodingNamePtr,
const ENCODING **  namedEncodingPtr,
int standalonePtr 
)

Definition at line 84 of file xmltok_ns.c.

{
  return doParseXmlDecl(NS(findEncoding),
                        isGeneralTextEntity,
                        enc,
                        ptr,
                        end,
                        badPtr,
                        versionPtr,
                        versionEndPtr,
                        encodingName,
                        encoding,
                        standalone);
}

Here is the call graph for this function:

int XmlParseXmlDeclNS ( int  isGeneralTextEntity,
const ENCODING enc,
const char *  ptr,
const char *  end,
const char **  badPtr,
const char **  versionPtr,
const char **  versionEndPtr,
const char **  encodingNamePtr,
const ENCODING **  namedEncodingPtr,
int standalonePtr 
)

Definition at line 1258 of file xmltok.c.

{
  return sizeof(struct unknown_encoding);
}
int FASTCALL XmlUtf16Encode ( int  charNumber,
unsigned short *  buf 
)

Definition at line 1230 of file xmltok.c.

{
  if (charNum < 0)
    return 0;
  if (charNum < 0x10000) {
    buf[0] = (unsigned short)charNum;
    return 1;
  }
  if (charNum < 0x110000) {
    charNum -= 0x10000;
    buf[0] = (unsigned short)((charNum >> 10) + 0xD800);
    buf[1] = (unsigned short)((charNum & 0x3FF) + 0xDC00);
    return 2;
  }
  return 0;
}
int FASTCALL XmlUtf8Encode ( int  charNumber,
char *  buf 
)

Definition at line 1193 of file xmltok.c.

{
  enum {
    /* minN is minimum legal resulting value for N byte sequence */
    min2 = 0x80,
    min3 = 0x800,
    min4 = 0x10000
  };

  if (c < 0)
    return 0;
  if (c < min2) {
    buf[0] = (char)(c | UTF8_cval1);
    return 1;
  }
  if (c < min3) {
    buf[0] = (char)((c >> 6) | UTF8_cval2);
    buf[1] = (char)((c & 0x3f) | 0x80);
    return 2;
  }
  if (c < min4) {
    buf[0] = (char)((c >> 12) | UTF8_cval3);
    buf[1] = (char)(((c >> 6) & 0x3f) | 0x80);
    buf[2] = (char)((c & 0x3f) | 0x80);
    return 3;
  }
  if (c < 0x110000) {
    buf[0] = (char)((c >> 18) | UTF8_cval4);
    buf[1] = (char)(((c >> 12) & 0x3f) | 0x80);
    buf[2] = (char)(((c >> 6) & 0x3f) | 0x80);
    buf[3] = (char)((c & 0x3f) | 0x80);
    return 4;
  }
  return 0;
}