mirror of https://github.com/tongzx/nt5src
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
204 lines
4.6 KiB
204 lines
4.6 KiB
/////////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// fusion\xmlparser\xmlhelper.hxx
|
|
//
|
|
/////////////////////////////////////////////////////////////////////////////////
|
|
#ifndef _FUSION_XMLPARSER__XMLHELPER_H_INCLUDE_
|
|
#define _FUSION_XMLPARSER__XMLHELPER_H_INCLUDE_
|
|
#pragma once
|
|
|
|
#include <stdio.h>
|
|
#include <wchar.h>
|
|
#include <string.h>
|
|
#include <windows.h>
|
|
|
|
#include "core.hxx"
|
|
|
|
#define checknull(a) if (!(a)) { hr = E_OUTOFMEMORY; goto error; }
|
|
#define breakhr(a) hr = (a); if (hr != S_OK) break;
|
|
#define checkhr2(a) hr = a; if (hr != S_OK) return hr;
|
|
|
|
// resolve built-in entities.
|
|
WCHAR BuiltinEntity(const WCHAR* text, ULONG len);
|
|
|
|
HRESULT HexToUnicode(const WCHAR* text, ULONG len, WCHAR& ch);
|
|
HRESULT DecimalToUnicode(const WCHAR* text, ULONG len, WCHAR& ch);
|
|
|
|
// --------------------------------------------------------------------
|
|
// A little helper class for setting a boolean flag and clearing it
|
|
// on destruction.
|
|
class BoolLock
|
|
{
|
|
bool* _pFlag;
|
|
public:
|
|
BoolLock(bool* pFlag)
|
|
{
|
|
_pFlag = pFlag;
|
|
*pFlag = true;
|
|
}
|
|
~BoolLock()
|
|
{
|
|
*_pFlag = false;
|
|
}
|
|
};
|
|
|
|
//helper Functions
|
|
int DecimalToBuffer(long, char*, int, long);
|
|
int StrToBuffer(const WCHAR*, WCHAR*, int);
|
|
bool StringEquals(const WCHAR*, const WCHAR*, long, bool);
|
|
|
|
//////////////////////////////////////////////////////////
|
|
enum
|
|
{
|
|
FWHITESPACE = 1,
|
|
FDIGIT = 2,
|
|
FLETTER = 4,
|
|
FMISCNAME = 8,
|
|
FSTARTNAME = 16,
|
|
FCHARDATA = 32
|
|
};
|
|
|
|
static const short TABLE_SIZE = 128;
|
|
|
|
static int g_anCharType[TABLE_SIZE] = {
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0 | FWHITESPACE | FCHARDATA,
|
|
0 | FWHITESPACE | FCHARDATA,
|
|
0,
|
|
0,
|
|
0 | FWHITESPACE | FCHARDATA,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0,
|
|
0 | FWHITESPACE | FCHARDATA,
|
|
0 | FCHARDATA,
|
|
0 | FCHARDATA,
|
|
0 | FCHARDATA,
|
|
0 | FCHARDATA,
|
|
0 | FCHARDATA,
|
|
0 | FCHARDATA,
|
|
0 | FCHARDATA,
|
|
0 | FCHARDATA,
|
|
0 | FCHARDATA,
|
|
0 | FCHARDATA,
|
|
0 | FCHARDATA,
|
|
0 | FCHARDATA,
|
|
0 | FMISCNAME | FCHARDATA,
|
|
0 | FMISCNAME | FCHARDATA,
|
|
0 | FCHARDATA,
|
|
0 | FDIGIT | FCHARDATA,
|
|
0 | FDIGIT | FCHARDATA,
|
|
0 | FDIGIT | FCHARDATA,
|
|
0 | FDIGIT | FCHARDATA,
|
|
0 | FDIGIT | FCHARDATA,
|
|
0 | FDIGIT | FCHARDATA,
|
|
0 | FDIGIT | FCHARDATA,
|
|
0 | FDIGIT | FCHARDATA,
|
|
0 | FDIGIT | FCHARDATA,
|
|
0 | FDIGIT | FCHARDATA,
|
|
0 | FSTARTNAME | FCHARDATA,
|
|
0 | FCHARDATA,
|
|
0 | FCHARDATA,
|
|
0 | FCHARDATA,
|
|
0 | FCHARDATA,
|
|
0 | FCHARDATA,
|
|
0 | FCHARDATA,
|
|
0 | FLETTER | FCHARDATA,
|
|
0 | FLETTER | FCHARDATA,
|
|
0 | FLETTER | FCHARDATA,
|
|
0 | FLETTER | FCHARDATA,
|
|
0 | FLETTER | FCHARDATA,
|
|
0 | FLETTER | FCHARDATA,
|
|
0 | FLETTER | FCHARDATA,
|
|
0 | FLETTER | FCHARDATA,
|
|
0 | FLETTER | FCHARDATA,
|
|
0 | FLETTER | FCHARDATA,
|
|
0 | FLETTER | FCHARDATA,
|
|
0 | FLETTER | FCHARDATA,
|
|
0 | FLETTER | FCHARDATA,
|
|
0 | FLETTER | FCHARDATA,
|
|
0 | FLETTER | FCHARDATA,
|
|
0 | FLETTER | FCHARDATA,
|
|
0 | FLETTER | FCHARDATA,
|
|
0 | FLETTER | FCHARDATA,
|
|
0 | FLETTER | FCHARDATA,
|
|
0 | FLETTER | FCHARDATA,
|
|
0 | FLETTER | FCHARDATA,
|
|
0 | FLETTER | FCHARDATA,
|
|
0 | FLETTER | FCHARDATA,
|
|
0 | FLETTER | FCHARDATA,
|
|
0 | FLETTER | FCHARDATA,
|
|
0 | FLETTER | FCHARDATA,
|
|
0 | FCHARDATA,
|
|
0 | FCHARDATA,
|
|
0 | FCHARDATA,
|
|
0 | FCHARDATA,
|
|
0 | FMISCNAME | FSTARTNAME | FCHARDATA,
|
|
0 | FCHARDATA,
|
|
0 | FLETTER | FCHARDATA,
|
|
0 | FLETTER | FCHARDATA,
|
|
0 | FLETTER | FCHARDATA,
|
|
0 | FLETTER | FCHARDATA,
|
|
0 | FLETTER | FCHARDATA,
|
|
0 | FLETTER | FCHARDATA,
|
|
0 | FLETTER | FCHARDATA,
|
|
0 | FLETTER | FCHARDATA,
|
|
0 | FLETTER | FCHARDATA,
|
|
0 | FLETTER | FCHARDATA,
|
|
0 | FLETTER | FCHARDATA,
|
|
0 | FLETTER | FCHARDATA,
|
|
0 | FLETTER | FCHARDATA,
|
|
0 | FLETTER | FCHARDATA,
|
|
0 | FLETTER | FCHARDATA,
|
|
0 | FLETTER | FCHARDATA,
|
|
0 | FLETTER | FCHARDATA,
|
|
0 | FLETTER | FCHARDATA,
|
|
0 | FLETTER | FCHARDATA,
|
|
0 | FLETTER | FCHARDATA,
|
|
0 | FLETTER | FCHARDATA,
|
|
0 | FLETTER | FCHARDATA,
|
|
0 | FLETTER | FCHARDATA,
|
|
0 | FLETTER | FCHARDATA,
|
|
0 | FLETTER | FCHARDATA,
|
|
0 | FLETTER | FCHARDATA,
|
|
0 | FCHARDATA,
|
|
0 | FCHARDATA,
|
|
0 | FCHARDATA,
|
|
0 | FCHARDATA,
|
|
0 | FCHARDATA,
|
|
};
|
|
|
|
bool isDigit(WCHAR ch);
|
|
bool isHexDigit(WCHAR ch);
|
|
bool isLetter(WCHAR ch);
|
|
int isStartNameChar(WCHAR ch);
|
|
bool isCombiningChar(WCHAR ch);
|
|
bool isExtender(WCHAR ch);
|
|
bool isAlphaNumeric(WCHAR ch);
|
|
int isNameChar(WCHAR ch);
|
|
int isCharData(WCHAR ch);
|
|
|
|
#endif
|