10 #ifndef _EMBEDDED_RPC__GENERATOR_H_ 11 #define _EMBEDDED_RPC__GENERATOR_H_ 13 #include "InterfaceDefinition.hpp" 14 #include "cpptempl.hpp" 15 #include "types/AliasType.hpp" 16 #include "types/ArrayType.hpp" 17 #include "types/BuiltinType.hpp" 18 #include "types/ConstType.hpp" 19 #include "types/DataType.hpp" 20 #include "types/EnumMember.hpp" 21 #include "types/EnumType.hpp" 22 #include "types/Function.hpp" 23 #include "types/FunctionType.hpp" 24 #include "types/Group.hpp" 25 #include "types/Interface.hpp" 26 #include "types/ListType.hpp" 27 #include "types/StructMember.hpp" 28 #include "types/StructType.hpp" 29 #include "types/UnionType.hpp" 30 #include "types/VoidType.hpp" 93 void openFile(std::ofstream &fileOutputStream,
const std::string &fileName);
106 cpptempl::data_map &templateData,
const char *
const kParseFile);
128 const std::string &referenceName,
const std::string &annName);
140 const std::string &referenceName);
291 std::string getOutputName(
Symbol *symbol,
bool check =
true);
361 cpptempl::data_list getFunctionsTemplateData(
Group *group,
Interface *iface);
366 #endif // _EMBEDDED_RPC__GENERATOR_H_ Collects all definitions from an IDL.
Definition: InterfaceDefinition.hpp:31
virtual void setTemplateComments(Symbol *symbol, cpptempl::data_map &symbolInfo)=0
This function will get symbol comments and convert to language specific ones.
std::set< std::string > reserverdWords
Definition: Generator.hpp:81
Group * getGroupByName(const std::string &name)
This function returns pointer to a group with specified name.
Definition: Generator.cpp:172
Member of a struct.
Definition: StructMember.hpp:38
datatype_vector_t getDataTypesFromSymbolScope(SymbolScope *scope, DataType::data_type_t datatype)
This function returns vector of data types from scope.
Definition: Generator.cpp:629
Annotation class.
Definition: Annotation.hpp:28
virtual cpptempl::data_map getFunctionTemplateData(Group *group, Function *fn)=0
This function return interface function template data.
generator_type_t m_generatorType
Definition: Generator.hpp:82
std::vector< Group * > m_groups
Definition: Generator.hpp:80
uint16_t m_idlCrc16
Definition: Generator.hpp:76
virtual cpptempl::data_map makeGroupSymbolsTemplateData(Group *group)=0
This function sets group symbols template data.
StructMember * findParamReferencedFromAnn(const StructType::member_vector_t &members, const std::string &referenceName, const std::string &annName)
This function will return pointer to function parameter/structure member where given reference name i...
Definition: Generator.cpp:237
virtual ~Generator()
Destructor.
Definition: Generator.hpp:68
Value * getAnnValue(Symbol *symbol, const std::string &name)
This function search and returns Value object for given annotation name.
Definition: Generator.cpp:604
cpptempl::data_list makeGroupInterfacesTemplateData(Group *group)
This function sets interfaces template data.
Definition: Generator.cpp:417
Function declaration.
Definition: Function.hpp:117
std::vector< DataType * > datatype_vector_t
Definition: Generator.hpp:54
StructMember * findParamReferencedFromUnion(const StructType::member_vector_t &members, const std::string &referenceName)
This function will return pointer to function parameter/structure member where given reference name i...
Definition: Generator.cpp:251
Base class for all named declarations in the IDL.
Definition: Symbol.hpp:28
std::string stripExtension(const std::string &filename)
Definition: Generator.cpp:224
std::vector< Annotation * > getAnnotations(Symbol *symbol, const std::string &name)
Find annotations matching name in the annotation list.
Definition: Generator.cpp:599
std::filesystem::path m_outputDirectory
Definition: Generator.hpp:83
std::string getAnnStringValue(Symbol *symbol, const std::string &name)
This function search and returns string for given annotation name.
Definition: Generator.cpp:609
Abstract base class for values of arbitrary types.
Definition: Value.hpp:27
cpptempl::data_list makeGroupIncludesTemplateData(Group *group)
This function sets template data for group include directives.
Definition: Generator.cpp:500
cpptempl::data_map m_templateData
Definition: Generator.hpp:77
void makeIncludesTemplateData()
This function sets template data for include directives from an IDL file.
Definition: Generator.cpp:486
std::string getTime()
This function return actual time string representation.
Definition: Generator.cpp:295
A scoped namespace containing symbols.
Definition: SymbolScope.hpp:28
Abstract code generator base class.
Definition: Generator.hpp:45
Annotation::program_lang_t getAnnotationLang()
Returns Generator flag used for annotation.
Definition: Generator.cpp:580
void openFile(std::ofstream &fileOutputStream, const std::string &fileName)
This function open file.
Definition: Generator.cpp:185
Generator(InterfaceDefinition *def, generator_type_t generatorType)
Constructor.
Definition: Generator.cpp:32
Base class for data types.
Definition: DataType.hpp:26
An interface that contains functions.
Definition: Group.hpp:28
StructMember * findParamReferencedFrom(const StructType::member_vector_t &members, const std::string &referenceName)
This function will return pointer to function parameter/structure member where given reference name i...
Definition: Generator.cpp:281
std::vector< StructMember * > member_vector_t
Definition: StructType.hpp:32
bool isMemberDataTypeUsingForwardDeclaration(Symbol *topSymbol, Symbol *memberSymbol)
This function returns information if member data type symbol is using forward declared type...
Definition: Generator.cpp:536
data_type_t
Supported data types.
Definition: DataType.hpp:32
Annotation * findAnnotation(Symbol *symbol, const std::string &name)
Find annotation in the annotation list.
Definition: Generator.cpp:594
virtual void generateOutputFiles(const std::string &fileNameExtension)=0
This function generates output files.
void findGroupDataTypes()
This function finds all group's data types.
Definition: Generator.cpp:370
An interface that contains functions.
Definition: Interface.hpp:29
SymbolScope * m_globals
Definition: Generator.hpp:79
void generateOutputFile(const std::string &fileName, const std::string &templateName, cpptempl::data_map &templateData, const char *const kParseFile)
This function open file, generate output into this file and close this file.
Definition: Generator.cpp:205
virtual void setBinaryList(StructMember *structMember)
This function transform binary data type to list and set annotation to it.
Definition: Generator.hpp:182
void generateGroupOutputFiles(Group *group)
This function generates output files for defined interfaces.
Definition: Generator.cpp:458
virtual void generate()=0
Generate output files.
Definition: AstNode.hpp:26
InterfaceDefinition * m_def
Definition: Generator.hpp:78
virtual DataType * findChildDataType(std::set< DataType * > &dataTypes, DataType *dataType)
This function finds child data types of specified data type.
Definition: Generator.cpp:303