summaryrefslogtreecommitdiff
path: root/tools/InterfaceGenerator/generator/generators/SmartFactorySDLRPC.py
diff options
context:
space:
mode:
Diffstat (limited to 'tools/InterfaceGenerator/generator/generators/SmartFactorySDLRPC.py')
-rwxr-xr-xtools/InterfaceGenerator/generator/generators/SmartFactorySDLRPC.py92
1 files changed, 92 insertions, 0 deletions
diff --git a/tools/InterfaceGenerator/generator/generators/SmartFactorySDLRPC.py b/tools/InterfaceGenerator/generator/generators/SmartFactorySDLRPC.py
new file mode 100755
index 000000000..b3fb61f4a
--- /dev/null
+++ b/tools/InterfaceGenerator/generator/generators/SmartFactorySDLRPC.py
@@ -0,0 +1,92 @@
+"""SmartFactory code generator for SDLRPC format.
+
+Defines SDLRPC format specific code generation rules.
+
+"""
+from generator.generators import SmartFactoryBase
+
+
+class CodeGenerator(SmartFactoryBase.CodeGenerator):
+
+ """SDLRPC SmartFactory generator.
+
+ Defines special cases that affects base code generation to make SDLRPC
+ format-friendly code.
+
+ """
+
+ def __init__(self):
+ """Construct new object."""
+
+ SmartFactoryBase.CodeGenerator.__init__(self)
+
+ def _gen_pre_function_schemas(self, functions):
+ """Generate specific code that goes before schema initialization.
+
+ In SDL RPC generator there is no need to generate any code before
+ schemas initialization.
+
+ Keyword arguments:
+ functions -- list of functions to generate code for.
+
+ Returns:
+ Empty string.
+
+ """
+
+ return u""
+
+ def _preprocess_message_type(self, message_type):
+ """Preprocess message_type enum.
+
+ In SDL RPC generator there is no need to preprocess message_type
+ enum values.
+
+ Keyword arguments:
+ message_type -- message_type enum to preprocess.
+
+ Returns:
+ Initial message_type enum without any modifications.
+
+ """
+
+ return message_type
+
+ def _gen_schema_params_fill(self, message_type_name):
+ """Generate schema params fill code.
+
+ Provides constant set of params for the function in accordance to the
+ SDLRPC format (both v1 and v2).
+
+ Keyword arguments:
+ message_type_name -- Name of the messageType enum element.
+
+ Returns:
+ String with function schema params fill code.
+
+ """
+
+ base_params = \
+ u'''params_members[NsSmartDeviceLink::NsJSONHandler::''' \
+ u'''strings::S_FUNCTION_ID] = CObjectSchemaItem::''' \
+ u'''SMember(TEnumSchemaItem<FunctionID::eType>::''' \
+ u'''create(function_id_items), true);\n''' \
+ u'''params_members[NsSmartDeviceLink::NsJSONHandler::''' \
+ u'''strings::S_MESSAGE_TYPE] = CObjectSchemaItem::''' \
+ u'''SMember(TEnumSchemaItem<messageType::eType>::''' \
+ u'''create(message_type_items), true);\n''' \
+ u'''params_members[NsSmartDeviceLink::NsJSONHandler::''' \
+ u'''strings::S_PROTOCOL_VERSION] = CObjectSchemaItem::''' \
+ u'''SMember(TNumberSchemaItem<int>::create(), true);\n''' \
+ u'''params_members[NsSmartDeviceLink::NsJSONHandler::''' \
+ u'''strings::S_PROTOCOL_TYPE] = CObjectSchemaItem::''' \
+ u'''SMember(TNumberSchemaItem<int>::create(), true);\n'''
+
+ correlation_id_param = \
+ u'''params_members[NsSmartDeviceLink::NsJSONHandler::''' \
+ u'''strings::S_CORRELATION_ID] = CObjectSchemaItem::''' \
+ u'''SMember(TNumberSchemaItem<int>::create(), true);\n'''
+
+ return u"".join([base_params, correlation_id_param
+ if unicode(message_type_name) !=
+ u"notification" else u""])