docs: def set_window_user_pointer(window, pointer):
      """
      Sets the user pointer of the specified window. You may pass a normal python object into this function and it will
      be wrapped automatically. The object will be kept in existence until the pointer is set to something else or
      until the window is destroyed.
  
      Wrapper for:
          void glfwSetWindowUserPointer(GLFWwindow* window, void* pointer);
      """
  
      data = (False, pointer)
      if not isinstance(pointer, ctypes.c_void_p):
          data = (True, pointer)
          # Create a void pointer for the python object
          pointer = ctypes.cast(ctypes.pointer(ctypes.py_object(pointer)), ctypes.c_void_p)
  
      window_addr = ctypes.cast(ctypes.pointer(window),
                                ctypes.POINTER(ctypes.c_long)).contents.value
      _window_user_data_repository[window_addr] = data
      _glfw.glfwSetWindowUserPointer(window, pointer)