def to_ctype(self, parakeet_type):
    if isinstance(parakeet_type, (NoneT, ScalarT)):
      return type_mappings.to_ctype(parakeet_type)
    
    elif isinstance(parakeet_type, TupleT):
      return self.struct_type_from_fields(parakeet_type.elt_types)
    elif isinstance(parakeet_type, PtrT):
      return self.ptr_struct_type(parakeet_type.elt_type)
    elif isinstance(parakeet_type, ArrayT):
      elt_t = parakeet_type.elt_type 
      rank = parakeet_type.rank 
      return self.array_struct_type(elt_t, rank)
    
    elif isinstance(parakeet_type, SliceT):
      return self.slice_struct_type()
    elif isinstance(parakeet_type, ClosureT):
      return self.struct_type_from_fields(parakeet_type.arg_types)
    elif isinstance(parakeet_type, TypeValueT):
      return "int"
    else:
      assert False, "Don't know how to make C type for %s" % parakeet_type
dataset/ETHPy150Open iskandr/parakeet/parakeet/c_backend/fn_compiler.py/FnCompiler.to_ctype/original