Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
4ec6da6e
Commit
4ec6da6e
authored
Nov 15, 2010
by
Adam Martinson
Committed by
Alexandre Julliard
Nov 16, 2010
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
msxml3: Add XDR datatypes enum and string table.
parent
b7cdaba8
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
288 additions
and
0 deletions
+288
-0
msxml_private.h
dlls/msxml3/msxml_private.h
+48
-0
schema.c
dlls/msxml3/schema.c
+240
-0
No files found.
dlls/msxml3/msxml_private.h
View file @
4ec6da6e
...
...
@@ -68,6 +68,51 @@ typedef enum tid_t {
LAST_tid
}
tid_t
;
/* The XDR datatypes (urn:schemas-microsoft-com:datatypes)
* These are actually valid for XSD schemas as well
* See datatypes.xsd
*/
typedef
enum
_XDR_DT
{
DT_INVALID
=
-
1
,
DT_BIN_BASE64
,
DT_BIN_HEX
,
DT_BOOLEAN
,
DT_CHAR
,
DT_DATE
,
DT_DATE_TZ
,
DT_DATETIME
,
DT_DATETIME_TZ
,
DT_ENTITY
,
DT_ENTITIES
,
DT_ENUMERATION
,
DT_FIXED_14_4
,
DT_FLOAT
,
DT_I1
,
DT_I2
,
DT_I4
,
DT_I8
,
DT_ID
,
DT_IDREF
,
DT_IDREFS
,
DT_INT
,
DT_NMTOKEN
,
DT_NMTOKENS
,
DT_NOTATION
,
DT_NUMBER
,
DT_R4
,
DT_R8
,
DT_STRING
,
DT_TIME
,
DT_TIME_TZ
,
DT_UI1
,
DT_UI2
,
DT_UI4
,
DT_UI8
,
DT_URI
,
DT_UUID
}
XDR_DT
;
#define DT__N_TYPES (DT_UUID+1)
extern
HRESULT
get_typeinfo
(
tid_t
tid
,
ITypeInfo
**
typeinfo
);
extern
void
release_typelib
(
void
);
...
...
@@ -222,6 +267,9 @@ extern HRESULT node_get_base_name(xmlnode*,BSTR*);
extern
HRESULT
DOMDocument_create_from_xmldoc
(
xmlDocPtr
xmldoc
,
IXMLDOMDocument3
**
document
);
extern
HRESULT
SchemaCache_validate_tree
(
IXMLDOMSchemaCollection2
*
iface
,
xmlNodePtr
tree
);
extern
XDR_DT
dt_get_type
(
xmlChar
const
*
str
,
int
len
/* calculated if -1 */
);
extern
xmlChar
const
*
dt_get_str
(
XDR_DT
dt
);
extern
BSTR
EnsureCorrectEOL
(
BSTR
);
static
inline
BSTR
bstr_from_xmlChar
(
const
xmlChar
*
str
)
...
...
dlls/msxml3/schema.c
View file @
4ec6da6e
...
...
@@ -101,6 +101,246 @@ typedef struct _cache_index_data
BSTR
*
out
;
}
cache_index_data
;
/* datatypes lookup stuff
* generated with help from gperf */
#define DT_MIN_STR_LEN 2
#define DT_MAX_STR_LEN 11
#define DT_MIN_HASH_VALUE 2
#define DT_MAX_HASH_VALUE 115
static
const
xmlChar
DT_bin_base64
[]
=
"bin.base64"
;
static
const
xmlChar
DT_bin_hex
[]
=
"bin.hex"
;
static
const
xmlChar
DT_boolean
[]
=
"boolean"
;
static
const
xmlChar
DT_char
[]
=
"char"
;
static
const
xmlChar
DT_date
[]
=
"date"
;
static
const
xmlChar
DT_date_tz
[]
=
"date.tz"
;
static
const
xmlChar
DT_dateTime
[]
=
"dateTime"
;
static
const
xmlChar
DT_dateTime_tz
[]
=
"dateTime.tz"
;
static
const
xmlChar
DT_entity
[]
=
"entity"
;
static
const
xmlChar
DT_entities
[]
=
"entities"
;
static
const
xmlChar
DT_enumeration
[]
=
"enumeration"
;
static
const
xmlChar
DT_fixed_14_4
[]
=
"fixed.14.4"
;
static
const
xmlChar
DT_float
[]
=
"float"
;
static
const
xmlChar
DT_i1
[]
=
"i1"
;
static
const
xmlChar
DT_i2
[]
=
"i2"
;
static
const
xmlChar
DT_i4
[]
=
"i4"
;
static
const
xmlChar
DT_i8
[]
=
"i8"
;
static
const
xmlChar
DT_id
[]
=
"id"
;
static
const
xmlChar
DT_idref
[]
=
"idref"
;
static
const
xmlChar
DT_idrefs
[]
=
"idrefs"
;
static
const
xmlChar
DT_int
[]
=
"int"
;
static
const
xmlChar
DT_nmtoken
[]
=
"nmtoken"
;
static
const
xmlChar
DT_nmtokens
[]
=
"nmtokens"
;
static
const
xmlChar
DT_notation
[]
=
"notation"
;
static
const
xmlChar
DT_number
[]
=
"number"
;
static
const
xmlChar
DT_r4
[]
=
"r4"
;
static
const
xmlChar
DT_r8
[]
=
"r8"
;
static
const
xmlChar
DT_string
[]
=
"string"
;
static
const
xmlChar
DT_time
[]
=
"time"
;
static
const
xmlChar
DT_time_tz
[]
=
"time.tz"
;
static
const
xmlChar
DT_ui1
[]
=
"ui1"
;
static
const
xmlChar
DT_ui2
[]
=
"ui2"
;
static
const
xmlChar
DT_ui4
[]
=
"ui4"
;
static
const
xmlChar
DT_ui8
[]
=
"ui8"
;
static
const
xmlChar
DT_uri
[]
=
"uri"
;
static
const
xmlChar
DT_uuid
[]
=
"uuid"
;
static
DWORD
dt_hash
(
xmlChar
const
*
str
,
int
len
/* calculated if -1 */
)
{
static
const
BYTE
assoc_values
[]
=
{
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
10
,
116
,
116
,
55
,
45
,
116
,
5
,
116
,
0
,
116
,
0
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
5
,
0
,
0
,
20
,
0
,
0
,
10
,
0
,
0
,
116
,
0
,
0
,
0
,
15
,
5
,
116
,
116
,
10
,
0
,
0
,
0
,
116
,
116
,
0
,
0
,
10
,
116
,
116
,
116
,
116
,
116
,
116
,
5
,
0
,
0
,
20
,
0
,
0
,
10
,
0
,
0
,
116
,
0
,
0
,
0
,
15
,
5
,
116
,
116
,
10
,
0
,
0
,
0
,
116
,
116
,
0
,
0
,
10
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
,
116
};
DWORD
hval
=
(
len
==
-
1
)
?
xmlStrlen
(
str
)
:
len
;
switch
(
hval
)
{
default:
hval
+=
assoc_values
[
str
[
10
]];
/*FALLTHROUGH*/
case
10
:
hval
+=
assoc_values
[
str
[
9
]];
/*FALLTHROUGH*/
case
9
:
hval
+=
assoc_values
[
str
[
8
]];
/*FALLTHROUGH*/
case
8
:
hval
+=
assoc_values
[
str
[
7
]];
/*FALLTHROUGH*/
case
7
:
hval
+=
assoc_values
[
str
[
6
]];
/*FALLTHROUGH*/
case
6
:
hval
+=
assoc_values
[
str
[
5
]];
/*FALLTHROUGH*/
case
5
:
hval
+=
assoc_values
[
str
[
4
]];
/*FALLTHROUGH*/
case
4
:
hval
+=
assoc_values
[
str
[
3
]];
/*FALLTHROUGH*/
case
3
:
hval
+=
assoc_values
[
str
[
2
]];
/*FALLTHROUGH*/
case
2
:
hval
+=
assoc_values
[
str
[
1
]];
/*FALLTHROUGH*/
case
1
:
hval
+=
assoc_values
[
str
[
0
]];
break
;
}
return
hval
;
}
static
const
xmlChar
const
*
DT_string_table
[
DT__N_TYPES
]
=
{
DT_bin_base64
,
DT_bin_hex
,
DT_boolean
,
DT_char
,
DT_date
,
DT_date_tz
,
DT_dateTime
,
DT_dateTime_tz
,
DT_entity
,
DT_entities
,
DT_enumeration
,
DT_fixed_14_4
,
DT_float
,
DT_i1
,
DT_i2
,
DT_i4
,
DT_i8
,
DT_id
,
DT_idref
,
DT_idrefs
,
DT_int
,
DT_nmtoken
,
DT_nmtokens
,
DT_notation
,
DT_number
,
DT_r4
,
DT_r8
,
DT_string
,
DT_time
,
DT_time_tz
,
DT_ui1
,
DT_ui2
,
DT_ui4
,
DT_ui8
,
DT_uri
,
DT_uuid
};
static
const
XDR_DT
DT_lookup_table
[]
=
{
-
1
,
-
1
,
DT_I8
,
DT_UI8
,
DT_TIME
,
-
1
,
-
1
,
DT_I4
,
DT_UI4
,
-
1
,
-
1
,
-
1
,
DT_R8
,
DT_URI
,
-
1
,
DT_FLOAT
,
-
1
,
DT_R4
,
DT_INT
,
DT_CHAR
,
-
1
,
DT_ENTITY
,
DT_ID
,
DT_ENTITIES
,
DT_UUID
,
-
1
,
-
1
,
DT_TIME_TZ
,
-
1
,
DT_DATE
,
-
1
,
DT_NUMBER
,
DT_BIN_HEX
,
DT_DATETIME
,
-
1
,
DT_IDREF
,
DT_IDREFS
,
DT_BOOLEAN
,
-
1
,
-
1
,
-
1
,
DT_STRING
,
DT_NMTOKEN
,
DT_NMTOKENS
,
-
1
,
DT_BIN_BASE64
,
-
1
,
DT_I2
,
DT_UI2
,
-
1
,
-
1
,
-
1
,
DT_DATE_TZ
,
DT_NOTATION
,
-
1
,
-
1
,
DT_DATETIME_TZ
,
DT_I1
,
DT_UI1
,
-
1
,
-
1
,
DT_ENUMERATION
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
DT_FIXED_14_4
};
XDR_DT
dt_get_type
(
xmlChar
const
*
str
,
int
len
/* calculated if -1 */
)
{
DWORD
hash
=
dt_hash
(
str
,
len
);
XDR_DT
dt
=
DT_INVALID
;
if
(
hash
<=
DT_MAX_HASH_VALUE
)
dt
=
DT_lookup_table
[
hash
];
if
(
dt
!=
DT_INVALID
&&
xmlStrcasecmp
(
str
,
DT_string_table
[
dt
])
==
0
)
return
dt
;
return
DT_INVALID
;
}
xmlChar
const
*
dt_get_str
(
XDR_DT
dt
)
{
if
(
dt
==
DT_INVALID
)
return
NULL
;
return
DT_string_table
[
dt
];
}
xmlExternalEntityLoader
_external_entity_loader
=
NULL
;
static
xmlParserInputPtr
external_entity_loader
(
const
char
*
URL
,
const
char
*
ID
,
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment