60 lines
896 B
C++
60 lines
896 B
C++
#include "StdAfx.h"
|
|
#include "PathStack.h"
|
|
|
|
CPathStack::CPathStack()
|
|
{
|
|
SetBase();
|
|
}
|
|
|
|
CPathStack::~CPathStack()
|
|
{
|
|
MoveBase();
|
|
}
|
|
|
|
void CPathStack::GetCurrentPathName(std::string* pstCurPathName)
|
|
{
|
|
assert(pstCurPathName!=NULL);
|
|
|
|
char szPathName[MAX_PATH+1];
|
|
_getcwd(szPathName, MAX_PATH);
|
|
|
|
*pstCurPathName = szPathName;
|
|
}
|
|
|
|
void CPathStack::Push()
|
|
{
|
|
char szPathName[MAX_PATH+1];
|
|
_getcwd(szPathName, MAX_PATH);
|
|
|
|
m_stPathNameDeque.push_front(szPathName);
|
|
}
|
|
|
|
bool CPathStack::Pop()
|
|
{
|
|
if (m_stPathNameDeque.empty())
|
|
{
|
|
assert(!"CPathStack::Pop Empty Stack");
|
|
return false;
|
|
}
|
|
|
|
_chdir(m_stPathNameDeque.front().c_str());
|
|
m_stPathNameDeque.pop_front();
|
|
return true;
|
|
}
|
|
|
|
|
|
void CPathStack::MoveBase()
|
|
{
|
|
_chdir(m_stBasePathName.c_str());
|
|
}
|
|
|
|
void CPathStack::SetBase()
|
|
{
|
|
GetCurrentPathName(&m_stBasePathName);
|
|
}
|
|
|
|
void CPathStack::Move(const char* c_szPathName)
|
|
{
|
|
_chdir(c_szPathName);
|
|
}
|