mirror of
https://github.com/eclipse-openvehicle-api/openvehicle-api.git
synced 2026-04-18 10:38:16 +00:00
120 lines
5.1 KiB
C++
120 lines
5.1 KiB
C++
/********************************************************************************
|
|
* Copyright (c) 2025-2026 ZF Friedrichshafen AG
|
|
*
|
|
* This program and the accompanying materials are made available under the
|
|
* terms of the Apache License Version 2.0 which is available at
|
|
* https://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*
|
|
* Contributors:
|
|
* Thomas Pfleiderer - initial API and implementation
|
|
********************************************************************************/
|
|
|
|
#ifndef VSS_CODING_H
|
|
#define VSS_CODING_H
|
|
|
|
#include <iostream>
|
|
#include <vector>
|
|
#include <algorithm>
|
|
#include <string>
|
|
#include <sstream>
|
|
#include <interfaces/dispatch.h>
|
|
|
|
#include "codegen_base.h"
|
|
#include "vss_helper.h"
|
|
|
|
/**
|
|
* @brief VSS code generator coding class.
|
|
* Creates the code out of templates
|
|
*/
|
|
class CVSSCodingCommon : public CCodeGeneratorBase, CVSSHelper
|
|
{
|
|
|
|
public:
|
|
/**
|
|
* @brief Constructor
|
|
* @param[in] rsPrefix used by cmake library and signal definition in signal_identifier.h file
|
|
*/
|
|
CVSSCodingCommon(const std::string& rsPrefix) : m_ssPrefix(rsPrefix) {}
|
|
|
|
/**
|
|
* @brief fill the KeyWordMap with all required strings
|
|
* @param[in] signal signal definition structure to fill the KeyWordMap
|
|
* @param[in] mapKeywords KeyWordMap to be filled
|
|
* @param[in] rsVersion optional information will be placed in the header of the files
|
|
*/
|
|
void GetCommonKeyWordMap(const SSignalVDDefinition& signal, CKeywordMap& mapKeywords, const std::string& rsVersion) const;
|
|
|
|
/**
|
|
* @brief fill the KeyWordMap with all required strings
|
|
* @param[in] signal signal definition structure to fill the KeyWordMap
|
|
* @param[in] mapKeywords KeyWordMap to be filled
|
|
* @param[in] rsVersion optional information will be placed in the header of the files
|
|
*/
|
|
void GetCommonKeyWordMap(const SSignalBSDefinition& signal, CKeywordMap& mapKeywords, const std::string& rsVersion) const;
|
|
|
|
/**
|
|
* @brief create content of the signal_identifier.h file
|
|
* @param[in] allSignals container of all signal definitions
|
|
* @param[in] ssFileName file name of the signal_identifier.h file
|
|
* @param[in] ssVersion optional information will be placed in the header of the files
|
|
* @return content of the signal_identifier.h file
|
|
*/
|
|
std::string Code_SignalIdentifier(const std::vector <SSignalVDDefinition>& allSignals, const std::string& ssFileName,
|
|
const std::string& ssVersion) const;
|
|
|
|
/**
|
|
* @brief get the version line which will be added in the header of the files
|
|
* @param[in] ssVersion optional information will be placed in the header of the files
|
|
* @return line for the header of the files to know the file is auto generated
|
|
*/
|
|
std::string Code_VSSFileVersion(const std::string& ssVersion) const;
|
|
|
|
/**
|
|
* @brief generates the unique define to avoid duplicate loading of a header file
|
|
* @param[in] ssFileName file name which will be included in the unique define
|
|
* @return unique define string
|
|
*/
|
|
std::string Code_SafeGuard(const std::string& ssFileName) const;
|
|
|
|
/**
|
|
* @brief generates the cmakelist.txt file
|
|
* @param[in] targetLibName project cmake name
|
|
* @param[in] targetComponentName is the name of the header and cpp file
|
|
* @return content of the CMakeList.txt file
|
|
*/
|
|
std::string Code_CMakeProject(const std::string& targetLibName, const std::string& targetComponentName) const;
|
|
|
|
protected:
|
|
|
|
/**
|
|
* @brief create a signal line for the signal_identifier file
|
|
* @param[in] allSignals container of all signals for aligning of the string
|
|
* @param[in] signal single signal the function belongs to
|
|
* @param[in] func the function which should be returned in a line
|
|
* @param[in] signalTitle signal title string in file signal_identifier.h
|
|
* @param[in] canSignalTitle can signal title string in file signal_identifier.h
|
|
* @param[in] cTypeTitle c-type title string in file signal_identifier.h
|
|
* @return content of a single function for the signal_identifier file
|
|
*/
|
|
std::string Code_SignalIdentifierList(const std::vector <SSignalVDDefinition>& allSignals, const SSignalVDDefinition& signal,
|
|
const SFunctionVDDefinition& func, const std::string& signalTitle, const std::string& canSignalTitle, const std::string& cTypeTitle) const;
|
|
|
|
/**
|
|
* @brief create a list of all signals for the signal_identifier file
|
|
* @param[in] allSignals container of all signals
|
|
* @param[in] signalTitle signal title string in file signal_identifier.h
|
|
* @param[in] canSignalTitle can signal title string in file signal_identifier.h
|
|
* @param[in] cTypeTitle c-type title string in file signal_identifier.h
|
|
* @return content of list of all signals for the signal_identifier file
|
|
*/
|
|
std::string Code_AllSignalsIdentifierList(const std::vector <SSignalVDDefinition>& allSignals,
|
|
const std::string& signalTitle, const std::string& canSignalTitle, const std::string& cTypeTitle) const;
|
|
|
|
std::string m_ssPrefix; ///< prefix, used by cmake library and signal definition in signal_identifier.h file.
|
|
};
|
|
|
|
#endif // !defined VSS_CODING_H
|
|
|