| {# Declare the parameters of a method. Map the kinds to cpp types. #} |
| {%- macro declare_params(prefix, parameters) %} |
| {%- for param in parameters -%} |
| {{param.kind|cpp_wrapper_param_type}} {{prefix}}{{param.mojom_name}} |
| {%- if not loop.last %}, {% endif %} |
| {%- endfor %} |
| {%- endmacro %} |
| |
| {# Declare the request parameters of a method. Add callback parameter if |
| needed. #} |
| {%- macro declare_request_params(prefix, method) -%} |
| {{declare_params(prefix, method.parameters)}} |
| {%- if method.response_parameters != None -%} |
| {%- if method.parameters %}, {% endif -%} |
| {{method.mojom_name}}Callback callback |
| {%- endif -%} |
| {%- endmacro -%} |
| |
| {# Add nullable if needed. #} |
| {%- macro _cpp_nullable_generator_type(kind) -%} |
| {%- if kind.is_nullable -%} |
| ::ash::cros_healthd::connectivity::NullableGenerator<{{ caller() }}> |
| {%- else -%} |
| {{ caller() }} |
| {%- endif -%} |
| {%- endmacro -%} |
| |
| {# Add optional if needed. #} |
| {%- macro _cpp_optional_generator_type(kind) -%} |
| {%- if kind.is_nullable -%} |
| ::ash::cros_healthd::connectivity::OptionalGenerator<{{ caller() }}> |
| {%- else -%} |
| {{ caller() }} |
| {%- endif -%} |
| {%- endmacro -%} |
| |
| {# Map kind to DataGenerator type. #} |
| {%- macro cpp_generator_type(kind) -%} |
| {%- if kind is GeneratorOverrideKind -%} |
| {{kind | generator_override_type}} |
| {%- elif kind is EnumKind -%} |
| {{kind | get_name_for_kind(flatten_nested_kind=True)}}DataGenerator |
| {%- elif kind is StructKind or kind is UnionKind -%} |
| {%- call _cpp_nullable_generator_type(kind) -%} |
| {{kind | get_name_for_kind}}DataGenerator |
| {%- endcall -%} |
| {%- elif kind is GenericHandleKind -%} |
| {%- call _cpp_nullable_generator_type(kind) -%} |
| ::ash::cros_healthd::connectivity::HandleDataGenerator |
| {%- endcall -%} |
| {%- elif kind is PendingRemoteKind -%} |
| {{kind.kind | get_name_for_kind}}TestProvider |
| {%- elif kind is PendingReceiverKind -%} |
| {{kind.kind | get_name_for_kind}}TestConsumer |
| {%- elif kind is ArrayKind -%} |
| {%- call _cpp_optional_generator_type(kind) -%} |
| ::ash::cros_healthd::connectivity::ArrayGenerator<{{ |
| cpp_generator_type(kind.kind)}}> |
| {%- endcall -%} |
| {%- elif kind is MapKind -%} |
| {%- call _cpp_optional_generator_type(kind) -%} |
| ::ash::cros_healthd::connectivity::MapGenerator<{{ |
| cpp_generator_type(kind.key_kind)}}, {{ |
| cpp_generator_type(kind.value_kind)}}> |
| {%- endcall -%} |
| {%- else -%} |
| {%- call _cpp_optional_generator_type(kind) -%} |
| ::ash::cros_healthd::connectivity::DataGenerator<{{ |
| kind | cpp_wrapper_type(ignore_nullable=True)}}> |
| {%- endcall -%} |
| {%- endif -%} |
| {%- endmacro -%} |
| |
| {# Map kind to Checker type. #} |
| {%- macro cpp_checker_type(kind) -%} |
| {%- if kind is PendingRemoteKind -%} |
| {{kind.kind | get_name_for_kind}}TestConsumer |
| {%- elif kind is PendingReceiverKind -%} |
| {{kind.kind | get_name_for_kind}}TestProvider |
| {%- else -%} |
| UnsupportedCheckerType/*Should not reach.*/ |
| {%- endif -%} |
| {%- endmacro -%} |
| |
| {# Declare data generator of parameters. #} |
| {%- macro declare_data_generator(prefix, parameters) %} |
| {%- if parameters != None %} |
| {%- for param in parameters %} |
| std::unique_ptr<{{cpp_generator_type(param.kind)}}> {{prefix}}{{ |
| param.mojom_name}}__generator__; |
| {%- endfor %} |
| {%- endif %} |
| {%- endmacro %} |
| |
| {# Define data generator of parameters. #} |
| {%- macro define_data_generator(prefix, context, parameters) -%} |
| {%- if parameters != None %} |
| {%- for param in parameters -%} |
| {{prefix}}{{param.mojom_name}}__generator__ = {{ |
| cpp_generator_type(param.kind)}}::Create({{context}}); |
| {% endfor %} |
| {%- endif %} |
| {%- endmacro %} |
| |
| {# Declare data checker of parameters. #} |
| {%- macro declare_data_checker(prefix, parameters) -%} |
| {%- if parameters != None %} |
| {%- for param in parameters -%} |
| {%- if param.kind is PendingRemoteKind or |
| param.kind is PendingReceiverKind %} |
| std::unique_ptr<{{cpp_checker_type(param.kind)}}> {{prefix}}{{ |
| param.mojom_name}}__checker__; |
| {%- endif %} |
| {%- endfor %} |
| {%- endif %} |
| {%- endmacro %} |
| |
| {# Define data checker of parameters. #} |
| {%- macro define_data_checker(prefix, context, parameters) %} |
| {%- if parameters != None %} |
| {%- for param in parameters -%} |
| {%- if param.kind is PendingRemoteKind or |
| param.kind is PendingReceiverKind %} |
| {{prefix}}{{param.mojom_name}}__checker__ = {{ |
| cpp_checker_type(param.kind)}}::Create({{context}}); |
| {%- endif %} |
| {%- endfor %} |
| {%- endif %} |
| {%- endmacro %} |
| |
| {# Statement of generating the parameters to pass to function. #} |
| {%- macro generate_params(prefix, parameters) %} |
| {%- if parameters != None %} |
| {%- for param in parameters -%} |
| {{prefix}}{{param.mojom_name}}__generator__->Generate() |
| {%- if not loop.last %}, {% endif -%} |
| {% endfor %} |
| {% endif %} |
| {%- endmacro %} |
| |
| {# Statement of checking if the generator of parameters has next. #} |
| {%- macro params_has_next(prefix, parameters) %} |
| {%- if parameters != None -%} |
| ( |
| {%- for param in parameters -%} |
| {{prefix}}{{param.mojom_name}}__generator__->HasNext() || |
| {%- endfor -%} |
| false) |
| {%- endif %} |
| {%- endmacro %} |
| |
| {# Used to forward arguments of a method to another function. #} |
| {%- macro forward_params(prefix, method) %} |
| {%- for param in method.parameters -%} |
| std::move({{prefix}}{{param.mojom_name}}) |
| {%- if not loop.last %}, {% endif -%} |
| {% endfor %} |
| {%- if method.response_parameters != None -%} |
| {%- if method.parameters %}, {% endif -%} |
| std::move(callback) |
| {%- endif -%} |
| {%- endmacro %} |