#pragma once #include #include class XNModelGen { public: XNModelGen(); ~XNModelGen(); int Initialize(const std::string &className, const std::string &version, const std::string &planeName, std::string &errorMsg); int GenerateCode(std::string &errorMsg); private: std::string GetXNCorePath(); std::string UpperCase(const std::string &str); void ParseStructName(const std::string &str, std::string &structName, std::string &interfaceName); bool GenerateHeaderFile(); bool GenerateSourceFile(); bool GenerateCMakeLists(); bool GenerateConfigFile(); private: std::string m_planeName; std::string m_className; std::string m_version; std::string m_confID; std::string m_name; std::string m_author; std::string m_description; std::string m_createTime; std::string m_changeTime; std::string m_runFreq; std::string m_runNode; std::string m_priority; std::string m_dataPackagePath; std::string m_dataPackageName; std::string m_dataPackageHeaderName; std::string m_dataPackageEntryPoint; std::string m_dataPackageInterfaceName; bool m_hasDataPackage; std::string m_inputStructName; std::string m_inputStructName_Interface; std::string m_outputStructName; std::string m_outputStructName_Interface; std::string m_heartStructName; std::string m_heartStructName_Interface; std::string m_confName; std::string m_workPath; std::string m_modelsPath; std::string m_codePath; std::vector m_cmdList; };