def get_type(self, parts):
        try:
            return self.type_map[parts]
        except __HOLE__:
            pass

        result = self.get_base_type(parts[0])
        for part in parts[1:]:
            if part == 'p':
                result = c.POINTER(result)
            elif type(part) is tuple:
                if part[0] == 'f':
                    result = self.get_function_type(result, part[1:])
                elif part[0] == 'a':
                    result = self.get_array_type(result, part[1:])
                else:
                    raise RuntimeError(part)
            else:
                raise RuntimeError(part)

        self.type_map[parts] = result
        return result
dataset/ETHPy150Open ardekantur/pyglet/experimental/swigtypes/ffi.py/FFILibrary.get_type