Fix problems on 64-bit Windows. Avoid warnings, some of which indicated
[platform/upstream/glib.git] / glib / giochannel.h
index 80d2d9b..2a40aa2 100644 (file)
  * Modified by the GLib Team and others 1997-2000.  See the AUTHORS
  * file for a list of people on the GLib Team.  See the ChangeLog
  * files for a list of changes.  These files are distributed with
- * GLib at ftp://ftp.gtk.org/pub/gtk/. 
+ * GLib at ftp://ftp.gtk.org/pub/gtk/.
  */
 
+#if defined(G_DISABLE_SINGLE_INCLUDES) && !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
+#error "Only <glib.h> can be included directly."
+#endif
+
 #ifndef __G_IOCHANNEL_H__
 #define __G_IOCHANNEL_H__
 
@@ -104,7 +108,7 @@ typedef enum
 struct _GIOChannel
 {
   /*< private >*/
-  guint ref_count;
+  gint ref_count;
   GIOFuncs *funcs;
 
   gchar *encoding;
@@ -127,6 +131,9 @@ struct _GIOChannel
   guint is_readable    : 1;    /* Cached GIOFlag */
   guint is_writeable   : 1;    /* ditto */
   guint is_seekable    : 1;    /* ditto */
+
+  gpointer reserved1;  
+  gpointer reserved2;  
 };
 
 typedef gboolean (*GIOFunc) (GIOChannel   *source,
@@ -160,7 +167,7 @@ struct _GIOFuncs
 };
 
 void        g_io_channel_init   (GIOChannel    *channel);
-void        g_io_channel_ref    (GIOChannel    *channel);
+GIOChannel *g_io_channel_ref    (GIOChannel    *channel);
 void        g_io_channel_unref  (GIOChannel    *channel);
 
 #ifndef G_DISABLE_DEPRECATED
@@ -257,6 +264,10 @@ GIOStatus   g_io_channel_seek_position    (GIOChannel   *channel,
                                           gint64        offset,
                                           GSeekType     type,
                                           GError      **error);
+#ifdef G_OS_WIN32
+#define g_io_channel_new_file g_io_channel_new_file_utf8
+#endif
+
 GIOChannel* g_io_channel_new_file         (const gchar  *filename,
                                           const gchar  *mode,
                                           GError      **error);
@@ -293,6 +304,10 @@ GLIB_VAR GSourceFuncs g_io_watch_funcs;
 
 #ifdef G_OS_WIN32
 
+/* You can use this "pseudo file descriptor" in a GPollFD to add
+ * polling for Windows messages. GTK applications should not do that.
+ */
+
 #define G_WIN32_MSG_HANDLE 19981206
 
 /* Use this to get a GPollFD from a GIOChannel, so that you can call
@@ -310,17 +325,18 @@ void        g_io_channel_win32_make_pollfd (GIOChannel   *channel,
  */
 gint        g_io_channel_win32_poll   (GPollFD    *fds,
                                       gint        n_fds,
-                                      gint        timeout);
-
-/* This is used to add polling for Windows messages. GDK (GTk+) programs
- * should *not* use this.
- */
-void        g_main_poll_win32_msg_add (gint        priority,
-                                      GPollFD    *fd,
-                                      guint       hwnd);
+                                      gint        timeout_);
 
 /* Create an IO channel for Windows messages for window handle hwnd. */
+#if GLIB_SIZEOF_VOID_P == 8
+/* We use gsize here so that it is still an integer type and not a
+ * pointer, like the guint in the traditional prototype. We can't use
+ * intptr_t as that is not portable enough.
+ */
+GIOChannel *g_io_channel_win32_new_messages (gsize hwnd);
+#else
 GIOChannel *g_io_channel_win32_new_messages (guint hwnd);
+#endif
 
 /* Create an IO channel for C runtime (emulated Unix-like) file
  * descriptors. After calling g_io_add_watch() on a IO channel
@@ -329,7 +345,7 @@ GIOChannel *g_io_channel_win32_new_messages (guint hwnd);
  * implemented on Win32 by starting a thread that sits blocked in a
  * read() from the file descriptor most of the time. All reads from
  * the file descriptor should be done by this internal GLib
- * thread. Your code should call only g_io_channel_read().
+ * thread. Your code should call only g_io_channel_read_chars().
  */
 GIOChannel* g_io_channel_win32_new_fd (gint         fd);