Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

180 lines
5.0 KiB

#include <windows.h>
#include "ManifestNode.h"
/////////////////////////////////////////////////////////////////////////
// ctor
/////////////////////////////////////////////////////////////////////////
ManifestNode::ManifestNode(IAssemblyManifestImport *pManifestImport,
LPWSTR pwzSrcRootDir,
LPWSTR pwzFilePath,
DWORD dwType)
{
_pManifestImport = pManifestImport;
_pManifestImport->AddRef();
_dwType = dwType;
if (pwzSrcRootDir)
{
_pwzSrcRootDir = new WCHAR[lstrlen(pwzSrcRootDir)+1];
if(_pwzSrcRootDir)
lstrcpyW(_pwzSrcRootDir, pwzSrcRootDir);
}
else
{
_pwzSrcRootDir = NULL;
}
if (pwzFilePath)
{
_pwzFilePath = new WCHAR[lstrlen(pwzFilePath)+1];
if(_pwzFilePath)
lstrcpyW(_pwzFilePath, pwzFilePath);
}
else
{
_pwzFilePath = NULL;
}
}
/////////////////////////////////////////////////////////////////////////
// dtor
/////////////////////////////////////////////////////////////////////////
ManifestNode::~ManifestNode()
{
SAFERELEASE(_pManifestImport);
SAFEDELETEARRAY(_pwzSrcRootDir);
SAFEDELETEARRAY(_pwzFilePath);
}
/////////////////////////////////////////////////////////////////////////
// GetNextAssembly
/////////////////////////////////////////////////////////////////////////
HRESULT ManifestNode::GetNextAssembly(DWORD index, IManifestInfo **ppManifestInfo)
{
HRESULT hr = S_OK;
hr = _pManifestImport->GetNextAssembly(index, ppManifestInfo);
return hr;
}
/////////////////////////////////////////////////////////////////////////
// GetNextFile
/////////////////////////////////////////////////////////////////////////
HRESULT ManifestNode::GetNextFile(DWORD index, IManifestInfo **ppManifestInfo)
{
HRESULT hr = S_OK;
hr = _pManifestImport->GetNextFile(index, ppManifestInfo);
return hr;
}
/////////////////////////////////////////////////////////////////////////
// GetManifestFilePath
/////////////////////////////////////////////////////////////////////////
HRESULT ManifestNode::GetSrcRootDir(LPWSTR *pwzFileName)
{
HRESULT hr = S_OK;
if(_pwzSrcRootDir)
(*pwzFileName) = WSTRDupDynamic(_pwzSrcRootDir);
else
hr = S_FALSE;
return hr;
}
/////////////////////////////////////////////////////////////////////////
// GetManifestFilePath
/////////////////////////////////////////////////////////////////////////
HRESULT ManifestNode::GetManifestFilePath(LPWSTR *pwzFileName)
{
HRESULT hr = S_OK;
if(_pwzFilePath)
(*pwzFileName) = WSTRDupDynamic(_pwzFilePath);
else
hr = S_FALSE;
return hr;
}
/////////////////////////////////////////////////////////////////////////
// GetAssemblyIdentity
/////////////////////////////////////////////////////////////////////////
HRESULT ManifestNode::IsEqual(ManifestNode *pManifestNode)
{
HRESULT hr = S_OK;
IAssemblyIdentity *pAsmId1=NULL, *pAsmId2=NULL;
if (FAILED(hr = _pManifestImport->GetAssemblyIdentity(&pAsmId1)))
goto exit;
if (FAILED(hr = pManifestNode->GetAssemblyIdentity(&pAsmId2)))
goto exit;
hr = pAsmId1->IsEqual(pAsmId2);
exit:
return hr;
}
/////////////////////////////////////////////////////////////////////////
// GetAssemblyIdentity
/////////////////////////////////////////////////////////////////////////
HRESULT ManifestNode::GetAssemblyIdentity(IAssemblyIdentity **ppAsmId)
{
HRESULT hr = S_OK;
hr = _pManifestImport->GetAssemblyIdentity(ppAsmId);
return hr;
}
/////////////////////////////////////////////////////////////////////////
// GetManifestType
/////////////////////////////////////////////////////////////////////////
HRESULT ManifestNode::GetManifestType(DWORD *pdwType)
{
HRESULT hr = S_OK;
*pdwType = _dwType;
return hr;
}
/////////////////////////////////////////////////////////////////////////
// SetManifestFileName
/////////////////////////////////////////////////////////////////////////
HRESULT ManifestNode::SetSrcRootDir(LPWSTR pwzFilePath)
{
HRESULT hr = S_OK;
SAFEDELETEARRAY(_pwzSrcRootDir);
_pwzSrcRootDir = WSTRDupDynamic(pwzFilePath);
return hr;
}
/////////////////////////////////////////////////////////////////////////
// SetManifestFileName
/////////////////////////////////////////////////////////////////////////
HRESULT ManifestNode::SetManifestFilePath(LPWSTR pwzFilePath)
{
HRESULT hr = S_OK;
SAFEDELETEARRAY(_pwzFilePath);
_pwzFilePath = WSTRDupDynamic(pwzFilePath);
return hr;
}
/////////////////////////////////////////////////////////////////////////
// SetManifestType
/////////////////////////////////////////////////////////////////////////
HRESULT ManifestNode::SetManifestType(DWORD dwType)
{
HRESULT hr = S_OK;
_dwType = dwType;
return hr;
}