eRPC Generator (erpcgen)  Rev. 1.7.2
NXP Semiconductors
PythonGenerator.h
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.h"
14 #include "cpptempl.h"
15 #include <set>
16 #include <string>
17 
19 // Classes
21 
22 namespace erpcgen {
23 
27 class PythonGenerator : public Generator
28 {
29 public:
36 
42  virtual ~PythonGenerator() {}
43 
49  virtual void generate();
50 
51 protected:
52  std::string m_suffixStrip;
54 
60  void parseSubtemplates();
61 
69  void generateOutputFiles(const std::string &fileName);
70 
76  void generateCommonFile(std::string fileName);
77 
83  void generateInitFile(std::string fileName);
84 
90  void generateClientFile(std::string fileName);
91 
97  void generateServerFile(std::string fileName);
98 
104  void generateInterfaceFile(std::string fileName);
105 
109  virtual void generateGlobalInitFile();
110 
124 
131  void setTemplateComments(Symbol *symbol, cpptempl::data_map &symbolInfo);
132 
140  std::string getFunctionPrototype(Function *fn);
141 
148  void makeConstTemplateData();
149 
156  void makeEnumsTemplateData();
157 
169 
180  cpptempl::data_list getEnumMembersTemplateData(EnumType *enumType);
181 
186 
193 
203  void setStructMembersTemplateData(StructType *structType, cpptempl::data_map &structInfo);
204 
209 
221 
229  std::string getBuiltinTypename(const BuiltinType *t);
230 
234  std::string filterName(const std::string &name);
235 
238  {
241  };
242 
251  std::string convertComment(const std::string &comment, comment_type commentType);
252 
258  std::string stripWhitespace(const std::string &s);
259 
265  bool checkWhitspaceChar(char c);
266 
271 };
272 
273 } // namespace erpcgen
274 
275 #endif // _EMBEDDED_RPC__PYTHONGENERATOR_H_
Collects all definitions from an IDL.
Definition: InterfaceDefinition.h:30
void makeFunctionsTemplateData()
This function sets function type template data.
Definition: PythonGenerator.cpp:536
Leading multi-line comment.
Definition: PythonGenerator.h:239
Member of a struct.
Definition: StructMember.h:37
std::string getBuiltinTypename(const BuiltinType *t)
This function return string representation for given BuiltinType.
Definition: PythonGenerator.cpp:711
void generateInitFile(std::string fileName)
This function generate output package init file.
Definition: PythonGenerator.cpp:64
Trailing inline comment.
Definition: PythonGenerator.h:240
void setOneStructMemberTemplateData(StructMember *member, cpptempl::data_map &member_info)
Fill in template data for a single struct member.
Definition: PythonGenerator.cpp:518
std::string m_suffixStrip
String to remove from suffixes of names.
Definition: PythonGenerator.h:52
cpptempl::data_map makeGroupSymbolsTemplateData(Group *group)
This function sets group symbols template data.
Definition: PythonGenerator.cpp:403
bool checkWhitspaceChar(char c)
Check if character is whitespace type.
Definition: PythonGenerator.cpp:862
void generateServerFile(std::string fileName)
This function generate output server file.
Definition: PythonGenerator.cpp:82
PythonGenerator(InterfaceDefinition *def)
This function is constructor of PythonGenerator class.
Definition: PythonGenerator.cpp:36
void generateClientFile(std::string fileName)
This function generate output client file.
Definition: PythonGenerator.cpp:76
Represents the builtin atomic types.
Definition: BuiltinType.h:25
cpptempl::data_map getFunctionTemplateData(Group *group, Function *fn)
This function return interface function template data.
Definition: PythonGenerator.cpp:168
Structure data type.
Definition: StructType.h:28
Function declaration.
Definition: Function.h:116
Base class for all named declarations in the IDL.
Definition: Symbol.h:27
virtual ~PythonGenerator()
This function is destructor of PythonGenerator class.
Definition: PythonGenerator.h:42
void generateInterfaceFile(std::string fileName)
This function generate output interface file.
Definition: PythonGenerator.cpp:88
void setStructMembersTemplateData(StructType *structType, cpptempl::data_map &structInfo)
This function sets struct member information to struct data map variable.
Definition: PythonGenerator.cpp:482
void parseSubtemplates()
This function prepare helpful functions located in template files.
Definition: PythonGenerator.cpp:100
Code generator for Python.
Definition: PythonGenerator.h:27
void initPythonReservedWords()
Definition: PythonGenerator.cpp:909
std::string getFunctionPrototype(Function *fn)
This function return interface function prototype.
Definition: PythonGenerator.cpp:264
Abstract code generator base class.
Definition: Generator.h:43
virtual void generateGlobalInitFile()
This function generate output crc16 source file.
Definition: PythonGenerator.cpp:94
std::string stripWhitespace(const std::string &s)
Strip leading and trailing whitespace.
Definition: PythonGenerator.cpp:871
Base class for data types.
Definition: DataType.h:25
std::string filterName(const std::string &name)
Filter symbol names.
Definition: PythonGenerator.cpp:746
void makeConstTemplateData()
This function sets const template data.
Definition: PythonGenerator.cpp:288
std::string convertComment(const std::string &comment, comment_type commentType)
Converts a C++-style Doxygen comment into a Python Doxygen comment.
Definition: PythonGenerator.cpp:760
void generateOutputFiles(const std::string &fileName)
This function generate output files.
Definition: PythonGenerator.cpp:50
An interface that contains functions.
Definition: Group.h:27
void makeAliasesTemplateData()
Fill in template data for type aliases.
Definition: PythonGenerator.cpp:364
Definition: cpptempl.h:190
Enumerate data type.
Definition: EnumType.h:27
comment_type
Possible Doxygen comment styles.
Definition: PythonGenerator.h:237
void makeEnumsTemplateData()
This function sets enum template data.
Definition: PythonGenerator.cpp:323
cpptempl::data_map getTypeInfo(DataType *t)
This function return necessary template data for data type.
Definition: PythonGenerator.cpp:562
size_t m_suffixStripSize
Length of the suffix filter string.
Definition: PythonGenerator.h:53
void generateCommonFile(std::string fileName)
This function generate output common module.
Definition: PythonGenerator.cpp:70
void setTemplateComments(Symbol *symbol, cpptempl::data_map &symbolInfo)
This function will get symbol comments and convert to language specific ones.
Definition: PythonGenerator.cpp:162
virtual void generate()
This function generate output code for output files.
Definition: PythonGenerator.cpp:113
Definition: AstNode.h:25
cpptempl::data_list getEnumMembersTemplateData(EnumType *enumType)
This function return enum members template data.
Definition: PythonGenerator.cpp:346