Files
sdk/runtime/platform/c99_support_win.h
T
hausner@google.com e5d8d80479 Support more debugger commands in the wire protocol
Also add a very simple debugger shell which at this point
is meant to be a debugging help for the debugger code rather
than a user-friendly tool.
Review URL: https://chromiumcodereview.appspot.com//10392017

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@7518 260f80e4-7a28-3924-810f-c04153c831b5
2012-05-10 22:04:50 +00:00

59 lines
1.2 KiB
C

// Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
#ifndef PLATFORM_C99_SUPPORT_WIN_H_
#define PLATFORM_C99_SUPPORT_WIN_H_
// Visual C++ is missing a bunch of C99 math macros and
// functions. Define them here.
#include <float.h>
static const unsigned __int64 kQuietNaNMask =
static_cast<unsigned __int64>(0xfff) << 51;
#ifndef va_copy
#define va_copy(dst, src) (memmove(&(dst), &(src), sizeof(dst)))
#endif /* va_copy */
#define INFINITY HUGE_VAL
#define NAN \
*reinterpret_cast<const double*>(&kQuietNaNMask)
static inline int isinf(double x) {
return (_fpclass(x) & (_FPCLASS_PINF | _FPCLASS_NINF)) != 0;
}
static inline int isnan(double x) {
return _isnan(x);
}
static inline int signbit(double x) {
if (x == 0) {
return _fpclass(x) & _FPCLASS_NZ;
} else {
return x < 0;
}
}
static inline double trunc(double x) {
if (x < 0) {
return ceil(x);
} else {
return floor(x);
}
}
static inline double round(double x) {
if (x < 0) {
return ceil(x - 0.5);
} else {
return floor(x + 0.5);
}
}
#endif // PLATFORM_C99_SUPPORT_WIN_H_