windows-nt/Source/XPSP1/NT/shell/ext/occache/filenode.cpp
2020-09-26 16:20:57 +08:00

126 lines
2.7 KiB
C++

// Implementation of class CFileNode
//
// During parsing an inf file, information about each file
// is stored in an instance of this class. Such information
// includes the name of the file, its section in the inf file,
// its location (directory), etc.
#include "filenode.h"
CPNode::CPNode(LPCTSTR szName)
{
Assert (szName != NULL);
lstrcpyn(m_szName, szName, MAX_PATH);
m_pNext = NULL;
m_bRemovable = FALSE;
}
CPNode::~CPNode()
{
if (m_pNext != NULL)
delete m_pNext;
}
// insert a new file node into list
//HRESULT CFileNode::Insert(LPCTSTR szName, LPCTSTR szSection)
HRESULT CPNode::Insert(CPNode* pNewNode)
{
if (pNewNode == NULL)
return HRESULT_FROM_WIN32(ERROR_BAD_ARGUMENTS);
m_pNext = pNewNode;
return S_OK;
}
// get the file node placed right after this one in list
CPNode* CPNode::GetNext() const
{
return m_pNext;
}
// tell the path in which this file is located
HRESULT CPNode::SetStr(LPTSTR lpszMember, LPCTSTR lpszNew )
{
Assert (lpszNew != NULL);
if (lpszNew == NULL)
return HRESULT_FROM_WIN32(ERROR_BAD_ARGUMENTS);
lstrcpyn(lpszMember, lpszNew, MAX_PATH); // all our string members are MAX_PATH
return S_OK;
}
// retrieve the name of the file represented by this node
LPCTSTR CPNode::GetName() const
{
return m_szName;
}
// retrieve the path of the file represented by this node
LPCTSTR CPNode::GetPath() const
{
return (m_szPath[0] == '\0' ? NULL : m_szPath);
}
// constructor
CPackageNode::CPackageNode(LPCTSTR szName, LPCTSTR szNamespace, LPCTSTR szPath) : CPNode(szName)
{
Assert (szNamespace != NULL);
lstrcpyn(m_szName, szName, MAX_PATH);
lstrcpyn(m_szNamespace, szNamespace, MAX_PATH);
if (szPath != NULL)
{
lstrcpyn(m_szPath, szPath, MAX_PATH);
}
else
{
m_szPath[0] = '\0';
}
m_pNext = NULL;
m_fIsSystemClass = FALSE;
}
// destructor
CPackageNode::~CPackageNode()
{
}
// retrieve the name of the section in the inf file which
// which the file represented by this node was installed
LPCTSTR CPackageNode::GetNamespace() const
{
return m_szNamespace;
}
// constructor
CFileNode::CFileNode(LPCTSTR szName, LPCTSTR szSection, LPCTSTR szPath) : CPNode(szName)
{
Assert (szSection != NULL);
lstrcpyn(m_szName, szName, MAX_PATH);
lstrcpyn(m_szSection, szSection, MAX_PATH);
if (szPath != NULL)
{
lstrcpyn(m_szPath, szPath, MAX_PATH);
}
else
{
m_szPath[0] = '\0';
}
m_pNext = NULL;
}
// destructor
CFileNode::~CFileNode()
{
}
// retrieve the name of the section in the inf file which
// which the file represented by this node was installed
LPCTSTR CFileNode::GetSection() const
{
return m_szSection;
}