From efd547ac2ca675e81b02cec551320881e99545de Mon Sep 17 00:00:00 2001 From: JackLivio Date: Fri, 10 Aug 2018 15:17:38 -0400 Subject: Updated parser based on comments --- .../generator/generators/SmartFactoryBase.py | 45 +++++++++++++++++----- 1 file changed, 35 insertions(+), 10 deletions(-) (limited to 'tools/InterfaceGenerator') diff --git a/tools/InterfaceGenerator/generator/generators/SmartFactoryBase.py b/tools/InterfaceGenerator/generator/generators/SmartFactoryBase.py index 47a2e92c79..49c98b32fc 100755 --- a/tools/InterfaceGenerator/generator/generators/SmartFactoryBase.py +++ b/tools/InterfaceGenerator/generator/generators/SmartFactoryBase.py @@ -706,9 +706,6 @@ class CodeGenerator(object): """ result_array = [] result_array.append(self._impl_code_shared_ptr_vector_template.substitute(var_name = name)) - '''for item in history_list: - result_array.append(self._impl_code_append_history_vector_template.substitute(vector_name=name, item_name=item.name)) -''' result = u"\n".join(result_array) return result @@ -911,6 +908,38 @@ class CodeGenerator(object): raise GenerateError("Unexpected call to the unimplemented function.") + def _check_member_history(self, member): + """ + Checks set of rules that history items are valid + Raises error if rules are violated + """ + if (member.since is None and + member.until is None and + member.deprecated is None and + member.removed is None and + member.history is None): + return + + if (member.history is not None and member.since is None): + raise GenerateError("Error: Missing since version parameter for " + member.name) + + if (member.until is not None): + raise GenerateError("Error: Until should only exist in history tag for " + member.name) + + if (member.history is None): + if(member.until is not None or + member.deprecated is not None or + member.removed is not None): + raise GenerateError("Error: No history present for " + member.name) + + if (member.deprecated is not None and member.removed is not None): + raise GenerateError("Error: Deprecated and removed should not be present together for " + member.name) + + for item in member.history: + if item.since is None or item.until is None: + raise GenerateError("Error: History items require since and until parameters for " + member.name) + return + def _gen_schema_item_fill(self, member, since, until, deprecated, removed): """Generate schema item fill code. @@ -923,14 +952,10 @@ class CodeGenerator(object): String with schema item fill code. """ + self._check_member_history(member) + if (since is not None or - until is not None or - deprecated is not None or - removed is not None or - member.since is not None or - member.until is not None or - member.deprecated is not None or - member.removed is not None): + member.since is not None): if member.history is not None: return self._impl_code_item_fill_template_with_version_and_history_vector.substitute( name=member.name, -- cgit v1.2.1