/********************************************************************/
/* Copyright (c) 2019 System fugen G.K. and Yuzi Mizuno             */
/* All rights reserved.                                             */
/********************************************************************/

#include "stdafx.h"
#include "IO/util.h"

// 便利関数
CString AddNumberToPath(
	const CString& strPathName,
	const CString& strFormat,
	size_t nNumber
){
	CString strWork(strPathName);
	// 拡張子 (e.g. .stl)
	CString strExt(::PathFindExtension(strPathName));

	// 拡張子以外の部分を取り出す
	::PathRemoveExtension(strWork.GetBuffer(MAX_PATH));
	strWork.ReleaseBuffer();

	// ファイル名にインデックスを付加する
	CString strVolIndex;
	strVolIndex.Format(strFormat, nNumber);
	strWork += strVolIndex;

	// 拡張子を復帰
	::PathAddExtension(strWork.GetBuffer(MAX_PATH), strExt);
	strWork.ReleaseBuffer();

	return strWork;
}

//Convert array of string numerical values to MGVector instance.
//That is; string "xxx,yyy,zzz", or "(xxx,yyy,zzz)" to MGVector data,
//where xxx, yyy, and zzz are digit charactors.
void StringVectorConvert(
	const CString& stringNumerical,
	MGVector& vec
){
	if(stringNumerical.IsEmpty())
		return;

	// double 値の配列
	vec=MGVector(0.,0.,0.);
	CString str=stringNumerical;
	if(str[0]=='(')
		str.Delete(0, 1);

	const TCHAR cComma = ',';
	int idvalue=0, nComma = str.Find(cComma);
	while(nComma != -1 && idvalue<=2){
		// 失敗した場合は勝手に0.0が返される
		vec(idvalue++)=_tcstod(str.Left(nComma),NULL);
		str.Delete(0, nComma+1);
		nComma = str.Find(cComma);
	}
	if(!str.IsEmpty() && idvalue<=2){
		// 失敗した場合は勝手に0.0が返される
		double d = _tcstod(str,NULL);
		vec(idvalue++)=d;
		str.Empty();
	}
}
