ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

xmltok_ns.c
Go to the documentation of this file.
00001 const ENCODING *
00002 NS(XmlGetUtf8InternalEncoding)(void)
00003 {
00004   return &ns(internal_utf8_encoding).enc;
00005 }
00006 
00007 const ENCODING *
00008 NS(XmlGetUtf16InternalEncoding)(void)
00009 {
00010 #if BYTEORDER == 1234
00011   return &ns(internal_little2_encoding).enc;
00012 #elif BYTEORDER == 4321
00013   return &ns(internal_big2_encoding).enc;
00014 #else
00015   const short n = 1;
00016   return (*(const char *)&n
00017           ? &ns(internal_little2_encoding).enc
00018           : &ns(internal_big2_encoding).enc);
00019 #endif
00020 }
00021 
00022 static const ENCODING * const NS(encodings)[] = {
00023   &ns(latin1_encoding).enc,
00024   &ns(ascii_encoding).enc,
00025   &ns(utf8_encoding).enc,
00026   &ns(big2_encoding).enc,
00027   &ns(big2_encoding).enc,
00028   &ns(little2_encoding).enc,
00029   &ns(utf8_encoding).enc /* NO_ENC */
00030 };
00031 
00032 static int PTRCALL
00033 NS(initScanProlog)(const ENCODING *enc, const char *ptr, const char *end,
00034                    const char **nextTokPtr)
00035 {
00036   return initScan(NS(encodings), (const INIT_ENCODING *)enc,
00037                   XML_PROLOG_STATE, ptr, end, nextTokPtr);
00038 }
00039 
00040 static int PTRCALL
00041 NS(initScanContent)(const ENCODING *enc, const char *ptr, const char *end,
00042                     const char **nextTokPtr)
00043 {
00044   return initScan(NS(encodings), (const INIT_ENCODING *)enc,
00045                   XML_CONTENT_STATE, ptr, end, nextTokPtr);
00046 }
00047 
00048 int
00049 NS(XmlInitEncoding)(INIT_ENCODING *p, const ENCODING **encPtr,
00050                     const char *name)
00051 {
00052   int i = getEncodingIndex(name);
00053   if (i == UNKNOWN_ENC)
00054     return 0;
00055   SET_INIT_ENC_INDEX(p, i);
00056   p->initEnc.scanners[XML_PROLOG_STATE] = NS(initScanProlog);
00057   p->initEnc.scanners[XML_CONTENT_STATE] = NS(initScanContent);
00058   p->initEnc.updatePosition = initUpdatePosition;
00059   p->encPtr = encPtr;
00060   *encPtr = &(p->initEnc);
00061   return 1;
00062 }
00063 
00064 static const ENCODING *
00065 NS(findEncoding)(const ENCODING *enc, const char *ptr, const char *end)
00066 {
00067 #define ENCODING_MAX 128
00068   char buf[ENCODING_MAX];
00069   char *p = buf;
00070   int i;
00071   XmlUtf8Convert(enc, &ptr, end, &p, p + ENCODING_MAX - 1);
00072   if (ptr != end)
00073     return 0;
00074   *p = 0;
00075   if (streqci(buf, KW_UTF_16) && enc->minBytesPerChar == 2)
00076     return enc;
00077   i = getEncodingIndex(buf);
00078   if (i == UNKNOWN_ENC)
00079     return 0;
00080   return NS(encodings)[i];
00081 }
00082 
00083 int
00084 NS(XmlParseXmlDecl)(int isGeneralTextEntity,
00085                     const ENCODING *enc,
00086                     const char *ptr,
00087                     const char *end,
00088                     const char **badPtr,
00089                     const char **versionPtr,
00090                     const char **versionEndPtr,
00091                     const char **encodingName,
00092                     const ENCODING **encoding,
00093                     int *standalone)
00094 {
00095   return doParseXmlDecl(NS(findEncoding),
00096                         isGeneralTextEntity,
00097                         enc,
00098                         ptr,
00099                         end,
00100                         badPtr,
00101                         versionPtr,
00102                         versionEndPtr,
00103                         encodingName,
00104                         encoding,
00105                         standalone);
00106 }

Generated on Sun May 27 2012 04:33:30 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.