#include "pch.h"
#include "filehelper.h"
#include <shlwapi.h>

// ���������ʹ��stl;
#include <cstdlib>
#include <ctime>
#include <algorithm>
// _mkdirͷ�ļ�;
#include <direct.h>

int myrandom(int i) { return std::rand() % i; }

filehelper::filehelper(void)
{
	
}

filehelper::~filehelper(void)
{

}

/************************************************************************/
/*  ������[2/21/2017 Jeff];
/*  ������;
/*  ������;
/*  	[IN] ��;
/*  	[OUT] ��;
/*  	[IN/OUT] ��;
/*  ���أ�void;
/*  ע�⣺;
/*  ʾ����;
/*
/*  �޸ģ�;
/*  ���ڣ�;
/*  ���ݣ�;
/************************************************************************/
void filehelper::random(IN STR_VEC& vtContent, IN BOOL bSort /* = TRUE */)
{
	if (bSort)
	{//����;
		std::sort(vtContent.begin(), vtContent.end());
	}
	else
	{//����;
		//�����漴��������������;
		std::srand(unsigned(std::time(0)));
		std::random_shuffle(vtContent.begin(), vtContent.end(), myrandom);
	}
}

/************************************************************************/
/*  ������[2/21/2017 Jeff];
/*  ������;
/*  ������;
/*  	[IN] ��;
/*  	[OUT] ��;
/*  	[IN/OUT] ��;
/*  ���أ�void;
/*  ע�⣺;
/*  ʾ����;
/*
/*  �޸ģ�;
/*  ���ڣ�;
/*  ���ݣ�;
/************************************************************************/
void filehelper::split(OUT vector<TString>& vtSplit, IN const TString str, IN const TString strSplit)
{
	if (str.size() == 0 || strSplit.size() == 0)
		return;

	INT nIndex = 0;
	vtSplit.clear();
	TString strtmp = str;
	TString strtmp2;
	do 
	{
		if (TString::npos != (nIndex = strtmp.find_first_of(strSplit)))
		{
			strtmp2 = strtmp.substr(0, nIndex);
			if (strtmp2.size())vtSplit.push_back(strtmp2);
			strtmp = strtmp.substr(nIndex + strSplit.size());
		}
	} while (strtmp.find_first_of(strSplit) != TString::npos);

	if (strtmp.size())
		vtSplit.push_back(strtmp);
}

//////////////////////////////////////////////////////////////////////////
BOOL filehelper::getsubfolder(LPCTSTR lpfolder, STR_VEC *pvtfolders)
{
	// ·��������;
	if (!PathFileExists(lpfolder))
		return FALSE;

	// ָ���;
	if (pvtfolders == NULL) return FALSE;
	m_pvtfolders = pvtfolders;

	findsubfolder(lpfolder);

	return TRUE;
}

//////////////////////////////////////////////////////////////////////////
BOOL filehelper::getallfiles(LPCTSTR lpfolder, LPCTSTR lpfindext, STR_VEC *pvtfiles)
{
	// ·��������;
	if (!PathFileExists(lpfolder))
		return FALSE;

	// ָ���;
	if (pvtfiles == NULL) return FALSE;
	m_pvtfiles = pvtfiles;

	findfiles_findin_subfolder(lpfolder);

	return TRUE;
}

BOOL filehelper::getfolderfiles(LPCTSTR lpfolder, LPCTSTR lpfindext, STR_VEC *pvtfiles)
{
	// ·��������;
	if (!PathFileExists(lpfolder))
		return FALSE;

	// ָ���;
	if (pvtfiles == NULL) return FALSE;
	m_pvtfiles = pvtfiles;

	findfiles_findout_subfolder(lpfolder);

	return TRUE;
}