2 * ParseError implementation
4 * Copyright 2005 Huw Davies
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
34 #include "msxml_private.h"
36 #include "wine/debug.h"
38 WINE_DEFAULT_DEBUG_CHANNEL(msxml);
42 const struct IXMLDOMParseErrorVtbl *lpVtbl;
44 LONG code, line, linepos, filepos;
45 BSTR url, reason, srcText;
48 static inline parse_error_t *impl_from_IXMLDOMParseError( IXMLDOMParseError *iface )
50 return (parse_error_t *)((char*)iface - FIELD_OFFSET(parse_error_t, lpVtbl));
53 static HRESULT WINAPI parseError_QueryInterface(
54 IXMLDOMParseError *iface,
58 TRACE("%p %s %p\n", iface, debugstr_guid(riid), ppvObject);
60 if ( IsEqualGUID( riid, &IID_IUnknown ) ||
61 IsEqualGUID( riid, &IID_IDispatch ) ||
62 IsEqualGUID( riid, &IID_IXMLDOMParseError ) )
69 IXMLDOMParseError_AddRef( iface );
74 static ULONG WINAPI parseError_AddRef(
75 IXMLDOMParseError *iface )
77 parse_error_t *This = impl_from_IXMLDOMParseError( iface );
78 ULONG ref = InterlockedIncrement( &This->ref );
79 TRACE("(%p) ref now %ld\n", This, ref);
83 static ULONG WINAPI parseError_Release(
84 IXMLDOMParseError *iface )
86 parse_error_t *This = impl_from_IXMLDOMParseError( iface );
89 ref = InterlockedDecrement( &This->ref );
90 TRACE("(%p) ref now %ld\n", This, ref);
93 SysFreeString(This->url);
94 SysFreeString(This->reason);
95 SysFreeString(This->srcText);
96 HeapFree( GetProcessHeap(), 0, This );
102 static HRESULT WINAPI parseError_GetTypeInfoCount(
103 IXMLDOMParseError *iface,
110 static HRESULT WINAPI parseError_GetTypeInfo(
111 IXMLDOMParseError *iface,
114 ITypeInfo** ppTInfo )
120 static HRESULT WINAPI parseError_GetIDsOfNames(
121 IXMLDOMParseError *iface,
132 static HRESULT WINAPI parseError_Invoke(
133 IXMLDOMParseError *iface,
138 DISPPARAMS* pDispParams,
140 EXCEPINFO* pExcepInfo,
147 static HRESULT WINAPI parseError_get_errorCode(
148 IXMLDOMParseError *iface,
151 parse_error_t *This = impl_from_IXMLDOMParseError( iface );
152 TRACE("(%p)->(%p)\n", This, code);
162 static HRESULT WINAPI parseError_get_url(
163 IXMLDOMParseError *iface,
170 static HRESULT WINAPI parseError_get_reason(
171 IXMLDOMParseError *iface,
178 static HRESULT WINAPI parseError_get_srcText(
179 IXMLDOMParseError *iface,
186 static HRESULT WINAPI parseError_get_line(
187 IXMLDOMParseError *iface,
194 static HRESULT WINAPI parseError_get_linepos(
195 IXMLDOMParseError *iface,
202 static HRESULT WINAPI parseError_get_filepos(
203 IXMLDOMParseError *iface,
210 static const struct IXMLDOMParseErrorVtbl parseError_vtbl =
212 parseError_QueryInterface,
215 parseError_GetTypeInfoCount,
216 parseError_GetTypeInfo,
217 parseError_GetIDsOfNames,
219 parseError_get_errorCode,
221 parseError_get_reason,
222 parseError_get_srcText,
224 parseError_get_linepos,
225 parseError_get_filepos
228 IXMLDOMParseError *create_parseError( LONG code, BSTR url, BSTR reason, BSTR srcText,
229 LONG line, LONG linepos, LONG filepos )
233 This = HeapAlloc( GetProcessHeap(), 0, sizeof(*This) );
237 This->lpVtbl = &parseError_vtbl;
242 This->reason = reason;
243 This->srcText = srcText;
245 This->linepos = linepos;
246 This->filepos = filepos;
248 return (IXMLDOMParseError*) &This->lpVtbl;