eRPC Generator (erpcgen)  Rev. 1.11.0
NXP Semiconductors
PythonGenerator.hpp
1 /*
2  * Copyright (c) 2014-2016 Freescale Semiconductor, Inc.
3  * Copyright 2016-2017 NXP
4  * All rights reserved.
5  *
6  *
7  * SPDX-License-Identifier: BSD-3-Clause
8  */
9 
10 #ifndef _EMBEDDED_RPC__PYTHONGENERATOR_H_
11 #define _EMBEDDED_RPC__PYTHONGENERATOR_H_
12 
13 #include "Generator.hpp"
14 #include "cpptempl.hpp"
15 
16 #include <set>
17 #include <string>
18 
20 // Classes
22 
23 namespace erpcgen {
24 
28 class PythonGenerator : public Generator
29 {
30 public:
36  explicit PythonGenerator(InterfaceDefinition *def);
37 
43  virtual ~PythonGenerator() {}
44 
50  virtual void generate() override;
51 
52 protected:
53  std::string m_suffixStrip;
55 
61  void parseSubtemplates();
62 
70  void generateOutputFiles(const std::string &fileName) override;
71 
77  void generateCommonFile(std::string fileName);
78 
84  void generateInitFile(std::string fileName);
85 
91  void generateClientFile(std::string fileName);
92 
98  void generateServerFile(std::string fileName);
99 
105  void generateInterfaceFile(std::string fileName);
106 
110  virtual void generateGlobalInitFile();
111 
124  cpptempl::data_map getFunctionTemplateData(Group *group, Function *fn) override;
125 
132  void setTemplateComments(Symbol *symbol, cpptempl::data_map &symbolInfo) override;
133 
141  std::string getFunctionPrototype(Function *fn);
142 
149  void makeConstTemplateData();
150 
157  void makeEnumsTemplateData();
158 
169  cpptempl::data_map makeGroupSymbolsTemplateData(Group *group) override;
170 
181  cpptempl::data_list getEnumMembersTemplateData(EnumType *enumType);
182 
187 
194 
204  void setStructMembersTemplateData(StructType *structType, cpptempl::data_map &structInfo);
205 
209  void setOneStructMemberTemplateData(StructMember *member, cpptempl::data_map &member_info);
210 
221  cpptempl::data_map getTypeInfo(DataType *t);
222 
230  std::string getBuiltinTypename(const BuiltinType *t);
231 
235  std::string filterName(const std::string &name);
236 
239  {
242  };
243 
252  std::string convertComment(const std::string &comment, comment_type commentType);
253 
259  std::string stripWhitespace(const std::string &s);
260 
266  bool checkWhitspaceChar(char c);
267 
272 };
273 
274 } // namespace erpcgen
275 
276 #endif // _EMBEDDED_RPC__PYTHONGENERATOR_H_
virtual void generate() override
This function generate output code for output files.
Definition: PythonGenerator.cpp:117
Collects all definitions from an IDL.
Definition: InterfaceDefinition.hpp:31
void makeFunctionsTemplateData()
This function sets function type template data.
Definition: PythonGenerator.cpp:575
Leading multi-line comment.
Definition: PythonGenerator.hpp:240
Member of a struct.
Definition: StructMember.hpp:38
std::string getBuiltinTypename(const BuiltinType *t)
This function return string representation for given BuiltinType.
Definition: PythonGenerator.cpp:792
void generateInitFile(std::string fileName)
This function generate output package init file.
Definition: PythonGenerator.cpp:68
Trailing inline comment.
Definition: PythonGenerator.hpp:241
void setOneStructMemberTemplateData(StructMember *member, cpptempl::data_map &member_info)
Fill in template data for a single struct member.
Definition: PythonGenerator.cpp:557
std::string m_suffixStrip
String to remove from suffixes of names.
Definition: PythonGenerator.hpp:53
bool checkWhitspaceChar(char c)
Check if character is whitespace type.
Definition: PythonGenerator.cpp:944
void generateServerFile(std::string fileName)
This function generate output server file.
Definition: PythonGenerator.cpp:86
PythonGenerator(InterfaceDefinition *def)
This function is constructor of PythonGenerator class.
Definition: PythonGenerator.cpp:40
void generateClientFile(std::string fileName)
This function generate output client file.
Definition: PythonGenerator.cpp:80
Represents the builtin atomic types.
Definition: BuiltinType.hpp:26
Structure data type.
Definition: StructType.hpp:29
Function declaration.
Definition: Function.hpp:117
Base class for all named declarations in the IDL.
Definition: Symbol.hpp:28
virtual ~PythonGenerator()
This function is destructor of PythonGenerator class.
Definition: PythonGenerator.hpp:43
void generateInterfaceFile(std::string fileName)
This function generate output interface file.
Definition: PythonGenerator.cpp:92
void setStructMembersTemplateData(StructType *structType, cpptempl::data_map &structInfo)
This function sets struct member information to struct data map variable.
Definition: PythonGenerator.cpp:521
cpptempl::data_map getFunctionTemplateData(Group *group, Function *fn) override
This function return interface function template data.
Definition: PythonGenerator.cpp:172
void parseSubtemplates()
This function prepare helpful functions located in template files.
Definition: PythonGenerator.cpp:104
Code generator for Python.
Definition: PythonGenerator.hpp:28
void initPythonReservedWords()
Definition: PythonGenerator.cpp:991
std::string getFunctionPrototype(Function *fn)
This function return interface function prototype.
Definition: PythonGenerator.cpp:269
Abstract code generator base class.
Definition: Generator.hpp:45
virtual void generateGlobalInitFile()
This function generate output crc16 source file.
Definition: PythonGenerator.cpp:98
std::string stripWhitespace(const std::string &s)
Strip leading and trailing whitespace.
Definition: PythonGenerator.cpp:953
Base class for data types.
Definition: DataType.hpp:26
std::string filterName(const std::string &name)
Filter symbol names.
Definition: PythonGenerator.cpp:827
void makeConstTemplateData()
This function sets const template data.
Definition: PythonGenerator.cpp:293
std::string convertComment(const std::string &comment, comment_type commentType)
Converts a C++-style Doxygen comment into a Python Doxygen comment.
Definition: PythonGenerator.cpp:841
void setTemplateComments(Symbol *symbol, cpptempl::data_map &symbolInfo) override
This function will get symbol comments and convert to language specific ones.
Definition: PythonGenerator.cpp:166
An interface that contains functions.
Definition: Group.hpp:28
void makeAliasesTemplateData()
Fill in template data for type aliases.
Definition: PythonGenerator.cpp:369
Enumerate data type.
Definition: EnumType.hpp:28
comment_type
Possible Doxygen comment styles.
Definition: PythonGenerator.hpp:238
cpptempl::data_map makeGroupSymbolsTemplateData(Group *group) override
This function sets group symbols template data.
Definition: PythonGenerator.cpp:408
void makeEnumsTemplateData()
This function sets enum template data.
Definition: PythonGenerator.cpp:328
cpptempl::data_map getTypeInfo(DataType *t)
This function return necessary template data for data type.
Definition: PythonGenerator.cpp:601
size_t m_suffixStripSize
Length of the suffix filter string.
Definition: PythonGenerator.hpp:54
void generateCommonFile(std::string fileName)
This function generate output common module.
Definition: PythonGenerator.cpp:74
void generateOutputFiles(const std::string &fileName) override
This function generate output files.
Definition: PythonGenerator.cpp:54
Definition: AstNode.hpp:26
cpptempl::data_list getEnumMembersTemplateData(EnumType *enumType)
This function return enum members template data.
Definition: PythonGenerator.cpp:351