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