Files
Slnkdwf/ATL90/source/SProxy/XMLDocument.cpp
Jos Groot Lipman 0e37d774d2 Merge SLNKDWF64 branch
svn path=/Slnkdwf/trunk/; revision=23911
2015-01-21 12:09:31 +00:00

77 lines
1.4 KiB
C++

//
// XMLDocument.cpp
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
#include "stdafx.h"
#include "XMLDocument.h"
#include "Emit.h"
CXMLDocument::~CXMLDocument()
{
}
CXMLDocument::CXMLDocument(XMLDOCTYPE docType)
:m_docType(docType)
{
}
BOOL CXMLDocument::AddDocument(const CStringW& strUri, CXMLDocument *pDoc)
{
//
// always try to add to the parent if possible
//
CXMLDocument * pParentDocument = GetParentDocument();
if (pParentDocument != NULL)
{
return pParentDocument->AddDocument(strUri, pDoc);
}
if (m_docMap.SetAt(strUri, pDoc) != NULL)
{
return TRUE;
}
else
{
EmitErrorHr(E_OUTOFMEMORY);
return FALSE;
}
}
BOOL CXMLDocument::AddDocument(LPCWSTR wszUri, int cchUri, CXMLDocument *pDoc)
{
CStringW strUri;
strUri.SetString(wszUri, cchUri);
return AddDocument(strUri, pDoc);
}
CXMLDocument * CXMLDocument::GetDocument(const CStringW& strUri)
{
CXMLDocument *pDoc = NULL;
const XMLDOCMAP::CPair *p = m_docMap.Lookup(strUri);
if (p != NULL)
{
pDoc = const_cast<XMLDOCMAP::CPair *>(p)->m_value;
}
else
{
CXMLDocument * pParentDocument = GetParentDocument();
if (pParentDocument != NULL)
{
pDoc = pParentDocument->GetDocument(strUri);
}
}
return pDoc;
}
CXMLDocument * CXMLDocument::GetDocument(LPCWSTR wszUri, int cchUri)
{
CStringW strUri;
strUri.SetString(wszUri, cchUri);
return GetDocument(strUri);
}