eRPC Generator (erpcgen)  Rev. 1.7.2
NXP Semiconductors
InterfaceDefinition.h
1 /*
2  * Copyright (c) 2014-2016, Freescale Semiconductor, Inc.
3  * Copyright 2016 NXP
4  * All rights reserved.
5  *
6  *
7  * SPDX-License-Identifier: BSD-3-Clause
8  */
9 
10 #ifndef _EMBEDDED_RPC__INTERFACEDEFINITION_H_
11 #define _EMBEDDED_RPC__INTERFACEDEFINITION_H_
12 
13 #include "AstNode.h"
14 #include "types/Program.h"
15 #include "types/SymbolScope.h"
16 #include <boost/filesystem.hpp>
17 #include <iostream>
18 
20 // Classes
22 
23 namespace erpcgen {
24 
31 {
32 public:
33  enum codec_t
34  {
35  kNotSpecified,
36  kBasicCodec,
37  };
43 
47  virtual ~InterfaceDefinition() {}
48 
54  void init();
55 
66  void parse(const char *inputFile);
67 
73  AstNode *getAst() { return m_ast; }
74 
80  SymbolScope &getGlobals() { return m_globals; }
81 
92  void setProgramInfo(const std::string &fileName, const std::string &outputFilePath, codec_t codec);
93 
99  void setProgramName(const std::string &programName) { m_programName = programName; }
100 
106  const std::string getProgramName() { return getProgramSymbol()->getName(); }
107 
113  boost::filesystem::path getOutputDirectory() { return m_outputDirectory; }
114 
120  std::string getOutputFilename() { return m_outputFilename; }
121 
127  void setOutputFilename(const std::string &filename);
128 
135  bool hasProgramSymbol();
136 
143 
152  codec_t getCodecType() { return m_codec; }
153 
159  uint16_t getIdlCrc16() { return m_idlCrc16; }
160 
161 private:
162  /* Instance Variables */
163  AstNode *m_ast;
164  SymbolScope m_globals;
165  Program *m_program;
166  std::string m_programName;
167  std::string m_outputFilename;
168  boost::filesystem::path m_outputDirectory;
169  codec_t m_codec;
170  uint16_t m_idlCrc16;
172  /* Private Functions */
176  void createBuiltinTypes();
177 };
178 
179 } // namespace erpcgen
180 
181 #endif // _EMBEDDED_RPC__INTERFACEDEFINITION_H_
Collects all definitions from an IDL.
Definition: InterfaceDefinition.h:30
codec_t getCodecType()
This function returns used codec type in eRPC application.
Definition: InterfaceDefinition.h:152
virtual ~InterfaceDefinition()
Destructor.
Definition: InterfaceDefinition.h:47
void setOutputFilename(const std::string &filename)
This function sets output file name.
Definition: InterfaceDefinition.cpp:113
Homogeneous AST node class.
Definition: AstNode.h:35
AstNode * getAst()
This function returns node belong to this object.
Definition: InterfaceDefinition.h:73
Program declaration.
Definition: Program.h:27
Program * getProgramSymbol()
This function returns program symbol.
Definition: InterfaceDefinition.cpp:101
uint16_t getIdlCrc16()
This function returns crc16 of all used IDL files.
Definition: InterfaceDefinition.h:159
void parse(const char *inputFile)
This function parse given IDL file.
Definition: InterfaceDefinition.cpp:45
const std::string & getName() const
This function returns symbol name.
Definition: Symbol.h:124
A scoped namespace containing symbols.
Definition: SymbolScope.h:27
std::string getOutputFilename()
This function returns output file name.
Definition: InterfaceDefinition.h:120
const std::string getProgramName()
This function returns program name.
Definition: InterfaceDefinition.h:106
InterfaceDefinition()
Default constructor.
Definition: InterfaceDefinition.cpp:29
void init()
This function initialize symbol scope variable m_globals.
Definition: InterfaceDefinition.cpp:40
void setProgramName(const std::string &programName)
This function sets program name.
Definition: InterfaceDefinition.h:99
bool hasProgramSymbol()
This function returns information if program symbol was set in parsed file.
Definition: InterfaceDefinition.cpp:96
boost::filesystem::path getOutputDirectory()
This function returns output directory path.
Definition: InterfaceDefinition.h:113
SymbolScope & getGlobals()
This function returns global symbol scope.
Definition: InterfaceDefinition.h:80
Definition: AstNode.h:25
void setProgramInfo(const std::string &fileName, const std::string &outputFilePath, codec_t codec)
This function sets program information.
Definition: InterfaceDefinition.cpp:89