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))
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