On 9/3/2010 13:25, Mariusz PluciĆski wrote:
+static HRESULT _ParseGameDefinition(
IXMLDOMElement *lpXMLGameDefinitionElement,
struct GAME_DATA *GameData)
+{
- static const WCHAR sGameId[] = {'g','a','m','e','I','D',0};
- HRESULT hr = S_OK;
- BSTR bstrAttribute = NULL;
- VARIANT variant;
No need for initializers here.
- hr = IXMLDOMElement_getAttribute(lpXMLGameDefinitionElement, bstrAttribute,&variant);
- if(hr != S_OK || V_VT(&variant) != VT_BSTR) hr = E_FAIL;
No need to test for hr != S_OK and alter failure code after that I guess.
- /* load MSXML parser */
- hr = CoCreateInstance(&CLSID_DOMDocument30, NULL, CLSCTX_INPROC_SERVER,
+&IID_IXMLDOMDocument, (LPVOID*)&lpXMLDocument);
Use neutral CLSID_DOMDocument. Minor things - useless comment, and LPVOID* -> void**.
- IXMLDOMDocument *lpXMLDocument = NULL;
- IXMLDOMNode *lpXMLGameDefinitionNode = NULL;
- IXMLDOMElement *lpXMLRootElement = NULL, *lpXMLGameDefinitionElement = NULL;
Same here, you don't need to initialize that. Please use shorter names, like 'root', 'document' or something.
hr = IXMLDOMDocument_get_documentElement(lpXMLDocument,&lpXMLRootElement);
if(hr == S_FALSE)
hr = E_FAIL;
hr != S_OK works.
P.S. it makes sense to test xml parsing part with native msxml first. This will hopefully show some problems with builtin msxml.