ddl/ddlgenerators/generator_library/ddl_manager.h
2019-12-12 14:41:47 +01:00

94 lines
3.1 KiB
C++

/**
* @file
* Implementation of FEP MDE core
*
* @copyright
* @verbatim
Copyright @ 2017 Audi Electronics Venture GmbH. All rights reserved.
This Source Code Form is subject to the terms of the Mozilla
Public License, v. 2.0. If a copy of the MPL was not distributed
with this file, You can obtain one at https://mozilla.org/MPL/2.0/.
If it is not possible or desirable to put the notice in a particular file, then
You may include the notice in a location (such as a LICENSE file in a
relevant directory) where a recipient would be likely to look for such a notice.
You may add additional accurate notices of copyright ownership.
@endverbatim
*/
#include <ddl.h>
#ifndef DDL_MANAGER_H
#define DDL_MANAGER_H
class DDLManager
{
public:
/**
* CTOR
* @param [in]
*/
DDLManager();
/**
* DTOR
*/
~DDLManager();
/// Set default ddl
a_util::result::Result setDefaultDDL();
/**
* Nerge with ddl file, or with default ddl if empty
* @param[in] ddl_path - path to the ddl file
* @param[out] error_msg - error message, gives more information if it failed
* @param[in] struct_name - merge only this struct to the existing ddl
* @retval ERR_NOERROR Everything went as expected.
*/
a_util::result::Result mergeWithDDLFile(const a_util::filesystem::Path& ddl_path, std::string& error_msg, const std::string& struct_name = "");
/**
* Nerge with ddl file, or with default ddl if empty
* @param[in] header_path - path to the header file
* @param[in] struct_name - merge only this struct to the existing ddl
* @retval ERR_NOERROR Everything went as expected.
*/
a_util::result::Result mergeWithHeaderFile(const a_util::filesystem::Path& header_path, std::string& error_msg,
const ddl::DDLVersion& version = ddl::DDLVersion::ddl_version_current, const std::string& struct_name = "");
/// Getter for ddl representation
ddl::DDLDescription* getDDL();
/// Print to ddl file
a_util::result::Result printToDDLFile(const a_util::filesystem::Path& ddl_path, std::string& error_msg);
/// Print to header file
a_util::result::Result printToHeaderFile(const a_util::filesystem::Path& header_file, std::string& error_msg,
const std::string name_space = "", const std::string displace = "");
/// Search if the file contains structs
a_util::result::Result searchForStructs();
/**
* Verify if the file is valid and write some errors and warnings
* @retval message list
*/
ddl::ImporterMsgList checkValidity();
private:
/** find struct struct_name in description.
* Recursively add all child-structs of struct_name as well
* @param[in] description description to search in
* @param[in] struct_name name of struct so search for
* @retval result
*/
a_util::result::Result findStructRecursively(ddl::DDLDescription* description, const std::string &struct_name);
private:
/// File name
a_util::filesystem::Path _filename;
/// ddl representation
ddl::DDLDescription* _ddl_description;
};
#endif //DDL_MANAGER_H