client/EterLib/PathStack.cpp

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);
}