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
94dcff1d
Commit
94dcff1d
authored
Mar 03, 2014
by
Nikolay Sivov
Committed by
Alexandre Julliard
Mar 03, 2014
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
msxml3: Added IVBSAXDeclHandler interface for MXWriter.
parent
a28ace9a
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
153 additions
and
2 deletions
+153
-2
mxwriter.c
dlls/msxml3/mxwriter.c
+124
-1
saxreader.c
dlls/msxml3/tests/saxreader.c
+29
-1
No files found.
dlls/msxml3/mxwriter.c
View file @
94dcff1d
/*
/*
* MXWriter implementation
* MXWriter implementation
*
*
* Copyright 2011-201
3
Nikolay Sivov for CodeWeavers
* Copyright 2011-201
4
Nikolay Sivov for CodeWeavers
* Copyright 2011 Thomas Mullaly
* Copyright 2011 Thomas Mullaly
*
*
* This library is free software; you can redistribute it and/or
* This library is free software; you can redistribute it and/or
...
@@ -140,6 +140,7 @@ typedef struct
...
@@ -140,6 +140,7 @@ typedef struct
ISAXContentHandler
ISAXContentHandler_iface
;
ISAXContentHandler
ISAXContentHandler_iface
;
ISAXLexicalHandler
ISAXLexicalHandler_iface
;
ISAXLexicalHandler
ISAXLexicalHandler_iface
;
ISAXDeclHandler
ISAXDeclHandler_iface
;
ISAXDeclHandler
ISAXDeclHandler_iface
;
IVBSAXDeclHandler
IVBSAXDeclHandler_iface
;
LONG
ref
;
LONG
ref
;
MSXML_VERSION
class_version
;
MSXML_VERSION
class_version
;
...
@@ -637,6 +638,11 @@ static inline mxwriter *impl_from_ISAXDeclHandler(ISAXDeclHandler *iface)
...
@@ -637,6 +638,11 @@ static inline mxwriter *impl_from_ISAXDeclHandler(ISAXDeclHandler *iface)
return
CONTAINING_RECORD
(
iface
,
mxwriter
,
ISAXDeclHandler_iface
);
return
CONTAINING_RECORD
(
iface
,
mxwriter
,
ISAXDeclHandler_iface
);
}
}
static
inline
mxwriter
*
impl_from_IVBSAXDeclHandler
(
IVBSAXDeclHandler
*
iface
)
{
return
CONTAINING_RECORD
(
iface
,
mxwriter
,
IVBSAXDeclHandler_iface
);
}
static
HRESULT
WINAPI
mxwriter_QueryInterface
(
IMXWriter
*
iface
,
REFIID
riid
,
void
**
obj
)
static
HRESULT
WINAPI
mxwriter_QueryInterface
(
IMXWriter
*
iface
,
REFIID
riid
,
void
**
obj
)
{
{
mxwriter
*
This
=
impl_from_IMXWriter
(
iface
);
mxwriter
*
This
=
impl_from_IMXWriter
(
iface
);
...
@@ -663,6 +669,10 @@ static HRESULT WINAPI mxwriter_QueryInterface(IMXWriter *iface, REFIID riid, voi
...
@@ -663,6 +669,10 @@ static HRESULT WINAPI mxwriter_QueryInterface(IMXWriter *iface, REFIID riid, voi
{
{
*
obj
=
&
This
->
ISAXDeclHandler_iface
;
*
obj
=
&
This
->
ISAXDeclHandler_iface
;
}
}
else
if
(
IsEqualGUID
(
riid
,
&
IID_IVBSAXDeclHandler
)
)
{
*
obj
=
&
This
->
IVBSAXDeclHandler_iface
;
}
else
if
(
dispex_query_interface
(
&
This
->
dispex
,
riid
,
obj
))
else
if
(
dispex_query_interface
(
&
This
->
dispex
,
riid
,
obj
))
{
{
return
*
obj
?
S_OK
:
E_NOINTERFACE
;
return
*
obj
?
S_OK
:
E_NOINTERFACE
;
...
@@ -1646,6 +1656,118 @@ static const ISAXDeclHandlerVtbl SAXDeclHandlerVtbl = {
...
@@ -1646,6 +1656,118 @@ static const ISAXDeclHandlerVtbl SAXDeclHandlerVtbl = {
SAXDeclHandler_externalEntityDecl
SAXDeclHandler_externalEntityDecl
};
};
/*** IVBSAXDeclHandler ***/
static
HRESULT
WINAPI
VBSAXDeclHandler_QueryInterface
(
IVBSAXDeclHandler
*
iface
,
REFIID
riid
,
void
**
obj
)
{
mxwriter
*
This
=
impl_from_IVBSAXDeclHandler
(
iface
);
return
IMXWriter_QueryInterface
(
&
This
->
IMXWriter_iface
,
riid
,
obj
);
}
static
ULONG
WINAPI
VBSAXDeclHandler_AddRef
(
IVBSAXDeclHandler
*
iface
)
{
mxwriter
*
This
=
impl_from_IVBSAXDeclHandler
(
iface
);
return
IMXWriter_AddRef
(
&
This
->
IMXWriter_iface
);
}
static
ULONG
WINAPI
VBSAXDeclHandler_Release
(
IVBSAXDeclHandler
*
iface
)
{
mxwriter
*
This
=
impl_from_IVBSAXDeclHandler
(
iface
);
return
IMXWriter_Release
(
&
This
->
IMXWriter_iface
);
}
static
HRESULT
WINAPI
VBSAXDeclHandler_GetTypeInfoCount
(
IVBSAXDeclHandler
*
iface
,
UINT
*
pctinfo
)
{
mxwriter
*
This
=
impl_from_IVBSAXDeclHandler
(
iface
);
return
IMXWriter_GetTypeInfoCount
(
&
This
->
IMXWriter_iface
,
pctinfo
);
}
static
HRESULT
WINAPI
VBSAXDeclHandler_GetTypeInfo
(
IVBSAXDeclHandler
*
iface
,
UINT
iTInfo
,
LCID
lcid
,
ITypeInfo
**
ppTInfo
)
{
mxwriter
*
This
=
impl_from_IVBSAXDeclHandler
(
iface
);
return
IMXWriter_GetTypeInfo
(
&
This
->
IMXWriter_iface
,
iTInfo
,
lcid
,
ppTInfo
);
}
static
HRESULT
WINAPI
VBSAXDeclHandler_GetIDsOfNames
(
IVBSAXDeclHandler
*
iface
,
REFIID
riid
,
LPOLESTR
*
rgszNames
,
UINT
cNames
,
LCID
lcid
,
DISPID
*
rgDispId
)
{
mxwriter
*
This
=
impl_from_IVBSAXDeclHandler
(
iface
);
return
IMXWriter_GetIDsOfNames
(
&
This
->
IMXWriter_iface
,
riid
,
rgszNames
,
cNames
,
lcid
,
rgDispId
);
}
static
HRESULT
WINAPI
VBSAXDeclHandler_Invoke
(
IVBSAXDeclHandler
*
iface
,
DISPID
dispIdMember
,
REFIID
riid
,
LCID
lcid
,
WORD
wFlags
,
DISPPARAMS
*
pDispParams
,
VARIANT
*
pVarResult
,
EXCEPINFO
*
pExcepInfo
,
UINT
*
puArgErr
)
{
mxwriter
*
This
=
impl_from_IVBSAXDeclHandler
(
iface
);
return
IMXWriter_Invoke
(
&
This
->
IMXWriter_iface
,
dispIdMember
,
riid
,
lcid
,
wFlags
,
pDispParams
,
pVarResult
,
pExcepInfo
,
puArgErr
);
}
static
HRESULT
WINAPI
VBSAXDeclHandler_elementDecl
(
IVBSAXDeclHandler
*
iface
,
BSTR
*
name
,
BSTR
*
model
)
{
mxwriter
*
This
=
impl_from_IVBSAXDeclHandler
(
iface
);
TRACE
(
"(%p)->(%p %p)
\n
"
,
This
,
name
,
model
);
if
(
!
name
||
!
model
)
return
E_POINTER
;
return
ISAXDeclHandler_elementDecl
(
&
This
->
ISAXDeclHandler_iface
,
*
name
,
-
1
,
*
model
,
-
1
);
}
static
HRESULT
WINAPI
VBSAXDeclHandler_attributeDecl
(
IVBSAXDeclHandler
*
iface
,
BSTR
*
element
,
BSTR
*
attr
,
BSTR
*
type
,
BSTR
*
default_value
,
BSTR
*
value
)
{
mxwriter
*
This
=
impl_from_IVBSAXDeclHandler
(
iface
);
TRACE
(
"(%p)->(%p %p %p %p %p)
\n
"
,
This
,
element
,
attr
,
type
,
default_value
,
value
);
if
(
!
element
||
!
attr
||
!
type
||
!
default_value
||
!
value
)
return
E_POINTER
;
return
ISAXDeclHandler_attributeDecl
(
&
This
->
ISAXDeclHandler_iface
,
*
element
,
-
1
,
*
attr
,
-
1
,
*
type
,
-
1
,
*
default_value
,
-
1
,
*
value
,
-
1
);
}
static
HRESULT
WINAPI
VBSAXDeclHandler_internalEntityDecl
(
IVBSAXDeclHandler
*
iface
,
BSTR
*
name
,
BSTR
*
value
)
{
mxwriter
*
This
=
impl_from_IVBSAXDeclHandler
(
iface
);
TRACE
(
"(%p)->(%p %p)
\n
"
,
This
,
name
,
value
);
if
(
!
name
||
!
value
)
return
E_POINTER
;
return
ISAXDeclHandler_internalEntityDecl
(
&
This
->
ISAXDeclHandler_iface
,
*
name
,
-
1
,
*
value
,
-
1
);
}
static
HRESULT
WINAPI
VBSAXDeclHandler_externalEntityDecl
(
IVBSAXDeclHandler
*
iface
,
BSTR
*
name
,
BSTR
*
publicid
,
BSTR
*
systemid
)
{
mxwriter
*
This
=
impl_from_IVBSAXDeclHandler
(
iface
);
TRACE
(
"(%p)->(%p %p %p)
\n
"
,
This
,
name
,
publicid
,
systemid
);
if
(
!
name
||
!
publicid
||
!
systemid
)
return
E_POINTER
;
return
ISAXDeclHandler_externalEntityDecl
(
&
This
->
ISAXDeclHandler_iface
,
*
name
,
-
1
,
*
publicid
,
-
1
,
*
systemid
,
-
1
);
}
static
const
IVBSAXDeclHandlerVtbl
VBSAXDeclHandlerVtbl
=
{
VBSAXDeclHandler_QueryInterface
,
VBSAXDeclHandler_AddRef
,
VBSAXDeclHandler_Release
,
VBSAXDeclHandler_GetTypeInfoCount
,
VBSAXDeclHandler_GetTypeInfo
,
VBSAXDeclHandler_GetIDsOfNames
,
VBSAXDeclHandler_Invoke
,
VBSAXDeclHandler_elementDecl
,
VBSAXDeclHandler_attributeDecl
,
VBSAXDeclHandler_internalEntityDecl
,
VBSAXDeclHandler_externalEntityDecl
};
static
const
tid_t
mxwriter_iface_tids
[]
=
{
static
const
tid_t
mxwriter_iface_tids
[]
=
{
IMXWriter_tid
,
IMXWriter_tid
,
0
0
...
@@ -1674,6 +1796,7 @@ HRESULT MXWriter_create(MSXML_VERSION version, void **ppObj)
...
@@ -1674,6 +1796,7 @@ HRESULT MXWriter_create(MSXML_VERSION version, void **ppObj)
This
->
ISAXContentHandler_iface
.
lpVtbl
=
&
SAXContentHandlerVtbl
;
This
->
ISAXContentHandler_iface
.
lpVtbl
=
&
SAXContentHandlerVtbl
;
This
->
ISAXLexicalHandler_iface
.
lpVtbl
=
&
SAXLexicalHandlerVtbl
;
This
->
ISAXLexicalHandler_iface
.
lpVtbl
=
&
SAXLexicalHandlerVtbl
;
This
->
ISAXDeclHandler_iface
.
lpVtbl
=
&
SAXDeclHandlerVtbl
;
This
->
ISAXDeclHandler_iface
.
lpVtbl
=
&
SAXDeclHandlerVtbl
;
This
->
IVBSAXDeclHandler_iface
.
lpVtbl
=
&
VBSAXDeclHandlerVtbl
;
This
->
ref
=
1
;
This
->
ref
=
1
;
This
->
class_version
=
version
;
This
->
class_version
=
version
;
...
...
dlls/msxml3/tests/saxreader.c
View file @
94dcff1d
...
@@ -2864,6 +2864,7 @@ static void test_mxwriter_handlers(void)
...
@@ -2864,6 +2864,7 @@ static void test_mxwriter_handlers(void)
{
{
ISAXContentHandler
*
handler
;
ISAXContentHandler
*
handler
;
IMXWriter
*
writer
,
*
writer2
;
IMXWriter
*
writer
,
*
writer2
;
IVBSAXDeclHandler
*
vbdecl
;
ISAXDeclHandler
*
decl
;
ISAXDeclHandler
*
decl
;
ISAXLexicalHandler
*
lh
;
ISAXLexicalHandler
*
lh
;
HRESULT
hr
;
HRESULT
hr
;
...
@@ -2902,7 +2903,7 @@ static void test_mxwriter_handlers(void)
...
@@ -2902,7 +2903,7 @@ static void test_mxwriter_handlers(void)
IMXWriter_Release
(
writer2
);
IMXWriter_Release
(
writer2
);
ISAXLexicalHandler_Release
(
lh
);
ISAXLexicalHandler_Release
(
lh
);
/* ISAXDeclHandler */
/* ISAXDeclHandler
/IVBSAXDeclHandler
*/
hr
=
IMXWriter_QueryInterface
(
writer
,
&
IID_ISAXDeclHandler
,
(
void
**
)
&
decl
);
hr
=
IMXWriter_QueryInterface
(
writer
,
&
IID_ISAXDeclHandler
,
(
void
**
)
&
decl
);
ok
(
hr
==
S_OK
,
"Expected S_OK, got %08x
\n
"
,
hr
);
ok
(
hr
==
S_OK
,
"Expected S_OK, got %08x
\n
"
,
hr
);
EXPECT_REF
(
writer
,
2
);
EXPECT_REF
(
writer
,
2
);
...
@@ -2916,6 +2917,19 @@ static void test_mxwriter_handlers(void)
...
@@ -2916,6 +2917,19 @@ static void test_mxwriter_handlers(void)
IMXWriter_Release
(
writer2
);
IMXWriter_Release
(
writer2
);
ISAXDeclHandler_Release
(
decl
);
ISAXDeclHandler_Release
(
decl
);
hr
=
IMXWriter_QueryInterface
(
writer
,
&
IID_IVBSAXDeclHandler
,
(
void
**
)
&
vbdecl
);
ok
(
hr
==
S_OK
,
"Expected S_OK, got %08x
\n
"
,
hr
);
EXPECT_REF
(
writer
,
2
);
EXPECT_REF
(
vbdecl
,
2
);
hr
=
IVBSAXDeclHandler_QueryInterface
(
vbdecl
,
&
IID_IMXWriter
,
(
void
**
)
&
writer2
);
ok
(
hr
==
S_OK
,
"Expected S_OK, got %08x
\n
"
,
hr
);
ok
(
writer2
==
writer
,
"got %p, expected %p
\n
"
,
writer2
,
writer
);
EXPECT_REF
(
writer
,
3
);
EXPECT_REF
(
writer2
,
3
);
IMXWriter_Release
(
writer2
);
IVBSAXDeclHandler_Release
(
vbdecl
);
IMXWriter_Release
(
writer
);
IMXWriter_Release
(
writer
);
}
}
...
@@ -4698,6 +4712,7 @@ static void test_mxwriter_dtd(void)
...
@@ -4698,6 +4712,7 @@ static void test_mxwriter_dtd(void)
static
const
WCHAR
sysW
[]
=
{
's'
,
'y'
,
's'
};
static
const
WCHAR
sysW
[]
=
{
's'
,
'y'
,
's'
};
ISAXContentHandler
*
content
;
ISAXContentHandler
*
content
;
ISAXLexicalHandler
*
lexical
;
ISAXLexicalHandler
*
lexical
;
IVBSAXDeclHandler
*
vbdecl
;
ISAXDeclHandler
*
decl
;
ISAXDeclHandler
*
decl
;
IMXWriter
*
writer
;
IMXWriter
*
writer
;
VARIANT
dest
;
VARIANT
dest
;
...
@@ -4716,6 +4731,9 @@ static void test_mxwriter_dtd(void)
...
@@ -4716,6 +4731,9 @@ static void test_mxwriter_dtd(void)
hr
=
IMXWriter_QueryInterface
(
writer
,
&
IID_ISAXDeclHandler
,
(
void
**
)
&
decl
);
hr
=
IMXWriter_QueryInterface
(
writer
,
&
IID_ISAXDeclHandler
,
(
void
**
)
&
decl
);
EXPECT_HR
(
hr
,
S_OK
);
EXPECT_HR
(
hr
,
S_OK
);
hr
=
IMXWriter_QueryInterface
(
writer
,
&
IID_IVBSAXDeclHandler
,
(
void
**
)
&
vbdecl
);
EXPECT_HR
(
hr
,
S_OK
);
hr
=
IMXWriter_put_omitXMLDeclaration
(
writer
,
VARIANT_TRUE
);
hr
=
IMXWriter_put_omitXMLDeclaration
(
writer
,
VARIANT_TRUE
);
EXPECT_HR
(
hr
,
S_OK
);
EXPECT_HR
(
hr
,
S_OK
);
...
@@ -4783,6 +4801,9 @@ static void test_mxwriter_dtd(void)
...
@@ -4783,6 +4801,9 @@ static void test_mxwriter_dtd(void)
hr
=
ISAXDeclHandler_elementDecl
(
decl
,
NULL
,
0
,
NULL
,
0
);
hr
=
ISAXDeclHandler_elementDecl
(
decl
,
NULL
,
0
,
NULL
,
0
);
EXPECT_HR
(
hr
,
E_INVALIDARG
);
EXPECT_HR
(
hr
,
E_INVALIDARG
);
hr
=
IVBSAXDeclHandler_elementDecl
(
vbdecl
,
NULL
,
NULL
);
EXPECT_HR
(
hr
,
E_POINTER
);
hr
=
ISAXDeclHandler_elementDecl
(
decl
,
nameW
,
sizeof
(
nameW
)
/
sizeof
(
WCHAR
),
NULL
,
0
);
hr
=
ISAXDeclHandler_elementDecl
(
decl
,
nameW
,
sizeof
(
nameW
)
/
sizeof
(
WCHAR
),
NULL
,
0
);
EXPECT_HR
(
hr
,
E_INVALIDARG
);
EXPECT_HR
(
hr
,
E_INVALIDARG
);
...
@@ -4858,6 +4879,9 @@ static void test_mxwriter_dtd(void)
...
@@ -4858,6 +4879,9 @@ static void test_mxwriter_dtd(void)
hr
=
ISAXDeclHandler_internalEntityDecl
(
decl
,
NULL
,
0
,
NULL
,
0
);
hr
=
ISAXDeclHandler_internalEntityDecl
(
decl
,
NULL
,
0
,
NULL
,
0
);
EXPECT_HR
(
hr
,
E_INVALIDARG
);
EXPECT_HR
(
hr
,
E_INVALIDARG
);
hr
=
IVBSAXDeclHandler_internalEntityDecl
(
vbdecl
,
NULL
,
NULL
);
EXPECT_HR
(
hr
,
E_POINTER
);
hr
=
ISAXDeclHandler_internalEntityDecl
(
decl
,
_bstr_
(
"name"
),
-
1
,
NULL
,
0
);
hr
=
ISAXDeclHandler_internalEntityDecl
(
decl
,
_bstr_
(
"name"
),
-
1
,
NULL
,
0
);
EXPECT_HR
(
hr
,
E_INVALIDARG
);
EXPECT_HR
(
hr
,
E_INVALIDARG
);
...
@@ -4879,6 +4903,9 @@ static void test_mxwriter_dtd(void)
...
@@ -4879,6 +4903,9 @@ static void test_mxwriter_dtd(void)
hr
=
ISAXDeclHandler_externalEntityDecl
(
decl
,
NULL
,
0
,
NULL
,
0
,
NULL
,
0
);
hr
=
ISAXDeclHandler_externalEntityDecl
(
decl
,
NULL
,
0
,
NULL
,
0
,
NULL
,
0
);
ok
(
hr
==
E_INVALIDARG
,
"got 0x%08x
\n
"
,
hr
);
ok
(
hr
==
E_INVALIDARG
,
"got 0x%08x
\n
"
,
hr
);
hr
=
IVBSAXDeclHandler_externalEntityDecl
(
vbdecl
,
NULL
,
NULL
,
NULL
);
ok
(
hr
==
E_POINTER
,
"got 0x%08x
\n
"
,
hr
);
hr
=
ISAXDeclHandler_externalEntityDecl
(
decl
,
_bstr_
(
"name"
),
-
1
,
NULL
,
0
,
NULL
,
0
);
hr
=
ISAXDeclHandler_externalEntityDecl
(
decl
,
_bstr_
(
"name"
),
-
1
,
NULL
,
0
,
NULL
,
0
);
ok
(
hr
==
E_INVALIDARG
,
"got 0x%08x
\n
"
,
hr
);
ok
(
hr
==
E_INVALIDARG
,
"got 0x%08x
\n
"
,
hr
);
...
@@ -4895,6 +4922,7 @@ static void test_mxwriter_dtd(void)
...
@@ -4895,6 +4922,7 @@ static void test_mxwriter_dtd(void)
ISAXContentHandler_Release
(
content
);
ISAXContentHandler_Release
(
content
);
ISAXLexicalHandler_Release
(
lexical
);
ISAXLexicalHandler_Release
(
lexical
);
IVBSAXDeclHandler_Release
(
vbdecl
);
ISAXDeclHandler_Release
(
decl
);
ISAXDeclHandler_Release
(
decl
);
IMXWriter_Release
(
writer
);
IMXWriter_Release
(
writer
);
free_bstrs
();
free_bstrs
();
...
...
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