glib.h New functions for conversion between UTF-8 and the encoding
[platform/upstream/glib.git] / glib.h
diff --git a/glib.h b/glib.h
index 1eac04a..0a6d646 100644 (file)
--- a/glib.h
+++ b/glib.h
@@ -131,6 +131,14 @@ extern "C" {
 #undef CLAMP
 #define CLAMP(x, low, high)  (((x) > (high)) ? (high) : (((x) < (low)) ? (low) : (x)))
 
+#define G_STRINGIFY(macro_or_string)   G_STRINGIFY_ARG (macro_or_string)
+#define        G_STRINGIFY_ARG(contents)       #contents
+
+/* Count the number of elements in an array. The array must be defined
+ * as such; using this with a dynamically allocated array will give
+ * incorrect results.
+ */
+#define G_N_ELEMENTS(arr)              (sizeof (arr) / sizeof ((arr)[0]))
 
 /* Define G_VA_COPY() to do the right thing for copying va_list variables.
  * glibconfig.h may have already defined G_VA_COPY as va_copy or __va_copy.
@@ -326,9 +334,6 @@ extern "C" {
 } G_STMT_END
 
 
-#define g_string(x) #x
-
-
 /* Provide macros for error handling. The "assert" macros will
  *  exit on failure. The "return" macros will exit the current
  *  function. Two different definitions are given for the macros
@@ -1599,6 +1604,13 @@ gchar*   g_strcompress           (const gchar *source);
  */
 gchar*   g_strescape           (const gchar *source,
                                 const gchar *exceptions);
+/*
+ * Convert between the operating system (or C runtime)
+ * representation of file names and UTF-8.
+ */
+gchar*   g_filename_to_utf8 (const gchar *opsysstring);
+gchar*   g_filename_from_utf8 (const gchar *utf8string);
+
 /* Deprecated API:
  * gchar* g_strescape (const gchar *source);
  * Luckily this function wasn't much used.
@@ -2644,7 +2656,7 @@ struct _GSourceFuncs
                        GTimeVal *current_time,
                        gpointer  user_data);
   gboolean (*dispatch) (gpointer  source_data, 
-                       GTimeVal *current_time,
+                       GTimeVal *dispatch_time,
                        gpointer  user_data);
   GDestroyNotify destroy;
 };
@@ -2672,7 +2684,7 @@ gboolean g_source_remove_by_source_data      (gpointer       source_data);
 gboolean g_source_remove_by_funcs_user_data  (GSourceFuncs  *funcs,
                                              gpointer       user_data);
 
-void g_get_current_time                    (GTimeVal      *result);
+void g_get_current_time                        (GTimeVal       *result);
 
 /* Running the main loop */
 GMainLoop*     g_main_new              (gboolean        is_running);
@@ -2843,17 +2855,17 @@ typedef int pid_t;
 #define pipe(phandles) _pipe (phandles, 4096, _O_BINARY)
 
 /* For some POSIX functions that are not provided by the MS runtime,
- * we provide emulators in glib, which are prefixed with gwin_.
+ * we provide emulators in glib, which are prefixed with g_win32_.
  */
-#    define ftruncate(fd, size)        gwin_ftruncate (fd, size)
+#    define ftruncate(fd, size)        g_win32_ftruncate (fd, size)
 
 /* -lmingw32 also has emulations for these, but we need our own
  * for MSVC anyhow, so we might aswell use them always.
  */
-#    define opendir            gwin_opendir
-#    define readdir            gwin_readdir
-#    define rewinddir          gwin_rewinddir
-#    define closedir           gwin_closedir
+#    define opendir            g_win32_opendir
+#    define readdir            g_win32_readdir
+#    define rewinddir          g_win32_rewinddir
+#    define closedir           g_win32_closedir
 #    define NAME_MAX 255
 
 struct DIR
@@ -2869,12 +2881,21 @@ struct dirent
   gchar  d_name[NAME_MAX + 1];
 };
 /* emulation functions */
-extern int     gwin_ftruncate  (gint            f,
-                                guint           size);
-DIR*           gwin_opendir    (const gchar    *dirname);
-struct dirent* gwin_readdir    (DIR            *dir);
-void           gwin_rewinddir  (DIR            *dir);
-gint           gwin_closedir   (DIR            *dir);
+extern int     g_win32_ftruncate       (gint            f,
+                                        guint           size);
+DIR*           g_win32_opendir         (const gchar    *dirname);
+struct dirent* g_win32_readdir         (DIR            *dir);
+void           g_win32_rewinddir       (DIR            *dir);
+gint           g_win32_closedir        (DIR            *dir);
+
+/* The MS setlocale uses locale names of the form "English_United
+ * States.1252" etc. We want the Unixish standard form "en", "zh_TW"
+ * etc. This function gets the current thread locale from Windows and
+ * returns it as a string of the above form for use in forming file
+ * names etc. The returned string should be deallocated with g_free().
+ */
+gchar *                g_win32_getlocale  (void);
+
 #endif  /* G_OS_WIN32 */
 
 
@@ -2925,18 +2946,19 @@ struct _GThreadFunctions
   gpointer  (*private_get)        (GPrivate            *private_key);
   void      (*private_set)        (GPrivate            *private_key,
                                   gpointer              data);
-  gpointer  (*thread_create)      (GThreadFunc                  thread_func,
+  void      (*thread_create)      (GThreadFunc                  thread_func,
                                   gpointer              arg,
                                   gulong                stack_size,
                                   gboolean              joinable,
                                   gboolean              bound,
-                                  GThreadPriority       priority);
+                                  GThreadPriority       priority,
+                                  gpointer              thread);
   void      (*thread_yield)       (void);
   void      (*thread_join)        (gpointer             thread);
   void      (*thread_exit)        (void);
   void      (*thread_set_priority)(gpointer             thread, 
                                   GThreadPriority       priority);
-  gpointer  (*thread_self)        (void);
+  void      (*thread_self)        (gpointer              thread);
 };
 
 GUTILS_C_VAR GThreadFunctions  g_thread_functions_for_glib_use;
@@ -3114,7 +3136,7 @@ extern void glib_dummy_decl (void);
 #  define G_LOCK_EXTERN(name)          extern void glib_dummy_decl (void)
 #  define G_LOCK(name)
 #  define G_UNLOCK(name)
-#  define G_TRYLOCK(name)              (FALSE)
+#  define G_TRYLOCK(name)              (TRUE)
 #endif /* !G_THREADS_ENABLED */
 
 #ifdef __cplusplus