system_info_generated: Print boilerplate for API description 52/308152/1
authorYoungjae Cho <y0.cho@samsung.com>
Thu, 14 Mar 2024 09:00:44 +0000 (18:00 +0900)
committerYoungjae Cho <y0.cho@samsung.com>
Thu, 14 Mar 2024 09:08:03 +0000 (18:08 +0900)
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 <y0.cho@samsung.com>
SystemInfoGenerator/SystemInfoUtilityGenerator.py
SystemInfoGenerator/TizenFeature.py

index 6805758..9cb7739 100644 (file)
@@ -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:
index 812d525..f2bc26a 100644 (file)
@@ -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')