10 #ifndef _EMBEDDED_RPC__CGENERATOR_H_ 11 #define _EMBEDDED_RPC__CGENERATOR_H_ 13 #include "Generator.h" 15 #include "types/Group.h" 61 cpptempl::data_list m_symbolsTemplate;
63 std::vector<ListType *>
70 std::vector<StructType *> m_structListTypes;
81 void parseSubtemplates();
91 void generateOutputFiles(
const std::string &fileNameExtension);
98 void generateTypesHeaderFile();
105 void generateCommonHeaderFiles(
const std::string &fileName);
112 void generateClientSourceFile(std::string fileName);
119 void generateServerHeaderFile(std::string fileName);
126 void generateServerSourceFile(std::string fileName);
131 virtual void generateCrcFile();
136 void transformAliases();
159 DataType *findChildDataType(std::set<DataType *> &dataTypes,
DataType *dataType);
222 void makeConstTemplateData();
248 cpptempl::data_list makeGroupCallbacksTemplateData(
Group *group);
307 bool &needUnionsServerFree);
330 std::string getUnionMembersData(
UnionType *unionType, std::string indent);
338 void makeEnumsTemplateData();
346 void makeSymbolsDeclarationTemplateData();
370 cpptempl::data_list getEnumMembersTemplateData(
EnumType *enumType);
378 void makeAliasesTemplateData();
392 std::string getAliasName(
DataType *dataType);
426 std::string getFunctionPrototype(
Group *group,
FunctionBase *fn, std::string name =
"");
445 std::string generateIncludeGuardName(
const std::string &filename);
454 std::string getBuiltinTypename(
const BuiltinType *t);
470 std::string getTypenameName(
DataType *t,
const std::string &name);
488 bool inDataContainer,
StructMember *structMember,
bool &needTempVariable,
489 bool isFunctionParam);
510 void giveBracesToArrays(std::string &name);
521 std::string getExtraDirectionPointer(
StructMember *structMember);
532 std::string getExtraPointerInReturn(
DataType *dataType);
579 void setSymbolDataToSide(
const Symbol *symbolType,
const std::set<_param_direction> directions,
580 cpptempl::data_list &toClient, cpptempl::data_list &toServer,
cpptempl::data_map &dataMap);
590 bool isNeedCallFree(
DataType *dataType);
611 std::string returnSpaceWhenNotEmpty(
const std::string ¶m);
623 bool containsString(
DataType *dataType);
635 bool containsList(
DataType *dataType);
648 bool containsByrefParamToFree(
DataType *dataType, std::set<DataType *> &dataTypes);
672 bool isBinaryList(
ListType *listType);
695 bool generateServerFreeFunctions(
StructMember *structMember);
705 void setNoSharedAnn(
Symbol *parentSymbol,
Symbol *childSymbol);
719 std::string getScalarTypename(
DataType *dataType);
728 std::string getDirection(_param_direction direction);
763 void initCReservedWords();
774 void scanStructForAnnotations(
StructType *currentStructType,
bool isFunction);
789 #endif // _EMBEDDED_RPC__CGENERATOR_H_ Collects all definitions from an IDL.
Definition: InterfaceDefinition.h:30
Function data type.
Definition: FunctionType.h:30
Member of a struct.
Definition: StructMember.h:37
Annotation class.
Definition: Annotation.h:27
Typedef.
Definition: AliasType.h:25
Represents the builtin atomic types.
Definition: BuiltinType.h:25
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 ~CGenerator()
This function is destructor of CGenerator class.
Definition: CGenerator.h:43
Variable length list of another data type.
Definition: ListType.h:25
CGenerator(InterfaceDefinition *def)
This function is constructor of CGenerator class.
Definition: CGenerator.cpp:45
Abstract code generator base class.
Definition: Generator.h:43
Base class for data types.
Definition: DataType.h:25
An interface that contains functions.
Definition: Group.h:27
Definition: cpptempl.h:190
Function base declaration.
Definition: Function.h:29
Enumerate data type.
Definition: EnumType.h:27
Discriminated union data type.
Definition: UnionType.h:27
Code generator for C.
Definition: CGenerator.h:26
virtual void generate()
This function generate output code for output files.
Definition: CGenerator.cpp:403