MCPcopy Create free account
hub / github.com/EmbeddedRPC/erpc / Generator

Method Generator

erpcgen/src/Generator.cpp:33–177  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

31////////////////////////////////////////////////////////////////////////////////
32
33Generator::Generator(InterfaceDefinition *def, generator_type_t generatorType) :
34m_idlCrc16(def->getIdlCrc16()), m_def(def), m_globals(&(def->getGlobals())), m_generatorType(generatorType)
35{
36 string scopeName = "erpcShim";
37 string scopeNameC;
38 string scopeNamePrefix = "";
39 string namespaceVal = scopeName;
40
41 m_templateData["erpcVersion"] = ERPC_VERSION;
42 m_templateData["erpcVersionNumber"] = ERPC_VERSION_NUMBER;
43
44 // crc of erpcgen version and idl files.
45 m_templateData["crc16"] = "";
46
47 m_templateData["todaysDate"] = getTime();
48
49 m_templateData["sharedMemBeginAddr"] = "";
50 m_templateData["sharedMemEndAddr"] = "";
51
52 m_outputDirectory = m_def->getOutputDirectory();
53
54 if (m_def->hasProgramSymbol())
55 {
56 Log::info("program: ");
57 Log::info("%s\n", m_def->getOutputFilename().c_str());
58
59 Program *program = m_def->getProgramSymbol();
60
61 /* Shared memory area. */
62 Value *sharedMemBValue = getAnnValue(program, SHARED_MEMORY_BEGIN_ANNOTATION);
63 Value *sharedMemEValue = getAnnValue(program, SHARED_MEMORY_END_ANNOTATION);
64 if (sharedMemBValue && sharedMemEValue)
65 {
66 m_templateData["sharedMemBeginAddr"] = sharedMemBValue->toString();
67 m_templateData["sharedMemEndAddr"] = sharedMemEValue->toString();
68 Log::warning("Shared memory is supported only for C language used on embedded devices.\n");
69 }
70 else if (sharedMemBValue || sharedMemEValue)
71 {
72 throw semantic_error(
73 "Annotations @shared_memory_begin and @shared_memory_end both (or no one) need exists and contains "
74 "addresses.");
75 }
76
77 if (findAnnotation(program, CRC_ANNOTATION) != nullptr)
78 {
79 m_templateData["crc16"] = m_idlCrc16;
80 }
81
82 m_outputDirectory /= getAnnStringValue(program, OUTPUT_DIR_ANNOTATION);
83
84 if (findAnnotation(program, SCOPE_NAME_ANNOTATION) == nullptr)
85 {
86 scopeName = program->getName();
87 }
88 else
89 {
90 scopeName = getAnnStringValue(program, SCOPE_NAME_ANNOTATION);

Callers

nothing calls this directly

Calls 15

semantic_errorClass · 0.85
getOutputDirectoryMethod · 0.80
hasProgramSymbolMethod · 0.80
getOutputFilenameMethod · 0.80
getProgramSymbolMethod · 0.80
getSymbolsOfTypeMethod · 0.80
getValueObjectMethod · 0.80
push_backMethod · 0.80
addInterfaceMethod · 0.80
getCodecTypeMethod · 0.80
getIdlCrc16Method · 0.45
toStringMethod · 0.45

Tested by

no test coverage detected