diff options
author | Tomas Kukosa <tomas.kukosa@siemens.com> | 2008-12-17 09:41:17 +0000 |
---|---|---|
committer | Tomas Kukosa <tomas.kukosa@siemens.com> | 2008-12-17 09:41:17 +0000 |
commit | 9043380793259f088ae576fac341cc54fa42f0af (patch) | |
tree | ea30582f8e9b98614b9ae598ecd8b0c8680cf42d /wsutil | |
parent | cb63b11f9795d1b84e372eab423a388b8a6d986b (diff) | |
download | wireshark-9043380793259f088ae576fac341cc54fa42f0af.tar.gz wireshark-9043380793259f088ae576fac341cc54fa42f0af.tar.bz2 wireshark-9043380793259f088ae576fac341cc54fa42f0af.zip |
type conversion gdouble<->guint64 is not supported in all MSVC versions, convert it with functions
svn path=/trunk/; revision=27032
Diffstat (limited to 'wsutil')
-rw-r--r-- | wsutil/libwsutil.def | 4 | ||||
-rw-r--r-- | wsutil/type_util.c | 70 | ||||
-rw-r--r-- | wsutil/type_util.h | 54 |
3 files changed, 128 insertions, 0 deletions
diff --git a/wsutil/libwsutil.def b/wsutil/libwsutil.def index 4fe1dd7057..beb5f8a615 100644 --- a/wsutil/libwsutil.def +++ b/wsutil/libwsutil.def @@ -44,6 +44,10 @@ started_with_special_privs ascii_strdown_inplace ascii_strup_inplace +; type_util.c +type_util_gdouble_to_guint64 +type_util_guint64_to_gdouble + ; unicode-utils.c utf_16to8 utf_8to16 diff --git a/wsutil/type_util.c b/wsutil/type_util.c new file mode 100644 index 0000000000..e90575d7ba --- /dev/null +++ b/wsutil/type_util.c @@ -0,0 +1,70 @@ +/* type_util.c + * Types utility routines + * + * $Id$ + * + * Wireshark - Network traffic analyzer + * By Gerald Combs <gerald@wireshark.org> + * Copyright 1998 Gerald Combs + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include <glib.h> +#include "type_util.h" + +/* + * guint64 to gdouble conversions taken from gstutils.c of GStreamer project + * + * GStreamer + * Copyright (C) 1999,2000 Erik Walthinsen <omega@cse.ogi.edu> + * 2000 Wim Taymans <wtay@chello.be> + * 2002 Thomas Vander Stichele <thomas@apestaart.org> + * + * gstutils.h: Header for various utility functions + * + * GNU GPL v2 + * + */ + +/* work around error C2520: conversion from unsigned __int64 to double + * not implemented, use signed __int64 + * + * These are implemented as functions because on some platforms a 64bit int to + * double conversion is not defined/implemented. + */ + +gdouble +type_util_guint64_to_gdouble(guint64 value) +{ + if (value & G_GINT64_CONSTANT (0x8000000000000000)) + return (gdouble) ((gint64) value) + (gdouble) 18446744073709551616.; + else + return (gdouble) ((gint64) value); +} + +guint64 +type_util_gdouble_to_guint64(gdouble value) +{ + if (value < (gdouble) 9223372036854775808.) /* 1 << 63 */ + return ((guint64) ((gint64) value)); + + value -= (gdouble) 18446744073709551616.; + return ((guint64) ((gint64) value)); +} diff --git a/wsutil/type_util.h b/wsutil/type_util.h new file mode 100644 index 0000000000..576e2f62bd --- /dev/null +++ b/wsutil/type_util.h @@ -0,0 +1,54 @@ +/* type_util.h + * Types utility definitions + * + * $Id$ + * + * Wireshark - Network traffic analyzer + * By Gerald Combs <gerald@wireshark.org> + * Copyright 1998 Gerald Combs + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#ifndef __TYPE_UTIL_H__ +#define __TYPE_UTIL_H__ + + +/* + * guint64 to gdouble conversions taken from gstutils.h of GStreamer project + * + * GStreamer + * Copyright (C) 1999,2000 Erik Walthinsen <omega@cse.ogi.edu> + * 2000 Wim Taymans <wtay@chello.be> + * 2002 Thomas Vander Stichele <thomas@apestaart.org> + * + * gstutils.h: Header for various utility functions + * + * GNU GPL v2 + * + */ + +guint64 type_util_gdouble_to_guint64(gdouble value); +gdouble type_util_guint64_to_gdouble(guint64 value); + +#ifdef WIN32 +#define gdouble_to_guint64(value) type_util_gdouble_to_guint64(value) +#define guint64_to_gdouble(value) type_util_guint64_to_gdouble(value) +#else +#define gdouble_to_guint64(value) ((guint64)(value)) +#define guint64_to_gdouble(value) ((gdouble)(value)) +#endif + +#endif /* __TYPE_UTIL_H__ */ |