예제 #1
0
 def test_resolve(self):
     tests = [
     ('uint8_t', 'unsigned char'),
     ('uint16_t', 'unsigned short'),
     ('size_t', 'unsigned long')
     ]
     for to_resolve,expect in tests:
         self.assertEqual(expect, systype.resolve(to_resolve))
예제 #2
0
 def generate_input(self, type_name, var_name, recursive_count=1):
     result = ''
     type_component = typeutil.parse_type(type_name)
     base = type_component['base']
     pointer = type_component['pointer']
     array = type_component['array']
     if array:
         if config.get('handle_array') == 'true':
             return self.generate_input_for_array(type_name, var_name)
         else:
             return ''
     # alloc
     if pointer:
         # char array should be treated separately
         if config.get('handle_array') == 'true' and base == 'char':
             result += self.generate_input_for_array('char[]', var_name+'_array')
             result += var_name +' = '+var_name + '_array;\n'
             return result;
         result += generate_alloc_string(type_name, var_name)
     # init
     if typeutil.is_primitive_type(base):
         result += generate_primitive_input(type_name, var_name)
     elif local.check_struct_or_typedef(base.replace('struct','').strip()):
         if config.get('handle_struct') != 'true': return ''
         code = local.resolve_single_simple(base.replace('struct','').strip(), t='st')
         if '{' in code.strip() and code.strip().startswith('typedef struct'):
             code = code.replace('typedef','').strip()
             code = code[:code.rfind('}')+1] + ';'
             result += self.generate_input_for_struct(type_name, var_name, code, recursive_count)
         elif code.strip().startswith('struct'):
             result += self.generate_input_for_struct(type_name, var_name, code, recursive_count)
         elif code.startswith('typedef'):
             if code.startswith('typedef struct'):
                 code = local.resolve_single_simple(base.replace('struct', '').strip(), t='s')
                 if code:
                     result += self.generate_input_for_struct(type_name, var_name, code, recursive_count)
             else:
                 _,original = syntaxutil.parse_typedef_code(code)
                 result += self.generate_input(original+pointer+array, var_name, recursive_count)
         else:
             logger.warning('Not recognized code for generate input')
     else:
         sys_type = systype.resolve(base)
         if sys_type:
             result += self.generate_input(sys_type+pointer+array, var_name)
         else:
             logger.warning('the type '+type_name+' is not solved for init')
     return result