XNSim/XNEngine/main.cpp

81 lines
1.7 KiB
C++
Raw Normal View History

2025-04-28 12:25:20 +08:00
/**
* @file main.cpp
* @author jinchao
* @brief
* @version 1.0
* @date 2025-02-14
*
* @copyright Copyright (c) 2025 COMAC
*
*/
2025-05-20 16:41:46 +08:00
#include <iostream>
#include <string>
#include <cstdlib>
2025-04-28 12:25:20 +08:00
#include "XNEngine.h"
2025-05-20 16:41:46 +08:00
2025-04-28 12:25:20 +08:00
/**
* @brief
* @param argc
* @param argv
* @return
*/
int main(int argc, char *argv[])
{
2025-05-20 16:41:46 +08:00
XNEngine engine;
2025-04-28 12:25:20 +08:00
//检测输入参数个数
2025-05-20 16:41:46 +08:00
if (argc <= 2) {
std::cerr << "0x1000 输入参数太少!" << std::endl;
2025-05-20 16:41:46 +08:00
return -1;
2025-04-28 12:25:20 +08:00
}
2025-05-20 16:41:46 +08:00
std::string configPath;
std::string configId;
bool hasConfigPath = false;
bool hasConfigId = false;
2025-04-28 12:25:20 +08:00
2025-05-20 16:41:46 +08:00
//检查是否包含-f和-id参数
for (int i = 1; i < argc;) {
std::string arg = argv[i];
if ("-f" == arg) {
if ((i + 1) < argc) {
configPath = argv[i + 1];
hasConfigPath = true;
i += 2;
} else {
std::cerr << "0x1001 在-f参数后未指定配置文件路径引擎将退出!" << std::endl;
2025-05-20 16:41:46 +08:00
return -1;
2025-04-28 12:25:20 +08:00
}
2025-05-20 16:41:46 +08:00
} else if ("-id" == arg) {
2025-04-28 12:25:20 +08:00
if ((i + 1) < argc) {
2025-05-20 16:41:46 +08:00
configId = argv[i + 1];
hasConfigId = true;
2025-04-28 12:25:20 +08:00
i += 2;
} else {
std::cerr << "0x1002 在-id参数后未指定配置ID引擎将退出!" << std::endl;
2025-05-20 16:41:46 +08:00
return -1;
2025-04-28 12:25:20 +08:00
}
} else if ("-test" == arg) {
engine.SetTestMode(true);
i++;
} else {
std::cerr << "0x1003 无法识别的参数 " << arg << " ,引擎将退出!" << std::endl;
2025-05-20 16:41:46 +08:00
return -1;
2025-04-28 12:25:20 +08:00
}
}
2025-05-20 16:41:46 +08:00
//检查是否同时包含-f和-id参数
if (hasConfigPath && hasConfigId) {
std::cerr << "0x1004 请指定 -f <config_file> 或 -id <config_id> ,但不要同时指定!"
<< std::endl;
2025-04-28 12:25:20 +08:00
return -1;
2025-05-20 16:41:46 +08:00
}
//检测配置文件格式
if (hasConfigPath) {
return engine.Run(configPath);
} else if (hasConfigId) {
return engine.Run(configId);
}
return -1;
2025-04-28 12:25:20 +08:00
}