hook gvariant vectors up to kdbus
[platform/upstream/glib.git] / glib / gwin32.h
index faa81c7..b466b63 100644 (file)
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
 
 /*
  * 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/.
  */
 
 #ifndef __G_WIN32_H__
 #define __G_WIN32_H__
 
-#include <gtypes.h>
+#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
+#error "Only <glib.h> can be included directly."
+#endif
 
-#ifdef G_OS_WIN32
+#include <glib/gtypes.h>
 
-/* Windows emulation stubs for common Unix functions
- */
+#ifdef G_PLATFORM_WIN32
 
 G_BEGIN_DECLS
 
+#ifndef MAXPATHLEN
 #define MAXPATHLEN 1024
-
-#ifdef _MSC_VER
-typedef int pid_t;
 #endif
 
+#ifdef G_OS_WIN32
+
 /*
  * To get prototypes for the following POSIXish functions, you have to
  * include the indicated non-POSIX headers. The functions are defined
- * in OLDNAMES.LIB (MSVC) or -lmoldname-msvc (mingw32).
+ * in OLDNAMES.LIB (MSVC) or -lmoldname-msvc (mingw32). But note that
+ * for POSIX functions that take or return file names in the system
+ * codepage, in many cases you would want to use the GLib wrappers in
+ * gstdio.h and UTF-8 instead.
  *
  * getcwd: <direct.h> (MSVC), <io.h> (mingw32)
  * getpid: <process.h>
  * access: <io.h>
  * unlink: <stdio.h> or <io.h>
  * open, read, write, lseek, close: <io.h>
- * rmdir: <direct.h>
- * pipe: <direct.h>
+ * rmdir: <io.h>
+ * pipe: <io.h> (actually, _pipe())
  */
 
-/* pipe is not in OLDNAMES.LIB or -lmoldname-msvc. */
-#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 g_win32_.
+ * we provide emulation functions in glib, which are prefixed with
+ * g_win32_. Or that was the idea at some time, but there is just one
+ * of those:
  */
-#    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            g_win32_opendir
-#    define readdir            g_win32_readdir
-#    define rewinddir          g_win32_rewinddir
-#    define closedir           g_win32_closedir
-#    define NAME_MAX 255
-
-struct dirent
-{
-  gchar  d_name[NAME_MAX + 1];
-};
-
-struct DIR
-{
-  gchar        *dir_name;
-  gboolean     just_opened;
-  guint        find_file_handle;
-  gpointer     find_file_data;
-  struct dirent readdir_result;
-};
-typedef struct DIR DIR;
-
-/* emulation functions */
-extern int     g_win32_ftruncate       (gint            f,
+GLIB_AVAILABLE_IN_ALL
+gint           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);
+#endif /* G_OS_WIN32 */
 
 /* The MS setlocale uses locale names of the form "English_United
  * States.1252" etc. We want the Unixish standard form "en", "zh_TW"
@@ -102,18 +74,61 @@ gint               g_win32_closedir        (DIR            *dir);
  * 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);
+GLIB_AVAILABLE_IN_ALL
+gchar*                 g_win32_getlocale  (void);
 
 /* Translate a Win32 error code (as returned by GetLastError()) into
  * the corresponding message. The returned string should be deallocated
  * with g_free().
  */
-gchar *         g_win32_error_message (gint error);
+GLIB_AVAILABLE_IN_ALL
+gchar*          g_win32_error_message (gint error);
+
+#ifndef _WIN64
+GLIB_DEPRECATED
+gchar*          g_win32_get_package_installation_directory (const gchar *package,
+                                                           const gchar *dll_name);
+
+GLIB_DEPRECATED
+gchar*          g_win32_get_package_installation_subdirectory (const gchar *package,
+                                                              const gchar *dll_name,
+                                                              const gchar *subdir);
+#endif
 
-gchar *         g_win32_get_package_installation_directory (gchar *package);
+GLIB_AVAILABLE_IN_ALL
+gchar*          g_win32_get_package_installation_directory_of_module (gpointer hmodule);
+
+GLIB_AVAILABLE_IN_ALL
+guint          g_win32_get_windows_version (void);
+
+GLIB_AVAILABLE_IN_ALL
+gchar*          g_win32_locale_filename_from_utf8 (const gchar *utf8filename);
+
+GLIB_AVAILABLE_IN_2_40
+gchar **        g_win32_get_command_line (void);
+
+/* As of GLib 2.14 we only support NT-based Windows */
+#define G_WIN32_IS_NT_BASED() TRUE
+#define G_WIN32_HAVE_WIDECHAR_API() TRUE
 
 G_END_DECLS
 
-#endif  /* G_OS_WIN32 */
+#endif  /* G_PLATFORM_WIN32 */
+
+#ifdef G_OS_WIN32
+#ifdef _WIN64
+#define g_win32_get_package_installation_directory g_win32_get_package_installation_directory_utf8
+#define g_win32_get_package_installation_subdirectory g_win32_get_package_installation_subdirectory_utf8
+#endif
+
+GLIB_AVAILABLE_IN_ALL
+gchar *g_win32_get_package_installation_directory_utf8    (const gchar *package,
+                                                           const gchar *dll_name);
+GLIB_AVAILABLE_IN_ALL
+gchar *g_win32_get_package_installation_subdirectory_utf8 (const gchar *package,
+                                                           const gchar *dll_name,
+                                                           const gchar *subdir);
+
+#endif /* G_OS_WIN32 */
 
 #endif /* __G_WIN32_H__ */