From: Youngjae Cho Date: Thu, 14 Mar 2024 09:00:44 +0000 (+0900) Subject: system_info_generated: Print boilerplate for API description X-Git-Tag: accepted/tizen/unified/20240727.112800~3 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F52%2F308152%2F1;p=platform%2Fcore%2Fapi%2Fsystem-info.git system_info_generated: Print boilerplate for API description The generated header now contains boilerplate describing the generated getter or enum declaration. For this purpose, the SystemInfoGenerator now understands the below scheme of model-config.xml. .//key[@since_tizen] : The attribute 'since_tizen' appear as @since_tizen at the getter description .//enumerator[@since_tizen] : The attribute 'since_tizen' appear as @since_tizen at the enumerator description .//enumerator[@desc] : The attribute 'desc' appear as a string following @since_tizen of enumerator Change-Id: I0769e9f0dabda151e930b5374420d36df785191a Signed-off-by: Youngjae Cho --- diff --git a/SystemInfoGenerator/SystemInfoUtilityGenerator.py b/SystemInfoGenerator/SystemInfoUtilityGenerator.py index 6805758..9cb7739 100644 --- a/SystemInfoGenerator/SystemInfoUtilityGenerator.py +++ b/SystemInfoGenerator/SystemInfoUtilityGenerator.py @@ -41,7 +41,7 @@ class SystemInfoUtilityGenerator: ) for enum in enum_list: - for name,value in enum.data.items(): + for name,(value, _1, _2) in enum.data.items(): if name in global_enum_set: print(f'#error Duplicate enumerator name "{name}"') else: diff --git a/SystemInfoGenerator/TizenFeature.py b/SystemInfoGenerator/TizenFeature.py index 812d525..f2bc26a 100644 --- a/SystemInfoGenerator/TizenFeature.py +++ b/SystemInfoGenerator/TizenFeature.py @@ -23,6 +23,7 @@ class TizenFeature: else: self._enum = None self._getter = feature.get('getter') + self._since_tizen = feature.get('since_tizen') self._type_casting = '' self._broken = False @@ -45,6 +46,7 @@ class TizenFeature: else: print(f'#error Invalid key type: {self.type}') + def __eq__(self, other): return self.name == other.name and \ self.type == other.type and \ @@ -67,6 +69,10 @@ class TizenFeature: return self._getter @property + def since_tizen(self): + return self._since_tizen + + @property def argtype(self): return self._argtype @@ -90,6 +96,22 @@ class TizenFeature: if self.type == 'enum': self.enum.print_enum_declaration() + print( + dedent(f'''\ + /** + * @brief Gets the "{self.name}" value of the @a platform feature. + * @since_tizen {self.since_tizen} + * @param[out] value The value of the given platform feature + * @return @c 0 on success, + * otherwise a negative error value + * @retval #SYSTEM_INFO_ERROR_NONE Successful + * @retval #SYSTEM_INFO_ERROR_INVALID_PARAMETER Cannot find the @a key in the model config file + * @retval #SYSTEM_INFO_ERROR_IO_ERROR An input/output error occurred while reading the @a value from the model config file + * @retval #SYSTEM_INFO_ERROR_PERMISSION_DENIED No permission to use the API + */''' + ) + ) + print(f'''int system_info_get_{self.getter}({self.argtype}value);\n''') def print_function_definition(self): @@ -114,12 +136,19 @@ class TizenFeatureEnum: for data in feature.findall('./enumerator'): name = data.text value = data.get('value') + since_tizen = data.get('since_tizen') + desc = data.get('desc') if name is None: print('Invalid data name') continue - self.__add_data(name, value) + self.__add_data(name, value, since_tizen, desc) + + #if value is None: + # self.__add_data(name, since_tizen=since_tizen) + #else: + # self.__add_data(name, int(value) since_tizen=since_tizen) def __eq__(self, other): return self.typename == other.typename and self.data == other.data @@ -144,7 +173,7 @@ class TizenFeatureEnum: def broken(self, value): self._broken = value - def __add_data(self, name, value): + def __add_data(self, name, value, since_tizen, desc): if name in self._data: print(f'Error: Duplicate data {name}, reject') return @@ -156,10 +185,18 @@ class TizenFeatureEnum: value = int(value) self._next_value = value + 1 - self._data[name] = value + self._data[name] = (value, since_tizen, desc) def print_enum_declaration(self): + print( + dedent(f'''\ + /** + * @brief enum for "{self.key_name}" + */''' + ) + ) + print('typedef enum {') - for name,value in self.data.items(): - print(f' {name} = {value},') + for name,(value, since_tizen, desc) in self.data.items(): + print(f' {name} = {value}, /**< @since_tizen {since_tizen}, {desc} */') print(f'}} {self._typename};\n')