1d07d5a72938fd52415368c2320fc29575ae9a0c3Elliott Hughes/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd 2d07d5a72938fd52415368c2320fc29575ae9a0c3Elliott Hughes See the file COPYING for copying permission. 3d07d5a72938fd52415368c2320fc29575ae9a0c3Elliott Hughes*/ 4d07d5a72938fd52415368c2320fc29575ae9a0c3Elliott Hughes 5d07d5a72938fd52415368c2320fc29575ae9a0c3Elliott Hughes/* This file is included! */ 6d07d5a72938fd52415368c2320fc29575ae9a0c3Elliott Hughes#ifdef XML_TOK_NS_C 7d07d5a72938fd52415368c2320fc29575ae9a0c3Elliott Hughes 8b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projectconst ENCODING * 9b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectNS(XmlGetUtf8InternalEncoding)(void) 10b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project{ 11b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project return &ns(internal_utf8_encoding).enc; 12b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project} 13b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 14b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projectconst ENCODING * 15b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectNS(XmlGetUtf16InternalEncoding)(void) 16b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project{ 17b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#if BYTEORDER == 1234 18b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project return &ns(internal_little2_encoding).enc; 19b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#elif BYTEORDER == 4321 20b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project return &ns(internal_big2_encoding).enc; 21b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#else 22b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project const short n = 1; 23b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project return (*(const char *)&n 24b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project ? &ns(internal_little2_encoding).enc 25b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project : &ns(internal_big2_encoding).enc); 26b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#endif 27b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project} 28b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 29b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projectstatic const ENCODING * const NS(encodings)[] = { 30b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project &ns(latin1_encoding).enc, 31b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project &ns(ascii_encoding).enc, 32b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project &ns(utf8_encoding).enc, 33b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project &ns(big2_encoding).enc, 34b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project &ns(big2_encoding).enc, 35b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project &ns(little2_encoding).enc, 36b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project &ns(utf8_encoding).enc /* NO_ENC */ 37b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project}; 38b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 39b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projectstatic int PTRCALL 40b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectNS(initScanProlog)(const ENCODING *enc, const char *ptr, const char *end, 41b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project const char **nextTokPtr) 42b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project{ 43b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project return initScan(NS(encodings), (const INIT_ENCODING *)enc, 44b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_PROLOG_STATE, ptr, end, nextTokPtr); 45b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project} 46b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 47b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projectstatic int PTRCALL 48b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectNS(initScanContent)(const ENCODING *enc, const char *ptr, const char *end, 49b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project const char **nextTokPtr) 50b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project{ 51b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project return initScan(NS(encodings), (const INIT_ENCODING *)enc, 52b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XML_CONTENT_STATE, ptr, end, nextTokPtr); 53b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project} 54b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 55b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projectint 56b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectNS(XmlInitEncoding)(INIT_ENCODING *p, const ENCODING **encPtr, 57b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project const char *name) 58b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project{ 59b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project int i = getEncodingIndex(name); 60b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project if (i == UNKNOWN_ENC) 61b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project return 0; 62b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project SET_INIT_ENC_INDEX(p, i); 63b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project p->initEnc.scanners[XML_PROLOG_STATE] = NS(initScanProlog); 64b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project p->initEnc.scanners[XML_CONTENT_STATE] = NS(initScanContent); 65b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project p->initEnc.updatePosition = initUpdatePosition; 66b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project p->encPtr = encPtr; 67b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project *encPtr = &(p->initEnc); 68b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project return 1; 69b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project} 70b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 71b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projectstatic const ENCODING * 72b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectNS(findEncoding)(const ENCODING *enc, const char *ptr, const char *end) 73b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project{ 74b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define ENCODING_MAX 128 75b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project char buf[ENCODING_MAX]; 76b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project char *p = buf; 77b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project int i; 78b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project XmlUtf8Convert(enc, &ptr, end, &p, p + ENCODING_MAX - 1); 79b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project if (ptr != end) 80b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project return 0; 81b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project *p = 0; 82b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project if (streqci(buf, KW_UTF_16) && enc->minBytesPerChar == 2) 83b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project return enc; 84b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project i = getEncodingIndex(buf); 85b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project if (i == UNKNOWN_ENC) 86b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project return 0; 87b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project return NS(encodings)[i]; 88b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project} 89b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 90b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projectint 91b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectNS(XmlParseXmlDecl)(int isGeneralTextEntity, 92b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project const ENCODING *enc, 93b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project const char *ptr, 94b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project const char *end, 95b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project const char **badPtr, 96b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project const char **versionPtr, 97b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project const char **versionEndPtr, 98b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project const char **encodingName, 99b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project const ENCODING **encoding, 100b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project int *standalone) 101b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project{ 102b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project return doParseXmlDecl(NS(findEncoding), 103b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project isGeneralTextEntity, 104b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project enc, 105b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project ptr, 106b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project end, 107b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project badPtr, 108b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project versionPtr, 109b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project versionEndPtr, 110b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project encodingName, 111b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project encoding, 112b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project standalone); 113b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project} 114d07d5a72938fd52415368c2320fc29575ae9a0c3Elliott Hughes 115d07d5a72938fd52415368c2320fc29575ae9a0c3Elliott Hughes#endif /* XML_TOK_NS_C */ 116