本文整理汇总了C++中COption::Copy方法的典型用法代码示例。如果您正苦于以下问题:C++ COption::Copy方法的具体用法?C++ COption::Copy怎么用?C++ COption::Copy使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类COption
的用法示例。
在下文中一共展示了COption::Copy方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: AnalysisOptionFile
/**
* オプションファイル解析
*/
BOOL COption::AnalysisOptionFile(std::vector<izanagi::tool::CString>& tvArgs)
{
BOOL ret = TRUE;
FILE* fp = NULL;
// テンポラリファイル名を作成する
izanagi::tool::CString strTmp;
_CreateTmpFileName(strTmp);
// プリプロセスする
{
// プリプロセス用
COption cOpt;
cOpt.Copy(*this);
{
// プリプロセス用にいろいろ変更・・・
cOpt.shader = cOpt.optionFile; // 入力
cOpt.preprocFile = strTmp; // 出力
}
// exe名
izanagi::tool::CFileUtility::GetExeModuleName(s_BUF, sizeof(s_BUF));
// 自分自身をプリプロセス処理モードで呼び出す
ret = ExecWithPreprocMode(s_BUF, cOpt);
if (!ret) {
// 失敗・・・
IZ_ASSERT(FALSE);
// TODO
goto __EXIT__;
}
}
// オプションを引数リストに戻す
ConvetOptionToArgs(tvArgs);
// ファイル開く
fopen_s(&fp, strTmp, "rt");
if (fp == NULL) {
IZ_ASSERT(FALSE);
// TODO
return FALSE;
}
memset(s_BUF, 0, sizeof(s_BUF));
// リストファイルを解析
while (fgets(s_BUF, sizeof(s_BUF), fp) != NULL) {
izanagi::tool::CString str;
str.format("%s", s_BUF);
if (strlen(str) > 0) {
if (_IsOptionString(str)) {
// オプションを表している文字列
std::vector<izanagi::tool::CString> tvTmp;
_BreakString(str, tvTmp);
// リストに登録
tvArgs.insert(tvArgs.end(), tvTmp.begin(), tvTmp.end());
}
}
// 次に向けてクリア
memset(s_BUF, 0, sizeof(s_BUF));
}
__EXIT__:
// ファイル閉じる
if (fp != NULL) {
fclose(fp);
}
// テンポラリファイルを削除
DeleteFile(strTmp);
if (!optionFile.empty()) {
optionFile.replace('/', '\\');
ret = izanagi::tool::CFileUtility::GetPathWithoutFileName(s_BUF, sizeof(s_BUF), optionFile);
VRETURN(ret);
baseDir.append(s_BUF);
}
// クリアする
Clear();
return ret;
}